summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gui/MainWindow.cpp14
-rw-r--r--gui/MainWindow.h2
-rw-r--r--gui/dialogs/SettingsDialog.cpp2
-rw-r--r--gui/dialogs/UpdateDialog.cpp13
-rw-r--r--gui/dialogs/UpdateDialog.h2
-rw-r--r--logic/updater/DownloadUpdateTask.cpp2
-rw-r--r--logic/updater/UpdateChecker.cpp11
-rw-r--r--logic/updater/UpdateChecker.h4
-rw-r--r--tests/tst_UpdateChecker.cpp4
9 files changed, 34 insertions, 20 deletions
diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp
index bee250c4..552f6a2d 100644
--- a/gui/MainWindow.cpp
+++ b/gui/MainWindow.cpp
@@ -305,12 +305,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
auto updater = MMC->updateChecker();
connect(updater.get(), &UpdateChecker::updateAvailable, this,
&MainWindow::updateAvailable);
- connect(updater.get(), &UpdateChecker::noUpdateFound, [this]()
- {
- CustomMessageBox::selectable(
- this, tr("No update found."),
- tr("No MultiMC update was found!\nYou are using the latest version."))->exec();
- });
+ connect(updater.get(), &UpdateChecker::noUpdateFound, this,
+ &MainWindow::updateNotAvailable);
// if automatic update checks are allowed, start one.
if (MMC->settings()->get("AutoUpdate").toBool())
on_actionCheckUpdate_triggered();
@@ -621,6 +617,12 @@ void MainWindow::updateAvailable(QString repo, QString versionName, int versionI
}
}
+void MainWindow::updateNotAvailable()
+{
+ UpdateDialog dlg(false);
+ dlg.exec();
+}
+
QList<int> stringToIntList(const QString &string)
{
QStringList split = string.split(',', QString::SkipEmptyParts);
diff --git a/gui/MainWindow.h b/gui/MainWindow.h
index 182e9c0c..36ef883b 100644
--- a/gui/MainWindow.h
+++ b/gui/MainWindow.h
@@ -154,6 +154,8 @@ slots:
void updateAvailable(QString repo, QString versionName, int versionId);
+ void updateNotAvailable();
+
void notificationsChanged();
void activeAccountChanged();
diff --git a/gui/dialogs/SettingsDialog.cpp b/gui/dialogs/SettingsDialog.cpp
index 5108daa2..46368bc1 100644
--- a/gui/dialogs/SettingsDialog.cpp
+++ b/gui/dialogs/SettingsDialog.cpp
@@ -73,7 +73,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Se
}
else
{
- MMC->updateChecker()->updateChanList();
+ MMC->updateChecker()->updateChanList(false);
}
connect(ui->proxyGroup, SIGNAL(buttonClicked(int)), SLOT(proxyChanged(int)));
ui->mceditLink->setOpenExternalLinks(true);
diff --git a/gui/dialogs/UpdateDialog.cpp b/gui/dialogs/UpdateDialog.cpp
index 25cfa853..29d09ead 100644
--- a/gui/dialogs/UpdateDialog.cpp
+++ b/gui/dialogs/UpdateDialog.cpp
@@ -5,12 +5,21 @@
#include "MultiMC.h"
#include <logic/settings/SettingsObject.h>
-UpdateDialog::UpdateDialog(QWidget *parent) : QDialog(parent), ui(new Ui::UpdateDialog)
+UpdateDialog::UpdateDialog(bool hasUpdate, QWidget *parent) : QDialog(parent), ui(new Ui::UpdateDialog)
{
MultiMCPlatform::fixWM_CLASS(this);
ui->setupUi(this);
auto channel = MMC->settings()->get("UpdateChannel").toString();
- ui->label->setText(tr("A new %1 update is available!").arg(channel));
+ if(hasUpdate)
+ {
+ ui->label->setText(tr("A new %1 update is available!").arg(channel));
+ }
+ else
+ {
+ ui->label->setText(tr("No %1 updates found. You are running the latest version.").arg(channel));
+ ui->btnUpdateNow->setDisabled(true);
+ ui->btnUpdateOnExit->setDisabled(true);
+ }
loadChangelog();
}
diff --git a/gui/dialogs/UpdateDialog.h b/gui/dialogs/UpdateDialog.h
index 970ef42a..b0a4f143 100644
--- a/gui/dialogs/UpdateDialog.h
+++ b/gui/dialogs/UpdateDialog.h
@@ -36,7 +36,7 @@ class UpdateDialog : public QDialog
Q_OBJECT
public:
- explicit UpdateDialog(QWidget *parent = 0);
+ explicit UpdateDialog(bool hasUpdate = true, QWidget *parent = 0);
~UpdateDialog();
private:
diff --git a/logic/updater/DownloadUpdateTask.cpp b/logic/updater/DownloadUpdateTask.cpp
index e4cad73f..e40df8f1 100644
--- a/logic/updater/DownloadUpdateTask.cpp
+++ b/logic/updater/DownloadUpdateTask.cpp
@@ -91,7 +91,7 @@ void DownloadUpdateTask::findCurrentVersionInfo()
QObject::connect(checker.get(), &UpdateChecker::channelListLoaded, this,
&DownloadUpdateTask::processChannels);
- checker->updateChanList();
+ checker->updateChanList(false);
}
else
{
diff --git a/logic/updater/UpdateChecker.cpp b/logic/updater/UpdateChecker.cpp
index c2895430..6669d333 100644
--- a/logic/updater/UpdateChecker.cpp
+++ b/logic/updater/UpdateChecker.cpp
@@ -59,7 +59,7 @@ void UpdateChecker::checkForUpdate(bool notifyNoUpdate)
QLOG_DEBUG() << "Channel list isn't loaded yet. Loading channel list and deferring "
"update check.";
m_checkUpdateWaiting = true;
- updateChanList();
+ updateChanList(notifyNoUpdate);
return;
}
@@ -170,7 +170,7 @@ void UpdateChecker::updateCheckFailed()
QLOG_ERROR() << "Update check failed for reasons unknown.";
}
-void UpdateChecker::updateChanList()
+void UpdateChecker::updateChanList(bool notifyNoUpdate)
{
QLOG_DEBUG() << "Loading the channel list.";
@@ -185,13 +185,14 @@ void UpdateChecker::updateChanList()
m_chanListLoading = true;
NetJob *job = new NetJob("Update System Channel List");
job->addNetAction(ByteArrayDownload::make(QUrl(m_channelListUrl)));
- QObject::connect(job, &NetJob::succeeded, this, &UpdateChecker::chanListDownloadFinished);
+ connect(job, &NetJob::succeeded, [this, notifyNoUpdate]()
+ { chanListDownloadFinished(notifyNoUpdate); });
QObject::connect(job, &NetJob::failed, this, &UpdateChecker::chanListDownloadFailed);
chanListJob.reset(job);
job->start();
}
-void UpdateChecker::chanListDownloadFinished()
+void UpdateChecker::chanListDownloadFinished(bool notifyNoUpdate)
{
QByteArray data;
{
@@ -250,7 +251,7 @@ void UpdateChecker::chanListDownloadFinished()
// If we're waiting to check for updates, do that now.
if (m_checkUpdateWaiting)
- checkForUpdate(false);
+ checkForUpdate(notifyNoUpdate);
emit channelListLoaded();
}
diff --git a/logic/updater/UpdateChecker.h b/logic/updater/UpdateChecker.h
index 3b0ee28d..2ee1b4b5 100644
--- a/logic/updater/UpdateChecker.h
+++ b/logic/updater/UpdateChecker.h
@@ -33,7 +33,7 @@ public:
* Causes the update checker to download the channel list from the URL specified in config.h (generated by CMake).
* If this isn't called before checkForUpdate(), it will automatically be called.
*/
- void updateChanList();
+ void updateChanList(bool notifyNoUpdate);
/*!
* An entry in the channel list.
@@ -70,7 +70,7 @@ private slots:
void updateCheckFinished(bool notifyNoUpdate);
void updateCheckFailed();
- void chanListDownloadFinished();
+ void chanListDownloadFinished(bool notifyNoUpdate);
void chanListDownloadFailed();
private:
diff --git a/tests/tst_UpdateChecker.cpp b/tests/tst_UpdateChecker.cpp
index 8351ad75..8ed82faf 100644
--- a/tests/tst_UpdateChecker.cpp
+++ b/tests/tst_UpdateChecker.cpp
@@ -116,7 +116,7 @@ slots:
checker.setChannelListUrl(channelUrl);
- checker.updateChanList();
+ checker.updateChanList(false);
if (valid)
{
@@ -165,7 +165,7 @@ slots:
QSignalSpy channelListLoadedSpy(&checker, SIGNAL(channelListLoaded()));
QVERIFY(channelListLoadedSpy.isValid());
- checker.updateChanList();
+ checker.updateChanList(false);
QVERIFY(channelListLoadedSpy.wait());
checker.m_channels[0].url = QUrl::fromLocalFile(QDir::current().absoluteFilePath("tests/data/")).toString();