summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2022-04-30 22:04:50 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2022-05-26 18:41:21 +0200
commitfc10974343701fd446bb174e991589de3a75d5e4 (patch)
treecbcf283d5a11cd2fd6d69f1aab39295b26297e60
parent0dea7c3dad15f397600458ae9a81af29e95752fa (diff)
Filter
-rw-r--r--src/mainwindow.cc32
-rw-r--r--src/mainwindow.h1
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 <QPixmap>
#include <QListWidget>
#include <QPainter>
+#include <QVBoxLayout>
+#include <QLineEdit>
#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();