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 QList<DMFlagsSection> dmFlagsSections = engine->
dmFlags();
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)
163 for (
int i = 0; i < section.
count(); ++i)
170 flagKey = section.
name() +
"/" + section[i].
name();
172 p->checkBoxes[i]->setChecked(dmflags[flagKey]);
177 void DMFlagsPanel::saveConfig(
Ini &config)
181 foreach(DMFlagsTabWidget* p, d->dmFlagsTabs)
183 for (
int i = 0; i < p->section.count(); ++i)
185 dmflags[p->section.internalName() +
"/" + p->section[i].internalName()]
186 = p->checkBoxes[i]->isChecked();
void add(const DMFlag &flag)
Append a new DMFlag to this section.
bool createDMFlagsPagesAutomatic
Controls behavior of "Create Game" dialog.
virtual QList< DMFlagsSection > dmFlags() const
Game settings flags.
const QString & internalName() const
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.
int count() const
Number of DMFlag objects inside the collection.
bool hasSetting(const QString &name) const
true if setting of given name exists within the section.
INI section representation.
IniSection section(const QString &name)
Access configuration file section.
const QString & name() const
User-displayable name of this section, ex. "Compatibility flags".
void deleteSection(const QString §ionname)