summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--resources/qml/emoji/StickerPicker.qml58
-rw-r--r--src/GridImagePackModel.cpp24
-rw-r--r--src/GridImagePackModel.h2
3 files changed, 55 insertions, 29 deletions
diff --git a/resources/qml/emoji/StickerPicker.qml b/resources/qml/emoji/StickerPicker.qml
index f84fe06f..ce4d5200 100644
--- a/resources/qml/emoji/StickerPicker.qml
+++ b/resources/qml/emoji/StickerPicker.qml
@@ -138,6 +138,8 @@ Menu {
                 section.delegate: sectionHeading
                 section.labelPositioning: ViewSection.InlineLabels | ViewSection.CurrentLabelAtStart
 
+                spacing: Nheko.paddingSmall
+
                 ScrollHelper {
                     flickable: parent
                     anchors.fill: parent
@@ -148,38 +150,40 @@ Menu {
                 delegate: Row {
                     required property var row;
 
+                    spacing: Nheko.paddingSmall
+
                     Repeater {
                         model: row
 
-                    delegate: AbstractButton {
-                    width: stickerDim
-                    height: stickerDim
-                    hoverEnabled: true
-                    ToolTip.text: ":" + modelData.shortcode + ": - " + modelData.body
-                    ToolTip.visible: hovered
-                    // TODO: maybe add favorites at some point?
-                    onClicked: {
-                        console.debug("Picked " + modelData.descriptor);
-                        stickerPopup.close();
-                        callback(modelData.descriptor);
-                    }
-
-                    contentItem: Image {
-                        height: stickerDim
-                        width: stickerDim
-                        source: modelData.url.replace("mxc://", "image://MxcImage/") + "?scale"
-                        fillMode: Image.PreserveAspectFit
+                        delegate: AbstractButton {
+                            width: stickerDim
+                            height: stickerDim
+                            hoverEnabled: true
+                            ToolTip.text: ":" + modelData.shortcode + ": - " + modelData.body
+                            ToolTip.visible: hovered
+                            // TODO: maybe add favorites at some point?
+                            onClicked: {
+                                console.debug("Picked " + modelData.descriptor);
+                                stickerPopup.close();
+                                callback(modelData.descriptor);
+                            }
+
+                            contentItem: Image {
+                                height: stickerDim
+                                width: stickerDim
+                                source: modelData.url.replace("mxc://", "image://MxcImage/") + "?scale"
+                                fillMode: Image.PreserveAspectFit
+                            }
+
+                            background: Rectangle {
+                                anchors.fill: parent
+                                color: hovered ? Nheko.colors.highlight : 'transparent'
+                                radius: 5
+                            }
+
+                        }
                     }
-
-                    background: Rectangle {
-                        anchors.fill: parent
-                        color: hovered ? Nheko.colors.highlight : 'transparent'
-                        radius: 5
-                    }
-
                 }
-            }
-        }
 
                 ScrollBar.vertical: ScrollBar {
                     id: emojiScroll
diff --git a/src/GridImagePackModel.cpp b/src/GridImagePackModel.cpp
index 59bfae80..59b1725a 100644
--- a/src/GridImagePackModel.cpp
+++ b/src/GridImagePackModel.cpp
@@ -8,6 +8,7 @@
 
 #include <algorithm>
 
+#include "Cache.h"
 #include "Cache_p.h"
 
 Q_DECLARE_METATYPE(StickerImage)
@@ -104,7 +105,7 @@ GridImagePackModel::data(const QModelIndex &index, int role) const
             const auto &pack = packs[rowToPack[index.row()]];
             switch (role) {
             case Roles::PackName:
-                return pack.packname;
+                return nameFromPack(pack);
             case Roles::Row: {
                 std::size_t offset = static_cast<std::size_t>(index.row()) - pack.firstRow;
                 QList<StickerImage> imgs;
@@ -135,7 +136,7 @@ GridImagePackModel::data(const QModelIndex &index, int role) const
 
             switch (role) {
             case Roles::PackName:
-                return pack.packname;
+                return nameFromPack(pack);
             case Roles::Row: {
                 QList<StickerImage> imgs;
                 for (auto img = firstIndex;
@@ -162,6 +163,25 @@ GridImagePackModel::data(const QModelIndex &index, int role) const
     return {};
 }
 
+QString
+GridImagePackModel::nameFromPack(const PackDesc &pack) const
+{
+    if (!pack.packname.isEmpty()) {
+        return pack.packname;
+    }
+
+    if (!pack.state_key.empty()) {
+        return QString::fromStdString(pack.state_key);
+    }
+
+    if (!pack.room_id.empty()) {
+        auto info = cache::singleRoomInfo(pack.room_id);
+        return QString::fromStdString(info.name);
+    }
+
+    return tr("Account Pack");
+}
+
 void
 GridImagePackModel::setSearchString(QString key)
 {
diff --git a/src/GridImagePackModel.h b/src/GridImagePackModel.h
index 06dfe734..8da61b8e 100644
--- a/src/GridImagePackModel.h
+++ b/src/GridImagePackModel.h
@@ -85,4 +85,6 @@ private:
     trie<uint, std::pair<std::uint32_t, std::uint32_t>> trie_;
     std::vector<std::pair<std::uint32_t, std::uint32_t>> currentSearchResult;
     std::vector<std::size_t> rowToFirstRowEntryFromSearch;
+
+    QString nameFromPack(const PackDesc &pack) const;
 };