diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp
index 179839fe..dc1d47f1 100644
--- a/application/MultiMC.cpp
+++ b/application/MultiMC.cpp
@@ -488,6 +488,9 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv)
m_settings->registerSetting("InstSortMode", "Name");
m_settings->registerSetting("SelectedInstance", QString());
+ // Offline mode stuff
+ m_settings->registerSetting("OfflineModeNameMode", "UseAccountName");
+
// Window state and geometry
m_settings->registerSetting("MainWindowState", "");
m_settings->registerSetting("MainWindowGeometry", "");
diff --git a/application/pages/global/AccountListPage.cpp b/application/pages/global/AccountListPage.cpp
index 9b7f9d17..895b04f9 100644
--- a/application/pages/global/AccountListPage.cpp
+++ b/application/pages/global/AccountListPage.cpp
@@ -33,11 +33,18 @@
#include "MultiMC.h"
+enum class OfflineModeNameMode
+{
+ UseAccountName = 1,
+ RememberPerAccount = 2,
+ RememberPerInstance = 3,
+ UseFixedName = 4
+};
+
AccountListPage::AccountListPage(QWidget *parent)
: QWidget(parent), ui(new Ui::AccountListPage)
{
ui->setupUi(this);
- ui->tabWidget->tabBar()->hide();
m_accounts = MMC->accounts();
@@ -56,7 +63,13 @@ AccountListPage::AccountListPage(QWidget *parent)
connect(m_accounts.get(), SIGNAL(listChanged()), SLOT(listChanged()));
connect(m_accounts.get(), SIGNAL(activeAccountChanged()), SLOT(listChanged()));
+ ui->offlineButtonGroup->setId(ui->useSelectedNameBtn, int(OfflineModeNameMode::UseAccountName));
+ ui->offlineButtonGroup->setId(ui->rememberNamesForAccountsBtn, int(OfflineModeNameMode::RememberPerAccount));
+ ui->offlineButtonGroup->setId(ui->rememberNamesForInstancesBtn, int(OfflineModeNameMode::RememberPerInstance));
+ ui->offlineButtonGroup->setId(ui->useFixedNameBtn, int(OfflineModeNameMode::UseFixedName));
+
updateButtonStates();
+ loadSettings();
}
AccountListPage::~AccountListPage()
@@ -151,3 +164,53 @@ void AccountListPage::on_uploadSkinBtn_clicked()
dialog.exec();
}
}
+
+bool AccountListPage::apply()
+{
+ applySettings();
+ return true;
+}
+
+void AccountListPage::applySettings()
+{
+ auto s = MMC->settings();
+ auto sortMode = (OfflineModeNameMode)ui->offlineButtonGroup->checkedId();
+ switch (sortMode)
+ {
+ default:
+ case OfflineModeNameMode::UseAccountName:
+ s->set("OfflineModeNameMode", "UseAccountName");
+ break;
+ case OfflineModeNameMode::RememberPerAccount:
+ s->set("OfflineModeNameMode", "RememberPerAccount");
+ break;
+ case OfflineModeNameMode::RememberPerInstance:
+ s->set("OfflineModeNameMode", "RememberPerInstance");
+ break;
+ case OfflineModeNameMode::UseFixedName:
+ s->set("OfflineModeNameMode", "UseFixedName");
+ break;
+ }
+}
+
+void AccountListPage::loadSettings()
+{
+ auto s = MMC->settings();
+ auto value = s->get("OfflineModeNameMode").toString();
+ if(value == "UseAccountName")
+ {
+ ui->useSelectedNameBtn->setChecked(true);
+ }
+ else if(value == "RememberPerAccount")
+ {
+ ui->rememberNamesForAccountsBtn->setChecked(true);
+ }
+ else if(value == "RememberPerInstance")
+ {
+ ui->rememberNamesForInstancesBtn->setChecked(true);
+ }
+ else if(value == "UseFixedName")
+ {
+ ui->useFixedNameBtn->setChecked(true);
+ }
+}
diff --git a/application/pages/global/AccountListPage.h b/application/pages/global/AccountListPage.h
index 9db0db88..f31c6312 100644
--- a/application/pages/global/AccountListPage.h
+++ b/application/pages/global/AccountListPage.h
@@ -58,6 +58,7 @@ public:
{
return "Getting-Started#adding-an-account";
}
+ bool apply() override;
public
slots:
@@ -83,6 +84,10 @@ protected
slots:
void addAccount(const QString& errMsg="");
+private:
+ void applySettings();
+ void loadSettings();
+
private:
Ui::AccountListPage *ui;
};
diff --git a/application/pages/global/AccountListPage.ui b/application/pages/global/AccountListPage.ui
index f4e87680..da1ea1e7 100644
--- a/application/pages/global/AccountListPage.ui
+++ b/application/pages/global/AccountListPage.ui
@@ -6,8 +6,8 @@
0
0
- 694
- 609
+ 333
+ 302
@@ -28,9 +28,9 @@
0
-
+
- Tab 1
+ Online
-
@@ -113,10 +113,89 @@
+
+
+ Offline
+
+
+ -
+
+
+ Offline mode name
+
+
+
-
+
+
+ &Use selected account name
+
+
+ offlineButtonGroup
+
+
+
+ -
+
+
+ Always use &this offline name:
+
+
+ offlineButtonGroup
+
+
+
+ -
+
+
+ false
+
+
+
+ -
+
+
+ Remember offline &names per account
+
+
+ offlineButtonGroup
+
+
+
+ -
+
+
+ Remember offline &names per instance
+
+
+ offlineButtonGroup
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+