JavaSettingsWidget -> JavaWizardWidget

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
TheKodeToad 2024-11-07 14:51:43 +00:00
parent 8132828ad7
commit 012bbca197
No known key found for this signature in database
GPG key ID: 5E39D70B4C93C38E
6 changed files with 46 additions and 285 deletions

View file

@ -1085,8 +1085,8 @@ SET(LAUNCHER_SOURCES
ui/widgets/FocusLineEdit.h ui/widgets/FocusLineEdit.h
ui/widgets/IconLabel.cpp ui/widgets/IconLabel.cpp
ui/widgets/IconLabel.h ui/widgets/IconLabel.h
ui/widgets/JavaSettingsWidget.cpp ui/widgets/JavaWizardWidget.cpp
ui/widgets/JavaSettingsWidget.h ui/widgets/JavaWizardWidget.h
ui/widgets/LabeledToolButton.cpp ui/widgets/LabeledToolButton.cpp
ui/widgets/LabeledToolButton.h ui/widgets/LabeledToolButton.h
ui/widgets/LanguageSelectionWidget.cpp ui/widgets/LanguageSelectionWidget.cpp

View file

@ -14,7 +14,7 @@
#include "JavaCommon.h" #include "JavaCommon.h"
#include "ui/widgets/JavaSettingsWidget.h" #include "ui/widgets/JavaWizardWidget.h"
#include "ui/widgets/VersionSelectWidget.h" #include "ui/widgets/VersionSelectWidget.h"
JavaWizardPage::JavaWizardPage(QWidget* parent) : BaseWizardPage(parent) JavaWizardPage::JavaWizardPage(QWidget* parent) : BaseWizardPage(parent)
@ -27,7 +27,7 @@ void JavaWizardPage::setupUi()
setObjectName(QStringLiteral("javaPage")); setObjectName(QStringLiteral("javaPage"));
QVBoxLayout* layout = new QVBoxLayout(this); QVBoxLayout* layout = new QVBoxLayout(this);
m_java_widget = new JavaSettingsWidget(this); m_java_widget = new JavaWizardWidget(this);
layout->addWidget(m_java_widget); layout->addWidget(m_java_widget);
setLayout(layout); setLayout(layout);
@ -58,13 +58,13 @@ bool JavaWizardPage::validatePage()
settings->set("UserAskedAboutAutomaticJavaDownload", true); settings->set("UserAskedAboutAutomaticJavaDownload", true);
switch (result) { switch (result) {
default: default:
case JavaSettingsWidget::ValidationStatus::Bad: { case JavaWizardWidget::ValidationStatus::Bad: {
return false; return false;
} }
case JavaSettingsWidget::ValidationStatus::AllOK: { case JavaWizardWidget::ValidationStatus::AllOK: {
settings->set("JavaPath", m_java_widget->javaPath()); settings->set("JavaPath", m_java_widget->javaPath());
} /* fallthrough */ } /* fallthrough */
case JavaSettingsWidget::ValidationStatus::JavaBad: { case JavaWizardWidget::ValidationStatus::JavaBad: {
// Memory // Memory
auto s = APPLICATION->settings(); auto s = APPLICATION->settings();
s->set("MinMemAlloc", m_java_widget->minHeapSize()); s->set("MinMemAlloc", m_java_widget->minHeapSize());

View file

@ -2,7 +2,7 @@
#include "BaseWizardPage.h" #include "BaseWizardPage.h"
class JavaSettingsWidget; class JavaWizardWidget;
class JavaWizardPage : public BaseWizardPage { class JavaWizardPage : public BaseWizardPage {
Q_OBJECT Q_OBJECT
@ -21,5 +21,5 @@ class JavaWizardPage : public BaseWizardPage {
void retranslate() override; void retranslate() override;
private: /* data */ private: /* data */
JavaSettingsWidget* m_java_widget = nullptr; JavaWizardWidget* m_java_widget = nullptr;
}; };

View file

@ -1,4 +1,4 @@
#include "JavaSettingsWidget.h" #include "JavaWizardWidget.h"
#include <QFileDialog> #include <QFileDialog>
#include <QGroupBox> #include <QGroupBox>
@ -29,7 +29,7 @@
#include "Application.h" #include "Application.h"
#include "BuildConfig.h" #include "BuildConfig.h"
JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) JavaWizardWidget::JavaWizardWidget(QWidget* parent) : QWidget(parent)
{ {
m_availableMemory = Sys::getSystemRam() / Sys::mebibyte; m_availableMemory = Sys::getSystemRam() / Sys::mebibyte;
@ -42,17 +42,17 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent)
connect(m_minMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int))); connect(m_minMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int)));
connect(m_maxMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int))); connect(m_maxMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int)));
connect(m_permGenSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int))); connect(m_permGenSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int)));
connect(m_memoryTimer, &QTimer::timeout, this, &JavaSettingsWidget::memoryValueChanged); connect(m_memoryTimer, &QTimer::timeout, this, &JavaWizardWidget::memoryValueChanged);
connect(m_versionWidget, &VersionSelectWidget::selectedVersionChanged, this, &JavaSettingsWidget::javaVersionSelected); connect(m_versionWidget, &VersionSelectWidget::selectedVersionChanged, this, &JavaWizardWidget::javaVersionSelected);
connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaBrowseBtn_clicked); connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaWizardWidget::on_javaBrowseBtn_clicked);
connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaWizardWidget::javaPathEdited);
connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaSettingsWidget::on_javaStatusBtn_clicked); connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaWizardWidget::on_javaStatusBtn_clicked);
if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { if (BuildConfig.JAVA_DOWNLOADER_ENABLED) {
connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::javaDownloadBtn_clicked); connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaWizardWidget::javaDownloadBtn_clicked);
} }
} }
void JavaSettingsWidget::setupUi() void JavaWizardWidget::setupUi()
{ {
setObjectName(QStringLiteral("javaSettingsWidget")); setObjectName(QStringLiteral("javaSettingsWidget"));
m_verticalLayout = new QVBoxLayout(this); m_verticalLayout = new QVBoxLayout(this);
@ -183,7 +183,7 @@ void JavaSettingsWidget::setupUi()
retranslate(); retranslate();
} }
void JavaSettingsWidget::initialize() void JavaWizardWidget::initialize()
{ {
m_versionWidget->initialize(APPLICATION->javalist().get()); m_versionWidget->initialize(APPLICATION->javalist().get());
m_versionWidget->selectSearch(); m_versionWidget->selectSearch();
@ -202,7 +202,7 @@ void JavaSettingsWidget::initialize()
} }
} }
void JavaSettingsWidget::refresh() void JavaWizardWidget::refresh()
{ {
if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_autodownloadCheckBox->isChecked()) { if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_autodownloadCheckBox->isChecked()) {
return; return;
@ -214,7 +214,7 @@ void JavaSettingsWidget::refresh()
m_versionWidget->loadList(); m_versionWidget->loadList();
} }
JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() JavaWizardWidget::ValidationStatus JavaWizardWidget::validate()
{ {
switch (javaStatus) { switch (javaStatus) {
default: default:
@ -277,12 +277,12 @@ JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate()
} }
} }
QString JavaSettingsWidget::javaPath() const QString JavaWizardWidget::javaPath() const
{ {
return m_javaPathTextBox->text(); return m_javaPathTextBox->text();
} }
int JavaSettingsWidget::maxHeapSize() const int JavaWizardWidget::maxHeapSize() const
{ {
auto min = m_minMemSpinBox->value(); auto min = m_minMemSpinBox->value();
auto max = m_maxMemSpinBox->value(); auto max = m_maxMemSpinBox->value();
@ -291,7 +291,7 @@ int JavaSettingsWidget::maxHeapSize() const
return max; return max;
} }
int JavaSettingsWidget::minHeapSize() const int JavaWizardWidget::minHeapSize() const
{ {
auto min = m_minMemSpinBox->value(); auto min = m_minMemSpinBox->value();
auto max = m_maxMemSpinBox->value(); auto max = m_maxMemSpinBox->value();
@ -300,17 +300,17 @@ int JavaSettingsWidget::minHeapSize() const
return min; return min;
} }
bool JavaSettingsWidget::permGenEnabled() const bool JavaWizardWidget::permGenEnabled() const
{ {
return m_permGenSpinBox->isVisible(); return m_permGenSpinBox->isVisible();
} }
int JavaSettingsWidget::permGenSize() const int JavaWizardWidget::permGenSize() const
{ {
return m_permGenSpinBox->value(); return m_permGenSpinBox->value();
} }
void JavaSettingsWidget::memoryValueChanged() void JavaWizardWidget::memoryValueChanged()
{ {
bool actuallyChanged = false; bool actuallyChanged = false;
unsigned int min = m_minMemSpinBox->value(); unsigned int min = m_minMemSpinBox->value();
@ -334,7 +334,7 @@ void JavaSettingsWidget::memoryValueChanged()
} }
} }
void JavaSettingsWidget::javaVersionSelected(BaseVersion::Ptr version) void JavaWizardWidget::javaVersionSelected(BaseVersion::Ptr version)
{ {
auto java = std::dynamic_pointer_cast<JavaInstall>(version); auto java = std::dynamic_pointer_cast<JavaInstall>(version);
if (!java) { if (!java) {
@ -347,7 +347,7 @@ void JavaSettingsWidget::javaVersionSelected(BaseVersion::Ptr version)
checkJavaPath(java->path); checkJavaPath(java->path);
} }
void JavaSettingsWidget::on_javaBrowseBtn_clicked() void JavaWizardWidget::on_javaBrowseBtn_clicked()
{ {
auto filter = QString("Java (%1)").arg(JavaUtils::javaExecutable); auto filter = QString("Java (%1)").arg(JavaUtils::javaExecutable);
auto raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable"), QString(), filter); auto raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable"), QString(), filter);
@ -359,13 +359,13 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked()
checkJavaPath(cooked_path); checkJavaPath(cooked_path);
} }
void JavaSettingsWidget::javaDownloadBtn_clicked() void JavaWizardWidget::javaDownloadBtn_clicked()
{ {
auto jdialog = new Java::InstallDialog({}, nullptr, this); auto jdialog = new Java::InstallDialog({}, nullptr, this);
jdialog->exec(); jdialog->exec();
} }
void JavaSettingsWidget::on_javaStatusBtn_clicked() void JavaWizardWidget::on_javaStatusBtn_clicked()
{ {
QString text; QString text;
bool failed = false; bool failed = false;
@ -412,7 +412,7 @@ void JavaSettingsWidget::on_javaStatusBtn_clicked()
->show(); ->show();
} }
void JavaSettingsWidget::setJavaStatus(JavaSettingsWidget::JavaStatus status) void JavaWizardWidget::setJavaStatus(JavaWizardWidget::JavaStatus status)
{ {
javaStatus = status; javaStatus = status;
switch (javaStatus) { switch (javaStatus) {
@ -429,12 +429,12 @@ void JavaSettingsWidget::setJavaStatus(JavaSettingsWidget::JavaStatus status)
} }
} }
void JavaSettingsWidget::javaPathEdited(const QString& path) void JavaWizardWidget::javaPathEdited(const QString& path)
{ {
checkJavaPathOnEdit(path); checkJavaPathOnEdit(path);
} }
void JavaSettingsWidget::checkJavaPathOnEdit(const QString& path) void JavaWizardWidget::checkJavaPathOnEdit(const QString& path)
{ {
auto realPath = FS::ResolveExecutable(path); auto realPath = FS::ResolveExecutable(path);
QFileInfo pathInfo(realPath); QFileInfo pathInfo(realPath);
@ -447,7 +447,7 @@ void JavaSettingsWidget::checkJavaPathOnEdit(const QString& path)
} }
} }
void JavaSettingsWidget::checkJavaPath(const QString& path) void JavaWizardWidget::checkJavaPath(const QString& path)
{ {
if (m_checker) { if (m_checker) {
queuedCheck = path; queuedCheck = path;
@ -461,11 +461,11 @@ void JavaSettingsWidget::checkJavaPath(const QString& path)
setJavaStatus(JavaStatus::Pending); setJavaStatus(JavaStatus::Pending);
m_checker.reset( m_checker.reset(
new JavaChecker(path, "", minHeapSize(), maxHeapSize(), m_permGenSpinBox->isVisible() ? m_permGenSpinBox->value() : 0, 0, this)); new JavaChecker(path, "", minHeapSize(), maxHeapSize(), m_permGenSpinBox->isVisible() ? m_permGenSpinBox->value() : 0, 0, this));
connect(m_checker.get(), &JavaChecker::checkFinished, this, &JavaSettingsWidget::checkFinished); connect(m_checker.get(), &JavaChecker::checkFinished, this, &JavaWizardWidget::checkFinished);
m_checker->start(); m_checker->start();
} }
void JavaSettingsWidget::checkFinished(const JavaChecker::Result& result) void JavaWizardWidget::checkFinished(const JavaChecker::Result& result)
{ {
m_result = result; m_result = result;
switch (result.validity) { switch (result.validity) {
@ -490,7 +490,7 @@ void JavaSettingsWidget::checkFinished(const JavaChecker::Result& result)
} }
} }
void JavaSettingsWidget::retranslate() void JavaWizardWidget::retranslate()
{ {
m_memoryGroupBox->setTitle(tr("Memory")); m_memoryGroupBox->setTitle(tr("Memory"));
m_maxMemSpinBox->setToolTip(tr("The maximum amount of memory Minecraft is allowed to use.")); m_maxMemSpinBox->setToolTip(tr("The maximum amount of memory Minecraft is allowed to use."));
@ -506,7 +506,7 @@ void JavaSettingsWidget::retranslate()
m_autoJavaGroupBox->setTitle(tr("Autodetect Java")); m_autoJavaGroupBox->setTitle(tr("Autodetect Java"));
} }
void JavaSettingsWidget::updateThresholds() void JavaWizardWidget::updateThresholds()
{ {
QString iconName; QString iconName;
@ -538,22 +538,22 @@ void JavaSettingsWidget::updateThresholds()
} }
} }
bool JavaSettingsWidget::autoDownloadJava() const bool JavaWizardWidget::autoDownloadJava() const
{ {
return m_autodownloadCheckBox && m_autodownloadCheckBox->isChecked(); return m_autodownloadCheckBox && m_autodownloadCheckBox->isChecked();
} }
bool JavaSettingsWidget::autoDetectJava() const bool JavaWizardWidget::autoDetectJava() const
{ {
return m_autodetectJavaCheckBox->isChecked(); return m_autodetectJavaCheckBox->isChecked();
} }
void JavaSettingsWidget::onSpinBoxValueChanged(int) void JavaWizardWidget::onSpinBoxValueChanged(int)
{ {
m_memoryTimer->start(500); m_memoryTimer->start(500);
} }
JavaSettingsWidget::~JavaSettingsWidget() JavaWizardWidget::~JavaWizardWidget()
{ {
delete m_verticalSpacer; delete m_verticalSpacer;
}; };

