diff --git a/kirigami.qrc b/kirigami.qrc index 55c9d014..6b9f4651 100644 --- a/kirigami.qrc +++ b/kirigami.qrc @@ -1,82 +1,81 @@ src/controls/AbstractApplicationWindow.qml src/controls/ContextDrawer.qml src/controls/Action.qml src/controls/Page.qml src/controls/PageRow.qml src/controls/AbstractListItem.qml src/controls/Theme.qml src/controls/AbstractCard.qml src/controls/templates/AbstractCard.qml src/controls/Card.qml src/controls/CardsLayout.qml src/controls/CardsListView.qml src/controls/CardsGridView.qml src/controls/ActionToolBar.qml src/controls/templates/InlineMessage.qml src/controls/InlineMessage.qml src/controls/ToolBarApplicationHeader.qml src/controls/private/PrivateActionToolButton.qml src/controls/private/RefreshableScrollView.qml src/controls/private/SwipeItemEventFilter.qml src/controls/private/PageActionPropertyGroup.qml src/controls/private/ActionIconGroup.qml src/controls/private/CornerShadow.qml src/controls/private/ActionButton.qml src/controls/private/DefaultListItemBackground.qml src/controls/private/BannerImage.qml src/controls/private/EdgeShadow.qml src/controls/private/AbstractPageHeader.qml src/controls/private/PageRowGlobalToolBarStyleGroup.qml src/controls/private/PageRowGlobalToolBarUI.qml src/controls/private/PrivateActionToolButton.qml src/controls/private/TitlesPageHeader.qml src/controls/private/ToolBarPageHeader.qml src/controls/private/ActionsMenu.qml src/controls/private/ActionMenuItemQt59.qml src/controls/private/ActionMenuItemBase.qml src/controls/Separator.qml src/controls/OverlayDrawer.qml src/controls/OverlaySheet.qml src/controls/GlobalDrawer.qml src/controls/templates/AbstractListItem.qml src/controls/templates/private/MenuIcon.qml src/controls/templates/private/GenericDrawerIcon.qml src/controls/templates/private/PassiveNotification.qml src/controls/templates/private/ContextIcon.qml src/controls/templates/private/ScrollView.qml src/controls/templates/private/BackButton.qml src/controls/templates/private/IconPropertiesGroup.qml src/controls/templates/private/ForwardButton.qml src/controls/templates/OverlayDrawer.qml src/controls/templates/OverlaySheet.qml src/controls/templates/SwipeListItem.qml src/controls/templates/ApplicationHeader.qml src/controls/templates/AbstractApplicationHeader.qml src/controls/Units.qml src/controls/SwipeListItem.qml src/controls/ApplicationWindow.qml src/controls/AbstractApplicationItem.qml src/controls/ApplicationItem.qml src/controls/ApplicationHeader.qml src/controls/Heading.qml src/controls/ScrollablePage.qml src/controls/Label.qml src/controls/BasicListItem.qml src/controls/AbstractApplicationHeader.qml src/controls/FormLayout.qml src/controls/ListItemDragHandle.qml src/styles/Material/AbstractListItem.qml src/styles/Material/Theme.qml src/styles/Material/SwipeListItem.qml src/styles/Material/Label.qml src/styles/org.kde.desktop/AbstractListItem.qml src/styles/org.kde.desktop/Theme.qml - src/styles/org.kde.desktop/OverlayDrawer.qml src/styles/org.kde.desktop/Units.qml src/styles/org.kde.desktop/SwipeListItem.qml src/styles/org.kde.desktop/ApplicationWindow.qml src/styles/org.kde.desktop/AbstractApplicationHeader.qml diff --git a/src/controls/OverlayDrawer.qml b/src/controls/OverlayDrawer.qml index 96c77d74..317ccc68 100644 --- a/src/controls/OverlayDrawer.qml +++ b/src/controls/OverlayDrawer.qml @@ -1,128 +1,155 @@ /* * Copyright 2016 Marco Martin * * 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 QtGraphicalEffects 1.0 import QtQuick.Templates 2.0 as T2 -import org.kde.kirigami 2.4 +import org.kde.kirigami 2.5 import "private" import "templates" as T /** * Overlay Drawers are used to expose additional UI elements needed for * small secondary tasks for which the main UI elements are not needed. * For example in Okular Active, an Overlay Drawer is used to display * thumbnails of all pages within a document along with a search field. * This is used for the distinct task of navigating to another page. */ T.OverlayDrawer { id: root //BEGIN Properties + focus: false + modal: true + drawerOpen: !modal + closePolicy: modal ? T2.Popup.CloseOnEscape | T2.Popup.CloseOnReleaseOutside : T2.Popup.NoAutoClose + handleVisible: (modal || !drawerOpen) && (typeof(applicationWindow)===typeof(Function) && applicationWindow() ? applicationWindow().controlsVisible : true) + + onPositionChanged: { + if (!modal && !root.peeking && !root.animating) { + position = 1; + } + } + background: Rectangle { color: Theme.backgroundColor Item { parent: root.handle anchors.fill: parent DropShadow { anchors.fill: handleGraphics + visible: !parent.parent.handleAnchor || root.handle.pressed || (root.modal && root.position > 0) horizontalOffset: 0 verticalOffset: Units.devicePixelRatio radius: Units.gridUnit /2 samples: 16 color: Qt.rgba(0, 0, 0, root.handle.pressed ? 0.6 : 0.4) source: handleGraphics } Rectangle { id: handleGraphics anchors.centerIn: parent - Theme.colorSet: Theme.Button + Theme.colorSet: parent.parent.handleAnchor ? parent.parent.handleAnchor.Theme.colorSet : Theme.Button + Theme.backgroundColor: parent.parent.handleAnchor.Theme.backgroundColor + Theme.textColor: parent.parent.handleAnchor.Theme.textColor Theme.inherit: false - color: root.handle.pressed ? Theme.highlightColor : Theme.backgroundColor + color: parent.parent.handleAnchor && !root.visible + ? "transparent" + : (root.handle.pressed ? Theme.highlightColor : Theme.backgroundColor) width: Units.iconSizes.smallMedium + Units.smallSpacing * 2 height: width radius: Units.devicePixelRatio * 2 Loader { anchors.centerIn: parent width: height height: Units.iconSizes.smallMedium source: { var edge = root.edge; if (Qt.application.layoutDirection == Qt.RightToLeft) { if (edge == Qt.LeftEdge) { edge = Qt.RightEdge; } else { edge = Qt.LeftEdge; } } switch(edge) { case Qt.LeftEdge: return Qt.resolvedUrl("templates/private/MenuIcon.qml"); case Qt.RightEdge: { if (root.hasOwnProperty("actions")) { return Qt.resolvedUrl("templates/private/ContextIcon.qml"); } else { return Qt.resolvedUrl("templates/private/GenericDrawerIcon.qml"); } } default: return ""; } } onItemChanged: { if(item) { item.drawer = Qt.binding(function(){return root}); item.color = Qt.binding(function(){return root.handle.pressed ? Theme.highlightedTextColor : Theme.textColor}); } } } Behavior on color { ColorAnimation { duration: Units.longDuration easing.type: Easing.InOutQuad } } } } + Separator { + anchors { + right: root.edge == Qt.RightEdge ? parent.left : (root.edge == Qt.LeftEdge ? undefined : parent.right) + left: root.edge == Qt.LeftEdge ? parent.right : (root.edge == Qt.RightEdge ? undefined : parent.left) + top: root.edge == Qt.TopEdge ? parent.bottom : (root.edge == Qt.BottomEdge ? undefined : parent.top) + bottom: root.edge == Qt.BottomEdge ? parent.top : (root.edge == Qt.TopEdge ? undefined : parent.bottom) + } + visible: !root.modal + } EdgeShadow { z: -2 + visible: root.modal edge: root.edge anchors { right: root.edge == Qt.RightEdge ? parent.left : (root.edge == Qt.LeftEdge ? undefined : parent.right) left: root.edge == Qt.LeftEdge ? parent.right : (root.edge == Qt.RightEdge ? undefined : parent.left) top: root.edge == Qt.TopEdge ? parent.bottom : (root.edge == Qt.BottomEdge ? undefined : parent.top) bottom: root.edge == Qt.BottomEdge ? parent.top : (root.edge == Qt.TopEdge ? undefined : parent.bottom) } opacity: root.position == 0 ? 0 : 1 Behavior on opacity { NumberAnimation { duration: Units.longDuration easing.type: Easing.InOutQuad } } } } } diff --git a/src/controls/private/EdgeShadow.qml b/src/controls/private/EdgeShadow.qml index 188d8490..c4c5da81 100644 --- a/src/controls/private/EdgeShadow.qml +++ b/src/controls/private/EdgeShadow.qml @@ -1,58 +1,58 @@ /* * Copyright 2016 Marco Martin * * 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 QtGraphicalEffects 1.0 import org.kde.kirigami 2.4 LinearGradient { id: shadow /** * edge: enumeration * This property holds the edge of the shadow that will determine * the direction of the gradient. * The acceptable values are: * Qt.TopEdge: The top edge of the content item. * Qt.LeftEdge: The left edge of the content item (default). * Qt.RightEdge: The right edge of the content item. * Qt.BottomEdge: The bottom edge of the content item. */ property int edge: Qt.LeftEdge - width: Units.gridUnit/2 - height: Units.gridUnit/2 + implicitWidth: Units.gridUnit/2 + implicitHeight: Units.gridUnit/2 start: Qt.point((edge != Qt.RightEdge ? 0 : width), (edge != Qt.BottomEdge ? 0 : height)) end: Qt.point((edge != Qt.LeftEdge ? 0 : width), (edge != Qt.TopEdge ? 0 : height)) gradient: Gradient { GradientStop { position: 0.0 color: Qt.rgba(0, 0, 0, 0.2) } GradientStop { position: 0.3 color: Qt.rgba(0, 0, 0, 0.1) } GradientStop { position: 1.0 color: "transparent" } } } diff --git a/src/styles/org.kde.desktop/OverlayDrawer.qml b/src/styles/org.kde.desktop/OverlayDrawer.qml deleted file mode 100644 index 776f1c3f..00000000 --- a/src/styles/org.kde.desktop/OverlayDrawer.qml +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2016 Marco Martin - * - * 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 QtGraphicalEffects 1.0 -import org.kde.kirigami 2.4 -import QtQuick.Templates 2.0 - -import "../../templates" as T - -/** - * Overlay Drawers are used to expose additional UI elements needed for - * small secondary tasks for which the main UI elements are not needed. - * For example in Okular Active, an Overlay Drawer is used to display - * thumbnails of all pages within a document along with a search field. - * This is used for the distinct task of navigating to another page. - * - */ -T.OverlayDrawer { - id: root - -//BEGIN Properties - background: Rectangle { - color: Theme.backgroundColor - - Item { - parent: root.handle - anchors.fill: parent - - DropShadow { - visible: !parent.parent.handleAnchor || root.handle.pressed || (root.modal && root.position > 0) - anchors.fill: handleGraphics - horizontalOffset: 0 - verticalOffset: Units.devicePixelRatio - radius: Units.gridUnit /2 - samples: 16 - color: Qt.rgba(0, 0, 0, root.handle.pressed ? 0.6 : 0.4) - source: handleGraphics - } - Rectangle { - id: handleGraphics - anchors.fill:parent - color: root.handle.pressed ? Theme.highlightColor : Theme.backgroundColor - width: Units.iconSizes.medium - height: width - radius: Units.devicePixelRatio*2 - border.color: parent.parent.handleAnchor && parent.parent.containsMouse ? Theme.hoverColor : "transparent" - Loader { - anchors.centerIn: parent - width: height - height: Units.iconSizes.smallMedium - source: { - var edge = root.edge; - if (Qt.application.layoutDirection == Qt.RightToLeft) { - if (edge == Qt.LeftEdge) { - edge = Qt.RightEdge; - } else { - edge = Qt.LeftEdge; - } - } - switch(edge) { - case Qt.LeftEdge: - return Qt.resolvedUrl("../../templates/private/MenuIcon.qml"); - case Qt.RightEdge: { - if (root.hasOwnProperty("actions")) { - return Qt.resolvedUrl("../../templates/private/ContextIcon.qml"); - } else { - return Qt.resolvedUrl("../../templates/private/GenericDrawerIcon.qml"); - } - } - default: - return ""; - } - } - onItemChanged: { - if(item) { - item.drawer = Qt.binding(function(){return root}); - item.color = Qt.binding(function(){return root.handle.pressed ? Theme.highlightedTextColor : Theme.textColor}); - } - } - } - Behavior on color { - ColorAnimation { - duration: Units.longDuration - easing.type: Easing.InOutQuad - } - } - } - } - - Rectangle { - z: -2 - anchors { - right: root.edge == Qt.RightEdge ? parent.left : (root.edge == Qt.LeftEdge ? undefined : parent.right) - left: root.edge == Qt.LeftEdge ? parent.right : (root.edge == Qt.RightEdge ? undefined : parent.left) - top: root.edge == Qt.TopEdge ? parent.bottom : (root.edge == Qt.BottomEdge ? undefined : parent.top) - bottom: root.edge == Qt.BottomEdge ? parent.top : (root.edge == Qt.TopEdge ? undefined : parent.bottom) - } - color: Theme.textColor - opacity: root.position == 0 ? 0 : 0.3 - width: Units.devicePixelRatio - } - } - - focus: false - //default to a sidebar in desktop mode - modal: true - drawerOpen: !modal - closePolicy: modal ? Popup.CloseOnEscape | Popup.CloseOnReleaseOutside : Popup.NoAutoClose - handleVisible: (modal || !drawerOpen) && (typeof(applicationWindow)===typeof(Function) && applicationWindow() ? applicationWindow().controlsVisible : true) - - onPositionChanged: { - if (!modal && !root.peeking && !root.animating) { - position = 1; - } - } -}