diff options
Diffstat (limited to 'application')
-rw-r--r-- | application/CMakeLists.txt | 5 | ||||
-rw-r--r-- | application/InstancePageProvider.h | 7 | ||||
-rw-r--r-- | application/pages/LegacyUpgradePage.cpp | 25 | ||||
-rw-r--r-- | application/pages/LegacyUpgradePage.h | 60 | ||||
-rw-r--r-- | application/pages/LegacyUpgradePage.ui | 47 |
5 files changed, 143 insertions, 1 deletions
diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt index 70cb1e93..17e19b58 100644 --- a/application/CMakeLists.txt +++ b/application/CMakeLists.txt @@ -131,6 +131,8 @@ SET(MULTIMC_SOURCES pages/ScreenshotsPage.h pages/OtherLogsPage.cpp pages/OtherLogsPage.h + pages/LegacyUpgradePage.cpp + pages/LegacyUpgradePage.h pages/WorldListPage.cpp pages/WorldListPage.h @@ -229,7 +231,7 @@ SET(MULTIMC_SOURCES ######## UIs ######## SET(MULTIMC_UIS - # Option pages + # Instance pages pages/VersionPage.ui pages/ModFolderPage.ui pages/LogPage.ui @@ -237,6 +239,7 @@ SET(MULTIMC_UIS pages/NotesPage.ui pages/ScreenshotsPage.ui pages/OtherLogsPage.ui + pages/LegacyUpgradePage.ui pages/WorldListPage.ui # Global settings pages diff --git a/application/InstancePageProvider.h b/application/InstancePageProvider.h index ac5306c0..3b361e3e 100644 --- a/application/InstancePageProvider.h +++ b/application/InstancePageProvider.h @@ -1,5 +1,6 @@ #pragma once #include "minecraft/MinecraftInstance.h" +#include "minecraft/legacy/LegacyInstance.h" #include <FileSystem.h> #include "pages/BasePage.h" #include "pages/LogPage.h" @@ -12,6 +13,7 @@ #include "pages/InstanceSettingsPage.h" #include "pages/OtherLogsPage.h" #include "pages/BasePageProvider.h" +#include "pages/LegacyUpgradePage.h" #include "pages/WorldListPage.h" @@ -44,6 +46,11 @@ public: values.append(new ScreenshotsPage(FS::PathCombine(onesix->minecraftRoot(), "screenshots"))); values.append(new InstanceSettingsPage(onesix.get())); } + std::shared_ptr<LegacyInstance> legacy = std::dynamic_pointer_cast<LegacyInstance>(inst); + if(legacy) + { + values.append(new LegacyUpgradePage(legacy.get())); + } auto logMatcher = inst->getLogFileMatcher(); if(logMatcher) { diff --git a/application/pages/LegacyUpgradePage.cpp b/application/pages/LegacyUpgradePage.cpp new file mode 100644 index 00000000..14cb916d --- /dev/null +++ b/application/pages/LegacyUpgradePage.cpp @@ -0,0 +1,25 @@ +#include "LegacyUpgradePage.h" +#include "ui_LegacyUpgradePage.h" + +#include "minecraft/legacy/LegacyInstance.h" + +LegacyUpgradePage::LegacyUpgradePage(LegacyInstance *inst, QWidget *parent) + : QWidget(parent), ui(new Ui::LegacyUpgradePage), m_inst(inst) +{ + ui->setupUi(this); +} + +LegacyUpgradePage::~LegacyUpgradePage() +{ + delete ui; +} + +void LegacyUpgradePage::on_upgradeButton_clicked() +{ + // now what? +} + +bool LegacyUpgradePage::shouldDisplay() const +{ + return !m_inst->isRunning(); +} diff --git a/application/pages/LegacyUpgradePage.h b/application/pages/LegacyUpgradePage.h new file mode 100644 index 00000000..4731bb82 --- /dev/null +++ b/application/pages/LegacyUpgradePage.h @@ -0,0 +1,60 @@ +/* Copyright 2013-2017 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 <QWidget> + +#include "minecraft/legacy/LegacyInstance.h" +#include "pages/BasePage.h" +#include <MultiMC.h> + +namespace Ui +{ +class LegacyUpgradePage; +} + +class LegacyUpgradePage : public QWidget, public BasePage +{ + Q_OBJECT + +public: + explicit LegacyUpgradePage(LegacyInstance *inst, QWidget *parent = 0); + virtual ~LegacyUpgradePage(); + virtual QString displayName() const override + { + return tr("Upgrade"); + } + virtual QIcon icon() const override + { + return MMC->getThemedIcon("checkupdate"); + } + virtual QString id() const override + { + return "upgrade"; + } + virtual QString helpPage() const override + { + return "Legacy-upgrade"; + } + virtual bool shouldDisplay() const override; +private +slots: + void on_upgradeButton_clicked(); + +private: + Ui::LegacyUpgradePage *ui; + LegacyInstance *m_inst; +}; diff --git a/application/pages/LegacyUpgradePage.ui b/application/pages/LegacyUpgradePage.ui new file mode 100644 index 00000000..124a0ce9 --- /dev/null +++ b/application/pages/LegacyUpgradePage.ui @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>LegacyUpgradePage</class> + <widget class="QWidget" name="LegacyUpgradePage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>546</width> + <height>405</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QTextBrowser" name="textBrowser"> + <property name="html"> + <string><html><body><h1>Upgrade is required</h1><p>MultiMC now supports old Minecraft versions and all the required features in the new (OneSix) instance format. As a consequence, the old (Legacy) format has been entirely disabled and old instances need to be upgraded.</p><p>The upgrade will create a new instance with the same contents as the current one, in the new format. The original instance will remain untouched, in case anything goes wrong in the process.</p><p>Please report any issues on our <a href="https://github.com/MultiMC/MultiMC5/issues">github issues page</a>.</p></body></html></string> + </property> + <property name="openExternalLinks"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCommandLinkButton" name="upgradeButton"> + <property name="text"> + <string>Upgrade the instance</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> |