From 497d9bec029247f202befb34cc3d5da6e810fa73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 9 Jul 2019 02:37:04 +0200 Subject: NOISSUE simple/stupid default game options, UI only --- .../pages/global/DefaultGameOptionsPage.cpp | 110 +++++++++++++++++++++ application/pages/global/DefaultGameOptionsPage.h | 73 ++++++++++++++ application/pages/global/DefaultGameOptionsPage.ui | 96 ++++++++++++++++++ 3 files changed, 279 insertions(+) create mode 100644 application/pages/global/DefaultGameOptionsPage.cpp create mode 100644 application/pages/global/DefaultGameOptionsPage.h create mode 100644 application/pages/global/DefaultGameOptionsPage.ui (limited to 'application/pages') diff --git a/application/pages/global/DefaultGameOptionsPage.cpp b/application/pages/global/DefaultGameOptionsPage.cpp new file mode 100644 index 00000000..ce97907f --- /dev/null +++ b/application/pages/global/DefaultGameOptionsPage.cpp @@ -0,0 +1,110 @@ +#include "DefaultGameOptionsPage.h" +#include "ui_DefaultGameOptionsPage.h" +#include "minecraft/MinecraftInstance.h" +#include "minecraft/gameoptions/GameOptions.h" +#include +#include "MultiMC.h" +namespace { +enum Mode { + NoDefault = 0, + NoAutojump = 1, + Fulltext = 2 +}; +} + +DefaultGameOptionsPage::DefaultGameOptionsPage(QWidget* parent) : QWidget(parent), ui(new Ui::DefaultGameOptionsPage) +{ + ui->setupUi(this); + ui->tabWidget->tabBar()->hide(); + ui->defaultOptionsMode->setId(ui->radioDisabled, NoDefault); + ui->defaultOptionsMode->setId(ui->radioNoAutojump, NoAutojump); + ui->defaultOptionsMode->setId(ui->radioFullText, Fulltext); + loadSettings(); + updateEnabledWidgets(); + connect(ui->defaultOptionsMode, SIGNAL(buttonClicked(int)), SLOT(radioChanged(int))); +} + +bool DefaultGameOptionsPage::apply() +{ + applySettings(); + return true; +} + +void DefaultGameOptionsPage::updateEnabledWidgets() +{ + auto id = ui->defaultOptionsMode->checkedId(); + switch(id) { + case NoDefault: + default: + case NoAutojump: { + ui->textEdit->setEnabled(false); + break; + } + case Fulltext: { + ui->textEdit->setEnabled(true); + break; + } + } +} + +void DefaultGameOptionsPage::radioChanged(int) +{ + updateEnabledWidgets(); +} + + +void DefaultGameOptionsPage::applySettings() +{ + auto s = MMC->settings(); + + auto id = ui->defaultOptionsMode->checkedId(); + switch(id) { + case NoDefault: { + s->set("DefaultOptionsMode", "NoDefault"); + break; + } + default: + case NoAutojump: { + s->set("DefaultOptionsMode", "NoAutojump"); + break; + } + case Fulltext: { + s->set("DefaultOptionsMode", "Fulltext"); + break; + } + } + + s->set("DefaultOptionsText", ui->textEdit->toPlainText()); +} + +void DefaultGameOptionsPage::loadSettings() +{ + auto s = MMC->settings(); + auto modeStr = s->get("DefaultOptionsMode").toString(); + if(modeStr == "NoDefault") { + ui->radioDisabled->setChecked(true); + } else if(modeStr == "Fulltext") { + ui->radioFullText->setChecked(true); + } else { + ui->radioNoAutojump->setChecked(true); + } + ui->textEdit->setText(s->get("DefaultOptionsText").toString()); +} + + +DefaultGameOptionsPage::~DefaultGameOptionsPage() +{ + delete ui; +} + +void DefaultGameOptionsPage::openedImpl() +{ +} + +void DefaultGameOptionsPage::closedImpl() +{ +} + +#include "DefaultGameOptionsPage.moc" + + diff --git a/application/pages/global/DefaultGameOptionsPage.h b/application/pages/global/DefaultGameOptionsPage.h new file mode 100644 index 00000000..d6142c34 --- /dev/null +++ b/application/pages/global/DefaultGameOptionsPage.h @@ -0,0 +1,73 @@ +/* Copyright 2013-2019 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 +#include + +#include "pages/BasePage.h" +#include + +namespace Ui +{ +class DefaultGameOptionsPage; +} + +class GameOptions; +class MinecraftInstance; + +class DefaultGameOptionsPage : public QWidget, public BasePage +{ + Q_OBJECT + +public: + explicit DefaultGameOptionsPage(QWidget *parent = 0); + virtual ~DefaultGameOptionsPage(); + + void openedImpl() override; + void closedImpl() override; + + virtual QString displayName() const override + { + return tr("Game Options"); + } + virtual QIcon icon() const override + { + return MMC->getThemedIcon("settings"); + } + virtual QString id() const override + { + return "defaultgameoptions"; + } + virtual QString helpPage() const override + { + return "Default-Game-Options"; + } + + bool apply() override; + +private: + void applySettings(); + void loadSettings(); + void updateEnabledWidgets(); + +private slots: + void radioChanged(int); + +private: // data + Ui::DefaultGameOptionsPage *ui = nullptr; +}; + diff --git a/application/pages/global/DefaultGameOptionsPage.ui b/application/pages/global/DefaultGameOptionsPage.ui new file mode 100644 index 00000000..2ccde7ce --- /dev/null +++ b/application/pages/global/DefaultGameOptionsPage.ui @@ -0,0 +1,96 @@ + + + DefaultGameOptionsPage + + + + 0 + 0 + 706 + 575 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + + + 0 + 0 + + + + Tab 1 + + + + + + No Default + + + true + + + defaultOptionsMode + + + + + + + No Autojump + + + defaultOptionsMode + + + + + + + Full Text + + + defaultOptionsMode + + + + + + + + + + + + + + tabWidget + radioDisabled + radioNoAutojump + radioFullText + textEdit + + + + + + + -- cgit v1.2.3