diff options
| -rw-r--r-- | src/mainwindow.cc | 26 | 
1 files changed, 18 insertions, 8 deletions
| diff --git a/src/mainwindow.cc b/src/mainwindow.cc index f5c9d9d..cb68039 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -33,6 +33,7 @@  #include <QLabel>  #include <QPixmap>  #include <QListWidget> +#include <QPainter>  #include "database.h"  #include "viewer.h" @@ -94,10 +95,10 @@ void MainWindow::readDatabase()  	{  		QListWidgetItem* listItem = new QListWidgetItem();  		listItem->setText(QString::fromUtf8(item.title.data())); + +		QImage image;  		if(!item.image.empty())  		{ -			QIcon icon; -			QImage image;  			if(item.image.substr(0, 4) == "/9j/") // Image is base64 encoded  			{  				QByteArray data = QByteArray::fromBase64(QByteArray(item.image.data(), item.image.size())); @@ -107,18 +108,27 @@ void MainWindow::readDatabase()  			{  				image = QImage::fromData((const uchar*)item.image.data(), item.image.size());  			} -			icon.addPixmap(QPixmap::fromImage(image)); -			listItem->setIcon(icon); +			//image = image.scaled(128, 128, Qt::KeepAspectRatioByExpanding); +			int h = image.height(); +			int w = image.width(); +			if(h > w) +			{ +				image = image.copy({0, (h - w)/2, w, w}); +			} +			else +			{ +				image = image.copy({(w - h)/2, 0, h, h}); +			}  		}  		else  		{ -			QIcon icon; -			QImage image(QSize({1,1}), QImage::Format_RGBA8888); +			image = QImage(QSize({64,64}), QImage::Format_RGBA8888);  			image.fill(0); -			icon.addPixmap(QPixmap::fromImage(image)); -			listItem->setIcon(icon);  		}  		listItem->setData(Qt::UserRole, item.id); + +		icon.addPixmap(QPixmap::fromImage(image)); +		listItem->setIcon(icon);  		listWidget->addItem(listItem);  	}  } | 
