summaryrefslogtreecommitdiffstats
path: root/qt-mobile/qml/mobilecomponents/ApplicationWindow.qml
blob: 0eaa81ec049b2d14c0cbd29408acc83f33596d4a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
 *   Copycontext 2015 Marco Martin <mart@kde.org>
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU Library General Public License as
 *   published by the Free Software Foundation; either version 2 or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU Library General Public License for more details
 *
 *   You should have received a copy of the GNU Library General Public
 *   License along with this program; if not, write to the
 *   Free Software Foundation, Inc.,
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

import QtQuick 2.1
import QtQuick.Controls 1.3
import "private"
import org.kde.plasma.mobilecomponents 0.2

/**
 * A window that provides some basic features needed for all apps
 *
 * It's usually used as a root QML component for the application.
 * It's based around the PageRow component, the application will be
 * about pages adding and removal.
 */
ApplicationWindow {
    id: root

    /**
     * The first page that will be loaded when the application starts
     */
    property alias initialPage: __pageStack.initialPage

    /**
     * The stack used to allocate the pages and to manage the transitions
     * between them.
     * It's using a PageRow, while having the same API as PageStack,
     * it positions the pages as adjacent columns, with as many columns
     * as can fit in the screen. An handheld device would usually have a single
     * fullscreen column, a tablet device would have many tiled columns.
     */
    property alias pageStack: __pageStack

    function showPassiveNotification(message, timeout, actionText, callBack) {
        if (!__actionButton.__passiveNotification) {
            var component = Qt.createComponent("private/PassiveNotification.qml");
            __actionButton.__passiveNotification = component.createObject(contentItem.parent);
        }

        __actionButton.__passiveNotification.showNotification(message, timeout, actionText, callBack);
    }

    PageRow {
        id: __pageStack
        anchors {
            fill: parent
            bottomMargin: Qt.inputMethod.visible ? (root.y + root.height) - (Qt.
inputMethod.keyboardRectangle.y) : 0
        }
        focus: true
        Keys.onReleased: {
            if (event.key == Qt.Key_Back && stackView.depth > 1) {
                stackView.pop();
                event.accepted = true;
            }
        }
    }

    property AbstractDrawer globalDrawer
    property AbstractDrawer contextDrawer

    onGlobalDrawerChanged: {
        globalDrawer.parent = contentItem.parent;
    }
    onContextDrawerChanged: {
        contextDrawer.parent = contentItem.parent;
    }

    width: Units.gridUnit * 25
    height: Units.gridUnit * 30

/*
    property alias actionButton: __actionButton
    ActionButton {
        id: __actionButton
        //put it there just to make it not accessible bu users
        property Item __passiveNotification
        z: 9999
        anchors.bottom: parent.bottom
        x: parent.width/2 - width/2
        iconSource: "distribute-horizontal-x"

        visible: root.globalDrawer || root.contextDrawer
    }
 */
}