Unity 8
AbstractStage.qml
1 /*
2  * Copyright (C) 2015-2016 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  */
16 
17 import QtQuick 2.4
18 import Ubuntu.Components 1.3
19 import GSettings 1.0
20 
21 Rectangle {
22  id: root
23 
24  color: "#060606"
25 
26  // Controls to be set from outside
27  property bool altTabPressed
28  property url background
29  property bool beingResized
30  property int dragAreaWidth
31  property real dragProgress // How far left the stage has been dragged, used externally by tutorial code
32  property bool interactive
33  property real inverseProgress // This is the progress for left edge drags, in pixels.
34  property bool keepDashRunning: true
35  property real maximizedAppTopMargin
36  property real nativeHeight
37  property real nativeWidth
38  property QtObject orientations
39  property int shellOrientation
40  property int shellOrientationAngle
41  property bool spreadEnabled: true // If false, animations and right edge will be disabled
42  property bool suspended
43  // A Stage should paint a wallpaper etc over its full size but not use the margins for window placement
44  property int leftMargin: 0
45 
46  // To be read from outside
47  property var mainApp: null
48  property var mainAppWindow: null
49  property int mainAppWindowOrientationAngle: 0
50  property bool orientationChangesEnabled
51  property int supportedOrientations: Qt.PortraitOrientation
52  | Qt.LandscapeOrientation
53  | Qt.InvertedPortraitOrientation
54  | Qt.InvertedLandscapeOrientation
55 
56  signal stageAboutToBeUnloaded
57 
58  // Shared code for use in stage implementations
59  GSettings {
60  id: lifecycleExceptions
61  schema.id: "com.canonical.qtmir"
62  }
63 
64  function isExemptFromLifecycle(appId) {
65  var shortAppId = appId.split('_')[0];
66  for (var i = 0; i < lifecycleExceptions.lifecycleExemptAppids.length; i++) {
67  if (shortAppId === lifecycleExceptions.lifecycleExemptAppids[i]) {
68  return true;
69  }
70  }
71  return false;
72  }
73 }