#include "aooptionsdialog.h"
#include "aoapplication.h"
AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDialog(parent)
{
ao_app = p_ao_app;
// Setting up the basics.
// setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle("Settings");
resize(398, 320);
SettingsButtons = new QDialogButtonBox(this);
QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Fixed);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(SettingsButtons->sizePolicy().hasHeightForWidth());
SettingsButtons->setSizePolicy(sizePolicy1);
SettingsButtons->setOrientation(Qt::Horizontal);
SettingsButtons->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Save);
QObject::connect(SettingsButtons, SIGNAL(accepted()), this, SLOT(save_pressed()));
QObject::connect(SettingsButtons, SIGNAL(rejected()), this, SLOT(discard_pressed()));
// We'll stop updates so that the window won't flicker while it's being made.
setUpdatesEnabled(false);
// First of all, we want a tabbed dialog, so let's add some layout.
verticalLayout = new QVBoxLayout(this);
SettingsTabs = new QTabWidget(this);
verticalLayout->addWidget(SettingsTabs);
verticalLayout->addWidget(SettingsButtons);
// Let's add the tabs one by one.
// First, we'll start with 'Gameplay'.
GameplayTab = new QWidget();
SettingsTabs->addTab(GameplayTab, "Gameplay");
formLayoutWidget = new QWidget(GameplayTab);
formLayoutWidget->setGeometry(QRect(10, 10, 361, 211));
GameplayForm = new QFormLayout(formLayoutWidget);
GameplayForm->setLabelAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter);
GameplayForm->setFormAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop);
GameplayForm->setContentsMargins(0, 0, 0, 0);
ThemeLabel = new QLabel(formLayoutWidget);
ThemeLabel->setText("Theme:");
ThemeLabel->setToolTip("Allows you to set the theme used ingame. If your theme changes the lobby's look, too, you'll obviously need to reload the lobby somehow for it take effect. Joining a server and leaving it should work.");
GameplayForm->setWidget(0, QFormLayout::LabelRole, ThemeLabel);
ThemeCombobox = new QComboBox(formLayoutWidget);
// Fill the combobox with the names of the themes.
QDirIterator it(p_ao_app->get_base_path() + "themes", QDir::Dirs, QDirIterator::NoIteratorFlags);
while (it.hasNext())
{
QString actualname = QDir(it.next()).dirName();
if (actualname != "." && actualname != "..")
ThemeCombobox->addItem(actualname);
if (actualname == p_ao_app->read_theme())
ThemeCombobox->setCurrentIndex(ThemeCombobox->count()-1);
}
GameplayForm->setWidget(0, QFormLayout::FieldRole, ThemeCombobox);
ThemeLogDivider = new QFrame(formLayoutWidget);
ThemeLogDivider->setMidLineWidth(0);
ThemeLogDivider->setFrameShape(QFrame::HLine);
ThemeLogDivider->setFrameShadow(QFrame::Sunken);
GameplayForm->setWidget(1, QFormLayout::FieldRole, ThemeLogDivider);
DownwardsLabel = new QLabel(formLayoutWidget);
DownwardsLabel->setText("Log goes downwards:");
DownwardsLabel->setToolTip("If ticked, the IC chatlog will go downwards, in the sense that new messages will appear at the bottom (like the OOC chatlog). The Vanilla behaviour is equivalent to this being unticked.");
GameplayForm->setWidget(2, QFormLayout::LabelRole, DownwardsLabel);
DownwardCheckbox = new QCheckBox(formLayoutWidget);
DownwardCheckbox->setChecked(p_ao_app->get_log_goes_downwards());
GameplayForm->setWidget(2, QFormLayout::FieldRole, DownwardCheckbox);
LengthLabel = new QLabel(formLayoutWidget);
LengthLabel->setText("Log length:");
LengthLabel->setToolTip("The amount of messages the IC chatlog will keep before getting rid of older messages. A value of 0 or below counts as 'infinite'.");
GameplayForm->setWidget(3, QFormLayout::LabelRole, LengthLabel);
LengthSpinbox = new QSpinBox(formLayoutWidget);
LengthSpinbox->setMaximum(10000);
LengthSpinbox->setValue(p_ao_app->get_max_log_size());
GameplayForm->setWidget(3, QFormLayout::FieldRole, LengthSpinbox);
LogNamesDivider = new QFrame(formLayoutWidget);
LogNamesDivider->setFrameShape(QFrame::HLine);
LogNamesDivider->setFrameShadow(QFrame::Sunken);
GameplayForm->setWidget(4, QFormLayout::FieldRole, LogNamesDivider);
UsernameLabel = new QLabel(formLayoutWidget);
UsernameLabel->setText("Default username:");
UsernameLabel->setToolTip("Your OOC name will be filled in with this string when you join a server.");
GameplayForm->setWidget(5, QFormLayout::LabelRole, UsernameLabel);
UsernameLineEdit = new QLineEdit(formLayoutWidget);
UsernameLineEdit->setMaxLength(30);
UsernameLineEdit->setText(p_ao_app->get_default_username());
GameplayForm->setWidget(5, QFormLayout::FieldRole, UsernameLineEdit);
ShownameLabel = new QLabel(formLayoutWidget);
ShownameLabel->setText("Custom shownames:");
ShownameLabel->setToolTip("Gives the default value for the ingame 'Custom shownames' tickbox, which in turn determines whether your client should display custom shownames or not.");
GameplayForm->setWidget(6, QFormLayout::LabelRole, ShownameLabel);
ShownameCheckbox = new QCheckBox(formLayoutWidget);
ShownameCheckbox->setChecked(p_ao_app->get_showname_enabled_by_default());
GameplayForm->setWidget(6, QFormLayout::FieldRole, ShownameCheckbox);
NetDivider = new QFrame(formLayoutWidget);
NetDivider->setFrameShape(QFrame::HLine);
NetDivider->setFrameShadow(QFrame::Sunken);
GameplayForm->setWidget(7, QFormLayout::FieldRole, NetDivider);
MasterServerLabel = new QLabel(formLayoutWidget);
MasterServerLabel->setText("Backup MS:");
MasterServerLabel->setToolTip("After the built-in server lookups fail, the game will try the address given here and use it as a backup masterserver address.");
GameplayForm->setWidget(8, QFormLayout::LabelRole, MasterServerLabel);
QSettings* configini = ao_app->configini;
MasterServerLineEdit = new QLineEdit(formLayoutWidget);
MasterServerLineEdit->setText(configini->value("master", "").value