From 66e894478e293a453e27f091e7e097b51983f2f6 Mon Sep 17 00:00:00 2001 From: Leandro Melo Date: Fri, 4 Feb 2011 14:55:50 +0100 Subject: [PATCH] Text editor: Progress bar for large files Reviewed-by: mae --- src/plugins/texteditor/basetextdocument.cpp | 17 ++++++++++++++--- src/plugins/texteditor/texteditorconstants.h | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp index 2c399ff0fe2..97999fb9073 100644 --- a/src/plugins/texteditor/basetextdocument.cpp +++ b/src/plugins/texteditor/basetextdocument.cpp @@ -38,6 +38,7 @@ #include "storagesettings.h" #include "tabsettings.h" #include "syntaxhighlighter.h" +#include "texteditorconstants.h" #include #include @@ -45,12 +46,14 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include @@ -521,14 +524,22 @@ bool BaseTextDocument::open(const QString &fileName) if (d->m_isBinaryData) { d->m_document->setHtml(tr("Binary data")); } else { - if (content.size() == 1) { + const int chunks = content.size(); + if (chunks == 1) { d->m_document->setPlainText(content.at(0)); } else { + QFutureInterface interface; + interface.setProgressRange(0, chunks); + Core::ICore::instance()->progressManager()->addTask( + interface.future(), tr("Opening file"), Constants::TASK_OPEN_FILE); + interface.reportStarted(); QTextCursor c(d->m_document); - foreach (const QString &text, content) { - c.insertText(text); + for (int i = 0; i < chunks; ++i) { + c.insertText(content.at(i)); + interface.setProgressValue(i + 1); QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); } + interface.reportFinished(); } } BaseTextDocumentLayout *documentLayout = diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h index 7d3092cf776..4c824b9bac0 100644 --- a/src/plugins/texteditor/texteditorconstants.h +++ b/src/plugins/texteditor/texteditorconstants.h @@ -98,6 +98,7 @@ const char * const C_TEXTEDITOR_MIMETYPE_TEXT = "text/plain"; const char * const INFO_SYNTAX_DEFINITION = "TextEditor.InfoSyntaxDefinition"; const char * const TASK_DOWNLOAD_DEFINITIONS = "TextEditor.Task.Download"; const char * const TASK_REGISTER_DEFINITIONS = "TextEditor.Task.Register"; +const char * const TASK_OPEN_FILE = "TextEditor.Task.OpenFile"; // Text color and style categories const char * const C_TEXT = "Text";