emojier.qml 3.37 KB
Newer Older
Aleix Pol Gonzalez's avatar
Aleix Pol Gonzalez committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
 *  Copyright (C) 2019 Aleix Pol Gonzalez <aleixpol@kde.org>
 *
 *  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) version 3 or any later version
 *  accepted by the membership of KDE e.V. (or its successor approved
 *  by the membership of KDE e.V.), which shall act as a proxy
 *  defined in Section 14 of version 3 of the license.
 *
 *  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.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

import QtQuick 2.11
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.11 as QQC2
import org.kde.kirigami 2.6 as Kirigami
import org.kde.plasma.emoji 1.0

Kirigami.ApplicationWindow
{
    id: window

    EmojiModel {
        id: emoji
    }

    RecentEmojiModel {
        id: recentEmojiModel
    }

    function report(thing, description) {
40
41
        if (!visible)
            return;
Aleix Pol Gonzalez's avatar
Aleix Pol Gonzalez committed
42
43
44
        console.log("Copied to clipboard:", thing)
        CopyHelper.copyTextToClipboard(thing)
        recentEmojiModel.includeRecent(thing, description);
45
        window.showPassiveNotification(i18n("%1 copied to the clipboard", thing))
Aleix Pol Gonzalez's avatar
Aleix Pol Gonzalez committed
46
47
    }

48
49
50
    onVisibilityChanged: {
        if (visible)
            globalDrawer.actions[recentEmojiModel.count === 0 ? 1 : 0].trigger()
Aleix Pol Gonzalez's avatar
Aleix Pol Gonzalez committed
51
52
    }

53
54
55
56
57
58
59
60
61
62
63
    Kirigami.Action {
        id: recentAction
        checked: window.pageStack.get(0).title === text
        text: i18n("Recent")
        enabled: recentEmojiModel.count > 0

        icon.name: "document-open-recent-symbolic"
        onTriggered: {
            window.pageStack.replace("qrc:/ui/CategoryPage.qml", {title: text, category: "", model: recentEmojiModel})
        }
    }
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
    Kirigami.Action {
        id: searchAction
        checked: window.pageStack.get(0).title === text
        text: i18n("Search")
        icon.name: "search"
        shortcut: StandardKey.Find

        onTriggered: {
            window.pageStack.replace("qrc:/ui/CategoryPage.qml", {title: text, category: "", model: emoji, showSearch: true })
        }
    }

    CategoryAction {
        id: allAction
        text: i18n("All")
        icon.name: "view-list-icons"
        category: ""
    }
82

Aleix Pol Gonzalez's avatar
Aleix Pol Gonzalez committed
83
84
85
86
87
88
89
90
91
92
    globalDrawer: Kirigami.GlobalDrawer {
        id: drawer
        title: i18n("Categories")
        collapsible: !topContent.activeFocus
        collapsed: true
        modal: false

        function createCategoryActions(categories) {
            var actions = []
            for(var i in categories) {
93
                var cat = categories[i]
94
                actions.push(cat === ":recent:" ? recentAction :
95
96
                             cat === ":find:"   ? searchAction :
                             cat.length === 0   ? allAction
97
                                                : categoryActionComponent.createObject(drawer, { category: cat }))
Aleix Pol Gonzalez's avatar
Aleix Pol Gonzalez committed
98
99
100
101
102
103
104
105
            }
            return actions;
        }

        actions: createCategoryActions(emoji.categories)

        Component {
            id: categoryActionComponent
106
            CategoryAction {}
Aleix Pol Gonzalez's avatar
Aleix Pol Gonzalez committed
107
108
109
        }
    }
}