diff options
-rw-r--r-- | application/CMakeLists.txt | 7 | ||||
-rw-r--r-- | application/MultiMC.cpp | 9 | ||||
-rw-r--r-- | application/MultiMC.h | 2 | ||||
-rw-r--r-- | application/setupwizard/SetupWizard.cpp | 26 | ||||
-rw-r--r-- | application/setupwizard/SetupWizard.h | 39 | ||||
-rw-r--r-- | application/setupwizard/SetupWizard.ui | 255 |
6 files changed, 338 insertions, 0 deletions
diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt index 2cf6b3b5..2198e815 100644 --- a/application/CMakeLists.txt +++ b/application/CMakeLists.txt @@ -111,6 +111,10 @@ SET(MULTIMC_SOURCES InstanceWindow.h InstanceWindow.cpp + # GUI - setup wizard + setupwizard/SetupWizard.h + setupwizard/SetupWizard.cpp + # GUI - themes themes/FusionTheme.cpp themes/FusionTheme.h @@ -298,6 +302,9 @@ SET(MULTIMC_UIS # Widgets/other widgets/MCModInfoFrame.ui + + # The Setup Wizard + setupwizard/SetupWizard.ui ) set(MULTIMC_QRCS diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp index 49c1d2c4..f176a64b 100644 --- a/application/MultiMC.cpp +++ b/application/MultiMC.cpp @@ -17,6 +17,8 @@ #include "themes/BrightTheme.h" #include "themes/CustomTheme.h" +#include "setupwizard/SetupWizard.h" + #include <iostream> #include <QDir> #include <QFileInfo> @@ -318,6 +320,13 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv) initAnalytics(); + if(SetupWizard::isRequired()) + { + m_setupWizard = new SetupWizard(nullptr); + int result = m_setupWizard->exec(); + qDebug() << "Wizard result =" << result; + } + if(!m_instanceIdToLaunch.isEmpty()) { auto inst = instances()->getInstanceById(m_instanceIdToLaunch); diff --git a/application/MultiMC.h b/application/MultiMC.h index 9c9d0c8a..f166a30a 100644 --- a/application/MultiMC.h +++ b/application/MultiMC.h @@ -14,6 +14,7 @@ class LaunchController; class LocalPeer; class InstanceWindow; class MainWindow; +class SetupWizard; class FolderInstanceProvider; class GenericPageProvider; class QFile; @@ -225,6 +226,7 @@ private: LocalPeer * m_peerInstance = nullptr; GAnalytics * m_analytics = nullptr; + SetupWizard * m_setupWizard = nullptr; public: QString m_instanceIdToLaunch; bool m_liveCheck = false; diff --git a/application/setupwizard/SetupWizard.cpp b/application/setupwizard/SetupWizard.cpp new file mode 100644 index 00000000..b51b34a7 --- /dev/null +++ b/application/setupwizard/SetupWizard.cpp @@ -0,0 +1,26 @@ +#include "SetupWizard.h" + +enum Page +{ + Language, + Java, + Analytics, + Themes, + Accounts +}; +#include "ui_SetupWizard.h" + + +SetupWizard::SetupWizard(QWidget *parent):QWizard(parent), ui(new Ui::SetupWizard) +{ + ui->setupUi(this); +} + +SetupWizard::~SetupWizard() +{ +} + +bool SetupWizard::isRequired() +{ + return true; +} diff --git a/application/setupwizard/SetupWizard.h b/application/setupwizard/SetupWizard.h new file mode 100644 index 00000000..5dbe90a9 --- /dev/null +++ b/application/setupwizard/SetupWizard.h @@ -0,0 +1,39 @@ +/* Copyright 2016 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 <QWizard> + +namespace Ui +{ +class SetupWizard; +} + +class SetupWizard : public QWizard +{ + Q_OBJECT + +public: /* con/destructors */ + explicit SetupWizard(QWidget *parent = 0); + virtual ~SetupWizard(); + +public: /* methods */ +static bool isRequired(); + +private: /* data */ + Ui::SetupWizard *ui = nullptr; +}; + diff --git a/application/setupwizard/SetupWizard.ui b/application/setupwizard/SetupWizard.ui new file mode 100644 index 00000000..5a4eb558 --- /dev/null +++ b/application/setupwizard/SetupWizard.ui @@ -0,0 +1,255 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>SetupWizard</class> + <widget class="QWizard" name="SetupWizard"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>630</width> + <height>667</height> + </rect> + </property> + <property name="windowTitle"> + <string>MultiMC Quick Setup</string> + </property> + <property name="options"> + <set>QWizard::NoCancelButtonOnLastPage</set> + </property> + <widget class="QWizardPage" name="welcomePage"> + <property name="title"> + <string>Welcome</string> + </property> + <property name="subTitle"> + <string>Hello and welcome the quick setup wizard!</string> + </property> + <attribute name="pageId"> + <string notr="true">Page::Language</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string><html><head/><body><p>Choose your <s>adventure</s> language:</p></body></html></string> + </property> + </widget> + </item> + <item> + <widget class="QListView" name="languageView"/> + </item> + </layout> + </widget> + <widget class="QWizardPage" name="javaPage"> + <property name="title"> + <string>Java</string> + </property> + <property name="subTitle"> + <string>Your java settings need attention!</string> + </property> + <attribute name="pageId"> + <string notr="true">Page::Java</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QGroupBox" name="javaSettingsGroupBox"> + <property name="title"> + <string>Java Runtime</string> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="4" column="1"> + <widget class="QTreeView" name="javaView"/> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="memoryGroupBox"> + <property name="title"> + <string>Memory</string> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="1"> + <widget class="QSpinBox" name="maxMemSpinBox"> + <property name="toolTip"> + <string>The maximum amount of memory Minecraft is allowed to use.</string> + </property> + <property name="suffix"> + <string notr="true"> MB</string> + </property> + <property name="minimum"> + <number>512</number> + </property> + <property name="maximum"> + <number>65536</number> + </property> + <property name="singleStep"> + <number>128</number> + </property> + <property name="value"> + <number>1024</number> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="labelMinMem"> + <property name="text"> + <string>Minimum memory allocation:</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="labelMaxMem"> + <property name="text"> + <string>Maximum memory allocation:</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="labelPermGen"> + <property name="text"> + <string notr="true">PermGen:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QSpinBox" name="permGenSpinBox"> + <property name="toolTip"> + <string>The amount of memory available to store loaded Java classes.</string> + </property> + <property name="suffix"> + <string notr="true"> MB</string> + </property> + <property name="minimum"> + <number>64</number> + </property> + <property name="maximum"> + <number>999999999</number> + </property> + <property name="singleStep"> + <number>8</number> + </property> + <property name="value"> + <number>64</number> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="minMemSpinBox"> + <property name="toolTip"> + <string>The amount of memory Minecraft is started with.</string> + </property> + <property name="suffix"> + <string notr="true"> MB</string> + </property> + <property name="minimum"> + <number>256</number> + </property> + <property name="maximum"> + <number>65536</number> + </property> + <property name="singleStep"> + <number>128</number> + </property> + <property name="value"> + <number>256</number> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QWizardPage" name="analyticsPage"> + <property name="title"> + <string>Analytics</string> + </property> + <property name="subTitle"> + <string>We track some anonymous statistics about users.</string> + </property> + <attribute name="pageId"> + <string notr="true">Page::Analytics</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string><html><head/><body> +<p>MultiMC sends anonymous usage statistics on every start of the application. This helps us decide what platforms and issues to focus on.</p> +<p>The data is processed by Google Analytics, see their <a href="https://support.google.com/analytics/answer/6004245?hl=en">article on the matter</a>.</p> +<p>The following data is collected:</p> +<ul> +<li>A random unique ID of the MultiMC installation.<br />It is stored in the application settings (multimc.cfg).</li> +<li>Anonymized IP address.<br />Last octet is set to 0 by Google and not stored.</li> +<li>MultiMC version.</li> +<li>Operating system name, version and architecture.</li> +<li>CPU architecture (kernel architecture on linux).</li> +<li>Size of system memory.</li> +<li>Java version, architecture and memory settings.</li> +</ul> +<p>The analytics will activate on next start, unless you disable them in the settings.</p> +<p>If we change the tracked information, analytics won't be active for the first run and you will see this page again.</p> +</body></html></string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + <property name="openExternalLinks"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWizardPage" name="themePage"> + <property name="title"> + <string>Themes and icons</string> + </property> + <property name="subTitle"> + <string>Change how things look.</string> + </property> + <attribute name="pageId"> + <string notr="true">Page::Themes</string> + </attribute> + <widget class="QLabel" name="label_2"> + <property name="geometry"> + <rect> + <x>230</x> + <y>70</y> + <width>151</width> + <height>71</height> + </rect> + </property> + <property name="text"> + <string>Put stuff here.</string> + </property> + </widget> + </widget> + <widget class="QWizardPage" name="accountsPage"> + <property name="title"> + <string>Minecraft accounts</string> + </property> + <property name="subTitle"> + <string>Add your account - or accounts.</string> + </property> + <attribute name="pageId"> + <string notr="true">Page::Accounts</string> + </attribute> + <widget class="QLabel" name="label_3"> + <property name="geometry"> + <rect> + <x>60</x> + <y>60</y> + <width>311</width> + <height>131</height> + </rect> + </property> + <property name="text"> + <string>Put existing accounts page here.</string> + </property> + </widget> + </widget> + </widget> + <resources/> + <connections/> +</ui> |