summaryrefslogtreecommitdiffstats
path: root/application/pages/global/DefaultGameOptionsPage.cpp
blob: ce97907f69a7efa284bc24d8fe5bff1ec3f8cbca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include "DefaultGameOptionsPage.h"
#include "ui_DefaultGameOptionsPage.h"
#include "minecraft/MinecraftInstance.h"
#include "minecraft/gameoptions/GameOptions.h"
#include <QTabBar>
#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"