2
* Copyright (C) 2013 Canonical, Ltd.
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; version 3.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18
import "../Components"
19
import "../Components/Math.js" as MathLocal
27
property variant theHud
28
property bool enabled: false
29
readonly property real bottomEdgeButtonCenterDistance: units.gu(34)
30
readonly property real bottomEdgeShowButtonDistance: units.gu(2)
32
property bool __applicationInFocus: false
39
x: MathLocal.clamp(hudButtonRevealer.pressedX - width / 2, 0, bottombar.width - width)
40
y: bottombar.height - bottomEdgeButtonCenterDistance - height / 2 - bottomMargin
41
Behavior on bottomMargin {
42
NumberAnimation{duration: hudButton.opacity < 0.01 ? 200 : 70; easing.type: Easing.OutQuart}
45
if (hudButtonRevealer.draggingArea.pressed) {
46
var mapped = mapFromItem(hudButtonRevealer.draggingArea, hudButtonRevealer.draggingArea.mouseX, hudButtonRevealer.draggingArea.mouseY)
47
return Qt.point(mapped.x, mapped.y)
54
NumberAnimation{ duration: 200; easing.type: Easing.OutCubic}
60
onShownChanged: bottomBarVisibilityCommunicatorShell.forceHidden = theHud.shown
63
function updateApplicationInFocus() {
64
if (shell.applicationManager.mainStageFocusedApplication || shell.applicationManager.sideStageFocusedApplication) {
65
__applicationInFocus = true
67
__applicationInFocus = false
72
target: shell.applicationManager
73
ignoreUnknownSignals: true
74
onMainStageFocusedApplicationChanged: updateApplicationInFocus()
75
onSideStageFocusedApplicationChanged: updateApplicationInFocus()
83
height: bottomEdgeShowButtonDistance
85
showAnimation: StandardAnimation { property: "y"; duration: 350; to: hudButtonRevealer.openedValue; easing.type: Easing.OutCubic }
86
hideAnimation: StandardAnimation { property: "y"; duration: 350; to: hudButtonRevealer.closedValue; easing.type: Easing.OutCubic }
88
if (y == hudButtonRevealer.openedValue)
89
bottombar.state = "shown"
101
property double pressedX
103
enabled: !theHud.shown && bottombar.enabled && __applicationInFocus
104
direction: Qt.RightToLeft
105
openedValue: bottombar.height - height
106
closedValue: bottombar.height
107
target: hudButtonShowable
108
width: hudButtonShowable.width
109
height: hudButtonShowable.height
110
anchors.bottom: bottombar.bottom
116
if (hudButton.opacity != 0 && hudButton.mouseOver) {
117
hudButtonShowable.hide()
120
hudButtonShowable.hide()
126
target: hudButtonShowable.hideAnimation
128
if (hudButtonShowable.hideAnimation.running) {
129
bottombar.state = "hidden"
137
PropertyChanges { target: hudButton; opacity: 0}
138
PropertyChanges { target: hudButton; bottomMargin: units.gu(-1)}
142
PropertyChanges { target: hudButton; opacity: 1}
143
PropertyChanges { target: hudButton; bottomMargin: units.gu(0)}