sync with mobilecomponents a85365111 + patches

This is the latest state of the upstream art from Plasma, plus our
patches to disable the gamma effect on the icon, and the drawer removed.

Signed-off-by: Sebastian Kügler <sebas@kde.org>
This commit is contained in:
Sebastian Kügler 2016-01-06 04:40:33 +01:00
parent 8664925e20
commit 548d6fc956
11 changed files with 553 additions and 904 deletions

View file

@ -47,9 +47,22 @@ ApplicationWindow {
*/
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
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) {
@ -76,6 +89,8 @@ ApplicationWindow {
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

View file

@ -25,14 +25,15 @@ import org.kde.plasma.mobilecomponents 0.2
OverlayDrawer {
id: root
property string title
property string title: typeof i18n !== "undefined" ? i18n("Actions") : "Actions"
//This can be any type of object that a ListView can accept as model. It expects items compatible with either QAction or QQC Action
property var actions
property var actions: pageStack.lastVisiblePage ? pageStack.lastVisiblePage.contextualActions : null
enabled: menu.count > 0
edge: Qt.RightEdge
contentItem: QtControls.ScrollView {
implicitWidth: Units.gridUnit * 20
ListView {
id: menu
interactive: contentHeight > height
@ -49,9 +50,8 @@ OverlayDrawer {
root.actions[0];
}
}
verticalLayoutDirection: ListView.BottomToTop
//in bottomtotop all is flipped
footer: Item {
topMargin: menu.height - menu.contentHeight
header: Item {
height: heading.height
width: menu.width
Heading {
@ -66,23 +66,11 @@ OverlayDrawer {
text: root.title
}
}
delegate: ListItem {
delegate: BasicListItem {
enabled: true
RowLayout {
height: implicitHeight + Units.smallSpacing * 2
anchors {
left: parent.left
margins: Units.largeSpacing
}
Icon {
height: parent.height
width: height
source: modelData.iconName
}
Label {
text: model ? model.text : modelData.text
}
}
checked: modelData.checked
icon: modelData.iconName
label: model ? model.text : modelData.text
onClicked: {
if (modelData && modelData.trigger !== undefined) {
modelData.trigger();
@ -92,6 +80,7 @@ OverlayDrawer {
} else {
console.warning("Don't know how to trigger the action")
}
root.opened = false;
}
}
}

View file

@ -142,51 +142,30 @@ OverlayDrawer {
interactive: contentHeight > height
footer: ListItem {
footer: BasicListItem {
visible: level > 0
enabled: true
RowLayout {
height: Units.iconSizes.smallMedium + Units.smallSpacing * 2
anchors {
left: parent.left
}
Icon {
Layout.minimumWidth: height
Layout.maximumWidth: Layout.minimumWidth
Layout.fillHeight: true
source: "go-previous"
}
Label {
text: typeof i18n !== "undefined" ? i18n("Back") : "Back"
}
}
icon: "go-previous"
label: typeof i18n !== "undefined" ? i18n("Back") : "Back"
onClicked: pageRow.pop()
}
delegate: ListItem {
delegate: BasicListItem {
enabled: true
RowLayout {
height: implicitHeight + Units.smallSpacing * 2
checked: modelData.checked
icon: modelData.iconName
label: modelData.text
Icon {
anchors {
left: parent.left
top: parent.top
bottom: parent.bottom
right: parent.right
}
Icon {
Layout.maximumWidth: height
Layout.fillHeight: true
source: modelData.iconName
}
Label {
Layout.fillWidth: true
text: modelData.text
}
Icon {
Layout.minimumWidth: height
Layout.maximumWidth: Layout.minimumWidth
Layout.fillHeight: true
source: "go-next"
visible: modelData.children != undefined
}
width: height
source: "go-next"
visible: modelData.children != undefined
}
onClicked: {
if (modelData.children) {
pageRow.push(menuComponent, {"model": modelData.children, "level": level + 1});

View file

@ -98,41 +98,64 @@ Item {
Rectangle {
id : background
id: shadowHolder
color: Theme.backgroundColor
x: itemMouse.x + itemMouse.width
width: parent.width
height: parent.height
MouseArea {
anchors.fill: parent
onClicked: itemMouse.x = 0;
}
InnerShadow {
anchors.fill: shadowHolder
radius: Units.smallSpacing * 2
samples: 16
horizontalOffset: verticalOffset
verticalOffset: Units.smallSpacing / 2
color: Qt.rgba(0, 0, 0, 0.3)
source: shadowHolder
}
MouseArea {
anchors.fill: parent
drag {
target: itemMouse
axis: Drag.XAxis
maximumX: 0
}
RowLayout {
anchors {
right: parent.right
verticalCenter: parent.verticalCenter
rightMargin: y
}
height: Math.min( parent.height / 1.5, Units.iconSizes.medium)
property bool exclusive: false
property Item checkedButton
spacing: 0
Repeater {
model: {
if (listItem.actions.length == 0) {
return null;
} else {
return listItem.actions[0].text !== undefined &&
listItem.actions[0].trigger !== undefined ?
listItem.actions :
listItem.actions[0];
}
onClicked: itemMouse.x = 0;
onPressed: handleArea.mouseDown(mouse);
onPositionChanged: handleArea.positionChanged(mouse);
onReleased: handleArea.released(mouse);
}
RowLayout {
anchors {
right: parent.right
verticalCenter: parent.verticalCenter
rightMargin: y
}
height: Math.min( parent.height / 1.5, Units.iconSizes.medium)
property bool exclusive: false
property Item checkedButton
spacing: Units.largeSpacing
Repeater {
model: {
if (listItem.actions.length == 0) {
return null;
} else {
return listItem.actions[0].text !== undefined &&
listItem.actions[0].trigger !== undefined ?
listItem.actions :
listItem.actions[0];
}
delegate: ToolButton {
Layout.fillHeight: true
Layout.minimumWidth: height
iconName: modelData.iconName
property bool flat: false
}
delegate: Icon {
Layout.fillHeight: true
Layout.minimumWidth: height
source: modelData.iconName
MouseArea {
anchors {
fill: parent
margins: -Units.smallSpacing
}
onClicked: {
if (modelData && modelData.trigger !== undefined) {
modelData.trigger();
@ -148,45 +171,8 @@ Item {
}
}
}
InnerShadow {
anchors.fill: parent
radius: Units.smallSpacing * 2
samples: 16
horizontalOffset: 0
verticalOffset: Units.smallSpacing / 2
color: Qt.rgba(0, 0, 0, 0.3)
source: background
}
LinearGradient {
id: shadow
//TODO: depends from app layout
property bool inverse: true
width: Units.smallSpacing * 2
anchors {
right: shadow.inverse ? undefined : itemMouse.left
left: shadow.inverse ? itemMouse.right : undefined
top: itemMouse.top
bottom: itemMouse.bottom
rightMargin: -1
}
start: Qt.point(0, 0)
end: Qt.point(Units.smallSpacing*2, 0)
gradient: Gradient {
GradientStop {
position: 0.0
color: shadow.inverse ? Qt.rgba(0, 0, 0, 0.3) : "transparent"
}
GradientStop {
position: shadow.inverse ? 0.3 : 0.7
color: Qt.rgba(0, 0, 0, 0.15)
}
GradientStop {
position: 1.0
color: shadow.inverse ? "transparent" : Qt.rgba(0, 0, 0, 0.3)
}
}
}
MouseArea {
id: itemMouse
property bool changeBackgroundOnPress: !listItem.checked && !listItem.sectionDelegate
@ -223,7 +209,27 @@ Item {
}
}
Timer {
id: speedSampler
interval: 100
repeat: true
property real speed
property real oldItemMouseX
onTriggered: {
speed = itemMouse.x - oldItemMouseX;
oldItemMouseX = itemMouse.x;
}
onRunningChanged: {
if (running) {
speed = 0;
} else {
speed = itemMouse.x - oldItemMouseX;
}
oldItemMouseX = itemMouse.x;
}
}
MouseArea {
id: handleArea
width: Units.iconSizes.smallMedium
height: width
preventStealing: true
@ -236,12 +242,23 @@ Item {
target: itemMouse
axis: Drag.XAxis
maximumX: 0
minimumX: -listItem.width
}
function mouseDown(mouse) {
speedSampler.speed = 0;
speedSampler.running = true;
}
onPressed: mouseDown(mouse);
onCanceled: speedSampler.running = false;
onReleased: {
if (itemMouse.x > -itemMouse.width/2) {
speedSampler.running = false;
if (speedSampler.speed < -Units.gridUnit * 3) {
itemMouse.x = -itemMouse.width + width * 2;
} else if (speedSampler.speed > Units.gridUnit * 3 || itemMouse.x > -itemMouse.width/3) {
itemMouse.x = 0;
} else {
itemMouse.x = -itemMouse.width + width * 2
itemMouse.x = -itemMouse.width + width * 2;
}
}
onClicked: {

View file

@ -37,11 +37,11 @@ Description:
Properties:
bool opened:
If true the drawer is open showing the contents of the "drawer"
component.
component.
Item page:
It's the default property. it's the main content of the drawer page,
the part that is always shown
the part that is always shown
Item contentItem:
It's the part that can be pulled in and out, will act as a sidebar.
@ -53,30 +53,63 @@ AbstractDrawer {
default property alias page: mainPage.data
property Item contentItem
property alias opened: browserFrame.open
property alias opened: mainFlickable.open
property int edge: Qt.LeftEdge
property real position: 0
onContentItemChanged: contentItem.parent = drawerPage
onPositionChanged: {
if (!enabled) {
return;
}
if (root.edge == Qt.LeftEdge) {
browserFrame.x = -browserFrame.width + position * browserFrame.width;
} else {
browserFrame.x = root.width - (position * browserFrame.width);
if (!mainFlickable.flicking && !mainFlickable.dragging && !mainAnim.running) {
switch (root.edge) {
case Qt.RightEdge:
mainFlickable.contentX = drawerPage.width * position;
break;
case Qt.LeftEdge:
mainFlickable.contentX = drawerPage.width * (1-position);
break;
case Qt.BottomEdge:
mainFlickable.contentY = drawerPage.height * position;
break;
}
}
}
onContentItemChanged: {
contentItem.parent = drawerPage
contentItem.anchors.fill = drawerPage
}
function open () {
mouseEventListener.startBrowserFrameX = browserFrame.x;
browserFrame.state = "Dragging";
browserFrame.state = "Open";
mainAnim.to = 0;
switch (root.edge) {
case Qt.RightEdge:
mainAnim.to = drawerPage.width;
break;
case Qt.BottomEdge:
mainAnim.to = drawerPage.height;
break;
case Qt.LeftEdge:
case Qt.TopEdge:
default:
mainAnim.to = 0;
break;
}
mainAnim.running = true;
mainFlickable.open = true;
}
function close () {
mouseEventListener.startBrowserFrameX = browserFrame.x;
browserFrame.state = "Dragging";
browserFrame.state = "Closed";
switch (root.edge) {
case Qt.RightEdge:
case Qt.BottomEdge:
mainAnim.to = 0;
break;
case Qt.LeftEdge:
mainAnim.to = drawerPage.width;
break;
case Qt.TopEdge:
mainAnim.to = drawerPage.height;
break;
}
mainAnim.running = true;
mainFlickable.open = false;
}
Item {
@ -88,236 +121,257 @@ AbstractDrawer {
Rectangle {
anchors.fill: parent
color: "black"
opacity: 0.6 * (root.edge == Qt.LeftEdge
? ((browserFrame.x + browserFrame.width) / browserFrame.width)
: (1 - browserFrame.x / root.width))
opacity: 0.6 * mainFlickable.internalPosition
}
NumberAnimation {
id: mainAnim
target: mainFlickable
properties: (root.edge == Qt.RightEdge || root.edge == Qt.LeftEdge) ? "contentX" : "contentY"
duration: Units.longDuration
easing.type: Easing.InOutQuad
}
MouseArea {
id: edgeMouse
anchors {
right: root.edge == Qt.LeftEdge ? undefined : parent.right
left: root.edge == Qt.LeftEdge ? parent.left : undefined
top: parent.top
bottom: parent.bottom
left: root.edge == Qt.RightEdge ? undefined : parent.left
top: root.edge == Qt.BottomEdge ? undefined : parent.top
bottom: root.edge == Qt.TopEdge ? undefined : parent.bottom
}
z: 99
width: Units.smallSpacing
onPressed: mouseEventListener.managePressed(mouse)
onPositionChanged: mouseEventListener.positionChanged(mouse)
onReleased: mouseEventListener.released(mouse)
}
MouseArea {
id: mouseEventListener
anchors.fill: parent
drag.filterChildren: true
property int startBrowserFrameX
width: Units.smallSpacing * 2
height: Units.smallSpacing * 2
property int startMouseX
property real oldMouseX
property int startMouseY
property real oldMouseY
property bool startDragging: false
property string startState
enabled: browserFrame.state != "Closed"
onPressed: managePressed(mouse)
function managePressed(mouse) {
onPressed: {
if (drawerPage.children.length == 0) {
mouse.accepted = false;
return;
}
speedSampler.restart();
mouse.accepted = true;
startBrowserFrameX = browserFrame.x;
oldMouseX = startMouseX = mouse.x;
oldMouseY = startMouseY = mouse.y;
startDragging = false;
startState = browserFrame.state;
browserFrame.state = "Dragging";
browserFrame.x = startBrowserFrameX;
}
onPositionChanged: {
if (drawerPage.children.length == 0) {
if (!root.contentItem) {
mouse.accepted = false;
return;
}
if (mouse.x < Units.gridUnit ||
Math.abs(mouse.x - startMouseX) > root.width / 5) {
if (Math.abs(mouse.x - startMouseX) > root.width / 5 ||
Math.abs(mouse.y - startMouseY) > root.height / 5) {
startDragging = true;
}
if (startDragging) {
browserFrame.x = root.edge == Qt.LeftEdge
? Math.min(0, browserFrame.x + mouse.x - oldMouseX)
: Math.max(root.width - browserFrame.width, browserFrame.x + mouse.x - oldMouseX);
switch (root.edge) {
case Qt.RightEdge:
mainFlickable.contentX = Math.min(mainItem.width - root.width, mainFlickable.contentX + oldMouseX - mouse.x);
break;
case Qt.LeftEdge:
mainFlickable.contentX = Math.max(0, mainFlickable.contentX + oldMouseX - mouse.x);
break;
case Qt.BottomEdge:
mainFlickable.contentY = Math.min(mainItem.height - root.height, mainFlickable.contentY + oldMouseY - mouse.y);
break;
case Qt.TopEdge:
mainFlickable.contentY = Math.max(0, mainFlickable.contentY + oldMouseY - mouse.y);
break;
}
}
oldMouseX = mouse.x;
oldMouseY = mouse.y;
}
onReleased: {
if (drawerPage.children.length == 0) {
mouse.accepted = false;
return;
}
if (root.edge == Qt.LeftEdge) {
if (mouse.x < Units.gridUnit) {
browserFrame.state = "Closed";
} else if (browserFrame.x - startBrowserFrameX > browserFrame.width / 3) {
browserFrame.state = "Open";
} else if (startBrowserFrameX - browserFrame.x > browserFrame.width / 3) {
browserFrame.state = "Closed";
speedSampler.running = false;
if (speedSampler.speed != 0) {
if (root.edge == Qt.RightEdge || root.edge == Qt.LeftEdge) {
mainFlickable.flick(speedSampler.speed, 0);
} else {
browserFrame.state = startState
mainFlickable.flick(0, speedSampler.speed);
}
} else {
if (mouse.x > width - Units.gridUnit) {
browserFrame.state = "Closed";
} else if (browserFrame.x - startBrowserFrameX > browserFrame.width / 3) {
browserFrame.state = "Closed";
} else if (startBrowserFrameX - browserFrame.x > browserFrame.width / 3) {
browserFrame.state = "Open";
if (mainFlickable.internalPosition > 0.5) {
root.open();
} else {
browserFrame.state = startState;
root.close();
}
}
}
onCanceled: {
if (oldMouseX > width - Units.gridUnit) {
browserFrame.state = "Closed";
} else if (Math.abs(browserFrame.x - startBrowserFrameX) > browserFrame.width / 3) {
browserFrame.state = startState == "Open" ? "Closed" : "Open";
}
Timer {
id: speedSampler
interval: 100
repeat: true
property real speed
property real oldContentX
property real oldContentY
onTriggered: {
if (root.edge == Qt.RightEdge || root.edge == Qt.LeftEdge) {
speed = (mainFlickable.contentX - oldContentX) * 10;
oldContentX = mainFlickable.contentX;
} else {
browserFrame.state = "Open";
speed = (mainFlickable.contentY - oldContentY) * 10;
oldContentY = mainFlickable.contentY;
}
}
onRunningChanged: {
if (running) {
speed = 0;
oldContentX = mainFlickable.contentX;
oldContentY = mainFlickable.contentY;
} else {
if (root.edge == Qt.RightEdge || root.edge == Qt.LeftEdge) {
speed = (oldContentX - mainFlickable.contentX) * 10;
} else {
speed = (oldContentY - mainFlickable.contentY) * 10;
}
}
}
}
MouseArea {
id: mainMouseArea
anchors.fill: parent
drag.filterChildren: true
onClicked: {
if (Math.abs(startMouseX - mouse.x) > Units.gridUnit) {
if ((root.edge == Qt.LeftEdge && mouse.x < drawerPage.width) ||
(root.edge == Qt.RightEdge && mouse.x > drawerPage.x) ||
(root.edge == Qt.TopEdge && mouse.y < drawerPage.height) ||
(root.edge == Qt.BottomEdge && mouse.y > drawerPage.y)) {
return;
}
if ((root.edge == Qt.LeftEdge && mouse.x > browserFrame.width) ||
(root.edge != Qt.LeftEdge && mouse.x < browserFrame.x)) {
browserFrame.state = startState == "Open" ? "Closed" : "Open";
root.clicked();
}
root.clicked();
root.close();
}
Rectangle {
id: browserFrame
z: 100
color: Theme.viewBackgroundColor
anchors {
top: parent.top
bottom: parent.bottom
}
enabled: (root.edge == Qt.LeftEdge && !mainFlickable.atXEnd) ||
(root.edge == Qt.RightEdge && !mainFlickable.atXBeginning) ||
(root.edge == Qt.TopEdge && !mainFlickable.atYEnd) ||
(root.edge == Qt.BottomEdge && !mainFlickable.atYBeginning) ||
mainFlickable.moving
width: {
if (drawerPage.children.length > 0 && drawerPage.children[0].implicitWidth > 0) {
return Math.min( parent.width - Units.gridUnit, drawerPage.children[0].implicitWidth)
} else {
return parent.width - Units.gridUnit * 3
}
}
Flickable {
id: mainFlickable
property bool open
anchors.fill: parent
onXChanged: {
root.position = root.edge == Qt.LeftEdge ? 1 + browserFrame.x/browserFrame.width : (root.width - browserFrame.x)/browserFrame.width;
}
state: "Closed"
onStateChanged: open = (state != "Closed")
property bool open: false
onOpenChanged: {
if (browserFrame.state == "Dragging" || drawerPage.children.length == 0) {
return;
}
if (open) {
browserFrame.state = "Open";
root.open();
} else {
browserFrame.state = "Closed";
root.close();
}
}
enabled: parent.enabled
flickableDirection: root.edge == Qt.LeftEdge || root.edge == Qt.RightEdge ? Flickable.HorizontalFlick : Flickable.VerticalFlick
contentWidth: mainItem.width
contentHeight: mainItem.height
boundsBehavior: Flickable.StopAtBounds
property real internalPosition: {
switch (root.edge) {
case Qt.RightEdge:
return mainFlickable.contentX/drawerPage.width;
case Qt.LeftEdge:
return 1 - (mainFlickable.contentX/drawerPage.width);
case Qt.BottomEdge:
return mainFlickable.contentY/drawerPage.height;
case Qt.TopEdge:
return 1 - (mainFlickable.contentY/drawerPage.height);
}
}
onInternalPositionChanged: {
root.position = internalPosition;
}
LinearGradient {
width: Units.gridUnit/2
anchors {
right: root.edge == Qt.LeftEdge ? undefined : parent.left
left: root.edge == Qt.LeftEdge ? parent.right : undefined
top: parent.top
bottom: parent.bottom
}
opacity: root.position == 0 ? 0 : 1
start: Qt.point(0, 0)
end: Qt.point(Units.gridUnit/2, 0)
gradient: Gradient {
GradientStop {
position: 0.0
color: root.edge == Qt.LeftEdge ? Qt.rgba(0, 0, 0, 0.3) : "transparent"
}
GradientStop {
position: root.edge == Qt.LeftEdge ? 0.3 : 0.7
color: Qt.rgba(0, 0, 0, 0.15)
}
GradientStop {
position: 1.0
color: root.edge == Qt.LeftEdge ? "transparent" : Qt.rgba(0, 0, 0, 0.3)
}
}
Behavior on opacity {
NumberAnimation {
duration: Units.longDuration
easing.type: Easing.InOutQuad
onFlickingChanged: {
if (!flicking) {
if (internalPosition > 0.5) {
root.open();
} else {
root.close();
}
}
}
MouseArea {
id: drawerPage
anchors {
fill: parent
//leftMargin: Units.gridUnit
onMovingChanged: {
if (!moving) {
flickingChanged();
}
clip: true
onChildrenChanged: drawerPage.children[0].anchors.fill = drawerPage
}
states: [
State {
name: "Open"
PropertyChanges {
target: browserFrame
x: root.edge == Qt.LeftEdge ? 0 : root.width - browserFrame.width
}
},
State {
name: "Dragging"
//workaround for a quirkiness of the state machine
//if no x binding gets defined in this state x will be set to whatever last x it had last time it was in this state
PropertyChanges {
target: browserFrame
x: mouseEventListener.startBrowserFrameX
}
},
State {
name: "Closed"
PropertyChanges {
target: browserFrame
x: root.edge == Qt.LeftEdge ? -browserFrame.width : root.width
Item {
id: mainItem
width: root.width + ((root.edge == Qt.RightEdge || root.edge == Qt.LeftEdge) ? drawerPage.width : 0)
height: root.height + ((root.edge == Qt.TopEdge || root.edge == Qt.BottomEdge) ? drawerPage.height : 0)
onWidthChanged: {
if (root.edge == Qt.LeftEdge) {
mainFlickable.contentX = drawerPage.width;
}
}
onHeightChanged: {
if (root.edge == Qt.TopEdge) {
mainFlickable.contentY = drawerPage.Height;
}
}
]
transitions: [
Transition {
//Exclude Dragging
to: "Open,Closed"
NumberAnimation {
id: transitionAnim
properties: "x"
duration: Units.longDuration
easing.type: Easing.InOutQuad
Rectangle {
id: drawerPage
anchors {
left: root.edge != Qt.RightEdge ? parent.left : undefined
right: root.edge != Qt.LeftEdge ? parent.right : undefined
top: root.edge != Qt.BottomEdge ? parent.top : undefined
bottom: root.edge != Qt.TopEdge ? parent.bottom : undefined
}
color: Theme.viewBackgroundColor
clip: true
width: root.contentItem ? Math.min(root.contentItem.implicitWidth, root.width - Units.gridUnit * 2) : 0
height: root.contentItem ? Math.min(root.contentItem.implicitHeight, root.height - Units.gridUnit * 2) : 0
}
LinearGradient {
width: Units.gridUnit/2
height: Units.gridUnit/2
anchors {
right: root.edge == Qt.RightEdge ? drawerPage.left : (root.edge == Qt.LeftEdge ? undefined : parent.right)
left: root.edge == Qt.LeftEdge ? drawerPage.right : (root.edge == Qt.RightEdge ? undefined : parent.left)
top: root.edge == Qt.TopEdge ? drawerPage.bottom : (root.edge == Qt.BottomEdge ? undefined : parent.top)
bottom: root.edge == Qt.BottomEdge ? drawerPage.top : (root.edge == Qt.TopEdge ? undefined : parent.bottom)
}
opacity: root.position == 0 ? 0 : 1
start: Qt.point(0, 0)
end: (root.edge == Qt.RightEdge || root.edge == Qt.LeftEdge) ? Qt.point(Units.gridUnit/2, 0) : Qt.point(0, Units.gridUnit/2)
gradient: Gradient {
GradientStop {
position: 0.0
color: root.edge == Qt.LeftEdge ? Qt.rgba(0, 0, 0, 0.3) : "transparent"
}
GradientStop {
position: root.edge == Qt.LeftEdge ? 0.3 : 0.7
color: Qt.rgba(0, 0, 0, 0.15)
}
GradientStop {
position: 1.0
color: root.edge == Qt.LeftEdge ? "transparent" : Qt.rgba(0, 0, 0, 0.3)
}
}
Behavior on opacity {
NumberAnimation {
duration: Units.longDuration
easing.type: Easing.InOutQuad
}
}
}
]
}
}
}
}

View file

@ -47,23 +47,10 @@ Rectangle {
*/
property alias contextualActions: internalContextualActions.data
property Flickable flickable
Item {
id: internalContextualActions
}
Layout.fillWidth: true
color: "transparent"
/*
Connections {
target: flickable
property real oldContentY: (flickable == null) ? 0 : flickable.contentY
onContentYChanged: {
actionButton.transform[0].y = Math.min(actionButton.height, Math.max(0, actionButton.transform[0].y + (flickable.contentY - oldContentY)));
oldContentY = flickable.contentY;
}
}
*/
}

View file

@ -56,7 +56,7 @@ Item {
property int depth: Engine.getDepth()
property Item currentPage: null
property Item lastVisiblePage
property Item lastVisiblePage: currentPage
property ToolBar toolBar
property variant initialPage
//A column is wide enough for 30 characters
@ -154,7 +154,10 @@ Item {
return;
}
actualRoot.lastVisiblePage = root.children[Math.floor((mainFlickable.contentX + mainFlickable.width - 1)/columnWidth)].page
actualRoot.lastVisiblePage = root.children[Math.floor((mainFlickable.contentX + mainFlickable.width - 1)/columnWidth)].page;
if (!actualRoot.lastVisiblePage) {
actualRoot.lastVisiblePage = actualRoot.currentPage;
}
}
}
}

View file

@ -1,144 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.0"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
id="svg3869"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="go-next.svg">
<defs
id="defs3871">
<linearGradient
id="linearGradient3257">
<stop
offset="0"
style="stop-color:#a50000;stop-opacity:1"
id="stop3259" />
<stop
offset="1"
style="stop-color:#e73800;stop-opacity:1"
id="stop3261" />
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" id="svg3869" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="go-next.svg">
<defs id="defs3871">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
.ColorScheme-Background {
color:#eff0f1;
}
.ColorScheme-Highlight {
color:#3daee9;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground {
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#93cee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground {
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#93cee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}
</style>
<linearGradient id="linearGradient3257">
<stop offset="0" style="stop-color:#a50000;stop-opacity:1" id="stop3259"/>
<stop offset="1" style="stop-color:#e73800;stop-opacity:1" id="stop3261"/>
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4210">
<rect
y="1024.3622"
x="-7"
height="34"
width="34"
id="rect4212"
style="opacity:1;fill:#0000ff;fill-opacity:0.51376145;stroke:none;stroke-opacity:1" />
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4210">
<rect y="1024.3622" x="-7" height="34" width="34" id="rect4212" style="opacity:1;fill:#0000ff;fill-opacity:0.51376145;stroke:none;stroke-opacity:1"/>
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4160">
<rect
style="opacity:1;fill:#aade87;fill-opacity:0.47247709;stroke:none;stroke-opacity:1"
id="rect4162"
width="32"
height="32.000015"
x="-6"
y="1028.3619" />
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4160">
<rect style="opacity:1;fill:#aade87;fill-opacity:0.47247709;stroke:none;stroke-opacity:1" id="rect4162" width="32" height="32.000015" x="-6" y="1028.3619"/>
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.627416"
inkscape:cx="5.4926209"
inkscape:cy="10.264796"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1366"
inkscape:window-height="709"
inkscape:window-x="-4"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:showpageshadow="false"
inkscape:object-nodes="true"
inkscape:snap-bbox="true">
<inkscape:grid
type="xygrid"
id="grid4132" />
<sodipodi:guide
position="4,18"
orientation="18,0"
id="guide4138" />
<sodipodi:guide
position="5,3"
orientation="0,18"
id="guide4140" />
<sodipodi:guide
position="20,2.0000174"
orientation="-18,0"
id="guide4142" />
<sodipodi:guide
position="2,21"
orientation="0,-18"
id="guide4144" />
<sodipodi:guide
position="3,19.000017"
orientation="16,0"
id="guide4146" />
<sodipodi:guide
position="2,4"
orientation="0,16"
id="guide4148" />
<sodipodi:guide
position="21,20"
orientation="-16,0"
id="guide4150" />
<sodipodi:guide
position="2,20"
orientation="0,-16"
id="guide4152" />
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="22.627416" inkscape:cx="5.4926209" inkscape:cy="10.264796" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:window-width="1366" inkscape:window-height="709" inkscape:window-x="-4" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:showpageshadow="false" inkscape:object-nodes="true" inkscape:snap-bbox="true">
<inkscape:grid type="xygrid" id="grid4132"/>
<sodipodi:guide position="4,18" orientation="18,0" id="guide4138"/>
<sodipodi:guide position="5,3" orientation="0,18" id="guide4140"/>
<sodipodi:guide position="20,2.0000174" orientation="-18,0" id="guide4142"/>
<sodipodi:guide position="2,21" orientation="0,-18" id="guide4144"/>
<sodipodi:guide position="3,19.000017" orientation="16,0" id="guide4146"/>
<sodipodi:guide position="2,4" orientation="0,16" id="guide4148"/>
<sodipodi:guide position="21,20" orientation="-16,0" id="guide4150"/>
<sodipodi:guide position="2,20" orientation="0,-16" id="guide4152"/>
</sodipodi:namedview>
<metadata
id="metadata3874">
<metadata id="metadata3874">
<rdf:RDF>
<cc:Work
rdf:about="">
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-326,-532.3622)">
<g
transform="translate(326,-497)"
id="layer1-9"
inkscape:label="Capa 1">
<path
id="rect4176"
transform="translate(-5e-7,1030.3622)"
d="M 7.7070312,3 7,3.7070312 l 6.125,6.125 L 14.292969,11 13.125,12.167969 7,18.292969 7.7070312,19 13.832031,12.875 15.707031,11 13.832031,9.125 7.7070312,3 Z"
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<g inkscape:label="Capa 1" inkscape:groupmode="layer" id="layer1" transform="translate(-326,-532.3622)">
<g transform="translate(326,-497)" id="layer1-9" inkscape:label="Capa 1">
<path id="rect4176" transform="translate(-5e-7,1030.3622)" d="M 7.7070312,3 7,3.7070312 l 6.125,6.125 L 14.292969,11 13.125,12.167969 7,18.292969 7.7070312,19 13.832031,12.875 15.707031,11 13.832031,9.125 7.7070312,3 Z" style="fill:currentColor;fill-opacity:1;stroke:none" inkscape:connector-curvature="0" class="ColorScheme-Text"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4 KiB

View file

@ -1,463 +1,127 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.0"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
id="svg3869"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="go-previous.svg">
<defs
id="defs3871">
<linearGradient
id="linearGradient3257">
<stop
offset="0"
style="stop-color:#a50000;stop-opacity:1"
id="stop3259" />
<stop
offset="1"
style="stop-color:#e73800;stop-opacity:1"
id="stop3261" />
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" id="svg3869" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="go-previous.svg">
<defs id="defs3871">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
.ColorScheme-Background {
color:#eff0f1;
}
.ColorScheme-Highlight {
color:#3daee9;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground {
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#93cee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground {
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#93cee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}
</style>
<linearGradient id="linearGradient3257">
<stop offset="0" style="stop-color:#a50000;stop-opacity:1" id="stop3259"/>
<stop offset="1" style="stop-color:#e73800;stop-opacity:1" id="stop3261"/>
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4210">
<rect
y="1024.3622"
x="-7"
height="34"
width="34"
id="rect4212"
style="opacity:1;fill:#0000ff;fill-opacity:0.51376145;stroke:none;stroke-opacity:1" />
<inkscape:perspective id="perspective4146-36" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-7"/>
<inkscape:perspective id="perspective4146-0" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-8"/>
<inkscape:perspective id="perspective4146-3" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146"/>
<inkscape:perspective id="perspective4146-36-7" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-7-6"/>
<inkscape:perspective id="perspective4146-0-6" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-8-7"/>
<inkscape:perspective id="perspective4146-3-9" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-2"/>
<inkscape:perspective id="perspective4146-36-4" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-7-7"/>
<inkscape:perspective id="perspective4146-0-0" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-8-6"/>
<inkscape:perspective id="perspective4146-3-81" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-6"/>
<inkscape:perspective id="perspective4146-36-7-2" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-7-6-3"/>
<inkscape:perspective id="perspective4146-0-6-4" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-8-7-6"/>
<inkscape:perspective id="perspective4146-3-9-0" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-2-1"/>
<inkscape:perspective id="perspective4146-36-8" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-7-0"/>
<inkscape:perspective id="perspective4146-0-3" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-8-78"/>
<inkscape:perspective id="perspective4146-3-1" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-05"/>
<inkscape:perspective id="perspective4146-36-3" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-7-8"/>
<inkscape:perspective id="perspective4146-0-9" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-8-3"/>
<inkscape:perspective id="perspective4146-3-4" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-9"/>
<inkscape:perspective id="perspective4146-36-7-6" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-7-6-0"/>
<inkscape:perspective id="perspective4146-0-6-7" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-3-8-7-7"/>
<inkscape:perspective id="perspective4146-3-9-7" inkscape:persp3d-origin="12 : 8 : 1" inkscape:vp_z="24 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 12 : 1" sodipodi:type="inkscape:persp3d"/>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146-2-13"/>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4210">
<rect y="1024.3622" x="-7" height="34" width="34" id="rect4212" style="opacity:1;fill:#0000ff;fill-opacity:0.51376145;stroke:none;stroke-opacity:1"/>
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4160">
<rect
style="opacity:1;fill:#aade87;fill-opacity:0.47247709;stroke:none;stroke-opacity:1"
id="rect4162"
width="32"
height="32.000015"
x="-6"
y="1028.3619" />
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4160">
<rect style="opacity:1;fill:#aade87;fill-opacity:0.47247709;stroke:none;stroke-opacity:1" id="rect4162" width="32" height="32.000015" x="-6" y="1028.3619"/>
</clipPath>
<clipPath
id="clipPath4160-4"
clipPathUnits="userSpaceOnUse">
<rect
y="1023.3622"
x="7"
height="1"
width="1"
id="rect4162-5"
style="opacity:1;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-opacity:1" />
<clipPath id="clipPath4160-4" clipPathUnits="userSpaceOnUse">
<rect y="1023.3622" x="7" height="1" width="1" id="rect4162-5" style="opacity:1;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-opacity:1"/>
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath16">
<path
d="m 0,706.465 1490.926,0 L 1490.926,0 0,0 0,706.465 Z"
id="path18" />
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="m 0,706.465 1490.926,0 L 1490.926,0 0,0 0,706.465 Z" id="path18"/>
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath24">
<path
d="m 22.1953,686.117 1447.7347,0 0,-667.1902 -1447.7347,0 L 22.1953,686.117 Z"
id="path26" />
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="m 22.1953,686.117 1447.7347,0 0,-667.1902 -1447.7347,0 L 22.1953,686.117 Z" id="path26"/>
</clipPath>
<inkscape:perspective
id="perspective4146-36"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-7" />
<inkscape:perspective
id="perspective4146-0"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-8" />
<inkscape:perspective
id="perspective4146-3"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146" />
<inkscape:perspective
id="perspective4146-36-7"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-7-6" />
<inkscape:perspective
id="perspective4146-0-6"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-8-7" />
<inkscape:perspective
id="perspective4146-3-9"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-2" />
<inkscape:perspective
id="perspective4146-36-4"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-7-7" />
<inkscape:perspective
id="perspective4146-0-0"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-8-6" />
<inkscape:perspective
id="perspective4146-3-81"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-6" />
<inkscape:perspective
id="perspective4146-36-7-2"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-7-6-3" />
<inkscape:perspective
id="perspective4146-0-6-4"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-8-7-6" />
<inkscape:perspective
id="perspective4146-3-9-0"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-2-1" />
<inkscape:perspective
id="perspective4146-36-8"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-7-0" />
<inkscape:perspective
id="perspective4146-0-3"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-8-78" />
<inkscape:perspective
id="perspective4146-3-1"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-05" />
<inkscape:perspective
id="perspective4146-36-3"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-7-8" />
<inkscape:perspective
id="perspective4146-0-9"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-8-3" />
<inkscape:perspective
id="perspective4146-3-4"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-9" />
<inkscape:perspective
id="perspective4146-36-7-6"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-7-6-0" />
<inkscape:perspective
id="perspective4146-0-6-7"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-3-8-7-7" />
<inkscape:perspective
id="perspective4146-3-9-7"
inkscape:persp3d-origin="12 : 8 : 1"
inkscape:vp_z="24 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 12 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective4146-2-13" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.627416"
inkscape:cx="5.4926209"
inkscape:cy="10.264796"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1366"
inkscape:window-height="709"
inkscape:window-x="-4"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:showpageshadow="false"
inkscape:object-nodes="true"
inkscape:snap-bbox="true">
<inkscape:grid
type="xygrid"
id="grid4132" />
<sodipodi:guide
position="4,18"
orientation="18,0"
id="guide4138" />
<sodipodi:guide
position="5,3"
orientation="0,18"
id="guide4140" />
<sodipodi:guide
position="20,2.0000174"
orientation="-18,0"
id="guide4142" />
<sodipodi:guide
position="2,21"
orientation="0,-18"
id="guide4144" />
<sodipodi:guide
position="3,19.000017"
orientation="16,0"
id="guide4146" />
<sodipodi:guide
position="2,4"
orientation="0,16"
id="guide4148" />
<sodipodi:guide
position="21,20"
orientation="-16,0"
id="guide4150" />
<sodipodi:guide
position="2,20"
orientation="0,-16"
id="guide4152" />
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="22.627416" inkscape:cx="5.4926209" inkscape:cy="10.264796" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:window-width="1366" inkscape:window-height="709" inkscape:window-x="-4" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:showpageshadow="false" inkscape:object-nodes="true" inkscape:snap-bbox="true">
<inkscape:grid type="xygrid" id="grid4132"/>
<sodipodi:guide position="4,18" orientation="18,0" id="guide4138"/>
<sodipodi:guide position="5,3" orientation="0,18" id="guide4140"/>
<sodipodi:guide position="20,2.0000174" orientation="-18,0" id="guide4142"/>
<sodipodi:guide position="2,21" orientation="0,-18" id="guide4144"/>
<sodipodi:guide position="3,19.000017" orientation="16,0" id="guide4146"/>
<sodipodi:guide position="2,4" orientation="0,16" id="guide4148"/>
<sodipodi:guide position="21,20" orientation="-16,0" id="guide4150"/>
<sodipodi:guide position="2,20" orientation="0,-16" id="guide4152"/>
</sodipodi:namedview>
<metadata
id="metadata3874">
<metadata id="metadata3874">
<rdf:RDF>
<cc:Work
rdf:about="">
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-326,-532.3622)">
<g
transform="translate(326.70703,-497)"
id="layer1-2"
inkscape:label="Capa 1">
<path
id="rect4176"
transform="translate(-5e-7,1030.3622)"
d="m 14.292969,3 -6.1250002,6.125 -1.875,1.875 1.875,1.875 L 14.292969,19 15,18.292969 8.875,12.167969 7.7070312,11 8.875,9.8320312 15,3.7070312 14.292969,3 Z"
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<g inkscape:label="Capa 1" inkscape:groupmode="layer" id="layer1" transform="translate(-326,-532.3622)">
<g transform="translate(326.70703,-497)" id="layer1-2" inkscape:label="Capa 1">
<path id="rect4176" transform="translate(-5e-7,1030.3622)" d="m 14.292969,3 -6.1250002,6.125 -1.875,1.875 1.875,1.875 L 14.292969,19 15,18.292969 8.875,12.167969 7.7070312,11 8.875,9.8320312 15,3.7070312 14.292969,3 Z" style="fill:currentColor;fill-opacity:1;stroke:none" inkscape:connector-curvature="0" class="ColorScheme-Text"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -27,6 +27,8 @@ MouseArea {
property alias iconSource: icon.source
property bool checkable: false
property bool checked: false
//either Action or QAction should work here
property QtObject action
Layout.minimumWidth: Units.iconSizes.large
Layout.maximumWidth: Layout.minimumWidth
implicitWidth: Units.iconSizes.large
@ -34,8 +36,8 @@ MouseArea {
drag {
target: button
axis: Drag.XAxis
minimumX: contextDrawer ? 0 : parent.width/2 - width/2
maximumX: globalDrawer ? parent.width : parent.width/2 - width/2
minimumX: parent.width/2 - width/2 - (contextDrawer && contextDrawer.enabled ? contextDrawer.contentItem.width : 0)
maximumX: parent.width/2 - width/2 + (globalDrawer && globalDrawer.enabled ? globalDrawer.contentItem.width : 0)
}
function toggleVisibility() {
showAnimation.running = false;
@ -74,6 +76,11 @@ MouseArea {
if (checkable) {
checked = !checked;
}
//if an action has been assigned, trigger it
if (button.action && button.action.trigger) {
button.action.trigger();
}
}
Connections {
target: globalDrawer

View file

@ -16,4 +16,6 @@ Icon 0.2 Icon.qml
Label 0.2 Label.qml
Heading 0.2 Heading.qml
ListItem 0.2 ListItem.qml
BasicListItem 0.2 BasicListItem.qml
ListItemWithActions 0.2 ListItemWithActions.qml
RefreshableScrollView 0.2 RefreshableScrollView.qml