From cb9fa1a754eb1ae69883fcd2c5393a88dfebf184 Mon Sep 17 00:00:00 2001 From: kostas Date: Wed, 9 May 2012 14:20:26 +0000 Subject: [PATCH] Simplified status bar handlong When fossil is running, a progress bar is now displayed and input event processing is disabled FossilOrigin-Name: 6dc326684138f1e61b1ea95ef96c6f421bf3a09d --- MainWindow.cpp | 45 +++++++++++++++++++++++++++++++++++++++------ MainWindow.h | 4 ++-- manifest | 14 +++++++------- manifest.uuid | 2 +- 4 files changed, 49 insertions(+), 16 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index b27afb9..5e7660f 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include "CommitDialog.h" #include "FileActionDialog.h" #include "CloneDialog.h" @@ -89,6 +90,26 @@ static QStringMap MakeKeyValues(QStringList lines) } +/////////////////////////////////////////////////////////////////////////////// +class ScopedStatus +{ +public: + ScopedStatus(const QString &text, Ui::MainWindow *mw, QProgressBar *bar) : ui(mw), progressBar(bar) + { + ui->statusBar->showMessage(text); + progressBar->setHidden(false); + } + + ~ScopedStatus() + { + ui->statusBar->clearMessage(); + progressBar->setHidden(true); + } +private: + Ui::MainWindow *ui; + QProgressBar *progressBar; +}; + /////////////////////////////////////////////////////////////////////////////// MainWindow::MainWindow(QWidget *parent, QString *workspacePath, bool portableMode) : QMainWindow(parent), @@ -161,9 +182,15 @@ MainWindow::MainWindow(QWidget *parent, QString *workspacePath, bool portableMod ui->menuFile->insertAction(recent_sep, recentWorkspaceActs[i]); } - statusLabel = new QLabel(); - statusLabel->setMinimumSize( statusLabel->sizeHint() ); - ui->statusBar->addWidget( statusLabel, 1 ); + // Construct ProgressBar + progressBar = new QProgressBar(); + progressBar->setMinimum(0); + progressBar->setMaximum(0); + progressBar->setMaximumSize(170, 16); + progressBar->setAlignment(Qt::AlignCenter); + progressBar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); + ui->statusBar->insertPermanentWidget(0, progressBar); + progressBar->setVisible(false); #ifdef Q_WS_MACX // Native applications on OSX don't use menu icons @@ -1003,8 +1030,7 @@ void MainWindow::log(const QString &text, bool isHTML) //------------------------------------------------------------------------------ void MainWindow::setStatus(const QString &text) { - Q_ASSERT(statusLabel); - statusLabel->setText(text); + ui->statusBar->showMessage(text); } //------------------------------------------------------------------------------ @@ -1068,7 +1094,14 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int { return QProcess::startDetached(fossil, args, wkdir); } + + // Make StatusBar message + QString status_msg = tr("Running Fossil"); + if(args.length() > 0) + status_msg = QString("Fossil %0").arg(args[0].toCaseFolded()); + ScopedStatus status(status_msg, ui, progressBar); + // Create fossil process QProcess process(this); process.setProcessChannelMode(QProcess::MergedChannels); process.setWorkingDirectory(wkdir); @@ -1116,7 +1149,7 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int buffer += input; - QCoreApplication::processEvents(); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); if(buffer.isEmpty()) continue; diff --git a/MainWindow.h b/MainWindow.h index 32cca8e..3ad7e70 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -244,7 +244,7 @@ private: QProcess fossilUI; QString fossilUIPort; class QAction *recentWorkspaceActs[MAX_RECENT]; - class QLabel *statusLabel; + class QProgressBar *progressBar; bool fossilAbort; // FIXME: No GUI for it yet Settings settings; @@ -257,7 +257,7 @@ private: class QSettings *qsettings; - // Repo State + // Repository State typedef QList filelist_t; typedef QMap filemap_t; typedef QMap stashmap_t; diff --git a/manifest b/manifest index 4127b49..d7826c8 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Added\sback\suser32\sand\sshell32\slibs\son\swindows,\sas\sthey\sare\sneeded\sexplicitely\sfor\svc/nmake\sbuilds.\n\n -D 2012-05-09T12:13:12.012 +C Simplified\sstatus\sbar\shandlong\nWhen\sfossil\sis\srunning,\sa\sprogress\sbar\sis\snow\sdisplayed\sand\sinput\sevent\sprocessing\sis\sdisabled\n +D 2012-05-09T14:20:26.209 F CloneDialog.cpp 85bc6473d1e3a47d0f981e96357a376be63ab0bc F CloneDialog.h 1c63da4346ca20b67d52016b7b64875b9c5b477f F CloneDialog.ui 0fc820804df91f16506ee466a44519fdd44e468f @@ -11,8 +11,8 @@ F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7 F FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2 F FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df -F MainWindow.cpp 9202bea6f5017adc6f5e26b0e122695641658810 -F MainWindow.h 90de1726e0961f73f637c4071d1cb0fe1049007f +F MainWindow.cpp c106d92d343817c381634251207b0fd6b85d9dd7 +F MainWindow.h f97ef3776d10211f42651cd2b7c7291d90bac3c1 F MainWindow.ui 5f4e40bfb3e93b00f2e06a6071187998eb617224 F SettingsDialog.cpp 296c77c5704bd8cb77a00d561db072aaaf60c1d6 F SettingsDialog.h 9592ec491cd44a5bff70ea42853d7e1f053f4040 @@ -179,7 +179,7 @@ F installer/fuel.iss 13b6a938bcdf273cbd3649d2549887baa1577214 F installer/license.txt 4cc77b90af91e615a64ae04893fdffa7939db84c F main.cpp f2913af0af1a5fcbebe93fb53b8a9cf6e7bbf65a F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P 62c1fa8d4fe11e8584af13b70bea5084ad2bd0fb -R c317f4827f98ea41ec812089faead3a8 +P 3eb9f233b9f05d6e131a69b3fc25f5f8d5c11491 +R b9b3e1414a5ceae0afbe31f5cfee9426 U kostas -Z f7c32317fe2396dc773b386afbf923f3 +Z b2ff6e9c95bb4648cc5970dfe895a0d4 diff --git a/manifest.uuid b/manifest.uuid index eff6b36..55769a6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3eb9f233b9f05d6e131a69b3fc25f5f8d5c11491 \ No newline at end of file +6dc326684138f1e61b1ea95ef96c6f421bf3a09d \ No newline at end of file