From aca6137150c380ae82ea49877d20d248cabd661d Mon Sep 17 00:00:00 2001 From: Anne Jan Brouwer Date: Sun, 3 May 2015 16:58:28 +0200 Subject: fuzzy filtering in user management --- mainwindow.cpp | 2 -- usersdialog.cpp | 34 ++++++++++++++++++++++++++++------ usersdialog.h | 4 ++++ usersdialog.ui | 14 ++++++++++++++ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index d176fb28..a299a4f2 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -646,8 +646,6 @@ void MainWindow::setPassword(QString file, bool overwrite) void MainWindow::on_addButton_clicked() { - - bool ok; QString file = QInputDialog::getText(this, tr("New file"), tr("New password file:"), QLineEdit::Normal, 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 UsersDialog::UsersDialog(QWidget *parent) : QDialog(parent), @@ -28,14 +29,35 @@ void UsersDialog::itemChange(QListWidgetItem *item) void UsersDialog::setUsers(QList *users) { + userList = users; + populateList(""); +} + +void UsersDialog::populateList(const QString &filter) +{ + QRegExp nameFilter("*"+filter+"*"); + nameFilter.setPatternSyntax(QRegExp::Wildcard); ui->listWidget->clear(); - if (users) { - for (QList::iterator it = users->begin(); it != users->end(); ++it) { + if (userList) { + for (QList::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); +} diff --git a/usersdialog.h b/usersdialog.h index 54fadfa8..c8a6970b 100644 --- a/usersdialog.h +++ b/usersdialog.h @@ -30,9 +30,13 @@ public: private slots: void itemChange(QListWidgetItem *); + void on_clearButton_clicked(); + void on_lineEdit_textChanged(const QString &filter); private: Ui::UsersDialog *ui; + QList *userList; + void populateList(const QString &filter); }; #endif // USERSDIALOG_H diff --git a/usersdialog.ui b/usersdialog.ui index 232b9426..28adab02 100644 --- a/usersdialog.ui +++ b/usersdialog.ui @@ -37,6 +37,20 @@ Note: Existing files will not be modified and retain the old permissions until y + + + + + + + + + X + + + + + -- cgit v1.2.3