23 #include "ui_wadspicker.h"
24 #include "wadspicker.h"
26 #include "configuration/doomseekerconfig.h"
27 #include "datapaths.h"
28 #include "gui/commongui.h"
29 #include "gui/icons.h"
30 #include "templatedpathresolver.h"
31 #include <QApplication>
33 #include <QFileDialog>
34 #include <QStandardItemModel>
37 DClass<WadsPicker> :
public Ui::WadsPicker
47 d->lstAdditionalFiles->setModel(
new QStandardItemModel(
this));
48 d->lstAdditionalFiles->installEventFilter(
this);
50 d->btnBrowsePwad->setIcon(style()->standardIcon(QStyle::SP_DirOpenIcon));
54 WadsPicker::~WadsPicker()
58 void WadsPicker::addEmptyPath()
60 addPathToTable(QString(),
true);
63 void WadsPicker::addWadPath(
const QString &wadPath,
bool required)
65 if (wadPath.isEmpty())
68 if (!fileInfo.isFile())
71 auto model =
static_cast<QStandardItemModel *
>(d->lstAdditionalFiles->model());
74 for (
int i = 0; i < model->rowCount(); ++i)
76 QStandardItem *item = model->item(i);
77 QString existing = item->text();
78 Qt::CaseSensitivity cs;
81 cs = Qt::CaseInsensitive;
83 cs = Qt::CaseSensitive;
86 if (existing.compare(wadPath, cs) == 0)
89 addPathToTable(wadPath, required);
92 void WadsPicker::addPathToTable(
const QString &path,
bool required)
94 auto it =
new QStandardItem(path);
96 it->setDragEnabled(
true);
97 it->setDropEnabled(
false);
99 it->setCheckable(
true);
100 it->setCheckState(required ? Qt::Checked : Qt::Unchecked);
102 auto model =
static_cast<QStandardItemModel *
>(d->lstAdditionalFiles->model());
103 model->appendRow(it);
106 void WadsPicker::browseAndAdd()
108 QString dialogDir = gConfig.doomseeker.previousCreateServerWadDir;
109 QStringList filesNames = QFileDialog::getOpenFileNames(
this,
110 tr(
"Doomseeker - Add file(s)"), dialogDir);
112 if (!filesNames.isEmpty())
116 QFileInfo fi(filesNames[0]);
117 gConfig.doomseeker.previousCreateServerWadDir = fi.absolutePath();
119 for (
const QString &strFile : filesNames)
121 addWadPath(gDefaultDataPaths->portablizePath(strFile));
126 bool WadsPicker::eventFilter(QObject *obj, QEvent *event)
128 if (obj == d->lstAdditionalFiles)
130 if (event->type() == QEvent::KeyPress)
132 QKeyEvent *keyEvent =
static_cast<QKeyEvent *
>(event);
133 switch (keyEvent->key())
151 QList<bool> WadsPicker::fileOptional()
const
155 for (
bool &i : checked)
160 QStringList WadsPicker::filePaths()
const
165 void WadsPicker::setFilePaths(
const QStringList &paths,
const QList<bool> &optionals)
168 for (
int i = 0; i < paths.size(); ++i)
169 addWadPath(paths[i], i >= optionals.size() || !optionals[i]);
172 void WadsPicker::removeAll()
174 auto pModel = (QStandardItemModel *)d->lstAdditionalFiles->model();
178 void WadsPicker::removeSelected()
180 const bool bSelectNextLowest =
true;