on 428ff55 help sign in
unity8/Components/BasicShell.qml
77 lines 3.0 kB history raw
1/*
2 * Copyright (C) 2013 Canonical, Ltd.
3 *
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.
7 *
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.
12 *
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/>.
15 */
17import QtQuick 2.0
18import Ubuntu.Components 0.1
19import Unity.Application 0.1
20import "../Components"
21import "../Components/Math.js" as MathLocal
23FocusScope {
24 id: shell
26 // this is only here to select the width / height of the window if not running fullscreen
27 property bool tablet: false
28 width: tablet ? units.gu(160) : applicationArguments.hasGeometry() ? applicationArguments.width() : units.gu(40)
29 height: tablet ? units.gu(100) : applicationArguments.hasGeometry() ? applicationArguments.height() : units.gu(71)
31 property real edgeSize: units.gu(2)
33 property url defaultBackground: shell.width >= units.gu(60) ? "../graphics/tablet_background.jpg" : "../graphics/phone_background.jpg"
34 property url background
35 property url backgroundSource
36 property url backgroundFinal: backgroundSource != undefined && backgroundSource != "" ? backgroundSource : shell.defaultBackground
37 onBackgroundFinalChanged: shell.background = backgroundFinal
39 // This is a dummy image that is needed to determine if the picture url
40 // in backgroundSettings points to a valid picture file.
41 // We can't do this with the real background image because setting a
42 // new source in onStatusChanged triggers a binding loop detection
43 // inside Image, which causes it not to render even though a valid source
44 // would be set. We don't mind about this image staying black and just
45 // use it for verification to populate the source for the real
46 // background image.
47 Image {
48 source: shell.background
49 height: 0
50 width: 0
51 sourceSize.height: 0
52 sourceSize.width: 0
53 onStatusChanged: {
54 if (status == Image.Error) {
55 if (source != shell.defaultBackground) {
56 shell.background = defaultBackground
57 } else {
58 // In case even our default background fails to load...
59 shell.background = "data:image/svg+xml,<svg><rect width='100%' height='100%' fill='#000'/></svg>"
60 }
61 }
62 }
63 }
65 OSKController {
66 anchors.fill: parent // as needs to know the geometry of the shell
67 }
69 VolumeControl {
70 id: volumeControl
71 }
73 Keys.onVolumeUpPressed: volumeControl.volumeUp()
74 Keys.onVolumeDownPressed: volumeControl.volumeDown()
76 focus: true