19#include "ui_iconchooser.h"
35 connect(ui->chooseFile, &QAbstractButton::clicked,
this, &IconChooser::chooseFile);
36 connect(ui->siteUrl, &QLineEdit::textChanged,
this, &IconChooser::searchIcon);
39void IconChooser::chooseFile()
41 const QString fileTypes =
QSL(
"%3(*.png *.jpg *.jpeg *.gif)").arg(tr(
"Image files"));
42 const QString path =
QzTools::getOpenFileName(
QSL(
"IconChooser-ChangeIcon"),
this, tr(
"Choose icon..."), QDir::homePath(), fileTypes);
48 ui->iconList->clear();
52 auto* item =
new QListWidgetItem(ui->iconList);
55 ui->iconList->setCurrentItem(item);
59void IconChooser::searchIcon(
const QString &
string)
61 if (
string.size() < 4) {
65 ui->iconList->clear();
68 query.prepare(
QSL(
"SELECT icon FROM icons WHERE url GLOB ? LIMIT 20"));
72 while (query.next()) {
73 QImage image = QImage::fromData(query.value(0).toByteArray());
74 if (!image.isNull()) {
75 auto* item =
new QListWidgetItem(ui->iconList);
76 item->setIcon(QPixmap::fromImage(image));
84 int status = QDialog::exec();
86 if (status == QDialog::Accepted) {
87 QList<QListWidgetItem*> selectedItems = ui->iconList->selectedItems();
88 if (!selectedItems.isEmpty()) {
89 icon = selectedItems.at(0)->icon();
95 icon = icon.pixmap(16);
107 : QStyledItemDelegate(parent)
113 QStyleOptionViewItem opt = option;
114 initStyleOption(&opt, index);
116 const QWidget* w = opt.widget;
117 const QStyle* style = w ? w->style() : QApplication::style();
120 opt.showDecorationSelected =
true;
121 style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, w);
124 const int padding = opt.rect.width() / 4;
125 const QIcon icon = index.data(Qt::DecorationRole).value<QIcon>();
126 icon.paint(painter, opt.rect.adjusted(padding, padding, -padding, -padding));
134 return QSize(48, 48);
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
IconChooserDelegate(QWidget *parent=nullptr)
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
IconChooser(QWidget *parent=nullptr)
static SqlDatabase * instance()