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 + + + + + + + + +