View file

@ -22,12 +22,12 @@ 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.
*/ */
class JavaSettingsWidget : public QWidget { class JavaWizardWidget : public QWidget {
Q_OBJECT Q_OBJECT
public: public:
explicit JavaSettingsWidget(QWidget* parent); explicit JavaWizardWidget(QWidget* parent);
virtual ~JavaSettingsWidget(); virtual ~JavaWizardWidget();
enum class JavaStatus { NotSet, Pending, Good, DoesNotExist, DoesNotStart, ReturnedInvalidData } javaStatus = JavaStatus::NotSet; enum class JavaStatus { NotSet, Pending, Good, DoesNotExist, DoesNotStart, ReturnedInvalidData } javaStatus = JavaStatus::NotSet;

View file

@ -282,245 +282,6 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="javaPage">
<attribute name="title">
<string>Java</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_11">
<item>
<widget class="QScrollArea" name="scrollArea_4">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_6">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>610</width>
<height>454</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_18">
<item>
<widget class="QGroupBox" name="javaSettingsGroupBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="title">
<string>Java Insta&amp;llation</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="4" column="0">
<widget class="QCheckBox" name="skipCompatibilityCheckbox">
<property name="toolTip">
<string>If enabled, the launcher will not check if an instance is compatible with the selected Java version.</string>
</property>
<property name="text">
<string>Skip Java compatibility checks</string>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="javaPathTextBox"/>
</item>
<item>
<widget class="QPushButton" name="javaBrowseBtn">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QPushButton" name="javaDownloadBtn">
<property name="text">
<string>Download Java</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="javaDetectBtn">
<property name="text">
<string>Auto-detect...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="javaTestBtn">
<property name="text">
<string>Test</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="memoryGroupBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="title">
<string>Memor&amp;y</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_5" columnstretch="1,0,0,0">
<item row="2" column="0">
<widget class="QLabel" name="labelPermGen">
<property name="text">
<string>PermGen:</string>
</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="3" column="0" colspan="3">
<widget class="QLabel" name="labelPermgenNote">
<property name="text">
<string>Note: Permgen is set automatically by Java 8 and later</string>
</property>
</widget>
</item>
<item row="0" column="2">
<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"> MiB</string>
</property>
<property name="minimum">
<number>8</number>
</property>
<property name="maximum">
<number>1048576</number>
</property>
<property name="singleStep">
<number>128</number>
</property>
<property name="value">
<number>256</number>
</property>
</widget>
</item>
<item row="1" column="2">
<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"> MiB</string>
</property>
<property name="minimum">
<number>8</number>
</property>
<property name="maximum">
<number>1048576</number>
</property>
<property name="singleStep">
<number>128</number>
</property>
<property name="value">
<number>1024</number>
</property>
</widget>
</item>
<item row="2" column="2">
<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"> MiB</string>
</property>
<property name="minimum">
<number>4</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="1" column="3">
<widget class="QLabel" name="labelMaxMemIcon">
<property name="text">
<string notr="true"/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="buddy">
<cstring>maxMemSpinBox</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="javaArgumentsGroupBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="title">
<string>Java Argumen&amp;ts</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="1" column="1">
<widget class="QPlainTextEdit" name="jvmArgsTextBox"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tweaksPage"> <widget class="QWidget" name="tweaksPage">
<attribute name="title"> <attribute name="title">
<string>Tweaks</string> <string>Tweaks</string>