# HG changeset patch # User Michiel Broek # Date 1646473029 -3600 # Node ID dc4b659a320ba817a1cbfc2a29c8cbaa2c72dd66 # Parent ccdc1dbc0ebb03d06bc345906ffe0bce6cba42d5 Added logo load and save in profile setup. diff -r ccdc1dbc0ebb -r dc4b659a320b src/Setup.cpp --- a/src/Setup.cpp Wed Mar 02 11:06:07 2022 +0100 +++ b/src/Setup.cpp Sat Mar 05 10:37:09 2022 +0100 @@ -101,7 +101,12 @@ ui->yeastEdit->setCurrentIndex(pos); connect(ui->yeastEdit, &QComboBox::currentTextChanged, this, &Setup::is_changed); - // query.value(2).toString() logo varchar(1024) + /* logo */ + logoByteArray = query.value(2).toByteArray(); + QPixmap outPixmap = QPixmap(); + outPixmap.loadFromData(logoByteArray); + ui->logoLabel->setPixmap(outPixmap); + ui->logoLabel->adjustSize(); } @@ -112,6 +117,65 @@ } +bool Setup::loadFile(const QString &fileName) +{ + QImageReader reader(fileName); + reader.setAutoTransform(true); + const QImage newImage = reader.read(); + if (newImage.isNull()) { + QMessageBox::information(this, QGuiApplication::applicationDisplayName(), tr("Cannot load %1: %2") + .arg(QDir::toNativeSeparators(fileName), reader.errorString())); + return false; + } + setImage(newImage); + setWindowFilePath(fileName); + is_changed(); + return true; +} + + +void Setup::setImage(const QImage &newImage) +{ + image = newImage; + + qDebug() << "setImage" << image.width() << image.height() << "size" << image.sizeInBytes(); + + QBuffer buffer(&logoByteArray); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "PNG"); // writes image into logoByteArray in PNG format + + ui->logoLabel->setPixmap(QPixmap::fromImage(image)); + scaleFactor = 1.0; + +// ui->logoLabel->resize(scaleFactor * ui->logoLabel->pixmap(Qt::ReturnByValue).size()); + ui->logoLabel->adjustSize(); +} + + +void Setup::on_openButton_clicked() +{ + static bool firstDialog = true; + + qDebug() << "Setup open"; + + QFileDialog dialog(this, tr("Open File")); + + if (firstDialog) { + firstDialog = false; + const QStringList picturesLocations = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation); + dialog.setDirectory(picturesLocations.isEmpty() ? QDir::currentPath() : picturesLocations.last()); + } + + /* Only a few image formats are valid */ + QStringList mimeTypeFilters ({ "image/bmp", "image/gif", "image/jpeg", "image/png", "image/svg+xml" }); + dialog.setMimeTypeFilters(mimeTypeFilters); + dialog.setNameFilter("Images (*.bmp *.BMP *.gif *.GIF *.jpg *.JPG *.png *.PNG *.svg *.SVG)"); + dialog.setAcceptMode(QFileDialog::AcceptOpen); + + while (dialog.exec() == QDialog::Accepted && !loadFile(dialog.selectedFiles().constFirst())) {} +} + + /* * Also called from the Quit button if there are changes to save. */ @@ -131,10 +195,11 @@ /* * Update all other data */ - query.prepare("UPDATE profile_setup SET brewery_name=:brewery, factor_mashhop=:mashhop, factor_fwh=:fwh, factor_pellet=:pellet, " - "factor_plug=:plug, factor_wethop=:wet, factor_cryohop=:cryo, color_method=:color, ibu_method=:ibu, " + query.prepare("UPDATE profile_setup SET brewery_name=:brewery, brewery_logo=:logo, factor_mashhop=:mashhop, factor_fwh=:fwh, " + "factor_pellet=:pellet, factor_plug=:plug, factor_wethop=:wet, factor_cryohop=:cryo, color_method=:color, ibu_method=:ibu, " "brix_correction=:brix, grain_absorbtion=:grain, default_water=:water, my_yeastlab=:yeast WHERE record='1'"); query.bindValue(":brewery", ui->breweryEdit->text()); + query.bindValue(":logo", logoByteArray); query.bindValue(":mashhop", ui->mashhopEdit->value()); query.bindValue(":fwh", ui->fwhEdit->value()); query.bindValue(":pellet", ui->pelletEdit->value()); diff -r ccdc1dbc0ebb -r dc4b659a320b src/Setup.h --- a/src/Setup.h Wed Mar 02 11:06:07 2022 +0100 +++ b/src/Setup.h Sat Mar 05 10:37:09 2022 +0100 @@ -2,6 +2,11 @@ #define _SETUP_H #include +#include + +QT_BEGIN_NAMESPACE +class QLabel; +QT_END_NAMESPACE namespace Ui { class Setup; @@ -14,17 +19,24 @@ public: explicit Setup(QWidget *parent = nullptr); ~Setup(); + bool loadFile(const QString &); signals: void firstWindow(); private slots: + void on_openButton_clicked(); void on_quitButton_clicked(); void on_saveButton_clicked(); void is_changed(); private: Ui::Setup *ui; + QByteArray logoByteArray; + QImage image; + double scaleFactor = 1; + + void setImage(const QImage &newImage); bool fieldIsChanged = false; }; diff -r ccdc1dbc0ebb -r dc4b659a320b src/bmsapp.h --- a/src/bmsapp.h Wed Mar 02 11:06:07 2022 +0100 +++ b/src/bmsapp.h Sat Mar 05 10:37:09 2022 +0100 @@ -22,6 +22,13 @@ #include #include +#include +#include +#include +#include +#include +#include + #include "Utils.h" #include "database/database.h" diff -r ccdc1dbc0ebb -r dc4b659a320b translations/bmsapp_en.ts --- a/translations/bmsapp_en.ts Wed Mar 02 11:06:07 2022 +0100 +++ b/translations/bmsapp_en.ts Sat Mar 05 10:37:09 2022 +0100 @@ -973,8 +973,8 @@ - - + + Yes @@ -2810,24 +2810,34 @@ - - - - + + + + Choose color - + + Logo here + + + + Quit - + Save + + Load logo + + + Choose default water @@ -2838,24 +2848,34 @@ - + + Cannot load %1: %2 + + + + + Open File + + + + Database error - + MySQL error: %1 %2 %3 - + Setup changed - + The setup has been modified Save changes? diff -r ccdc1dbc0ebb -r dc4b659a320b translations/bmsapp_nl.ts --- a/translations/bmsapp_nl.ts Wed Mar 02 11:06:07 2022 +0100 +++ b/translations/bmsapp_nl.ts Sat Mar 05 10:37:09 2022 +0100 @@ -995,8 +995,8 @@ Altijd in voorraad: - - + + Yes Ja @@ -2850,24 +2850,34 @@ Plato naar Brix correctie factor. - - - - + + + + Choose color Kies kleur - + + Logo here + Logo komt hier + + + Quit Terug - + Save Bewaar + + Load logo + Laad logo + + Choose default water Kies standaard water @@ -2878,12 +2888,22 @@ Kies laboratorium - + + Cannot load %1: %2 + Kan niet laden %1: %2 + + + + Open File + Open bestand + + + Database error Database fout - + MySQL error: %1 %2 %3 @@ -2892,12 +2912,12 @@ %3 - + Setup changed Instellingen gewijzigd - + The setup has been modified Save changes? De instellingen zijn gewijzigd diff -r ccdc1dbc0ebb -r dc4b659a320b ui/Setup.ui --- a/ui/Setup.ui Wed Mar 02 11:06:07 2022 +0100 +++ b/ui/Setup.ui Sat Mar 05 10:37:09 2022 +0100 @@ -322,7 +322,7 @@ - 440 + 400 120 161 20 @@ -338,7 +338,7 @@ - 440 + 400 150 161 20 @@ -378,7 +378,7 @@ - 850 + 800 120 121 16 @@ -394,7 +394,7 @@ - 850 + 800 150 121 16 @@ -410,7 +410,7 @@ - 850 + 800 180 121 16 @@ -426,7 +426,7 @@ - 850 + 800 210 121 16 @@ -442,7 +442,7 @@ - 620 + 580 120 101 24 @@ -479,7 +479,7 @@ - 620 + 580 150 101 24 @@ -513,7 +513,7 @@ - 990 + 940 120 161 23 @@ -538,7 +538,7 @@ - 990 + 940 150 161 23 @@ -563,7 +563,7 @@ - 990 + 940 180 211 23 @@ -588,7 +588,7 @@ - 990 + 940 210 211 23 @@ -610,27 +610,27 @@ Choose color - - - - - - - 0 - 24 - - - - - 16777215 - 24 - - + + + + 940 + 260 + 211 + 211 + + + + Logo here + + + Qt::AlignCenter + + - 10 - 0 + 50 + 590 80 23 @@ -646,8 +646,8 @@ - 1170 - 0 + 1130 + 590 80 23 @@ -660,6 +660,23 @@ :icons/silk/disk.png:icons/silk/disk.png + + + + 810 + 260 + 111 + 23 + + + + Load logo + + + + :/icons/silk/folder_picture.png:/icons/silk/folder_picture.png + +