summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2023-05-19 23:19:04 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2023-05-20 00:57:52 +0200
commit58cfc39ac42633eafb65f17483533ef285b72c38 (patch)
treee44d1607d4056c33a139f17316c650c018ddacf1
parent7fab9a1d73e628ca2371d2215b0198806aa85e94 (diff)
Fix StickerPicker padding and names of unnamed packs
-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;
};