Rework main menu

pull/467/head
Michael Zanetti 2020-11-28 17:23:13 +01:00
parent ce918430ed
commit edc1fb357f
12 changed files with 583 additions and 59 deletions

View File

@ -248,6 +248,7 @@ void NymeaConnection::onConnected()
if (!m_currentTransport) {
m_currentTransport = newTransport;
qDebug() << "NymeaConnection: Connected to" << m_currentHost->name() << "via" << m_currentTransport->url();
emit currentConnectionChanged();
emit connectedChanged(true);
return;
}

View File

@ -195,7 +195,7 @@ void DeviceManager::notificationReceived(const QVariantMap &data)
m_devices->addDevice(dev);
} else if (notification == "Devices.DeviceRemoved") {
QUuid deviceId = data.value("params").toMap().value("deviceId").toUuid();
qDebug() << "JsonRpc: Notification: Device removed" << deviceId.toString();
// qDebug() << "JsonRpc: Notification: Device removed" << deviceId.toString();
Device *device = m_devices->getDevice(deviceId);
if (!device) {
qWarning() << "Received a DeviceRemoved notification for a device we don't know!";
@ -205,7 +205,7 @@ void DeviceManager::notificationReceived(const QVariantMap &data)
device->deleteLater();
} else if (notification == "Devices.DeviceChanged") {
QUuid deviceId = data.value("params").toMap().value("device").toMap().value("id").toUuid();
qDebug() << "Device changed notification" << deviceId << data.value("params").toMap();
// qDebug() << "Device changed notification" << deviceId << data.value("params").toMap();
Device *oldDevice = m_devices->getDevice(deviceId);
if (!oldDevice) {
qWarning() << "Received a device changed notification for a device we don't know";
@ -215,12 +215,11 @@ void DeviceManager::notificationReceived(const QVariantMap &data)
qWarning() << "Error parsing device changed notification";
return;
}
qDebug() << "*** device unpacked" << oldDevice->stateValue("98e4476f-e745-4a7f-b795-19269cb70c40");
} else if (notification == "Devices.DeviceSettingChanged") {
QUuid deviceId = data.value("params").toMap().value("deviceId").toUuid();
QString paramTypeId = data.value("params").toMap().value("paramTypeId").toString();
QVariant value = data.value("params").toMap().value("value");
qDebug() << "Device settings changed notification for device" << deviceId << data.value("params").toMap().value("settings").toList();
// qDebug() << "Device settings changed notification for device" << deviceId << data.value("params").toMap().value("settings").toList();
Device *dev = m_devices->getDevice(deviceId);
if (!dev) {
qWarning() << "Device settings changed notification for a device we don't know" << deviceId.toString();

View File

@ -243,5 +243,8 @@
<file>ui/images/like.svg</file>
<file>ui/images/zigbee.svg</file>
<file>ui/images/stock_usb.svg</file>
<file>ui/images/twitter.svg</file>
<file>ui/images/discourse.svg</file>
<file>ui/images/telegram.svg</file>
</qresource>
</RCC>

View File

@ -229,5 +229,6 @@
<file>ui/system/ZigbeeAddNetworkPage.qml</file>
<file>ui/system/ZigbeeNetworkPage.qml</file>
<file>ui/system/ZigbeeNetworkInfoPage.qml</file>
<file>ui/MainMenu.qml</file>
</qresource>
</RCC>

171
nymea-app/ui/MainMenu.qml Normal file
View File

@ -0,0 +1,171 @@
import QtQuick 2.9
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.1
import "components"
import Nymea 1.0
Rectangle {
id: root
visible: !Qt.colorEqual(color, "transparent")
property bool shown: false
property Engine currentEngine: null
signal openThingSettings();
signal openMagicSettings();
signal openAppSettings();
signal openSystemSettings();
function show() {
shown = true;
}
function hide() {
shown = false;
}
color: root.shown ? "#88000000" : "transparent"
Behavior on color { ColorAnimation { duration: 200 } }
MouseArea {
anchors.fill: parent
onClicked: root.hide()
hoverEnabled: true
}
Pane {
anchors { top: parent.top; bottom: parent.bottom; left: parent.left }
width: Math.min(root.width, 300)
anchors.leftMargin: root.shown ? 0 : -width
Behavior on anchors.leftMargin { NumberAnimation { duration: 200; easing.type: Easing.InOutQuad } }
leftPadding: 0
topPadding: 0
rightPadding: 0
bottomPadding: 0
ColumnLayout {
anchors { left: parent.left; top: parent.top; right: parent.right }
spacing: 0
Rectangle {
Layout.fillWidth: true
Layout.preferredHeight: topSectionLayout.implicitHeight + app.margins * 2
color: Qt.tint(app.backgroundColor, Qt.rgba(app.foregroundColor.r, app.foregroundColor.g, app.foregroundColor.b, 0.05))
ColumnLayout {
id: topSectionLayout
anchors { left: parent.left; top: parent.top; right: parent.right; margins: app.margins }
RowLayout {
Image {
Layout.preferredHeight: app.hugeIconSize
Layout.preferredWidth: height
sourceSize.width: width
sourceSize.height: height
source: "qrc:/styles/%1/logo.svg".arg(styleController.currentStyle)
}
Item {
Layout.fillHeight: true
Layout.fillWidth: true
}
ColorIcon {
Layout.preferredHeight: app.iconSize
Layout.preferredWidth: app.iconSize
name: {
if (root.currentEngine === null) {
return "";
}
switch (root.currentEngine.jsonRpcClient.currentConnection.bearerType) {
case Connection.BearerTypeLan:
case Connection.BearerTypeWan:
if (root.currentEngine.jsonRpcClient.availableBearerTypes & NymeaConnection.BearerTypeEthernet != NymeaConnection.BearerTypeNone) {
return "../images/connections/network-wired.svg"
}
return "../images/connections/network-wifi.svg";
case Connection.BearerTypeBluetooth:
return "../images/connections/network-wifi.svg";
case Connection.BearerTypeCloud:
return "../images/connections/cloud.svg"
case Connection.BearerTypeLoopback:
}
return ""
}
}
}
Label {
Layout.fillWidth: true
text: root.currentEngine.jsonRpcClient.currentHost.name
}
Label {
Layout.fillWidth: true
text: root.currentEngine.jsonRpcClient.currentConnection.url
font.pixelSize: app.smallFont
enabled: false
}
}
}
SettingsPageSectionHeader {
text: qsTr("Configuration")
}
NymeaListItemDelegate {
Layout.fillWidth: true
text: qsTr("Configure things")
iconName: "../images/things.svg"
visible: root.currentEngine != null
progressive: false
onClicked: {
root.openThingSettings()
root.hide();
}
}
NymeaListItemDelegate {
Layout.fillWidth: true
text: qsTr("Magic")
iconName: "../images/magic.svg"
progressive: false
visible: root.currentEngine != null
}
NymeaListItemDelegate {
Layout.fillWidth: true
text: qsTr("App settings")
iconName: "../images/stock_application.svg"
progressive: false
}
NymeaListItemDelegate {
Layout.fillWidth: true
text: qsTr("System settings")
iconName: "../images/settings.svg"
progressive: false
visible: root.currentEngine != null
}
SettingsPageSectionHeader {
text: qsTr("Community")
}
NymeaListItemDelegate {
Layout.fillWidth: true
text: qsTr("Forum")
iconName: "../images/discourse.svg"
progressive: false
}
NymeaListItemDelegate {
Layout.fillWidth: true
text: qsTr("Telegram")
iconName: "../images/telegram.svg"
progressive: false
}
NymeaListItemDelegate {
Layout.fillWidth: true
text: qsTr("Twitter")
iconName: "../images/twitter.svg"
progressive: false
}
}
}
}

View File

@ -71,8 +71,9 @@ Page {
return ""
}
onLeftButtonClicked: {
var dialog = connectionDialogComponent.createObject(root)
dialog.open();
app.mainMenu.show()
// var dialog = connectionDialogComponent.createObject(root)
// dialog.open();
}
onMenuOpenChanged: {
if (menuOpen && d.configOverlay) {
@ -211,55 +212,6 @@ Page {
}
}
// Pane {
// Layout.fillWidth: true
// Layout.preferredHeight: shownHeight
// property int shownHeight: shown ? contentRow.implicitHeight : 0
// property bool shown: updatesModel.count > 0 || engine.systemController.updateRunning
// visible: shownHeight > 0
// Behavior on shownHeight { NumberAnimation { easing.type: Easing.InOutQuad; duration: 150 } }
// Material.elevation: 2
// padding: 0
// MouseArea {
// anchors.fill: parent
// onClicked: pageStack.push(Qt.resolvedUrl("system/SystemUpdatePage.qml"))
// }
// Rectangle {
// color: app.accentColor
// anchors.fill: parent
// PackagesFilterModel {
// id: updatesModel
// packages: engine.systemController.packages
// updatesOnly: true
// }
// RowLayout {
// id: contentRow
// anchors { left: parent.left; top: parent.top; right: parent.right; leftMargin: app.margins; rightMargin: app.margins }
// Item {
// Layout.fillWidth: true
// height: app.iconSize
// }
// Label {
// text: engine.systemController.updateRunning ? qsTr("System update in progress...") : qsTr("%n system update(s) available", "", updatesModel.count)
// color: "white"
// font.pixelSize: app.smallFont
// }
// ColorIcon {
// height: app.iconSize / 2
// width: height
// color: "white"
// name: "../images/system-update.svg"
// RotationAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; running: engine.systemController.updateRunning }
// }
// }
// }
// }
Item {
id: contentContainer
Layout.fillWidth: true

View File

@ -62,8 +62,8 @@ ApplicationWindow {
property int smallIconSize: 16
property int iconSize: 24
property int largeIconSize: 32
property int hugeIconSize: 40
property int largeIconSize: 40
property int hugeIconSize: 64
property int delegateHeight: 60
property color backgroundColor: Material.background
@ -98,6 +98,15 @@ ApplicationWindow {
value: settings.units === "metric" ? Types.UnitSystemMetric : Types.UnitSystemImperial
}
property alias mainMenu: m
MainMenu {
id: m
anchors.fill: parent
z: 1000
currentEngine: rootItem.currentEngine
onOpenThingSettings: rootItem.openThigSettings();
}
RootItem {
id: rootItem
anchors.fill: parent

View File

@ -40,10 +40,16 @@ import "connection"
Item {
id: root
readonly property Engine currentEngine: swipeView.currentItem.engine
function handleAndroidBackButton() {
return swipeView.currentItem.handleAndroidBackButton()
}
function openThigSettings() {
swipeView.currentItem.pageStack.push("thingconfiguration/EditThingsPage.qml")
}
ListModel {
id: tabModel
@ -125,8 +131,9 @@ Item {
value: engine.jsonRpcClient.currentHost === null
}
readonly property alias pageStack: _pageStack
StackView {
id: pageStack
id: _pageStack
objectName: "pageStack"
anchors.fill: parent
initialItem: Page {}

View File

@ -132,7 +132,7 @@ Item {
ColorIcon {
id: colorIcon
anchors.centerIn: parent
height: app.hugeIconSize
height: app.largeIconSize
width: height
ColorIcon {
id: fallbackIcon

View File

@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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="96"
height="96"
id="svg4874"
version="1.1"
inkscape:version="1.0.1 (1.0.1+r74)"
viewBox="0 0 96 96.000001"
sodipodi:docname="discourse.svg">
<defs
id="defs4876">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath40">
<path
inkscape:connector-curvature="0"
d="M 0,500 1024,500 1024,0 0,0 0,500 Z"
id="path42" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath18">
<path
inkscape:connector-curvature="0"
d="M 0,2743.88 0,0 l 2743.81,0 0,2743.88 -2743.81,0 z"
id="path20" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5147809"
inkscape:cx="39.478049"
inkscape:cy="41.238844"
inkscape:document-units="px"
inkscape:current-layer="g4780"
showgrid="true"
showborder="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-midpoints="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-global="true"
inkscape:document-rotation="0"
inkscape:window-width="1380"
inkscape:window-height="873"
inkscape:window-x="60"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid5451"
empspacing="8" />
<sodipodi:guide
orientation="1,0"
position="8,-8.0000001"
id="guide4063" />
<sodipodi:guide
orientation="1,0"
position="4,-8.0000001"
id="guide4065" />
<sodipodi:guide
orientation="0,1"
position="-8,88.000001"
id="guide4067" />
<sodipodi:guide
orientation="0,1"
position="-8,92.000001"
id="guide4069" />
<sodipodi:guide
orientation="0,1"
position="104,4"
id="guide4071" />
<sodipodi:guide
orientation="0,1"
position="-5,8.0000001"
id="guide4073" />
<sodipodi:guide
orientation="1,0"
position="88,-8.0000001"
id="guide4077" />
<sodipodi:guide
orientation="0,1"
position="-8,84.000001"
id="guide4074" />
<sodipodi:guide
orientation="1,0"
position="12,-8.0000001"
id="guide4076" />
<sodipodi:guide
orientation="1,0"
position="84,-8.0000001"
id="guide4080" />
<sodipodi:guide
position="48,-8.0000001"
orientation="1,0"
id="guide4170" />
<sodipodi:guide
position="-8,48"
orientation="0,1"
id="guide4172" />
<sodipodi:guide
position="92,-8.0000001"
orientation="1,0"
id="guide4760" />
</sodipodi:namedview>
<metadata
id="metadata4879">
<rdf:RDF>
<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>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(67.857146,-78.50504)">
<g
transform="matrix(0,-1,-1,0,373.50506,516.50504)"
id="g4845"
style="display:inline">
<g
inkscape:export-ydpi="90"
inkscape:export-xdpi="90"
inkscape:export-filename="next01.png"
transform="matrix(-0.9996045,0,0,1,575.94296,-611.00001)"
id="g4778"
inkscape:label="Layer 1">
<g
transform="matrix(-1,0,0,1,575.99999,611)"
id="g4780"
style="display:inline">
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:4;marker:none;enable-background:accumulate"
id="rect4782"
width="96.037987"
height="96"
x="-438.00244"
y="345.36221"
transform="scale(-1,1)" />
<path
style="fill:#808080;stroke-width:0.172109;fill-opacity:1"
d="m 370.45327,437.26526 c 22.39272,-0.0517 24.64183,-0.0823 26.29472,-0.35869 9.37948,-1.5685 16.95358,-5.3381 23.56313,-11.72725 2.53558,-2.45102 4.33434,-4.6054 6.25016,-7.48583 3.76874,-5.66634 6.31103,-12.50536 7.22836,-19.44489 0.28495,-2.15583 0.28048,-8.58403 -0.007,-10.66859 -1.63772,-11.85721 -7.7332,-22.25857 -17.23346,-29.40734 -3.33103,-2.50655 -6.41214,-4.24451 -10.27222,-5.79425 -5.43917,-2.18372 -10.15108,-3.07611 -16.24208,-3.07611 -5.08146,0 -8.64807,0.53871 -13.20258,1.99417 -6.90805,2.2076 -12.72997,5.7549 -17.8806,10.89464 -7.62324,7.60713 -11.95008,16.9629 -12.80785,27.69385 -0.10957,1.3707 -0.17737,10.86165 -0.17737,24.82782 v 22.60888 z m -6.38639,-24.97202 1.92129,-8.58311 -0.71661,-2.08549 c -1.25904,-3.66397 -1.47554,-5.00522 -1.47558,-9.14053 -2e-5,-3.1127 0.0542,-3.86398 0.39103,-5.42032 2.35087,-10.86175 10.30404,-18.85762 21.0881,-21.20127 1.47524,-0.32061 2.28218,-0.37964 5.1897,-0.37964 2.92965,0 3.71228,0.0581 5.25033,0.38957 5.15881,1.11189 9.4907,3.40196 13.23214,6.99522 5.54248,5.32298 8.34297,11.90938 8.34071,19.61644 -10e-4,5.027 -1.13392,9.30301 -3.59549,13.57611 -6.9299,12.02983 -21.88973,16.81876 -34.35416,10.99744 l -1.65865,-0.77464 -7.55097,2.36314 c -4.15302,1.29973 -7.64778,2.39959 -7.76613,2.44412 -0.11835,0.0446 -0.21558,0.0146 -0.2161,-0.0665 -5e-4,-0.0811 0.86367,-4.00987 1.92039,-8.73057 z"
id="path847" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" width="96" height="96" version="1.1" viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<g id="g4845" transform="matrix(0 -1 -1 0 373.51 516.51)">
<g id="g4778" transform="matrix(-.9996 0 0 1 575.94 -611)">
<g id="g4780" transform="matrix(-1 0 0 1 576 611)">
<rect id="rect4782" transform="scale(-1,1)" x="-438" y="345.36" width="96.038" height="96" style="color:#000000;fill:none"/>
<path id="path2993" d="m427.74 352.44c-0.0235 0.64229-0.18584 1.3205-0.49593 2.0032l-30.761 79.721c-2.1835 5.4416-5.2211 5.4095-6.5743 0.99147l-6.3844-20.452-23.156-7.038c-2.5539-0.92471-3.5674-0.46828-3.5674-3.1495 0-2.069 0.94403-2.9854 2.0704-4.1373 0.69645-0.71219 5.1114-5.2551 9.6716-9.9442l-15.285-20.681c-2.1008-3.806-1.0138-6.5523 3.5342-7.5005l64.003-13.576c4.5296-1.1294 7.0467 0.97992 6.9449 3.7632zm-18.679 18.657-29.907 33.133a1.6774 1.6767 0 0 1-1.1283 0.55103l-17.42 1.2016c0.13256 0.0451 0.10968 0.0283 0.25258 0.0793l21.928 6.6657 26.275-41.631z" style="fill:#808080"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- 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="96"
height="96"
id="svg4874"
version="1.1"
inkscape:version="0.91+devel r"
viewBox="0 0 96 96.000001"
sodipodi:docname="twitter-symbolic.svg">
<defs
id="defs4876">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath40">
<path
inkscape:connector-curvature="0"
d="M 0,500 1024,500 1024,0 0,0 0,500 Z"
id="path42" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath18">
<path
inkscape:connector-curvature="0"
d="M 0,2743.88 0,0 l 2743.81,0 0,2743.88 -2743.81,0 z"
id="path20" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="8.7812489"
inkscape:cx="59.308189"
inkscape:cy="66.197859"
inkscape:document-units="px"
inkscape:current-layer="g4780"
showgrid="true"
showborder="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-midpoints="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-global="true">
<inkscape:grid
type="xygrid"
id="grid5451"
empspacing="8" />
<sodipodi:guide
orientation="1,0"
position="8,-8.0000001"
id="guide4063" />
<sodipodi:guide
orientation="1,0"
position="4,-8.0000001"
id="guide4065" />
<sodipodi:guide
orientation="0,1"
position="-8,88.000001"
id="guide4067" />
<sodipodi:guide
orientation="0,1"
position="-8,92.000001"
id="guide4069" />
<sodipodi:guide
orientation="0,1"
position="104,4"
id="guide4071" />
<sodipodi:guide
orientation="0,1"
position="-5,8.0000001"
id="guide4073" />
<sodipodi:guide
orientation="1,0"
position="88,-8.0000001"
id="guide4077" />
<sodipodi:guide
orientation="0,1"
position="-8,84.000001"
id="guide4074" />
<sodipodi:guide
orientation="1,0"
position="12,-8.0000001"
id="guide4076" />
<sodipodi:guide
orientation="1,0"
position="84,-8.0000001"
id="guide4080" />
<sodipodi:guide
position="48,-8.0000001"
orientation="1,0"
id="guide4170" />
<sodipodi:guide
position="-8,48"
orientation="0,1"
id="guide4172" />
<sodipodi:guide
position="92,-8.0000001"
orientation="1,0"
id="guide4760" />
</sodipodi:namedview>
<metadata
id="metadata4879">
<rdf:RDF>
<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>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(67.857146,-78.50504)">
<g
transform="matrix(0,-1,-1,0,373.50506,516.50504)"
id="g4845"
style="display:inline">
<g
inkscape:export-ydpi="90"
inkscape:export-xdpi="90"
inkscape:export-filename="next01.png"
transform="matrix(-0.9996045,0,0,1,575.94296,-611.00001)"
id="g4778"
inkscape:label="Layer 1">
<g
transform="matrix(-1,0,0,1,575.99999,611)"
id="g4780"
style="display:inline">
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:4;marker:none;enable-background:accumulate"
id="rect4782"
width="96.037987"
height="96"
x="-438.00244"
y="345.36221"
transform="scale(-1,1)" />
<path
style="display:inline;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1.00019777"
d="m 424.78996,383.15823 c -2.00259,6.60179 -10.91398,12.9547 -20.99515,10.96184 1.31899,21.91096 13.05475,31.58759 18.67093,37.40634 -10.46434,5.93064 -20.63519,-0.15052 -23.92757,-5.46354 -0.15467,2.80362 1.05732,6.19462 2.11105,7.87784 -9.65399,0.63966 -16.34619,-7.23084 -18.08058,-13.92636 -0.63812,2.14035 -0.72402,4.15778 -0.21117,7.60609 -9.70945,-2.93661 -12.30805,-10.82569 -12.73574,-16.70227 -6.56176,7.56537 -7.99259,16.65074 -7.50998,26.52943 -15.66301,-25.61329 -6.02665,-51.47861 6.26533,-64.06803 10.32206,-10.57157 25.77864,-15.29742 39.60876,-15.46106 1.96541,-2.41955 6.13155,-7.31219 9.39212,-8.64168 -0.74188,1.92958 -2.50704,5.74695 -2.66571,9.73059 2.14854,-3.28069 6.45434,-7.04043 9.82044,-7.43405 -1.97748,3.63242 -3.69088,7.83596 -4.23733,11.43606 6.54884,6.78715 6.54328,13.39587 4.4946,20.1488 z"
id="path6437"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sccccccccscccccs" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB