File indexing completed on 2024-05-12 07:51:57

0001 /*
0002     SPDX-FileCopyrightText: 1999, 2000 David Faure <faure@kde.org>
0003     SPDX-FileCopyrightText: 1999, 2000 Simon Hausmann <hausmann@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 #include "notepad.h"
0009 #include <kparts/mainwindow.h>
0010 #include <kparts/partmanager.h>
0011 
0012 #include <QAction>
0013 #include <QDebug>
0014 #include <QFile>
0015 #include <QTextEdit>
0016 #include <QTextStream>
0017 
0018 #include <KAboutData>
0019 #include <KActionCollection>
0020 #include <KLocalizedString>
0021 #include <KPluginFactory>
0022 
0023 K_PLUGIN_CLASS_WITH_JSON(NotepadPart, "notepad.json")
0024 
0025 NotepadPart::NotepadPart(QWidget *parentWidget, QObject *parent, const KPluginMetaData &metaData)
0026     : KParts::ReadWritePart(parent, metaData)
0027 {
0028     m_edit = new QTextEdit(parentWidget);
0029     m_edit->setPlainText(QStringLiteral("NotepadPart's multiline edit"));
0030     setWidget(m_edit);
0031 
0032     QAction *searchReplace = new QAction(QStringLiteral("Search and replace"), this);
0033     actionCollection()->addAction(QStringLiteral("searchreplace"), searchReplace);
0034 
0035     setXMLFile(QStringLiteral("notepadpart.rc")); // will be found in the qrc resource
0036 
0037     setReadWrite(true);
0038 }
0039 
0040 NotepadPart::~NotepadPart()
0041 {
0042 }
0043 
0044 void NotepadPart::setReadWrite(bool rw)
0045 {
0046     m_edit->setReadOnly(!rw);
0047     if (rw) {
0048         connect(m_edit, &QTextEdit::textChanged, this, qOverload<>(&KParts::ReadWritePart::setModified));
0049     } else {
0050         disconnect(m_edit, &QTextEdit::textChanged, this, qOverload<>(&KParts::ReadWritePart::setModified));
0051     }
0052 
0053     ReadWritePart::setReadWrite(rw);
0054 }
0055 
0056 bool NotepadPart::openFile()
0057 {
0058     // qDebug() << "NotepadPart: opening " << localFilePath();
0059     QFile f(localFilePath());
0060     QString s;
0061     if (f.open(QIODevice::ReadOnly)) {
0062         QTextStream t(&f);
0063         // The default with Qt6 is UTF-8
0064         s = t.readAll();
0065         f.close();
0066     }
0067     m_edit->setPlainText(s);
0068 
0069     Q_EMIT setStatusBarText(url().toString());
0070 
0071     return true;
0072 }
0073 
0074 bool NotepadPart::saveFile()
0075 {
0076     if (!isReadWrite()) {
0077         return false;
0078     }
0079     QFile f(localFilePath());
0080     if (f.open(QIODevice::WriteOnly)) {
0081         QTextStream t(&f);
0082         t << m_edit->toPlainText();
0083         f.close();
0084         return true;
0085     } else {
0086         return false;
0087     }
0088 }
0089 
0090 #include "moc_notepad.cpp"
0091 #include "notepad.moc"