on e7bca7e help sign in
unity8/Components/BasicShell.qml
74 lines 3.1 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 backgroundFallbackSource
37 property url backgroundFinal: (backgroundSource != undefined && backgroundSource != "") ? backgroundSource : (backgroundFallbackSource != undefined && backgroundFallbackSource != "") ? backgroundFallbackSource : shell.defaultBackground
38 onBackgroundFinalChanged: shell.background = backgroundFinal
40 // This is a dummy image that is needed to determine if the picture url
41 // in backgroundSettings points to a valid picture file.
42 // We can't do this with the real background image because setting a
43 // new source in onStatusChanged triggers a binding loop detection
44 // inside Image, which causes it not to render even though a valid source
45 // would be set. We don't mind about this image staying black and just
46 // use it for verification to populate the source for the real
47 // background image.
48 Image {
49 source: shell.background
50 height: 0
51 width: 0
52 sourceSize.height: 0
53 sourceSize.width: 0
54 onStatusChanged: {
55 if (status == Image.Error) {
56 if (source != shell.defaultBackground) {
57 shell.background = defaultBackground
58 } else {
59 // In case even our default background fails to load...
60 shell.background = "data:image/svg+xml,<svg><rect width='100%' height='100%' fill='#000'/></svg>"
61 }
62 }
63 }
64 }
66 VolumeControl {
67 id: volumeControl
68 }
70 Keys.onVolumeUpPressed: volumeControl.volumeUp()
71 Keys.onVolumeDownPressed: volumeControl.volumeDown()
73 focus: true