intermediate commit
This commit is contained in:
parent
cf00390f39
commit
798b6879fd
@ -155,7 +155,7 @@ void DeviceManager::getVendorsResponse(const QVariantMap ¶ms)
|
||||
|
||||
void DeviceManager::getSupportedDevicesResponse(const QVariantMap ¶ms)
|
||||
{
|
||||
// qDebug() << "DeviceClass received:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||
qDebug() << "DeviceClass received:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||
if (params.value("params").toMap().keys().contains("deviceClasses")) {
|
||||
QVariantList deviceClassList = params.value("params").toMap().value("deviceClasses").toList();
|
||||
foreach (QVariant deviceClassVariant, deviceClassList) {
|
||||
@ -238,6 +238,7 @@ void DeviceManager::getConfiguredDevicesResponse(const QVariantMap ¶ms)
|
||||
value.convert(QVariant::Int);
|
||||
}
|
||||
device->setStateValue(stateTypeId, value);
|
||||
qDebug() << "Set device state value:" << device->stateValue(stateTypeId) << value;
|
||||
}
|
||||
devices()->addDevice(device);
|
||||
}
|
||||
|
||||
@ -303,7 +303,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(QJsonDocument::Compact) + "\n");
|
||||
}
|
||||
|
||||
|
||||
@ -179,6 +179,9 @@ void LogsModel::update()
|
||||
|
||||
void LogsModel::fetchEarlier(int hours)
|
||||
{
|
||||
if (!m_engine) {
|
||||
return;
|
||||
}
|
||||
if (m_busy) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -254,5 +254,8 @@
|
||||
<file>ui/devicelistpages/DeviceListPageBase.qml</file>
|
||||
<file>ui/MainPage.qml</file>
|
||||
<file>ui/RootItem.qml</file>
|
||||
<file>ui/devicepages/FingerprintReaderDevicePage.qml</file>
|
||||
<file>ui/images/account.svg</file>
|
||||
<file>ui/images/contact-new.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@ -53,7 +53,7 @@ ApplicationWindow {
|
||||
rootItem.handleCloseEvent(close)
|
||||
}
|
||||
|
||||
property var supportedInterfaces: ["light", "weather", "sensor", "media", "garagegate", "extendedawning", "extendedshutter", "extendedblind", "button", "notifications", "inputtrigger", "outputtrigger", "gateway"]
|
||||
property var supportedInterfaces: ["light", "weather", "sensor", "media", "garagegate", "extendedawning", "extendedshutter", "extendedblind", "accesscontrol", "button", "notifications", "inputtrigger", "outputtrigger", "gateway"]
|
||||
function interfaceToString(name) {
|
||||
switch(name) {
|
||||
case "light":
|
||||
@ -91,9 +91,14 @@ ApplicationWindow {
|
||||
return qsTr("Awnings");
|
||||
case "garagegate":
|
||||
return qsTr("Garage gates");
|
||||
case "accesscontrol":
|
||||
return qsTr("Access control");
|
||||
case "uncategorized":
|
||||
return qsTr("Uncategorized")
|
||||
default:
|
||||
console.warn("interfaceToString unhandled interface:", name)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
function interfacesToIcon(interfaces) {
|
||||
@ -166,6 +171,8 @@ ApplicationWindow {
|
||||
return Qt.resolvedUrl("images/select-none.svg")
|
||||
case "simpleclosable":
|
||||
return Qt.resolvedUrl("images/sort-listitem.svg")
|
||||
case "accesscontrol":
|
||||
return Qt.resolvedUrl("images/network-secure.svg");
|
||||
default:
|
||||
console.warn("InterfaceToIcon: Unhandled interface", name)
|
||||
}
|
||||
@ -233,6 +240,8 @@ ApplicationWindow {
|
||||
page = "AwningDevicePage.qml";
|
||||
} else if (interfaceList.indexOf("notifications") >= 0) {
|
||||
page = "NotificationsDevicePage.qml";
|
||||
} else if (interfaceList.indexOf("fingerprintreader") >= 0) {
|
||||
page = "FingerprintReaderDevicePage.qml";
|
||||
} else {
|
||||
page = "GenericDevicePage.qml";
|
||||
}
|
||||
|
||||
295
nymea-app/ui/devicepages/FingerprintReaderDevicePage.qml
Normal file
295
nymea-app/ui/devicepages/FingerprintReaderDevicePage.qml
Normal file
@ -0,0 +1,295 @@
|
||||
import QtQuick 2.5
|
||||
import QtQuick.Controls 2.1
|
||||
import QtQuick.Layouts 1.1
|
||||
import Nymea 1.0
|
||||
import "../components"
|
||||
import "../customviews"
|
||||
|
||||
DevicePageBase {
|
||||
id: root
|
||||
|
||||
readonly property var usersStateType: deviceClass.stateTypes.findByName("users")
|
||||
readonly property var usersState: device.states.getState(usersStateType.id)
|
||||
|
||||
readonly property var accessGrantedEventType: deviceClass.eventTypes.findByName("accessGranted")
|
||||
readonly property var accessDeniedEventType: deviceClass.eventTypes.findByName("accessDenied")
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
// Item {
|
||||
// Layout.fillWidth: true
|
||||
// Layout.preferredHeight: root.inputVisible ? inputColumn.implicitHeight : 0
|
||||
// Behavior on Layout.preferredHeight { NumberAnimation { duration: 130; easing.type: Easing.InOutQuad } }
|
||||
|
||||
// ColumnLayout {
|
||||
// id: inputColumn
|
||||
// anchors { left: parent.left; bottom: parent.bottom; right: parent.right }
|
||||
|
||||
// TextField {
|
||||
// id: titleTextField
|
||||
// Layout.fillWidth: true
|
||||
// Layout.topMargin: app.margins
|
||||
// Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
|
||||
// placeholderText: qsTr("Title")
|
||||
// }
|
||||
|
||||
// TextArea {
|
||||
// id: bodyTextField
|
||||
// Layout.fillWidth: true
|
||||
// Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
|
||||
// placeholderText: qsTr("Text")
|
||||
// wrapMode: Text.WordWrap
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
Button {
|
||||
Layout.fillWidth: true
|
||||
Layout.margins: app.margins
|
||||
text: qsTr("Manage access")
|
||||
onClicked: {
|
||||
pageStack.push(manageUsersComponent)
|
||||
}
|
||||
}
|
||||
|
||||
// ThinDivider {}
|
||||
|
||||
GenericTypeLogView {
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("%1 fingerprints recognized on this device in the last %2 days.")
|
||||
|
||||
logsModel: LogsModel {
|
||||
deviceId: root.device.id
|
||||
engine: _engine
|
||||
live: true
|
||||
Component.onCompleted: update()
|
||||
typeIds: [root.accessGrantedEventType.id, root.accessDeniedEventType.id];
|
||||
|
||||
}
|
||||
|
||||
delegate: MeaListItemDelegate {
|
||||
width: parent.width
|
||||
iconName: "../images/notification.svg"
|
||||
text: model.typeId === root.accessGrantedEventType.id ? qsTr("Access granted for user %1").arg(model.value) : qsTr("Access denied")
|
||||
subText: Qt.formatDateTime(model.timestamp)
|
||||
progressive: false
|
||||
|
||||
onClicked: {
|
||||
var parts = model.value.trim().split(', ')
|
||||
var popup = detailsPopup.createObject(root, {timestamp: model.timestamp, notificationTitle: parts[1], notificationBody: parts[0]});
|
||||
popup.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: manageUsersComponent
|
||||
Page {
|
||||
header: GuhHeader {
|
||||
text: qsTr("Manage users")
|
||||
onBackPressed: pageStack.pop()
|
||||
|
||||
HeaderButton {
|
||||
imageSource: "../images/contact-new.svg"
|
||||
onClicked: pageStack.push(addUserComponent)
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
Layout.margins: app.margins
|
||||
wrapMode: Text.WordWrap
|
||||
text: root.usersState.value.length === 0 ?
|
||||
qsTr("There are no fingerprints registered with this lock")
|
||||
: qsTr("The following users have valid fingerprints for this lock")
|
||||
}
|
||||
ThinDivider {}
|
||||
ListView {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
clip: true
|
||||
model: root.usersState.value
|
||||
|
||||
delegate: MeaListItemDelegate {
|
||||
text: modelData
|
||||
width: parent.width
|
||||
progressive: false
|
||||
iconName: "../images/account.svg"
|
||||
canDelete: true
|
||||
onDeleteClicked: {
|
||||
var actionType = root.deviceClass.actionTypes.findByName("removeUser")
|
||||
var params = []
|
||||
var titleParam = {}
|
||||
titleParam["paramTypeId"] = actionType.paramTypes.findByName("userId").id
|
||||
titleParam["value"] = modelData
|
||||
params.push(titleParam)
|
||||
engine.deviceManager.executeAction(root.device.id, actionType.id, params)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: addUserComponent
|
||||
Page {
|
||||
id: addUserPage
|
||||
header: GuhHeader {
|
||||
text: qsTr("Add a new fingerprint")
|
||||
onBackPressed: pageStack.pop()
|
||||
}
|
||||
|
||||
property bool error: false
|
||||
|
||||
Connections {
|
||||
target: engine.deviceManager
|
||||
onExecuteActionReply: {
|
||||
addUserPage.error = params["deviceError"] !== DeviceManager.DeviceErrorNoError
|
||||
print("Execute action reply:", params);
|
||||
addUserSwipeView.currentIndex++
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
SwipeView {
|
||||
id: addUserSwipeView
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 200
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Item {
|
||||
width: addUserSwipeView.width
|
||||
height: addUserSwipeView.height
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
anchors.margins: app.margins
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("Username")
|
||||
}
|
||||
|
||||
TextField {
|
||||
id: userIdTextField
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
Button {
|
||||
text: qsTr("Add user")
|
||||
Layout.fillWidth: true
|
||||
onClicked: {
|
||||
var actionType = root.deviceClass.actionTypes.findByName("addUser")
|
||||
var params = []
|
||||
var titleParam = {}
|
||||
titleParam["paramTypeId"] = actionType.paramTypes.findByName("userId").id
|
||||
titleParam["value"] = userIdTextField.displayText
|
||||
params.push(titleParam)
|
||||
engine.deviceManager.executeAction(root.device.id, actionType.id, params)
|
||||
addUserSwipeView.currentIndex++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
width: addUserSwipeView.width
|
||||
height: addUserSwipeView.height
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
anchors.margins: app.margins
|
||||
Label {
|
||||
text: qsTr("Please scan the fingerprint now")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
width: addUserSwipeView.width
|
||||
height: addUserSwipeView.height
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
anchors.margins: app.margins
|
||||
spacing: app.margins * 2
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
font.pixelSize: app.largeFont
|
||||
color: app.accentColor
|
||||
text: addUserPage.error ? qsTr("Uh oh") :
|
||||
qsTr("All done!")
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
}
|
||||
Label {
|
||||
text: addUserPage.error ? qsTr("Fingerprint could not be read.\nPlease try again.") :
|
||||
qsTr("Fingerprint added!")
|
||||
Layout.fillWidth: true
|
||||
wrapMode: Text.WordWrap
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
}
|
||||
Button {
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("OK")
|
||||
onClicked: pageStack.pop()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: detailsPopup
|
||||
MeaDialog {
|
||||
id: detailsDialog
|
||||
property string timestamp
|
||||
property string notificationTitle
|
||||
property string notificationBody
|
||||
title: qsTr("Notification details")
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("Date sent")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: Qt.formatDateTime(detailsDialog.timestamp)
|
||||
}
|
||||
Label {
|
||||
Layout.topMargin: app.margins
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("Title")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: detailsDialog.notificationTitle
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
Label {
|
||||
Layout.topMargin: app.margins
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("Text")
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: detailsDialog.notificationBody
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -118,6 +118,7 @@ Page {
|
||||
property var unitString: deviceClass.stateTypes.getStateType(stateTypeId).unitString
|
||||
text: unitString === "datetime" ? Qt.formatDateTime(new Date(value * 1000), Qt.DefaultLocaleShortDate) : value + " " + unitString
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -79,6 +79,7 @@ DevicePageBase {
|
||||
logsModel: LogsModel {
|
||||
deviceId: root.device.id
|
||||
live: true
|
||||
engine: _engine
|
||||
Component.onCompleted: update()
|
||||
typeIds: [root.deviceClass.actionTypes.findByName("notify").id];
|
||||
|
||||
|
||||
188
nymea-app/ui/images/account.svg
Normal file
188
nymea-app/ui/images/account.svg
Normal file
@ -0,0 +1,188 @@
|
||||
<?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="account02.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.0249989"
|
||||
inkscape:cx="-75.494681"
|
||||
inkscape:cy="61.629883"
|
||||
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="false">
|
||||
<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="92,-8.0000001"
|
||||
id="guide4075"
|
||||
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="0,1"
|
||||
position="-5,12"
|
||||
id="guide4078"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="84,-9.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: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 />
|
||||
</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="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.00079107;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 432,393.36133 c 0,23.17236 -18.83538,42 -42.01562,42 -23.18025,0 -42.01563,-18.82764 -42.01563,-42 0,-23.17236 18.83538,-42 42.01563,-42 23.18024,0 42.01562,18.82764 42.01562,42 z m -4.00195,0 c 0,-21.00932 -16.99476,-37.99805 -38.01367,-37.99805 -21.01892,0 -38.01563,16.98873 -38.01563,37.99805 0,21.00931 16.99671,37.99804 38.01563,37.99805 21.01891,0 38.01367,-16.98874 38.01367,-37.99805 z"
|
||||
id="path4116"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.00079107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 405.01758,377.44141 c -2.47429,0 -4.77402,0.37366 -6.86133,1.15234 -2.05824,0.76779 -3.87801,1.88191 -5.40039,3.32617 -1.52083,1.40488 -2.71451,3.11134 -3.54883,5.05664 l -0.008,0.0156 -0.006,0.0176 C 388.39303,388.97398 388,391.10676 388,393.35156 c 0,2.24476 0.39304,4.37563 1.19336,6.33985 l 0.006,0.0176 0.008,0.0176 c 0.83501,1.9469 2.02571,3.66805 3.54102,5.10742 l 0.0117,0.01 0.01,0.0117 c 1.52217,1.4021 3.33667,2.4872 5.38672,3.25195 2.08731,0.77869 4.38704,1.15235 6.86133,1.15235 2.44091,0 4.72145,-0.37519 6.80469,-1.15235 2.08162,-0.76297 3.91553,-1.84644 5.4414,-3.25195 l 0.0117,-0.0117 0.0117,-0.01 c 1.51879,-1.44272 2.69533,-3.17519 3.49414,-5.13086 0.8391,-1.96532 1.25391,-4.1033 1.25391,-6.35156 0,-2.25047 -0.41513,-4.39054 -1.25586,-6.35742 -0.79899,-1.95434 -1.98018,-3.67196 -3.50586,-5.08008 -1.52696,-1.44689 -3.36858,-2.55717 -5.45899,-3.32226 -2.08122,-0.77527 -4.35887,-1.15039 -6.79687,-1.15039 z m 0,4.00195 c 2.03312,0 3.8222,0.30751 5.40625,0.89844 l 0.006,0.004 0.006,0.002 c 1.64251,0.6007 2.98583,1.42421 4.0957,2.47851 l 0.0117,0.01 0.01,0.0117 c 1.1055,1.01828 1.93658,2.21717 2.5293,3.67187 l 0.006,0.0176 0.008,0.0156 c 0.62133,1.4486 0.93946,3.02752 0.93946,4.79883 0,1.77125 -0.31813,3.34826 -0.93946,4.79688 l -0.008,0.0176 -0.006,0.0156 c -0.59248,1.4541 -1.42881,2.67859 -2.54101,3.73828 -1.10958,1.01953 -2.45658,1.8325 -4.10547,2.43555 l -0.006,0.002 -0.006,0.002 c -1.58405,0.59093 -3.37314,0.90039 -5.40625,0.90039 -2.07307,0 -3.88296,-0.31099 -5.46289,-0.90039 -1.61095,-0.60095 -2.94301,-1.41315 -4.0586,-2.4375 -1.11428,-1.06102 -1.97055,-2.29512 -2.59961,-3.75391 C 392.30655,396.71535 392,395.12995 392,393.35156 c 0,-1.77775 0.30701,-3.36427 0.89648,-4.8164 0.62888,-1.45866 1.47715,-2.668 2.58399,-3.6875 l 0.0117,-0.0117 0.0117,-0.01 c 1.11657,-1.06067 2.44494,-1.88534 4.05078,-2.48437 1.57993,-0.5894 3.38982,-0.89844 5.46289,-0.89844 z"
|
||||
id="path4202-1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.00079107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 361.07617,364.22266 -0.002,4 c 3.46007,0.002 6.2421,0.27766 8.37695,0.93945 2.13486,0.66179 3.61991,1.63997 4.8418,3.25781 2.44377,3.2357 3.73242,9.6077 3.73242,20.85742 0,11.24973 -1.28783,17.62413 -3.73242,20.86328 -1.2223,1.61958 -2.70839,2.59897 -4.84375,3.26368 -2.13536,0.6647 -4.91868,0.94328 -8.37891,0.95117 l 0.01,4.00195 c 3.65969,-0.008 6.80598,-0.27597 9.55859,-1.13281 2.75261,-0.85684 5.11262,-2.37486 6.84766,-4.67383 3.47007,-4.59793 4.53906,-11.74795 4.53906,-23.27344 0,-11.52548 -1.06817,-18.67387 -4.53906,-23.26953 -1.73545,-2.29782 -4.0965,-3.81257 -6.84961,-4.66601 -2.75312,-0.85345 -5.9007,-1.1165 -9.56055,-1.11914 z"
|
||||
id="path4228-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
188
nymea-app/ui/images/contact-new.svg
Normal file
188
nymea-app/ui/images/contact-new.svg
Normal file
@ -0,0 +1,188 @@
|
||||
<?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="contact-new.svg">
|
||||
<defs
|
||||
id="defs4876" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="17.150877"
|
||||
inkscape:cx="-6.9384225"
|
||||
inkscape:cy="56.839654"
|
||||
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="false"
|
||||
inkscape:snap-smooth-nodes="false"
|
||||
inkscape:snap-midpoints="false"
|
||||
inkscape:snap-object-midpoints="false"
|
||||
inkscape:snap-center="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-global="true"
|
||||
inkscape:snap-others="false">
|
||||
<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 />
|
||||
</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="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.5;marker:none;enable-background:accumulate"
|
||||
d="m 384.98148,371.3622 1.0004,-3.99998 -40.01574,0 0,3.99998 z"
|
||||
id="rect3470"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<rect
|
||||
transform="scale(-1,1)"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.5;marker:none;enable-background:accumulate"
|
||||
id="rect3472"
|
||||
width="4.0014911"
|
||||
height="40.000053"
|
||||
x="-367.97476"
|
||||
y="349.36221" />
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="M 35 2.5644531 C 32.67165 2.5644531 30.457751 2.9981208 28.425781 3.8769531 C 26.412051 4.7098436 24.632128 5.9356862 23.148438 7.5136719 L 23.136719 7.5253906 L 23.126953 7.5371094 C 21.676483 9.1279699 20.557924 11.039127 19.771484 13.210938 C 19.771484 13.210938 19.771484 13.212891 19.771484 13.212891 C 18.974584 15.376345 18.589844 17.743344 18.589844 20.28125 C 18.589844 22.85941 18.973711 25.252787 19.775391 27.423828 C 20.563391 29.557874 21.682323 31.444824 23.126953 33.029297 L 23.136719 33.041016 L 23.148438 33.052734 C 24.631818 34.63041 26.406206 35.871342 28.416016 36.742188 L 28.433594 36.748047 L 28.449219 36.755859 C 30.476559 37.590389 32.68026 38 35 38 C 37.3198 38 39.521488 37.590399 41.548828 36.755859 L 41.564453 36.748047 L 41.582031 36.742188 C 43.592031 35.871262 45.352671 34.624135 46.800781 33.039062 C 48.286681 31.455319 49.432536 29.563671 50.222656 27.423828 C 51.024326 25.252787 51.408193 22.8594 51.408203 20.28125 C 51.408193 17.743344 51.023453 15.376345 50.226562 13.212891 L 50.226562 13.210938 C 49.438103 11.033529 48.292611 9.1174846 46.800781 7.5273438 C 45.352331 5.942031 43.585886 4.7098836 41.572266 3.8769531 C 39.540296 2.9981208 37.32841 2.5644531 35 2.5644531 z M 35 6.5644531 C 36.84125 6.5644531 38.481534 6.8950768 39.990234 7.5488281 L 40.007812 7.5585938 L 40.025391 7.5664062 C 41.540121 8.1899196 42.792089 9.0621871 43.855469 10.228516 L 43.865234 10.240234 L 43.876953 10.251953 C 44.977653 11.42255 45.838054 12.840841 46.464844 14.572266 L 46.466797 14.578125 L 46.46875 14.583984 C 47.08591 16.255353 47.408193 18.141527 47.408203 20.28125 C 47.408193 22.462587 47.08441 24.371772 46.46875 26.039062 C 45.84362 27.732063 44.983993 29.135146 43.876953 30.3125 L 43.865234 30.324219 L 43.855469 30.335938 C 42.788989 31.505685 41.524563 32.402675 40.001953 33.064453 C 38.491993 33.682519 36.84454 34 35 34 C 33.15553 34 31.506074 33.682519 29.996094 33.064453 C 28.474954 32.403365 27.186715 31.501207 26.078125 30.326172 C 25.006555 29.148688 24.157177 27.73948 23.529297 26.039062 C 22.913637 24.371782 22.589844 22.462587 22.589844 20.28125 C 22.589844 18.141537 22.912127 16.255353 23.529297 14.583984 L 23.53125 14.578125 L 23.533203 14.572266 C 24.161853 12.835703 25.010589 11.412165 26.074219 10.242188 C 27.180519 9.0686618 28.457976 8.1898996 29.972656 7.5664062 L 29.990234 7.5585938 L 30.007812 7.5488281 C 31.516543 6.8950768 33.15882 6.5644531 35 6.5644531 z M 34.982422 43.980469 C 23.424652 43.980469 16.296649 44.893248 11.667969 48.144531 C 9.3536287 49.770168 7.8016706 52.031581 6.9316406 54.6875 C 6.0616106 57.343429 5.7951094 60.384757 5.7871094 63.943359 L 9.7871094 63.953125 C 9.7950194 60.600801 10.076275 57.940596 10.734375 55.931641 C 11.392465 53.922695 12.3476 52.556698 13.96875 51.417969 C 17.21105 49.1405 23.666502 47.980469 34.982422 47.980469 C 46.298352 47.980479 52.751444 49.14131 55.990234 51.417969 C 57.609624 52.556288 58.56357 53.921292 59.21875 55.929688 C 59.87394 57.938083 60.152297 60.597035 60.154297 63.949219 L 64.154297 63.947266 C 64.151647 60.388524 63.890038 57.345932 63.023438 54.689453 C 62.156837 52.032984 60.606189 49.770578 58.292969 48.144531 C 53.666529 44.892448 46.540202 43.980479 34.982422 43.980469 z "
|
||||
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
|
||||
id="path4202-9" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
Reference in New Issue
Block a user