Simplified status bar handlong

When fossil is running, a progress bar is now displayed and input event processing is disabled


FossilOrigin-Name: 6dc326684138f1e61b1ea95ef96c6f421bf3a09d
This commit is contained in:
kostas 2012-05-09 14:20:26 +00:00
parent bc7791de61
commit cb9fa1a754
4 changed files with 49 additions and 16 deletions

View File

@ -15,6 +15,7 @@
#include <QMimeData>
#include <QFileIconProvider>
#include <QDebug>
#include <QProgressBar>
#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;

View File

@ -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<RepoFile*> filelist_t;
typedef QMap<QString, RepoFile*> filemap_t;
typedef QMap<QString, QString> stashmap_t;

View File

@ -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

View File

@ -1 +1 @@
3eb9f233b9f05d6e131a69b3fc25f5f8d5c11491
6dc326684138f1e61b1ea95ef96c6f421bf3a09d