Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Weilbach <felix.weilbach@nextcloud.com>2021-09-09 12:18:22 +0300
committerFelix Weilbach <felix.weilbach@nextcloud.com>2021-09-09 12:18:22 +0300
commit8a8d488454405356b5d11f63bebff2d69be43b02 (patch)
treeafa6c5a496561e6778227ece22a6c871622af926 /src/gui/EmojiPicker.qml
parentf34d66302942ede371bf7bc5d5e213b6c41ea5d8 (diff)
Add dialog to set user status
Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
Diffstat (limited to 'src/gui/EmojiPicker.qml')
-rw-r--r--src/gui/EmojiPicker.qml112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/gui/EmojiPicker.qml b/src/gui/EmojiPicker.qml
new file mode 100644
index 000000000..6a66dbdcb
--- /dev/null
+++ b/src/gui/EmojiPicker.qml
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) by Felix Weilbach <felix.weilbach@nextcloud.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 1.15
+
+import com.nextcloud.desktopclient 1.0 as NC
+
+ColumnLayout {
+ NC.EmojiModel {
+ id: emojiModel
+ }
+
+ signal chosen(string emoji)
+
+ spacing: 0
+
+ FontMetrics {
+ id: metrics
+ }
+
+ ListView {
+ id: headerLayout
+ Layout.fillWidth: true
+ implicitWidth: contentItem.childrenRect.width
+ implicitHeight: metrics.height * 2
+
+ orientation: ListView.Horizontal
+
+ model: emojiModel.emojiCategoriesModel
+
+ delegate: ItemDelegate {
+ width: metrics.height * 2
+ height: headerLayout.height
+
+ contentItem: Text {
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: emoji
+ }
+
+ Rectangle {
+ anchors.bottom: parent.bottom
+
+ width: parent.width
+ height: 2
+
+ visible: ListView.isCurrentItem
+
+ color: "grey"
+ }
+
+
+ onClicked: {
+ emojiModel.setCategory(label)
+ }
+ }
+
+ }
+
+ Rectangle {
+ height: 1
+ Layout.fillWidth: true
+ color: "grey"
+ }
+
+ GridView {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.preferredHeight: metrics.height * 8
+
+ cellWidth: metrics.height * 2
+ cellHeight: metrics.height * 2
+
+ boundsBehavior: Flickable.DragOverBounds
+ clip: true
+
+ model: emojiModel.model
+
+ delegate: ItemDelegate {
+
+ width: metrics.height * 2
+ height: metrics.height * 2
+
+ contentItem: Text {
+ anchors.centerIn: parent
+ text: modelData === undefined ? "" : modelData.unicode
+ }
+
+ onClicked: {
+ chosen(modelData.unicode);
+ emojiModel.emojiUsed(modelData);
+ }
+ }
+
+ ScrollBar.vertical: ScrollBar {}
+
+ }
+
+}