From fc10974343701fd446bb174e991589de3a75d5e4 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sat, 30 Apr 2022 22:04:50 +0200 Subject: Filter --- src/mainwindow.cc | 32 +++++++++++++++++++++++++------- src/mainwindow.h | 1 + 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/mainwindow.cc b/src/mainwindow.cc index 711370f..b91ae43 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -34,6 +34,8 @@ #include #include #include +#include +#include #include "database.h" #include "viewer.h" @@ -59,9 +61,19 @@ MainWindow::MainWindow(Database& db) // Create the browser docking widget // QDockWidget *browser = new QDockWidget("Browser"); + auto w = new QWidget(); + auto layout = new QVBoxLayout(); + w->setLayout(layout); + + auto e = new QLineEdit(); + layout->addWidget(e); + connect(e, &QLineEdit::textChanged, this, &MainWindow::filterChanged); + listWidget = new QListWidget(this); listWidget->setIconSize({64, 64}); - browser->setWidget(listWidget); + layout->addWidget(listWidget); + + browser->setWidget(w); // // Create the viewer @@ -83,11 +95,6 @@ MainWindow::~MainWindow() { } -//void MainWindow::updateDocumentStatus(bool changed) -//{ -// setWindowTitle(QString("foo bar") + (changed?"*":"")); -//} - void MainWindow::readDatabase() { auto items = db.getRecipes(); @@ -108,7 +115,7 @@ void MainWindow::readDatabase() { image = QImage::fromData((const uchar*)item.image.data(), item.image.size()); } - //image = image.scaled(128, 128, Qt::KeepAspectRatioByExpanding); + int h = image.height(); int w = image.width(); if(h > w) @@ -172,3 +179,14 @@ void MainWindow::itemChanged(int) auto recipe = db.getRecipe(id); viewer->show(recipe); } + +void MainWindow::filterChanged(const QString& text) +{ + QRegExp rx(text); + rx.setCaseSensitivity(Qt::CaseInsensitive); + for(int i = 0; i < listWidget->count(); ++i) + { + auto item = listWidget->item(i); + item->setHidden(!item->text().contains(rx) && !text.isEmpty()); + } +} diff --git a/src/mainwindow.h b/src/mainwindow.h index 05474f2..3588a19 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -45,6 +45,7 @@ public: public slots: // void updateDocumentStatus(bool changed); void itemChanged(int row); + void filterChanged(const QString& text); private: void readDatabase(); -- cgit v1.2.3