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"