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/cfgip2c.h"
31 #include "gui/configuration/cfgquery.h"
32 #include "gui/configuration/cfgserverpasswords.h"
33 #include "gui/configuration/cfgwadalias.h"
34 #include "gui/configuration/cfgwadseekerappearance.h"
35 #include "gui/configuration/cfgwadseekergeneral.h"
36 #include "gui/configuration/cfgwadseekeridgames.h"
37 #include "gui/configuration/cfgwadseekersites.h"
38 #include "gui/configuration/engineconfigpage.h"
39 #include "gui/mainwindow.h"
41 #include "plugins/engineplugin.h"
42 #include "plugins/pluginloader.h"
43 #include "qtmetapointer.h"
44 #include "updater/updatechannel.h"
46 #include <QStandardItem>
49 QPointer<DoomseekerConfigurationDialog> DoomseekerConfigurationDialog::instance;
51 DoomseekerConfigurationDialog::DoomseekerConfigurationDialog(QWidget *parent)
54 this->bAppearanceChanged =
false;
55 this->bCustomServersChanged =
false;
56 this->bRestartNeeded =
false;
65 connect(configPage, SIGNAL(appearanceChanged()),
66 SLOT(appearanceChangedSlot()));
67 connect(configPage, SIGNAL(restartNeeded()),
68 SLOT(restartNeededSlot()));
74 bool DoomseekerConfigurationDialog::addEngineConfiguration(
ConfigPage *configPage)
76 if (enginesRoot !=
nullptr)
81 void DoomseekerConfigurationDialog::appearanceChangedSlot()
83 this->bAppearanceChanged =
true;
84 emit appearanceChanged();
87 void DoomseekerConfigurationDialog::restartNeededSlot()
89 this->bRestartNeeded =
true;
92 void DoomseekerConfigurationDialog::appendFilePathsConfigurationBoxes()
98 void DoomseekerConfigurationDialog::appendWadseekerConfigurationBoxes()
107 void DoomseekerConfigurationDialog::doSaveSettings()
109 bCustomServersChanged = customServersCfgBox->
allowSave();
110 if (gConfig.saveToFile())
111 gLog << tr(
"Settings saved!");
113 gLog << tr(
"Settings save failed!");
116 void DoomseekerConfigurationDialog::initOptionsList()
118 enginesRoot =
addLabel(
nullptr, tr(
"Games"));
119 enginesRoot->setIcon(QIcon(
":/icons/joystick.png"));
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)