Improve initial setup

This commit is contained in:
Michael Zanetti 2018-06-22 01:46:26 +02:00
parent 5b26ed591b
commit e44d5c0fd8
21 changed files with 1649 additions and 373 deletions

View File

@ -243,7 +243,7 @@ void JsonRpcClient::sendRequest(const QVariantMap &request)
{
QVariantMap newRequest = request;
newRequest.insert("token", m_token);
qDebug() << "Sending request" << qUtf8Printable(QJsonDocument::fromVariant(newRequest).toJson());
// qDebug() << "Sending request" << qUtf8Printable(QJsonDocument::fromVariant(newRequest).toJson());
m_connection->sendData(QJsonDocument::fromVariant(newRequest).toJson());
}
@ -278,7 +278,7 @@ void JsonRpcClient::dataReceived(const QByteArray &data)
// qWarning() << "Could not parse json data from mea" << data << error.errorString();
return;
}
qDebug() << "received response" << m_receiveBuffer.left(splitIndex);
// qDebug() << "received response" << m_receiveBuffer.left(splitIndex);
m_receiveBuffer = m_receiveBuffer.right(m_receiveBuffer.length() - splitIndex - 1);
if (!m_receiveBuffer.isEmpty()) {
staticMetaObject.invokeMethod(this, "dataReceived", Qt::QueuedConnection, Q_ARG(QByteArray, QByteArray()));

View File

@ -45,7 +45,7 @@ BluetoothDeviceInfos *BluetoothDiscovery::deviceInfos()
return m_deviceInfos;
}
void BluetoothDiscovery::setDiscovering(const bool &discovering)
void BluetoothDiscovery::setDiscovering(bool discovering)
{
m_discovering = discovering;
emit discoveringChanged();

View File

@ -47,7 +47,7 @@ private:
bool m_discovering;
void setDiscovering(const bool &discovering);
void setDiscovering(bool discovering);
signals:
void discoveringChanged();

View File

@ -45,6 +45,7 @@ void WirelessAccesspoints::setWirelessAccessPoints(QList<WirelessAccessPoint *>
m_wirelessAccessPoints = wirelessAccessPoints;
endResetModel();
emit countChanged();
}
int WirelessAccesspoints::rowCount(const QModelIndex &parent) const
@ -95,6 +96,7 @@ void WirelessAccesspoints::clearModel()
qDeleteAll(m_wirelessAccessPoints);
m_wirelessAccessPoints.clear();
endResetModel();
emit countChanged();
}
void WirelessAccesspoints::setSelectedNetwork(const QString &ssid, const QString &macAdderss)
@ -117,6 +119,7 @@ void WirelessAccesspoints::setSelectedNetwork(const QString &ssid, const QString
m_wirelessAccessPoints = wirelessAccessPoints;
endResetModel();
emit countChanged();
}
bool WirelessAccesspoints::signalStrengthLessThan(const WirelessAccessPoint *a, const WirelessAccessPoint *b)

View File

@ -31,6 +31,7 @@
class WirelessAccesspoints : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
public:
enum BluetoothDeviceInfoRole {
WirelessAccesspointRoleSsid = Qt::DisplayRole,
@ -57,6 +58,9 @@ public:
static bool signalStrengthLessThan(const WirelessAccessPoint *a, const WirelessAccessPoint *b);
signals:
void countChanged();
protected:
QHash<int, QByteArray> roleNames() const;

View File

@ -137,7 +137,6 @@ void WirelessSetupManager::loadNetworks()
m_readingResponse = true;
m_inputDataStream.clear();
m_accessPoints->clearModel();
setStatusText("WifiSetupManager: Loading wifi network list...");
setWorking(true);
@ -602,12 +601,18 @@ void WirelessSetupManager::onConnectedChanged()
if (!connected()) {
// Clean up
qDebug() << "WifiSetupManager: Clean up services";
m_deviceInformationService->deleteLater();
m_netwokService->deleteLater();
m_wifiService->deleteLater();
if (m_systemService)
if (m_deviceInformationService) {
m_deviceInformationService->deleteLater();
}
if (m_netwokService) {
m_netwokService->deleteLater();
}
if (m_wifiService) {
m_wifiService->deleteLater();
}
if (m_systemService) {
m_systemService->deleteLater();
}
m_deviceInformationService = nullptr;
m_netwokService = nullptr;

View File

@ -205,5 +205,9 @@
<file>ui/system/AboutNymeaPage.qml</file>
<file>ui/images/logs.svg</file>
<file>ui/images/plugin.svg</file>
<file>ui/images/nymea-box-setup.svg</file>
<file>ui/images/rpi-setup.svg</file>
<file>ui/images/eye.svg</file>
<file>ui/images/private-browsing.svg</file>
</qresource>
</RCC>

View File

@ -11,24 +11,53 @@ Page {
text: qsTr("Bluetooth discovery")
onBackPressed: pageStack.pop()
HeaderButton {
imageSource: Qt.resolvedUrl("images/refresh.svg")
onClicked: Engine.bluetoothDiscovery.start()
// HeaderButton {
// imageSource: Qt.resolvedUrl("images/refresh.svg")
// onClicked: Engine.bluetoothDiscovery.start()
// }
}
property bool shouldDiscover: true
Component.onCompleted: Engine.bluetoothDiscovery.start()
Connections {
target: Engine.bluetoothDiscovery
onDiscoveringChanged: {
print("BT discovery changed:", Engine.bluetoothDiscovery.discovering, shouldDiscover)
if (!Engine.bluetoothDiscovery.discovering && shouldDiscover) {
Engine.bluetoothDiscovery.start();
}
}
}
Component.onCompleted: Engine.bluetoothDiscovery.start()
function setupDevice(name, btAddress) {
shouldDiscover = false;
Engine.bluetoothDiscovery.stop()
pageStack.push(Qt.resolvedUrl("BluetoothLoadingPage.qml"), { name: name, address: btAddress } )
}
ColumnLayout {
anchors.fill: parent
spacing: app.margins
BusyIndicator {
Layout.alignment: Qt.AlignHCenter
running: Engine.bluetoothDiscovery.discovering
RowLayout {
spacing: app.margins
Layout.leftMargin: app.margins
Layout.topMargin: app.margins
Layout.rightMargin: app.rightMargin
Label {
Layout.fillWidth: true
text: qsTr("Searching for %1 boxes via Bluetooth.").arg(app.systemName)
wrapMode: Text.WordWrap
}
BusyIndicator {
running: Engine.bluetoothDiscovery.discovering
}
}
ThinDivider { }
ThinDivider {}
ListView {
Layout.fillWidth: true
@ -37,42 +66,106 @@ Page {
model: Engine.bluetoothDiscovery.deviceInfos
clip: true
delegate: ItemDelegate {
delegate: MeaListItemDelegate {
width: parent.width
height: app.delegateHeight
RowLayout {
anchors.verticalCenter: parent.verticalCenter
Item {
Layout.fillHeight: true
Layout.preferredWidth: height
ColorIcon {
id: image
name: Qt.resolvedUrl("images/bluetooth.svg")
anchors.fill: parent
anchors.margins: app.margins / 2
}
}
ColumnLayout {
Layout.fillWidth: true
Layout.fillHeight: true
anchors.margins: app.margins
Label {
text: model.name
}
Label {
text: model.address
font.pixelSize: app.smallFont
}
}
}
iconName: Qt.resolvedUrl("images/bluetooth.svg")
text: model.name
subText: model.address
onClicked: {
print("Start bluetooth connection to", model.name, " --> ", model.address)
Engine.bluetoothDiscovery.stop()
pageStack.push(Qt.resolvedUrl("BluetoothLoadingPage.qml"), { name: model.name, address: model.address } )
root.setupDevice(model.name, model.address)
}
}
}
ThinDivider {}
RowLayout {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
Layout.bottomMargin: app.margins
spacing: app.margins
Label {
Layout.fillWidth: true
text: qsTr("Troubles finding your box? Try this!")
}
Button {
text: qsTr("Help")
onClicked: pageStack.push(helpPageComponent)
}
}
}
Component {
id: helpPageComponent
Page {
id: helpPage
header: GuhHeader {
text: qsTr("Setup help")
onBackPressed: pageStack.pop()
}
Flickable {
anchors.fill: parent
contentHeight: helpColumn.implicitHeight
ColumnLayout {
id: helpColumn
width: parent.width
spacing: app.margins
Label {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
Layout.topMargin: app.margins
wrapMode: Text.WordWrap
font.bold: true
text: "Raspberry Pi™"
}
Label {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
wrapMode: Text.WordWrap
text: qsTr("After having installed the nymea community image to your Raspberry Pi, all you need to do is to plug it into a power socket. Note that the Wireless setup will only be available if the Raspberry Pi is not connected to a wired network.")
}
Image {
Layout.preferredWidth: app.iconSize * 8
Layout.preferredHeight: width * 540 / 800
sourceSize.width: 800
sourceSize.height: 540
fillMode: Image.PreserveAspectFit
Layout.alignment: Qt.AlignHCenter
source: "images/rpi-setup.svg"
}
ThinDivider {}
Label {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
wrapMode: Text.WordWrap
font.bold: true
text: "%1 box".arg(systemName)
}
Label {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
wrapMode: Text.WordWrap
text: qsTr("If you have a %1 box, plug it into a power socket and wait for it to be booted. Once the LED pulses slowly, press the button for 3 seconds until the LED changes.").arg(app.systemName)
}
Image {
Layout.preferredWidth: app.iconSize * 5
Layout.preferredHeight: width
Layout.bottomMargin: app.margins
sourceSize.width: width
sourceSize.height: width
fillMode: Image.PreserveAspectFit
Layout.alignment: Qt.AlignHCenter
source: "images/nymea-box-setup.svg"
}
}
}
}

View File

@ -70,6 +70,15 @@ Page {
onTriggered: pageStack.push(Qt.resolvedUrl("BluetoothDiscoveryPage.qml"))
}
IconMenuItem {
iconSource: "../images/private-browsing.svg"
text: qsTr("Demo mode")
onTriggered: {
pageStack.push(connectingPage)
Engine.connection.connect("nymea://83.169.2.242:2222")
}
}
MenuSeparator {}
IconMenuItem {
@ -85,7 +94,9 @@ Page {
ColumnLayout {
Layout.fillWidth: true
Layout.margins: app.margins
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
Layout.topMargin: app.margins
spacing: app.margins
Label {
@ -105,11 +116,7 @@ Page {
}
}
Rectangle {
Layout.fillWidth: true
Layout.preferredHeight: 1
color: Material.accent
}
ThinDivider {}
ListView {
Layout.fillWidth: true
@ -210,15 +217,42 @@ Page {
}
Rectangle {
ThinDivider {}
Label {
Layout.fillWidth: true
Layout.preferredHeight: 1
color: Material.accent
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
wrapMode: Text.WordWrap
visible: discovery.discoveryModel.count === 0
text: qsTr("Do you have a %1 box but it's not connected to your network yet? Use the wireless setup to connect it!").arg(app.systemName)
}
Button {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
visible: discovery.discoveryModel.count === 0
text: qsTr("Start wireless setup")
onClicked: pageStack.push(Qt.resolvedUrl("BluetoothDiscoveryPage.qml"))
}
Button {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
Layout.bottomMargin: app.margins
visible: discovery.discoveryModel.count === 0
text: qsTr("Demo mode (online)")
onClicked: {
pageStack.push(connectingPage)
Engine.connection.connect("nymea://83.169.2.242:2222")
}
}
RowLayout {
Layout.fillWidth: true
Layout.margins: app.margins
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
Layout.bottomMargin: app.margins
visible: root.haveHosts
Label {
Layout.fillWidth: true

View File

@ -10,6 +10,11 @@ Page {
header: GuhHeader {
text: qsTr("Configure Things")
onBackPressed: pageStack.pop()
HeaderButton {
imageSource: "../images/add.svg"
onClicked: pageStack.push(Qt.resolvedUrl("NewDeviceWizard.qml"))
}
}
ListView {
@ -18,9 +23,52 @@ Page {
delegate: ThingDelegate {
interfaces:model.interfaces
name: model.name
canDelete: true
onClicked: {
pageStack.push(Qt.resolvedUrl("devicepages/ConfigureThingPage.qml"), {device: Engine.deviceManager.devices.get(index)})
}
onDeleteClicked: {
Engine.deviceManager.removeDevice(Engine.deviceManager.devices.get(index).id)
}
}
}
ColumnLayout {
anchors { left: parent.left; right: parent.right; margins: app.margins }
anchors.verticalCenter: parent.verticalCenter
spacing: app.margins * 2
visible: Engine.deviceManager.devices.count === 0 && !Engine.deviceManager.fetchingData
Label {
text: qsTr("There are no things set up yet.")
font.pixelSize: app.largeFont
Layout.fillWidth: true
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
color: app.guhAccent
}
Label {
text: qsTr("In order for your %1 box to be useful, go ahead and add some things.").arg(app.systemName)
Layout.fillWidth: true
Layout.maximumWidth: 400
Layout.alignment: Qt.AlignHCenter
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
}
Image {
source: "../guh-logo.svg"
Layout.preferredWidth: app.iconSize * 5
Layout.preferredHeight: width
Layout.alignment: Qt.AlignHCenter
sourceSize.width: app.iconSize * 5
sourceSize.height: app.iconSize * 5
}
Button {
Layout.fillWidth: true
Layout.maximumWidth: 400
Layout.alignment: Qt.AlignHCenter
text: qsTr("Add a thing")
onClicked: pageStack.push(Qt.resolvedUrl("NewDeviceWizard.qml"))
}
}
}

View File

@ -13,22 +13,26 @@ Page {
HeaderButton {
imageSource: Qt.resolvedUrl("images/add.svg")
onClicked: {
d.editRulePage = pageStack.push(Qt.resolvedUrl("magic/EditRulePage.qml"), {rule: Engine.ruleManager.createNewRule() });
d.editRulePage.StackView.onRemoved.connect(function() {
d.editRulePage.rule.destroy()
d.editRulePage = null;
})
d.editRulePage.onAccept.connect(function() {
d.editRulePage.busy = true;
Engine.ruleManager.addRule(d.editRulePage.rule);
})
d.editRulePage.onCancel.connect(function() {
pageStack.pop();
})
addRule()
}
}
}
function addRule() {
d.editRulePage = pageStack.push(Qt.resolvedUrl("magic/EditRulePage.qml"), {rule: Engine.ruleManager.createNewRule() });
d.editRulePage.StackView.onRemoved.connect(function() {
d.editRulePage.rule.destroy()
d.editRulePage = null;
})
d.editRulePage.onAccept.connect(function() {
d.editRulePage.busy = true;
Engine.ruleManager.addRule(d.editRulePage.rule);
})
d.editRulePage.onCancel.connect(function() {
pageStack.pop();
})
}
QtObject {
id: d
property var editRulePage: null
@ -88,6 +92,39 @@ Page {
}
}
ColumnLayout {
anchors { left: parent.left; right: parent.right; margins: app.margins }
anchors.verticalCenter: parent.verticalCenter
spacing: app.margins * 2
visible: Engine.ruleManager.rules.count === 0
Label {
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
text: qsTr("There is no magic set up yet.")
wrapMode: Text.WordWrap
color: app.guhAccent
font.pixelSize: app.largeFont
}
Label {
text: qsTr("Add some using the wizard stick!")
Layout.fillWidth: true
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
}
AbstractButton {
Layout.preferredHeight: app.iconSize * 4
Layout.preferredWidth: height
Layout.alignment: Qt.AlignHCenter
ColorIcon {
anchors.fill: parent
name: "../images/magic.svg"
}
onClicked: addRule()
}
}
Component {
id: errorDialog
ErrorDialog {}

View File

@ -44,12 +44,7 @@ Page {
text: qsTr("Configure things")
onTriggered: pageStack.push(Qt.resolvedUrl("EditDevicesPage.qml"))
}
IconMenuItem {
iconSource: "../images/add.svg"
text: qsTr("Add a new thing")
onTriggered: pageStack.push(Qt.resolvedUrl("NewDeviceWizard.qml"))
}
MenuSeparator {}
// MenuSeparator {}
IconMenuItem {
iconSource: "../images/magic.svg"
text: qsTr("Magic")
@ -128,8 +123,9 @@ Page {
}
ColumnLayout {
anchors { left: parent.left; right: parent.right; top: parent.top; margins: app.margins }
spacing: app.margins
anchors { left: parent.left; right: parent.right; margins: app.margins }
anchors.verticalCenter: parent.verticalCenter
spacing: app.margins * 2
visible: Engine.deviceManager.devices.count === 0 && !Engine.deviceManager.fetchingData
Label {
text: qsTr("Welcome to %1!").arg(app.systemName)
@ -140,11 +136,28 @@ Page {
color: app.guhAccent
}
Label {
text: qsTr("There are no things set up yet. You can start with adding your things by using the menu on the upper left and selecting \"Add a new thing\".")
text: qsTr("There are no things set up yet. In order for your %1 box to be useful, go ahead and add some things.").arg(app.systemName)
Layout.fillWidth: true
Layout.maximumWidth: 400
Layout.alignment: Qt.AlignHCenter
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
}
Image {
source: "../guh-logo.svg"
Layout.preferredWidth: app.iconSize * 5
Layout.preferredHeight: width
Layout.alignment: Qt.AlignHCenter
sourceSize.width: app.iconSize * 5
sourceSize.height: app.iconSize * 5
}
Button {
Layout.fillWidth: true
Layout.maximumWidth: 400
Layout.alignment: Qt.AlignHCenter
text: qsTr("Add a thing")
onClicked: pageStack.push(Qt.resolvedUrl("NewDeviceWizard.qml"))
}
}
}
}

View File

@ -10,7 +10,7 @@ ApplicationWindow {
visible: true
width: 360
height: 580
visibility: settings.viewMode
visibility: ApplicationWindow.Maximized
font: Qt.application.font
title: appName
@ -26,7 +26,7 @@ ApplicationWindow {
property var settings: Settings {
property string lastConnectedHost: ""
property int viewMode: ApplicationWindow.Maximized
property alias viewMode: app.visibility
property bool returnToHome: false
property bool darkTheme: false
property string graphStyle: "bars"

View File

@ -72,20 +72,9 @@ Page {
model: VendorsProxy {
vendors: Engine.deviceManager.vendors
}
delegate: ItemDelegate {
delegate: MeaListItemDelegate {
width: parent.width
height: app.delegateHeight
contentItem: RowLayout {
Label {
Layout.fillWidth: true
text: model.displayName
}
Image {
source: "images/next.svg"
Layout.preferredHeight: parent.height
Layout.preferredWidth: height
}
}
text: model.displayName
onClicked: {
d.vendorId = model.id

View File

@ -2,9 +2,8 @@ import QtQuick 2.4
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.2
import QtQuick.Controls.Material 2.1
import "components"
import Mea 1.0
import "components"
Page {
id: root
@ -14,30 +13,17 @@ Page {
property QtObject networkManger
header: GuhHeader {
text: qsTr("Wireless network")
text: qsTr("%1 box network setup").arg(app.systemName)
onBackPressed: {
pageStack.pop()
pageStack.pop()
}
HeaderButton {
imageSource: Qt.resolvedUrl("images/refresh.svg")
onClicked: networkManger.manager.loadNetworks()
}
HeaderButton {
imageSource: Qt.resolvedUrl("images/settings.svg")
onClicked: pageStack.push(settingsPage)
}
}
Component.onCompleted: networkManger.manager.loadNetworks()
Connections {
target: networkManger.manager
onErrorOccured: {
print("Error occured", errorMessage)
print("Error occurred", errorMessage)
var errorDialog = Qt.createComponent(Qt.resolvedUrl("components/ErrorDialog.qml"));
var popup = errorDialog.createObject(app, {text: errorMessage})
popup.open()
@ -51,14 +37,49 @@ Page {
}
}
Timer {
id: loadNetworksTimer
interval: networkManger.manager.accessPoints.count === 0 ? 1000 : 5000
running: networkManger.manager.networkingEnabled && networkManger.manager.wirelessEnabled
repeat: true
onTriggered: {
networkManger.manager.loadNetworks()
}
}
ColumnLayout {
anchors.fill: parent
visible: networkManger.manager.initialized
Label {
wrapMode: Text.WordWrap
Layout.alignment: Qt.AlignHCenter
text:{
MeaListItemDelegate {
Layout.fillWidth: true
iconName: "../images/info.svg"
text: qsTr("About this %1 box").arg(app.systemName)
onClicked: pageStack.push(infoPage)
}
SwitchDelegate {
Layout.fillWidth: true
text: qsTr("Wired network")
checked: networkManger.manager.networkingEnabled
onClicked: networkManger.manager.enableNetworking(checked)
}
SwitchDelegate {
Layout.fillWidth: true
enabled: networkManger.manager.networkingEnabled
text: qsTr("Wireless network")
checked: networkManger.manager.wirelessEnabled
onClicked: {
networkManger.manager.enableWireless(checked)
}
}
MeaListItemDelegate {
Layout.fillWidth: true
progressive: false
text: qsTr("Networking status")
subText: {
switch (networkManger.manager.networkStatus) {
case WirelessSetupManager.NetworkStatusUnknown:
return qsTr("Unknown status.");
@ -77,137 +98,93 @@ Page {
case WirelessSetupManager.NetworkStatusGlobal:
return qsTr("Online.");
}
return "???"
}
}
BusyIndicator {
Layout.alignment: Qt.AlignHCenter
running: networkManger.manager.working
ThinDivider {
visible: networkManger.manager.wirelessEnabled
}
ThinDivider { }
ListView {
Layout.fillWidth: true
Layout.fillHeight: true
visible: networkManger.manager.wirelessEnabled
model: networkManger.manager.accessPoints
clip: true
delegate: ItemDelegate {
width: parent.width
height: model.selectedNetwork ? app.delegateHeight * 1.5 : app.delegateHeight
BusyIndicator {
anchors.centerIn: parent
running: networkManger.manager.working
}
Rectangle {
anchors.fill: parent
color: guhAccent
visible: model.selectedNetwork
delegate: MeaListItemDelegate {
width: parent.width
text: model.ssid
subText: {
if (!model.selectedNetwork) {
return "";
}
switch (networkManger.manager.wirelessStatus) {
case WirelessSetupManager.WirelessStatusUnknown:
return qsTr("Unknown status.");
case WirelessSetupManager.WirelessStatusUnmanaged:
return qsTr("Network unmanaged.");
case WirelessSetupManager.WirelessStatusUnavailable:
return qsTr("Network unavailable.");
case WirelessSetupManager.WirelessStatusDisconnected:
return qsTr("Disconnected.");
case WirelessSetupManager.WirelessStatusPrepare:
return qsTr("Prepare connection...");
case WirelessSetupManager.WirelessStatusConfig:
return qsTr("Configure network...");
case WirelessSetupManager.WirelessStatusNeedAuth:
return qsTr("Authentication needed");
case WirelessSetupManager.WirelessStatusIpConfig:
return qsTr("Configuration IP...");
case WirelessSetupManager.WirelessStatusIpCheck:
return qsTr("Check IP...");
case WirelessSetupManager.WirelessStatusSecondaries:
return qsTr("Secondaries...");
case WirelessSetupManager.WirelessStatusActivated:
return qsTr("Network connected.");
case WirelessSetupManager.WirelessStatusDeactivating:
return qsTr("Network disconnecting...");
case WirelessSetupManager.WirelessStatusFailed:
return qsTr("Network connection failed.");
}
}
RowLayout {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.right: parent.right
iconColor: model.selectedNetwork ? app.guhAccent : "#808080"
iconName: {
if (model.protected) {
if (model.signalStrength <= 25)
return Qt.resolvedUrl("images/nm-signal-25-secure.svg")
Item {
Layout.preferredHeight: app.delegateHeight
Layout.preferredWidth: height
if (model.signalStrength <= 50)
return Qt.resolvedUrl("images/nm-signal-50-secure.svg")
ColorIcon {
id: image
anchors.fill: parent
anchors.margins: app.margins / 2
name: {
if (model.protected) {
if (model.signalStrength <= 25)
return Qt.resolvedUrl("images/nm-signal-25-secure.svg")
if (model.signalStrength <= 75)
return Qt.resolvedUrl("images/nm-signal-75-secure.svg")
if (model.signalStrength <= 50)
return Qt.resolvedUrl("images/nm-signal-50-secure.svg")
if (model.signalStrength <= 100)
return Qt.resolvedUrl("images/nm-signal-100-secure.svg")
if (model.signalStrength <= 75)
return Qt.resolvedUrl("images/nm-signal-75-secure.svg")
} else {
if (model.signalStrength <= 100)
return Qt.resolvedUrl("images/nm-signal-100-secure.svg")
if (model.signalStrength <= 25)
return Qt.resolvedUrl("images/nm-signal-25.svg")
} else {
if (model.signalStrength <= 50)
return Qt.resolvedUrl("images/nm-signal-50.svg")
if (model.signalStrength <= 25)
return Qt.resolvedUrl("images/nm-signal-25.svg")
if (model.signalStrength <= 75)
return Qt.resolvedUrl("images/nm-signal-75.svg")
if (model.signalStrength <= 50)
return Qt.resolvedUrl("images/nm-signal-50.svg")
if (model.signalStrength <= 100)
return Qt.resolvedUrl("images/nm-signal-100.svg")
if (model.signalStrength <= 75)
return Qt.resolvedUrl("images/nm-signal-75.svg")
if (model.signalStrength <= 100)
return Qt.resolvedUrl("images/nm-signal-100.svg")
}
}
}
}
Label {
Layout.alignment: Qt.AlignVCenter
text: model.signalStrength + "%"
}
ColumnLayout {
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
Label {
text: model.ssid
}
Label {
text: model.macAddress
font.pixelSize: app.smallFont
}
Label {
text: {
switch (networkManger.manager.wirelessStatus) {
case WirelessSetupManager.WirelessStatusUnknown:
return qsTr("Unknown status.");
case WirelessSetupManager.WirelessStatusUnmanaged:
return qsTr("Network unmanaged.");
case WirelessSetupManager.WirelessStatusUnavailable:
return qsTr("Network unavailable.");
case WirelessSetupManager.WirelessStatusDisconnected:
return qsTr("Disconnected.");
case WirelessSetupManager.WirelessStatusPrepare:
return qsTr("Prepare connection...");
case WirelessSetupManager.WirelessStatusConfig:
return qsTr("Configure network...");
case WirelessSetupManager.WirelessStatusNeedAuth:
return qsTr("Authentication needed");
case WirelessSetupManager.WirelessStatusIpConfig:
return qsTr("Configuration IP...");
case WirelessSetupManager.WirelessStatusIpCheck:
return qsTr("Check IP...");
case WirelessSetupManager.WirelessStatusSecondaries:
return qsTr("Secondaries...");
case WirelessSetupManager.WirelessStatusActivated:
return qsTr("Network connected.");
case WirelessSetupManager.WirelessStatusDeactivating:
return qsTr("Network disconnecting...");
case WirelessSetupManager.WirelessStatusFailed:
return qsTr("Network connection failed.");
}
}
font.pixelSize: app.smallFont
visible: model.selectedNetwork
}
}
Button {
text: qsTr("Disconnect")
visible: model.selectedNetwork && networkManger.manager.wirelessStatus === WirelessSetupManager.WirelessStatusActivated
onClicked: networkManger.manager.disconnectWirelessNetwork()
}
}
@ -234,40 +211,49 @@ Page {
}
ColumnLayout {
anchors.fill: parent
anchors.margins: app.margins
anchors { left: parent.left; top: parent.top; right: parent.right }
Label {
wrapMode: Text.WordWrap
font.pixelSize: app.largeFont
Layout.fillWidth: true
text: ssid + " (" + macAddress + ")"
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
Layout.topMargin: app.margins
text: qsTr("Please enter the password for the Wifi network.")
}
Label {
wrapMode: Text.WordWrap
MeaListItemDelegate {
Layout.fillWidth: true
text: qsTr("Please enter the password for the Wifi network.")
text: ssid
subText: macAddress
progressive: false
}
RowLayout {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
spacing: app.margins
TextField {
id: passwordTextField
Layout.fillWidth: true
echoMode: TextInput.Password
}
Button {
text: qsTr("Show password")
onClicked: {
if (passwordTextField.echoMode === TextInput.Normal) {
text = qsTr("Show password")
passwordTextField.echoMode = TextInput.Password
} else {
text = qsTr("Hide password")
passwordTextField.echoMode = TextInput.Normal
ColorIcon {
Layout.preferredHeight: app.iconSize
Layout.preferredWidth: app.iconSize
name: "../images/eye.svg"
color: passwordTextField.echoMode === TextInput.Normal ? app.guhAccent : keyColor
MouseArea {
anchors.fill: parent
anchors.margins: -app.margins / 2
onClicked: {
if (passwordTextField.echoMode === TextInput.Normal) {
passwordTextField.echoMode = TextInput.Password
} else {
passwordTextField.echoMode = TextInput.Normal
}
}
}
}
@ -275,6 +261,8 @@ Page {
Button {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
text: qsTr("Connect")
onPressed: {
networkManger.manager.connectWirelessNetwork(ssid, passwordTextField.text)
@ -282,130 +270,52 @@ Page {
pageStack.pop()
}
}
}
}
}
Component {
id: settingsPage
id: infoPage
Page {
id: root
header: GuhHeader {
text: qsTr("Network settings")
text: qsTr("Box information")
onBackPressed: pageStack.pop()
}
ColumnLayout {
anchors.fill: parent
anchors.margins: app.margins
anchors { left: parent.left; top: parent.top; right: parent.right }
RowLayout {
anchors.margins: app.margins
MeaListItemDelegate {
Layout.fillWidth: true
Label {
Layout.fillWidth: true
text: qsTr("Networking")
}
Switch {
id: networkingSwitch
checked: networkManger.manager.networkingEnabled
onCheckedChanged: networkManger.manager.enableNetworking(checked)
}
progressive: false
text: qsTr("System UUID")
subText: networkManger.manager.modelNumber
}
RowLayout {
anchors.margins: app.margins
MeaListItemDelegate {
Layout.fillWidth: true
Label {
Layout.fillWidth: true
text: qsTr("Wireless networking")
}
Switch {
id: wirelessNetworkingSwitch
checked: networkManger.manager.wirelessEnabled
onCheckedChanged: networkManger.manager.enableWireless(checked)
}
progressive: false
text: qsTr("Manufacturer")
subText: networkManger.manager.manufacturer
}
ThinDivider { }
Label {
MeaListItemDelegate {
Layout.fillWidth: true
text: qsTr("Bluetooth device information")
progressive: false
text: qsTr("Software revision")
subText: networkManger.manager.softwareRevision
}
ThinDivider { }
RowLayout {
anchors.margins: app.margins
MeaListItemDelegate {
Layout.fillWidth: true
Label {
Layout.fillWidth: true
text: qsTr("System UUID")
}
Label {
text: networkManger.manager.modelNumber
}
progressive: false
text: qsTr("Firmware revision")
subText: networkManger.manager.firmwareRevision
}
RowLayout {
MeaListItemDelegate {
Layout.fillWidth: true
Label {
Layout.fillWidth: true
text: qsTr("Manufacturer")
}
Label {
text: networkManger.manager.manufacturer
}
}
RowLayout {
anchors.margins: app.margins
Layout.fillWidth: true
Label {
Layout.fillWidth: true
text: qsTr("Software revision")
}
Label {
text: networkManger.manager.softwareRevision
}
}
RowLayout {
anchors.margins: app.margins
Layout.fillWidth: true
Label {
Layout.fillWidth: true
text: qsTr("Firmware revision")
}
Label {
text: networkManger.manager.firmwareRevision
}
}
RowLayout {
anchors.margins: app.margins
Layout.fillWidth: true
Label {
Layout.fillWidth: true
text: qsTr("Hardware revision")
}
Label {
text: networkManger.manager.hardwareRevision
}
progressive: false
text: qsTr("Hardware revision")
subText: networkManger.manager.hardwareRevision
}
}
}

View File

@ -48,7 +48,7 @@ SwipeDelegate {
}
ColorIcon {
Layout.preferredHeight: app.iconSize
Layout.preferredHeight: app.iconSize * .6
Layout.preferredWidth: height
name: "../images/next.svg"
visible: root.progressive

191
mea/ui/images/eye.svg Normal file
View File

@ -0,0 +1,191 @@
<?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.92.3 (2405546, 2018-03-11)"
viewBox="0 0 96 96.000001"
sodipodi:docname="eye.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="8.7812488"
inkscape:cx="-10.68755"
inkscape:cy="46.064049"
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:window-width="2880"
inkscape:window-height="1698"
inkscape:window-x="0"
inkscape:window-y="44"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid5451"
empspacing="8" />
<sodipodi:guide
orientation="1,0"
position="8,-8.0000001"
id="guide4063"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="4,-8.0000001"
id="guide4065"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="-8,88.000001"
id="guide4067"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="-8,92.000001"
id="guide4069"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="104,4"
id="guide4071"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="-5,8.0000001"
id="guide4073"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="88,-8.0000001"
id="guide4077"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="-8,84.000001"
id="guide4074"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="12,-8.0000001"
id="guide4076"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="84,-8.0000001"
id="guide4080"
inkscape:locked="false" />
<sodipodi:guide
position="48,-8.0000001"
orientation="1,0"
id="guide4170"
inkscape:locked="false" />
<sodipodi:guide
position="-8,48"
orientation="0,1"
id="guide4172"
inkscape:locked="false" />
<sodipodi:guide
position="92,-8.0000001"
orientation="1,0"
id="guide4760"
inkscape:locked="false" />
</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)" />
<g
id="g862"
transform="matrix(1.8130651,0,0,1.8130651,-260.30984,-370.59492)">
<path
sodipodi:nodetypes="zczcz"
inkscape:connector-curvature="0"
id="path5662"
d="m 369.35571,421.36222 c 0,11.82549 -10.68499,17.73822 -10.68499,17.73822 0,0 -10.68506,-5.91273 -10.68506,-17.73822 0,-11.82547 10.68506,-17.73822 10.68506,-17.73822 0,0 10.68499,5.91275 10.68499,17.73822 z"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:4.00079107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<ellipse
ry="6.5025721"
rx="6.5"
transform="matrix(0,-1,-1,0,0,0)"
cy="-358.67068"
cx="-421.36221"
id="path4242"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.00079155;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -0,0 +1,222 @@
<?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"
id="connect-box"
viewBox="0 0 112.6 111.4"
version="1.1"
sodipodi:docname="nymea-box-setup.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata77">
<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>Asset 31</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs75" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2880"
inkscape:window-height="1698"
id="namedview73"
showgrid="false"
inkscape:zoom="47.935999"
inkscape:cx="85.797004"
inkscape:cy="58.750007"
inkscape:window-x="0"
inkscape:window-y="44"
inkscape:window-maximized="1"
inkscape:current-layer="connect-box" />
<title
id="title2">Asset 31</title>
<path
d="m 89.5,104.7 0.9,-0.5 0.5,-0.4 a 17.7,17.7 0 0 0 2.6,-3.5"
style="fill:none;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round"
id="path4"
inkscape:connector-curvature="0" />
<path
d="M 8.4,70.3 C 2.8,60.4 -1.1,48.4 0.3,36.7 1,31.2 4.6,21.5 7.8,16.9 l 0.6,9.2 -4.2,18.3 11.9,25.9 20.6,22.6 23.1,10.5 22.9,1.9 21.2,-9.3 -7.5,7.2 c -9.2,8.1 -21.7,9.3 -32.9,7.4 C 52.3,108.7 41,103.1 31.7,96.3 A 87.8,87.8 0 0 1 8.4,70.3 Z"
style="fill:#e6e6e6;fill-opacity:1"
id="path6"
inkscape:connector-curvature="0" />
<path
d="m 28,80.1 4.6,-11.9 58.1,18.5 3.2,18 c 0,0 -4.5,7.7 -28.1,3.7 -23.6,-4 -40.2,-23.1 -39.9,-22.8 z"
style="fill:#fafafa;fill-opacity:1"
id="path8"
inkscape:connector-curvature="0" />
<path
d="M 3,30.7 A 30.9,30.9 0 0 1 8.4,16.1 33.9,33.9 0 0 1 20.9,5.1 l 2.1,-1 c 12.8,-5.8 27.1,-5 39.8,-0.4 l 5.3,2.1 a 81,81 0 0 1 35.6,31.7 l 3,5.6 c 6.3,11 7.6,28.5 3.4,41.7 l -0.7,2.1 a 42.3,42.3 0 0 1 -17.5,19.6 50.2,50.2 0 0 0 5,-6.2 c 2.4,-4.3 3.2,-8.6 4.2,-13.4 a 30.9,30.9 0 0 0 0.2,-9.1 23,23 0 0 0 7,-19.5 C 107.7,51.1 104.7,43.9 101,37.8 A 73.1,73.1 0 0 0 68.4,9.4 C 61.8,6.6 54.3,4.7 47,5.3 39.7,5.9 32.6,8.8 28.5,15.4 24.4,22 24.3,29.7 25.9,36.7 c 1.6,7 5.2,13.3 9.6,19.4 A 66.1,66.1 0 0 1 34,65 C 32.6,70 28.9,81.4 25.9,85.6 13,72.9 0.8,50.5 3,30.7"
style="fill:#f0f0f0;fill-opacity:1"
id="path10"
inkscape:connector-curvature="0" />
<path
d="M 28.4,15.4 C 32.6,8.8 39.6,5.8 46.9,5.3 54.2,4.8 61.8,6.6 68.4,9.4 a 73.3,73.3 0 0 1 32.7,28.4 c 3.7,6.1 6.6,13.3 7.2,20.5 0.6,7.2 -1.4,14.2 -7.1,19.5 h -0.7 l -64,-21.4 -1,-0.3 C 31.1,50 27.6,44 25.9,36.6 24.2,29.2 24.4,21.9 28.4,15.4 Z"
style="fill:#fafafa;fill-opacity:1"
id="path12"
inkscape:connector-curvature="0" />
<path
d="M 91.1,87.3 101.2,77.8 35.5,56.2 c 0,0 -0.1,0.5 -0.2,1.6 a 45.3,45.3 0 0 1 -1.6,7.9 l -0.9,3.1 z"
style="fill:#dcdcdc;fill-opacity:1"
id="path14"
inkscape:connector-curvature="0" />
<path
d="m 101.3,87.4 a 41.9,41.9 0 0 1 -4.7,13.4 20.2,20.2 0 0 1 -2.7,3.8 l -2,1.9 -1.4,-19.4 10.7,-9.2 0.2,1.3 a 20.6,20.6 0 0 1 -0.1,8.2 z"
style="fill:#e6e6e6;fill-opacity:1"
id="path16"
inkscape:connector-curvature="0" />
<path
d="m 57.1,30.1 c 3.3,-2.1 7.7,-1.4 11,-0.2 6.5,2.5 13,8.7 14.7,15.6 C 85.2,55 77.8,59 69.3,56.1 62.6,53.7 55.8,47.3 54,40.2 53.1,36.6 53.5,32.3 57.1,30.1 Z"
style="fill:#dcdcdc;fill-opacity:1"
id="path18"
inkscape:connector-curvature="0" />
<ellipse
cx="13.59177"
cy="79.449982"
rx="9.8000002"
ry="15.7"
transform="rotate(-47.3)"
style="fill:#ebebeb;fill-opacity:1"
id="ellipse20" />
<path
d="m 36.8,49.1 c -0.1,2.4 2.1,4.6 4,5.5 a 4.3,4.3 0 0 0 3.5,0.4 2.7,2.7 0 0 0 2,-2.6 c 0,-2.4 -2.1,-4.6 -4,-5.5 a 4.7,4.7 0 0 0 -3.5,-0.4 2.8,2.8 0 0 0 -2,2.6 z"
style="fill:#c8c8c8;fill-opacity:1"
id="path22"
inkscape:connector-curvature="0" />
<path
d="m 47.7,52.8 a 2.6,2.6 0 0 0 1.5,2.1 c 0.9,0.4 2,0.3 2,-0.8 A 2.4,2.4 0 0 0 49.7,52 c -0.9,-0.4 -2,-0.3 -2,0.8 z"
style="fill:#b4b4b4;fill-opacity:1"
id="path24"
inkscape:connector-curvature="0" />
<path
d="m 38.6,50.6 a 3.6,3.6 0 0 0 2.2,3 c 1.3,0.6 3,0.4 3,-1.2 a 3.8,3.8 0 0 0 -2.2,-3 c -1.3,-0.6 -3,-0.4 -3,1.2 z"
style="fill:#1d1d1b"
id="path26"
inkscape:connector-curvature="0" />
<path
d="m 47.3,70 a 1,1 0 0 1 0.5,-0.4 l 0.6,-0.2 a 2.2,2.2 0 0 1 1.4,0.1 l 0.6,0.3 0.3,0.4 a 0.9,0.9 0 0 1 0.1,0.5 0.8,0.8 0 0 1 -0.2,0.4 l -0.5,0.4 -0.6,0.2 A 2.2,2.2 0 0 1 48.1,71.6 C 47.9,71.5 47.7,71.5 47.5,71.3 47.3,71.1 47.2,71.1 47.2,70.9 A 0.7,0.7 0 0 1 47.1,70.4 0.8,0.8 0 0 1 47.3,70 Z"
style="fill:#333233"
id="path28"
inkscape:connector-curvature="0" />
<path
d="m 47.4,69.9 a 0.5,0.5 0 0 1 0.4,-0.3 l 0.6,-0.2 a 2,2 0 0 1 1.3,0.1 l 0.4,0.2 0.4,0.4 v 0.3 a 0.5,0.5 0 0 1 -0.2,0.4 l -0.4,0.3 -0.6,0.2 A 2.5,2.5 0 0 1 48.1,71.2 L 47.6,71 47.3,70.6 a 0.4,0.4 0 0 1 -0.1,-0.3 0.5,0.5 0 0 1 0.2,-0.4 z"
style="fill:#c5114a"
id="path30"
inkscape:connector-curvature="0" />
<path
d="m 70,76.7 a 0.8,0.8 0 0 0 0.9,-0.1 l 3.2,-3.2 c 0.2,-0.2 0,-0.4 -0.3,-0.5 L 59.9,68.3 A 0.8,0.8 0 0 0 59,68.5 l -3.1,3.3 c -0.3,0.2 0,0.4 0.2,0.5 z"
style="fill:#c8c8c8;fill-opacity:1"
id="path32"
inkscape:connector-curvature="0" />
<path
d="m 69.6,75.4 a 0.6,0.6 0 0 0 0.7,-0.1 l 2.5,-2.4 c 0.1,-0.2 0,-0.3 -0.2,-0.4 L 59.8,68.2 a 0.6,0.6 0 0 0 -0.7,0.1 l -2.3,2.5 c -0.2,0.2 0,0.4 0.2,0.4 z"
style="fill:#050505;fill-opacity:1"
id="path34"
inkscape:connector-curvature="0" />
<path
d="m 89.1,83 a 2.1,2.1 0 0 1 -2.3,0.4 L 79.7,81.2 C 79,80.9 78.5,80.4 79.2,79.8 L 80,79.1 a 2.4,2.4 0 0 1 2.3,-0.4 l 6.5,2.1 0.7,0.2 c 0.7,0.2 1.1,0.7 0.5,1.3 z"
style="fill:#c8c8c8;fill-opacity:1"
id="path36"
inkscape:connector-curvature="0" />
<path
d="m 88.6,82.5 a 2.2,2.2 0 0 1 -1.8,0.3 L 79.9,80.5 C 79.4,80.4 79,80 79.5,79.5 L 80.1,79 A 2,2 0 0 1 82,78.6 l 6,1.9 0.9,0.3 c 0.6,0.2 1.2,0.4 0.3,1.1 z"
style="fill:#040506"
id="path38"
inkscape:connector-curvature="0" />
<path
d="M 45.1,40.8 A 19.9,19.9 0 0 1 44.5,29.7 l 1.2,-5.2 a 20.7,20.7 0 0 0 -0.5,11.3 l 1.2,0.8 2.3,0.7 -1.2,2.1 -1,1.2 z"
style="fill:#b4b4b4;fill-opacity:1"
id="path40"
inkscape:connector-curvature="0" />
<path
d="m 45.2,35.8 a 20.7,20.7 0 0 1 0.5,-11.3 l 0.2,-0.3 0.8,-0.4 v 0 a 1.3,1.3 0 0 1 1.2,-0.1 v 0 l 3.1,1.4 v 0 a 1.2,1.2 0 0 1 0.8,1.2 0.4,0.4 0 0 1 -0.1,0.3 v 0 a 14.6,14.6 0 0 0 0,9 C 51.6,35.3 51.1,35.2 51.1,35.2 L 48,34.4 a 2.2,2.2 0 0 0 -1.6,0.3 7.4,7.4 0 0 0 -1.2,1.1 z"
style="fill:#c8c8c8;fill-opacity:1"
id="path42"
inkscape:connector-curvature="0" />
<path
d="m 45.2,35.8 a 1.8,1.8 0 0 0 1.3,1.1 l 1.5,0.4 c 0.3,0.1 0.5,0.3 0.2,0.6 l -1.4,1.9 -0.5,0.4 -1.2,0.6 3,0.9 h 0.7 l 0.6,-0.2 0.3,-0.5 v -0.4 c 0,-0.1 -0.1,-0.2 -0.1,-0.3 0,-0.1 1.2,-2.2 1.9,-3.4 h 0.1 a 1.9,1.9 0 0 0 0.2,-0.7 0.6,0.6 0 0 0 -0.1,-0.4 c -0.1,-0.3 -0.6,-0.4 -0.6,-0.4 l -3.1,-1 a 2.2,2.2 0 0 0 -1.6,0.3 c -0.2,0.2 -1.1,0.8 -1.2,1.1 z"
style="fill:#c8c8c8;fill-opacity:1"
id="path44"
inkscape:connector-curvature="0" />
<path
d="m 91.5,57.3 a 10,10 0 0 0 0.4,-2.4 l -1.2,-0.2 -0.6,1.2 z"
style="fill:#b4b4b4;fill-opacity:1"
id="path46"
inkscape:connector-curvature="0" />
<path
d="m 90.8,40.8 -3.1,2.6 h -0.6 l -0.5,0.2 a 0.8,0.8 0 0 0 -0.2,0.5 v 0.3 a 0.4,0.4 0 0 0 0.1,0.3 16.5,16.5 0 0 1 0.8,9.1 0.6,0.6 0 0 0 0,0.6 1.1,1.1 0 0 0 0.3,0.7 l 0.5,0.6 0.4,0.3 h 0.3 l 2.7,1.2 A 1.8,1.8 0 0 1 91,56 0.5,0.5 0 0 1 91.2,55.6 l 1.3,-1.4 a 1.1,1.1 0 0 1 1,-0.1 l 1.2,0.6 c 0.4,0.1 0.6,0.2 0.9,-0.1 v 0 L 96,54.2 h 0.1 c 0.1,0 0.1,-0.1 0.2,-0.2 0.1,-0.1 0.3,-0.6 0.1,-0.9 C 96.2,52.8 93.5,52 93.5,52 L 92,51 92.7,45.7 Z"
style="fill:#c8c8c8;fill-opacity:1"
id="path48"
inkscape:connector-curvature="0" />
<path
d="M 96.7,52.7 A 20.9,20.9 0 0 0 95.6,42.2 h -0.1 a 0.9,0.9 0 0 0 -0.6,-0.6 h -0.2 l -2.7,-1 v 0 a 0.9,0.9 0 0 0 -1.1,0.2 c -0.3,0.2 -0.2,0.5 -0.2,0.8 a 15.7,15.7 0 0 1 0.9,9.1 c -0.1,0.6 0.6,1.4 1.1,1.6 l 2.8,1.3 c 0.4,0 1,0 1.1,-0.5 z"
style="fill:#d2d2d2;fill-opacity:1"
id="path50"
inkscape:connector-curvature="0" />
<path
d="m 38.5,50.6 a 3.8,3.8 0 0 0 2.3,3 c 1.3,0.6 3.1,0.4 3.1,-1.3 A 4,4 0 0 0 41.6,49.4 C 40.2,48.8 38.5,49 38.5,50.6 Z"
style="fill:none;stroke:#d2d2d2;stroke-miterlimit:10;stroke-opacity:1"
id="path52"
inkscape:connector-curvature="0" />
<path
d="m 43,53.1 a 2.6,2.6 0 0 1 -3.1,-0.2 c -1.2,-0.8 -1.6,-2 -1,-3 a 1.5,1.5 0 0 1 1.4,-0.8 l 3.4,3.1 c 0,0 0,0.4 -0.7,0.9 z"
style="fill:#57baae;fill-opacity:1"
id="path54"
inkscape:connector-curvature="0" />
<ellipse
cx="-18.521399"
cy="63.1968"
rx="1.5978385"
ry="2.5964875"
transform="rotate(-55.195988)"
style="fill:#57baae;stroke-width:0.99864906;fill-opacity:1"
id="ellipse56" />
<path
d="m 43.8,47.9 c 0.2,0.2 0.4,0.3 0.5,0.5 l 2.2,-2.4 -0.8,-0.6 -2.1,2.3 z"
style="fill:#57baae;fill-opacity:1"
id="path58"
inkscape:connector-curvature="0" />
<path
d="m 38.6,54.4 -0.6,-0.5 -3.5,3.9 0.8,0.6 3.5,-3.9 z"
style="fill:#57baae;fill-opacity:1"
id="path60"
inkscape:connector-curvature="0" />
<path
d="m 46,51.3 3,-0.2 v -1 l -3.2,0.2 z"
style="fill:#57baae;fill-opacity:1"
id="path62"
inkscape:connector-curvature="0" />
<path
d="M 36.4,50.7 31.7,51 v 1 l 4.9,-0.3 a 1.7,1.7 0 0 1 -0.2,-1 z"
style="fill:#57baae;fill-opacity:1"
id="path64"
inkscape:connector-curvature="0" />
<path
d="m 37.8,47.2 -2.8,-2.6 -0.7,0.8 2.8,2.4 z"
style="fill:#57baae;fill-opacity:1"
id="path66"
inkscape:connector-curvature="0" />
<path
d="m 45.6,54.2 -0.2,0.3 -0.5,0.4 3.2,2.9 0.7,-0.8 z"
style="fill:#57baae;fill-opacity:1"
id="path68"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,168 @@
<?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="private-browsing.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.0249991"
inkscape:cx="44.270464"
inkscape:cy="35.701054"
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="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.46281052px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.99999994"
d="M 48 20.300781 C 38.61157 20.300781 29.819444 21.544274 21.621094 24.03125 C 13.488864 26.571345 6.28099 29.969999 0 34.097656 L 0 35.232422 L 0 39.271484 L 0 62.966797 L 0 66.166016 C 2.93113 68.718876 6.2948038 70.82159 10.089844 72.392578 C 13.915734 73.93071 18.019131 74.699219 22.400391 74.699219 C 26.781661 74.699219 30.869023 73.93071 34.664062 72.392578 C 38.489962 70.82159 41.869661 68.718876 44.800781 66.166016 C 45.219521 65.817963 45.700038 65.536561 46.242188 65.322266 C 46.788738 65.112449 47.37411 65.007812 48 65.007812 C 48.6259 65.007812 49.209803 65.112279 49.751953 65.322266 C 50.298513 65.536561 50.780489 65.817963 51.199219 66.166016 C 54.130359 68.718876 57.494023 70.82159 61.289062 72.392578 C 65.114953 73.93071 69.218349 74.699219 73.599609 74.699219 C 77.980879 74.699219 82.070194 73.93071 85.865234 72.392578 C 89.691134 70.82159 93.06887 68.718876 96 66.166016 L 96 62.966797 L 96 39.271484 L 96 35.232422 L 96 34.097656 C 89.71902 29.969999 82.4796 26.571345 74.28125 24.03125 C 66.14901 21.544274 57.38843 20.300781 48 20.300781 z M 48 24.298828 C 57.02961 24.298828 65.378823 25.493166 73.095703 27.851562 C 80.229583 30.061848 86.449297 33.012269 91.998047 36.439453 L 91.998047 39.269531 L 91.998047 62.964844 L 91.998047 64.160156 C 89.713992 65.94464 87.218872 67.510852 84.349609 68.689453 L 84.345703 68.691406 C 81.051703 70.023849 77.507023 70.701172 73.601562 70.701172 C 69.696742 70.701172 66.133404 70.021738 62.802734 68.685547 C 59.409344 67.278264 56.432808 65.417224 53.830078 63.150391 L 53.794922 63.121094 L 53.759766 63.089844 C 52.994136 62.453446 52.124454 61.956258 51.214844 61.599609 L 51.207031 61.597656 L 51.199219 61.59375 C 50.171819 61.195817 49.073763 61.009766 48.001953 61.009766 C 46.929423 61.009766 45.832334 61.196839 44.808594 61.589844 L 44.789062 61.597656 L 44.771484 61.603516 C 43.867754 61.960734 43.003398 62.457134 42.242188 63.089844 L 42.207031 63.121094 L 42.169922 63.150391 C 39.568072 65.416474 36.578528 67.280481 33.148438 68.689453 L 33.142578 68.691406 C 29.848578 70.023839 26.303898 70.701172 22.398438 70.701172 C 18.492068 70.701172 14.929466 70.020845 11.597656 68.683594 C 8.7613262 67.507089 6.27868 65.947007 4 64.164062 L 4 62.964844 L 4 39.269531 L 4 36.435547 C 9.542 33.009802 15.729632 30.063875 22.794922 27.855469 C 30.583732 25.494273 38.97036 24.298828 48 24.298828 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4186" />
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.46281052px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1.00019777"
d="m 395.18763,415.76224 c 0,-3.12948 -0.5255,-6.04968 -1.57978,-8.76043 -1.07648,-2.73278 -2.48958,-5.14591 -4.23918,-7.23957 -1.74949,2.09366 -3.16259,4.50679 -4.23918,7.23957 -1.05418,2.71075 -1.58188,5.63095 -1.58188,8.76043 0,3.12947 0.5277,6.06096 1.58188,8.79375 1.07659,2.71074 2.48969,5.11259 4.23918,7.20625 1.7496,-2.09366 3.1627,-4.49551 4.23918,-7.20625 1.05428,-2.73279 1.57978,-5.66428 1.57978,-8.79375 z"
id="path4184" />
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.46281052px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1.00019777"
d="m 395.18763,370.96223 c 0,-3.12948 -0.5255,-6.04967 -1.57978,-8.76042 -1.07648,-2.73278 -2.48958,-5.14591 -4.23918,-7.23958 -1.74949,2.09367 -3.16259,4.5068 -4.23918,7.23958 -1.05418,2.71075 -1.58188,5.63094 -1.58188,8.76042 0,3.12948 0.5277,6.06097 1.58188,8.79376 1.07659,2.71074 2.48969,5.11258 4.23918,7.20625 1.7496,-2.09367 3.1627,-4.49551 4.23918,-7.20625 1.05428,-2.73279 1.57978,-5.66428 1.57978,-8.79376 z"
id="path4120" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.8 KiB

576
mea/ui/images/rpi-setup.svg Normal file
View File

@ -0,0 +1,576 @@
<?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"
id="svg4367"
viewBox="0 0 899.99998 540.00001"
version="1.1"
sodipodi:docname="rpi-setup.svg"
width="900"
height="540"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<defs
id="defs95" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2880"
inkscape:window-height="1698"
id="namedview93"
showgrid="true"
inkscape:zoom="1.8591095"
inkscape:cx="432.56289"
inkscape:cy="277.15708"
inkscape:window-x="0"
inkscape:window-y="44"
inkscape:window-maximized="1"
inkscape:current-layer="svg4367">
<inkscape:grid
type="xygrid"
id="grid1120" />
</sodipodi:namedview>
<g
id="layer1"
transform="translate(127.906,-194.67999)">
<g
id="g5001"
style="stroke:#000000;stroke-linejoin:round">
<path
id="path4034"
d="m 20.163,437.68 v -8 l 490,268 v 8 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2" />
<path
id="path4036"
d="m 510.16,705.68 220,-243 v -8 l -220,243 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2" />
<path
id="path4032"
d="m 20.163,429.68 239,-199 471,224 -220,243 z"
inkscape:connector-curvature="0"
style="fill:#009300;stroke-width:1.5" />
</g>
</g>
<g
id="g3876"
transform="translate(884.066,-4.99999)"
style="stroke:#000000;stroke-linejoin:round">
<path
id="path3828"
d="m -541.57,327.17 84.109,46.846 50.75,-48.975 -81.876,-43.817 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:1.5" />
<path
id="path3830"
d="m -457.46,374.01 v 18.335 h -14.627 l -55.629,-30.425 -14.133,-15.73 0.27901,-19.025 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2" />
<path
id="path3832"
d="m -457.46,392.35 50.671,-45.717 0.0781,-21.593 -50.75,48.975 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2" />
<path
id="path3834"
d="m -534.52,337.09 69.763,39.148 -0.31695,11.94 -5.4548,0.35589 -53.452,-29.361 -10.791,-12.045 z"
inkscape:connector-curvature="0"
style="stroke-width:1px" />
</g>
<g
id="g3882"
transform="translate(884.066,-4.99999)"
style="fill:#ffffff;stroke:#000000;stroke-linejoin:bevel">
<path
id="path3862"
d="m -454.46,246.5 67.003,35.383 v 9.536 l -67.254,-36.638 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5" />
<path
id="path3864"
d="m -454.46,246.5 50.189,-46.425 65.246,34.129 -48.433,47.68 z"
inkscape:connector-curvature="0" />
<path
id="path3866"
d="m -387.46,291.42 48.362,-47.478 0.0705,-9.7378 -48.433,47.68 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5" />
</g>
<g
id="g4024"
transform="translate(884.066,-4.99999)"
style="fill:#ffffff;stroke:#000000">
<path
id="path3905"
d="m -617.87,213.78 v 37.733 c -2.0806,10.749 -12.014,13.139 -22.003,13.308 -8.7698,0.14851 -21.733,-2.5784 -21.904,-14.581 0,0 -0.0993,-32.786 -0.0993,-36.461 0,-7.35 9.8512,-13.308 22.003,-13.308 12.1518,0 22.003,5.9584 22.003,13.308 z"
inkscape:connector-curvature="0"
style="stroke-width:2" />
<path
id="path3905-7"
transform="translate(-0.70978,-3.1062)"
d="m -617.16,216.62 c 0,7.35 -9.8512,13.308 -22.003,13.308 -12.1518,0 -22.003,-5.9584 -22.003,-13.308 0,-7.35 9.8512,-13.308 22.003,-13.308 12.1518,0 22.003,5.9584 22.003,13.308 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5" />
</g>
<g
id="g3958"
transform="translate(884.066,-4.99999)"
style="fill:#ffffff;stroke:#000000">
<path
id="path3932"
d="m -618.33,265.07 23.883,-20.884 33.082,16.116 -23.338,21.33 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5;stroke-linejoin:round" />
<path
id="path3934"
d="m -584.71,281.63 0.19831,8.4449 23.068,-20.406 0.0717,-9.369 z"
inkscape:connector-curvature="0"
style="stroke-width:2;stroke-linejoin:round" />
<path
id="path3936"
d="m -584.71,281.63 0.19831,8.4449 -33.892,-15.97 0.067,-9.0372 z"
inkscape:connector-curvature="0"
style="stroke-width:2;stroke-linejoin:round" />
<path
id="path3938"
d="m -614.07,271.47 -0.54646,1.2119 -0.20199,3.1152 -4.2705,3.4522 2.133,1.0038 3.6387,-2.9486 0.75517,-0.44408 0.24862,-4.3866 z"
inkscape:connector-curvature="0"
style="stroke-width:1px" />
<path
id="path3938-4"
d="m -592.31,282.22 -0.54646,1.2119 -0.20199,3.1152 -4.2705,3.4522 2.133,1.0038 3.6387,-2.9486 0.75517,-0.44408 0.24862,-4.3866 z"
inkscape:connector-curvature="0"
style="stroke-width:1px" />
</g>
<g
id="g4267"
transform="translate(884.066,-4.99999)"
style="fill:#ffffff;stroke:#000000">
<path
id="path3965"
d="m -325.91,122.37 v 60.897 l 59.909,27.102 v -59.508 z"
inkscape:connector-curvature="0"
style="stroke-width:2;stroke-linejoin:round" />
<path
id="path3967"
d="m -231.12,112.75 -34.882,38.11 v 59.508 l 34.882,-33.125 z"
inkscape:connector-curvature="0"
style="stroke-width:2;stroke-linejoin:round" />
<path
id="path3969"
d="m -231.12,112.75 -58.22,-27.855 -36.57,37.474 59.909,28.492 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5;stroke-linejoin:round" />
<path
id="path3971"
d="m -265.21,96.44 15.693,-14.825 c 11.538,-10.9 28.855,4.0906 28.482,15.064 0,0 0.12471,1.9525 -1.0127,5.071 -2.0733,5.6845 -5.923,7.6928 -9.0782,10.997 l -8.6194,-4.124 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5" />
</g>
<g
id="g4019"
transform="translate(884.066,-4.99999)"
style="fill:none;stroke:#000000;stroke-linejoin:round">
<path
id="path3981"
transform="matrix(0.97538,-0.22729,0.19766,0.87076,-54.998,-79.909)"
d="m -438.25,189.82 c 0,13.252 -14.638,23.995 -32.694,23.995 -18.056,0 -32.694,-10.743 -32.694,-23.995 0,-13.252 14.638,-23.995 32.694,-23.995 18.056,0 32.694,10.743 32.694,23.995 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5862" />
<path
id="path3981-0"
transform="matrix(-0.31948,-0.29595,0.24041,-0.23168,-656.53,66.794)"
d="m -438.25,189.82 c 0,13.252 -14.638,23.995 -32.694,23.995 -18.056,0 -32.694,-10.743 -32.694,-23.995 0,-13.252 14.638,-23.995 32.694,-23.995 18.056,0 32.694,10.743 32.694,23.995 z"
inkscape:connector-curvature="0"
style="stroke-width:2.62459993" />
<path
id="path3981-0-9"
transform="matrix(-0.45332,0.01564,0.0058521,-0.28195,-650.87,234.53)"
d="m -438.25,189.82 c 0,13.252 -14.638,23.995 -32.694,23.995 -18.056,0 -32.694,-10.743 -32.694,-23.995 0,-13.252 14.638,-23.995 32.694,-23.995 18.056,0 32.694,10.743 32.694,23.995 z"
inkscape:connector-curvature="0"
style="stroke-width:2.79809999" />
</g>
<path
style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linejoin:round"
inkscape:connector-curvature="0"
d="m 160.09,206.83001 v 18.454 l 26.972,15.26 v -18.454 z"
id="path4028" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:1.5;stroke-linejoin:round"
inkscape:connector-curvature="0"
d="m 160.09,206.83001 31.408,-25.907 25.907,15.26 -30.343,25.907 z"
id="path4030" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linejoin:round"
inkscape:connector-curvature="0"
d="m 187.061,240.54001 30.698,-24.842 -0.35488,-19.519 -30.343,25.907 z"
id="path4033" />
<g
id="g4182"
transform="translate(884.066,-4.99999)"
style="stroke:#000000">
<path
id="path4035"
d="m -598.76,175.23 v 32.121 l 9.0341,5.3954 0.13718,-30.529 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2;stroke-linejoin:round" />
<path
id="path4039"
d="m -589.72,212.75 88.584,-74.657 0.75284,-28.859 -89.2,72.987 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2;stroke-linejoin:round" />
<path
id="path4041"
d="m -599.26,177.23 v 7.1365 l 9.1419,6.3882 89.034,-72.043 0.19514,-7.4802 -9.536,-7.0265 z"
inkscape:connector-curvature="0"
style="stroke-width:1px" />
<path
id="path4037"
d="m -598.76,175.23 88.835,-73.025 9.536,7.0265 -89.2,72.987 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:1.5;stroke-linejoin:round" />
</g>
<g
id="g4188"
transform="translate(884.066,-4.99999)"
style="fill:#ffffff;stroke:#000000;stroke-linejoin:round">
<path
id="path4043"
d="m -512.36,65.679 165.99,79.073 0.35489,-23.778 -166.09,-77.366 z"
inkscape:connector-curvature="0"
style="stroke-width:2" />
<path
id="path4045"
d="m -512.11,43.607 15.737,-11.915 166.13,77.041 -15.774,12.241 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5" />
<path
id="path4047"
d="m -330.25,108.73 v 23.338 l -16.129,12.681 0.35489,-23.778 z"
inkscape:connector-curvature="0"
style="stroke-width:2" />
<path
id="path4051"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-99.472,126.95)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-104.68,131.09)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-8"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-87.026,132.8)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-8"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-92.234,136.94)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-2"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-75.026,138.8)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-4"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-80.234,142.94)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-5"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-61.026,144.8)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-5"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-66.234,148.94)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-1"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-47.026,150.8)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-7"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-52.234,154.94)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-11"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-34.498,156.33)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-52"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-39.705,160.47)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-7"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-22.498,162.33)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-6"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-27.705,166.47)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-14"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-10.498,168.33)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-2"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-15.705,172.47)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-3"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,1.5019,174.33)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-22"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,-3.7052,178.47)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-16"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,13.502,180.33)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-85"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,8.2948,184.47)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-76"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,27.502,186.33)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-1"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,22.295,190.47)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-89"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,41.502,192.33)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
<path
id="path4051-4-27"
transform="matrix(0.77333,0.23576,-0.27228,0.66959,36.295,196.47)"
d="m -488.07,43.487 c 0,1.1088 -1.4721,2.0076 -3.288,2.0076 -1.8159,0 -3.288,-0.89882 -3.288,-2.0076 0,-1.10878 1.4721,-2.0076 3.288,-2.0076 1.8159,0 3.288,0.89882 3.288,2.0076 z"
inkscape:connector-curvature="0" />
</g>
<g
id="g4251"
transform="translate(884.066,-4.99999)">
<g
id="g4257"
style="fill:#ffffff;stroke:#000000">
<path
id="path4217"
d="m -224.85,185.27 70.767,34.129 0.37642,39.148 -71.018,-33.878 z"
inkscape:connector-curvature="0"
style="stroke-width:2;stroke-linejoin:round" />
<path
id="path4219"
d="m -224.85,185.27 40.151,-37.391 69.763,34.631 -39.148,36.889 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5;stroke-linejoin:round" />
<path
id="path4221"
d="m -153.7,258.55 38.775,-35.841 -0.004,-40.195 -39.148,36.889 z"
inkscape:connector-curvature="0"
style="stroke-width:2;stroke-linejoin:round" />
<path
id="path3971-9"
d="m -161.99,159.15 11.376,-10.37 c 11.73,-10.693 28.855,4.0906 28.482,15.064 0,0 0.12471,1.9525 -1.0127,5.071 -2.0733,5.6846 -1.923,3.6928 -5.0782,6.9972 l -8.6194,-4.124 z"
inkscape:connector-curvature="0"
style="stroke-width:1.5" />
</g>
</g>
<g
id="g3898"
transform="translate(884.066,-4.99999)"
style="stroke:#000000;stroke-linejoin:round">
<path
id="path3785"
d="m -102.39,408.61 v -75.284 l -103.39,-49.687 v 72.774 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2" />
<path
id="path3787"
d="m -205.78,283.64 53.201,-53.201 101.28,47.342 -51.094,55.546 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:1.5" />
<path
id="path3789"
d="m -102.39,408.61 51.282,-57.848 -0.18798,-72.982 -51.094,55.546 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2" />
<path
id="path3791"
d="m -96.885,357.51 0.34451,-14.594 40.191,-44.392 v 14.447 z"
inkscape:connector-curvature="0"
style="stroke-width:1px" />
<path
id="path3791-1"
d="m -96.873,388.64 0.34451,-14.594 40.191,-44.392 v 14.447 z"
inkscape:connector-curvature="0"
style="stroke-width:1px" />
</g>
<g
id="g3887"
transform="translate(884.066,-4.99999)"
style="stroke:#000000;stroke-linejoin:round">
<path
id="path3003"
d="m -366.7,354.66 69.559,-67.429 128.47,63.171 -67.429,73.818 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:1.5" />
<path
id="path3005"
d="m -366.62,423.7 -0.0819,-69.046 130.6,69.559 v 71.76 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2" />
<path
id="path3007"
d="m -236.1,495.97 67.729,-74.782 -0.2999,-70.795 -67.429,73.818 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:2" />
<path
id="path3009"
d="m -228.35,430.48 v 35.383 l 13.049,-14.555 v 10.364 l 5.1819,-5.1819 v 10.796 l 20.568,-22.71 -0.26187,-11.058 3.1438,-3.4724 v -9.1032 l 9.2687,-9.5435 -0.25095,-34.631 z"
inkscape:connector-curvature="0"
style="stroke-width:1px" />
</g>
<metadata
id="metadata90">
<rdf:RDF>
<cc:Work>
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:publisher>
<cc:Agent
rdf:about="http://openclipart.org/">
<dc:title>Openclipart</dc:title>
</cc:Agent>
</dc:publisher>
<dc:title>looks like raspberry pi printed circuit board</dc:title>
<dc:date>2013-10-11T20:32:48</dc:date>
<dc:description>Any similarity to Raspberry pi is not intended ;-)</dc:description>
<dc:source>https://openclipart.org/detail/184791/looks-like-raspberry-pi-printed-circuit-board-by-mawoki-184791</dc:source>
<dc:creator>
<cc:Agent>
<dc:title>mawoki</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>electronic components</rdf:li>
<rdf:li>pcb</rdf:li>
<rdf:li>pi</rdf:li>
<rdf:li>printed circuit board</rdf:li>
<rdf:li>raspberry</rdf:li>
<rdf:li>raspberry pi</rdf:li>
</rdf:Bag>
</dc:subject>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<path
style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 71.362293,154.55744 v 20.11235 l 29.395817,16.63133 v -20.11235 z"
id="path1073" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 71.362293,154.55744 34.230447,-28.2351 28.23511,16.63132 -33.06975,28.23511 z"
id="path1075" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 100.75701,191.29676 33.45665,-27.0744 -0.38677,-21.27306 -33.06974,28.23511 z"
id="path1077" />
<g
transform="matrix(0.82337087,0,0,0.82337087,78.497797,-159.13812)"
style="fill:#ffffff;stroke:#000000;stroke-width:2.429039;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="g1071">
<path
style="stroke-width:2.429039;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 32.184,401.51 v 18.454 l 26.972,15.26 V 416.77 Z"
id="path1065" />
<path
style="stroke-width:2.429039;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 32.184,401.51 31.408,-25.907 25.907,15.26 -30.343,25.907 z"
id="path1067" />
<path
style="stroke-width:2.429039;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 59.155,435.22 30.698,-24.842 -0.35488,-19.519 -30.343,25.907 z"
id="path1069" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 78.10823,148.654 C -19.25021,106.42948 45.83471,52.1024 45.83471,52.1024 v 0"
id="path1083"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 89.672906,138.97194 C 4.14809,104.00897 56.8615,60.97761 56.8615,60.97761"
id="path1085"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<g
id="g1132"
transform="rotate(29.176396,-414.96256,605.35757)">
<rect
y="12.769989"
x="-195"
height="10"
width="55"
id="rect1125"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="rect1127"
d="m -140,3.769989 25,14.5 -25,14.5 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -33,7 +33,7 @@ Page {
})
d.editRulePage.onAccept.connect(function() {
d.editRulePage.busy = true;
Engine.ruleManager.addRule(page.rule);
Engine.ruleManager.addRule(d.editRulePage.rule);
})
d.editRulePage.onCancel.connect(function() {
pageStack.pop();
@ -87,23 +87,14 @@ Page {
filterDeviceId: root.device.id
}
delegate: SwipeDelegate {
delegate: MeaListItemDelegate {
width: parent.width
contentItem: RowLayout {
spacing: app.margins
ColorIcon {
height: app.iconSize
width: height
name: "../images/magic.svg"
color: !model.enabled ? "red" : (model.active ? app.guhAccent : "grey")
}
Label {
Layout.fillWidth: true
text: model.name
}
}
iconName: "../images/magic.svg"
iconColor: !model.enabled ? "red" : (model.active ? app.guhAccent : "grey")
text: model.name
canDelete: true
onDeleteClicked: Engine.ruleManager.removeRule(model.id)
onClicked: {
d.editRulePage = pageStack.push(Qt.resolvedUrl("EditRulePage.qml"), {rule: rulesFilterModel.get(index).clone() })
d.editRulePage.StackView.onRemoved.connect(function() {
@ -118,19 +109,6 @@ Page {
})
}
swipe.right: Item {
height: ruleDelegate.height
width: height
anchors.right: parent.right
ColorIcon {
anchors.fill: parent
anchors.margins: app.margins
name: "../images/delete.svg"
color: "red"
}
SwipeDelegate.onClicked: Engine.ruleManager.removeRule(model.id)
}
}
}
@ -146,6 +124,7 @@ Page {
horizontalAlignment: Text.AlignHCenter
text: qsTr("There's no magic involving %1.").arg(root.device.name)
font.pixelSize: app.largeFont
color: app.guhAccent
}
Label {
width: parent.width