diff options
author | Anne Jan Brouwer <brouwer@annejan.com> | 2015-05-03 16:58:28 +0200 |
---|---|---|
committer | Anne Jan Brouwer <brouwer@annejan.com> | 2015-05-03 16:58:28 +0200 |
commit | aca6137150c380ae82ea49877d20d248cabd661d (patch) | |
tree | c97ee6191ad9defe553336c954ebc9f2ddd21f91 /usersdialog.cpp | |
parent | 0f9bc6925c370b4c4e5123ddc9bbeb53874c7dcb (diff) |
fuzzy filtering in user management
Diffstat (limited to 'usersdialog.cpp')
-rw-r--r-- | usersdialog.cpp | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/usersdialog.cpp b/usersdialog.cpp index 767c7486..0048f055 100644 --- a/usersdialog.cpp +++ b/usersdialog.cpp @@ -1,5 +1,6 @@ #include "usersdialog.h" #include "ui_usersdialog.h" +#include <QRegExp> UsersDialog::UsersDialog(QWidget *parent) : QDialog(parent), @@ -28,14 +29,35 @@ void UsersDialog::itemChange(QListWidgetItem *item) void UsersDialog::setUsers(QList<UserInfo> *users) { + userList = users; + populateList(""); +} + +void UsersDialog::populateList(const QString &filter) +{ + QRegExp nameFilter("*"+filter+"*"); + nameFilter.setPatternSyntax(QRegExp::Wildcard); ui->listWidget->clear(); - if (users) { - for (QList<UserInfo>::iterator it = users->begin(); it != users->end(); ++it) { + if (userList) { + for (QList<UserInfo>::iterator it = userList->begin(); it != userList->end(); ++it) { UserInfo &user(*it); - QListWidgetItem *item = new QListWidgetItem(user.name + "\n" + user.key_id, ui->listWidget); - item->setCheckState(user.enabled ? Qt::Checked : Qt::Unchecked); - item->setData(Qt::UserRole, QVariant::fromValue(&user)); - ui->listWidget->addItem(item); + if (filter.isEmpty() || nameFilter.exactMatch(user.name)) { + QListWidgetItem *item = new QListWidgetItem(user.name + "\n" + user.key_id, ui->listWidget); + item->setCheckState(user.enabled ? Qt::Checked : Qt::Unchecked); + item->setData(Qt::UserRole, QVariant::fromValue(&user)); + ui->listWidget->addItem(item); + } } } } + +void UsersDialog::on_clearButton_clicked() +{ + ui->lineEdit->clear(); + on_lineEdit_textChanged(""); +} + +void UsersDialog::on_lineEdit_textChanged(const QString &filter) +{ + populateList(filter); +} |