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;
- }
- }
-}