Skip to content
Snippets Groups Projects
Verified Commit 58cfc39a authored by Nicolas Werner's avatar Nicolas Werner
Browse files

Fix StickerPicker padding and names of unnamed packs

parent 7fab9a1d
No related branches found
No related tags found
No related merge requests found
...@@ -138,6 +138,8 @@ Menu { ...@@ -138,6 +138,8 @@ Menu {
section.delegate: sectionHeading section.delegate: sectionHeading
section.labelPositioning: ViewSection.InlineLabels | ViewSection.CurrentLabelAtStart section.labelPositioning: ViewSection.InlineLabels | ViewSection.CurrentLabelAtStart
spacing: Nheko.paddingSmall
ScrollHelper { ScrollHelper {
flickable: parent flickable: parent
anchors.fill: parent anchors.fill: parent
...@@ -148,38 +150,40 @@ Menu { ...@@ -148,38 +150,40 @@ Menu {
delegate: Row { delegate: Row {
required property var row; required property var row;
spacing: Nheko.paddingSmall
Repeater { Repeater {
model: row model: row
delegate: AbstractButton { delegate: AbstractButton {
width: stickerDim width: stickerDim
height: stickerDim height: stickerDim
hoverEnabled: true hoverEnabled: true
ToolTip.text: ":" + modelData.shortcode + ": - " + modelData.body ToolTip.text: ":" + modelData.shortcode + ": - " + modelData.body
ToolTip.visible: hovered ToolTip.visible: hovered
// TODO: maybe add favorites at some point? // TODO: maybe add favorites at some point?
onClicked: { onClicked: {
console.debug("Picked " + modelData.descriptor); console.debug("Picked " + modelData.descriptor);
stickerPopup.close(); stickerPopup.close();
callback(modelData.descriptor); callback(modelData.descriptor);
} }
contentItem: Image { contentItem: Image {
height: stickerDim height: stickerDim
width: stickerDim width: stickerDim
source: modelData.url.replace("mxc://", "image://MxcImage/") + "?scale" source: modelData.url.replace("mxc://", "image://MxcImage/") + "?scale"
fillMode: Image.PreserveAspectFit 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 { ScrollBar.vertical: ScrollBar {
id: emojiScroll id: emojiScroll
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <algorithm> #include <algorithm>
#include "Cache.h"
#include "Cache_p.h" #include "Cache_p.h"
Q_DECLARE_METATYPE(StickerImage) Q_DECLARE_METATYPE(StickerImage)
...@@ -104,7 +105,7 @@ GridImagePackModel::data(const QModelIndex &index, int role) const ...@@ -104,7 +105,7 @@ GridImagePackModel::data(const QModelIndex &index, int role) const
const auto &pack = packs[rowToPack[index.row()]]; const auto &pack = packs[rowToPack[index.row()]];
switch (role) { switch (role) {
case Roles::PackName: case Roles::PackName:
return pack.packname; return nameFromPack(pack);
case Roles::Row: { case Roles::Row: {
std::size_t offset = static_cast<std::size_t>(index.row()) - pack.firstRow; std::size_t offset = static_cast<std::size_t>(index.row()) - pack.firstRow;
QList<StickerImage> imgs; QList<StickerImage> imgs;
...@@ -135,7 +136,7 @@ GridImagePackModel::data(const QModelIndex &index, int role) const ...@@ -135,7 +136,7 @@ GridImagePackModel::data(const QModelIndex &index, int role) const
switch (role) { switch (role) {
case Roles::PackName: case Roles::PackName:
return pack.packname; return nameFromPack(pack);
case Roles::Row: { case Roles::Row: {
QList<StickerImage> imgs; QList<StickerImage> imgs;
for (auto img = firstIndex; for (auto img = firstIndex;
...@@ -162,6 +163,25 @@ GridImagePackModel::data(const QModelIndex &index, int role) const ...@@ -162,6 +163,25 @@ GridImagePackModel::data(const QModelIndex &index, int role) const
return {}; 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 void
GridImagePackModel::setSearchString(QString key) GridImagePackModel::setSearchString(QString key)
{ {
......
...@@ -85,4 +85,6 @@ private: ...@@ -85,4 +85,6 @@ private:
trie<uint, std::pair<std::uint32_t, std::uint32_t>> trie_; 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::pair<std::uint32_t, std::uint32_t>> currentSearchResult;
std::vector<std::size_t> rowToFirstRowEntryFromSearch; std::vector<std::size_t> rowToFirstRowEntryFromSearch;
QString nameFromPack(const PackDesc &pack) const;
}; };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment