aboutsummaryrefslogtreecommitdiffstats
path: root/textedit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'textedit.cpp')
-rw-r--r--textedit.cpp118
1 files changed, 117 insertions, 1 deletions
diff --git a/textedit.cpp b/textedit.cpp
index 202c3e8..ae9bebe 100644
--- a/textedit.cpp
+++ b/textedit.cpp
@@ -1,6 +1,8 @@
#include "QDebug"
#include "QUrl"
-class QString;
+class QFileDialog;
+class QMessageBox;
+
#include "textedit.h"
TextEdit::TextEdit(QWidget *parent)
{
@@ -53,3 +55,117 @@ bool TextEdit::isKey(QString key)
qDebug() << key.contains("-----BEGIN PGP PUBLIC KEY BLOCK-----", Qt::CaseSensitive);
return true;
}
+
+void TextEdit::open()
+{
+ if (maybeSave()) {
+ QString fileName = QFileDialog::getOpenFileName(this);
+ if (!fileName.isEmpty())
+ loadFile(fileName);
+ }
+}
+
+bool TextEdit::save()
+{
+ if (curFile.isEmpty()) {
+ return saveAs();
+ } else {
+ return saveFile(curFile);
+ }
+}
+
+bool TextEdit::saveAs()
+{
+ QString fileName = QFileDialog::getSaveFileName(this);
+ if (fileName.isEmpty())
+ return false;
+
+ return saveFile(fileName);
+}
+
+void TextEdit::loadFile(const QString &fileName)
+{
+ QFile file(fileName);
+ if (!file.open(QFile::ReadOnly | QFile::Text)) {
+ QMessageBox::warning(this, tr("Application"),
+ tr("Cannot read file %1:\n%2.")
+ .arg(fileName)
+ .arg(file.errorString()));
+ return;
+ }
+ QTextStream in(&file);
+ QApplication::setOverrideCursor(Qt::WaitCursor);
+ this->setPlainText(in.readAll());
+ QApplication::restoreOverrideCursor();
+
+ setCurrentFile(fileName);
+ // statusBar()->showMessage(tr("File loaded"), 2000);
+}
+
+void TextEdit::setCurrentFile(const QString &fileName)
+{
+ curFile = fileName;
+ this->document()->setModified(false);
+ setWindowModified(false);
+
+ QString shownName;
+ if (curFile.isEmpty())
+ shownName = "untitled.txt";
+ else
+ shownName = strippedName(curFile);
+
+ //setWindowTitle(tr("%1[*] - %2").arg(shownName).arg(qApp->applicationName()));
+}
+
+QString TextEdit::strippedName(const QString &fullFileName)
+{
+ return QFileInfo(fullFileName).fileName();
+}
+
+bool TextEdit::maybeSave()
+{
+ if (this->document()->isModified()) {
+ QMessageBox::StandardButton ret;
+ ret = QMessageBox::warning(this, tr("Application"),
+ tr("The document has been modified.\nDo you want to save your changes?"),
+ QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
+ if (ret == QMessageBox::Save)
+ return save();
+ else if (ret == QMessageBox::Cancel)
+ return false;
+ }
+ return true;
+}
+
+bool TextEdit::saveFile(const QString &fileName)
+{
+ QFile file(fileName);
+ if (!file.open(QFile::WriteOnly | QFile::Text)) {
+ QMessageBox::warning(this, tr("File"),
+ tr("Cannot write file %1:\n%2.")
+ .arg(fileName)
+ .arg(file.errorString()));
+ return false;
+ }
+ QTextStream out(&file);
+ QApplication::setOverrideCursor(Qt::WaitCursor);
+ out << this->toPlainText();
+ QApplication::restoreOverrideCursor();
+ //statusBar()->showMessage(tr("Saved '%1'").arg(fileName), 2000);
+ return true;
+}
+void TextEdit::print()
+{
+#ifndef QT_NO_PRINTER
+ QTextDocument *document = this->document();
+ QPrinter printer;
+
+ QPrintDialog *dlg = new QPrintDialog(&printer, this);
+ if (dlg->exec() != QDialog::Accepted)
+ return;
+
+ document->print(&printer);
+
+ //statusBar()->showMessage(tr("Ready"), 2000);
+#endif
+}