Fri, 20 Jan 2023 16:44:08 +0100
Added more buttons to the images tab. Load images from the database and display thumbnails added. Added support for jpeg files. Rename pictures in the database to .png. Added temporary images_list, images_count and images_current variables to the product record.
src/EditProduct.cpp | file | annotate | diff | comparison | revisions | |
src/EditProduct.h | file | annotate | diff | comparison | revisions | |
src/EditProductTab13.cpp | file | annotate | diff | comparison | revisions | |
src/global.h | file | annotate | diff | comparison | revisions | |
translations/bmsapp_en.ts | file | annotate | diff | comparison | revisions | |
translations/bmsapp_nl.ts | file | annotate | diff | comparison | revisions | |
ui/EditProduct.ui | file | annotate | diff | comparison | revisions |
--- a/src/EditProduct.cpp Wed Jan 18 17:08:25 2023 +0100 +++ b/src/EditProduct.cpp Fri Jan 20 16:44:08 2023 +0100 @@ -151,6 +151,8 @@ } } } + product->images_count = -1; /* Not yet loaded */ + product->images_dirty = false; } else { /* New product, set some defaults */ @@ -280,6 +282,8 @@ product->divide_type = product->divide_parts = product->divide_part = 0; product->divide_size = 0; product->divide_factor = 1; + product->images_count = -1; + product->images_dirty = false; } // Tab generic. @@ -755,6 +759,11 @@ /* All signals from tab Images */ connect(ui->addImage, SIGNAL(clicked()), this, SLOT(addImage_clicked())); + connect(ui->delImage, SIGNAL(clicked()), this, SLOT(delImage_clicked())); + connect(ui->nextImage, SIGNAL(clicked()), this, SLOT(nextImage_clicked())); + connect(ui->prevImage, SIGNAL(clicked()), this, SLOT(prevImage_clicked())); + connect(ui->downloadImage, SIGNAL(clicked()), this, SLOT(downloadImage_clicked())); + connect(ui->printImage, SIGNAL(clicked()), this, SLOT(printImage_clicked())); setStage();
--- a/src/EditProduct.h Wed Jan 18 17:08:25 2023 +0100 +++ b/src/EditProduct.h Fri Jan 20 16:44:08 2023 +0100 @@ -259,6 +259,12 @@ void taste_notes_changed(); void addImage_clicked(); + void delImage_clicked(); + void nextImage_clicked(); + void prevImage_clicked(); + void downloadImage_clicked(); + void printImage_clicked(); + void selectImage_clicked(int val); /* Modified progress bars */ void ferment_perc_mash_valueChanged(int value); @@ -378,7 +384,8 @@ bool block_yeast(int stage, int use); void check_waters(); void images_Init(); - bool images_loadFile(const QString &fileName); + void images_Thumbnails(); + void images_Main(int id); }; #endif
--- a/src/EditProductTab13.cpp Wed Jan 18 17:08:25 2023 +0100 +++ b/src/EditProductTab13.cpp Fri Jan 20 16:44:08 2023 +0100 @@ -19,17 +19,107 @@ void EditProduct::images_Init() { - qDebug() << "images_Init()"; + qDebug() << "images_Init()"; // Start spinner - // Clean old picture areas - // Load images data for this product uuid - // Show thumbnails on the left. + + /* + * Clean old picture areas. + */ + + /* + * Load images data for this product uuid. + */ + if (product->images_count < 0) { + QSqlQuery query; + + qDebug() << " loading data"; + query.prepare("SELECT * FROM products_pics WHERE uuid=:uuid"); + query.bindValue(":uuid", product->uuid); + query.exec(); + + if (query.lastError().isValid()) { + qWarning() << "images_init()" << query.lastError(); + QMessageBox::warning(this, tr("Database error"), tr("MySQL error: %1\n%2\n%3") + .arg(query.lastError().nativeErrorCode()).arg(query.lastError().driverText()).arg(query.lastError().databaseText())); + } + product->images_count = 0; + + while (query.next()) { + Images i; + qDebug() << product->images_count << query.value("pic_data").toByteArray().size(); + i.pic_type = query.value("pic_type").toInt(); + i.pic_data = query.value("pic_data").toByteArray(); + i.pic_comment = query.value("pic_comment").toString(); + i.filename = query.value("filename").toString(); + i.timestamp = query.value("timestamp").toDateTime(); + product->images_list.append(i); + product->images_count++; + } + qDebug() << " loaded" << product->images_count << product->images_list.size(); + if (product->images_count < 1) + product->images_current = -1; + else + product->images_current = 0; + } + + images_Thumbnails(); + if (product->images_current >= 0) { + ui->filmStrip->setCurrentRow(product->images_current); + } + images_Main(product->images_current); + // If any, show picture 1 // Stop spinner } +/* + * Show thumbnails on the left. + */ +void EditProduct::images_Thumbnails() +{ + QList<QListWidgetItem*> items = ui->filmStrip->selectedItems(); + foreach(QListWidgetItem * item, items) { + delete ui->filmStrip->takeItem(ui->filmStrip->row(item)); + } + + for (int i = 0; i < product->images_list.size(); i++) { + QListWidgetItem* newItem = new QListWidgetItem(); + QString text = QCoreApplication::translate("PicType", g_prod_pic_types[product->images_list.at(i).pic_type]); + if (product->images_list.at(i).filename != "") + text.append("\n" + product->images_list.at(i).filename); + if (product->images_list.at(i).pic_comment != "") + text.append("\n" + product->images_list.at(i).pic_comment); + // product->images_list.at(i).timestamp + newItem->setText(text); + newItem->setBackground(QColor(0x45,0x53,0x64)); + + QPixmap outPixmap = QPixmap(); + outPixmap.loadFromData(product->images_list.at(i).pic_data); + qDebug() << " " << outPixmap.width() << "x" << outPixmap.height() << "size" << outPixmap.size() << product->images_list.at(i).filename; + if (outPixmap.width() > 320 || outPixmap.height() > 240) + newItem->setIcon(QIcon(outPixmap.scaled(320, 240, Qt::KeepAspectRatio, Qt::SmoothTransformation))); + else + newItem->setIcon(QIcon(outPixmap)); + + ui->filmStrip->addItem(newItem); + } +} + + +void EditProduct::images_Main(int id) +{ + qDebug() << " Main(" << id << ")"; + + ui->prevImage->setEnabled((product->images_count > 0 && product->images_current > 0) ? true:false); + ui->nextImage->setEnabled((product->images_count > 0 && (product->images_current + 1) < product->images_count) ? true:false); + ui->downloadImage->setEnabled((product->images_count > 0) ? true:false); + ui->printImage->setEnabled((product->images_count > 0) ? true:false); + ui->delImage->setEnabled((product->images_count > 0) ? true:false); +} + + void EditProduct::addImage_clicked() { QString fileName; @@ -42,7 +132,7 @@ /* Only a few image formats are valid */ QStringList mimeTypeFilters ({ "image/bmp", "image/gif", "image/jpeg", "image/png", "image/svg+xml" }); dialog1.setMimeTypeFilters(mimeTypeFilters); - dialog1.setNameFilter("Images (*.bmp *.BMP *.gif *.GIF *.jpg *.JPG *.png *.PNG *.svg *.SVG)"); + dialog1.setNameFilter("Images (*.bmp *.BMP *.gif *.GIF *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG *.svg *.SVG)"); dialog1.setAcceptMode(QFileDialog::AcceptOpen); // dialog1.setOption(QFileDialog::DontUseNativeDialog); if (dialog1.exec() != QDialog::Accepted) @@ -66,7 +156,7 @@ QBuffer buffer(&imageByteArray); buffer.open(QIODevice::WriteOnly); - newImage.save(&buffer, "PNG"); + newImage.save(&buffer, "PNG"); /* Convert to lossless .png format. */ /* * Now that we have selected a valid image, create a new dialog so @@ -132,10 +222,10 @@ query.prepare("INSERT INTO products_pics SET uuid=:uuid, pic_type=:pic_type, pic_data=:pic_data, " "pic_comment=:pic_comment, filename=:filename, timestamp=:timestamp"); query.bindValue(":uuid", product->uuid); - query.bindValue(":pic_type", g_prod_pic_types[typeEdit->currentIndex()]); + query.bindValue(":pic_type", typeEdit->currentIndex()); query.bindValue(":pic_data", imageByteArray); query.bindValue(":pic_comment", commentEdit->text()); - query.bindValue(":filename", fi.fileName()); + query.bindValue(":filename", fi.completeBaseName() + ".png"); /* The image is converted to .png */ query.bindValue(":timestamp", fi.lastModified()); query.exec(); @@ -151,3 +241,54 @@ } +void EditProduct::delImage_clicked() +{ + qDebug() << "delImage_clicked()" << product->images_current << ui->filmStrip->currentRow(); +} + + +void EditProduct::nextImage_clicked() +{ + qDebug() << "nextImage_clicked()" << product->images_current << ui->filmStrip->currentRow(); + + if (product->images_count >= 0) { + if ((product->images_current + 1) < product->images_count) { + product->images_current++; + ui->filmStrip->setCurrentRow(product->images_current); + images_Main(product->images_current); + } + } +} + + +void EditProduct::prevImage_clicked() +{ + qDebug() << "prevImage_clicked()" << product->images_current << ui->filmStrip->currentRow(); + + if (product->images_count >= 0) { + if (product->images_current > 0) { + product->images_current--; + ui->filmStrip->setCurrentRow(product->images_current); + images_Main(product->images_current); + } + } +} + + +void EditProduct::downloadImage_clicked() +{ + qDebug() << "downloadImage_clicked()" << product->images_current << ui->filmStrip->currentRow(); +} + + +void EditProduct::printImage_clicked() +{ + qDebug() << "printImage_clicked()" << product->images_current << ui->filmStrip->currentRow(); +} + + +void EditProduct::selectImage_clicked(int val) +{ + qDebug() << "selectImage_clicked()" << val << product->images_current << ui->filmStrip->currentRow(); +} +
--- a/src/global.h Wed Jan 18 17:08:25 2023 +0100 +++ b/src/global.h Fri Jan 20 16:44:08 2023 +0100 @@ -237,6 +237,16 @@ }; +struct Images +{ + int pic_type; + QByteArray pic_data; + QString pic_comment; + QString filename; + QDateTime timestamp; +}; + + struct Equipment { QString name; @@ -687,6 +697,10 @@ double ws_sodium; double ws_magnesium; double ws_total_alkalinity; + QList<Images> images_list; ///< List of loaded images. + int images_count; ///< -1 if not yet loaded. + int images_current; ///< -1 or image in focus. + bool images_dirty; };
--- a/translations/bmsapp_en.ts Wed Jan 18 17:08:25 2023 +0100 +++ b/translations/bmsapp_en.ts Fri Jan 20 16:44:08 2023 +0100 @@ -2336,12 +2336,14 @@ </message> <message> <location filename="../ui/EditProduct.ui" line="55"/> + <location filename="../ui/EditProduct.ui" line="12246"/> <location filename="../src/EditProductTab9.cpp" line="552"/> <source>Save</source> <translation type="unfinished"></translation> </message> <message> <location filename="../ui/EditProduct.ui" line="75"/> + <location filename="../ui/EditProduct.ui" line="12195"/> <location filename="../src/EditProductTab3.cpp" line="74"/> <location filename="../src/EditProductTab3.cpp" line="162"/> <location filename="../src/EditProductTab4.cpp" line="56"/> @@ -2857,7 +2859,7 @@ <location filename="../ui/EditProduct.ui" line="3222"/> <location filename="../ui/EditProduct.ui" line="4072"/> <location filename="../ui/EditProduct.ui" line="4227"/> - <location filename="../ui/EditProduct.ui" line="12142"/> + <location filename="../ui/EditProduct.ui" line="12132"/> <location filename="../src/EditProductExport.cpp" line="866"/> <source>Add</source> <translation type="unfinished"></translation> @@ -4098,12 +4100,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/EditProduct.ui" line="12161"/> + <location filename="../ui/EditProduct.ui" line="12212"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../ui/EditProduct.ui" line="12229"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../ui/EditProduct.ui" line="12282"/> <source>Export</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/EditProduct.ui" line="12178"/> + <location filename="../ui/EditProduct.ui" line="12263"/> + <location filename="../ui/EditProduct.ui" line="12299"/> <source>Print</source> <translation type="unfinished"></translation> </message> @@ -4138,48 +4151,48 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="303"/> + <location filename="../src/EditProduct.cpp" line="307"/> <source>%1, part %2 of %3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="832"/> + <location filename="../src/EditProduct.cpp" line="841"/> <source>BMSapp - Add new product</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="834"/> + <location filename="../src/EditProduct.cpp" line="843"/> <source>BMSapp - Edit %1 - %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="850"/> - <location filename="../src/EditProduct.cpp" line="854"/> + <location filename="../src/EditProduct.cpp" line="859"/> + <location filename="../src/EditProduct.cpp" line="863"/> <source>Edit Product</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="850"/> + <location filename="../src/EditProduct.cpp" line="859"/> <source>Name empty or too short.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="854"/> + <location filename="../src/EditProduct.cpp" line="863"/> <source>No beerstyle selected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="893"/> + <location filename="../src/EditProduct.cpp" line="902"/> <source>Delete product</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="917"/> + <location filename="../src/EditProduct.cpp" line="926"/> <source>Product changed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="917"/> + <location filename="../src/EditProduct.cpp" line="926"/> <source>The product has been modified. Save changes?</source> <translation type="unfinished"></translation> </message> @@ -4304,7 +4317,7 @@ <location filename="../src/EditProductTab5.cpp" line="399"/> <location filename="../src/EditProductTab6.cpp" line="896"/> <location filename="../src/EditProductTab7.cpp" line="306"/> - <location filename="../src/EditProduct.cpp" line="893"/> + <location filename="../src/EditProduct.cpp" line="902"/> <source>Delete %1</source> <translation type="unfinished"></translation> </message> @@ -5225,30 +5238,49 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProductTab13.cpp" line="41"/> + <location filename="../src/EditProductTab13.cpp" line="121"/> <source>Open File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProductTab13.cpp" line="61"/> + <location filename="../src/EditProductTab13.cpp" line="142"/> <source>Cannot load %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProductTab13.cpp" line="89"/> + <location filename="../src/EditProductTab13.cpp" line="170"/> <source>Image here</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProductTab13.cpp" line="97"/> + <location filename="../src/EditProductTab13.cpp" line="180"/> <source>Image type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/EditProductTab13.cpp" line="110"/> + <location filename="../src/EditProductTab13.cpp" line="193"/> <source>Image comment:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../src/EditProductTab13.cpp" line="200"/> + <source>The comment for this image.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/EditProductTab13.cpp" line="43"/> + <location filename="../src/EditProductTab13.cpp" line="225"/> + <source>Database error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/EditProductTab13.cpp" line="43"/> + <location filename="../src/EditProductTab13.cpp" line="225"/> + <source>MySQL error: %1 +%2 +%3</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>EditProfileFerment</name>
--- a/translations/bmsapp_nl.ts Wed Jan 18 17:08:25 2023 +0100 +++ b/translations/bmsapp_nl.ts Fri Jan 20 16:44:08 2023 +0100 @@ -2636,12 +2636,14 @@ </message> <message> <location filename="../ui/EditProduct.ui" line="55"/> + <location filename="../ui/EditProduct.ui" line="12246"/> <location filename="../src/EditProductTab9.cpp" line="552"/> <source>Save</source> <translation>Bewaar</translation> </message> <message> <location filename="../ui/EditProduct.ui" line="75"/> + <location filename="../ui/EditProduct.ui" line="12195"/> <location filename="../src/EditProductTab3.cpp" line="74"/> <location filename="../src/EditProductTab3.cpp" line="162"/> <location filename="../src/EditProductTab4.cpp" line="56"/> @@ -3056,7 +3058,7 @@ <location filename="../ui/EditProduct.ui" line="3222"/> <location filename="../ui/EditProduct.ui" line="4072"/> <location filename="../ui/EditProduct.ui" line="4227"/> - <location filename="../ui/EditProduct.ui" line="12142"/> + <location filename="../ui/EditProduct.ui" line="12132"/> <location filename="../src/EditProductExport.cpp" line="866"/> <source>Add</source> <translation>Nieuw</translation> @@ -4538,12 +4540,23 @@ <translation>Plaatjes</translation> </message> <message> - <location filename="../ui/EditProduct.ui" line="12161"/> + <location filename="../ui/EditProduct.ui" line="12212"/> + <source>Previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../ui/EditProduct.ui" line="12229"/> + <source>Next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../ui/EditProduct.ui" line="12282"/> <source>Export</source> <translation>Exporteer</translation> </message> <message> - <location filename="../ui/EditProduct.ui" line="12178"/> + <location filename="../ui/EditProduct.ui" line="12263"/> + <location filename="../ui/EditProduct.ui" line="12299"/> <source>Print</source> <translation>Print</translation> </message> @@ -4563,7 +4576,7 @@ <translation>Mout</translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="834"/> + <location filename="../src/EditProduct.cpp" line="843"/> <source>BMSapp - Edit %1 - %2</source> <translation>BMSapp - Wijzig %1 - %2</translation> </message> @@ -4611,15 +4624,17 @@ <translation>Zuurstof</translation> </message> <message> + <location filename="../src/EditProductTab13.cpp" line="43"/> + <location filename="../src/EditProductTab13.cpp" line="225"/> <source>Database error</source> - <translation type="vanished">Database fout</translation> + <translation>Database fout</translation> </message> <message> <source>MySQL error: record %1 not found</source> <translation type="vanished">MySQL fout: record %1 niet gevonden</translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="303"/> + <location filename="../src/EditProduct.cpp" line="307"/> <source>%1, part %2 of %3</source> <translation>%1, deel %2 van %3</translation> </message> @@ -4628,7 +4643,7 @@ <translation type="vanished">Koken %1 minuten</translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="832"/> + <location filename="../src/EditProduct.cpp" line="841"/> <source>BMSapp - Add new product</source> <translation>BMSapp - Nieuw product</translation> </message> @@ -4637,41 +4652,43 @@ <translation type="vanished">BMSapp - Wijzig product %1</translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="850"/> - <location filename="../src/EditProduct.cpp" line="854"/> + <location filename="../src/EditProduct.cpp" line="859"/> + <location filename="../src/EditProduct.cpp" line="863"/> <source>Edit Product</source> <translation>Wijzig Product</translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="850"/> + <location filename="../src/EditProduct.cpp" line="859"/> <source>Name empty or too short.</source> <translation>De naam is leeg of te kort.</translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="854"/> + <location filename="../src/EditProduct.cpp" line="863"/> <source>No beerstyle selected.</source> <translation>Geen bierstijl gekozen.</translation> </message> <message> + <location filename="../src/EditProductTab13.cpp" line="43"/> + <location filename="../src/EditProductTab13.cpp" line="225"/> <source>MySQL error: %1 %2 %3</source> - <translation type="vanished">MySQL fout: %1 + <translation>MySQL fout: %1 %2 %3</translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="893"/> + <location filename="../src/EditProduct.cpp" line="902"/> <source>Delete product</source> <translation>Verwijder product</translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="917"/> + <location filename="../src/EditProduct.cpp" line="926"/> <source>Product changed</source> <translation>Product gewijzigd</translation> </message> <message> - <location filename="../src/EditProduct.cpp" line="917"/> + <location filename="../src/EditProduct.cpp" line="926"/> <source>The product has been modified. Save changes?</source> <translation>Het product is gewijzigd. Wijzigingen opslaan?</translation> </message> @@ -4808,7 +4825,7 @@ <location filename="../src/EditProductTab5.cpp" line="399"/> <location filename="../src/EditProductTab6.cpp" line="896"/> <location filename="../src/EditProductTab7.cpp" line="306"/> - <location filename="../src/EditProduct.cpp" line="893"/> + <location filename="../src/EditProduct.cpp" line="902"/> <source>Delete %1</source> <translation>Verwijder %1</translation> </message> @@ -5825,29 +5842,34 @@ <translation>Bevestig dat het proeven gedaan is en opmerkingen ingevuld zijn.</translation> </message> <message> - <location filename="../src/EditProductTab13.cpp" line="41"/> + <location filename="../src/EditProductTab13.cpp" line="121"/> <source>Open File</source> - <translation type="unfinished">Open bestand</translation> - </message> - <message> - <location filename="../src/EditProductTab13.cpp" line="61"/> + <translation>Open bestand</translation> + </message> + <message> + <location filename="../src/EditProductTab13.cpp" line="142"/> <source>Cannot load %1: %2</source> - <translation type="unfinished">Kan niet laden %1: %2</translation> - </message> - <message> - <location filename="../src/EditProductTab13.cpp" line="89"/> + <translation>Kan niet laden %1: %2</translation> + </message> + <message> + <location filename="../src/EditProductTab13.cpp" line="170"/> <source>Image here</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../src/EditProductTab13.cpp" line="97"/> + <translation>Plaatje hier</translation> + </message> + <message> + <location filename="../src/EditProductTab13.cpp" line="180"/> <source>Image type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../src/EditProductTab13.cpp" line="110"/> + <translation>Soort plaatje:</translation> + </message> + <message> + <location filename="../src/EditProductTab13.cpp" line="193"/> <source>Image comment:</source> - <translation type="unfinished"></translation> + <translation>Bijschrift:</translation> + </message> + <message> + <location filename="../src/EditProductTab13.cpp" line="200"/> + <source>The comment for this image.</source> + <translation>Het bijschrift of commentaar bij dit plaatje.</translation> </message> </context> <context>
--- a/ui/EditProduct.ui Wed Jan 18 17:08:25 2023 +0100 +++ b/ui/EditProduct.ui Fri Jan 20 16:44:08 2023 +0100 @@ -12119,20 +12119,10 @@ <attribute name="title"> <string>Images</string> </attribute> - <widget class="QListView" name="filmView"> - <property name="geometry"> - <rect> - <x>10</x> - <y>10</y> - <width>181</width> - <height>451</height> - </rect> - </property> - </widget> <widget class="QPushButton" name="addImage"> <property name="geometry"> <rect> - <x>60</x> + <x>950</x> <y>470</y> <width>80</width> <height>23</height> @@ -12146,6 +12136,137 @@ <normaloff>:/icons/silk/image_add.png</normaloff>:/icons/silk/image_add.png</iconset> </property> </widget> + <widget class="QListWidget" name="filmStrip"> + <property name="geometry"> + <rect> + <x>10</x> + <y>10</y> + <width>346</width> + <height>491</height> + </rect> + </property> + <property name="verticalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOn</enum> + </property> + <property name="horizontalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> + </property> + <property name="tabKeyNavigation"> + <bool>true</bool> + </property> + <property name="defaultDropAction"> + <enum>Qt::IgnoreAction</enum> + </property> + <property name="iconSize"> + <size> + <width>330</width> + <height>330</height> + </size> + </property> + <property name="textElideMode"> + <enum>Qt::ElideRight</enum> + </property> + <property name="movement"> + <enum>QListView::Static</enum> + </property> + <property name="resizeMode"> + <enum>QListView::Fixed</enum> + </property> + <property name="layoutMode"> + <enum>QListView::Batched</enum> + </property> + <property name="spacing"> + <number>5</number> + </property> + <property name="viewMode"> + <enum>QListView::IconMode</enum> + </property> + </widget> + <widget class="QPushButton" name="delImage"> + <property name="geometry"> + <rect> + <x>1060</x> + <y>470</y> + <width>80</width> + <height>23</height> + </rect> + </property> + <property name="text"> + <string>Delete</string> + </property> + <property name="icon"> + <iconset resource="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc"> + <normaloff>:/icons/silk/image_delete.png</normaloff>:/icons/silk/image_delete.png</iconset> + </property> + </widget> + <widget class="QPushButton" name="prevImage"> + <property name="geometry"> + <rect> + <x>390</x> + <y>470</y> + <width>80</width> + <height>23</height> + </rect> + </property> + <property name="text"> + <string>Previous</string> + </property> + <property name="icon"> + <iconset resource="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc"> + <normaloff>:/icons/silk/resultset_previous.png</normaloff>:/icons/silk/resultset_previous.png</iconset> + </property> + </widget> + <widget class="QPushButton" name="nextImage"> + <property name="geometry"> + <rect> + <x>500</x> + <y>470</y> + <width>80</width> + <height>23</height> + </rect> + </property> + <property name="text"> + <string>Next</string> + </property> + <property name="icon"> + <iconset resource="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc"> + <normaloff>:/icons/silk/resultset_next.png</normaloff>:/icons/silk/resultset_next.png</iconset> + </property> + </widget> + <widget class="QPushButton" name="downloadImage"> + <property name="geometry"> + <rect> + <x>670</x> + <y>470</y> + <width>80</width> + <height>23</height> + </rect> + </property> + <property name="text"> + <string>Save</string> + </property> + <property name="icon"> + <iconset resource="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc"> + <normaloff>:/icons/silk/disk.png</normaloff>:/icons/silk/disk.png</iconset> + </property> + </widget> + <widget class="QPushButton" name="printImage"> + <property name="geometry"> + <rect> + <x>780</x> + <y>470</y> + <width>80</width> + <height>23</height> + </rect> + </property> + <property name="text"> + <string>Print</string> + </property> + <property name="icon"> + <iconset resource="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc"> + <normaloff>:/icons/silk/printer.png</normaloff>:/icons/silk/printer.png</iconset> + </property> + </widget> </widget> </widget> <widget class="QPushButton" name="exportButton">