23 #include "application.h"
24 #include "configuration/doomseekerconfig.h"
25 #include "doomseekerconfigurationdialog.h"
26 #include "gui/configuration/cfgappearance.h"
27 #include "gui/configuration/cfgautoupdates.h"
28 #include "gui/configuration/cfgcustomservers.h"
29 #include "gui/configuration/cfgfilepaths.h"
30 #include "gui/configuration/cfggames.h"
31 #include "gui/configuration/cfgip2c.h"
32 #include "gui/configuration/cfgquery.h"
33 #include "gui/configuration/cfgserverpasswords.h"
34 #include "gui/configuration/cfgwadalias.h"
35 #include "gui/configuration/cfgwadseekerappearance.h"
36 #include "gui/configuration/cfgwadseekergeneral.h"
37 #include "gui/configuration/cfgwadseekeridgames.h"
38 #include "gui/configuration/cfgwadseekersites.h"
39 #include "gui/configuration/engineconfigpage.h"
40 #include "gui/mainwindow.h"
42 #include "plugins/engineplugin.h"
43 #include "plugins/pluginloader.h"
44 #include "qtmetapointer.h"
45 #include "updater/updatechannel.h"
47 #include <QStandardItem>
50 QPointer<DoomseekerConfigurationDialog> DoomseekerConfigurationDialog::instance;
52 DoomseekerConfigurationDialog::DoomseekerConfigurationDialog(QWidget *parent)
55 this->bAppearanceChanged =
false;
56 this->bCustomServersChanged =
false;
57 this->bRestartNeeded =
false;
66 connect(configPage, SIGNAL(appearanceChanged()),
67 SLOT(appearanceChangedSlot()));
68 connect(configPage, SIGNAL(restartNeeded()),
69 SLOT(restartNeededSlot()));
75 bool DoomseekerConfigurationDialog::addEngineConfiguration(
ConfigPage *configPage)
77 if (enginesRoot !=
nullptr)
82 void DoomseekerConfigurationDialog::appearanceChangedSlot()
84 this->bAppearanceChanged =
true;
85 emit appearanceChanged();
88 void DoomseekerConfigurationDialog::restartNeededSlot()
90 this->bRestartNeeded =
true;
93 void DoomseekerConfigurationDialog::appendFilePathsConfigurationBoxes()
99 void DoomseekerConfigurationDialog::appendWadseekerConfigurationBoxes()
108 void DoomseekerConfigurationDialog::doSaveSettings()
110 bCustomServersChanged = customServersCfgBox->
allowSave();
111 if (gConfig.saveToFile())
112 gLog << tr(
"Settings saved!");
114 gLog << tr(
"Settings save failed!");
117 void DoomseekerConfigurationDialog::initOptionsList()
122 #ifdef WITH_AUTOUPDATES
133 appendFilePathsConfigurationBoxes();
134 appendWadseekerConfigurationBoxes();
139 bool DoomseekerConfigurationDialog::isOpen()
141 return instance !=
nullptr;
144 void DoomseekerConfigurationDialog::openConfiguration(QWidget *parent,
const EnginePlugin *openPlugin)
146 if (instance !=
nullptr)
148 instance->activateWindow();
150 instance->showPluginConfiguration(openPlugin);
155 instance = &configDialog;
158 if (mainWindow !=
nullptr)
159 mainWindow->connect(&configDialog, SIGNAL(appearanceChanged()), SLOT(updateDynamicAppearance()));
161 configDialog.initOptionsList();
163 for (
unsigned i = 0; i < gPlugins->numPlugins(); ++i)
169 configDialog.addEngineConfiguration(configPage);
172 bool bLookupHostsSettingBefore = gConfig.doomseeker.bLookupHosts;
176 if (mainWindow !=
nullptr)
177 mainWindow->stopAutoRefreshTimer();
180 configDialog.showPluginConfiguration(openPlugin);
185 if (mainWindow !=
nullptr)
191 if (updateChannelBefore != updateChannelAfter
192 || updateModeBefore != gConfig.autoUpdates.updateMode)
194 if (mainWindow !=
nullptr)
195 mainWindow->abortAutoUpdater();
196 gConfig.autoUpdates.bPerformUpdateOnNextRun =
false;
197 gConfig.saveToFile();
200 if (mainWindow !=
nullptr)
201 mainWindow->
finishConfiguration(configDialog, !bLookupHostsSettingBefore && gConfig.doomseeker.bLookupHosts);
204 void DoomseekerConfigurationDialog::showPluginConfiguration(
const EnginePlugin *plugin)
207 for (
int i = 0; i < enginesRoot->rowCount(); ++i)
209 QStandardItem *page = enginesRoot->child(i);
211 void *pointer = metaPointer;
214 if (engineConfig->plugin() == plugin)