#include "editor.h"
+#include <QFile>
#include <QTextDocument>
+#include <QTextStream>
Editor::Editor(QObject *parent)
: QObject(parent)
return m_document;
}
+void Editor::setFileName(const QString &fileName)
+{
+ if (fileName == m_fileName)
+ return;
+
+ m_fileName = fileName;
+ emit fileNameChanged(fileName);
+}
+
+QString Editor::fileName() const
+{
+ return m_fileName;
+}
+
void Editor::newDocument()
{
+ m_fileName = QString();
m_document->clear();
m_document->setModified(false);
}
+
+void Editor::save()
+{
+ if (m_fileName.isEmpty()) {
+ emit requestSaveFileName();
+ return;
+ }
+
+ QFile file(m_fileName);
+ if (!file.open(QIODevice::WriteOnly)) {
+ emit requestSaveFileName();
+ return;
+ }
+
+ QTextStream stream(&file);
+ stream << m_document->toPlainText();
+ file.close();
+
+ m_document->setModified(false);
+}
{
Q_OBJECT
Q_PROPERTY(QTextDocument* document READ document CONSTANT)
+ Q_PROPERTY(QString fileName READ fileName WRITE setFileName NOTIFY fileNameChanged)
public:
explicit Editor(QObject *parent = 0);
QTextDocument *document() const;
+ void setFileName(const QString &fileName);
+ QString fileName() const;
+
+ Q_SIGNALS:
+ void fileNameChanged(const QString &fileName);
+ void requestSaveFileName();
+
public Q_SLOTS:
void newDocument();
+ void save();
private:
QTextDocument *m_document;
+ QString m_fileName;
};
#endif // EDITOR_H
Action {
text: qsTr("Save")
+ onTriggered: _editor.save()
}
Separator {}
}
}
- Component.onCompleted: textEdit.document = _editor.document
+ Component.onCompleted: {
+ textEdit.document = _editor.document
+ _editor.requestSaveFileName.connect(askForSaveFileName)
+ }
+
+ function askForSaveFileName() {
+ var fileName = FileDialog.getSaveFileName()
+ if (fileName.length > 0) {
+ _editor.fileName = fileName
+ _editor.save()
+ }
+ }
}