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.