From 6aa9bd0f77dcb5128167fae62e32aa5252fe85c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Mon, 2 Dec 2013 00:55:24 +0100 Subject: Renew the updater branch Now with some actual consensus on what the updater will do! --- gui/MainWindow.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'gui/MainWindow.cpp') diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index 854091c6..a6796a29 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -59,6 +59,7 @@ #include "gui/dialogs/CopyInstanceDialog.h" #include "gui/dialogs/AccountListDialog.h" #include "gui/dialogs/AccountSelectDialog.h" +#include "gui/dialogs/UpdateDialog.h" #include "gui/dialogs/EditAccountDialog.h" #include "gui/ConsoleWindow.h" @@ -83,6 +84,7 @@ #include "logic/SkinUtils.h" #include "logic/LegacyInstance.h" +#include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { @@ -236,6 +238,13 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi MMC->lwjgllist()->loadList(); } + // set up the updater object. + auto updater = MMC->goupdate(); + connect(updater.get(), SIGNAL(updateAvailable()), SLOT(updateAvailable())); + // if automatic update checks are allowed, start one. + if(MMC->settings()->get("AutoUpdate").toBool()) + on_actionCheckUpdate_triggered(); + assets_downloader = new OneSixAssets(); connect(assets_downloader, SIGNAL(indexStarted()), SLOT(assetsIndexStarted())); connect(assets_downloader, SIGNAL(filesStarted()), SLOT(assetsFilesStarted())); @@ -417,6 +426,24 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *ev) return QMainWindow::eventFilter(obj, ev); } +void MainWindow::updateAvailable() +{ + UpdateDialog dlg; + UpdateAction action = (UpdateAction) dlg.exec(); + switch(action) + { + case UPDATE_LATER: + QLOG_INFO() << "Don't install update yet!"; + break; + case UPDATE_NOW: + QLOG_INFO() << "Install update NOW!"; + break; + case UPDATE_ONEXIT: + QLOG_INFO() << "Install update on exit!"; + break; + } +} + void MainWindow::onCatToggled(bool state) { setCatBackground(state); @@ -604,6 +631,8 @@ void MainWindow::on_actionConfig_Folder_triggered() void MainWindow::on_actionCheckUpdate_triggered() { + auto updater = MMC->goupdate(); + updater->checkForUpdate(); } void MainWindow::on_actionSettings_triggered() -- cgit v1.2.3 From bf94aaea7527a8f5b9f3b8c1ab6ff4e88cbd748f Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 4 Dec 2013 12:34:12 -0600 Subject: Rework the update checking system --- gui/MainWindow.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'gui/MainWindow.cpp') diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index a6796a29..39c78360 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -84,7 +84,8 @@ #include "logic/SkinUtils.h" #include "logic/LegacyInstance.h" -#include + +#include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { @@ -239,8 +240,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi } // set up the updater object. - auto updater = MMC->goupdate(); - connect(updater.get(), SIGNAL(updateAvailable()), SLOT(updateAvailable())); + auto updater = MMC->updateChecker(); + QObject::connect(updater.get(), &UpdateChecker::updateAvailable, this, &MainWindow::updateAvailable); // if automatic update checks are allowed, start one. if(MMC->settings()->get("AutoUpdate").toBool()) on_actionCheckUpdate_triggered(); @@ -426,7 +427,7 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *ev) return QMainWindow::eventFilter(obj, ev); } -void MainWindow::updateAvailable() +void MainWindow::updateAvailable(QString repo, QString versionName, int versionId) { UpdateDialog dlg; UpdateAction action = (UpdateAction) dlg.exec(); @@ -631,7 +632,7 @@ void MainWindow::on_actionConfig_Folder_triggered() void MainWindow::on_actionCheckUpdate_triggered() { - auto updater = MMC->goupdate(); + auto updater = MMC->updateChecker(); updater->checkForUpdate(); } -- cgit v1.2.3 From 48ec8e67b8cff63cd2d0e08c17e7bb576b4e07a7 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 5 Dec 2013 13:52:55 -0600 Subject: Implement DownloadUpdateTask Installing updates is not implemented yet. That's next. --- gui/MainWindow.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'gui/MainWindow.cpp') diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index 39c78360..618884ef 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -74,6 +74,8 @@ #include "logic/auth/flows/RefreshTask.h" #include "logic/auth/flows/ValidateTask.h" +#include "logic/updater/DownloadUpdateTask.h" + #include "logic/BaseInstance.h" #include "logic/InstanceFactory.h" #include "logic/MinecraftProcess.h" @@ -434,13 +436,19 @@ void MainWindow::updateAvailable(QString repo, QString versionName, int versionI switch(action) { case UPDATE_LATER: - QLOG_INFO() << "Don't install update yet!"; + QLOG_INFO() << "Update will be installed later."; break; case UPDATE_NOW: - QLOG_INFO() << "Install update NOW!"; + { + QLOG_INFO() << "Installing update."; + ProgressDialog updateDlg(this); + DownloadUpdateTask updateTask(repo, versionId, &updateDlg); + updateDlg.exec(&updateTask); + } break; case UPDATE_ONEXIT: - QLOG_INFO() << "Install update on exit!"; + // TODO: Implement installing updates on exit. + QLOG_INFO() << "Installing on exit is not implemented yet."; break; } } -- cgit v1.2.3 From 6ac94ddcb6f64ffae3948bed778bccc33a92f0fd Mon Sep 17 00:00:00 2001 From: Andrew Date: Fri, 6 Dec 2013 12:59:58 -0600 Subject: Finish implementing update installation. Also add the option to update on exit. --- gui/MainWindow.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'gui/MainWindow.cpp') diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index 618884ef..7ea5c291 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -439,20 +439,31 @@ void MainWindow::updateAvailable(QString repo, QString versionName, int versionI QLOG_INFO() << "Update will be installed later."; break; case UPDATE_NOW: - { - QLOG_INFO() << "Installing update."; - ProgressDialog updateDlg(this); - DownloadUpdateTask updateTask(repo, versionId, &updateDlg); - updateDlg.exec(&updateTask); - } + downloadUpdates(repo, versionId); break; case UPDATE_ONEXIT: - // TODO: Implement installing updates on exit. - QLOG_INFO() << "Installing on exit is not implemented yet."; + downloadUpdates(repo, versionId, true); break; } } +void MainWindow::downloadUpdates(QString repo, int versionId, bool installOnExit) +{ + QLOG_INFO() << "Downloading updates."; + // TODO: If the user chooses to update on exit, we should download updates in the background. + // Doing so is a bit complicated, because we'd have to make sure it finished downloading before actually exiting MultiMC. + ProgressDialog updateDlg(this); + DownloadUpdateTask updateTask(repo, versionId, &updateDlg); + // If the task succeeds, install the updates. + if (updateDlg.exec(&updateTask)) + { + if (installOnExit) + MMC->setUpdateOnExit(updateTask.updateFilesDir()); + else + MMC->installUpdates(updateTask.updateFilesDir()); + } +} + void MainWindow::onCatToggled(bool state) { setCatBackground(state); -- cgit v1.2.3