~elopio/ubuntu-ui-toolkit/tabs_emulator

« back to all changes in this revision

Viewing changes to modules/Ubuntu/Components/Toolbar.qml

  • Committer: Tarmac
  • Author(s): Kaleo
  • Date: 2013-04-26 21:39:15 UTC
  • mfrom: (456.1.4 revert_panel)
  • Revision ID: tarmac-20130426213915-anr7p7memggnghox
Reverted revisions 452 and 455 as it changed some APIs without preserving backwards compatibility.
Released version 0.1.46.

Approved by PS Jenkins bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
    \brief Application toolbar. This class is not exposed because it will
30
30
            be automatically added when a Page defines tools.
31
31
*/
32
 
Panel {
 
32
GenericToolbar {
33
33
    id: toolbar
34
 
    anchors {
35
 
        left: parent.left
36
 
        right: parent.right
37
 
        bottom: parent.bottom
38
 
    }
 
34
    Theming.ItemStyle.class: "toolbar"
 
35
 
39
36
    height: background.height
40
 
 
41
 
    /*!
42
 
      \deprecated
43
 
      Use property bool opened instead.
44
 
     */
45
 
    property alias active: toolbar.opened
 
37
    hintSize: units.gu(2)
 
38
    triggerSize: units.gu(2)
46
39
 
47
40
    /*!
48
41
      \preliminary
50
43
     */
51
44
    property ToolbarActions tools: null
52
45
    onToolsChanged: {
53
 
        if (tools && tools.opened && tools.locked) {
 
46
        if (tools && tools.active && tools.lock) {
54
47
            // toolbar is locked in visible state.
55
48
            internal.visibleTools = tools;
56
 
            opened = true;
57
 
        } else if (!opened && !animating) {
 
49
            active = true;
 
50
        } else if (!active && !animating) {
58
51
            // toolbar is invisible
59
52
            internal.visibleTools = tools;
60
53
        } else {
61
 
            opened = false;
 
54
            active = false;
62
55
            // internal.visibleTools will be updated
63
56
            // when the hide animation is finished
64
57
        }
65
58
    }
66
59
 
67
 
    // if tools is not specified, lock the toolbar in closed position
68
 
    locked: tools ? tools.locked : true
 
60
    // if tools is not specified, lock the toolbar in inactive position
 
61
    lock: tools ? tools.lock : true
69
62
 
70
63
    Connections {
71
64
        target: tools
72
 
        onOpenedChanged: toolbar.opened = tools.opened;
73
 
        onLockedChanged: toolbar.locked = tools.locked;
 
65
        onActiveChanged: toolbar.active = tools.active;
74
66
    }
75
 
    onOpenedChanged: if (tools) tools.opened = toolbar.opened
76
 
    onLockedChanged: if (tools) tools.locked = toolbar.locked
 
67
    onActiveChanged: if (tools) tools.active = toolbar.active
77
68
    QtObject {
78
69
        id: internal
79
70
        property ToolbarActions visibleTools: tools
80
71
    }
81
72
 
82
73
    onAnimatingChanged: {
83
 
        if (!animating && !opened) {
 
74
        if (!animating && !active) {
84
75
            internal.visibleTools = toolbar.tools;
85
76
        }
86
77
    }
87
78
 
88
79
    Item {
89
 
        // FIXME:
90
 
        // All theming items go into the background because only the children
91
 
        //  of the Panel are being shown/hidden while the toolbar
 
80
        // All visual items go into the background because only the children
 
81
        //  of the GenericToolbar are being shown/hidden while the toolbar
92
82
        //  itself may stay in place.
93
83
        id: background
94
84
        anchors {
98
88
        }
99
89
        height: units.gu(8)
100
90
 
101
 
        Theming.ItemStyle.class: "toolbar"
102
 
        // The values of opened and animated properties are used in the delegate
103
 
        property bool opened: toolbar.opened
104
 
        property bool animating: toolbar.animating
 
91
        Theming.ItemStyle.style: toolbar.Theming.ItemStyle.style
 
92
        Theming.ItemStyle.delegate: toolbar.Theming.ItemStyle.delegate
 
93
 
 
94
        MouseArea {
 
95
            // don't let mouse events go through the toolbar
 
96
            anchors.fill: parent
 
97
            // FIXME: Bug in qml? Without onClicked below, this MouseArea
 
98
            //      seems disabled.
 
99
            onClicked: { }
 
100
        }
105
101
    }
106
102
 
107
103
    Component {
108
104
        id: toolButtonComponent
109
 
        Item {
 
105
        Button {
110
106
            id: toolButton
111
107
            Theming.ItemStyle.class: "toolbar-button"
112
 
            property string text: action && action.text ? action.text : ""
113
 
            property url iconSource: action && action.iconSource ? action.iconSource : ""
114
 
            signal clicked()
 
108
            text: action && action.text ? action.text : ""
 
109
            iconSource: action && action.iconSource ? action.iconSource : ""
115
110
            onClicked: action.triggered(toolButton)
116
111
            enabled: action && action.enabled
117
112
            visible: action && action.visible
118
 
            width: units.gu(5)
 
113
            width: visible ? implicitWidth : 0
119
114
            height: toolbar.height
120
115
        }
121
116
    }
131
126
        }
132
127
        onStatusChanged: {
133
128
            if (item && status == Loader.Ready && action && action.itemHint) {
134
 
                if (item.hasOwnProperty("clicked")) item.clicked.connect(backButton.itemTriggered);
135
 
                if (item.hasOwnProperty("accepted")) item.accepted.connect(backButton.itemTriggered);
136
 
                if (item.hasOwnProperty("triggered")) item.accepted.connect(backButton.itemTtriggered);
 
129
                if (item.hasOwnProperty("clicked")) item.clicked.connect(action.triggered);
 
130
                if (item.hasOwnProperty("accepted")) item.accepted.connect(action.triggered);
 
131
                if (item.hasOwnProperty("triggered")) item.accepted.connect(action.triggered);
137
132
            }
138
133
        }
139
 
        signal itemTriggered()
140
 
        onItemTriggered: action.triggered(item)
141
134
    }
142
135
 
143
136
    Row {
148
141
            top: parent.top
149
142
            rightMargin: units.gu(2)
150
143
        }
 
144
        width: childrenRect.width
151
145
        spacing: units.gu(1)
152
146
 
153
147
        Repeater {