summaryrefslogtreecommitdiffstats
path: root/src/webenginequick/ui/TouchSelectionMenu.qml
blob: f42c256bb84417bff08d8c281ac206ea2891ed94 (plain)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// Copyright (C) 2018 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

import QtQuick
import QtQuick.Layouts

Rectangle {
    id: menu

    signal cutTriggered
    signal copyTriggered
    signal pasteTriggered
    signal contextMenuTriggered

    property bool isCutEnabled: false
    property bool isCopyEnabled: false
    property bool isPasteEnabled: false

    property color borderColor: "darkGray"
    property color bgColor: "white"

    radius: 4
    border.color: borderColor
    color: borderColor
    antialiasing: true

    RowLayout {
        anchors.fill: parent
        spacing: parent.border.width
        anchors.margins: parent.border.width

        Rectangle {
            Layout.fillHeight: true
            Layout.fillWidth: true
            radius: menu.radius
            color: bgColor
            visible: isCutEnabled

            Text {
                id: cutText
                anchors.centerIn: parent
                text: "Cut"
            }

            MouseArea {
                anchors.fill: parent
                onPressed: {
                    parent.color = borderColor;
                    cutText.color = "white";
                }
                onReleased: {
                    parent.color = bgColor;
                    cutText.color = "black";
                    cutTriggered();
                }
            }
        }

        Rectangle {
            Layout.fillHeight: true
            Layout.fillWidth: true
            radius: menu.radius
            color: bgColor
            visible: isCopyEnabled

            Text {
                id: copyText
                anchors.centerIn: parent
                text: "Copy"
            }

            MouseArea {
                anchors.fill: parent
                onPressed: {
                    parent.color = borderColor;
                    copyText.color = "white";
                }
                onReleased: {
                    parent.color = bgColor;
                    copyText.color = "black";
                    copyTriggered();
                }
            }
        }

        Rectangle {
            Layout.fillHeight: true
            Layout.fillWidth: true
            radius: menu.radius
            color: bgColor
            visible: isPasteEnabled

            Text {
                id: pasteText
                anchors.centerIn: parent
                text: "Paste"
            }

            MouseArea {
                anchors.fill: parent
                onPressed: {
                    parent.color = borderColor;
                    pasteText.color = "white";
                }
                onReleased: {
                    parent.color = bgColor;
                    pasteText.color = "black";
                    pasteTriggered();
                }
            }
        }

        Rectangle {
            Layout.fillHeight: true
            Layout.fillWidth: true
            radius: menu.radius
            color: bgColor

            Text {
                id: contextMenuText
                anchors.centerIn: parent
                text: "..."
            }

            MouseArea {
                anchors.fill: parent
                onPressed: {
                    parent.color = borderColor;
                    contextMenuText.color = "white";
                }
                onReleased: {
                    parent.color = bgColor;
                    contextMenuText.color = "black";
                    contextMenuTriggered();
                }
            }
        }
    }
}