23 #include "iwadpicker.h"
24 #include "ui_iwadpicker.h"
26 #include "configuration/doomseekerconfig.h"
27 #include "datapaths.h"
28 #include "pathfinder/pathfinder.h"
29 #include "pathfinder/wadpathfinder.h"
30 #include "strings.hpp"
31 #include <QFileDialog>
35 DClass<IwadPicker> :
public Ui::IwadPicker
45 d->btnBrowse->setIcon(style()->standardIcon(QStyle::SP_DirOpenIcon));
49 IwadPicker::~IwadPicker()
53 void IwadPicker::addIwad(
const QString &path)
55 if (path.trimmed().isEmpty())
58 for (
int i = 0; i < d->cboIwad->count(); ++i)
60 if (d->cboIwad->itemText(i).compare(path) == 0)
62 d->cboIwad->setCurrentIndex(i);
68 d->cboIwad->setCurrentIndex(d->cboIwad->count() - 1);
71 void IwadPicker::browse()
73 QString dialogDir = gConfig.doomseeker.previousCreateServerWadDir;
74 QString path = QFileDialog::getOpenFileName(
this, tr(
"Doomseeker - select IWAD"), dialogDir);
78 path = gDefaultDataPaths->portablizePath(path);
79 gConfig.doomseeker.previousCreateServerWadDir = path;
85 QString IwadPicker::currentIwad()
const
87 return d->cboIwad->currentText();
90 void IwadPicker::loadIwads()
92 const QString iwads[] = {
93 "doom.wad",
"doom1.wad",
"doom2.wad",
94 "tnt.wad",
"plutonia.wad",
"heretic.wad",
95 "hexen.wad",
"freedoom.wad",
"freedm.wad",
96 "freedoom1.wad",
"freedoom2.wad",
"strife1.wad",
""
99 QString currentSelection = d->cboIwad->currentText();
101 for (
int i = 0; !iwads[i].isEmpty(); ++i)
105 QString path = wadPathFinder.find(iwads[i]).path();
107 d->cboIwad->addItem(gDefaultDataPaths->portablizePath(path));
109 if (!currentSelection.isEmpty())
111 int selectionIdx = d->cboIwad->findText(currentSelection);
112 if (selectionIdx >= 0)
113 d->cboIwad->setCurrentIndex(selectionIdx);
115 d->cboIwad->setEditText(currentSelection);
119 void IwadPicker::setIwadByName(
const QString &iwad)
121 for (
int i = 0; i < d->cboIwad->count(); ++i)
123 QFileInfo fi(d->cboIwad->itemText(i));
124 if (fi.fileName().compare(iwad, Qt::CaseInsensitive) == 0)
126 d->cboIwad->setCurrentIndex(i);
132 QString path = pathFinder.
findFile(iwad);
135 d->cboIwad->addItem(gDefaultDataPaths->portablizePath(path));
136 d->cboIwad->setCurrentIndex(d->cboIwad->count() - 1);