23 #include "dmflagspanel.h"
24 #include "ui_dmflagspanel.h"
27 #include "plugins/engineplugin.h"
28 #include "serverapi/gamecreateparams.h"
33 class DMFlagsTabWidget
42 QList<QCheckBox*> checkBoxes;
46 DClass<DMFlagsPanel> :
public Ui::DMFlagsPanel
49 QList<DMFlagsTabWidget*> dmFlagsTabs;
61 DMFlagsPanel::~DMFlagsPanel()
66 QList<DMFlagsSection> DMFlagsPanel::dmFlags()
const
68 QList<DMFlagsSection> result;
69 foreach(
const DMFlagsTabWidget* p, d->dmFlagsTabs)
72 for (
int i = 0; i < p->section.count(); ++i)
74 if (p->checkBoxes[i]->isChecked())
76 sec.
add(p->section[i]);
84 bool DMFlagsPanel::initDMFlagsTabs(
const EnginePlugin *engine)
90 const QList<DMFlagsSection> &dmFlagsSections = engine->data()->
allDMFlags;
91 if (dmFlagsSections.empty())
96 for (
int i = 0; i < dmFlagsSections.count(); ++i)
98 DMFlagsTabWidget* dmftw =
new DMFlagsTabWidget();
100 QWidget* flagsTab =
new QWidget(
this);
101 dmftw->widget = flagsTab;
102 dmftw->section = dmFlagsSections[i];
104 QHBoxLayout* hLayout =
new QHBoxLayout(flagsTab);
106 QVBoxLayout* layout = NULL;
107 for (
int j = 0; j < dmFlagsSections[i].count(); ++j)
113 layout->addStretch();
116 layout =
new QVBoxLayout();
117 hLayout->addLayout(layout);
120 QCheckBox* checkBox =
new QCheckBox();
121 checkBox->setText(dmFlagsSections[i][j].name());
122 dmftw->checkBoxes << checkBox;
123 layout->addWidget(checkBox);
128 layout->addStretch();
131 d->dmFlagsTabs << dmftw;
132 d->tabWidget->addTab(flagsTab, dmFlagsSections[i].name());
139 void DMFlagsPanel::removeDMFlagsTabs()
141 foreach (DMFlagsTabWidget* flags, d->dmFlagsTabs)
143 int index = d->tabWidget->indexOf(flags->widget);
144 d->tabWidget->removeTab(index);
145 delete flags->widget;
149 d->dmFlagsTabs.clear();
154 params.dmFlags() = dmFlags();
157 void DMFlagsPanel::loadConfig(
Ini &config)
160 foreach(DMFlagsTabWidget* p, d->dmFlagsTabs)
162 for (
int i = 0; i < p->section.count(); ++i)
164 p->checkBoxes[i]->setChecked(dmflags[p->section.name() +
"/" + p->section[i].name()]);
169 void DMFlagsPanel::saveConfig(
Ini &config)
173 foreach(DMFlagsTabWidget* p, d->dmFlagsTabs)
175 for (
int i = 0; i < p->section.count(); ++i)
177 dmflags[p->section.name() +
"/" + p->section[i].name()] = p->checkBoxes[i]->isChecked();
void add(const DMFlag &flag)
Append a new DMFlag to this section.
bool createDMFlagsPagesAutomatic
Controls behavior of "Create Game" dialog.
Game parametrization data used when creating new games.
A group of DMFlag objects that can be safely OR'ed together to form a meaningful value.
INI section representation.
IniSection section(const QString &name)
Access configuration file section.
void deleteSection(const QString §ionname)
QList< DMFlagsSection > allDMFlags
List of all engine's DM flags or NULL if none.