status-desktop/storybook/pages/StatusEmojiPopupPage.qml
Lukáš Tinkl 9d9fb69e3b feat(StatusEmojiPopup): reimplement around C++ EmojiModel
- the new C++ EmojiModel provides a simple wrapper around the existing
JSON to facilitate a faster access and to be able to search/filter in
QML using SFPM
- no more nested GridViews inside Repeaters
- get rid of emoji manipulation and search/filter using JavaScript
- included the C++ script to generate the emojiList.js
2024-09-03 10:19:54 +02:00

93 lines
2.1 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import Qt.labs.settings 1.1
import StatusQ.Core.Theme 0.1
import StatusQ.Core.Utils 0.1 as StatusQUtils
import Storybook 1.0
import utils 1.0
import shared.status 1.0
SplitView {
id: root
orientation: Qt.Vertical
Logs { id: logs }
QtObject {
id: d
property string lastSelectedEmoji: "N/A"
}
Pane {
SplitView.fillWidth: true
SplitView.fillHeight: true
background: Rectangle {
color: Theme.palette.baseColor3
}
Button {
anchors.centerIn: parent
text: "Reopen"
onClicked: emojiPopup.open()
}
Settings {
id: settings
category: "EmojiPopup"
property var recentEmojis: []
property string skinColor
}
StatusEmojiPopup {
id: emojiPopup
height: 440
visible: true
modal: false
anchors.centerIn: parent
settings: settings
emojiModel: StatusQUtils.Emoji.emojiModel
onEmojiSelected: d.lastSelectedEmoji = emoji
}
}
LogsAndControlsPanel {
SplitView.minimumHeight: 200
SplitView.preferredHeight: 200
logsView.logText: logs.logText
ColumnLayout {
anchors.fill: parent
Button {
text: "Clear settings (reload to take effect)"
onClicked: {
settings.recentEmojis = []
settings.skinColor = ""
settings.sync()
}
}
Label {
text: "Last selected: %1 ('%2')".arg(d.lastSelectedEmoji).arg(settings.recentEmojis[0])
}
Button {
text: "Random emoji"
onClicked: d.lastSelectedEmoji = StatusQUtils.Emoji.getRandomEmoji()
}
Item { Layout.fillHeight: true }
}
}
}
// category: Popups
// https://www.figma.com/design/Mr3rqxxgKJ2zMQ06UAKiWL/%F0%9F%92%AC-Chat%E2%8E%9CDesktop?node-id=1006-0&t=VC6BL8H0Il3VbDxX-0