summaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
Diffstat (limited to 'gui')
-rw-r--r--gui/versionselectdialog.cpp38
-rw-r--r--gui/versionselectdialog.h6
-rw-r--r--gui/versionselectdialog.ui18
3 files changed, 58 insertions, 4 deletions
diff --git a/gui/versionselectdialog.cpp b/gui/versionselectdialog.cpp
index 6ead83c0..63a2ac26 100644
--- a/gui/versionselectdialog.cpp
+++ b/gui/versionselectdialog.cpp
@@ -18,6 +18,8 @@
#include <QHeaderView>
+#include <QDebug>
+
#include <gui/taskdialog.h>
#include <instversionlist.h>
@@ -31,9 +33,18 @@ VersionSelectDialog::VersionSelectDialog(InstVersionList *vlist, QWidget *parent
ui->setupUi(this);
m_vlist = vlist;
- ui->listView->setModel(m_vlist);
+
+ m_proxyModel = new QSortFilterProxyModel(this);
+ m_proxyModel->setSourceModel(vlist);
+
+ ui->listView->setModel(m_proxyModel);
ui->listView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->listView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
+
+ connect(ui->filterSnapshotsCheckbox, SIGNAL(clicked()), SLOT(updateFilterState()));
+ connect(ui->filterMCNostalgiaCheckbox, SIGNAL(clicked()), SLOT(updateFilterState()));
+
+ updateFilterState();
}
VersionSelectDialog::~VersionSelectDialog()
@@ -60,13 +71,32 @@ void VersionSelectDialog::loadList()
const InstVersion *VersionSelectDialog::selectedVersion() const
{
const InstVersion *versionPtr = (const InstVersion *)
- m_vlist->data(ui->listView->selectionModel()->currentIndex(),
- InstVersionList::VersionPointerRole).value<void *>();
+ m_proxyModel->data(ui->listView->selectionModel()->currentIndex(),
+ InstVersionList::VersionPointerRole).value<void *>();
return versionPtr;
}
void VersionSelectDialog::on_refreshButton_clicked()
{
- loadList();
+ loadList();
+}
+
+void VersionSelectDialog::updateFilterState()
+{
+ m_proxyModel->setFilterKeyColumn(InstVersionList::TypeColumn);
+
+ QStringList filteredTypes;
+ if (!ui->filterSnapshotsCheckbox->isChecked())
+ filteredTypes += "Snapshot";
+ if (!ui->filterMCNostalgiaCheckbox->isChecked())
+ filteredTypes += "MCNostalgia";
+
+ QString regexStr = "^.*$";
+ if (filteredTypes.length() > 0)
+ regexStr = QString("^((?!%1).)*$").arg(filteredTypes.join('|'));
+
+ qDebug() << "Filter:" << regexStr;
+
+ m_proxyModel->setFilterRegExp(regexStr);
}
diff --git a/gui/versionselectdialog.h b/gui/versionselectdialog.h
index 097be93f..0f45d8e5 100644
--- a/gui/versionselectdialog.h
+++ b/gui/versionselectdialog.h
@@ -18,6 +18,8 @@
#include <QDialog>
+#include <QSortFilterProxyModel>
+
class InstVersionList;
class InstVersion;
@@ -44,10 +46,14 @@ public:
private slots:
void on_refreshButton_clicked();
+ void updateFilterState();
+
private:
Ui::VersionSelectDialog *ui;
InstVersionList *m_vlist;
+
+ QSortFilterProxyModel *m_proxyModel;
};
#endif // VERSIONSELECTDIALOG_H
diff --git a/gui/versionselectdialog.ui b/gui/versionselectdialog.ui
index 7b94817a..2bdd4449 100644
--- a/gui/versionselectdialog.ui
+++ b/gui/versionselectdialog.ui
@@ -37,6 +37,24 @@
</widget>
</item>
<item>
+ <layout class="QHBoxLayout" name="filterCheckboxLayout1">
+ <item>
+ <widget class="QCheckBox" name="filterSnapshotsCheckbox">
+ <property name="text">
+ <string>Show &amp;snapshots?</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="filterMCNostalgiaCheckbox">
+ <property name="text">
+ <string>Show MC&amp;Nostalgia?</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="refreshButton">