feat: validate maximum memory allocation

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
This commit is contained in:
Sefa Eyeoglu
2022-11-11 15:02:08 +01:00
parent 46a8e18841
commit 5ee4fb3522
6 changed files with 151 additions and 79 deletions

View File

@ -58,9 +58,8 @@ JavaPage::JavaPage(QWidget *parent) : QWidget(parent), ui(new Ui::JavaPage)
ui->setupUi(this);
ui->tabWidget->tabBar()->hide();
auto sysMiB = Sys::getSystemRam() / Sys::mebibyte;
ui->maxMemSpinBox->setMaximum(sysMiB);
loadSettings();
updateThresholds();
}
JavaPage::~JavaPage()
@ -177,6 +176,11 @@ void JavaPage::on_javaTestBtn_clicked()
checker->run();
}
void JavaPage::on_maxMemSpinBox_valueChanged(int i)
{
updateThresholds();
}
void JavaPage::checkerFinished()
{
checker.reset();
@ -186,3 +190,20 @@ void JavaPage::retranslate()
{
ui->retranslateUi(this);
}
void JavaPage::updateThresholds()
{
auto sysMiB = Sys::getSystemRam() / Sys::mebibyte;
unsigned int maxMem = ui->maxMemSpinBox->value();
if (maxMem >= sysMiB) {
ui->labelMaxMemIcon->setText(u8"");
ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity."));
} else if (maxMem > (sysMiB * 0.9)) {
ui->labelMaxMemIcon->setText(u8"");
ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity."));
} else {
ui->labelMaxMemIcon->setText(u8"");
ui->labelMaxMemIcon->setToolTip("");
}
}

View File

@ -76,6 +76,8 @@ public:
bool apply() override;
void retranslate() override;
void updateThresholds();
private:
void applySettings();
void loadSettings();
@ -85,6 +87,7 @@ slots:
void on_javaDetectBtn_clicked();
void on_javaTestBtn_clicked();
void on_javaBrowseBtn_clicked();
void on_maxMemSpinBox_valueChanged(int i);
void checkerFinished();
private:

View File

@ -44,8 +44,8 @@
<property name="title">
<string>Memory</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="1">
<layout class="QGridLayout" name="gridLayout_2" columnstretch="1,0,0">
<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>
@ -67,27 +67,17 @@
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="labelMinMem">
<item row="2" column="0">
<widget class="QLabel" name="labelPermGen">
<property name="text">
<string>&amp;Minimum memory allocation:</string>
<string notr="true">&amp;PermGen:</string>
</property>
<property name="buddy">
<cstring>minMemSpinBox</cstring>
<cstring>permGenSpinBox</cstring>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelMaxMem">
<property name="text">
<string>Ma&amp;ximum memory allocation:</string>
</property>
<property name="buddy">
<cstring>maxMemSpinBox</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<item row="0" column="2">
<widget class="QSpinBox" name="minMemSpinBox">
<property name="toolTip">
<string>The amount of memory Minecraft is started with.</string>
@ -109,17 +99,27 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelPermGen">
<item row="1" column="0">
<widget class="QLabel" name="labelMaxMem">
<property name="text">
<string notr="true">&amp;PermGen:</string>
<string>Ma&amp;ximum memory allocation:</string>
</property>
<property name="buddy">
<cstring>permGenSpinBox</cstring>
<cstring>maxMemSpinBox</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="0" column="0">
<widget class="QLabel" name="labelMinMem">
<property name="text">
<string>&amp;Minimum memory allocation:</string>
</property>
<property name="buddy">
<cstring>minMemSpinBox</cstring>
</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>
@ -141,6 +141,16 @@
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="labelMaxMemIcon">
<property name="text">
<string/>
</property>
<property name="buddy">
<cstring>maxMemSpinBox</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>