From baa3b65f16bf7c9ea7e5d6d3e25b9e2361cef8e1 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Fri, 13 May 2022 00:36:57 +0800 Subject: feat(ui): more advanced charset functions 1. support dealing more type of files with different charsets 2. solve cash cause by reading file thread 3. improve ui operations --- src/ui/widgets/TextEdit.cpp | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'src/ui/widgets/TextEdit.cpp') diff --git a/src/ui/widgets/TextEdit.cpp b/src/ui/widgets/TextEdit.cpp index ecf1a4bd..689f877b 100644 --- a/src/ui/widgets/TextEdit.cpp +++ b/src/ui/widgets/TextEdit.cpp @@ -166,11 +166,30 @@ bool TextEdit::save_file(const QString& fileName) { return false; } + PlainTextEditorPage* page = SlotCurPageTextEdit(); + if (page == nullptr) return false; + + if (page->WillCharsetChange()) { + auto result = QMessageBox::warning( + this, _("Save"), + QString("

") + + _("After saving, the encoding of the current file will be " + "converted to UTF-8 and the line endings will be changed to " + "LF. ") + + "

" + "

" + + _("If this is not the result you expect, please use \"save " + "as\".") + + "

", + QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Cancel); + + if (result == QMessageBox::Cancel) { + return false; + } + } + QFile file(fileName); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { - PlainTextEditorPage* page = SlotCurPageTextEdit(); - QTextStream outputStream(&file); QApplication::setOverrideCursor(Qt::WaitCursor); outputStream << page->GetTextPage()->toPlainText(); @@ -182,7 +201,8 @@ bool TextEdit::save_file(const QString& fileName) { int curIndex = tab_widget_->currentIndex(); tab_widget_->setTabText(curIndex, stripped_name(fileName)); page->SetFilePath(fileName); - // statusBar()->showMessage(_("File saved"), 2000); + page->NotifyFileSaved(); + file.close(); return true; } else { -- cgit v1.2.3 From 93ac14374580d6a173b83bef0dba0ff73ff77f5a Mon Sep 17 00:00:00 2001 From: Saturneric Date: Sat, 14 May 2022 01:43:56 +0800 Subject: feat: add a simple TaskRunner system 1. solve multiple threads problem. --- src/ui/widgets/TextEdit.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/ui/widgets/TextEdit.cpp') diff --git a/src/ui/widgets/TextEdit.cpp b/src/ui/widgets/TextEdit.cpp index 689f877b..713dbb80 100644 --- a/src/ui/widgets/TextEdit.cpp +++ b/src/ui/widgets/TextEdit.cpp @@ -315,9 +315,7 @@ bool TextEdit::maybe_save_current_tab(bool askToSave) { return false; } } - - // destroy - page->PrepareToDestroy(); + page->deleteLater(); return true; } -- cgit v1.2.3