23 #include "cfgwadalias.h" 24 #include "ui_cfgwadalias.h" 26 #include "configuration/doomseekerconfig.h" 27 #include "gui/commongui.h" 28 #include "pathfinder/filealias.h" 31 DClass<CFGWadAlias> :
public Ui::CFGWadAlias
41 QString matchTypeHelp;
52 d->resizeTimer.setSingleShot(
true);
53 connect(&d->resizeTimer, SIGNAL(timeout()), d->table, SLOT(resizeRowsToContents()));
55 QHeaderView *header = d->table->horizontalHeader();
57 #if QT_VERSION >= 0x050000 66 d->matchTypeHelp = CFGWadAlias::tr(
"Left-to-Right will use the alias files instead of " 67 "the main file but not vice-versa.");
68 d->matchTypeHelp +=
"\n\n";
69 d->matchTypeHelp += CFGWadAlias::tr(
"All Equal will treat all files as equal and try to " 70 "match them in any combination.");
73 CFGWadAlias::~CFGWadAlias()
77 void CFGWadAlias::addAliasToTable(
const FileAlias &alias)
79 bool wasSortingEnabled = d->table->isSortingEnabled();
80 d->table->setSortingEnabled(
false);
82 int row = findRowWithWad(alias.name());
85 row = d->table->rowCount();
87 applyAliasToRow(row, alias);
92 FileAlias existingAlias = aliasFromRow(row);
94 applyAliasToRow(row, existingAlias);
97 d->table->setSortingEnabled(wasSortingEnabled);
98 resizeRowsToContents();
101 void CFGWadAlias::addDefaults()
104 foreach (
const FileAlias& alias, aliases)
106 addAliasToTable(alias);
110 void CFGWadAlias::addNewEntry()
112 bool wasSortingEnabled = d->table->isSortingEnabled();
113 d->table->setSortingEnabled(
false);
115 int row = d->table->rowCount();
116 d->table->insertRow(row);
119 mkMatchTypeComboBox(row);
121 d->table->setSortingEnabled(wasSortingEnabled);
122 resizeRowsToContents();
125 QList<FileAlias> CFGWadAlias::aliases()
const 127 QList<FileAlias> aliases;
128 for (
int row = 0; row < d->table->rowCount(); ++row)
136 return FileAliasList::mergeDuplicates(aliases);
139 FileAlias CFGWadAlias::aliasFromRow(
int row)
const 144 foreach (
const QString &candidateAlias, candidateAliases)
146 if (!candidateAlias.trimmed().isEmpty())
148 alias.
addAlias(candidateAlias.trimmed());
151 QComboBox *cboMatchType = qobject_cast<QComboBox*>(d->table->cellWidget(
153 alias.setMatchType(static_cast<FileAlias::MatchType>(
154 cboMatchType->itemData(cboMatchType->currentIndex()).toInt()));
158 void CFGWadAlias::applyAliasToRow(
int row,
const FileAlias &alias)
163 QComboBox *cboMatchType = qobject_cast<QComboBox*>(
165 int matchTypeIdx = qMax(0, cboMatchType->findData(alias.matchType()));
166 cboMatchType->setCurrentIndex(matchTypeIdx);
169 int CFGWadAlias::findRowWithWad(
const QString &wadName)
171 for (
int row = 0; row < d->table->rowCount(); ++row)
174 wadName.trimmed(), Qt::CaseInsensitive) == 0)
184 return QApplication::style()->standardIcon(QStyle::SP_DirOpenIcon);
187 QComboBox *CFGWadAlias::mkMatchTypeComboBox(
int row)
189 QComboBox *cboMatchType =
new QComboBox();
190 cboMatchType->setToolTip(d->matchTypeHelp);
191 cboMatchType->addItem(tr(
"Left-to-Right"), FileAlias::LeftToRight);
192 cboMatchType->addItem(tr(
"All Equal"), FileAlias::AllEqual);
199 bool wasSortingEnabled = d->table->isSortingEnabled();
200 d->table->setSortingEnabled(
false);
202 while (d->table->rowCount() > 0)
204 d->table->removeRow(0);
207 QList<FileAlias> aliases = gConfig.doomseeker.wadAliases();
208 foreach (
const FileAlias &alias, aliases)
212 addAliasToTable(alias);
216 d->table->setSortingEnabled(wasSortingEnabled);
219 void CFGWadAlias::removeSelected()
221 CommonGUI::removeSelectedRowsFromQTableWidget(d->table);
224 void CFGWadAlias::resizeRowsToContents()
226 d->resizeTimer.start(0);
231 gConfig.doomseeker.setWadAliases(aliases());
234 void CFGWadAlias::showEvent(QShowEvent *event)
236 resizeRowsToContents();
239 QTableWidgetItem *CFGWadAlias::toolTipItem(
const QString &contents)
241 QTableWidgetItem *item =
new QTableWidgetItem(contents);
242 item->setToolTip(contents);
bool isValid() const
Valid FileAlias has a name and at least one alias.
void addAliases(const QStringList &val)
Will ensure unique values.
static QList< FileAlias > standardWadAliases()
Standard/default aliases for configuration init.
void readSettings()
Reimplement this to read settings from config into widgets.
void saveSettings()
Reimplement this to write settings to config from widgets.
void addAlias(const QString &val)
Will ensure unique values.
QIcon icon() const
Reimplement this to return a displayable icon for the ConfigPage.
Base class for configuration pages.