File: SimpleMenuButton.qml

package info (click to toggle)
pybik 3.0-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 13,280 kB
  • sloc: python: 11,362; cpp: 5,116; xml: 264; makefile: 50; sh: 2
file content (80 lines) | stat: -rw-r--r-- 2,876 bytes parent folder | download | duplicates (3)
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
//  Copyright © 2016  B. Clausius <barcc@gmx.de>
//
//  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 3 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.
//
//  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.4
import QtQuick.Controls 1.3

ToolButton {
    id: root
    tooltip: ctx.tr_tooltip("Menu")
    checkable: true
    iconName: "format-justify-fill" //XXX: hmm
    property var model
    
    Rectangle {
        anchors.top: root.bottom
        anchors.right: root.right
        visible: root.checked
        border.width: 1
        implicitHeight: column.implicitHeight + 2
        width: column.width + 2
        
        Column {
            id: column
            x: 1
            y: 1
            z: 2
            width: repeater.width + ctx.gu(6)
            Repeater {
                id: repeater
                model: root.model
                
                Rectangle {
                    width: column.width
                    height: label.height + ctx.gu(6)
                    color: mousearea.containsMouse ? palette.highlight : palette.button
                    Label {
                        id: label
                        Component.onCompleted: repeater.width = Math.max(width, repeater.width)
                        x: ctx.gu(3)
                        y: ctx.gu(3)
                        text: modelData.text
                        color: mousearea.containsMouse ? palette.highlightedText : palette.buttonText
                    }
                    MouseArea {
                        id: mousearea
                        anchors.fill: parent
                        hoverEnabled: true
                        onClicked: { modelData.trigger(); root.checked = false }
                    }
                }
            }
        }
        MouseArea {
            visible: root.checked
            property var rootitem: ctx.rootitem()
            property var pos: Qt.point(0,0)
            x: -pos.x
            y: -pos.y
            width: rootitem.width
            height: rootitem.height
            onVisibleChanged: if (visible && rootitem) pos = parent.mapToItem(rootitem, 0, 0)
                                                       // == ctx.absolute_pos(parent, 0, 0)
            onClicked: root.checked = false
            //Rectangle { anchors.fill: parent; color: '#7700ff00' }
        }
    }
}