diff options
author | Felix Weilbach <felix.weilbach@nextcloud.com> | 2021-09-09 12:18:22 +0300 |
---|---|---|
committer | Felix Weilbach <felix.weilbach@nextcloud.com> | 2021-09-09 12:18:22 +0300 |
commit | 8a8d488454405356b5d11f63bebff2d69be43b02 (patch) | |
tree | afa6c5a496561e6778227ece22a6c871622af926 /src/gui/EmojiPicker.qml | |
parent | f34d66302942ede371bf7bc5d5e213b6c41ea5d8 (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.qml | 112 |
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 {} + + } + +} |