Warning, /frameworks/kirigami/src/controls/ApplicationWindow.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *  SPDX-FileCopyrightText: 2015 Marco Martin <mart@kde.org>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 import QtQuick
0008 import org.kde.kirigami as Kirigami
0009 
0010 /**
0011  * @brief A window that provides some basic features needed for all apps
0012  *
0013  * It's usually used as a root QML component for the application.
0014  * It's based around the PageRow component, the application will be
0015  * about pages adding and removal.
0016  * For most of the usages, this class should be used instead
0017  * of AbstractApplicationWindow
0018  * @see AbstractApplicationWindow
0019  *
0020  * Setting a width and height property on the ApplicationWindow
0021  * will set its initial size, but it won't set it as an automatically binding.
0022  * to resize programmatically the ApplicationWindow they need to
0023  * be assigned again in an imperative fashion
0024  *
0025  * Example usage:
0026  * @code
0027  * import org.kde.kirigami 2.4 as Kirigami
0028  *
0029  * Kirigami.ApplicationWindow {
0030  *  [...]
0031  *     globalDrawer: Kirigami.GlobalDrawer {
0032  *         actions: [
0033  *            Kirigami.Action {
0034  *                text: "View"
0035  *                icon.name: "view-list-icons"
0036  *                Kirigami.Action {
0037  *                        text: "action 1"
0038  *                }
0039  *                Kirigami.Action {
0040  *                        text: "action 2"
0041  *                }
0042  *                Kirigami.Action {
0043  *                        text: "action 3"
0044  *                }
0045  *            },
0046  *            Kirigami.Action {
0047  *                text: "Sync"
0048  *                icon.name: "folder-sync"
0049  *            }
0050  *         ]
0051  *     }
0052  *
0053  *     contextDrawer: Kirigami.ContextDrawer {
0054  *         id: contextDrawer
0055  *     }
0056  *
0057  *     pageStack.initialPage: Kirigami.Page {
0058  *         mainAction: Kirigami.Action {
0059  *             icon.name: "edit"
0060  *             onTriggered: {
0061  *                 // do stuff
0062  *             }
0063  *         }
0064  *         contextualActions: [
0065  *             Kirigami.Action {
0066  *                 icon.name: "edit"
0067  *                 text: "Action text"
0068  *                 onTriggered: {
0069  *                     // do stuff
0070  *                 }
0071  *             },
0072  *             Kirigami.Action {
0073  *                 icon.name: "edit"
0074  *                 text: "Action text"
0075  *                 onTriggered: {
0076  *                     // do stuff
0077  *                 }
0078  *             }
0079  *         ]
0080  *       [...]
0081  *     }
0082  *  [...]
0083  * }
0084  * @endcode
0085  *
0086 */
0087 Kirigami.AbstractApplicationWindow {
0088     id: root
0089 
0090     /**
0091      * @brief This property holds the stack used to allocate the pages and to
0092      * manage the transitions between them.
0093      *
0094      * It's using a PageRow, while having the same API as PageStack,
0095      * it positions the pages as adjacent columns, with as many columns
0096      * as can fit in the screen. An handheld device would usually have a single
0097      * fullscreen column, a tablet device would have many tiled columns.
0098      *
0099      * @property org::kde::kirigami::PageRow pageStack
0100      */
0101     readonly property alias pageStack: __pageStack
0102 
0103     // Redefined here as here we can know a pointer to PageRow.
0104     // We negate the canBeEnabled check because we don't want to factor in the automatic drawer provided by Kirigami for page actions for our calculations
0105     wideScreen: width >= (root.pageStack.defaultColumnWidth) + ((contextDrawer && !(contextDrawer instanceof Kirigami.ContextDrawer)) ? contextDrawer.width : 0) + (globalDrawer ? globalDrawer.width : 0)
0106 
0107     Component.onCompleted: {
0108         pageStack.currentItem?.forceActiveFocus()
0109     }
0110 
0111     Kirigami.PageRow {
0112         id: __pageStack
0113         globalToolBar.style: Kirigami.ApplicationHeaderStyle.Auto
0114         anchors {
0115             fill: parent
0116             // HACK: workaround a bug in android iOS keyboard management
0117             bottomMargin: ((Qt.platform.os === "android" || Qt.platform.os === "ios") || !Qt.inputMethod.visible) ? 0 : Qt.inputMethod.keyboardRectangle.height
0118         }
0119 
0120         focus: true
0121     }
0122 }