diff options
author | Petr Mrázek <peterix@gmail.com> | 2013-12-08 17:34:45 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2013-12-08 17:34:45 +0100 |
commit | 0cb8ff40b26401a707781c2c4171d3ec6c114077 (patch) | |
tree | 0e075c830b67f8b15d5359d06d1026987dc5c124 /gui/dialogs/ProgressDialog.cpp | |
parent | f028aa76bc5d28b7fc4d1ea4e194895690e9944e (diff) | |
download | MultiMC-0cb8ff40b26401a707781c2c4171d3ec6c114077.tar MultiMC-0cb8ff40b26401a707781c2c4171d3ec6c114077.tar.gz MultiMC-0cb8ff40b26401a707781c2c4171d3ec6c114077.tar.lz MultiMC-0cb8ff40b26401a707781c2c4171d3ec6c114077.tar.xz MultiMC-0cb8ff40b26401a707781c2c4171d3ec6c114077.zip |
Finish preliminary offline support
* ProgressProvider now has an abort() call
* Abort button support added to the progress dialog
* YggdrasilTask and MojangAccount adapted to support abort
YggdrasilTask will time out after 10 seconds of no network activity, or when the user pushes the Play Offline button.
In offline mode, all instance update tasks are skipped! This will need further work.
Diffstat (limited to 'gui/dialogs/ProgressDialog.cpp')
-rw-r--r-- | gui/dialogs/ProgressDialog.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/gui/dialogs/ProgressDialog.cpp b/gui/dialogs/ProgressDialog.cpp index ca433dab..ba14cca2 100644 --- a/gui/dialogs/ProgressDialog.cpp +++ b/gui/dialogs/ProgressDialog.cpp @@ -25,9 +25,23 @@ ProgressDialog::ProgressDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Pr { MultiMCPlatform::fixWM_CLASS(this); ui->setupUi(this); + this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); + setSkipButton(false); + changeProgress(0, 100); +} + +void ProgressDialog::setSkipButton(bool present, QString label) +{ + ui->skipButton->setEnabled(present); + ui->skipButton->setVisible(present); + ui->skipButton->setText(label); updateSize(); +} - changeProgress(0, 100); +void ProgressDialog::on_skipButton_clicked(bool checked) +{ + Q_UNUSED(checked); + task->abort(); } ProgressDialog::~ProgressDialog() @@ -51,9 +65,13 @@ int ProgressDialog::exec(ProgressProvider *task) connect(task, SIGNAL(status(QString)), SLOT(changeStatus(const QString &))); connect(task, SIGNAL(progress(qint64, qint64)), SLOT(changeProgress(qint64, qint64))); - // this makes sure that the task is started after the dialog is created - QMetaObject::invokeMethod(task, "start", Qt::QueuedConnection); - return QDialog::exec(); + // if this didn't connect to an already running task, invoke start + if(!task->isRunning()) + task->start(); + if(task->isRunning()) + return QDialog::exec(); + else + return 0; } ProgressProvider *ProgressDialog::getTask() |