Merge branch 'develop' of github.com:MultiMC/MultiMC5 into develop
Conflicts: CMakeLists.txt gui/MainWindow.cpp
This commit is contained in:
		| @@ -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" | ||||
| @@ -69,6 +70,12 @@ | ||||
| #include "logic/lists/IconList.h" | ||||
| #include "logic/lists/JavaVersionList.h" | ||||
|  | ||||
| #include "logic/auth/flows/AuthenticateTask.h" | ||||
| #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" | ||||
| @@ -80,6 +87,7 @@ | ||||
| #include "logic/LegacyInstance.h" | ||||
|  | ||||
| #include "logic/assets/AssetsUtils.h" | ||||
| #include <logic/updater/UpdateChecker.h> | ||||
|  | ||||
| MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) | ||||
| { | ||||
| @@ -161,7 +169,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi | ||||
| 	connect(MMC->instances().get(), SIGNAL(dataIsInvalid()), SLOT(selectionBad())); | ||||
|  | ||||
| 	m_statusLeft = new QLabel(tr("Instance type"), this); | ||||
| 	m_statusRight = new QLabel(tr("Assets information"), this); | ||||
| 	m_statusRight = new QLabel(this); | ||||
| 	m_statusRight->setAlignment(Qt::AlignRight); | ||||
| 	statusBar()->addPermanentWidget(m_statusLeft, 1); | ||||
| 	statusBar()->addPermanentWidget(m_statusRight, 0); | ||||
| @@ -232,6 +240,13 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi | ||||
| 		{ | ||||
| 			MMC->lwjgllist()->loadList(); | ||||
| 		} | ||||
|  | ||||
| 		// set up the updater object. | ||||
| 		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(); | ||||
| 	} | ||||
|  | ||||
| 	const QString currentInstanceId = MMC->settings()->get("SelectedInstance").toString(); | ||||
| @@ -406,6 +421,41 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *ev) | ||||
| 	return QMainWindow::eventFilter(obj, ev); | ||||
| } | ||||
|  | ||||
| void MainWindow::updateAvailable(QString repo, QString versionName, int versionId) | ||||
| { | ||||
| 	UpdateDialog dlg; | ||||
| 	UpdateAction action = (UpdateAction) dlg.exec(); | ||||
| 	switch(action) | ||||
| 	{ | ||||
| 		case UPDATE_LATER: | ||||
| 			QLOG_INFO() << "Update will be installed later."; | ||||
| 			break; | ||||
| 		case UPDATE_NOW: | ||||
| 			downloadUpdates(repo, versionId); | ||||
| 			break; | ||||
| 		case UPDATE_ONEXIT: | ||||
| 			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); | ||||
| @@ -593,6 +643,8 @@ void MainWindow::on_actionConfig_Folder_triggered() | ||||
|  | ||||
| void MainWindow::on_actionCheckUpdate_triggered() | ||||
| { | ||||
| 	auto updater = MMC->updateChecker(); | ||||
| 	updater->checkForUpdate(); | ||||
| } | ||||
|  | ||||
| void MainWindow::on_actionSettings_triggered() | ||||
|   | ||||
| @@ -155,11 +155,18 @@ slots: | ||||
|  | ||||
| 	void startTask(Task *task); | ||||
|  | ||||
| 	void updateAvailable(QString repo, QString versionName, int versionId); | ||||
|  | ||||
| 	void activeAccountChanged(); | ||||
|  | ||||
| 	void changeActiveAccount(); | ||||
|  | ||||
| 	void repopulateAccountsMenu(); | ||||
| 	 | ||||
| 	/*! | ||||
| 	 * Runs the DownloadUpdateTask and installs updates. | ||||
| 	 */ | ||||
| 	void downloadUpdates(QString repo, int versionId, bool installOnExit=false); | ||||
|  | ||||
| protected: | ||||
| 	bool eventFilter(QObject *obj, QEvent *ev); | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|    <string>MultiMC 5</string> | ||||
|   </property> | ||||
|   <property name="windowIcon"> | ||||
|    <iconset resource="../multimc.qrc"> | ||||
|    <iconset resource="../graphics.qrc"> | ||||
|     <normaloff>:/icons/multimc/scalable/apps/multimc.svg</normaloff>:/icons/multimc/scalable/apps/multimc.svg</iconset> | ||||
|   </property> | ||||
|   <widget class="QWidget" name="centralWidget"> | ||||
| @@ -123,7 +123,7 @@ | ||||
|   </widget> | ||||
|   <action name="actionAddInstance"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/new</normaloff>:/icons/toolbar/new</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -138,7 +138,7 @@ | ||||
|   </action> | ||||
|   <action name="actionViewInstanceFolder"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/viewfolder</normaloff>:/icons/toolbar/viewfolder</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -153,7 +153,7 @@ | ||||
|   </action> | ||||
|   <action name="actionRefresh"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/refresh</normaloff>:/icons/toolbar/refresh</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -168,7 +168,7 @@ | ||||
|   </action> | ||||
|   <action name="actionViewCentralModsFolder"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/centralmods</normaloff>:/icons/toolbar/centralmods</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -183,7 +183,7 @@ | ||||
|   </action> | ||||
|   <action name="actionCheckUpdate"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/checkupdate</normaloff>:/icons/toolbar/checkupdate</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -198,7 +198,7 @@ | ||||
|   </action> | ||||
|   <action name="actionSettings"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/settings</normaloff>:/icons/toolbar/settings</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -216,7 +216,7 @@ | ||||
|   </action> | ||||
|   <action name="actionReportBug"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/bug</normaloff>:/icons/toolbar/bug</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -231,7 +231,7 @@ | ||||
|   </action> | ||||
|   <action name="actionNews"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/news</normaloff>:/icons/toolbar/news</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -246,7 +246,7 @@ | ||||
|   </action> | ||||
|   <action name="actionAbout"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/about</normaloff>:/icons/toolbar/about</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -300,7 +300,7 @@ | ||||
|     <bool>true</bool> | ||||
|    </property> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -440,7 +440,7 @@ | ||||
|     <bool>true</bool> | ||||
|    </property> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/cat</normaloff>:/icons/toolbar/cat</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -452,7 +452,7 @@ | ||||
|   </action> | ||||
|   <action name="actionCopyInstance"> | ||||
|    <property name="icon"> | ||||
|     <iconset resource="../multimc.qrc"> | ||||
|     <iconset resource="../graphics.qrc"> | ||||
|      <normaloff>:/icons/toolbar/copy</normaloff>:/icons/toolbar/copy</iconset> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
| @@ -476,7 +476,7 @@ | ||||
|  </widget> | ||||
|  <layoutdefault spacing="6" margin="11"/> | ||||
|  <resources> | ||||
|   <include location="../multimc.qrc"/> | ||||
|   <include location="../graphics.qrc"/> | ||||
|  </resources> | ||||
|  <connections/> | ||||
| </ui> | ||||
|   | ||||
							
								
								
									
										28
									
								
								gui/dialogs/UpdateDialog.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								gui/dialogs/UpdateDialog.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| #include "UpdateDialog.h" | ||||
| #include "ui_UpdateDialog.h" | ||||
| #include "gui/Platform.h" | ||||
|  | ||||
| UpdateDialog::UpdateDialog(QWidget *parent) : QDialog(parent), ui(new Ui::UpdateDialog) | ||||
| { | ||||
| 	MultiMCPlatform::fixWM_CLASS(this); | ||||
| 	ui->setupUi(this); | ||||
| } | ||||
|  | ||||
| UpdateDialog::~UpdateDialog() | ||||
| { | ||||
| } | ||||
|  | ||||
| void UpdateDialog::on_btnUpdateLater_clicked() | ||||
| { | ||||
| 	reject(); | ||||
| } | ||||
|  | ||||
| void UpdateDialog::on_btnUpdateNow_clicked() | ||||
| { | ||||
| 	done(UPDATE_NOW); | ||||
| } | ||||
|  | ||||
| void UpdateDialog::on_btnUpdateOnExit_clicked() | ||||
| { | ||||
| 	done(UPDATE_ONEXIT); | ||||
| } | ||||
							
								
								
									
										46
									
								
								gui/dialogs/UpdateDialog.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								gui/dialogs/UpdateDialog.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| /* Copyright 2013 MultiMC Contributors | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <QDialog> | ||||
|  | ||||
| namespace Ui | ||||
| { | ||||
| class UpdateDialog; | ||||
| } | ||||
|  | ||||
| enum UpdateAction | ||||
| { | ||||
| 	UPDATE_LATER = QDialog::Rejected, | ||||
| 	UPDATE_NOW = QDialog::Accepted, | ||||
| 	UPDATE_ONEXIT = 2 | ||||
| }; | ||||
|  | ||||
| class UpdateDialog : public QDialog | ||||
| { | ||||
| 	Q_OBJECT | ||||
|  | ||||
| public: | ||||
| 	explicit UpdateDialog(QWidget *parent = 0); | ||||
| 	~UpdateDialog(); | ||||
|  | ||||
| private: | ||||
| 	Ui::UpdateDialog *ui; | ||||
| public slots: | ||||
| 	void on_btnUpdateNow_clicked(); | ||||
| 	void on_btnUpdateOnExit_clicked(); | ||||
| 	void on_btnUpdateLater_clicked(); | ||||
| }; | ||||
							
								
								
									
										70
									
								
								gui/dialogs/UpdateDialog.ui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								gui/dialogs/UpdateDialog.ui
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <ui version="4.0"> | ||||
|  <class>UpdateDialog</class> | ||||
|  <widget class="QDialog" name="UpdateDialog"> | ||||
|   <property name="geometry"> | ||||
|    <rect> | ||||
|     <x>0</x> | ||||
|     <y>0</y> | ||||
|     <width>350</width> | ||||
|     <height>260</height> | ||||
|    </rect> | ||||
|   </property> | ||||
|   <property name="windowTitle"> | ||||
|    <string>MultiMC Update</string> | ||||
|   </property> | ||||
|   <property name="windowIcon"> | ||||
|    <iconset resource="../../graphics.qrc"> | ||||
|     <normaloff>:/icons/toolbar/checkupdate</normaloff>:/icons/toolbar/checkupdate</iconset> | ||||
|   </property> | ||||
|   <layout class="QVBoxLayout" name="verticalLayout"> | ||||
|    <item> | ||||
|     <widget class="QLabel" name="label"> | ||||
|      <property name="text"> | ||||
|       <string>A new MultiMC update is available!</string> | ||||
|      </property> | ||||
|      <property name="alignment"> | ||||
|       <set>Qt::AlignCenter</set> | ||||
|      </property> | ||||
|     </widget> | ||||
|    </item> | ||||
|    <item> | ||||
|     <widget class="QPushButton" name="btnUpdateNow"> | ||||
|      <property name="sizePolicy"> | ||||
|       <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> | ||||
|        <horstretch>0</horstretch> | ||||
|        <verstretch>0</verstretch> | ||||
|       </sizepolicy> | ||||
|      </property> | ||||
|      <property name="text"> | ||||
|       <string>Update now</string> | ||||
|      </property> | ||||
|     </widget> | ||||
|    </item> | ||||
|    <item> | ||||
|     <widget class="QPushButton" name="btnUpdateOnExit"> | ||||
|      <property name="text"> | ||||
|       <string>Update after MultiMC closes</string> | ||||
|      </property> | ||||
|     </widget> | ||||
|    </item> | ||||
|    <item> | ||||
|     <widget class="QPushButton" name="btnUpdateLater"> | ||||
|      <property name="sizePolicy"> | ||||
|       <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> | ||||
|        <horstretch>0</horstretch> | ||||
|        <verstretch>0</verstretch> | ||||
|       </sizepolicy> | ||||
|      </property> | ||||
|      <property name="text"> | ||||
|       <string>Don't update yet</string> | ||||
|      </property> | ||||
|     </widget> | ||||
|    </item> | ||||
|   </layout> | ||||
|  </widget> | ||||
|  <resources> | ||||
|   <include location="../../graphics.qrc"/> | ||||
|  </resources> | ||||
|  <connections/> | ||||
| </ui> | ||||
		Reference in New Issue
	
	Block a user