Warning, /network/neochat/src/qml/EmojiTonesPicker.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2022 Tobias Fella <tobias.fella@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 import QtQuick
0005 import QtQuick.Controls as QQC2
0006 import org.kde.kirigami as Kirigami
0007 
0008 import org.kde.neochat
0009 
0010 QQC2.Popup {
0011     id: root
0012 
0013     signal chosen(string emoji)
0014 
0015     Component.onCompleted: {
0016         tonesList.currentIndex = 0;
0017         tonesList.forceActiveFocus();
0018     }
0019 
0020     required property string shortName
0021     required property string unicode
0022     required property int categoryIconSize
0023     width: root.categoryIconSize * tonesList.count + 2 * padding
0024     height: root.categoryIconSize + 2 * padding
0025     y: -height
0026     padding: 2
0027     modal: true
0028     dim: true
0029     clip: false
0030     onOpened: x = Math.min(parent.mapFromGlobal(QQC2.Overlay.overlay.width - root.width, 0).x, -(width - parent.width) / 2)
0031     background: Kirigami.ShadowedRectangle {
0032         color: Kirigami.Theme.backgroundColor
0033         radius: Kirigami.Units.mediumSpacing
0034         shadow {
0035             size: Kirigami.Units.largeSpacing
0036             color: Qt.rgba(0.0, 0.0, 0.0, 0.3)
0037             yOffset: 2
0038         }
0039         border {
0040             color: Kirigami.ColorUtils.tintWithAlpha(color, Kirigami.Theme.textColor, 0.15)
0041             width: 1
0042         }
0043     }
0044 
0045     ListView {
0046         id: tonesList
0047         width: parent.width
0048         height: parent.height
0049         orientation: Qt.Horizontal
0050         model: EmojiModel.tones(root.shortName)
0051         keyNavigationEnabled: true
0052         keyNavigationWraps: true
0053 
0054         delegate: EmojiDelegate {
0055             id: emojiDelegate
0056             checked: tonesList.currentIndex === model.index
0057             emoji: modelData.unicode
0058             name: modelData.shortName
0059 
0060             width: root.categoryIconSize
0061             height: width
0062 
0063             Keys.onEnterPressed: clicked()
0064             Keys.onReturnPressed: clicked()
0065             onClicked: {
0066                 root.chosen(modelData.unicode);
0067                 EmojiModel.emojiUsed(modelData);
0068                 root.close();
0069             }
0070         }
0071     }
0072 }