Improve wizzard page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
fa68428a90
commit
c85294af9d
@ -67,8 +67,10 @@
|
|||||||
#include "ui/pages/global/MinecraftPage.h"
|
#include "ui/pages/global/MinecraftPage.h"
|
||||||
#include "ui/pages/global/ProxyPage.h"
|
#include "ui/pages/global/ProxyPage.h"
|
||||||
|
|
||||||
|
#include "ui/setupwizard/AutoJavaWizardPage.h"
|
||||||
#include "ui/setupwizard/JavaWizardPage.h"
|
#include "ui/setupwizard/JavaWizardPage.h"
|
||||||
#include "ui/setupwizard/LanguageWizardPage.h"
|
#include "ui/setupwizard/LanguageWizardPage.h"
|
||||||
|
#include "ui/setupwizard/LoginWizardPage.h"
|
||||||
#include "ui/setupwizard/PasteWizardPage.h"
|
#include "ui/setupwizard/PasteWizardPage.h"
|
||||||
#include "ui/setupwizard/SetupWizard.h"
|
#include "ui/setupwizard/SetupWizard.h"
|
||||||
#include "ui/setupwizard/ThemeWizardPage.h"
|
#include "ui/setupwizard/ThemeWizardPage.h"
|
||||||
@ -650,6 +652,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
|
|||||||
auto defaultEnableAutoJava = m_settings->get("JavaPath").toString().isEmpty();
|
auto defaultEnableAutoJava = m_settings->get("JavaPath").toString().isEmpty();
|
||||||
m_settings->registerSetting("AutomaticJavaSwitch", defaultEnableAutoJava);
|
m_settings->registerSetting("AutomaticJavaSwitch", defaultEnableAutoJava);
|
||||||
m_settings->registerSetting("AutomaticJavaDownload", defaultEnableAutoJava);
|
m_settings->registerSetting("AutomaticJavaDownload", defaultEnableAutoJava);
|
||||||
|
m_settings->registerSetting("UserAskedAboutAutomaticJavaDownload", false);
|
||||||
|
|
||||||
// Legacy settings
|
// Legacy settings
|
||||||
m_settings->registerSetting("OnlineFixes", false);
|
m_settings->registerSetting("OnlineFixes", false);
|
||||||
@ -1077,13 +1080,15 @@ bool Application::createSetupWizard()
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}();
|
}();
|
||||||
|
bool askjava = BuildConfig.JAVA_DOWNLOADER_ENABLED && !javaRequired && !m_settings->get("AutomaticJavaDownload").toBool() &&
|
||||||
|
!m_settings->get("AutomaticJavaSwitch").toBool() && !m_settings->get("UserAskedAboutAutomaticJavaDownload").toBool();
|
||||||
bool languageRequired = settings()->get("Language").toString().isEmpty();
|
bool languageRequired = settings()->get("Language").toString().isEmpty();
|
||||||
bool pasteInterventionRequired = settings()->get("PastebinURL") != "";
|
bool pasteInterventionRequired = settings()->get("PastebinURL") != "";
|
||||||
bool validWidgets = m_themeManager->isValidApplicationTheme(settings()->get("ApplicationTheme").toString());
|
bool validWidgets = m_themeManager->isValidApplicationTheme(settings()->get("ApplicationTheme").toString());
|
||||||
bool validIcons = m_themeManager->isValidIconTheme(settings()->get("IconTheme").toString());
|
bool validIcons = m_themeManager->isValidIconTheme(settings()->get("IconTheme").toString());
|
||||||
|
bool login = !m_accounts->anyAccountIsValid() && capabilities() & Application::SupportsMSA;
|
||||||
bool themeInterventionRequired = !validWidgets || !validIcons;
|
bool themeInterventionRequired = !validWidgets || !validIcons;
|
||||||
bool wizardRequired = javaRequired || languageRequired || pasteInterventionRequired || themeInterventionRequired;
|
bool wizardRequired = javaRequired || languageRequired || pasteInterventionRequired || themeInterventionRequired || askjava || login;
|
||||||
|
|
||||||
if (wizardRequired) {
|
if (wizardRequired) {
|
||||||
// set default theme after going into theme wizard
|
// set default theme after going into theme wizard
|
||||||
if (!validIcons)
|
if (!validIcons)
|
||||||
@ -1100,6 +1105,8 @@ bool Application::createSetupWizard()
|
|||||||
|
|
||||||
if (javaRequired) {
|
if (javaRequired) {
|
||||||
m_setupWizard->addPage(new JavaWizardPage(m_setupWizard));
|
m_setupWizard->addPage(new JavaWizardPage(m_setupWizard));
|
||||||
|
} else if (askjava) {
|
||||||
|
m_setupWizard->addPage(new AutoJavaWizardPage(m_setupWizard));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pasteInterventionRequired) {
|
if (pasteInterventionRequired) {
|
||||||
@ -1110,11 +1117,14 @@ bool Application::createSetupWizard()
|
|||||||
m_setupWizard->addPage(new ThemeWizardPage(m_setupWizard));
|
m_setupWizard->addPage(new ThemeWizardPage(m_setupWizard));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (login) {
|
||||||
|
m_setupWizard->addPage(new LoginWizardPage(m_setupWizard));
|
||||||
|
}
|
||||||
connect(m_setupWizard, &QDialog::finished, this, &Application::setupWizardFinished);
|
connect(m_setupWizard, &QDialog::finished, this, &Application::setupWizardFinished);
|
||||||
m_setupWizard->show();
|
m_setupWizard->show();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
|
return wizardRequired || login;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Application::updaterEnabled()
|
bool Application::updaterEnabled()
|
||||||
@ -1259,16 +1269,23 @@ Application::~Application()
|
|||||||
|
|
||||||
void Application::messageReceived(const QByteArray& message)
|
void Application::messageReceived(const QByteArray& message)
|
||||||
{
|
{
|
||||||
if (status() != Initialized) {
|
|
||||||
qDebug() << "Received message" << message << "while still initializing. It will be ignored.";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ApplicationMessage received;
|
ApplicationMessage received;
|
||||||
received.parse(message);
|
received.parse(message);
|
||||||
|
|
||||||
auto& command = received.command;
|
auto& command = received.command;
|
||||||
|
|
||||||
|
if (status() != Initialized) {
|
||||||
|
bool isLoginAtempt = false;
|
||||||
|
if (command == "import") {
|
||||||
|
QString url = received.args["url"];
|
||||||
|
isLoginAtempt = !url.isEmpty() && normalizeImportUrl(url).scheme() == BuildConfig.LAUNCHER_APP_BINARY_NAME;
|
||||||
|
}
|
||||||
|
if (!isLoginAtempt) {
|
||||||
|
qDebug() << "Received message" << message << "while still initializing. It will be ignored.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (command == "activate") {
|
if (command == "activate") {
|
||||||
showMainWindow();
|
showMainWindow();
|
||||||
} else if (command == "import") {
|
} else if (command == "import") {
|
||||||
|
@ -842,6 +842,10 @@ SET(LAUNCHER_SOURCES
|
|||||||
ui/setupwizard/PasteWizardPage.h
|
ui/setupwizard/PasteWizardPage.h
|
||||||
ui/setupwizard/ThemeWizardPage.cpp
|
ui/setupwizard/ThemeWizardPage.cpp
|
||||||
ui/setupwizard/ThemeWizardPage.h
|
ui/setupwizard/ThemeWizardPage.h
|
||||||
|
ui/setupwizard/AutoJavaWizardPage.cpp
|
||||||
|
ui/setupwizard/AutoJavaWizardPage.h
|
||||||
|
ui/setupwizard/LoginWizardPage.cpp
|
||||||
|
ui/setupwizard/LoginWizardPage.h
|
||||||
|
|
||||||
# GUI - themes
|
# GUI - themes
|
||||||
ui/themes/FusionTheme.cpp
|
ui/themes/FusionTheme.cpp
|
||||||
@ -1154,6 +1158,8 @@ endif()
|
|||||||
qt_wrap_ui(LAUNCHER_UI
|
qt_wrap_ui(LAUNCHER_UI
|
||||||
ui/MainWindow.ui
|
ui/MainWindow.ui
|
||||||
ui/setupwizard/PasteWizardPage.ui
|
ui/setupwizard/PasteWizardPage.ui
|
||||||
|
ui/setupwizard/AutoJavaWizardPage.ui
|
||||||
|
ui/setupwizard/LoginWizardPage.ui
|
||||||
ui/setupwizard/ThemeWizardPage.ui
|
ui/setupwizard/ThemeWizardPage.ui
|
||||||
ui/pages/global/AccountListPage.ui
|
ui/pages/global/AccountListPage.ui
|
||||||
ui/pages/global/JavaPage.ui
|
ui/pages/global/JavaPage.ui
|
||||||
|
33
launcher/ui/setupwizard/AutoJavaWizardPage.cpp
Normal file
33
launcher/ui/setupwizard/AutoJavaWizardPage.cpp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#include "AutoJavaWizardPage.h"
|
||||||
|
#include "ui_AutoJavaWizardPage.h"
|
||||||
|
|
||||||
|
#include "Application.h"
|
||||||
|
|
||||||
|
AutoJavaWizardPage::AutoJavaWizardPage(QWidget* parent) : BaseWizardPage(parent), ui(new Ui::AutoJavaWizardPage)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
AutoJavaWizardPage::~AutoJavaWizardPage()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoJavaWizardPage::initializePage() {}
|
||||||
|
|
||||||
|
bool AutoJavaWizardPage::validatePage()
|
||||||
|
{
|
||||||
|
auto s = APPLICATION->settings();
|
||||||
|
|
||||||
|
if (!ui->previousSettingsRadioButton->isChecked()) {
|
||||||
|
s->set("AutomaticJavaSwitch", true);
|
||||||
|
s->set("AutomaticJavaDownload", true);
|
||||||
|
}
|
||||||
|
s->set("UserAskedAboutAutomaticJavaDownload", true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoJavaWizardPage::retranslate()
|
||||||
|
{
|
||||||
|
ui->retranslateUi(this);
|
||||||
|
}
|
22
launcher/ui/setupwizard/AutoJavaWizardPage.h
Normal file
22
launcher/ui/setupwizard/AutoJavaWizardPage.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <QWidget>
|
||||||
|
#include "BaseWizardPage.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class AutoJavaWizardPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AutoJavaWizardPage : public BaseWizardPage {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AutoJavaWizardPage(QWidget* parent = nullptr);
|
||||||
|
~AutoJavaWizardPage();
|
||||||
|
|
||||||
|
void initializePage() override;
|
||||||
|
bool validatePage() override;
|
||||||
|
void retranslate() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::AutoJavaWizardPage* ui;
|
||||||
|
};
|
93
launcher/ui/setupwizard/AutoJavaWizardPage.ui
Normal file
93
launcher/ui/setupwizard/AutoJavaWizardPage.ui
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>AutoJavaWizardPage</class>
|
||||||
|
<widget class="QWidget" name="AutoJavaWizardPage">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" font-size:14pt; font-weight:600;">New Feature Alert!</span></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="textFormat">
|
||||||
|
<enum>Qt::RichText</enum>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>We've added a feature to automatically download the correct Java version for each version of Minecraft(this can be changed in the Java Settings). Would you like to enable or disable this feature?</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="line">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="defaultSettingsRadioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable Auto-Download</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">buttonGroup</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="previousSettingsRadioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Disable Auto-Download</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">buttonGroup</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>156</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
<buttongroups>
|
||||||
|
<buttongroup name="buttonGroup"/>
|
||||||
|
</buttongroups>
|
||||||
|
</ui>
|
@ -55,6 +55,7 @@ bool JavaWizardPage::validatePage()
|
|||||||
auto result = m_java_widget->validate();
|
auto result = m_java_widget->validate();
|
||||||
settings->set("AutomaticJavaSwitch", m_java_widget->autoDetectJava());
|
settings->set("AutomaticJavaSwitch", m_java_widget->autoDetectJava());
|
||||||
settings->set("AutomaticJavaDownload", m_java_widget->autoDownloadJava());
|
settings->set("AutomaticJavaDownload", m_java_widget->autoDownloadJava());
|
||||||
|
settings->set("UserAskedAboutAutomaticJavaDownload", true);
|
||||||
switch (result) {
|
switch (result) {
|
||||||
default:
|
default:
|
||||||
case JavaSettingsWidget::ValidationStatus::Bad: {
|
case JavaSettingsWidget::ValidationStatus::Bad: {
|
||||||
@ -82,7 +83,6 @@ void JavaWizardPage::retranslate()
|
|||||||
{
|
{
|
||||||
setTitle(tr("Java"));
|
setTitle(tr("Java"));
|
||||||
setSubTitle(
|
setSubTitle(
|
||||||
tr("You do not have a working Java set up yet or it went missing.\n"
|
tr("Please select how much memory to allocate to instances and if Prism Launcher should manage java automatically or manually."));
|
||||||
"Please select one of the following or browse for a Java executable."));
|
|
||||||
m_java_widget->retranslate();
|
m_java_widget->retranslate();
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ class JavaWizardPage : public BaseWizardPage {
|
|||||||
public:
|
public:
|
||||||
explicit JavaWizardPage(QWidget* parent = Q_NULLPTR);
|
explicit JavaWizardPage(QWidget* parent = Q_NULLPTR);
|
||||||
|
|
||||||
virtual ~JavaWizardPage() {};
|
virtual ~JavaWizardPage() = default;
|
||||||
|
|
||||||
bool wantsRefreshButton() override;
|
bool wantsRefreshButton() override;
|
||||||
void refresh() override;
|
void refresh() override;
|
||||||
|
45
launcher/ui/setupwizard/LoginWizardPage.cpp
Normal file
45
launcher/ui/setupwizard/LoginWizardPage.cpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include "LoginWizardPage.h"
|
||||||
|
#include "minecraft/auth/AccountList.h"
|
||||||
|
#include "ui/dialogs/MSALoginDialog.h"
|
||||||
|
#include "ui_LoginWizardPage.h"
|
||||||
|
|
||||||
|
#include "Application.h"
|
||||||
|
|
||||||
|
LoginWizardPage::LoginWizardPage(QWidget* parent) : BaseWizardPage(parent), ui(new Ui::LoginWizardPage)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
LoginWizardPage::~LoginWizardPage()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoginWizardPage::initializePage() {}
|
||||||
|
|
||||||
|
bool LoginWizardPage::validatePage()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoginWizardPage::retranslate()
|
||||||
|
{
|
||||||
|
ui->retranslateUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoginWizardPage::on_pushButton_clicked()
|
||||||
|
{
|
||||||
|
wizard()->hide();
|
||||||
|
auto account = MSALoginDialog::newAccount(nullptr);
|
||||||
|
wizard()->show();
|
||||||
|
if (account) {
|
||||||
|
APPLICATION->accounts()->addAccount(account);
|
||||||
|
APPLICATION->accounts()->setDefaultAccount(account);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wizard()->currentId() == wizard()->pageIds().last()) {
|
||||||
|
wizard()->accept();
|
||||||
|
} else {
|
||||||
|
wizard()->next();
|
||||||
|
}
|
||||||
|
}
|
24
launcher/ui/setupwizard/LoginWizardPage.h
Normal file
24
launcher/ui/setupwizard/LoginWizardPage.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <QWidget>
|
||||||
|
#include "BaseWizardPage.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class LoginWizardPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoginWizardPage : public BaseWizardPage {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit LoginWizardPage(QWidget* parent = nullptr);
|
||||||
|
~LoginWizardPage();
|
||||||
|
|
||||||
|
void initializePage() override;
|
||||||
|
bool validatePage() override;
|
||||||
|
void retranslate() override;
|
||||||
|
private slots:
|
||||||
|
void on_pushButton_clicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::LoginWizardPage* ui;
|
||||||
|
};
|
74
launcher/ui/setupwizard/LoginWizardPage.ui
Normal file
74
launcher/ui/setupwizard/LoginWizardPage.ui
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>LoginWizardPage</class>
|
||||||
|
<widget class="QWidget" name="LoginWizardPage">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" font-size:14pt; font-weight:600;">Add Microsoft account</span></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="textFormat">
|
||||||
|
<enum>Qt::RichText</enum>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>In order to play Minecraft, you must have at least one Microsoft account logged in. Do you want to log in now?</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="line">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Add Microsoft account</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>156</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
<buttongroups>
|
||||||
|
<buttongroup name="buttonGroup"/>
|
||||||
|
</buttongroups>
|
||||||
|
</ui>
|
@ -3,9 +3,11 @@
|
|||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
#include <QLayoutItem>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QSizePolicy>
|
||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
@ -34,11 +36,13 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent)
|
|||||||
goodIcon = APPLICATION->getThemedIcon("status-good");
|
goodIcon = APPLICATION->getThemedIcon("status-good");
|
||||||
yellowIcon = APPLICATION->getThemedIcon("status-yellow");
|
yellowIcon = APPLICATION->getThemedIcon("status-yellow");
|
||||||
badIcon = APPLICATION->getThemedIcon("status-bad");
|
badIcon = APPLICATION->getThemedIcon("status-bad");
|
||||||
|
m_memoryTimer = new QTimer(this);
|
||||||
setupUi();
|
setupUi();
|
||||||
|
|
||||||
connect(m_minMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryValueChanged(int)));
|
connect(m_minMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int)));
|
||||||
connect(m_maxMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryValueChanged(int)));
|
connect(m_maxMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int)));
|
||||||
connect(m_permGenSpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryValueChanged(int)));
|
connect(m_permGenSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int)));
|
||||||
|
connect(m_memoryTimer, &QTimer::timeout, this, &JavaSettingsWidget::memoryValueChanged);
|
||||||
connect(m_versionWidget, &VersionSelectWidget::selectedVersionChanged, this, &JavaSettingsWidget::javaVersionSelected);
|
connect(m_versionWidget, &VersionSelectWidget::selectedVersionChanged, this, &JavaSettingsWidget::javaVersionSelected);
|
||||||
connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaBrowseBtn_clicked);
|
connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaBrowseBtn_clicked);
|
||||||
connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited);
|
connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited);
|
||||||
@ -55,7 +59,6 @@ void JavaSettingsWidget::setupUi()
|
|||||||
m_verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
|
m_verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
|
||||||
|
|
||||||
m_versionWidget = new VersionSelectWidget(this);
|
m_versionWidget = new VersionSelectWidget(this);
|
||||||
m_verticalLayout->addWidget(m_versionWidget);
|
|
||||||
|
|
||||||
m_horizontalLayout = new QHBoxLayout();
|
m_horizontalLayout = new QHBoxLayout();
|
||||||
m_horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
|
m_horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
|
||||||
@ -73,8 +76,6 @@ void JavaSettingsWidget::setupUi()
|
|||||||
m_javaStatusBtn->setIcon(yellowIcon);
|
m_javaStatusBtn->setIcon(yellowIcon);
|
||||||
m_horizontalLayout->addWidget(m_javaStatusBtn);
|
m_horizontalLayout->addWidget(m_javaStatusBtn);
|
||||||
|
|
||||||
m_verticalLayout->addLayout(m_horizontalLayout);
|
|
||||||
|
|
||||||
m_memoryGroupBox = new QGroupBox(this);
|
m_memoryGroupBox = new QGroupBox(this);
|
||||||
m_memoryGroupBox->setObjectName(QStringLiteral("memoryGroupBox"));
|
m_memoryGroupBox->setObjectName(QStringLiteral("memoryGroupBox"));
|
||||||
m_gridLayout_2 = new QGridLayout(m_memoryGroupBox);
|
m_gridLayout_2 = new QGridLayout(m_memoryGroupBox);
|
||||||
@ -136,8 +137,6 @@ void JavaSettingsWidget::setupUi()
|
|||||||
m_horizontalBtnLayout->addWidget(m_javaDownloadBtn);
|
m_horizontalBtnLayout->addWidget(m_javaDownloadBtn);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_verticalLayout->addLayout(m_horizontalBtnLayout);
|
|
||||||
|
|
||||||
m_autoJavaGroupBox = new QGroupBox(this);
|
m_autoJavaGroupBox = new QGroupBox(this);
|
||||||
m_autoJavaGroupBox->setObjectName(QStringLiteral("autoJavaGroupBox"));
|
m_autoJavaGroupBox->setObjectName(QStringLiteral("autoJavaGroupBox"));
|
||||||
m_veriticalJavaLayout = new QVBoxLayout(m_autoJavaGroupBox);
|
m_veriticalJavaLayout = new QVBoxLayout(m_autoJavaGroupBox);
|
||||||
@ -145,21 +144,42 @@ void JavaSettingsWidget::setupUi()
|
|||||||
|
|
||||||
m_autodetectJavaCheckBox = new QCheckBox(m_autoJavaGroupBox);
|
m_autodetectJavaCheckBox = new QCheckBox(m_autoJavaGroupBox);
|
||||||
m_autodetectJavaCheckBox->setObjectName("autodetectJavaCheckBox");
|
m_autodetectJavaCheckBox->setObjectName("autodetectJavaCheckBox");
|
||||||
|
m_autodetectJavaCheckBox->setChecked(true);
|
||||||
m_veriticalJavaLayout->addWidget(m_autodetectJavaCheckBox);
|
m_veriticalJavaLayout->addWidget(m_autodetectJavaCheckBox);
|
||||||
|
|
||||||
if (BuildConfig.JAVA_DOWNLOADER_ENABLED) {
|
if (BuildConfig.JAVA_DOWNLOADER_ENABLED) {
|
||||||
m_autodownloadCheckBox = new QCheckBox(m_autoJavaGroupBox);
|
m_autodownloadCheckBox = new QCheckBox(m_autoJavaGroupBox);
|
||||||
m_autodownloadCheckBox->setObjectName("autodownloadCheckBox");
|
m_autodownloadCheckBox->setObjectName("autodownloadCheckBox");
|
||||||
m_autodownloadCheckBox->setEnabled(false);
|
m_autodownloadCheckBox->setEnabled(m_autodetectJavaCheckBox->isChecked());
|
||||||
m_veriticalJavaLayout->addWidget(m_autodownloadCheckBox);
|
m_veriticalJavaLayout->addWidget(m_autodownloadCheckBox);
|
||||||
connect(m_autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] {
|
connect(m_autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] {
|
||||||
m_autodownloadCheckBox->setEnabled(m_autodetectJavaCheckBox->isChecked());
|
m_autodownloadCheckBox->setEnabled(m_autodetectJavaCheckBox->isChecked());
|
||||||
if (!m_autodetectJavaCheckBox->isChecked())
|
if (!m_autodetectJavaCheckBox->isChecked())
|
||||||
m_autodownloadCheckBox->setChecked(false);
|
m_autodownloadCheckBox->setChecked(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(m_autodownloadCheckBox, &QCheckBox::stateChanged, this, [this] {
|
||||||
|
auto isChecked = m_autodownloadCheckBox->isChecked();
|
||||||
|
m_versionWidget->setVisible(!isChecked);
|
||||||
|
m_javaStatusBtn->setVisible(!isChecked);
|
||||||
|
m_javaBrowseBtn->setVisible(!isChecked);
|
||||||
|
m_javaPathTextBox->setVisible(!isChecked);
|
||||||
|
m_javaDownloadBtn->setVisible(!isChecked);
|
||||||
|
if (!isChecked) {
|
||||||
|
m_verticalLayout->removeItem(m_verticalSpacer);
|
||||||
|
} else {
|
||||||
|
m_verticalLayout->addSpacerItem(m_verticalSpacer);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
m_verticalLayout->addWidget(m_autoJavaGroupBox);
|
m_verticalLayout->addWidget(m_autoJavaGroupBox);
|
||||||
|
|
||||||
|
m_verticalLayout->addLayout(m_horizontalBtnLayout);
|
||||||
|
|
||||||
|
m_verticalLayout->addWidget(m_versionWidget);
|
||||||
|
m_verticalLayout->addLayout(m_horizontalLayout);
|
||||||
|
m_verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
||||||
|
|
||||||
retranslate();
|
retranslate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,23 +197,16 @@ void JavaSettingsWidget::initialize()
|
|||||||
m_maxMemSpinBox->setValue(observedMaxMemory);
|
m_maxMemSpinBox->setValue(observedMaxMemory);
|
||||||
m_permGenSpinBox->setValue(observedPermGenMemory);
|
m_permGenSpinBox->setValue(observedPermGenMemory);
|
||||||
updateThresholds();
|
updateThresholds();
|
||||||
|
|
||||||
if (BuildConfig.JAVA_DOWNLOADER_ENABLED) {
|
if (BuildConfig.JAVA_DOWNLOADER_ENABLED) {
|
||||||
auto button =
|
m_autodownloadCheckBox->setChecked(true);
|
||||||
CustomMessageBox::selectable(this, tr("Automatic Java Download"),
|
|
||||||
tr("%1 can automatically download the correct Java version for each version of Minecraft..\n"
|
|
||||||
"Do you want to enable Java auto-download?\n")
|
|
||||||
.arg(BuildConfig.LAUNCHER_DISPLAYNAME),
|
|
||||||
QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)
|
|
||||||
->exec();
|
|
||||||
auto checked = button == QMessageBox::Yes;
|
|
||||||
m_autodetectJavaCheckBox->setChecked(checked);
|
|
||||||
m_autodownloadCheckBox->setChecked(checked);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JavaSettingsWidget::refresh()
|
void JavaSettingsWidget::refresh()
|
||||||
{
|
{
|
||||||
|
if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_autodownloadCheckBox->isChecked()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (JavaUtils::getJavaCheckPath().isEmpty()) {
|
if (JavaUtils::getJavaCheckPath().isEmpty()) {
|
||||||
JavaCommon::javaCheckNotFound(this);
|
JavaCommon::javaCheckNotFound(this);
|
||||||
return;
|
return;
|
||||||
@ -297,20 +310,21 @@ int JavaSettingsWidget::permGenSize() const
|
|||||||
return m_permGenSpinBox->value();
|
return m_permGenSpinBox->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
void JavaSettingsWidget::memoryValueChanged(int)
|
void JavaSettingsWidget::memoryValueChanged()
|
||||||
{
|
{
|
||||||
bool actuallyChanged = false;
|
bool actuallyChanged = false;
|
||||||
unsigned int min = m_minMemSpinBox->value();
|
unsigned int min = m_minMemSpinBox->value();
|
||||||
unsigned int max = m_maxMemSpinBox->value();
|
unsigned int max = m_maxMemSpinBox->value();
|
||||||
unsigned int permgen = m_permGenSpinBox->value();
|
unsigned int permgen = m_permGenSpinBox->value();
|
||||||
QObject* obj = sender();
|
if (min != observedMinMemory) {
|
||||||
if (obj == m_minMemSpinBox && min != observedMinMemory) {
|
|
||||||
observedMinMemory = min;
|
observedMinMemory = min;
|
||||||
actuallyChanged = true;
|
actuallyChanged = true;
|
||||||
} else if (obj == m_maxMemSpinBox && max != observedMaxMemory) {
|
}
|
||||||
|
if (max != observedMaxMemory) {
|
||||||
observedMaxMemory = max;
|
observedMaxMemory = max;
|
||||||
actuallyChanged = true;
|
actuallyChanged = true;
|
||||||
} else if (obj == m_permGenSpinBox && permgen != observedPermGenMemory) {
|
}
|
||||||
|
if (permgen != observedPermGenMemory) {
|
||||||
observedPermGenMemory = permgen;
|
observedPermGenMemory = permgen;
|
||||||
actuallyChanged = true;
|
actuallyChanged = true;
|
||||||
}
|
}
|
||||||
@ -505,6 +519,9 @@ void JavaSettingsWidget::updateThresholds()
|
|||||||
} else if (observedMaxMemory < observedMinMemory) {
|
} else if (observedMaxMemory < observedMinMemory) {
|
||||||
iconName = "status-yellow";
|
iconName = "status-yellow";
|
||||||
m_labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value"));
|
m_labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value"));
|
||||||
|
} else if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_autodownloadCheckBox->isChecked()) {
|
||||||
|
iconName = "status-good";
|
||||||
|
m_labelMaxMemIcon->setToolTip("");
|
||||||
} else if (observedMaxMemory > 2048 && !m_result.is_64bit) {
|
} else if (observedMaxMemory > 2048 && !m_result.is_64bit) {
|
||||||
iconName = "status-bad";
|
iconName = "status-bad";
|
||||||
m_labelMaxMemIcon->setToolTip(tr("You are exceeding the maximum allocation supported by 32-bit installations of Java."));
|
m_labelMaxMemIcon->setToolTip(tr("You are exceeding the maximum allocation supported by 32-bit installations of Java."));
|
||||||
@ -530,3 +547,13 @@ bool JavaSettingsWidget::autoDetectJava() const
|
|||||||
{
|
{
|
||||||
return m_autodetectJavaCheckBox->isChecked();
|
return m_autodetectJavaCheckBox->isChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JavaSettingsWidget::onSpinBoxValueChanged(int)
|
||||||
|
{
|
||||||
|
m_memoryTimer->start(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
JavaSettingsWidget::~JavaSettingsWidget()
|
||||||
|
{
|
||||||
|
delete m_verticalSpacer;
|
||||||
|
};
|
@ -17,6 +17,7 @@ class QGroupBox;
|
|||||||
class QGridLayout;
|
class QGridLayout;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
class QToolButton;
|
class QToolButton;
|
||||||
|
class QSpacerItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is a widget for all the Java settings dialogs and pages.
|
* This is a widget for all the Java settings dialogs and pages.
|
||||||
@ -26,7 +27,7 @@ class JavaSettingsWidget : public QWidget {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit JavaSettingsWidget(QWidget* parent);
|
explicit JavaSettingsWidget(QWidget* parent);
|
||||||
virtual ~JavaSettingsWidget() = default;
|
virtual ~JavaSettingsWidget();
|
||||||
|
|
||||||
enum class JavaStatus { NotSet, Pending, Good, DoesNotExist, DoesNotStart, ReturnedInvalidData } javaStatus = JavaStatus::NotSet;
|
enum class JavaStatus { NotSet, Pending, Good, DoesNotExist, DoesNotStart, ReturnedInvalidData } javaStatus = JavaStatus::NotSet;
|
||||||
|
|
||||||
@ -48,7 +49,8 @@ class JavaSettingsWidget : public QWidget {
|
|||||||
void updateThresholds();
|
void updateThresholds();
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void memoryValueChanged(int);
|
void onSpinBoxValueChanged(int);
|
||||||
|
void memoryValueChanged();
|
||||||
void javaPathEdited(const QString& path);
|
void javaPathEdited(const QString& path);
|
||||||
void javaVersionSelected(BaseVersion::Ptr version);
|
void javaVersionSelected(BaseVersion::Ptr version);
|
||||||
void on_javaBrowseBtn_clicked();
|
void on_javaBrowseBtn_clicked();
|
||||||
@ -65,6 +67,7 @@ class JavaSettingsWidget : public QWidget {
|
|||||||
private: /* data */
|
private: /* data */
|
||||||
VersionSelectWidget* m_versionWidget = nullptr;
|
VersionSelectWidget* m_versionWidget = nullptr;
|
||||||
QVBoxLayout* m_verticalLayout = nullptr;
|
QVBoxLayout* m_verticalLayout = nullptr;
|
||||||
|
QSpacerItem* m_verticalSpacer = nullptr;
|
||||||
|
|
||||||
QLineEdit* m_javaPathTextBox = nullptr;
|
QLineEdit* m_javaPathTextBox = nullptr;
|
||||||
QPushButton* m_javaBrowseBtn = nullptr;
|
QPushButton* m_javaBrowseBtn = nullptr;
|
||||||
@ -99,4 +102,5 @@ class JavaSettingsWidget : public QWidget {
|
|||||||
uint64_t m_availableMemory = 0ull;
|
uint64_t m_availableMemory = 0ull;
|
||||||
shared_qobject_ptr<JavaChecker> m_checker;
|
shared_qobject_ptr<JavaChecker> m_checker;
|
||||||
JavaChecker::Result m_result;
|
JavaChecker::Result m_result;
|
||||||
|
QTimer* m_memoryTimer;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user