From bade253a1a9a80a8f2c91f9a102caaf00032c7ce Mon Sep 17 00:00:00 2001 From: Sky Date: Sun, 3 Nov 2013 15:20:26 +0000 Subject: [PATCH] Added NagUtils, nag people about trying to override JVM memory options --- CMakeLists.txt | 2 ++ gui/mainwindow.cpp | 5 +++++ gui/settingsdialog.cpp | 2 ++ logic/NagUtils.cpp | 37 +++++++++++++++++++++++++++++++++++++ logic/NagUtils.h | 23 +++++++++++++++++++++++ 5 files changed, 69 insertions(+) create mode 100644 logic/NagUtils.cpp create mode 100644 logic/NagUtils.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5da43a0b..36a3dce0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -322,6 +322,8 @@ logic/tasks/Task.cpp # Utilities logic/JavaUtils.h logic/JavaUtils.cpp +logic/NagUtils.h +logic/NagUtils.cpp ) diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 00cfacf7..316117b7 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -66,6 +66,7 @@ #include "logic/OneSixAssets.h" #include "logic/OneSixUpdate.h" #include "logic/JavaUtils.h" +#include "logic/NagUtils.h" #include "logic/LegacyInstance.h" @@ -471,9 +472,12 @@ void MainWindow::instanceActivated(QModelIndex index) { if (!index.isValid()) return; + BaseInstance *inst = (BaseInstance *)index.data(InstanceList::InstancePointerRole).value(); + NagUtils::checkJVMArgs(MMC->settings()->get("JvmArgs").toString(), this); + bool autoLogin = MMC->settings()->get("AutoLogin").toBool(); if (autoLogin) doAutoLogin(); @@ -485,6 +489,7 @@ void MainWindow::on_actionLaunchInstance_triggered() { if (m_selectedInstance) { + NagUtils::checkJVMArgs(MMC->settings()->get("JvmArgs").toString(), this); doLogin(); } } diff --git a/gui/settingsdialog.cpp b/gui/settingsdialog.cpp index 346f7414..703ade31 100644 --- a/gui/settingsdialog.cpp +++ b/gui/settingsdialog.cpp @@ -17,6 +17,7 @@ #include "settingsdialog.h" #include "ui_settingsdialog.h" #include "logic/JavaUtils.h" +#include "logic/NagUtils.h" #include "gui/versionselectdialog.h" #include "gui/platform.h" #include "gui/CustomMessageBox.h" @@ -159,6 +160,7 @@ void SettingsDialog::applySettings(SettingsObject *s) // Java Settings s->set("JavaPath", ui->javaPathTextBox->text()); s->set("JvmArgs", ui->jvmArgsTextBox->text()); + NagUtils::checkJVMArgs(s->get("JvmArgs").toString(), this->parentWidget()); // Custom Commands s->set("PreLaunchCommand", ui->preLaunchCmdTextBox->text()); diff --git a/logic/NagUtils.cpp b/logic/NagUtils.cpp new file mode 100644 index 00000000..ccabf71f --- /dev/null +++ b/logic/NagUtils.cpp @@ -0,0 +1,37 @@ +/* Copyright 2013 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. + */ + +#include "NagUtils.h" +#include "gui/CustomMessageBox.h" + +namespace NagUtils +{ +void checkJVMArgs(QString jvmargs, QWidget *parent) +{ + if(jvmargs.contains("-XX:PermSize=") || jvmargs.contains(QRegExp("-Xm[sx]"))) + { + CustomMessageBox::selectable(parent, parent->tr("JVM arguments warning"), + parent->tr("You tried to manually set a JVM memory option (using " + " \"-XX:PermSize\", \"-Xmx\" or \"-Xms\") - there" + " are dedicated boxes for these in the settings (Java" + " tab, in the Memory group at the top).\n" + "Your manual settings will be overridden by the" + " dedicated options.\n" + "This message will be displayed until you remove them" + " from the JVM arguments."), + QMessageBox::Warning)->exec(); + } +} +} diff --git a/logic/NagUtils.h b/logic/NagUtils.h new file mode 100644 index 00000000..9564a2b1 --- /dev/null +++ b/logic/NagUtils.h @@ -0,0 +1,23 @@ +/* Copyright 2013 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 + +namespace NagUtils +{ +void checkJVMArgs(QString args, QWidget *parent); +}