From 374ad0a816c039dff3daf54a8d77139350bddaab Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 29 Aug 2021 17:22:49 +0200 Subject: [PATCH] Small image pack editor improvements - add missing mimetype - allow removal of images from pack - allow GIF as a format - don't divide size by 2 if the image is very small already --- resources/qml/dialogs/ImagePackEditorDialog.qml | 17 ++++++++++++++++- src/SingleImagePackModel.cpp | 17 +++++++++++++++++ src/SingleImagePackModel.h | 1 + 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/resources/qml/dialogs/ImagePackEditorDialog.qml b/resources/qml/dialogs/ImagePackEditorDialog.qml index 103f19a9..dda2c1ad 100644 --- a/resources/qml/dialogs/ImagePackEditorDialog.qml +++ b/resources/qml/dialogs/ImagePackEditorDialog.qml @@ -90,7 +90,7 @@ ApplicationWindow { folder: StandardPaths.writableLocation(StandardPaths.PicturesLocation) fileMode: FileDialog.OpenFiles - nameFilters: [qsTr("Stickers (*.png *.webp)")] + nameFilters: [qsTr("Stickers (*.png *.webp *.gif)")] onAccepted: imagePack.addStickers(files) } @@ -265,6 +265,21 @@ ApplicationWindow { Layout.alignment: Qt.AlignRight } + MatrixText { + text: qsTr("Remove from pack") + } + + Button { + text: qsTr("Remove") + onClicked: { + let temp = currentImageIndex; + currentImageIndex = -1; + imagePack.remove(temp); + } + Layout.alignment: Qt.AlignRight + } + + Item { Layout.columnSpan: 2 Layout.fillHeight: true diff --git a/src/SingleImagePackModel.cpp b/src/SingleImagePackModel.cpp index 4eb120d9..6d0f0ad9 100644 --- a/src/SingleImagePackModel.cpp +++ b/src/SingleImagePackModel.cpp @@ -310,11 +310,15 @@ SingleImagePackModel::addStickers(QList files) auto sz = img.size() / 2; if (sz.width() > 512 || sz.height() > 512) { sz.scale(512, 512, Qt::AspectRatioMode::KeepAspectRatio); + } else if (img.height() < 128 && img.width() < 128) { + sz = img.size(); } info.h = sz.height(); info.w = sz.width(); info.size = bytes.size(); + info.mimetype = + QMimeDatabase().mimeTypeForFile(f.toLocalFile()).name().toStdString(); auto filename = f.fileName().toStdString(); http::client()->upload( @@ -334,6 +338,19 @@ SingleImagePackModel::addStickers(QList files) }); } } + +void +SingleImagePackModel::remove(int idx) +{ + if (idx < (int)shortcodes.size() && idx >= 0) { + beginRemoveRows(QModelIndex(), idx, idx); + auto s = shortcodes.at(idx); + shortcodes.erase(shortcodes.begin() + idx); + pack.images.erase(s); + endRemoveRows(); + } +} + void SingleImagePackModel::addImageCb(std::string uri, std::string filename, mtx::common::ImageInfo info) { diff --git a/src/SingleImagePackModel.h b/src/SingleImagePackModel.h index cd38b3b6..60138d36 100644 --- a/src/SingleImagePackModel.h +++ b/src/SingleImagePackModel.h @@ -69,6 +69,7 @@ public: Q_INVOKABLE void save(); Q_INVOKABLE void addStickers(QList files); + Q_INVOKABLE void remove(int index); signals: void globallyEnabledChanged();