23 #include "serverfilterdock.h" 24 #include "ui_serverfilterdock.h" 26 #include "configuration/doomseekerconfig.h" 27 #include "gui/entity/serverlistfilterinfo.h" 29 DClass<ServerFilterDock> :
public Ui::ServerFilterDock
39 QLineEdit* leQuickSearch;
50 : QDockWidget(pParent)
53 d->leQuickSearch = NULL;
54 d->bDisableUpdate =
false;
55 d->cbGroupServersWithPlayersAtTop->setChecked(gConfig.doomseeker.bGroupServersWithPlayersAtTheTopOfTheList);
57 toggleViewAction()->setIcon(QIcon(
":/icons/filter.png"));
59 toggleViewAction()->setText(tr(
"Server &Filter"));
60 toggleViewAction()->setShortcut(tr(
"CTRL+F"));
63 ServerFilterDock::~ServerFilterDock()
67 void ServerFilterDock::addGameModeToComboBox(
const QString& gameMode)
69 addSortedNonDuplicate(d->cboGameMode, gameMode.trimmed());
70 addSortedNonDuplicate(d->cboExcludeGameMode, gameMode.trimmed());
73 void ServerFilterDock::addSortedNonDuplicate(QComboBox* comboBox,
const QString& text)
75 if (comboBox->findText(text, Qt::MatchFixedString) < 0)
78 for (
int i = 0; i < comboBox->count(); ++i)
80 if (text < comboBox->itemText(i))
82 comboBox->insertItem(i, text);
89 comboBox->addItem(text);
93 void ServerFilterDock::clear()
100 if (d->leQuickSearch == NULL)
102 QLineEdit *qs =
new QLineEdit();
103 qs->setText(d->leServerName->text());
105 connect(d->leServerName, SIGNAL( textEdited(
const QString &) ), qs, SLOT( setText(
const QString &) ));
106 connect(qs, SIGNAL( textEdited(
const QString &) ), d->leServerName, SLOT( setText(
const QString &) ));
108 d->leQuickSearch = qs;
111 return d->leQuickSearch;
114 void ServerFilterDock::emitUpdated()
116 if(d->bDisableUpdate)
119 emit filterUpdated(filterInfo());
122 void ServerFilterDock::enableFilter()
124 d->cbFilteringEnabled->setChecked(
true);
132 filterInfo.bEnabled = d->cbFilteringEnabled->isChecked();
133 filterInfo.bShowEmpty = d->cbShowEmpty->isChecked();
134 filterInfo.bShowFull = d->cbShowFull->isChecked();
135 filterInfo.bShowOnlyValid = d->cbShowOnlyValid->isChecked();
136 filterInfo.gameModes = d->cboGameMode->selectedItemTexts();
137 filterInfo.gameModesExcluded = d->cboExcludeGameMode->selectedItemTexts();
138 filterInfo.
maxPing = d->spinMaxPing->value();
139 filterInfo.testingServers = Doomseeker::checkboxTristateToShowMode(d->cbShowTestingServers->checkState());
140 filterInfo.serverName = d->leServerName->text();
141 filterInfo.wads = d->leWads->text().trimmed().split(
",", QString::SkipEmptyParts);
142 filterInfo.wadsExcluded = d->leExcludeWads->text().trimmed().split(
",", QString::SkipEmptyParts);
147 void ServerFilterDock::onServerGroupingChange()
149 gConfig.doomseeker.bGroupServersWithPlayersAtTheTopOfTheList = d->cbGroupServersWithPlayersAtTop->isChecked();
150 emit nonEmptyServerGroupingAtTopToggled(d->cbGroupServersWithPlayersAtTop->isChecked());
155 d->bDisableUpdate =
true;
157 d->cbFilteringEnabled->setChecked(filterInfo.bEnabled);
158 d->cbShowEmpty->setChecked(filterInfo.bShowEmpty);
159 d->cbShowFull->setChecked(filterInfo.bShowFull);
160 d->cbShowOnlyValid->setChecked(filterInfo.bShowOnlyValid);
162 foreach (
const QString& gameMode, filterInfo.gameModes)
164 addGameModeToComboBox(gameMode);
166 d->cboGameMode->setSelectedTexts(filterInfo.gameModes);
168 foreach (
const QString& gameMode, filterInfo.gameModesExcluded)
170 addGameModeToComboBox(gameMode);
172 d->cboExcludeGameMode->setSelectedTexts(filterInfo.gameModesExcluded);
174 d->spinMaxPing->setValue(filterInfo.
maxPing);
175 if (d->leQuickSearch != NULL)
177 d->leQuickSearch->setText(filterInfo.serverName.trimmed());
180 d->leServerName->setText(filterInfo.serverName.trimmed());
181 d->leWads->setText(filterInfo.wads.join(
",").trimmed());
182 d->leExcludeWads->setText(filterInfo.wadsExcluded.join(
",").trimmed());
184 d->cbShowTestingServers->setCheckState(Doomseeker::showModeToCheckboxState(
185 filterInfo.testingServers));
187 d->bDisableUpdate =
false;
Structure describing server filter.
unsigned maxPing
Maximum allowed ping.
QLineEdit * createQuickSearch()
Creates and/or returns an instance of widget that is located in the MainWindow toolbar.
void setFilterInfo(const ServerListFilterInfo &filterInfo)
Sets widgets to new filter info.