23 #include "demometadatadialog.h"
26 #include "gui/commongui.h"
27 #include "plugins/engineplugin.h"
30 #include "ui_demometadatadialog.h"
33 #include <QStandardItemModel>
35 DClass<DemoMetaDataDialog> :
public Ui::DemoMetaDataDialog
39 QStandardItemModel *wadsModel;
44 DemoMetaDataDialog::DemoMetaDataDialog(QWidget *parent,
const GameDemo &demo)
50 d->cboGame->setAllowUnknown(
true);
52 d->wadsModel =
new QStandardItemModel(
this);
53 d->wadsList->setModel(d->wadsModel);
54 d->wadsList->installEventFilter(
this);
56 d->cboGame->setPluginByName(demo.
game);
58 d->leAuthor->setText(demo.
author);
59 d->dteCreatedTime->setDateTime(demo.
time.isValid() ? demo.
time : QDateTime::currentDateTime());
60 d->leIwad->setText(demo.
iwad);
66 void DemoMetaDataDialog::addEmptyWad()
71 void DemoMetaDataDialog::addWad(
const PWad &wad)
73 auto it =
new QStandardItem(wad.
name());
74 it->setDragEnabled(
true);
75 it->setCheckable(
true);
76 it->setCheckState(wad.
isOptional() ? Qt::Unchecked : Qt::Checked);
77 d->wadsModel->appendRow(it);
80 bool DemoMetaDataDialog::eventFilter(QObject *obj, QEvent *event)
82 if (obj == d->wadsList)
84 if (event->type() == QEvent::KeyPress)
86 QKeyEvent *keyEvent =
static_cast<QKeyEvent *
>(event);
87 switch (keyEvent->key())
105 GameDemo DemoMetaDataDialog::gameDemo()
const
108 const QString gameName = game !=
nullptr
114 demo.
game = gameName;
115 demo.
gameVersion = d->leGameVersion->text().trimmed();
116 demo.
author = d->leAuthor->text().trimmed();
117 demo.
time = d->dteCreatedTime->dateTime();
118 demo.
iwad = d->leIwad->text().trimmed();
119 for (
int i = 0; i < d->wadsModel->rowCount(); ++i)
121 auto item = d->wadsModel->item(i);
122 QString filename = item->text().trimmed();
123 if (filename.isEmpty())
126 const bool optional = item->checkState() == Qt::Unchecked;
127 demo.
wads <<
PWad(filename, optional);
132 void DemoMetaDataDialog::removeSelectedWads()
134 const bool bSelectNextLowest =
true;