diff options
| -rw-r--r-- | src/mainwindow.cc | 32 | ||||
| -rw-r--r-- | 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 <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(); | 
