diff options
author | Andrew <forkk@forkk.net> | 2013-05-06 12:48:01 -0500 |
---|---|---|
committer | Andrew <forkk@forkk.net> | 2013-05-06 12:48:29 -0500 |
commit | 74133bb17282dc2df2fcf4e754318122a7a5e6f8 (patch) | |
tree | 0d3e070d06f228944b4dcb58bb9671d625679b50 /gui/versionselectdialog.cpp | |
parent | 857a4e4dbed88b647619c213d731dc460d034820 (diff) | |
download | PrismLauncher-74133bb17282dc2df2fcf4e754318122a7a5e6f8.tar.gz PrismLauncher-74133bb17282dc2df2fcf4e754318122a7a5e6f8.tar.bz2 PrismLauncher-74133bb17282dc2df2fcf4e754318122a7a5e6f8.zip |
Allow users to filter out MCNostalgia and Snapshots from the version list.
Resolves JIRA issue MMC-9:
https://jira.forkk.net/browse/MMC-9
Diffstat (limited to 'gui/versionselectdialog.cpp')
-rw-r--r-- | gui/versionselectdialog.cpp | 38 |
1 files changed, 34 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); } |