loads of more work

This commit is contained in:
Michael Zanetti 2017-11-06 21:55:35 +01:00
parent 6de33ca718
commit 509ce837e4
111 changed files with 5267 additions and 533 deletions

View File

@ -1,6 +1,6 @@
TEMPLATE=subdirs TEMPLATE=subdirs
SUBDIRS += libguh-common guh-control SUBDIRS = libguh-common guh-control
libguh-common.subdir = libguh-common libguh-common.subdir = libguh-common
guh-control.subdir = guh-control guh-control.subdir = guh-control

View File

@ -46,13 +46,16 @@ QVariant DeviceClasses::data(const QModelIndex &index, int role) const
return QVariant(); return QVariant();
DeviceClass *deviceClass = m_deviceClasses.at(index.row()); DeviceClass *deviceClass = m_deviceClasses.at(index.row());
if (role == NameRole) { switch (role) {
return deviceClass->name(); case RoleId:
} else if (role == IdRole) {
return deviceClass->id().toString(); return deviceClass->id().toString();
} else if (role == PluginIdRole) { case RoleName:
return deviceClass->name();
case RoleDisplayName:
return deviceClass->displayName();
case RolePluginId:
return deviceClass->pluginId().toString(); return deviceClass->pluginId().toString();
} else if (role == VendorIdRole) { case RoleVendorId:
return deviceClass->vendorId().toString(); return deviceClass->vendorId().toString();
} }
return QVariant(); return QVariant();
@ -98,9 +101,10 @@ void DeviceClasses::clearModel()
QHash<int, QByteArray> DeviceClasses::roleNames() const QHash<int, QByteArray> DeviceClasses::roleNames() const
{ {
QHash<int, QByteArray> roles; QHash<int, QByteArray> roles;
roles[NameRole] = "name"; roles[RoleId] = "id";
roles[IdRole] = "id"; roles[RoleName] = "name";
roles[PluginIdRole] = "pluginId"; roles[RoleDisplayName] = "displayName";
roles[VendorIdRole] = "vendorId"; roles[RolePluginId] = "pluginId";
roles[RoleVendorId] = "vendorId";
return roles; return roles;
} }

View File

@ -31,11 +31,12 @@ class DeviceClasses : public QAbstractListModel
{ {
Q_OBJECT Q_OBJECT
public: public:
enum DeviceClassRole { enum Role {
NameRole = Qt::DisplayRole, RoleId,
IdRole, RoleName,
PluginIdRole, RoleDisplayName,
VendorIdRole RolePluginId,
RoleVendorId
}; };
explicit DeviceClasses(QObject *parent = 0); explicit DeviceClasses(QObject *parent = 0);

View File

@ -43,7 +43,7 @@ void DeviceDiscovery::discoverDevices(const QUuid &deviceClassId, const QVariant
if (!discoveryParams.isEmpty()) { if (!discoveryParams.isEmpty()) {
params.insert("discoveryParams", discoveryParams); params.insert("discoveryParams", discoveryParams);
} }
Engine::instance()->jsonRpcClient()->sendCommand("Devices.DiscoverDevices", params, this, "discoverDevicesResponse"); Engine::instance()->jsonRpcClient()->sendCommand("Devices.GetDiscoveredDevices", params, this, "discoverDevicesResponse");
m_busy = true; m_busy = true;
emit busyChanged(); emit busyChanged();
emit countChanged(); emit countChanged();
@ -60,8 +60,9 @@ void DeviceDiscovery::discoverDevicesResponse(const QVariantMap &params)
emit busyChanged(); emit busyChanged();
qDebug() << "response received" << params; qDebug() << "response received" << params;
QVariantList descriptors = params.value("deviceDescriptors").toList(); QVariantList descriptors = params.value("params").toMap().value("deviceDescriptors").toList();
foreach (const QVariant &descriptor, descriptors) { foreach (const QVariant &descriptor, descriptors) {
qDebug() << "descriptor" << descriptor;
if (!contains(descriptor.toMap().value("id").toUuid())) { if (!contains(descriptor.toMap().value("id").toUuid())) {
beginInsertRows(QModelIndex(), m_foundDevices.count(), m_foundDevices.count()); beginInsertRows(QModelIndex(), m_foundDevices.count(), m_foundDevices.count());
m_foundDevices.append(DeviceDescriptor(descriptor.toMap().value("id").toUuid(), m_foundDevices.append(DeviceDescriptor(descriptor.toMap().value("id").toUuid(),

View File

@ -71,11 +71,12 @@ DeviceClasses *DeviceManager::deviceClasses() const
return m_deviceClasses; return m_deviceClasses;
} }
void DeviceManager::addDevice(const QUuid &deviceClassId, const QVariantList &deviceParams) void DeviceManager::addDevice(const QUuid &deviceClassId, const QString &name, const QVariantList &deviceParams)
{ {
qDebug() << "add device " << deviceClassId.toString(); qDebug() << "add device " << deviceClassId.toString();
QVariantMap params; QVariantMap params;
params.insert("deviceClassId", deviceClassId.toString()); params.insert("deviceClassId", deviceClassId.toString());
params.insert("name", name);
params.insert("deviceParams", deviceParams); params.insert("deviceParams", deviceParams);
m_jsonClient->sendCommand("Devices.AddConfiguredDevice", params, this, "addDeviceResponse"); m_jsonClient->sendCommand("Devices.AddConfiguredDevice", params, this, "addDeviceResponse");
} }
@ -97,12 +98,13 @@ void DeviceManager::notificationReceived(const QVariantMap &data)
void DeviceManager::getVendorsResponse(const QVariantMap &params) void DeviceManager::getVendorsResponse(const QVariantMap &params)
{ {
qDebug() << "Got GetSupportedVendors response"; qDebug() << "Got GetSupportedVendors response" << params;
if (params.value("params").toMap().keys().contains("vendors")) { if (params.value("params").toMap().keys().contains("vendors")) {
QVariantList vendorList = params.value("params").toMap().value("vendors").toList(); QVariantList vendorList = params.value("params").toMap().value("vendors").toList();
foreach (QVariant vendorVariant, vendorList) { foreach (QVariant vendorVariant, vendorList) {
Vendor *vendor = JsonTypes::unpackVendor(vendorVariant.toMap(), Engine::instance()->deviceManager()->vendors()); Vendor *vendor = JsonTypes::unpackVendor(vendorVariant.toMap(), Engine::instance()->deviceManager()->vendors());
m_vendors->addVendor(vendor); m_vendors->addVendor(vendor);
qDebug() << "Added Vendor:" << vendor->name();
} }
} }
@ -134,7 +136,7 @@ void DeviceManager::getPluginsResponse(const QVariantMap &params)
m_plugins->addPlugin(plugin); m_plugins->addPlugin(plugin);
} }
} }
m_jsonClient->sendCommand("Devices.GetVendors", this, "getVendorsResponse"); m_jsonClient->sendCommand("Devices.GetSupportedVendors", this, "getVendorsResponse");
} }
void DeviceManager::getConfiguredDevicesResponse(const QVariantMap &params) void DeviceManager::getConfiguredDevicesResponse(const QVariantMap &params)
@ -144,29 +146,45 @@ void DeviceManager::getConfiguredDevicesResponse(const QVariantMap &params)
foreach (QVariant deviceVariant, deviceList) { foreach (QVariant deviceVariant, deviceList) {
Device *device = JsonTypes::unpackDevice(deviceVariant.toMap(), Engine::instance()->deviceManager()->devices()); Device *device = JsonTypes::unpackDevice(deviceVariant.toMap(), Engine::instance()->deviceManager()->devices());
if (!device) continue; if (!device) continue;
Engine::instance()->deviceManager()->devices()->addDevice(device);
//qDebug() << QJsonDocument::fromVariant(deviceVariant).toJson(); // qDebug() << QJsonDocument::fromVariant(deviceVariant).toJson();
DeviceClass *dc = m_deviceClasses->getDeviceClass(device->deviceClassId());
if (!dc) {
qWarning() << "Can't find a deviceClass for this device" << device->name();
continue;
}
// set initial state values // set initial state values
QVariantList stateVariantList = deviceVariant.toMap().value("states").toList(); QVariantList stateVariantList = deviceVariant.toMap().value("states").toList();
foreach (const QVariant &stateMap, stateVariantList) { foreach (const QVariant &stateMap, stateVariantList) {
QUuid stateTypeId = stateMap.toMap().value("stateTypeId").toUuid(); QUuid stateTypeId = stateMap.toMap().value("stateTypeId").toUuid();
StateType *st = dc->stateTypes()->getStateType(stateTypeId);
if (!st) {
qWarning() << "Can't find a statetype for this state";
continue;
}
QVariant value = stateMap.toMap().value("value"); QVariant value = stateMap.toMap().value("value");
if (st->type() == "Bool") {
value.convert(QVariant::Bool);
}
device->setStateValue(stateTypeId, value); device->setStateValue(stateTypeId, value);
} }
Engine::instance()->deviceManager()->devices()->addDevice(device);
} }
} }
} }
void DeviceManager::addDeviceResponse(const QVariantMap &params) void DeviceManager::addDeviceResponse(const QVariantMap &params)
{ {
if (params.value("params").toMap().keys().contains("device")) { if (params.value("params").toMap().value("deviceError").toString() != "DeviceErrorNoError") {
qWarning() << "Failed to add the device:" << params.value("params").toMap().value("deviceError").toString();
} else if (params.value("params").toMap().keys().contains("device")) {
QVariantMap deviceVariant = params.value("params").toMap().value("device").toMap(); QVariantMap deviceVariant = params.value("params").toMap().value("device").toMap();
Device *device = JsonTypes::unpackDevice(deviceVariant, m_devices); Device *device = JsonTypes::unpackDevice(deviceVariant, m_devices);
qDebug() << "Device added" << device->id().toString(); qDebug() << "Device added" << device->id().toString();
m_devices->addDevice(device); m_devices->addDevice(device);
} }
emit addDeviceReply(params.value("params").toMap());
} }
void DeviceManager::removeDeviceResponse(const QVariantMap &params) void DeviceManager::removeDeviceResponse(const QVariantMap &params)
@ -178,6 +196,16 @@ void DeviceManager::removeDeviceResponse(const QVariantMap &params)
device->deleteLater(); device->deleteLater();
} }
void DeviceManager::pairDeviceResponse(const QVariantMap &params)
{
emit pairDeviceReply(params.value("params").toMap());
}
void DeviceManager::confirmPairintResponse(const QVariantMap &params)
{
emit confirmPairingReply(params.value("params").toMap());
}
void DeviceManager::addDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name) void DeviceManager::addDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name)
{ {
qDebug() << "JsonRpc: add discovered device " << deviceClassId.toString(); qDebug() << "JsonRpc: add discovered device " << deviceClassId.toString();
@ -195,7 +223,7 @@ void DeviceManager::pairDevice(const QUuid &deviceClassId, const QUuid &deviceDe
params.insert("name", "name"); params.insert("name", "name");
params.insert("deviceClassId", deviceClassId.toString()); params.insert("deviceClassId", deviceClassId.toString());
params.insert("deviceDescriptorId", deviceDescriptorId.toString()); params.insert("deviceDescriptorId", deviceDescriptorId.toString());
m_jsonClient->sendCommand("Devices.PairDevice", params); m_jsonClient->sendCommand("Devices.PairDevice", params, this, "pairDeviceResponse");
} }
void DeviceManager::confirmPairing(const QUuid &pairingTransactionId, const QString &secret) void DeviceManager::confirmPairing(const QUuid &pairingTransactionId, const QString &secret)
@ -204,7 +232,7 @@ void DeviceManager::confirmPairing(const QUuid &pairingTransactionId, const QStr
QVariantMap params; QVariantMap params;
params.insert("pairingTransactionId", pairingTransactionId.toString()); params.insert("pairingTransactionId", pairingTransactionId.toString());
params.insert("secret", secret); params.insert("secret", secret);
m_jsonClient->sendCommand("Devices.ConfirmPairing", params); m_jsonClient->sendCommand("Devices.ConfirmPairing", params, this, "confirmPairingResponse");
} }
void DeviceManager::removeDevice(const QUuid &deviceId) void DeviceManager::removeDevice(const QUuid &deviceId)

View File

@ -51,7 +51,7 @@ public:
Devices *devices() const; Devices *devices() const;
DeviceClasses *deviceClasses() const; DeviceClasses *deviceClasses() const;
Q_INVOKABLE void addDevice(const QUuid &deviceClassId, const QVariantList &deviceParams); Q_INVOKABLE void addDevice(const QUuid &deviceClassId, const QString &name, const QVariantList &deviceParams);
Q_INVOKABLE void addDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name); Q_INVOKABLE void addDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name);
Q_INVOKABLE void pairDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId); Q_INVOKABLE void pairDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId);
Q_INVOKABLE void confirmPairing(const QUuid &pairingTransactionId, const QString &secret = QString()); Q_INVOKABLE void confirmPairing(const QUuid &pairingTransactionId, const QString &secret = QString());
@ -66,8 +66,13 @@ private:
Q_INVOKABLE void getConfiguredDevicesResponse(const QVariantMap &params); Q_INVOKABLE void getConfiguredDevicesResponse(const QVariantMap &params);
Q_INVOKABLE void addDeviceResponse(const QVariantMap &params); Q_INVOKABLE void addDeviceResponse(const QVariantMap &params);
Q_INVOKABLE void removeDeviceResponse(const QVariantMap &params); Q_INVOKABLE void removeDeviceResponse(const QVariantMap &params);
Q_INVOKABLE void pairDeviceResponse(const QVariantMap &params);
Q_INVOKABLE void confirmPairintResponse(const QVariantMap &params);
signals:
void pairDeviceReply(const QVariantMap &params);
void confirmPairingReply(const QVariantMap &params);
void addDeviceReply(const QVariantMap &params);
private: private:
Vendors *m_vendors; Vendors *m_vendors;

View File

@ -36,6 +36,10 @@ void GuhConnection::connect(const QString &url)
void GuhConnection::disconnect() void GuhConnection::disconnect()
{ {
if (!m_currentInterface || !m_currentInterface->isConnected()) {
qWarning() << "not connected, cannot disconnect";
return;
}
m_currentInterface->disconnect(); m_currentInterface->disconnect();
} }

View File

@ -28,6 +28,7 @@
#include <QDebug> #include <QDebug>
#include <QUuid> #include <QUuid>
#include <QSettings> #include <QSettings>
#include <QVersionNumber>
JsonRpcClient::JsonRpcClient(GuhConnection *connection, QObject *parent) : JsonRpcClient::JsonRpcClient(GuhConnection *connection, QObject *parent) :
JsonHandler(parent), JsonHandler(parent),
@ -202,6 +203,11 @@ void JsonRpcClient::dataReceived(const QByteArray &data)
m_authenticationRequired = dataMap.value("authenticationRequired").toBool(); m_authenticationRequired = dataMap.value("authenticationRequired").toBool();
m_serverUuid = dataMap.value("uuid").toString(); m_serverUuid = dataMap.value("uuid").toString();
QString protoVersionString = dataMap.value("protocol version").toString();
if (!protoVersionString.contains('.')) {
protoVersionString.prepend("0.");
}
if (m_initialSetupRequired) { if (m_initialSetupRequired) {
emit initialSetupRequiredChanged(); emit initialSetupRequiredChanged();
} else if (m_authenticationRequired) { } else if (m_authenticationRequired) {
@ -218,13 +224,20 @@ void JsonRpcClient::dataReceived(const QByteArray &data)
m_connected = true; m_connected = true;
emit connectedChanged(true); emit connectedChanged(true);
QVersionNumber minimumRequiredVersion = QVersionNumber(1, 0);
QVersionNumber protocolVersion = QVersionNumber::fromString(protoVersionString);
if (protocolVersion < minimumRequiredVersion) {
m_connection->disconnect();
emit invalidProtocolVersion(protocolVersion.toString(), minimumRequiredVersion.toString());
}
} }
// check if this is a reply to a request // check if this is a reply to a request
int commandId = dataMap.value("id").toInt(); int commandId = dataMap.value("id").toInt();
JsonRpcReply *reply = m_replies.take(commandId); JsonRpcReply *reply = m_replies.take(commandId);
if (reply) { if (reply) {
qDebug() << QString("JsonRpc: got response for %1.%2").arg(reply->nameSpace(), reply->method()) << reply->callback() << reply->callback(); // qDebug() << QString("JsonRpc: got response for %1.%2: %3").arg(reply->nameSpace(), reply->method(), QString::fromUtf8(jsonDoc.toJson(QJsonDocument::Indented))) << reply->callback() << reply->callback();
if (reply->caller() != nullptr && !reply->callback().isEmpty()) { if (reply->caller() != nullptr && !reply->callback().isEmpty()) {
QMetaObject::invokeMethod(reply->caller(), reply->callback().toLatin1().data(), Q_ARG(QVariantMap, dataMap)); QMetaObject::invokeMethod(reply->caller(), reply->callback().toLatin1().data(), Q_ARG(QVariantMap, dataMap));

View File

@ -66,6 +66,7 @@ signals:
void authenticationRequiredChanged(); void authenticationRequiredChanged();
void connectedChanged(bool connected); void connectedChanged(bool connected);
void tokenChanged(); void tokenChanged();
void invalidProtocolVersion(const QString &actualVersion, const QString &minimumVersion);
void responseReceived(const int &commandId, const QVariantMap &response); void responseReceived(const int &commandId, const QVariantMap &response);

View File

@ -34,7 +34,9 @@ JsonTypes::JsonTypes(QObject *parent) :
Vendor *JsonTypes::unpackVendor(const QVariantMap &vendorMap, QObject *parent) Vendor *JsonTypes::unpackVendor(const QVariantMap &vendorMap, QObject *parent)
{ {
return new Vendor(vendorMap.value("id").toUuid(), vendorMap.value("name").toString(), parent); Vendor *v = new Vendor(vendorMap.value("id").toUuid(), vendorMap.value("name").toString(), parent);
v->setDisplayName(vendorMap.value("displayName").toString());
return v;
} }
Plugin *JsonTypes::unpackPlugin(const QVariantMap &pluginMap, QObject *parent) Plugin *JsonTypes::unpackPlugin(const QVariantMap &pluginMap, QObject *parent)
@ -54,6 +56,7 @@ DeviceClass *JsonTypes::unpackDeviceClass(const QVariantMap &deviceClassMap, QOb
{ {
DeviceClass *deviceClass = new DeviceClass(parent); DeviceClass *deviceClass = new DeviceClass(parent);
deviceClass->setName(deviceClassMap.value("name").toString()); deviceClass->setName(deviceClassMap.value("name").toString());
deviceClass->setDisplayName(deviceClassMap.value("displayName").toString());
deviceClass->setId(deviceClassMap.value("id").toUuid()); deviceClass->setId(deviceClassMap.value("id").toUuid());
deviceClass->setVendorId(deviceClassMap.value("vendorId").toUuid()); deviceClass->setVendorId(deviceClassMap.value("vendorId").toUuid());
QVariantList createMethodsList = deviceClassMap.value("createMethods").toList(); QVariantList createMethodsList = deviceClassMap.value("createMethods").toList();
@ -133,6 +136,7 @@ StateType *JsonTypes::unpackStateType(const QVariantMap &stateTypeMap, QObject *
StateType *stateType = new StateType(parent); StateType *stateType = new StateType(parent);
stateType->setId(stateTypeMap.value("id").toUuid()); stateType->setId(stateTypeMap.value("id").toUuid());
stateType->setName(stateTypeMap.value("name").toString()); stateType->setName(stateTypeMap.value("name").toString());
stateType->setDisplayName(stateTypeMap.value("displayName").toString());
stateType->setIndex(stateTypeMap.value("index").toInt()); stateType->setIndex(stateTypeMap.value("index").toInt());
stateType->setDefaultValue(stateTypeMap.value("defaultValue")); stateType->setDefaultValue(stateTypeMap.value("defaultValue"));
stateType->setType(stateTypeMap.value("type").toString()); stateType->setType(stateTypeMap.value("type").toString());

View File

@ -40,6 +40,8 @@
#include "types/ruleactionparams.h" #include "types/ruleactionparams.h"
#include "types/ruleactionparam.h" #include "types/ruleactionparam.h"
#include "types/rule.h" #include "types/rule.h"
#include "models/logsmodel.h"
#include "models/valuelogsproxymodel.h"
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
@ -104,6 +106,10 @@ int main(int argc, char *argv[])
qmlRegisterType<UpnpDiscovery>(uri, 1, 0, "UpnpDiscovery"); qmlRegisterType<UpnpDiscovery>(uri, 1, 0, "UpnpDiscovery");
qmlRegisterType<ZeroconfDiscovery>(uri, 1, 0, "ZeroconfDiscovery"); qmlRegisterType<ZeroconfDiscovery>(uri, 1, 0, "ZeroconfDiscovery");
qmlRegisterType<LogsModel>(uri, 1, 0, "LogsModel");
qmlRegisterType<ValueLogsProxyModel>(uri, 1, 0, "ValueLogsProxyModel");
qmlRegisterUncreatableType<LogEntry>(uri, 1, 0, "LogEntry", "Get them from LogsModel");
Engine::instance(); Engine::instance();
QQmlApplicationEngine engine; QQmlApplicationEngine engine;

View File

@ -0,0 +1,134 @@
#include "logsmodel.h"
#include "engine.h"
LogsModel::LogsModel(QObject *parent) : QAbstractListModel(parent)
{
}
bool LogsModel::busy() const
{
return m_busy;
}
int LogsModel::rowCount(const QModelIndex &parent) const
{
return m_list.count();
}
QVariant LogsModel::data(const QModelIndex &index, int role) const
{
return QVariant();
}
QHash<int, QByteArray> LogsModel::roleNames() const
{
QHash<int, QByteArray> roles;
roles.insert(RoleValue, "value");
return roles;
}
QString LogsModel::deviceId() const
{
return m_deviceId;
}
void LogsModel::setDeviceId(const QString &deviceId)
{
if (m_deviceId != deviceId) {
m_deviceId = deviceId;
emit deviceIdChanged();
}
}
QString LogsModel::typeId() const
{
return m_typeId;
}
void LogsModel::setTypeId(const QString &typeId)
{
if (m_typeId != typeId) {
m_typeId = typeId;
emit typeIdChanged();
}
}
QDateTime LogsModel::startTime() const
{
return m_startTime;
}
void LogsModel::setStartTime(const QDateTime &startTime)
{
if (m_startTime != startTime) {
m_startTime = startTime;
emit startTimeChanged();
}
}
QDateTime LogsModel::endTime() const
{
return m_endTime;
}
void LogsModel::setEndTime(const QDateTime &endTime)
{
if (m_endTime != endTime) {
m_endTime = endTime;
emit endTimeChanged();
}
}
LogEntry *LogsModel::get(int index) const
{
if (index >= 0 && index < m_list.count()) {
return m_list.at(index);
}
return nullptr;
}
void LogsModel::update()
{
m_busy = true;
emit busyChanged();
QVariantMap params;
if (!m_deviceId.isEmpty()) {
QVariantList deviceIds;
deviceIds.append(m_deviceId);
params.insert("deviceIds", deviceIds);
}
if (!m_typeId.isEmpty()) {
QVariantList typeIds;
typeIds.append(m_typeId);
params.insert("typeIds", typeIds);
}
QVariantList timeFilters;
QVariantMap timeFilter;
timeFilter.insert("startDate", m_startTime.toSecsSinceEpoch());
timeFilter.insert("endDate", m_endTime.toSecsSinceEpoch());
timeFilters.append(timeFilter);
params.insert("timeFilters", timeFilters);
Engine::instance()->jsonRpcClient()->sendCommand("Logging.GetLogEntries", params, this, "logsReply");
}
void LogsModel::logsReply(const QVariantMap &data)
{
m_busy = false;
emit busyChanged();
beginResetModel();
qDeleteAll(m_list);
m_list.clear();
QList<QVariant> logEntries = data.value("params").toMap().value("logEntries").toList();
foreach (const QVariant &logEntryVariant, logEntries) {
LogEntry *entry = new LogEntry(QDateTime::fromMSecsSinceEpoch(logEntryVariant.toMap().value("timestamp").toLongLong()), logEntryVariant.toMap().value("value"), this);
m_list.append(entry);
qDebug() << "Added log entry" << entry->dayString() << QDateTime::fromMSecsSinceEpoch(logEntryVariant.toMap().value("timestamp").toLongLong()).date().dayOfWeek();
}
endResetModel();
emit countChanged();
}

View File

@ -0,0 +1,67 @@
#ifndef LOGSMODEL_H
#define LOGSMODEL_H
#include <QAbstractListModel>
#include "types/logentry.h"
class LogsModel : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(bool busy READ busy NOTIFY busyChanged)
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
Q_PROPERTY(QString deviceId READ deviceId WRITE setDeviceId NOTIFY deviceIdChanged)
Q_PROPERTY(QString typeId READ typeId WRITE setTypeId NOTIFY typeIdChanged)
Q_PROPERTY(QDateTime startTime READ startTime WRITE setStartTime NOTIFY startTimeChanged)
Q_PROPERTY(QDateTime endTime READ endTime WRITE setEndTime NOTIFY endTimeChanged)
public:
enum Roles {
RoleValue
};
explicit LogsModel(QObject *parent = nullptr);
bool busy() const;
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role) const override;
QHash<int, QByteArray> roleNames() const override;
QString deviceId() const;
void setDeviceId(const QString &deviceId);
QString typeId() const;
void setTypeId(const QString &typeId);
QDateTime startTime() const;
void setStartTime(const QDateTime &startTime);
QDateTime endTime() const;
void setEndTime(const QDateTime &endTime);
Q_INVOKABLE LogEntry* get(int index) const;
signals:
void busyChanged();
void countChanged();
void deviceIdChanged();
void typeIdChanged();
void startTimeChanged();
void endTimeChanged();
public slots:
virtual void update();
private slots:
virtual void logsReply(const QVariantMap &data);
protected:
QList<LogEntry*> m_list;
QString m_deviceId;
QString m_typeId;
QDateTime m_startTime = QDateTime::currentDateTime().addDays(-1);
QDateTime m_endTime = QDateTime::currentDateTime();
bool m_busy = false;
};
#endif // LOGSMODEL_H

View File

@ -0,0 +1,136 @@
#include "valuelogsproxymodel.h"
#include <QDebug>
ValueLogsProxyModel::ValueLogsProxyModel(QObject *parent) : LogsModel(parent)
{
}
void ValueLogsProxyModel::update()
{
// modify starttime to add a day earlier so we have more chances to have meaningful data right from the start
m_startTime = m_startTime.addDays(-1);
LogsModel::update();
m_startTime = m_startTime.addDays(1);
}
ValueLogsProxyModel::Average ValueLogsProxyModel::average() const
{
return m_average;
}
void ValueLogsProxyModel::setAverage(ValueLogsProxyModel::Average average)
{
if (m_average != average) {
m_average = average;
emit averageChanged();
}
}
QVariant ValueLogsProxyModel::minimumValue() const
{
return m_minimumValue;
}
QVariant ValueLogsProxyModel::maximumValue() const
{
return m_maximumValue;
}
void ValueLogsProxyModel::logsReply(const QVariantMap &data)
{
m_busy = false;
emit busyChanged();
qDebug() << "logs reply";
beginResetModel();
m_minimumValue = QVariant();
m_maximumValue = QVariant();
int stepSize = 1;
switch (m_average) {
case AverageMonth:
stepSize *= 30;
case AverageDay:
stepSize *= 8;
case AverageDayTime:
stepSize *= 3;
case AverageHourly:
stepSize *= 4;
case AverageQuarterHour:
stepSize *= 15;
case AverageMinute:
stepSize *= 60;
}
int totalSlots = startTime().secsTo(endTime()) / stepSize;
qDebug() << "slots" << totalSlots;
QHash<int, QList<QVariant> > entries;
QList<QVariant> logEntries = data.value("params").toMap().value("logEntries").toList();
QVariant startValue;
for (int i = 0; i < logEntries.count(); i++) {
QVariantMap entryMap = logEntries.at(i).toMap();
QDateTime entryTimestamp = QDateTime::fromMSecsSinceEpoch(entryMap.value("timestamp").toLongLong());
int slot = startTime().secsTo(entryTimestamp) / stepSize;
if (slot < 0) {
// We're before the actual starttime (see update()). store the most recent value
startValue = entryMap.value("value");
// qDebug() << "have new startvalue" << startValue << entryTimestamp;
continue;
}
QList<QVariant> tmp = entries[slot];
tmp.append(entryMap.value("value"));
entries[slot] = tmp;
// qDebug() << "adding value to slot" << slot << entryMap.value("value") << QDateTime::fromMSecsSinceEpoch(entryMap.value("timestamp").toLongLong());
}
if (!startValue.isNull() && entries[0].isEmpty()) {
QList<QVariant> tmp;
tmp.append(startValue);
entries[0] = tmp;
}
// qDebug() << "slotsize:" << stepSize << entries.keys();
qDeleteAll(m_list);
m_list.clear();
for (int i = 0; i <= totalSlots; i++) {
QVariant avg = 0;
int counter = 0;
foreach (const QVariant &value, entries[i]) {
avg = avg.toDouble() + value.toDouble();
counter++;
}
if (counter > 0) {
avg = avg.toDouble() / counter;
} else if (entries[i-1].count() > 0) {
avg = entries[i-1].last();
} else if (m_list.count() > 0){
avg = m_list.last()->value();
} else {
continue;
}
LogEntry *entry = new LogEntry(startTime().addSecs(stepSize * i).addSecs(stepSize * .5), avg, this);
// qDebug() << "filling slot" << i << "average:" << avg << entry->timestamp();
m_list.append(entry);
if (m_minimumValue.isNull() || entry->value() < m_minimumValue) {
m_minimumValue = qRound(entry->value().toDouble());
}
if (m_maximumValue.isNull() || entry->value() > m_maximumValue) {
m_maximumValue = qRound(entry->value().toDouble());
}
}
endResetModel();
emit minimumValueChanged();
emit maximumValueChanged();
emit countChanged();
qDebug() << "min" << minimumValue() << "max" << maximumValue();
}

View File

@ -0,0 +1,53 @@
#ifndef VALUELOGSPROXYMODEL_H
#define VALUELOGSPROXYMODEL_H
#include <QAbstractListModel>
#include "logsmodel.h"
class ValueLogsProxyModel : public LogsModel
{
Q_OBJECT
Q_PROPERTY(Average average READ average WRITE setAverage NOTIFY averageChanged)
Q_PROPERTY(QVariant minimumValue READ minimumValue NOTIFY minimumValueChanged)
Q_PROPERTY(QVariant maximumValue READ maximumValue NOTIFY maximumValueChanged)
public:
enum Average {
AverageMonth,
AverageDay,
AverageDayTime,
AverageHourly,
AverageQuarterHour,
AverageMinute
};
Q_ENUM(Average)
explicit ValueLogsProxyModel(QObject *parent = nullptr);
void update() override;
Average average() const;
void setAverage(Average average);
QVariant minimumValue() const;
QVariant maximumValue() const;
signals:
void averageChanged();
void minimumValueChanged();
void maximumValueChanged();
protected:
void logsReply(const QVariantMap &data) override;
private:
Average m_average = AverageHourly;
QVariant m_minimumValue;
QVariant m_maximumValue;
};
#endif // VALUELOGSPROXYMODEL_H

View File

@ -14,31 +14,14 @@
<file>ui/images/back.svg</file> <file>ui/images/back.svg</file>
<file>ui/images/close.svg</file> <file>ui/images/close.svg</file>
<file>ui/MainPage.qml</file> <file>ui/MainPage.qml</file>
<file>ui/images/weathericons/weather-clear-night-symbolic.svg</file>
<file>ui/images/weathericons/weather-few-clouds-night-symbolic.svg</file>
<file>ui/images/weathericons/weather-few-clouds-symbolic.svg</file>
<file>ui/images/weathericons/weather-flurries-symbolic.svg</file>
<file>ui/images/weathericons/weather-fog-symbolic.svg</file>
<file>ui/images/weathericons/weather-hazy-symbolic.svg</file>
<file>ui/images/weathericons/weather-overcast-symbolic.svg</file>
<file>ui/images/weathericons/weather-severe-alert-symbolic.svg</file>
<file>ui/images/weathericons/weather-sleet-symbolic.svg</file>
<file>ui/images/weathericons/weather-snow-symbolic.svg</file>
<file>ui/images/weathericons/weather-chance-of-wind-symbolic.svg</file>
<file>ui/actiondelegates/ActionDelegateFallback.qml</file> <file>ui/actiondelegates/ActionDelegateFallback.qml</file>
<file>ui/images/info.svg</file> <file>ui/images/info.svg</file>
<file>ui/images/weathericons/weather-rain-symbolic.svg</file>
<file>ui/actiondelegates/ActionDelegateColor.qml</file> <file>ui/actiondelegates/ActionDelegateColor.qml</file>
<file>ui/components/ColorPicker.qml</file> <file>ui/components/ColorPicker.qml</file>
<file>ui/images/weathericons/weather-scattered-symbolic.svg</file>
<file>ui/actiondelegates/ActionDelegateNoParams.qml</file> <file>ui/actiondelegates/ActionDelegateNoParams.qml</file>
<file>ui/images/weathericons/weather-cloud-night-symbolic.svg</file>
<file>ui/images/weathericons/weather-cloud-symbolic.svg</file>
<file>ui/actiondelegates/ActionDelegateStringFromStringList.qml</file> <file>ui/actiondelegates/ActionDelegateStringFromStringList.qml</file>
<file>ui/images/weathericons/weather-sun-symbolic.svg</file>
<file>ui/customviews/CustomViewBase.qml</file> <file>ui/customviews/CustomViewBase.qml</file>
<file>ui/customviews/WeatherView.qml</file> <file>ui/customviews/WeatherView.qml</file>
<file>ui/images/weathericons/weather-thunder-symbolic.svg</file>
<file>ui/customviews/MediaControllerView.qml</file> <file>ui/customviews/MediaControllerView.qml</file>
<file>ui/LoginPage.qml</file> <file>ui/LoginPage.qml</file>
<file>ui/customviews/SensorView.qml</file> <file>ui/customviews/SensorView.qml</file>
@ -58,5 +41,65 @@
<file>ui/magic/SelectActionPage.qml</file> <file>ui/magic/SelectActionPage.qml</file>
<file>ui/devicepages/GenericDeviceStateDetailsPage.qml</file> <file>ui/devicepages/GenericDeviceStateDetailsPage.qml</file>
<file>ui/images/delete.svg</file> <file>ui/images/delete.svg</file>
<file>ui/images/audio-speakers-muted-symbolic.svg</file>
<file>ui/images/audio-speakers-symbolic.svg</file>
<file>ui/images/media-playback-pause.svg</file>
<file>ui/images/media-playback-start.svg</file>
<file>ui/images/media-playback-stop.svg</file>
<file>ui/images/media-seek-backward.svg</file>
<file>ui/images/media-seek-forward.svg</file>
<file>ui/images/media-skip-backward.svg</file>
<file>ui/images/media-skip-forward.svg</file>
<file>ui/paramdelegates/BoolParamDelegate.qml</file>
<file>ui/components/ThinDivider.qml</file>
<file>ui/images/weather-app-symbolic.svg</file>
<file>ui/images/weathericons/weather-clear-day.svg</file>
<file>ui/images/weathericons/weather-clear-night.svg</file>
<file>ui/images/weathericons/weather-clouds.svg</file>
<file>ui/images/weathericons/weather-few-clouds-day.svg</file>
<file>ui/images/weathericons/weather-few-clouds-night.svg</file>
<file>ui/images/weathericons/weather-fog.svg</file>
<file>ui/images/weathericons/weather-light-rain.svg</file>
<file>ui/images/weathericons/weather-overcast.svg</file>
<file>ui/images/weathericons/weather-shower-rain.svg</file>
<file>ui/images/weathericons/weather-snow.svg</file>
<file>ui/images/weathericons/weather-thunderstorm.svg</file>
<file>ui/images/weathericons/humidity.svg</file>
<file>ui/images/weathericons/wind.svg</file>
<file>ui/devicepages/WeatherDevicePage.qml</file>
<file>ui/devicepages/ColorLightDevicePage.qml</file>
<file>ui/images/torch-off.svg</file>
<file>ui/components/ThrottledSlider.qml</file>
<file>ui/components/ColorPickerCt.qml</file>
<file>ui/images/navigation-menu.svg</file>
<file>ui/components/IconMenuItem.qml</file>
<file>ui/images/settings.svg</file>
<file>ui/images/stock_link.svg</file>
<file>ui/images/share.svg</file>
<file>ui/SystemInfoPage.qml</file>
<file>ui/devicepages/SensorDevicePage.qml</file>
<file>ui/components/Graph.qml</file>
<file>ui/images/sensors.svg</file>
<file>ui/images/temperature.svg</file>
<file>ui/images/network-wired-symbolic.svg</file>
<file>ui/paramdelegates/StringParamDelegate.qml</file>
<file>ui/paramdelegates/ParamDelegate.qml</file>
<file>ui/paramdelegates/ParamDelegateBase.qml</file>
<file>ui/images/notification.svg</file>
<file>ui/paramdelegates/IntParamDelegate.qml</file>
<file>ui/customviews/NotificationsView.qml</file>
<file>ui/devicepages/DevicePageBase.qml</file>
<file>ui/images/battery/battery-000.svg</file>
<file>ui/images/battery/battery-010.svg</file>
<file>ui/images/battery/battery-020.svg</file>
<file>ui/images/battery/battery-030.svg</file>
<file>ui/images/battery/battery-040.svg</file>
<file>ui/images/battery/battery-050.svg</file>
<file>ui/images/battery/battery-060.svg</file>
<file>ui/images/battery/battery-070.svg</file>
<file>ui/images/battery/battery-080.svg</file>
<file>ui/images/battery/battery-090.svg</file>
<file>ui/images/battery/battery-100.svg</file>
<file>ui/images/dialog-warning-symbolic.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -99,7 +99,7 @@ void RuleManager::getRuleDetailsReply(const QVariantMap &params)
qDebug() << "Got rule details for a rule we don't know"; qDebug() << "Got rule details for a rule we don't know";
return; return;
} }
qDebug() << "got rule details for rule" << ruleMap; // qDebug() << "got rule details for rule" << ruleMap;
parseEventDescriptors(ruleMap.value("eventDescriptors").toList(), rule); parseEventDescriptors(ruleMap.value("eventDescriptors").toList(), rule);
parseRuleActions(ruleMap.value("actions").toList(), rule); parseRuleActions(ruleMap.value("actions").toList(), rule);
} }

View File

@ -1,142 +1,61 @@
import QtQuick 2.5 import QtQuick 2.8
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import QtQuick.Layouts 1.1
import QtQuick.Controls.Material 2.1 import QtQuick.Controls.Material 2.1
import Guh 1.0 import Guh 1.0
import "components" import "components"
Page { GridView {
id: root id: interfacesGridView
header: GuhHeader { property alias shownInterfaces: interfacesModel.shownInterfaces
text: "My things"
backButtonVisible: false
HeaderButton { model: InterfacesModel {
imageSource: "images/add.svg" id: interfacesModel
onClicked: pageStack.push(Qt.resolvedUrl("NewDeviceWizard.qml")) devices: Engine.deviceManager.devices
}
} }
SwipeView { property int tilesPerRow: Math.ceil(Math.sqrt(interfacesGridView.count))
anchors.fill: parent cellWidth: width / tilesPerRow
clip: true cellHeight: height / tilesPerRow
delegate: Item {
Item { width: interfacesGridView.cellWidth
GridView { height: interfacesGridView.cellHeight
id: interfacesGridView Pane {
anchors.fill: parent anchors.fill: parent
anchors.margins: app.margins anchors.margins: app.margins
model: InterfacesModel {
id: interfacesModel
devices: Engine.deviceManager.devices
shownInterfaces: ["light", "weather", "sensor", "media", "button"]
}
cellWidth: {
if (count < 6) {
return (interfacesGridView.width - spacing) / 2
}
return (interfacesGridView.width - spacing * 2) / 3
}
cellHeight: cellWidth
delegate: Item {
width: interfacesGridView.cellWidth
height: interfacesGridView.cellHeight
Pane {
anchors.fill: parent
anchors.margins: app.margins
// color: "#22000000" // color: "#22000000"
Material.elevation: 1 Material.elevation: 1
Column { Column {
anchors.centerIn: parent anchors.centerIn: parent
spacing: app.margins spacing: app.margins
ColorIcon { ColorIcon {
height: app.iconSize * 2 height: app.iconSize * 2
width: height width: height
color: app.guhAccent color: app.guhAccent
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
name: interfaceToIcon(model.name) name: interfaceToIcon(model.name)
}
Label {
text: interfaceToString(model.name).toUpperCase()
anchors.horizontalCenter: parent.horizontalCenter
}
}
MouseArea {
anchors.fill: parent
onClicked: {
var page;
switch (model.name) {
case "light":
page = "LightsDeviceListPage.qml"
break;
default:
page = "GenericDeviceListPage.qml"
}
pageStack.push(Qt.resolvedUrl("devicelistpages/" + page), {filterInterface: model.name})
}
}
}
}
}
}
Item {
GridView {
id: gridView
anchors.fill: parent
anchors.margins: app.margins
model: DevicesBasicTagsModel {
id: devicesBasicTagsModel
devices: Engine.deviceManager.devices
hideSystemTags: true
} }
cellWidth: {
if (count < 6) {
return (gridView.width - spacing) / 2
}
return (gridView.width - spacing * 2) / 3
}
cellHeight: cellWidth
delegate: Item {
width: gridView.cellWidth
height: gridView.cellHeight
Pane {
anchors.fill: parent
anchors.margins: app.margins
// color: "#22000000"
Material.elevation: 2
Label {
anchors.centerIn: parent
text: model.tagLabel
}
MouseArea {
anchors.fill: parent
onClicked: {
pageStack.push(Qt.resolvedUrl("devicelistpages/GenericDeviceListPage.qml"), {filterTag: model.tag})
}
}
}
}
}
}
ListView {
model: Engine.deviceManager.devices
delegate: ItemDelegate {
width: parent.width
Label { Label {
anchors { fill: parent; leftMargin: app.margins; rightMargin: app.margins } text: interfaceToString(model.name).toUpperCase()
text: model.name anchors.horizontalCenter: parent.horizontalCenter
verticalAlignment: Text.AlignVCenter }
}
MouseArea {
anchors.fill: parent
onClicked: {
var page;
switch (model.name) {
case "light":
page = "LightsDeviceListPage.qml"
break;
default:
page = "GenericDeviceListPage.qml"
}
pageStack.push(Qt.resolvedUrl("devicelistpages/" + page), {filterInterface: model.name})
} }
} }
} }

View File

@ -1,5 +1,5 @@
import QtQuick 2.8 import QtQuick 2.8
import QtQuick.Controls 2.2 import QtQuick.Controls 2.1
import "components" import "components"
import Guh 1.0 import Guh 1.0

View File

@ -1,40 +1,74 @@
import QtQuick 2.5 import QtQuick 2.5
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material 2.1
import QtQuick.Layouts 1.2
import Guh 1.0
import "components"
Page { Page {
id: root id: root
footer: TabBar {
Material.elevation: 2 header: GuhHeader {
TabButton { text: "My things"
text: "Things" backButtonVisible: false
onClicked: mainSwipeView.currentIndex = 0 menuButtonVisible: true
onMenuPressed: mainMenu.open()
}
Menu {
id: mainMenu
width: implicitWidth + app.margins
IconMenuItem {
iconSource: "../images/share.svg"
text: "Configure things"
} }
TabButton { IconMenuItem {
text: "Magic" iconSource: "../images/add.svg"
onClicked: mainSwipeView.currentIndex = 1 text: "Add a new thing..."
onTriggered: pageStack.push(Qt.resolvedUrl("NewDeviceWizard.qml"))
} }
TabButton { IconMenuItem {
text: "Settings" iconSource: "../images/settings.svg"
onClicked: mainSwipeView.currentIndex = 2 text: "App settings"
onTriggered: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
}
IconMenuItem {
iconSource: "../images/info.svg"
text: "System information"
onTriggered: pageStack.push(Qt.resolvedUrl("SystemInfoPage.qml"))
} }
} }
SwipeView { ColumnLayout {
id: mainSwipeView
anchors.fill: parent anchors.fill: parent
interactive: false anchors.margins: app.margins
DevicesPage { SwipeView {
id: swipeView
Layout.fillWidth: true
Layout.fillHeight: true
DevicesPage {
width: parent.view.width
height: parent.view.height
shownInterfaces: ["light", "weather", "sensor", "media"]
}
DevicesPage {
width: parent.view.width
height: parent.view.height
shownInterfaces: ["gateway", "button", "notifications"]
}
} }
MagicPage { PageIndicator {
Layout.alignment: Qt.AlignHCenter
} count: swipeView.count
currentIndex: swipeView.currentIndex
SettingsPage {
} }
} }
} }

View File

@ -3,6 +3,7 @@ import QtQuick.Layouts 1.1
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import Guh 1.0 import Guh 1.0
import "components" import "components"
import "paramdelegates"
Page { Page {
id: root id: root
@ -38,27 +39,28 @@ Page {
} }
Connections { Connections {
target: Engine.jsonRpcClient target: Engine.deviceManager
onResponseReceived: { onPairDeviceReply: {
print("response received", response) switch (params["setupMethod"]) {
if (commandId == d.addRequestId) { case "SetupMethodPushButton":
print("result", response["deviceError"]) d.pairingTransactionId = params["pairingTransactionId"];
d.addResult = (response["deviceError"] === "DeviceErrorNoError") print("response", params["displayMessage"], d.pairingTransactionId)
internalPageStack.push(resultsPage) internalPageStack.push(pairingPage, {text: params["displayMessage"]})
} else if (commandId == d.pairRequestId) { break;
switch (response["setupMethod"]) { default:
case "SetupMethodPushButton": print("Setup method", params["setupMethod"], "not handled");
d.pairingTransactionId = response["pairingTransactionId"];
print("response", response["displayMessage"], d.pairingTransactionId)
internalPageStack.push(pairingPage, {text: response["displayMessage"]})
break;
default:
print("Setup method", response["setupMethod"], "not handled");
}
} }
} }
onConfirmPairingReply: {
print("result", params["deviceError"])
d.addResult = (params["deviceError"] === "DeviceErrorNoError")
internalPageStack.push(resultsPage)
}
onAddDeviceReply: {
d.addResult = (params["deviceError"] === "DeviceErrorNoError")
internalPageStack.push(resultsPage)
}
} }
StackView { StackView {
@ -77,7 +79,7 @@ Page {
anchors.fill: parent anchors.fill: parent
anchors.margins: app.margins anchors.margins: app.margins
Label { Label {
text: model.name text: model.displayName
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
@ -111,7 +113,7 @@ Page {
anchors.fill: parent anchors.fill: parent
anchors.margins: app.margins anchors.margins: app.margins
Label { Label {
text: model.name text: model.displayName
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
@ -128,6 +130,8 @@ Page {
discovery.discoverDevices(deviceClass.id) discovery.discoverDevices(deviceClass.id)
internalPageStack.push(discoveryPage) internalPageStack.push(discoveryPage)
} }
} else if (deviceClass.createMethods.indexOf("CreateMethodUser") !== -1) {
internalPageStack.push(paramsPage)
} }
print("should setup", deviceClass.name, deviceClass.setupMethod, deviceClass.createMethods, deviceClass["discoveryParamTypes"].count) print("should setup", deviceClass.name, deviceClass.setupMethod, deviceClass.createMethods, deviceClass["discoveryParamTypes"].count)
@ -281,23 +285,40 @@ Page {
id: paramsView id: paramsView
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
anchors.margins: 10 spacing: app.margins
spacing: 10 ColumnLayout {
Label { Layout.margins: app.margins
text: "Name the thing:"
Layout.fillWidth: true
}
TextField {
id: nameTextField
text: d.deviceName ? d.deviceName : ""
Layout.fillWidth: true Layout.fillWidth: true
Label {
text: "Name the thing:"
Layout.fillWidth: true
}
TextField {
id: nameTextField
text: d.deviceName ? d.deviceName : ""
Layout.fillWidth: true
}
} }
Item { ThinDivider {}
Flickable {
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
Column {
width: parent.width
Repeater {
id: paramRepeater
model: d.deviceClass.paramTypes
delegate: ParamDelegate {
width: parent.width
paramType: d.deviceClass.paramTypes.get(index)
}
}
}
} }
Button { Button {
Layout.fillWidth: true Layout.fillWidth: true
text: "OK" text: "OK"
@ -305,12 +326,25 @@ Page {
print("setupMethod", d.deviceClass.setupMethod) print("setupMethod", d.deviceClass.setupMethod)
switch (d.deviceClass.setupMethod) { switch (d.deviceClass.setupMethod) {
case 0: case 0:
d.addRequestId = Engine.jsonRpcClient.addDiscoveredDevice(d.deviceClass.id, d.deviceDescriptorId, nameTextField.text); if (d.deviceDescriptorId) {
Engine.deviceManager.addDiscoveredDevice(d.deviceClass.id, d.deviceDescriptorId, nameTextField.text);
} else {
var params = []
for (var i = 0; i < paramRepeater.count; i++) {
var param = {}
param.paramTypeId = paramRepeater.itemAt(i).paramType.id
param.value = paramRepeater.itemAt(i).value
params.push(param)
}
Engine.deviceManager.addDevice(d.deviceClass.id, nameTextField.text, params);
}
break; break;
case 1: case 1:
case 2: case 2:
case 3: case 3:
d.pairRequestId = Engine.jsonRpcClient.pairDevice(d.deviceClass.id, d.deviceDescriptorId); Engine.deviceManager.pairDevice(d.deviceClass.id, d.deviceDescriptorId);
break; break;
} }
@ -339,7 +373,7 @@ Page {
Layout.fillWidth: true Layout.fillWidth: true
text: "OK" text: "OK"
onClicked: { onClicked: {
d.addRequestId = Engine.jsonRpcClient.confirmPairing(d.pairingTransactionId, d.deviceDescriptorId); Engine.deviceManager.confirmPairing(d.pairingTransactionId, d.deviceDescriptorId);
} }
} }
} }

View File

@ -3,32 +3,44 @@ import QtQuick.Controls 2.1
import QtQuick.Controls.Material 2.1 import QtQuick.Controls.Material 2.1
import QtQuick.Layouts 1.1 import QtQuick.Layouts 1.1
import Guh 1.0 import Guh 1.0
import "components"
Page { Page {
id: root id: root
header: GuhHeader {
text: "Settings"
backButtonVisible: true
onBackPressed: pageStack.pop()
}
ColumnLayout { ColumnLayout {
anchors { left: parent.left; right: parent.right; top: parent.top; margins: app.margins } anchors { left: parent.left; right: parent.right; top: parent.top; margins: app.margins }
Label { Label {
Layout.fillWidth: true Layout.fillWidth: true
text: "Connected to:" text: "Application".toUpperCase()
color: Material.accent color: app.guhAccent
} }
RowLayout { RowLayout {
Layout.fillWidth: true Layout.fillWidth: true
Label { Label {
Layout.fillWidth: true Layout.fillWidth: true
text: Engine.connection.url text: "Full screen"
} }
Button { CheckBox {
text: "Disconnect" checked: settings.fullscreen
onClicked: { onClicked: settings.fullscreen = checked
settings.lastConnectedHost = ""; }
Engine.connection.disconnect(); }
} RowLayout {
Layout.fillWidth: true
Label {
Layout.fillWidth: true
text: "Return to home on idle"
}
CheckBox {
checked: settings.returnToHome
onClicked: settings.returnToHome = checked
} }
} }
} }

View File

@ -0,0 +1,48 @@
import QtQuick 2.8
import QtQuick.Controls 2.1
import QtQuick.Controls.Material 2.1
import QtQuick.Layouts 1.3
import "components"
import Guh 1.0
Page {
id: root
header: GuhHeader {
text: "System information"
backButtonVisible: true
onBackPressed: pageStack.pop()
}
ColumnLayout {
anchors.fill: parent
anchors.margins: app.margins
Label {
Layout.fillWidth: true
text: "Connected to:"
color: Material.accent
}
RowLayout {
Layout.fillWidth: true
Label {
Layout.fillWidth: true
text: Engine.connection.url
}
Button {
text: "Disconnect"
onClicked: {
settings.lastConnectedHost = "";
Engine.connection.disconnect();
}
}
}
Item {
Layout.fillWidth: true
Layout.fillHeight: true
}
}
}

View File

@ -0,0 +1,74 @@
import QtQuick 2.3
Item {
id: root
property int ct: minCt
property int minCt: 153
property int maxCt: 500
property Component touchDelegate
property bool active: true
property bool pressed: mouseArea.pressed
Rectangle {
height: parent.width
width: parent.height
anchors.centerIn: parent
rotation: -90
gradient: Gradient {
GradientStop { position: 0.0; color: "#efffff" }
GradientStop { position: 0.5; color: "#ffffea" }
GradientStop { position: 1.0; color: "#ffd649" }
}
}
Loader {
id: touchDelegateLoader
// 0 : width = minCt : maxCt
// x = (width * (ct - minCt) / (maxCt-minCt))
property int position: (root.width * (root.ct - root.minCt) / (root.maxCt - root.minCt));
x: item ? Math.max(0, Math.min(position - width * .5, parent.width - item.width)) : 0
sourceComponent: root.touchDelegate
visible: !mouseArea.pressed && root.active
Behavior on x {
enabled: !mouseArea.pressed
NumberAnimation {}
}
}
MouseArea {
id: mouseArea
anchors.fill: parent
preventStealing: true
drag.minimumX: 0
drag.maximumX: width - dndItem.width
drag.minimumY: 0
drag.maximumY: height - dndItem.height
onPressed: {
dndItem.x = Math.min(width - dndItem.width, Math.max(0, mouseX - dndItem.width / 2))
dndItem.y = 0;
mouseArea.drag.target = dndItem;
}
onPositionChanged: {
root.ct = Math.min(root.maxCt, Math.max(root.minCt, (mouseX * (root.maxCt - root.minCt) / width) + root.minCt))
print("ct is now", root.ct)
}
onReleased: {
root.ct = Math.min(root.maxCt, Math.max(root.minCt, (mouseX * (root.maxCt - root.minCt) / width) + root.minCt))
mouseArea.drag.target = undefined;
}
}
Loader {
id: dndItem
sourceComponent: root.touchDelegate
visible: mouseArea.pressed && root.active
}
}

View File

@ -0,0 +1,318 @@
import QtQuick 2.4
import QtQuick.Controls 2.1
import Guh 1.0
Item {
id: root
property var model: null
property color color: "grey"
Connections {
target: model
onCountChanged: canvas.requestPaint()
}
onModelChanged: canvas.requestPaint()
Label {
anchors.centerIn: parent
width: parent.width - 2 * app.margins
wrapMode: Text.WordWrap
text: "Sorry, there isn't enough data to display a graph here yet!"
visible: !root.model.busy && root.model.count <= 2
horizontalAlignment: Text.AlignHCenter
font.pixelSize: app.largeFont
}
BusyIndicator {
anchors.centerIn: parent
visible: model.busy
}
Canvas {
id: canvas
visible: root.model.count > 2
anchors.fill: parent
property int minTemp: {
var lower = Math.floor(root.model.minimumValue - 2);
var upper = Math.ceil(root.model.maximumValue + 2);
print("upper", upper, "lower", lower)
if (!lower || !upper) {
return 0
}
while ((upper - lower) % 10 != 0) {
lower -= 1;
if ((upper - lower) % 10 != 0) {
upper += 1;
}
}
return lower;
}
property int maxTemp: {
var lower = Math.floor(root.model.minimumValue - 2);
var upper = Math.ceil(root.model.maximumValue + 2);
if (!lower || !upper) {
return 0
}
while ((upper - lower) % 10 != 0) {
lower -= 1;
if ((upper - lower) % 10 != 0) {
upper += 1;
}
}
return upper;
}
property int topMargins: app.margins
property int bottomMargins: app.margins * 4
property int leftMargins: app.margins * 3
property int rightMargins: app.margins
property color gridColor: "#d0d0d0"
property int contentWidth: canvas.width - leftMargins - rightMargins
property int contentHeight: canvas.height - topMargins - bottomMargins
property int totalSections: Math.round((maxTemp - minTemp) / 10) * 10
property int sections: {
var tmp = totalSections;
while (tmp >= 10) {
tmp /= 2;
}
return tmp;
}
// Pixel per section
property real pps: contentHeight / sections;
onPaint: {
print("painting canvas", totalSections, sections)
var minTemp
var ctx = canvas.getContext('2d');
ctx.save();
ctx.reset()
ctx.translate(leftMargins, topMargins)
ctx.globalAlpha = 1//canvas.alpha;
//ctx.fillStyle = canvas.fillStyle;
ctx.font = "" + app.smallFont + "px Ubuntu";
paintGrid(ctx)
enumerate(ctx)
// paintWifis(ctx, canvas.selectedIndex)
paintGraph(ctx)
ctx.restore();
}
function paintGrid(ctx) {
ctx.strokeStyle = canvas.gridColor;
ctx.fillStyle = "black"
ctx.lineWidth = 1;
ctx.beginPath();
ctx.rect(0, 0, contentWidth, contentHeight)
ctx.stroke();
ctx.closePath();
// Horizontal lines
var tempInterval = (maxTemp - minTemp) / sections;
for (var i = 0; i <= sections; i++) {
ctx.beginPath();
ctx.lineWidth = 1;
ctx.strokeStyle = canvas.gridColor
ctx.moveTo(0, i * pps);
ctx.lineTo(contentWidth, i * pps)
ctx.stroke();
ctx.closePath();
ctx.beginPath();
var label = maxTemp - (tempInterval * i).toFixed(0)
var textSize = ctx.measureText(label)
ctx.strokeStyle = "black"
ctx.fillStyle = "black"
ctx.lineWidth = 0;
ctx.text(label, -textSize.width - app.margins, i * pps + 5)
// ctx.stroke();
ctx.fill()
ctx.closePath()
}
ctx.beginPath();
ctx.strokeStyle = "black"
ctx.fillStyle = "black"
ctx.lineWidth = 0;
var label = "°C"
var textSize = ctx.measureText(label)
ctx.text(label, -textSize.width - 1, -1 * pps + 5)
// ctx.stroke();
ctx.fill()
ctx.closePath()
}
function enumerate(ctx) {
// enumate x axis
ctx.beginPath();
ctx.globalAlpha = 1;
ctx.strokeStyle = "black"
ctx.fillStyle = "black"
ctx.lineWidth = 0;
// enumerate Y axis
var lastTextX = -1;
for (var i = 0; i < model.count - 1; i++) {
var x = contentWidth / (model.count - 1) * i;
if (x < lastTextX) continue;
var label = model.get(i).dayString
var textSize = ctx.measureText(label)
ctx.text(label.slice(0,2).concat("."), x, contentHeight + app.smallFont + app.margins / 2)
switch (model.average) {
case ValueLogsProxyModel.AverageQuarterHour:
case ValueLogsProxyModel.AverageHourly:
case ValueLogsProxyModel.AverageDayTime:
label = model.get(i).timeString
break;
default:
label = model.get(i).dateString
}
textSize = ctx.measureText(label)
ctx.text(label, x, contentHeight + app.smallFont * 2 + app.margins)
lastTextX = x + textSize.width;
}
// ctx.stroke();
ctx.fill()
ctx.closePath();
}
function paintGraph(ctx) {
if (model.count <= 1) {
return;
}
var tempInterval = (maxTemp - minTemp) / sections;
ctx.beginPath();
ctx.globalAlpha = 1;
ctx.lineWidth = 2;
var graphStroke = root.color;
var grapFill = Qt.rgba(root.color.r, root.color.g, root.color.b, .4);
ctx.strokeStyle = graphStroke;
ctx.fillStyle = grapFill;
var points = new Array();
for (var i = 0; i < model.count; i++) {
var value = model.get(i).value;
var point = new Object();
// print("painting value", value)
point.x = (i == 0) ? 0 : (contentWidth / (model.count - 2) * i);
point.y = contentHeight - (value - minTemp) / tempInterval * pps;
points.push(point);
}
paintBezier(ctx, points);
ctx.stroke();
ctx.closePath();
ctx.beginPath();
paintBezier(ctx, points)
ctx.lineTo(contentWidth, contentHeight);
ctx.lineTo(0, contentHeight);
ctx.fill();
ctx.closePath();
ctx.beginPath();
ctx.globalAlpha = 1;
ctx.lineWidth = 2;
ctx.strokeStyle = "green"
ctx.fillStyle = "green"
points = new Array();
for (var i = 0; i < model.count; i++) {
var dayMaxTemp = model.get(i).maxTemp;
var point = new Object();
point.x = (i == 0) ? 0 : (contentWidth / (model.count - 1) * i);
point.y = - (dayMaxTemp - maxTemp) / tempInterval * pps;
points.push(point);
}
paintBezier(ctx, points);
ctx.stroke();
ctx.closePath();
}
function paintBezier(ctx, points) {
if (points.length == 2) {
ctx.moveTo(points[0].x, points[0].y)
ctx.lineTo(points[1].x, points[1].y)
} else {
var n = points.length - 1;
points[0].rhsx = points[0].x + 2 * points[1].x;
points[0].rhsy = points[0].y + 2 * points[1].y;
for (var i = 1; i < n - 1; i++) {
points[i].rhsx = 4 * points[i].x + 2 * points[i+1].x;
points[i].rhsy = 4 * points[i].y + 2 * points[i+1].y;
}
points[n - 1].rhsx = (8 * points[n - 1].x + points[n].x) / 2;
points[n - 1].rhsy = (8 * points[n - 1].y + points[n].y) / 2;
var b = 2.0;
n = points.length - 1;
points[0].firstcontrolx = points[0].rhsx / b;
points[0].firstcontroly = points[0].rhsy / b;
for (var i = 1; i < n; i++) {
points[i].tmp = 1 / b;
b = (i < n - 1 ? 4.0 : 3.5) - points[i].tmp;
points[i].firstcontrolx = (points[i].rhsx - points[i - 1].firstcontrolx) / b;
points[i].firstcontroly = (points[i].rhsy - points[i - 1].firstcontroly) / b;
}
for (var i = 1; i < n; i++) {
points[n - i - 1].firstcontrolx -= points[n - i].tmp * points[n - i].firstcontrolx;
points[n - i - 1].firstcontroly -= points[n - i].tmp * points[n - i].firstcontroly;
}
n = points.length - 1;
for (var i = 0; i < n; i++) {
points[i].secondcontrolx = 2 * points[i + 1].x - points[i + 1].firstcontrolx;
points[i].secondcontroly = 2 * points[i + 1].y - points[i + 1].firstcontroly;
}
points[n - 1].secondcontrolx = (points[n].x + points[n - 1].firstcontrolx) / 2;
points[n - 1].secondcontroly = (points[n].x + points[n - 1].firstcontroly) / 2;
ctx.moveTo(points[0].x, points[0].y);
for (var i = 0; i < n - 1; i++) {
// ctx.lineTo(points[i].firstcontrolx, points[i].firstcontroly)
// ctx.lineTo(points[i].secondcontrolx, points[i].secondcontroly)
// ctx.lineTo(points[i+1].x, points[i+1].y)
ctx.bezierCurveTo(points[i].firstcontrolx, points[i].firstcontroly,
points[i].secondcontrolx, points[i].secondcontroly,
points[i + 1].x, points[i + 1].y)
}
}
}
function hourToX(hour) {
var entries = root.day.count;
return canvas.contentWidth / entries * hour
}
}
}

View File

@ -1,7 +1,7 @@
import QtQuick 2.5 import QtQuick 2.5
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import QtQuick.Layouts 1.1 import QtQuick.Layouts 1.1
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material 2.1
ToolBar { ToolBar {
id: root id: root
@ -9,9 +9,11 @@ ToolBar {
property string text property string text
property alias backButtonVisible: backButton.visible property alias backButtonVisible: backButton.visible
property alias menuButtonVisible: menuButton.visible
default property alias data: layout.data default property alias data: layout.data
signal backPressed(); signal backPressed();
signal menuPressed();
Rectangle { Rectangle {
anchors.fill: parent anchors.fill: parent
@ -22,6 +24,13 @@ ToolBar {
id: layout id: layout
anchors { fill: parent; leftMargin: app.margins; rightMargin: app.margins } anchors { fill: parent; leftMargin: app.margins; rightMargin: app.margins }
HeaderButton {
id: menuButton
imageSource: "../images/navigation-menu.svg"
visible: false
onClicked: root.menuPressed();
}
HeaderButton { HeaderButton {
id: backButton id: backButton
imageSource: "../images/back.svg" imageSource: "../images/back.svg"

View File

@ -0,0 +1,22 @@
import QtQuick 2.8
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3
MenuItem {
id: root
property alias iconSource: icon.name
contentItem: RowLayout {
spacing: app.margins
ColorIcon {
id: icon
height: parent.height
width: height
}
Label {
text: root.text
Layout.fillWidth: true
font.pixelSize: app.mediumFont
}
}
}

View File

@ -0,0 +1,8 @@
import QtQuick 2.0
import QtQuick.Layouts 1.2
Rectangle {
height: 1
Layout.fillWidth: true
color: app.guhAccent
}

View File

@ -0,0 +1,40 @@
import QtQuick 2.8
import QtQuick.Controls 2.1
Item {
id: root
implicitHeight: slider.implicitHeight
property real value: 0
property alias from: slider.from
property alias to: slider.to
signal moved(real value);
Slider {
id: slider
anchors.left: parent.left; anchors.right: parent.right
from: 0
to: 100
property var lastSentTime: new Date()
onValueChanged: {
var currentTime = new Date();
if (pressed && currentTime - lastSentTime > 200) {
root.moved(slider.value)
lastSentTime = currentTime
}
}
onPressedChanged: {
if (!pressed) {
root.moved(slider.value)
}
}
}
Binding {
target: slider
property: "value"
value: root.value
when: !slider.pressed
}
}

View File

@ -4,5 +4,6 @@ Item {
property var device: null property var device: null
property var deviceClass: null property var deviceClass: null
property string interfaceName
} }

View File

@ -2,6 +2,7 @@ import QtQuick 2.5
import QtQuick.Layouts 1.1 import QtQuick.Layouts 1.1
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import Guh 1.0 import Guh 1.0
import "../components"
CustomViewBase { CustomViewBase {
id: root id: root
@ -10,10 +11,20 @@ CustomViewBase {
RowLayout { RowLayout {
id: row id: row
anchors { left: parent.left; top: parent.top; right: parent.right; margins: app.margins } anchors { left: parent.left; top: parent.top; right: parent.right; margins: app.margins }
Button {
AbstractButton {
width: app.iconSize * 2
height: width
property var muteState: root.device.states.getState(deviceClass.stateTypes.findByName("mute").id) property var muteState: root.device.states.getState(deviceClass.stateTypes.findByName("mute").id)
property bool isMuted: muteState.value property bool isMuted: muteState.value === true
text: isMuted ? "unmute" : "mute"
ColorIcon {
anchors.fill: parent
name: "../images/audio-speakers-muted-symbolic.svg"
color: parent.isMuted ? app.guhAccent : keyColor
}
onClicked: { onClicked: {
var paramList = [] var paramList = []
var muteParam = {} var muteParam = {}

View File

@ -2,6 +2,7 @@ import QtQuick 2.5
import QtQuick.Layouts 1.1 import QtQuick.Layouts 1.1
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import Guh 1.0 import Guh 1.0
import "../components"
CustomViewBase { CustomViewBase {
id: root id: root
@ -21,51 +22,100 @@ CustomViewBase {
RowLayout { RowLayout {
Layout.fillWidth: true Layout.fillWidth: true
Button {
text: "|<" Item { Layout.fillWidth: true; height: 1 }
property int iconSize: Math.min(root.width / 6, app.iconSize * 2)
AbstractButton {
Layout.fillWidth: true
height: Math.min(app.iconSize * 2)
ColorIcon {
height: parent.height
width: height
name: "../images/media-skip-backward.svg"
}
onClicked: { onClicked: {
executeAction("skipBack") executeAction("skipBack")
} }
} }
Button { AbstractButton {
text: "<<" Layout.fillWidth: true
height: Math.min(app.iconSize * 2)
ColorIcon {
height: parent.height
width: height
name: "../images/media-seek-backward.svg"
}
onClicked: { onClicked: {
executeAction("rewind") executeAction("rewind")
} }
} }
Button { AbstractButton {
text: "X"+ playbackState.value Layout.fillWidth: true
height: Math.min(app.iconSize * 2)
ColorIcon {
height: parent.height
width: height
name: "../images/media-playback-stop.svg"
}
onClicked: { onClicked: {
executeAction("stop") executeAction("stop")
} }
} }
Button { AbstractButton {
text: ">" Layout.fillWidth: true
visible: playbackState.value == "PAUSED" height: Math.min(app.iconSize * 2)
ColorIcon {
height: parent.height
width: height
name: "../images/media-playback-start.svg"
}
visible: playbackState.value == "PAUSED" || playbackState.value == "STOPPED"
onClicked: { onClicked: {
executeAction("play") executeAction("play")
} }
} }
Button { AbstractButton {
text: "||" Layout.fillWidth: true
height: Math.min(app.iconSize * 2)
ColorIcon {
height: parent.height
width: height
name: "../images/media-playback-pause.svg"
}
visible: playbackState.value == "PLAYING" visible: playbackState.value == "PLAYING"
onClicked: { onClicked: {
executeAction("pause") executeAction("pause")
} }
} }
Button { AbstractButton {
text: ">>" Layout.fillWidth: true
height: Math.min(app.iconSize * 2)
ColorIcon {
height: parent.height
width: height
name: "../images/media-seek-forward.svg"
}
onClicked: { onClicked: {
executeAction("fastForward") executeAction("fastForward")
} }
} }
Button { AbstractButton {
text: ">|" Layout.fillWidth: true
height: Math.min(app.iconSize * 2)
ColorIcon {
height: parent.height
width: height
name: "../images/media-skip-forward.svg"
}
onClicked: { onClicked: {
executeAction("skipNext") executeAction("skipNext")
} }
} }
Item { Layout.fillWidth: true; height: 1 }
} }
} }
} }

View File

@ -0,0 +1,37 @@
import QtQuick 2.5
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.1
import "../components"
import Guh 1.0
CustomViewBase {
id: root
height: grid.implicitHeight + app.margins * 2
ColumnLayout {
id: grid
anchors { left: parent.left; top: parent.top; right: parent.right }
Label {
Layout.fillWidth: true
text: "Send a notification now:"
}
TextArea {
id: textArea
Layout.fillWidth: true
}
Button {
Layout.fillWidth: true
text: "Send"
onClicked: {
var params = []
var param1 = {}
var paramTypeId = root.deviceClass.actionTypes.findByName("notify").paramTypes.getParamType("title").id
param1.paramTypeId = paramTypeId
param1.value = textArea.text
params.push(param1)
Engine.deviceManager.executeAction(root.device.id, root.deviceClass.actionTypes.findByName("notify").id, params)
}
}
}
}

View File

@ -1,13 +1,95 @@
import QtQuick 2.5 import QtQuick 2.5
import QtQuick.Controls 2.2 import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3 import QtQuick.Layouts 1.3
import "../components"
import Guh 1.0
CustomViewBase { CustomViewBase {
height: grid.implicitHeight + app.margins * 2 id: root
implicitHeight: grid.implicitHeight + app.margins * 2
property string interfaceName
readonly property var stateType: deviceClass.stateTypes.findByName(interfaceName.replace("sensor", ""))
readonly property var deviceState: device.states.getState(stateType.id)
ValueLogsProxyModel {
id: logsModel
deviceId: root.device.id
typeId: stateType.id
average: zoomTabBar.currentItem.avg
startTime: zoomTabBar.currentItem.startTime
Component.onCompleted: updateTimer.start();
onAverageChanged: updateTimer.start()
onStartTimeChanged: updateTimer.start();
}
Timer {
id: updateTimer
interval: 0
repeat: false
onTriggered: {
print("updating:", logsModel.startTime)
logsModel.update()
}
}
ColumnLayout { ColumnLayout {
Label { id: grid
text: "bla" anchors { left: parent.left; top: parent.top; right: parent.right }
RowLayout {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
spacing: app.margins
ColorIcon {
name: app.interfaceToIcon(root.interfaceName)
height: app.iconSize
width: height
color: app.interfaceToColor(root.interfaceName)
}
Label {
text: deviceState.value + " " + stateType.unitString
font.pixelSize: app.largeFont
}
TabBar {
id: zoomTabBar
Layout.fillWidth: true
TabButton {
text: "6 h"
property int avg: ValueLogsProxyModel.AverageQuarterHour
property date startTime: {
var date = new Date();
date.setHours(new Date().getHours() - 6)
return date;
}
}
TabButton {
text: "24 h"
property int avg: ValueLogsProxyModel.AverageHourly
property date startTime: {
var date = new Date();
date.setHours(new Date().getHours() - 24);
return date;
}
}
TabButton {
text: "7 d"
property int avg: ValueLogsProxyModel.AverageDayTime
property date startTime: {
var date = new Date();
date.setDate(new Date().getDate() - 7);
return date;
}
}
}
}
Graph {
Layout.fillWidth: true
Layout.preferredHeight: 200
model: logsModel
color: app.interfaceToColor(root.interfaceName)
} }
} }
} }

View File

@ -1,60 +1,108 @@
import QtQuick 2.5 import QtQuick 2.5
import QtQuick.Layouts 1.1 import QtQuick.Layouts 1.1
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import "../components"
CustomViewBase { CustomViewBase {
id: root id: root
height: grid.implicitHeight + app.margins * 2 height: grid.implicitHeight + app.margins * 2
readonly property var weatherIconStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("weatherIcon") : null readonly property var weatherConditionStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("weatherCondition") : null
readonly property var weatherIconState: weatherIconStateType && device.states ? device.states.getState(weatherIconStateType.id) : null readonly property var weatherConditionState: weatherConditionStateType && device.states ? device.states.getState(weatherConditionStateType.id) : null
readonly property var weatherDescriptionStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("weatherDescription") : null
readonly property var weatherDescriptionState: weatherDescriptionStateType && device.states ? device.states.getState(weatherDescriptionStateType.id) : null
readonly property var temperatureStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("temperature") : null readonly property var temperatureStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("temperature") : null
readonly property var temperatureState: temperatureStateType && device.states ? device.states.getState(temperatureStateType.id) : null readonly property var temperatureState: temperatureStateType && device.states ? device.states.getState(temperatureStateType.id) : null
readonly property var minTemperatureStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("temperature minimum") : null readonly property var humidityStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("humidity") : null
readonly property var minTemperatureState: minTemperatureStateType && device.states ? device.states.getState(minTemperatureStateType.id) : null readonly property var humidityState: humidityStateType && device.states ? device.states.getState(humidityStateType.id) : null
readonly property var maxTemperatureStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("temperature maximum") : null readonly property var windDirectionStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("windDirection") : null
readonly property var maxTemperatureState: maxTemperatureStateType && device.states ? device.states.getState(maxTemperatureStateType.id) : null readonly property var windDirectionState: windDirectionStateType && device.states ? device.states.getState(windDirectionStateType.id) : null
readonly property var windSpeedStateType: deviceClass.stateTypes ? deviceClass.stateTypes.findByName("windSpeed") : null
readonly property var windSpeedState: windSpeedStateType && device.states ? device.states.getState(windSpeedStateType.id) : null
ColumnLayout { ColumnLayout {
id: grid id: grid
anchors { left: parent.left; top: parent.top; right: parent.right; margins: app.margins } anchors { left: parent.left; top: parent.top; right: parent.right; margins: app.margins }
spacing: app.margins
RowLayout { RowLayout {
Layout.fillWidth: true Layout.fillWidth: true
Label { Label {
text: (temperatureState ? temperatureState.value : "N/A") + " °" text: (temperatureState ? Math.round(temperatureState.value * 10) / 10 : "N/A") + " °"
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredWidth: parent.width Layout.preferredWidth: (parent.width - mainImage.width) / 2
font.pixelSize: app.largeFont font.pixelSize: app.largeFont
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
} }
Image { Image {
id: mainImage
// h : w = ss.h : ss.w // h : w = ss.h : ss.w
Layout.preferredWidth: height * implicitWidth / implicitHeight Layout.preferredWidth: height * implicitWidth / implicitHeight
Layout.preferredHeight: app.largeFont * 4 Layout.preferredHeight: app.largeFont * 4
source: weatherIconState ? "../images/weathericons/weather-" + weatherIconState.value + "-symbolic.svg" : "" source: weatherConditionState ? "../images/weathericons/weather-" + weatherConditionState.value + ".svg" : ""
sourceSize.height: height sourceSize.height: height
} }
ColumnLayout { ColumnLayout {
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredWidth: parent.width Layout.preferredWidth: (parent.width - mainImage.width) / 2
Label { RowLayout {
Layout.fillWidth: true ColorIcon {
text: maxTemperatureState ? (maxTemperatureState.value + "°") : "" name: "../images/weathericons/humidity.svg"
horizontalAlignment: Text.AlignHCenter width: app.iconSize
height: width
}
Label {
text: (humidityState ? humidityState.value : "N/A") + " %"
}
} }
Label { RowLayout {
Layout.fillWidth: true ColorIcon {
text: minTemperatureState ? (minTemperatureState.value + "°") : "" name: "../images/weathericons/wind.svg"
horizontalAlignment: Text.AlignHCenter width: app.iconSize
height: width
}
Label {
text: windSpeedState && windDirectionState ? "%1 km/h %2".arg(windSpeedState.value).arg(angleToOrientation(windDirectionState.value)) : "N/A"
function angleToOrientation(windAngle) {
if (windAngle < 23) {
return qsTr("N");
} else if (windAngle < 68) {
return qsTr("NE");
} else if (windAngle < 113) {
return qsTr("E");
} else if (windAngle < 156) {
return qsTr("SE");
} else if (windAngle < 203) {
return qsTr("S");
} else if (windAngle < 248) {
return qsTr("SW");
} else if (windAngle < 293) {
return qsTr("W");
} else if (windAngle < 338) {
return qsTr("NW");
}
return qsTr("N");
}
}
} }
} }
} }
Label {
Layout.fillWidth: true
text: weatherDescriptionState.value
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
}
} }
} }

View File

@ -9,6 +9,12 @@ Page {
property alias filterTag: devicesProxy.filterTag property alias filterTag: devicesProxy.filterTag
property alias filterInterface: devicesProxy.filterInterface property alias filterInterface: devicesProxy.filterInterface
Component.onCompleted: {
if (devicesProxy.count == 1) {
enterPage(0, true)
}
}
header: GuhHeader { header: GuhHeader {
text: { text: {
if (subPage.filterTag != DeviceClass.BasicTagNone) { if (subPage.filterTag != DeviceClass.BasicTagNone) {
@ -22,6 +28,29 @@ Page {
onBackPressed: pageStack.pop() onBackPressed: pageStack.pop()
} }
function enterPage(index, replace) {
var device = devicesProxy.get(index);
var deviceClass = Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId);
print("clicked", deviceClass.interfaces)
var page;
/* if (deviceClass.interfaces.indexOf("media") >= 0) {
page = "MediaDevicePage.qml";
} else */if (deviceClass.interfaces.indexOf("button") >= 0) {
page = "ButtonDevicePage.qml";
} else if (deviceClass.interfaces.indexOf("weather") >= 0) {
page = "WeatherDevicePage.qml";
// } else if (deviceClass.interfaces.indexOf("sensor") >= 0) {
// page = "SensorDevicePage.qml";
} else {
page = "GenericDevicePage.qml";
}
if (replace) {
pageStack.replace(Qt.resolvedUrl("../devicepages/" + page), {device: devicesProxy.get(index)})
} else {
pageStack.push(Qt.resolvedUrl("../devicepages/" + page), {device: devicesProxy.get(index)})
}
}
ListView { ListView {
anchors.fill: parent anchors.fill: parent
model: DevicesProxy { model: DevicesProxy {
@ -37,18 +66,7 @@ Page {
} }
onClicked: { onClicked: {
var device = devicesProxy.get(index); enterPage(index, false)
var deviceClass = Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId);
print("clicked", deviceClass.interfaces)
var page;
if (deviceClass.interfaces.indexOf("media") >= 0) {
page = "MediaDevicePage.qml";
} else if (deviceClass.interfaces.indexOf("button") >= 0) {
page = "ButtonDevicePage.qml";
} else {
page = "GenericDevicePage.qml";
}
pageStack.push(Qt.resolvedUrl("../devicepages/" + page), {device: devicesProxy.get(index)})
} }
} }
} }

View File

@ -41,6 +41,7 @@ Page {
ListView { ListView {
Layout.fillHeight: true Layout.fillHeight: true
Layout.fillWidth: true Layout.fillWidth: true
clip: true
model: DevicesProxy { model: DevicesProxy {
id: devicesProxy id: devicesProxy
devices: Engine.deviceManager.devices devices: Engine.deviceManager.devices
@ -98,12 +99,12 @@ Page {
} }
} }
onClicked: { onClicked: {
pageStack.push(Qt.resolvedUrl("../devicepages/GenericDevicePage.qml"), {device: devicesProxy.get(index)}) if (deviceClass.interfaces.indexOf("colorlight") >= 0) {
pageStack.push(Qt.resolvedUrl("../devicepages/ColorLightDevicePage.qml"), {device: devicesProxy.get(index)})
}
} }
} }
} }
} }
} }

View File

@ -4,11 +4,8 @@ import QtQuick.Layouts 1.1
import Guh 1.0 import Guh 1.0
import "../components" import "../components"
Page { DevicePageBase {
id: root id: root
property var device: null
readonly property var deviceClass: Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId)
header: GuhHeader { header: GuhHeader {
text: device.name text: device.name
@ -46,9 +43,18 @@ Page {
property var ruleActionType: ruleAction ? ruleActionDeviceClass.actionTypes.getActionType(ruleAction.actionTypeId) : null property var ruleActionType: ruleAction ? ruleActionDeviceClass.actionTypes.getActionType(ruleAction.actionTypeId) : null
property var ruleActionDevice: ruleAction ? Engine.deviceManager.devices.getDevice(ruleAction.deviceId) : null property var ruleActionDevice: ruleAction ? Engine.deviceManager.devices.getDevice(ruleAction.deviceId) : null
property var ruleActionDeviceClass: ruleActionDevice ? Engine.deviceManager.deviceClasses.getDeviceClass(ruleActionDevice.deviceClassId) : null property var ruleActionDeviceClass: ruleActionDevice ? Engine.deviceManager.deviceClasses.getDeviceClass(ruleActionDevice.deviceClassId) : null
property var ruleActionParams: ruleAction ? ruleAction.ruleActionParams : null property var ruleActionParams: ruleAction && ruleAction ? ruleAction.ruleActionParams : null
property var ruleActionParam: ruleActionParams.count == 1 ? ruleActionParams.get(0) : null property var ruleActionParam: ruleActionParams.count == 1 ? ruleActionParams.get(0) : null
text: ruleActions.count > 1 ? "Multiple actions" : qsTr("%1: Set %2 to %3").arg(ruleActionDevice.name).arg(ruleActionType.name).arg(ruleActionParam.value) text: {
if (ruleActions && ruleActions.count > 1) {
return "Multiple actions";
} else if (ruleActionParam) {
return qsTr("%1: Set %2 to %3").arg(ruleActionDevice.name).arg(ruleActionType.name).arg(ruleActionParam.value)
} else {
return qsTr("%1: Call %2").arg(ruleActionDevice.name).arg(ruleActionType.name)
}
}
swipe.right: MouseArea { swipe.right: MouseArea {
anchors.right: parent.right anchors.right: parent.right
height: parent.height height: parent.height
@ -92,13 +98,7 @@ Page {
event["eventTypeId"] = eventDeviceClass.eventTypes.findByName("pressed").id; event["eventTypeId"] = eventDeviceClass.eventTypes.findByName("pressed").id;
events.push(event); events.push(event);
rule["eventDescriptors"] = events; rule["eventDescriptors"] = events;
var actions = []; rule["actions"] = page.actions;
var action = {};
action["actionTypeId"] = page.actionType.id;
action["deviceId"] = page.device.id;
action["ruleActionParams"] = page.params;
actions.push(action);
rule["actions"] = actions;
Engine.ruleManager.addRule(rule); Engine.ruleManager.addRule(rule);
pageStack.pop(root) pageStack.pop(root)
}) })

View File

@ -0,0 +1,144 @@
import QtQuick 2.5
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.1
import Guh 1.0
import "../components"
import "../actiondelegates"
Page {
id: root
property var device: null
readonly property var deviceClass: Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId)
header: GuhHeader {
text: device.name
onBackPressed: pageStack.pop()
HeaderButton {
imageSource: "../images/info.svg"
onClicked: pageStack.push(Qt.resolvedUrl("GenericDeviceStateDetailsPage.qml"), {device: root.device})
}
}
ColumnLayout {
anchors.fill: parent
RowLayout {
id: powerRow
Layout.fillWidth: true
Layout.margins: app.margins
spacing: app.margins
property var powerStateType: root.deviceClass.stateTypes.findByName("power")
property var powerState: root.device.states.getState(powerStateType.id)
property var brightnessStateType: root.deviceClass.stateTypes.findByName("brightness")
property var brightnessState: root.device.states.getState(brightnessStateType.id)
AbstractButton {
width: app.iconSize * 2
height: width
ColorIcon {
anchors.fill: parent
name: "../images/torch-off.svg"
color: powerRow.powerState.value === true ? keyColor : app.guhAccent
}
onClicked: {
var actionType = root.deviceClass.actionTypes.findByName("power");
var params = []
var param = {}
param["paramTypeId"] = actionType.paramTypes.get(0).id;
param["value"] = false;
params.push(param)
Engine.deviceManager.executeAction(root.device.id, powerRow.powerStateType.id, params);
}
}
ThrottledSlider {
id: brightnessSlider
Layout.fillWidth: true
value: powerRow.brightnessState.value
onMoved: {
var actionType = root.deviceClass.actionTypes.findByName("brightness");
var params = []
var param = {}
param["paramTypeId"] = actionType.paramTypes.get(0).id;
param["value"] = value;
params.push(param)
Engine.deviceManager.executeAction(root.device.id, powerRow.brightnessStateType.id, params);
}
}
AbstractButton {
width: app.iconSize * 2
height: width
ColorIcon {
anchors.fill: parent
name: "../images/torch-on.svg"
color: powerRow.powerState.value === true ? app.guhAccent : keyColor
}
onClicked: {
var actionType = root.deviceClass.actionTypes.findByName("power");
var params = []
var param = {}
param["paramTypeId"] = actionType.paramTypes.get(0).id;
param["value"] = true;
params.push(param)
Engine.deviceManager.executeAction(root.device.id, powerRow.powerStateType.id, params);
}
}
}
ColorPickerCt {
id: pickerCt
Layout.fillWidth: true
Layout.margins: app.margins
property var actionType: root.deviceClass.actionTypes.findByName("colorTemperature")
property var ctState: root.device.states.getState(actionType.id)
ct: ctState.value
height: 80
touchDelegate: Rectangle {
height: pickerCt.height
width: 5
color: "black"
}
property var lastSentTime: new Date()
onCtChanged: {
var currentTime = new Date();
if (pressed && currentTime - lastSentTime > 200) {
setColorTemp(ct)
lastSentTime = currentTime
}
}
function setColorTemp(ct) {
var actionType = root.deviceClass.actionTypes.findByName("colorTemperature");
var params = []
var param = {}
param["paramTypeId"] = actionType.paramTypes.get(0).id;
param["value"] = ct;
params.push(param)
Engine.deviceManager.executeAction(root.device.id, actionType.id, params);
}
}
ActionDelegateColor {
Layout.fillWidth: true
Layout.fillHeight: true
actionType: root.deviceClass.actionTypes.findByName("color")
actionState: root.device.states.getState(actionType.id).value
onExecuteAction: {
Engine.deviceManager.executeAction(root.device.id, actionType.id, params)
}
}
}
}

View File

@ -0,0 +1,51 @@
import QtQuick 2.5
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.1
import Guh 1.0
import "../components"
Page {
id: root
property var device: null
readonly property var deviceClass: Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId)
default property alias data: contentItem.data
Pane {
id: infoPane
visible: batteryState !== null || (connectedState !== null && connectedState.value === false)
height: visible ? implicitHeight : 0
anchors { left: parent.left; top: parent.top; right: parent.right }
property var batteryState: deviceClass.interfaces.indexOf("battery") >= 0 ? device.states.getState(deviceClass.stateTypes.findByName("batteryLevel").id) : null
// property var connectedState: deviceClass.interfaces.indexOf("connectable") >= 0 ? device.states.getState(deviceClass.stateTypes.findByName("connected").id) : null
property var connectedState: deviceClass.interfaces.indexOf("connectable") >= 0 ? device.states.getState(deviceClass.stateTypes.findByName("connected").id) : null
RowLayout {
anchors { left: parent.left; top: parent.top; right: parent.right }
Item {
Layout.fillWidth: true
height: app.iconSize
}
ColorIcon {
height: app.iconSize
width: height
visible: infoPane.connectedState !== null && infoPane.connectedState.value === false
color: "red"
name: "../images/dialog-warning-symbolic.svg"
}
ColorIcon {
height: app.iconSize
width: height * 1.23
name: infoPane.batteryState !== null ? "../images/battery/battery-" + ("00" + (Math.floor(infoPane.batteryState.value / 10) * 10)).slice(-3) + ".svg" : ""
}
}
}
Item {
id: contentItem
anchors.fill: parent
anchors.topMargin: infoPane.height
}
}

View File

@ -4,11 +4,8 @@ import QtQuick.Layouts 1.1
import Guh 1.0 import Guh 1.0
import "../components" import "../components"
Page { DevicePageBase {
id: root id: root
property var device: null
readonly property var deviceClass: Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId)
header: GuhHeader { header: GuhHeader {
text: device.name text: device.name
@ -36,39 +33,71 @@ Page {
width: parent.width width: parent.width
// spacing: app.margins // spacing: app.margins
Loader { Repeater {
id: stateViewLoader id: interfaceViewsRepeater
Layout.fillWidth: true property bool unhandledInterface: false
source: {
var src = "";
print("**** devicetags", deviceClass.basicTags)
if (deviceClass.interfaces.indexOf("weather") >= 0) {
src = "WeatherView.qml";
}
if (deviceClass.interfaces.indexOf("mediacontroller") >= 0) {
src = "MediaControllerView.qml"
}
if (deviceClass.interfaces.indexOf("sensor") >= 0) {
src = "SensorView.qml"
}
return Qt.resolvedUrl("../customviews/" + src); model: deviceClass.interfaces
} delegate: Loader {
Binding { id: stateViewLoader
target: stateViewLoader.item ? stateViewLoader.item : null Layout.fillWidth: true
property: "device" source: {
value: device var src = "";
} var options = []
Binding { switch (modelData) {
target: stateViewLoader.item ? stateViewLoader.item : null case "weather":
property: "deviceClass" src = "WeatherView.qml";
value: deviceClass break;
case "mediacontroller":
src = "MediaControllerView.qml"
break;
case "extendedvolumecontroller":
src = "ExtendedVolumeController.qml"
break;
case "temperaturesensor":
case "humiditysensor":
src = "SensorView.qml"
options.interfaceName = modelData;
break;
case "notifications":
src = "NotificationsView.qml"
break;
case "battery":
case "connectable":
// Handled by our base class
break;
case "sensor":
case "media":
// Ignore interfaces without any states/actions
break;
default:
print("unhandled interface", modelData)
interfaceViewsRepeater.unhandledInterface = true
}
return Qt.resolvedUrl("../customviews/" + src);
}
Binding {
target: stateViewLoader.item ? stateViewLoader.item : null
property: "device"
value: device
}
Binding {
target: stateViewLoader.item ? stateViewLoader.item : null
property: "deviceClass"
value: deviceClass
}
Binding {
target: stateViewLoader.item ? stateViewLoader.item : null
property: "interfaceName"
value: modelData
}
} }
} }
Repeater { Repeater {
model: deviceClass.actionTypes model: interfaceViewsRepeater.count == 0 || interfaceViewsRepeater.unhandledInterface ? deviceClass.actionTypes : null
delegate: ItemDelegate { delegate: ItemDelegate {
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: delegateLoader.height Layout.preferredHeight: delegateLoader.height

View File

@ -27,7 +27,7 @@ Page {
Label { Label {
id: stateLabel id: stateLabel
Layout.preferredWidth: parent.width / 2 Layout.preferredWidth: parent.width / 2
text: name text: displayName
} }
Label { Label {

View File

@ -0,0 +1,44 @@
import QtQuick 2.5
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.1
import Guh 1.0
import "../components"
import "../customviews"
Page {
id: root
property var device: null
readonly property var deviceClass: Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId)
header: GuhHeader {
text: device.name
onBackPressed: pageStack.pop()
HeaderButton {
imageSource: "../images/info.svg"
onClicked: pageStack.push(Qt.resolvedUrl("GenericDeviceStateDetailsPage.qml"), {device: root.device})
}
}
ListView {
anchors { fill: parent }
spacing: app.margins
model: ListModel {
Component.onCompleted: {
var supportedInterfaces = ["temperaturesensor", "humiditysensor"]
for (var i = 0; i < supportedInterfaces.length; i++) {
if (root.deviceClass.interfaces.indexOf(supportedInterfaces[i]) >= 0) {
append({name: supportedInterfaces[i]});
}
}
}
}
delegate: SensorView {
width: parent.width
interfaceName: modelData
device: root.device
deviceClass: root.deviceClass
}
}
}

View File

@ -0,0 +1,30 @@
import QtQuick 2.5
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.1
import Guh 1.0
import "../components"
import "../customviews"
Page {
id: root
property var device: null
readonly property var deviceClass: Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId)
header: GuhHeader {
text: device.name
onBackPressed: pageStack.pop()
HeaderButton {
imageSource: "../images/info.svg"
onClicked: pageStack.push(Qt.resolvedUrl("GenericDeviceStateDetailsPage.qml"), {device: root.device})
}
}
WeatherView {
anchors.fill: parent
device: root.device
deviceClass: root.deviceClass
}
}

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 96 96.000001" width="96" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4782" style="color:#000000;fill:none" transform="rotate(90)" height="96" width="96" y="-28.143" x="78.505"/>
<path id="path4205" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:normal;isolation:auto;text-transform:none" d="m18.729 85.092-80 80 2.8281 2.8281 80-80-2.8281-2.8281z"/>
<path id="path4160" style="fill:#808080" d="m7.8772 95.935-3.5352 3.5352c6.9061 7.2961 10.777 16.961 10.777 27.035 0 10.435-4.1431 20.438-11.521 27.816l3.5352 3.5371c8.3148-8.3148 12.986-19.595 12.986-31.354 0-11.398-4.4005-22.337-12.242-30.57z"/>
<path id="path4158" style="fill:#808080" d="m-2.0056 105.82-3.5352 3.5352c4.2886 4.6701 6.6836 10.785 6.6836 17.152 0 6.7278-2.6704 13.176-7.4277 17.934l3.5352 3.5352c5.6936-5.6936 8.8926-13.417 8.8926-21.469 0-7.6913-2.9247-15.078-8.1484-20.688z"/>
<path id="path4180" style="fill:#808080" d="m48 8l-19.777 19.777h-15.778s-4.445 7.581-4.445 20.231 4.445 20.215 4.445 20.215h6.848l4.002-4.002h-8.219c-1.02-2.105-3.076-6.96-3.076-16.213 0-9.256 2.058-14.122 3.078-16.231h14.801l14.121-14.121v25.86l4-4v-31.516zm0 37.172l-4 4v29.17l-14.121-14.121h-0.928l-4.002 4.002h3.274l19.777 19.777v-42.828z" transform="translate(-67.857 78.505)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 96 96.000001" width="96" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4782" style="color:#000000;fill:none" transform="rotate(90)" height="96" width="96" y="-28.143" x="78.505"/>
<path id="path4180" style="fill:#808080" d="m48 8l-19.777 19.777h-15.778s-4.445 7.581-4.445 20.231 4.445 20.215 4.445 20.215h15.778l19.777 19.777v-80zm-4 9.656v60.686l-14.121-14.121h-14.803c-1.02-2.105-3.076-6.96-3.076-16.213 0-9.256 2.058-14.122 3.078-16.231h14.801l14.121-14.121z" transform="translate(-67.857 78.505)"/>
<path id="path4158" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-2.75 105.04-3.5352 3.5352c4.7573 4.7573 7.4277 11.208 7.4277 17.936 2e-7 6.7278-2.6704 13.176-7.4277 17.934l3.5352 3.52c5.6936-5.69 8.8926-13.41 8.8926-21.46 0-8.06-3.199-15.78-8.8926-21.47z"/>
<path id="circle4160" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m7.1328 95.152-3.5351 3.536c7.3784 7.3784 11.521 17.384 11.521 27.818 0 10.435-4.1431 20.438-11.521 27.816l3.5352 3.5371c8.3151-8.32 12.986-19.6 12.986-31.35 0-11.76-4.671-23.04-12.986-31.358z"/>
<rect id="rect4165" style="color:#000000;fill:none" height="96" width="96" y="78.505" x="-67.857"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#ed3146;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#ed3146" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#ed3146" height="40" width="8" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#ed3146" height="40" width="16" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#808080" height="40" width="24" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#808080" height="40" width="32" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#808080" height="40" width="40" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#808080" height="40" width="48" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#808080" height="40" width="56" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#808080" height="40" width="68" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#808080" height="40" width="72" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg4874" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="96" viewBox="0 0 118.00002 96.000009" width="118" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata4879">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(67.857 -78.505)">
<rect id="rect4217" style="color:#000000;fill:#808080" height="40" width="80" y="106.51" x="-51.857"/>
<rect id="rect5100" style="opacity:.21171;fill:none" height="96" width="118" y="78.505" x="-67.857"/>
<path id="path4213" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;font-variant-numeric:normal;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#808080;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;image-rendering:auto;white-space:normal;text-decoration-style:solid;font-variant-ligatures:none;isolation:auto;text-transform:none" d="m-47.881 94.506c-5.0328 0.05818-8.7136-0.12028-11.725 1.541-1.5055 0.83064-2.6968 2.2356-3.3555 3.9902-0.65866 1.7547-0.89648 3.8383-0.89648 6.4688v40c0 2.6304 0.23782 4.7121 0.89648 6.4668 0.65866 1.7546 1.85 3.1596 3.3555 3.9902 3.011 1.6613 6.6918 1.4848 11.725 1.543h0.01172 72.023 0.01172c5.0328-0.0582 8.7136 0.11832 11.725-1.543 1.5055-0.83064 2.6968-2.2356 3.3555-3.9902 0.65866-1.7547 0.89648-3.8364 0.89648-6.4668v-40c0-2.6304-0.23782-4.7141-0.89648-6.4688s-1.85-3.1596-3.3555-3.9902c-3.011-1.6613-6.6918-1.4828-11.725-1.541h-0.01172-72.023-0.01172zm0.02344 4h72c5.0383 0.05877 8.3519 0.23688 9.8164 1.0449 0.73364 0.40478 1.1527 0.85295 1.543 1.8926 0.39025 1.0396 0.64062 2.6929 0.64062 5.0625v40c0 2.3696-0.25037 4.0229-0.64062 5.0625s-0.80933 1.4878-1.543 1.8926c-1.4645 0.80804-4.7782 0.98616-9.8164 1.0449h-71.977-0.02344c-5.0383-0.0588-8.3519-0.23688-9.8164-1.0449-0.73364-0.40478-1.1508-0.85296-1.541-1.8926-0.39025-1.0396-0.64258-2.6929-0.64258-5.0625v-40c0-2.3696 0.25232-4.0229 0.64258-5.0625 0.39025-1.0396 0.80738-1.4878 1.541-1.8926 1.4645-0.80804 4.7782-0.98616 9.8164-1.0449z"/>
<rect id="rect4215" style="color:#000000;fill:#808080" height="30" width="10" y="111.51" x="36.143"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,176 @@
<?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="dialog-warning-symbolic.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="48.797155"
inkscape:cy="50.782907"
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: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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.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: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:15px;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;fill:#808080;fill-opacity:1;stroke:none"
d="m 364.0904,368.96573 c -0.0215,-0.0161 -0.0354,-0.0404 -0.0567,-0.0566 -0.0253,-0.0201 -0.057,-0.0305 -0.0821,-0.0508 z"
id="path4157" />
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;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;fill:#808080;fill-opacity:1;stroke:none"
d="m 364.07673,417.80167 -0.13873,0.10742 c 0.0251,-0.0203 0.0569,-0.0307 0.0821,-0.0508 0.0214,-0.0162 0.0353,-0.0405 0.0567,-0.0566 z"
id="path4344" />
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;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;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1.00019777"
d="m 405.98976,396.36222 -10.92425,0 c -3.21031,0 -6.18293,-0.0933 -8.92345,-0.2793 -2.70138,-0.18602 -5.42285,-0.43607 -8.16338,-0.74609 l 0,-3.99805 c 2.74053,-0.27903 5.462,-0.51126 8.16338,-0.69726 2.70138,-0.18602 5.67399,-0.2793 8.92345,-0.2793 l 10.92425,0 0,6 z m -34.01346,-3 c 0,1.10006 -0.38681,2.04956 -1.15866,2.84961 -0.73829,0.76673 -1.69183,1.15039 -2.86637,1.15039 -1.17456,0 -2.13199,-0.38366 -2.87027,-1.15039 -0.73828,-0.80005 -1.10786,-1.74955 -1.10786,-2.84961 0,-1.13341 0.36958,-2.08291 1.10786,-2.84961 0.73828,-0.76673 1.69571,-1.15039 2.87027,-1.15039 1.17454,0 2.12808,0.38366 2.86637,1.15039 0.77185,0.7667 1.15866,1.7162 1.15866,2.84961 z"
id="path4942"
inkscape:connector-curvature="0" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.30533743;marker:none;enable-background:accumulate"
d="M 47.662109 8.0078125 A 6.3640012 6.3701355 0 0 0 42.492188 11.1875 L 4.8535156 76.443359 A 6.3640012 6.3701355 0 0 0 10.361328 86 L 85.638672 86 A 6.3640012 6.3701355 0 0 0 91.146484 76.443359 L 53.507812 11.1875 A 6.3640012 6.3701355 0 0 0 47.662109 8.0078125 z M 47.875 12.001953 C 48.76737 11.956551 49.592076 12.404702 50.041016 13.183594 L 50.041016 13.185547 L 87.679688 78.441406 C 87.931837 78.878323 88.055859 79.318869 88.068359 79.734375 C 88.105769 80.980902 87.142369 82.001373 85.636719 82.001953 L 10.361328 82.001953 C 8.3537581 82.001173 7.3097694 80.189075 8.3183594 78.441406 L 45.957031 13.183594 C 46.359741 12.48476 47.07443 12.045736 47.875 12.001953 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4192" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.5 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="media-playback-pause.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6199992"
inkscape:cx="-6.6992958"
inkscape:cy="71.343403"
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: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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.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: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="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:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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;stroke-linecap:butt;stroke-linejoin:miter;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 417.99414,421.36133 -2,0 -54.02148,0 0,-24 56.02148,0 0,24 z m -4,-4 0,-16 -48.02148,0 0,16 48.02148,0 z"
id="rect4224"
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:normal;font-family:sans-serif;font-variant-ligatures:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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;stroke-linecap:butt;stroke-linejoin:miter;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 417.99414,389.36133 -2,0 -54.02148,0 0,-24 56.02148,0 0,24 z m -4,-4 0,-16 -48.02148,0 0,16 48.02148,0 z"
id="rect4245"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -0,0 +1,163 @@
<?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="media-playback-start.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.7646075"
inkscape:cx="67.233645"
inkscape:cy="47.23066"
inkscape:document-units="px"
inkscape:current-layer="g4778"
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: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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.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: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">
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
d="M 20.001953 12 L 20.001953 83.996094 C 20.001953 83.996094 58 67 84 48 C 58 29 20.001953 12 20.001953 12 z M 24.001953 18.28125 C 34.334003 23.178222 57.749241 34.833899 76.925781 48 C 57.749301 61.165751 34.333893 72.818891 24.001953 77.714844 L 24.001953 18.28125 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4174" />
<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>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -0,0 +1,163 @@
<?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="media-playback-stop.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.024999"
inkscape:cx="-18.014243"
inkscape:cy="53.017783"
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: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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.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: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="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:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 417.99414,421.36328 -2,0 -54.02148,0 0,-56.00195 56.02148,0 0,56.00195 z m -4,-4 0,-48.00195 -48.02148,0 0,48.00195 48.02148,0 z"
id="rect4224"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -0,0 +1,174 @@
<?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="media-seek-backward.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.7812487"
inkscape:cx="3.2695045"
inkscape:cy="58.687538"
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: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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.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: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="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
d="M 51.867188 24 C 51.867188 24 29.61855 33.297204 8.03125 47.923828 C 8.03125 47.928126 8.0273906 47.933502 8.0253906 47.9375 C 8.0233906 47.942398 8.018625 47.949127 8.015625 47.953125 C 8.009125 47.958023 8.0059064 47.964752 8.0039062 47.96875 C 8.0009062 47.973048 8 47.980377 8 47.984375 C 28.46579 62.158978 51.867188 71.996094 51.867188 71.996094 L 51.867188 53.136719 C 70.08364 64.486831 88 71.996094 88 71.996094 L 88 24 C 88 24 70.74969 31.191175 51.867188 42.867188 L 51.867188 24 z M 47.767578 30.480469 L 47.769531 65.507812 C 41.719049 62.794896 30.055236 57.192117 15.71875 47.986328 C 30.540668 38.581589 41.832654 33.139097 47.767578 30.480469 z M 83.761719 30.480469 L 83.763672 65.507812 C 77.714062 62.794896 66.051216 57.192117 51.716797 47.986328 C 66.536577 38.581589 77.827651 33.139097 83.761719 30.480469 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4195" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
d="m 388.43206,425.65086 c -0.12331,0.0552 -0.008,0.0131 -0.0996,0.0586 a 4.0244714,4.0244712 0 0 0 -0.21883,0.10547 c -0.002,10e-4 0.01,-0.007 0.008,-0.006 l 0.31067,-0.15821 z"
id="path2194-5"
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:normal;font-family:sans-serif;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;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:6.00118685;stroke-linecap:butt;stroke-linejoin:miter;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 365.97461,429.36074 0,4.00195 48.01758,0 1.0004,-4.00195 z"
id="path4199"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -0,0 +1,173 @@
<?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="media-seek-forward.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6199992"
inkscape:cx="42.838078"
inkscape:cy="40.25799"
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: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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.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: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="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
d="M 8 24 L 8 71.996094 C 8 71.996094 25.91636 64.486831 44.132812 53.136719 L 44.132812 71.996094 C 44.132812 71.996094 67.53421 62.158978 88 47.984375 C 88 47.980377 87.999094 47.973048 87.996094 47.96875 C 87.994094 47.964752 87.992828 47.958023 87.986328 47.953125 C 87.983328 47.949127 87.976609 47.942398 87.974609 47.9375 C 87.972609 47.933502 87.96875 47.928126 87.96875 47.923828 C 66.38145 33.297204 44.132812 24 44.132812 24 L 44.132812 42.867188 C 25.250348 31.191209 8 24 8 24 z M 12.238281 30.480469 C 18.172349 33.139097 29.463423 38.581589 44.283203 47.986328 C 29.948784 57.192117 18.285938 62.794896 12.236328 65.507812 L 12.238281 30.480469 z M 48.232422 30.480469 C 54.167346 33.139097 65.459332 38.581589 80.28125 47.986328 C 65.944764 57.192117 54.280951 62.794896 48.230469 65.507812 L 48.232422 30.480469 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4195" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
d="m 388.43206,361.07316 c -0.12331,-0.0552 -0.008,-0.0131 -0.0996,-0.0586 a 4.0244714,4.0244712 0 0 1 -0.21883,-0.10547 c -0.002,-0.001 0.01,0.007 0.008,0.006 l 0.31067,0.15821 z"
id="path2194-5" />
<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;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;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:6.00118685;stroke-linecap:butt;stroke-linejoin:miter;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 365.97461,353.36133 0,4.00195 48.01758,0 1.0004,-4.00195 z"
id="path4199"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -15,7 +15,7 @@
version="1.1" version="1.1"
inkscape:version="0.91+devel r" inkscape:version="0.91+devel r"
viewBox="0 0 96 96.000001" viewBox="0 0 96 96.000001"
sodipodi:docname="weather-sleet-symbolic.svg"> sodipodi:docname="media-skip-backward.svg">
<defs <defs
id="defs4876" /> id="defs4876" />
<sodipodi:namedview <sodipodi:namedview
@ -25,12 +25,12 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="4.4959994" inkscape:zoom="8.7812487"
inkscape:cx="-5.7050793" inkscape:cx="18.244596"
inkscape:cy="51.668128" inkscape:cy="54.434157"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="g4780" inkscape:current-layer="g4780"
showgrid="false" showgrid="true"
showborder="true" showborder="true"
fit-margin-top="0" fit-margin-top="0"
fit-margin-left="0" fit-margin-left="0"
@ -49,8 +49,7 @@
inkscape:snap-object-midpoints="true" inkscape:snap-object-midpoints="true"
inkscape:snap-center="true" inkscape:snap-center="true"
showguides="true" showguides="true"
inkscape:guide-bbox="true" inkscape:guide-bbox="true">
inkscape:snap-global="true">
<inkscape:grid <inkscape:grid
type="xygrid" type="xygrid"
id="grid5451" id="grid5451"
@ -79,6 +78,10 @@
orientation="0,1" orientation="0,1"
position="-5,8.0000001" position="-5,8.0000001"
id="guide4073" /> id="guide4073" />
<sodipodi:guide
orientation="1,0"
position="92,-8.0000001"
id="guide4075" />
<sodipodi:guide <sodipodi:guide
orientation="1,0" orientation="1,0"
position="88,-8.0000001" position="88,-8.0000001"
@ -91,9 +94,13 @@
orientation="1,0" orientation="1,0"
position="12,-8.0000001" position="12,-8.0000001"
id="guide4076" /> id="guide4076" />
<sodipodi:guide
orientation="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide <sodipodi:guide
orientation="1,0" orientation="1,0"
position="84,-8.0000001" position="84,-9.0000001"
id="guide4080" /> id="guide4080" />
<sodipodi:guide <sodipodi:guide
position="48,-8.0000001" position="48,-8.0000001"
@ -103,10 +110,6 @@
position="-8,48" position="-8,48"
orientation="0,1" orientation="0,1"
id="guide4172" /> id="guide4172" />
<sodipodi:guide
position="92,-8.0000001"
orientation="1,0"
id="guide4760" />
</sodipodi:namedview> </sodipodi:namedview>
<metadata <metadata
id="metadata4879"> id="metadata4879">
@ -150,31 +153,20 @@
transform="scale(-1,1)" /> transform="scale(-1,1)" />
<path <path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
d="m 345.96605,392.78972 c 0,3.9778 3.22457,7.2025 7.20239,7.2025 0.78983,0 1.54761,-0.1332 2.2587,-0.3681 0.0723,-0.024 0.14686,-0.043 0.21814,-0.069 0.60704,-0.1834 9.42924,-2.8722 17.34073,-6.7728 0,0 -5.6e-4,0 -0.002,0 -5.6e-4,0 -0.002,0 -0.004,0 -10e-4,0 -0.003,0 -0.004,0 -8.5e-4,0 -0.002,0 -0.002,0 -8.64071,-4.1676 -17.54714,-6.8168 -17.54714,-6.8168 l 0,0 c -0.71068,-0.2346 -1.46936,-0.3634 -2.25867,-0.3634 -3.97783,0 -7.2024,3.2246 -7.2024,7.2024 z" d="m 388.43206,425.65086 c -0.12331,0.0552 -0.008,0.0131 -0.0996,0.0586 a 4.0244714,4.0244712 0 0 0 -0.21883,0.10547 c -0.002,10e-4 0.01,-0.007 0.008,-0.006 l 0.31067,-0.15821 z"
id="path4253" id="path2194-5"
inkscape:connector-curvature="0" inkscape:connector-curvature="0" />
inkscape:transform-center-y="-47.999153" />
<path <path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#808080;fill-opacity:1;stroke:none;stroke-width:4;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 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;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;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:6.00118685;stroke-linecap:butt;stroke-linejoin:miter;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 51.046875,6.2285156 c -10.2287,0 -18.920473,6.3045104 -23.070313,15.3105464 l -0.277343,0.603516 -0.66211,0.04883 C 17.596749,22.879034 10.125,31.04039 10.125,40.974609 c 0,10.381453 8.126595,18.904297 18.171875,18.904297 l 22.75,0 21.205078,0 c 7.53212,0 13.621094,-6.396318 13.621094,-14.15039 0,-5.880084 -3.52978,-10.812395 -8.537109,-12.939454 l -0.652344,-0.277343 -0.03125,-0.707031 C 76.009894,17.628506 64.866505,6.2285156 51.046875,6.2285156 Z m -2.636719,3.9316404 2.714844,0 0.002,0 c 11.71084,4e-5 21.227703,9.518419 21.226563,21.228516 l 0,0.002 0,0.002 c -0.005,1.437861 -0.311319,2.843663 -0.605469,4.248047 5.55037,0.01369 10.070272,4.535148 10.070312,10.087891 l -0.002,0 c -4e-5,5.561129 -4.53189,10.09371 -10.09375,10.09375 l -42.773437,-0.02148 c -8.13181,2.8e-4 -14.748317,-6.616964 -14.748047,-14.748047 -2.7e-4,-8.131083 6.616237,-14.746373 14.748047,-14.746093 l 0.002,0 0.0059,0 c 0.53755,0.003 1.068253,0.09102 1.601563,0.152343 2.07759,-8.66921 9.098292,-15.254511 17.851562,-16.298828 z" d="m 365.97461,417.36222 0,4.00047 48.01758,0 1.0004,-4.00047 z"
id="path4233" id="path4199"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.99999976;marker:none;enable-background:accumulate"
d="M 76 16 C 76 16 42.749507 31.111222 19.998047 48 C 42.749507 64.888778 76 79.996094 76 79.996094 L 76 16 z M 71.998047 22.455078 L 71.998047 73.541016 C 65.108767 70.289552 45.443994 60.775545 26.996094 48 C 45.444144 35.224185 65.109057 25.707071 71.998047 22.455078 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)" transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
inkscape:connector-curvature="0" id="path4187" />
sodipodi:nodetypes="scccsscsscccsccsccccccccccccccc" />
<path
id="path4342"
d="m 372.37111,409.42577 -0.55109,2.7543 -3.40018,0 1.83786,3.1822 -2.38626,1.3771 -1.83786,-3.182 -1.83786,3.182 -2.38626,-1.3771 1.83786,-3.1822 -3.67572,0 0,-2.7543 3.67572,0 -1.83786,-3.182 2.38626,-1.3772 1.83786,3.182 1.83786,-3.182 2.38626,1.3772 -1.83786,3.182 3.95127,0 z"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:12.0023737;marker:none;enable-background:accumulate"
inkscape:connector-curvature="0"
inkscape:transform-center-x="16.396404"
inkscape:transform-center-y="-15.80467" />
<path
inkscape:connector-curvature="0"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:12.0023737;marker:none;enable-background:accumulate"
d="m 374.20641,373.36217 -0.63266,3.1621 -3.90345,0 2.10989,3.6529 -2.73946,1.581 -2.10989,-3.6529 -2.10989,3.6529 -2.73946,-1.581 2.10989,-3.6529 -4.21978,0 0,-3.1621 4.21978,0 -2.10989,-3.653 2.73946,-1.5811 2.10989,3.6531 2.10989,-3.6531 2.73946,1.5811 -2.10989,3.653 4.53611,0 z"
id="path4344"
inkscape:transform-center-x="-17.185"
inkscape:transform-center-y="-16.809946" />
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -0,0 +1,175 @@
<?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="media-skip-forward.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.7812487"
inkscape:cx="18.244596"
inkscape:cy="54.434157"
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: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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.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: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="rotate(180,287.99999,698.86221)"
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:3;marker:none;enable-background:accumulate"
d="m 388.43206,425.65086 c -0.12331,0.0552 -0.008,0.0131 -0.0996,0.0586 a 4.0244714,4.0244712 0 0 0 -0.21883,0.10547 c -0.002,10e-4 0.01,-0.007 0.008,-0.006 l 0.31067,-0.15821 z"
id="path2194-5"
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:normal;font-family:sans-serif;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;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:6.00118685;stroke-linecap:butt;stroke-linejoin:miter;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 365.97461,421.36269 0,-4.00048 48.01758,0 1.0004,4.00048 z"
id="path4199"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.99999976;marker:none;enable-background:accumulate"
d="M 76,16 C 76,16 42.749507,31.111222 19.998047,48 42.749507,64.888778 76,79.996094 76,79.996094 L 76,16 Z m -4.001953,6.455078 0,51.085938 C 65.108767,70.289552 45.443994,60.775545 26.996094,48 45.444144,35.224185 65.109057,25.707071 71.998047,22.455078 Z"
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4187"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -15,7 +15,7 @@
version="1.1" version="1.1"
inkscape:version="0.91+devel r" inkscape:version="0.91+devel r"
viewBox="0 0 96 96.000001" viewBox="0 0 96 96.000001"
sodipodi:docname="weather-severe-alert-symbolic.svg"> sodipodi:docname="navigation-menu.svg">
<defs <defs
id="defs4876" /> id="defs4876" />
<sodipodi:namedview <sodipodi:namedview
@ -25,9 +25,9 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="2.8774396" inkscape:zoom="5.6199993"
inkscape:cx="-111.85292" inkscape:cx="-2.8914655"
inkscape:cy="72.477584" inkscape:cy="39.270445"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="g4780" inkscape:current-layer="g4780"
showgrid="true" showgrid="true"
@ -75,6 +75,10 @@
orientation="0,1" orientation="0,1"
position="104,4" position="104,4"
id="guide4071" /> id="guide4071" />
<sodipodi:guide
orientation="0,1"
position="-5,8.0000001"
id="guide4073" />
<sodipodi:guide <sodipodi:guide
orientation="1,0" orientation="1,0"
position="88,-8.0000001" position="88,-8.0000001"
@ -112,7 +116,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title /> <dc:title></dc:title>
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@ -145,15 +149,23 @@
y="345.36221" y="345.36221"
transform="scale(-1,1)" /> transform="scale(-1,1)" />
<path <path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:12;marker:none;enable-background:accumulate" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.80000001;marker:none;enable-background:accumulate"
d="M 58.775391 12 C 51.267821 12.008996 44.217031 15.647545 39.806641 21.791016 C 38.172881 21.32443 36.482826 21.086486 34.785156 21.080078 C 24.704426 21.091474 16.442264 29.170022 16.089844 39.357422 C 9.1976435 40.193651 4.0088 46.099857 4 53.119141 C 3.99979 60.784838 10.143819 66.99996 17.724609 67 L 38.46875 67 L 40.761719 63 L 17.724609 63 C 12.331119 62.99997 7.99985 58.648413 8 53.119141 C 8.00827 48.069238 11.680056 43.919737 16.572266 43.326172 L 19.96875 42.916016 L 20.087891 39.496094 C 20.368061 31.397437 26.838194 25.095472 34.777344 25.080078 C 36.105594 25.085826 37.428491 25.271583 38.707031 25.636719 L 41.414062 26.410156 L 43.056641 24.123047 C 46.724441 19.013968 52.557334 16.009996 58.771484 16 C 69.379384 16.005708 78.001559 24.515796 78.230469 35.314453 L 78.285156 37.845703 L 80.59375 38.878906 C 85.08457 40.89126 87.998047 45.388102 87.998047 50.394531 C 87.998127 57.428279 82.459285 63.00016 75.578125 63 L 65.042969 63 L 67.335938 67 L 75.580078 67 C 84.648808 67.00021 92.0001 59.564824 92 50.394531 C 92 43.831238 88.166562 37.889587 82.232422 35.230469 C 81.958882 22.326463 71.539291 12.006867 58.775391 12 z " d="m 416.99416,429.36224 -4.0016,0 0,-72.00002 4.0016,0 z"
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)" id="path4182"
id="path4199" /> inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path <path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ed3146;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.74845123;marker:none;enable-background:accumulate" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.80000001;marker:none;enable-background:accumulate"
d="m 392.98074,382.62784 a 3.1863526,3.1620789 0 0 1 -1.59048,2.56836 l -32.63986,18.70118 a 3.1863526,3.1620789 0 0 1 -4.78119,-2.73633 l 0,-37.40235 a 3.1863526,3.1620789 0 0 1 4.78119,-2.73828 l 32.63986,18.70313 a 3.1863526,3.1620789 0 0 1 1.59048,2.90429 z m -11.92464,1.73438 0,-3.94531 -5.88124,0 c -1.74947,0 -3.3522,0.0613 -4.80658,0.18359 -1.45438,0.12237 -2.91886,0.27549 -4.39432,0.45899 l 0,2.63085 c 1.47546,0.20381 2.93994,0.36591 4.39432,0.48829 1.47546,0.12238 3.07819,0.18359 4.80658,0.18359 l 5.88124,0 z m -17.08293,-2 c 0,-0.71227 -0.24108,-1.30922 -0.72294,-1.79102 -0.46092,-0.4818 -1.05846,-0.72265 -1.79173,-0.72265 -0.73327,0 -1.32886,0.24085 -1.78977,0.72265 -0.46091,0.4818 -0.69168,1.07875 -0.69168,1.79102 0,0.69127 0.23077,1.28828 0.69168,1.79102 0.46091,0.48186 1.0565,0.72265 1.78977,0.72265 0.73327,0 1.33081,-0.24079 1.79173,-0.72265 0.48186,-0.50274 0.72294,-1.09975 0.72294,-1.79102 z" d="m 391.98426,429.36224 -4.00159,0 0,-72.00002 4.00159,0 z"
id="path17" id="path4180"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.80000001;marker:none;enable-background:accumulate"
d="m 366.97436,429.36224 -4.00158,0 0,-72.00002 4.00158,0 z"
id="rect4067"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,160 @@
<?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="network-wired-symbolic.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6199994"
inkscape:cx="-62.927059"
inkscape:cy="26.619198"
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 />
</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;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.00000048;stroke-linecap:butt;stroke-linejoin:miter;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 23.976562 8.0019531 C 18.943803 8.0601401 15.26124 7.8815461 12.25 9.5429688 C 10.74438 10.37368 9.5531413 11.778707 8.8945312 13.533203 C 8.2359313 15.287699 7.9980469 17.369641 7.9980469 20 L 7.9980469 76 C 7.9980469 78.630359 8.2359313 80.714254 8.8945312 82.46875 C 9.5531413 84.223246 10.74438 85.62632 12.25 86.457031 C 15.26124 88.118454 18.943803 87.941823 23.976562 88 L 23.988281 88 L 72.009766 88 L 72.021484 88 C 77.054244 87.941823 80.736807 88.118454 83.748047 86.457031 C 85.253667 85.62632 86.444916 84.223246 87.103516 82.46875 C 87.762116 80.714254 88 78.630359 88 76 L 88 20 C 88 17.369641 87.762116 15.287699 87.103516 13.533203 C 86.444916 11.778707 85.253667 10.37368 83.748047 9.5429688 C 80.736807 7.8815461 77.054244 8.0601301 72.021484 8.0019531 L 72.009766 8.0019531 L 23.988281 8.0019531 L 23.976562 8.0019531 z M 24.021484 12 L 71.998047 12 C 77.036307 12.058767 80.350163 12.237002 81.814453 13.044922 C 82.547973 13.449632 82.967112 13.897711 83.357422 14.9375 C 83.747742 15.977279 83.998047 17.630358 83.998047 20 L 83.998047 76 C 83.998047 78.369642 83.747742 80.022711 83.357422 81.0625 C 82.967112 82.102279 82.547973 82.550368 81.814453 82.955078 C 80.350163 83.762988 77.036307 83.941223 71.998047 84 L 71.974609 84 L 24.021484 84 L 24 84 C 18.96042 83.941263 15.648104 83.763108 14.183594 82.955078 C 13.450074 82.550368 13.030935 82.102279 12.640625 81.0625 C 12.250305 80.022711 12 78.369642 12 76 L 12 20 C 12 17.630358 12.250305 15.977279 12.640625 14.9375 C 13.030935 13.897711 13.450074 13.449632 14.183594 13.044922 C 15.650624 12.235492 18.967304 12.058477 24.021484 12 z M 36 25 L 36 30 L 24 30 L 24 70 L 72 70 L 72 30 L 60 30 L 60 25 L 36 25 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4297" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -0,0 +1,180 @@
<?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="notification.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="32.231586"
inkscape:cy="13.532829"
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: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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.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: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:15px;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;fill:#808080;fill-opacity:1;stroke:none"
d="m 47.974609,4 c -4.04797,6e-5 -7.330008,3.2821097 -7.330078,7.330078 0.002,1.522038 0.477738,3.004831 1.361328,4.244141 -2.00338,0.343264 -3.853165,0.860341 -5.541015,1.574219 -3.25143,1.375085 -5.91911,3.240368 -8,5.597656 -2.08089,2.422761 -3.639248,5.27285 -4.679688,8.546875 -0.9754,3.274004 -1.464844,6.809554 -1.464844,10.607422 l 0,19.503906 c 0,2.158166 -0.202214,4.132937 -0.609374,5.923828 -0.407171,1.791691 -1.120582,3.317748 -2.138672,4.580078 -0.97723,1.303035 -2.300993,2.301875 -3.970704,2.994141 -1.62718,0.714377 -3.669884,1.069434 -6.1093745,1.085937 l 0,0.01172 12.8281245,0 51.306641,0 12.880859,0 0,-0.01172 c -2.44977,-0.01649 -4.498662,-0.370484 -6.132812,-1.08789 -1.67664,-0.695195 -3.007021,-1.697277 -3.988281,-3.00586 -1.02249,-1.267718 -1.737685,-2.80615 -2.146485,-4.605469 -0.40901,-1.798538 -0.613281,-3.779923 -0.613281,-5.947265 l 0,-19.441406 c 0,-3.797868 -0.520097,-7.333418 -1.560547,-10.607422 -0.97539,-3.274025 -2.533747,-6.124114 -4.679687,-8.546875 -2.08107,-2.357288 -4.750513,-4.222571 -8.001953,-5.597656 -1.6479,-0.711129 -3.467043,-1.226959 -5.445313,-1.570313 0.88509,-1.239739 1.362914,-2.72478 1.365235,-4.248047 C 55.304618,7.2821097 52.022579,4.00006 47.974609,4 Z m -1.652343,15.121094 1.671875,0 c 1.82566,2.6e-4 3.64097,0.124247 5.25,0.378906 l 0.0059,0.002 0.0078,0 c 1.717331,0.298072 3.229779,0.736607 4.542969,1.302735 l 0.02734,0.01172 0.0039,0.002 c 2.77158,1.172147 4.908894,2.690579 6.558594,4.556641 l 0.01172,0.01367 c 1.74937,1.975028 3.02073,4.278438 3.84375,7.041016 0.013,0.04248 0.02338,0.07609 0.01758,0.05859 l 0.002,0.0059 0.002,0.0039 c 0.9056,2.849682 1.373047,5.968861 1.373047,9.402344 l 0,19.441406 c 0,2.419872 0.227891,4.694709 0.712891,6.828125 l 0,0.0039 0.002,0.0098 c 0.18337,0.803092 0.501017,1.608005 0.841797,2.460937 l 0.548828,1.371094 -0.002,0 -47.527344,0 0.544922,-1.369141 c 0.33741,-0.847164 0.653984,-1.64351 0.833984,-2.435546 0.48434,-2.130399 0.708985,-4.398964 0.708985,-6.806641 l 0,-19.503906 c 0,-3.438721 0.442202,-6.565089 1.289062,-9.423829 l 0.002,-0.0098 0.0059,-0.01172 c 0.88905,-2.778071 2.172785,-5.106167 3.865235,-7.083984 l 0.0059,-0.0059 0.0059,-0.0078 c 1.64572,-1.855796 3.777485,-3.370325 6.541015,-4.539063 1.36067,-0.575492 2.909656,-1.018428 4.660157,-1.318359 l 0.0078,0 0.0078,-0.002 c 1.140341,-0.17605 2.42688,-0.20894 3.6875,-0.261719 z"
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4161"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccssccccccccccccssccccccccccccccccccccsscccccccccsscccccccccccc" />
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;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;fill:#808080;fill-opacity:1;stroke:none"
d="m 364.0904,368.96573 c -0.0215,-0.0161 -0.0354,-0.0404 -0.0567,-0.0566 -0.0253,-0.0201 -0.057,-0.0305 -0.0821,-0.0508 z"
id="path4157" />
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;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;fill:#808080;fill-opacity:1;stroke:none"
d="m 364.07673,417.80167 -0.13873,0.10742 c 0.0251,-0.0203 0.0569,-0.0307 0.0821,-0.0508 0.0214,-0.0162 0.0353,-0.0405 0.0567,-0.0566 z"
id="path4344" />
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;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;fill:#808080;fill-opacity:1;stroke:none"
d="m 35.84375,80 c 0.07501,6.651682 5.488524,12.004476 12.140625,12.004476 6.652101,0 12.065611,-5.352794 12.140625,-12.004476 z"
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4608"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cscc" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -0,0 +1,227 @@
<?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.2 (5c3e80d, 2017-08-06)"
viewBox="0 0 96 96.000001"
sodipodi:docname="sensors.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="9.9068602"
inkscape:cx="71.167364"
inkscape:cy="44.687369"
inkscape:document-units="px"
inkscape:current-layer="g4780"
showgrid="false"
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="g4746"
transform="matrix(0.75,0,0,0.75,97.476086,118.34055)">
<path
sodipodi:nodetypes="ssscssscs"
inkscape:connector-curvature="0"
d="m -371.76101,-367.97522 c 0,11.13793 -9.67118,20.16701 -21.60118,20.16701 -11.93001,0 -21.60119,-9.02908 -21.60119,-20.16701 0,-7.7834 4.72291,-14.53695 11.63913,-17.89899 v -36.69394 c 0,-5.54 4.42204,-9.43231 9.96204,-9.43231 5.54,0 9.98905,4.46001 10,10 l 0.0715,36.17981 c 6.85656,3.37986 11.5297,10.10314 11.5297,17.84543 z"
style="fill:none;stroke:#808080;stroke-width:4.00079155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0,-1,-1,0,0,0)"
id="rect4596" />
<path
d="m -393.36221,-412.68994 c 1.662,0 3,1.33853 3,3.00119 v 39.41058 c 0,1.66266 -1.338,3.00119 -3,3.00119 -1.662,0 -3,-1.33853 -3,-3.00119 v -39.41058 c 0,-1.66266 1.338,-3.00119 3,-3.00119 z m 13.66839,44.26285 a 13.696771,12.809413 0 0 1 -13.69677,12.80941 13.696771,12.809413 0 0 1 -13.69678,-12.80941 13.696771,12.809413 0 0 1 13.69678,-12.80942 13.696771,12.809413 0 0 1 13.69677,12.80942 z"
style="fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:4.00079155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0,-1,-1,0,0,0)"
id="rect4609"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,-0.75,-0.75029678,0,484.8993,358.46935)"
id="layer1-2"
inkscape:label="Layer 1">
<g
style="display:inline"
id="g4845-6"
transform="matrix(0,-1,-1,0,373.50506,516.50504)">
<g
inkscape:label="Layer 1"
id="g4778-1"
transform="matrix(-0.9996045,0,0,1,575.94296,-611.00001)"
inkscape:export-filename="next01.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<g
style="display:inline"
id="g4780-8"
transform="matrix(-1,0,0,1,575.99999,611)">
<rect
transform="scale(-1,1)"
y="345.36221"
x="-438.00244"
height="96"
width="96.037987"
id="rect4782-7"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:4;marker:none;enable-background:accumulate" />
<path
id="path4185"
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
d="M 48.048828,3.9980469 C 35.339788,29.765082 26.577949,58.499495 25.980469,60.476562 c -0.0848,0.232149 -0.14708,0.473418 -0.22461,0.708985 -0.76552,2.315984 -1.199218,4.785 -1.199218,7.357422 C 24.556641,81.498363 35.065011,92 48.025391,92 60.963251,91.97331 71.443359,81.483872 71.443359,68.544922 c 0,-2.570723 -0.421276,-5.042778 -1.185547,-7.357422 0,0 -8.630054,-29.006362 -22.208984,-57.1484375 V 4.03125 4.0195312 4.0058594 Z m -0.03906,9.8417971 C 59.209548,38.806795 66.42383,62.328125 66.42383,62.328125 l 0.01563,0.05859 0.01953,0.05664 c 0.63557,1.924869 0.982422,3.964814 0.982422,6.09961 h 0.002 C 67.443359,79.320455 58.800601,87.97351 48.025391,88 h -0.0059 -0.0039 C 37.221101,87.9958 28.556607,79.332206 28.556607,68.541016 c 0,-2.12324 0.354983,-4.160037 0.996093,-6.09961 l 0.002,-0.002 v -0.002 c 0.131789,-0.400452 0.188593,-0.602839 0.183593,-0.589844 l 0.03906,-0.105468 0.0332,-0.109376 C 30.320007,59.947 37.570226,36.847661 48.009766,13.839844 Z"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -15,7 +15,7 @@
version="1.1" version="1.1"
inkscape:version="0.91+devel r" inkscape:version="0.91+devel r"
viewBox="0 0 96 96.000001" viewBox="0 0 96 96.000001"
sodipodi:docname="weather-flurries-symbolic.svg"> sodipodi:docname="settings.svg">
<defs <defs
id="defs4876" /> id="defs4876" />
<sodipodi:namedview <sodipodi:namedview
@ -25,12 +25,12 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="10.976561" inkscape:zoom="4.4959995"
inkscape:cx="22.142635" inkscape:cx="-16.425718"
inkscape:cy="33.448534" inkscape:cy="47.675692"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="g4780" inkscape:current-layer="g4780"
showgrid="false" showgrid="true"
showborder="true" showborder="true"
fit-margin-top="0" fit-margin-top="0"
fit-margin-left="0" fit-margin-left="0"
@ -79,6 +79,10 @@
orientation="0,1" orientation="0,1"
position="-5,8.0000001" position="-5,8.0000001"
id="guide4073" /> id="guide4073" />
<sodipodi:guide
orientation="1,0"
position="92,-8.0000001"
id="guide4075" />
<sodipodi:guide <sodipodi:guide
orientation="1,0" orientation="1,0"
position="88,-8.0000001" position="88,-8.0000001"
@ -91,9 +95,13 @@
orientation="1,0" orientation="1,0"
position="12,-8.0000001" position="12,-8.0000001"
id="guide4076" /> id="guide4076" />
<sodipodi:guide
orientation="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide <sodipodi:guide
orientation="1,0" orientation="1,0"
position="84,-8.0000001" position="84,-9.0000001"
id="guide4080" /> id="guide4080" />
<sodipodi:guide <sodipodi:guide
position="48,-8.0000001" position="48,-8.0000001"
@ -103,10 +111,6 @@
position="-8,48" position="-8,48"
orientation="0,1" orientation="0,1"
id="guide4172" /> id="guide4172" />
<sodipodi:guide
position="92,-8.0000001"
orientation="1,0"
id="guide4760" />
</sodipodi:namedview> </sodipodi:namedview>
<metadata <metadata
id="metadata4879"> id="metadata4879">
@ -149,28 +153,19 @@
y="345.36221" y="345.36221"
transform="scale(-1,1)" /> transform="scale(-1,1)" />
<path <path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:12.0023737;marker:none;enable-background:accumulate" 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:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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.0007925;stroke-linecap:butt;stroke-linejoin:miter;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 367.97249,391.36237 -0.80021,3.9995 -4.93727,0 2.66869,4.6205 -3.465,1.9998 -2.66869,-4.6205 -2.66868,4.6205 -3.46499,-1.9998 2.66867,-4.6205 -5.33737,0 0,-3.9995 5.33737,0 -2.66867,-4.6204 3.46499,-1.9998 2.66868,4.6205 2.66869,-4.6205 3.465,1.9998 -2.66869,4.6204 5.73748,0 z" d="m 371.94351,362.16529 c 17.19788,-9.91601 39.26149,-3.98444 49.20927,13.22273 9.94779,17.20716 4.05873,39.25353 -13.13915,49.16953 -17.19788,9.91601 -39.26053,3.98613 -49.20832,-13.22104 -9.94778,-17.20717 -4.05969,-39.25522 13.1382,-49.17122 z m 2.00297,3.46463 c -15.32206,8.83444 -20.54308,28.37061 -11.67591,43.70858 8.86716,15.33798 28.41901,20.59054 43.74106,11.7561 15.32205,-8.83443 20.54307,-28.37061 11.6759,-43.70858 -8.86716,-15.33797 -28.41901,-20.59053 -43.74105,-11.7561 z"
id="rect4315" id="path5417"
inkscape:connector-curvature="0"
inkscape:transform-center-x="-4.9970432e-05"
inkscape:transform-center-y="-8.9988672" />
<path
id="path4342"
d="m 372.37111,409.42577 -0.55109,2.7543 -3.40018,0 1.83786,3.1822 -2.38626,1.3771 -1.83786,-3.182 -1.83786,3.182 -2.38626,-1.3771 1.83786,-3.1822 -3.67572,0 0,-2.7543 3.67572,0 -1.83786,-3.182 2.38626,-1.3772 1.83786,3.182 1.83786,-3.182 2.38626,1.3772 -1.83786,3.182 3.95127,0 z"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:12.0023737;marker:none;enable-background:accumulate"
inkscape:connector-curvature="0"
inkscape:transform-center-x="16.396404"
inkscape:transform-center-y="-15.80467" />
<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:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 415.60547,384.36133 c -3.97616,0 -6.7935,1.6624 -8.1582,3.98242 -1.36471,2.32002 -1.45704,4.90895 -1.45704,7.01758 l 0,24 4,0 0,-24 c 0,-1.90524 0.21419,-3.81372 0.90625,-4.99024 0.69207,-1.17651 1.68239,-2.00781 4.70899,-2.00781 1.87806,0 2.72133,0.70859 3.40625,1.73633 0.68492,1.02774 0.98437,2.49609 0.98437,3.26172 0,2.67583 -2.61914,3.4668 -2.61914,3.46679 l 1.29493,3.78516 c 0,0 5.32421,-1.92778 5.32421,-7.25195 0,-1.56143 -0.3944,-3.58997 -1.65429,-5.48047 -1.2599,-1.8905 -3.6124,-3.51953 -6.73633,-3.51953 z"
id="path4194"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
<path <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:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
d="m 403.60156,349.36133 c -3.97615,0 -6.7935,1.6624 -8.1582,3.98242 -1.36471,2.32002 -1.45703,4.90895 -1.45703,7.01758 l 0,24 0,42 c 0,2 -0.0842,4.03363 -0.58985,5.21289 -0.50559,1.17926 -0.96637,1.78711 -3.4121,1.78711 -2.44574,0 -2.90847,-0.60785 -3.41407,-1.78711 -0.5056,-1.17926 -0.58789,-3.21289 -0.58789,-5.21289 l 0,-27 0,-24 c 0,-2.10863 -0.0943,-4.69756 -1.45898,-7.01758 -1.36471,-2.32002 -4.18205,-3.98242 -8.15821,-3.98242 -3.12392,0 -5.47448,1.62903 -6.73437,3.51953 -1.25989,1.8905 -1.65625,3.91904 -1.65625,5.48047 0,5.32417 5.32617,7.25195 5.32617,7.25195 l 1.29297,-3.78516 c 0,0 -2.61719,-0.79096 -2.61719,-3.46679 0,-0.76563 0.29751,-2.23398 0.98242,-3.26172 0.68492,-1.02774 1.52819,-1.73633 3.40625,-1.73633 3.02661,0 4.01888,0.8313 4.71094,2.00781 0.69207,1.17652 0.9043,3.085 0.9043,4.99024 l 0,24 0,27 c 0,2 -0.0829,4.46832 0.91211,6.78906 0.99499,2.32074 3.53516,4.21289 7.0918,4.21289 3.55663,0 6.09484,-1.89215 7.08984,-4.21289 0.99499,-2.32074 0.91211,-4.78906 0.91211,-6.78906 l 0,-42 0,-24 c 0,-1.90524 0.21223,-3.81372 0.90429,-4.99024 0.69207,-1.17651 1.68434,-2.00781 4.71094,-2.00781 1.87806,0 2.72133,0.70859 3.40625,1.73633 0.68492,1.02774 0.98242,2.49609 0.98242,3.26172 0,2.67583 -2.61718,3.46679 -2.61718,3.46679 l 1.29297,3.78516 c 0,0 5.32617,-1.92778 5.32617,-7.25195 0,-1.56143 -0.39636,-3.58997 -1.65625,-5.48047 -1.2599,-1.8905 -3.61045,-3.51953 -6.73438,-3.51953 z" d="M 54.902344 5.5820312 L 41.097656 7.6445312 L 41.097656 14.742188 A 34.033369 33.971264 43.145308 0 1 54.902344 14.769531 L 54.902344 5.5839844 L 54.902344 5.5820312 z M 26.65625 11.826172 L 16.138672 20.767578 L 21.320312 26.943359 A 34.033369 33.971264 43.145308 0 1 31.900391 18.076172 L 26.65625 11.826172 z M 69.287109 11.892578 L 64.080078 18.099609 A 34.033369 33.971264 43.145308 0 1 64.974609 18.574219 A 34.033369 33.971264 43.145308 0 1 74.648438 26.980469 L 79.919922 20.699219 L 69.287109 11.892578 z M 8.3984375 34.007812 L 6.0878906 47.619141 L 14.035156 49.021484 A 34.033369 33.971264 43.145308 0 1 16.421875 35.423828 L 8.3984375 34.007812 z M 87.515625 34.023438 L 79.529297 35.431641 A 34.033369 33.971264 43.145308 0 1 81.960938 49.019531 L 90 47.603516 L 87.515625 34.023438 z M 15.757812 58.644531 L 8.6699219 62.738281 L 8.6679688 62.738281 L 15.648438 74.648438 L 22.666016 70.597656 A 34.033369 33.971264 43.145308 0 1 15.757812 58.644531 z M 80.269531 58.660156 A 34.033369 33.971264 43.145308 0 1 77.464844 65.03125 A 34.033369 33.971264 43.145308 0 1 73.40625 70.638672 L 80.427734 74.693359 L 87.253906 62.693359 L 80.269531 58.660156 z M 30.148438 76.867188 L 27.34375 84.570312 L 40.347656 89.208984 L 43.105469 81.628906 A 34.033369 33.971264 43.145308 0 1 31.025391 77.433594 A 34.033369 33.971264 43.145308 0 1 30.148438 76.867188 z M 65.880859 76.947266 A 34.033369 33.971264 43.145308 0 1 52.902344 81.654297 L 55.683594 89.292969 L 68.625 84.486328 L 65.880859 76.947266 z "
id="path4196" transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4168" />
<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:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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.0007925;stroke-linecap:butt;stroke-linejoin:miter;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 377.95161,372.55694 c 11.46388,-6.60993 26.18875,-2.6521 32.81902,8.81669 6.63028,11.4688 2.70094,26.18465 -8.76295,32.79458 -11.46388,6.60992 -26.19142,2.65138 -32.82169,-8.81742 -6.63028,-11.46878 -2.69827,-26.18392 8.76562,-32.79385 z m 2.00198,3.46296 c -9.58805,5.52834 -12.85033,17.73231 -7.30067,27.3319 5.54967,9.5996 17.76375,12.8801 27.3518,7.35175 9.58805,-5.52834 12.85033,-17.73231 7.30067,-27.3319 -5.54967,-9.5996 -17.76375,-12.8801 -27.3518,-7.35175 z"
id="ellipse4539"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -0,0 +1,174 @@
<?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="share.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.951479"
inkscape:cx="-66.059911"
inkscape:cy="38.952069"
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: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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.0000001"
id="guide4080" />
<sodipodi:guide
position="48,83.568528"
orientation="1,0"
id="guide4170" />
</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="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:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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: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 362.97266,406.36133 c -7.15818,0 -13.00391,-5.84338 -13.00391,-13 0,-7.15663 5.84573,-13 13.00391,-13 7.15817,0 13.00586,5.84337 13.00586,13 0,7.15662 -5.84769,13 -13.00586,13 z m 0,-4 c 4.99683,0 9.0039,-4.00642 9.0039,-9 0,-4.99358 -4.00707,-9 -9.0039,-9 -4.99684,0 -9.00391,4.00642 -9.00391,9 0,4.99358 4.00707,9 9.00391,9 z"
id="path4184"
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:normal;font-family:sans-serif;font-variant-ligatures:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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: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 416.99414,379.36133 c -7.15817,0 -13.00391,-5.84338 -13.00391,-13 0,-7.15663 5.84574,-13 13.00391,-13 7.15817,0 13.00586,5.84337 13.00586,13 0,7.15662 -5.84769,13 -13.00586,13 z m 0,-4 c 4.99684,0 9.00391,-4.00642 9.00391,-9 0,-4.99358 -4.00707,-9 -9.00391,-9 -4.99684,0 -9.00391,4.00642 -9.00391,9 0,4.99358 4.00707,9 9.00391,9 z"
id="ellipse4187"
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:normal;font-family:sans-serif;font-variant-ligatures:none;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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: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 416.99414,433.36133 c -7.15817,0 -13.00391,-5.84338 -13.00391,-13 0,-7.15663 5.84574,-13 13.00391,-13 7.15817,0 13.00586,5.84337 13.00586,13 0,7.15662 -5.84769,13 -13.00586,13 z m 0,-4 c 4.99684,0 9.00391,-4.00642 9.00391,-9 0,-4.99358 -4.00707,-8.99805 -9.00391,-8.99805 -4.99684,0 -9.00391,4.00447 -9.00391,8.99805 0,4.99358 4.00707,9 9.00391,9 z"
id="ellipse4189"
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:normal;font-family:sans-serif;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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.00000095;stroke-linecap:butt;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 31.212891 36.955078 C 30.095925 37.676968 28.899371 38.278043 27.642578 38.755859 L 41.296875 66.066406 L 44.875 64.277344 L 31.212891 36.955078 z M 65.310547 37.273438 L 51.287109 64.318359 L 54.837891 66.158203 L 68.935547 38.96875 C 67.661395 38.531528 66.450297 37.959573 65.310547 37.273438 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4191" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,169 @@
<?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="stock_link.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="22.143771"
inkscape:cy="63.339496"
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="92,-8.0000001"
id="guide4075" />
<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="0,1"
position="-5,12"
id="guide4078" />
<sodipodi:guide
orientation="1,0"
position="84,-9.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: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="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;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 69.566406 8.0488281 C 69.069076 8.0655215 68.581069 8.1223681 68.099609 8.21875 C 64.146469 9.0095971 61.55585 11.815233 59.03125 14.339844 L 51.582031 21.789062 C 49.057731 24.313344 46.251997 26.903206 45.460938 30.857422 C 45.283448 31.744611 45.266754 32.66528 45.365234 33.615234 L 52.550781 26.431641 L 52.597656 26.382812 C 53.138306 25.792336 53.721869 25.184352 54.349609 24.556641 L 61.798828 17.109375 C 64.322638 14.585564 66.387158 12.553584 68.867188 12.056641 L 68.869141 12.056641 C 69.145331 12.001362 69.445295 11.959233 69.765625 11.943359 C 70.088725 11.927366 70.424994 11.938332 70.771484 11.978516 L 70.775391 11.978516 C 72.894811 12.226667 75.361421 13.576263 78.894531 17.109375 C 81.249971 19.464803 82.610609 21.31933 83.355469 22.947266 C 84.100319 24.575212 84.166413 26.02767 83.945312 27.132812 C 83.449142 29.613081 81.416668 31.675097 78.892578 34.199219 L 71.445312 41.650391 C 70.811523 42.28418 70.202562 42.869758 69.607422 43.414062 L 62.382812 50.638672 C 63.334272 50.737533 64.255931 50.718845 65.144531 50.541016 C 69.097661 49.750179 71.688271 46.94259 74.212891 44.417969 L 81.662109 36.96875 C 84.186399 34.444449 86.992153 31.854626 87.783203 27.900391 C 87.975833 26.937542 88.012236 25.930438 87.878906 24.882812 L 87.876953 24.882812 C 87.476983 21.739956 85.542106 18.217882 81.660156 14.335938 C 77.778196 10.453973 74.196321 8.5141882 71.087891 8.1210938 C 70.569991 8.0556197 70.063686 8.0322347 69.566406 8.0488281 z M 32.322266 45.291016 C 31.824926 45.307709 31.336889 45.364556 30.855469 45.460938 C 26.902319 46.251795 24.311729 49.059373 21.787109 51.583984 L 14.337891 59.029297 C 11.813921 61.553248 9.0078769 64.147277 8.2167969 68.101562 C 7.4462969 71.952979 9.1619706 76.48814 14.337891 81.664062 C 19.513821 86.839995 24.047738 88.553558 27.898438 87.783203 C 31.851578 86.992366 34.442177 84.18672 36.966797 81.662109 L 44.416016 74.212891 C 46.940306 71.688599 49.746059 69.096784 50.537109 65.142578 C 50.701629 64.320253 50.753321 63.476986 50.681641 62.601562 C 50.675641 62.53199 50.642066 62.454708 50.634766 62.384766 L 43.423828 69.59375 C 42.877238 70.192193 42.286968 70.804832 41.648438 71.443359 L 34.199219 78.892578 C 31.674489 81.417309 29.610479 83.447316 27.130859 83.943359 C 26.025439 84.164512 24.571479 84.098461 22.943359 83.353516 C 21.315239 82.60857 19.460899 81.247996 17.105469 78.892578 C 14.750029 76.53714 13.389391 74.682623 12.644531 73.054688 C 11.899681 71.426752 11.833597 69.974283 12.054688 68.869141 C 12.550878 66.388892 14.583322 64.326826 17.107422 61.802734 L 24.554688 54.351562 C 25.186537 53.719702 25.795702 53.136275 26.388672 52.59375 L 26.390625 52.591797 L 33.628906 45.353516 C 33.186796 45.307434 32.749326 45.276721 32.322266 45.291016 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4190" />
<path
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"
d="m 373.97713,409.36222 32.01266,-32"
id="path9289"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -0,0 +1,185 @@
<?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.2 (5c3e80d, 2017-08-06)"
viewBox="0 0 96 96.000001"
sodipodi:docname="temperture.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="9.9068602"
inkscape:cx="75.457321"
inkscape:cy="44.687369"
inkscape:document-units="px"
inkscape:current-layer="g4780"
showgrid="false"
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)" />
<path
id="rect4596"
transform="matrix(0,-1,-1,0,0,0)"
style="fill:none;stroke:#808080;stroke-width:4.00079155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m -371.76101,-367.97522 c 0,11.13793 -9.67118,20.16701 -21.60118,20.16701 -11.93001,0 -21.60119,-9.02908 -21.60119,-20.16701 0,-7.7834 4.72291,-14.53695 11.63913,-17.89899 v -36.69394 c 0,-5.54 4.42204,-9.43231 9.96204,-9.43231 5.54,0 9.98905,4.46001 10,10 l 0.0715,36.17981 c 6.85656,3.37986 11.5297,10.10314 11.5297,17.84543 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssscssscs" />
<path
id="rect4609"
transform="matrix(0,-1,-1,0,0,0)"
style="fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:4.00079155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m -393.36221,-412.68994 c 1.662,0 3,1.33853 3,3.00119 v 39.41058 c 0,1.66266 -1.338,3.00119 -3,3.00119 -1.662,0 -3,-1.33853 -3,-3.00119 v -39.41058 c 0,-1.66266 1.338,-3.00119 3,-3.00119 z m 13.66839,44.26285 a 13.696771,12.809413 0 0 1 -13.69677,12.80941 13.696771,12.809413 0 0 1 -13.69678,-12.80941 13.696771,12.809413 0 0 1 13.69678,-12.80942 13.696771,12.809413 0 0 1 13.69677,12.80942 z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -15,7 +15,7 @@
version="1.1" version="1.1"
inkscape:version="0.91+devel r" inkscape:version="0.91+devel r"
viewBox="0 0 96 96.000001" viewBox="0 0 96 96.000001"
sodipodi:docname="weather-clouds-symbolic.svg"> sodipodi:docname="torch-off.svg">
<defs <defs
id="defs4876" /> id="defs4876" />
<sodipodi:namedview <sodipodi:namedview
@ -26,11 +26,11 @@
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="4.4959994" inkscape:zoom="4.4959994"
inkscape:cx="11.154354" inkscape:cx="2.5467014"
inkscape:cy="34.719727" inkscape:cy="64.857633"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="g4780" inkscape:current-layer="g4780"
showgrid="false" showgrid="true"
showborder="true" showborder="true"
fit-margin-top="0" fit-margin-top="0"
fit-margin-left="0" fit-margin-left="0"
@ -79,6 +79,10 @@
orientation="0,1" orientation="0,1"
position="-5,8.0000001" position="-5,8.0000001"
id="guide4073" /> id="guide4073" />
<sodipodi:guide
orientation="1,0"
position="92,-8.0000001"
id="guide4075" />
<sodipodi:guide <sodipodi:guide
orientation="1,0" orientation="1,0"
position="88,-8.0000001" position="88,-8.0000001"
@ -93,7 +97,7 @@
id="guide4076" /> id="guide4076" />
<sodipodi:guide <sodipodi:guide
orientation="1,0" orientation="1,0"
position="84,-8.0000001" position="84,-9.0000001"
id="guide4080" /> id="guide4080" />
<sodipodi:guide <sodipodi:guide
position="48,-8.0000001" position="48,-8.0000001"
@ -103,10 +107,6 @@
position="-8,48" position="-8,48"
orientation="0,1" orientation="0,1"
id="guide4172" /> id="guide4172" />
<sodipodi:guide
position="92,-8.0000001"
orientation="1,0"
id="guide4760" />
</sodipodi:namedview> </sodipodi:namedview>
<metadata <metadata
id="metadata4879"> id="metadata4879">
@ -148,11 +148,19 @@
x="-438.00244" x="-438.00244"
y="345.36221" y="345.36221"
transform="scale(-1,1)" /> transform="scale(-1,1)" />
<rect
y="-349.96762"
x="-401.36221"
height="4.0015826"
width="15.999994"
id="rect4577"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
transform="matrix(0,-1,-1,0,0,0)" />
<path <path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#808080;fill-opacity:1;stroke:none;stroke-width:4.00000048;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#808080;fill-opacity:1;stroke:none;stroke-width:5.25000048;marker:none;enable-background:accumulate"
d="M 51.539062 16.888672 C 39.655652 16.888672 29.559451 24.212821 24.738281 34.675781 L 24.416016 35.376953 L 23.646484 35.433594 C 12.678934 36.232468 3.9980469 45.714566 3.9980469 57.255859 C 3.9980469 69.316737 13.439055 79.21875 25.109375 79.21875 L 51.539062 79.21875 L 76.175781 79.21875 C 84.926381 79.21875 92 71.787763 92 62.779297 C 92 55.94799 87.899411 50.217256 82.082031 47.746094 L 81.324219 47.423828 L 81.287109 46.603516 C 80.540729 30.134022 67.596276 16.888672 51.541016 16.888672 L 51.539062 16.888672 z M 51.539062 20.888672 C 65.393253 20.888672 76.634896 32.305371 77.291016 46.783203 L 77.289062 46.779297 L 77.4375 50.117188 L 80.515625 51.427734 C 84.906955 53.293126 87.998047 57.547827 87.998047 62.779297 C 87.998047 69.694971 82.658528 75.21875 76.173828 75.21875 L 51.539062 75.21875 L 25.109375 75.21875 C 15.702915 75.21875 7.9980469 67.230513 7.9980469 57.255859 C 7.9980469 47.719033 15.103887 40.06517 23.935547 39.421875 L 23.9375 39.421875 L 27.064453 39.191406 L 28.371094 36.349609 C 32.601004 27.169791 41.300243 20.888672 51.539062 20.888672 z " d="M 48 21 C 33.12385 21 21 33.097419 21 47.941406 C 21 57.252822 25.77425 65.458306 33 70.294922 L 33 75.019531 C 33 76.682513 33.10727 78.098921 33.59375 79.478516 C 34.08023 80.85823 35.1461 82.174071 36.4375 82.876953 C 39.02031 84.282707 41.5 84 45 84 L 51 84 C 54.5 84 56.9797 84.282707 59.5625 82.876953 C 60.8539 82.174071 61.91977 80.85823 62.40625 79.478516 C 62.89273 78.098921 63 76.682513 63 75.019531 L 63 70.294922 C 70.22575 65.458306 75 57.252822 75 47.941406 C 75 33.097419 62.87615 21 48 21 z M 48 25 C 60.70479 25 71 35.267049 71 47.945312 C 71 56.615463 66.10833 64.02326 59 67.917969 L 59 73.3125 L 59 75.007812 C 59.00001 75.978489 58.84292 76.919658 58.34375 77.759766 C 57.84458 78.599873 57.006669 79.196066 56.199219 79.498047 C 54.584309 80.102028 53.00001 80 51 80 L 45 80 C 43.00001 80 41.413738 80.102028 39.798828 79.498047 C 38.991378 79.196066 38.153467 78.599863 37.654297 77.759766 C 37.155127 76.919668 36.998047 75.978489 36.998047 75.007812 L 36.998047 73.3125 L 36.998047 67.917969 C 29.889717 64.02326 24.998047 56.615463 24.998047 47.945312 C 24.998047 35.267049 35.29521 25 48 25 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)" transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4181" /> id="path4721" />
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,160 @@
<?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="weather-chance-of-rain.svg">
<defs
id="defs4876" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6199993"
inkscape:cx="27.241991"
inkscape:cy="46.814931"
inkscape:document-units="px"
inkscape:current-layer="g4780"
showgrid="false"
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="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
d="M 48.048828 3.9980469 C 35.339788 29.765082 26.577949 58.499495 25.980469 60.476562 C 25.895669 60.708711 25.833389 60.94998 25.755859 61.185547 C 24.990339 63.501531 24.556641 65.970547 24.556641 68.542969 C 24.556641 81.498363 35.065011 92 48.025391 92 C 60.963251 91.973311 71.443359 81.483872 71.443359 68.544922 C 71.443359 65.974199 71.022083 63.502144 70.257812 61.1875 C 70.257812 61.1875 61.627758 32.181138 48.048828 4.0390625 L 48.048828 4.03125 L 48.048828 4.0195312 L 48.048828 4.0058594 L 48.048828 3.9980469 z M 48.009766 13.839844 C 59.209546 38.806795 66.423828 62.328125 66.423828 62.328125 L 66.439453 62.386719 L 66.458984 62.443359 C 67.094554 64.368228 67.441406 66.408173 67.441406 68.542969 L 67.443359 68.542969 C 67.443359 79.320455 58.800601 87.97351 48.025391 88 L 48.019531 88 L 48.015625 88 C 37.221135 87.995752 28.556641 79.332206 28.556641 68.541016 C 28.556641 66.417776 28.911624 64.380979 29.552734 62.441406 L 29.554688 62.439453 L 29.554688 62.4375 C 29.686477 62.037048 29.743281 61.834661 29.738281 61.847656 L 29.777344 61.742188 L 29.810547 61.632812 C 30.320007 59.947 37.570226 36.847661 48.009766 13.839844 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4185" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -15,7 +15,7 @@
version="1.1" version="1.1"
inkscape:version="0.91+devel r" inkscape:version="0.91+devel r"
viewBox="0 0 96 96.000001" viewBox="0 0 96 96.000001"
sodipodi:docname="weather-hazy-symbolic.svg"> sodipodi:docname="weather-few-clouds-symbolic.svg">
<defs <defs
id="defs4876" /> id="defs4876" />
<sodipodi:namedview <sodipodi:namedview
@ -25,9 +25,9 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="5.6199993" inkscape:zoom="7.0249991"
inkscape:cx="36.44128" inkscape:cx="37.622776"
inkscape:cy="28.683256" inkscape:cy="65.046254"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="g4780" inkscape:current-layer="g4780"
showgrid="true" showgrid="true"
@ -140,11 +140,6 @@
transform="matrix(-1,0,0,1,575.99999,611)" transform="matrix(-1,0,0,1,575.99999,611)"
id="g4780" id="g4780"
style="display:inline"> style="display:inline">
<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;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;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.00000048;stroke-linecap:butt;stroke-linejoin:miter;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 48 20 C 32.55931 20 20 32.560598 20 48 L 20 50 L 24 50 L 24 48 C 24 34.721073 34.72236 24 48 24 C 61.27765 24 71.998047 34.721073 71.998047 48 L 72 48 L 72 58 L 6 58 L 6 62 L 76 62 L 76 58 L 76 48 C 76 32.560598 63.44069 20 48 20 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4187" />
<rect <rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:4;marker:none;enable-background:accumulate" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:4;marker:none;enable-background:accumulate"
id="rect4782" id="rect4782"
@ -153,6 +148,30 @@
x="-438.00244" x="-438.00244"
y="345.36221" y="345.36221"
transform="scale(-1,1)" /> transform="scale(-1,1)" />
<path
inkscape:connector-curvature="0"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;marker:none;enable-background:accumulate"
d="m 381.56406,421.97322 a 34.712014,34.698285 0 0 1 -2.39786,-0.56823 34.712014,34.698285 0 0 0 2.39786,0.56823 z"
id="path4162" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#808080;fill-opacity:1;stroke:none;stroke-width:4;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 385.78649,374.57316 c 0,6.25052 -3.86023,11.56286 -9.36699,14.0957 l -0.26963,0.12305 -0.0215,0.29492 c -0.42297,5.79637 -5.44257,10.3789 -11.54363,10.3789 -6.37541,0 -11.61592,-4.98705 -11.61592,-11.15429 l 0,-13.73828 0,-12.80274 c 0,-4.64977 3.95354,-8.4082 8.73979,-8.4082 3.63016,0 6.67926,2.17762 7.99339,5.26562 l 0.12505,0.28907 0.31458,0.0137 c 8.66689,0.39191 15.64486,7.19864 15.64486,15.64258 z m -4.23996,0.43554 0,-0.49219 0,-0.01 0,-0.004 0,-0.0176 -0.004,0.004 c -0.0143,-6.19916 -5.05369,-11.23427 -11.25836,-11.23437 -0.217,1.5e-4 -0.4268,0.0177 -0.63697,0.0312 l -0.25791,0.002 c -1.01522,0.01 -1.84018,0.19861 -2.34859,0.29883 0.0503,-0.30669 0.1011,-0.44403 0.11138,-1.04102 l 0,-0.004 0,-0.004 c -9e-4,-2.76596 -2.25459,-5.01965 -5.02152,-5.01953 l 0,0.002 c -2.76693,-1.2e-4 -5.02256,2.25327 -5.02347,5.01953 l -0.008,25.31836 c -4.7e-4,4.12458 3.35354,7.47992 7.47952,7.48047 4.1267,4.4e-4 7.48195,-3.35537 7.48148,-7.48047 -8.6e-4,-0.78057 -0.20941,-1.53514 -0.4494,-2.27539 5.43844,-0.6589 9.67696,-5.09946 9.93553,-10.57422 l 0,0 z"
id="path4184"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccsscsscccccccccccccccccccccccccccc" />
<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;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;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;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;stroke-linecap:butt;stroke-linejoin:miter;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 48 20 C 32.55929 20 20 32.560578 20 48 C 20 59.109005 26.508208 68.718002 35.908203 73.238281 C 35.920407 71.797902 36.104439 70.392169 36.445312 69.044922 C 29.022196 64.968738 24 57.085318 24 48 C 24 34.720623 34.72191 23.998047 48 23.998047 C 61.2781 23.998047 72 34.720623 72 48 C 72 49.698996 71.822199 51.354929 71.488281 52.953125 C 72.800657 53.385275 74.035765 53.994548 75.171875 54.751953 C 75.709863 52.587866 76 50.328185 76 48 C 76 32.560578 63.44071 20 48 20 z "
transform="matrix(0,-1,-1.0003957,0,438.00245,441.36222)"
id="path4194" />
<path
transform="matrix(0,-1,-1,0,0,0)"
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"
inkscape:transform-center-y="-36.999984"
d="m -395.36221,-432.00006 3.99999,-0.50022 0,10.50418 -3.99999,0 z"
id="rect4196"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<rect <rect
inkscape:transform-center-y="-32.042929" inkscape:transform-center-y="-32.042929"
transform="matrix(-0.50014835,-0.86593974,-0.86611103,0.49985167,0,0)" transform="matrix(-0.50014835,-0.86593974,-0.86611103,0.49985167,0,0)"
@ -211,29 +230,26 @@
id="rect4208" id="rect4208"
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" 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"
inkscape:transform-center-x="36.999997" /> inkscape:transform-center-x="36.999997" />
<path <rect
inkscape:transform-center-x="32.042959"
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" 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"
inkscape:transform-center-y="-36.999984" id="rect4210"
d="m 432.00006,395.36221 0.50022,-3.99999 -10.50418,0 0,3.99999 z" width="4.0011816"
id="rect4196" height="10.00099"
inkscape:connector-curvature="0" x="532.4411"
sodipodi:nodetypes="ccccc" /> y="-187.76564"
transform="matrix(0.86611103,0.49985167,0.50014835,-0.86593974,0,0)"
inkscape:transform-center-y="18.499977" />
<rect <rect
y="-355.97" inkscape:transform-center-y="32.042932"
x="-435.36224" transform="matrix(0.50014835,0.86593974,0.86611103,-0.49985167,0,0)"
height="4.0015826" y="98.950249"
width="84" x="533.62909"
id="rect4292" height="10.002968"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:12;marker:none;enable-background:accumulate" width="4.0003905"
transform="matrix(0,-1,-1,0,0,0)" /> id="rect4212"
<rect 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"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:12;marker:none;enable-background:accumulate" inkscape:transform-center-x="18.500021" />
id="rect4313"
width="84"
height="4.0015826"
x="-435.36224"
y="-367.97476"
transform="matrix(0,-1,-1,0,0,0)" />
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -1,5 +1,5 @@
import QtQuick 2.8 import QtQuick 2.8
import QtQuick.Controls 2.2 import QtQuick.Controls 2.1
import "../components" import "../components"
Page { Page {

View File

@ -4,6 +4,7 @@ import QtQuick.Layouts 1.1
import Guh 1.0 import Guh 1.0
import "../components" import "../components"
import "../actiondelegates" import "../actiondelegates"
import "../paramdelegates"
Page { Page {
id: root id: root
@ -12,9 +13,7 @@ Page {
property string text property string text
// output // output
property var device: null property var actions: []
property var actionType: null
property var params: []
signal complete(); signal complete();
header: GuhHeader { header: GuhHeader {
@ -23,24 +22,41 @@ Page {
} }
ColumnLayout { ColumnLayout {
anchors { left: parent.left; top: parent.top; right: parent.right; margins: app.margins } anchors.fill: parent
spacing: app.margins
Label { Label {
text: root.text
Layout.fillWidth: true Layout.fillWidth: true
Layout.margins: app.margins
text: root.text
font.pixelSize: app.largeFont
} }
Button { ListView {
text: "control a certain device"
Layout.fillWidth: true Layout.fillWidth: true
onClicked: { Layout.fillHeight: true
pageStack.push(selectDeviceComponent) model: ListModel {
ListElement { name: "switchLights"; text: "Switch lights..." }
ListElement { name: "controlMedia"; text: "Control media playback..." }
ListElement { name: "manualAction"; text: "Manually configure an action..." }
}
delegate: ItemDelegate {
width: parent.width
text: model.text
onClicked: {
switch (model.name) {
case "switchLights":
pageStack.push(switchLightsCompoent)
break;
case "controlMedia":
break;
case "muteMedia":
break;
case "manualAction":
pageStack.push(selectDeviceComponent)
break;
}
}
} }
}
Button {
text: "control a group of devices"
Layout.fillWidth: true
} }
} }
@ -68,9 +84,8 @@ Page {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
} }
onClicked: { onClicked: {
root.device = Engine.deviceManager.devices.get(index) var device = Engine.deviceManager.devices.get(index)
var deviceClass = Engine.deviceManager.deviceClasses.getDeviceClass(model.deviceClassId) pageStack.push(selectDeviceActionComponent, {device: device})
pageStack.push(selectDeviceActionComponent, {deviceClass: deviceClass})
} }
} }
} }
@ -82,7 +97,8 @@ Page {
id: selectDeviceActionComponent id: selectDeviceActionComponent
Page { Page {
id: page id: page
property var deviceClass property var device
readonly property var deviceClass: Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId)
header: GuhHeader { header: GuhHeader {
text: "Select action" text: "Select action"
@ -106,14 +122,17 @@ Page {
} }
onClicked: { onClicked: {
root.actionType = page.deviceClass.actionTypes.get(index) var actionType = page.deviceClass.actionTypes.get(index)
if (page.deviceClass.actionTypes.get(index).paramTypes.count == 0) { if (page.deviceClass.actionTypes.get(index).paramTypes.count == 0) {
// We're all set. // We're all set.
var action = {}
action["deviceId"] = page.device.id
action["actionTypeId"] = actionType.id
root.actions.push(action)
root.complete(); root.complete();
} else { } else {
// need to fill in params // need to fill in params
var actionType = page.deviceClass.actionTypes.get(index) pageStack.push(selectDeviceActionParamComponent, {device: page.device, actionType: actionType})
pageStack.push(selectDeviceActionParamComponent, {actionType: actionType})
} }
} }
} }
@ -126,6 +145,7 @@ Page {
id: selectDeviceActionParamComponent id: selectDeviceActionParamComponent
Page { Page {
id: page id: page
property var device
property var actionType property var actionType
header: GuhHeader { header: GuhHeader {
text: "params" text: "params"
@ -137,22 +157,10 @@ Page {
Repeater { Repeater {
id: delegateRepeater id: delegateRepeater
model: page.actionType.paramTypes model: page.actionType.paramTypes
ItemDelegate { delegate: ParamDelegate {
id: paramDelegate paramType: page.actionType.paramTypes.get(index)
Layout.fillWidth: true value: paramType.defaultValue
property var paramType: page.actionType.paramTypes.get(index)
property var value: paramType.defaultValue
RowLayout {
anchors.fill: parent
Label {
Layout.fillWidth: true
text: paramDelegate.paramType.name
}
Switch {
checked: paramDelegate.value
onClicked: paramDelegate.value = checked
}
}
} }
} }
Item { Item {
@ -164,17 +172,102 @@ Page {
Layout.fillWidth: true Layout.fillWidth: true
Layout.margins: app.margins Layout.margins: app.margins
onClicked: { onClicked: {
var params = [];
for (var i = 0; i < delegateRepeater.count; i++) { for (var i = 0; i < delegateRepeater.count; i++) {
var paramDelegate = delegateRepeater.itemAt(i); var paramDelegate = delegateRepeater.itemAt(i);
var param = {} var param = {}
param["paramTypeId"] = paramDelegate.paramType.id param["paramTypeId"] = paramDelegate.paramType.id
param["value"] = paramDelegate.value param["value"] = paramDelegate.value
root.params.push(param) params.push(param)
} }
var action = {};
action["deviceId"] = page.device.id
action["actionTypeId"] = page.actionType.id
action["ruleActionParams"] = params
root.actions.push(action)
root.complete() root.complete()
} }
} }
} }
} }
} }
Component {
id: switchLightsCompoent
Page {
header: GuhHeader {
text: "Switch lights"
onBackPressed: pageStack.pop()
}
ColumnLayout {
anchors.fill: parent
SwitchDelegate {
id: switchDelegate
Layout.fillWidth: true
text: "Set selected lights power to"
position: 0
}
ThinDivider {}
Flickable {
Layout.fillHeight: true
Layout.fillWidth: true
interactive: contentHeight > height
clip: true
Column {
width: parent.width
Repeater {
id: lightsRepeater
model: DevicesProxy {
id: lightsModel
devices: Engine.deviceManager.devices
filterInterface: "light"
}
delegate: CheckDelegate {
width: parent.width
text: model.name
}
}
}
}
Button {
Layout.fillWidth: true
Layout.margins: app.margins
text: "OK"
onClicked: {
for (var i = 0; i < lightsRepeater.count; i++) {
if (lightsRepeater.itemAt(i).checkState === Qt.Unchecked) {
continue;
}
var device = lightsModel.get(i);
var deviceClass = Engine.deviceManager.deviceClasses.getDeviceClass(device.deviceClassId)
var action = {}
action["deviceId"] = device.id
var actionType = deviceClass.actionTypes.findByName("power")
action["actionTypeId"] = actionType.id
var params = [];
var paramType = actionType.paramTypes.getParamType("power");
var param = {}
param["paramTypeId"] = paramType.id
param["value"] = switchDelegate.position === 1 ? true : false;
params.push(param)
action["ruleActionParams"] = params
root.actions.push(action)
}
root.complete();
}
}
}
}
}
} }

View File

@ -1,6 +1,7 @@
import QtQuick 2.5 import QtQuick 2.8
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import QtQuick.Controls.Material 2.1 import QtQuick.Controls.Material 2.1
import QtQuick.Layouts 1.2
import Qt.labs.settings 1.0 import Qt.labs.settings 1.0
import Guh 1.0 import Guh 1.0
@ -9,15 +10,18 @@ ApplicationWindow {
visible: true visible: true
width: 270 * 1.5 width: 270 * 1.5
height: 480 * 1.5 height: 480 * 1.5
visibility: settings.fullscreen ? ApplicationWindow.FullScreen : ApplicationWindow.Windowed
property color guhAccent: "#ff57baae" property color guhAccent: "#ff57baae"
// Material.primary: "#ff57baae" // Material.primary: "#ff57baae"
Material.primary: "white" Material.primary: "white"
Material.accent: guhAccent Material.accent: guhAccent
property int margins: 10 property int margins: 14
property int bigMargins: 20 property int bigMargins: 20
property int smallFont: 10 property int smallFont: 14
property int mediumFont: 16
property int largeFont: 20 property int largeFont: 20
property int iconSize: 30 property int iconSize: 30
property int delegateHeight: 60 property int delegateHeight: 60
@ -25,6 +29,8 @@ ApplicationWindow {
Settings { Settings {
id: settings id: settings
property string lastConnectedHost: "" property string lastConnectedHost: ""
property bool fullscreen: false
property bool returnToHome: false
} }
Component.onCompleted: { Component.onCompleted: {
@ -49,6 +55,14 @@ ApplicationWindow {
print("setup required changed") print("setup required changed")
init(); init();
} }
onInvalidProtocolVersion: {
var popup = invalidVersionComponent.createObject(app.contentItem);
popup.actualVersion = actualVersion;
popup.minimumVersion = minimumVersion
popup.open()
settings.lastConnectedHost = ""
}
} }
function init() { function init() {
@ -76,6 +90,17 @@ ApplicationWindow {
id: discovery id: discovery
} }
Connections {
target: Qt.application
enabled: Engine.jsonRpcClient.connected && settings.returnToHome
onStateChanged: {
print("App active state changed:", state)
if (state !== Qt.ApplicationActive) {
init();
}
}
}
function interfaceToString(name) { function interfaceToString(name) {
switch(name) { switch(name) {
case "light": case "light":
@ -83,11 +108,15 @@ ApplicationWindow {
case "weather": case "weather":
return "Weather" return "Weather"
case "sensor": case "sensor":
return "Sensor" return "Sensors"
case "media": case "media":
return "Media" return "Media"
case "button": case "button":
return "Switches" return "Switches"
case "gateway":
return "Gateways"
case "notifications":
return "Notifications"
} }
} }
@ -95,14 +124,75 @@ ApplicationWindow {
switch (name) { switch (name) {
case "light": case "light":
return Qt.resolvedUrl("images/torch-on.svg") return Qt.resolvedUrl("images/torch-on.svg")
case "sensor":
return Qt.resolvedUrl("images/sensors.svg")
case "media": case "media":
return Qt.resolvedUrl("images/mediaplayer-app-symbolic.svg") return Qt.resolvedUrl("images/mediaplayer-app-symbolic.svg")
case "button": case "button":
return Qt.resolvedUrl("images/system-shutdown.svg") return Qt.resolvedUrl("images/system-shutdown.svg")
case "weather":
return Qt.resolvedUrl("images/weather-app-symbolic.svg")
case "temperaturesensor":
return Qt.resolvedUrl("images/temperature.svg")
case "humiditysensor":
return Qt.resolvedUrl("images/weathericons/humidity.svg")
case "gateway":
return Qt.resolvedUrl("images/network-wired-symbolic.svg")
case "notifications":
return Qt.resolvedUrl("images/notification.svg")
} }
} }
function interfaceToColor(name) {
switch (name) {
case "temperaturesensor":
return "red";
case "humiditysensor":
return "deepskyblue";
}
return "grey";
}
// ZeroconfDiscovery { // ZeroconfDiscovery {
// id: discovery // id: discovery
// } // }
Component {
id: invalidVersionComponent
Popup {
id: popup
property string actualVersion: "0.0"
property string minimumVersion: "1.0"
width: app.width * .8
height: col.childrenRect.height + app.margins * 2
x: (app.width - width) / 2
y: (app.height - height) / 2
visible: false
ColumnLayout {
id: col
anchors { left: parent.left; right: parent.right }
spacing: app.margins
Label {
text: "Connection error"
Layout.fillWidth: true
font.pixelSize: app.largeFont
}
Label {
text: qsTr("Sorry, the version of the guh box you are trying to connect to is too old. This app requires at least version %1 but the guh box only supports %2").arg(popup.minimumVersion).arg(popup.actualVersion)
wrapMode: Text.WordWrap
Layout.fillWidth: true
}
Button {
Layout.fillWidth: true
text: "OK"
onClicked: {
Engine.connection.disconnect();
popup.close()
}
}
}
}
}
} }

View File

@ -0,0 +1,20 @@
import QtQuick 2.8
import QtQuick.Layouts 1.2
import QtQuick.Controls 2.1
RowLayout {
id: root
property alias text: label.text
property alias value: theSwitch.checked
Label {
id: label
Layout.fillWidth: true
}
Switch {
id: theSwitch
checked: root.value === true
onClicked: root.value = checked
}
}

View File

@ -0,0 +1,25 @@
import QtQuick 2.8
import QtQuick.Layouts 1.2
import QtQuick.Controls 2.1
ParamDelegateBase {
id: root
contentItem: RowLayout {
width: parent.width
Label {
id: label
text: root.paramType.name
}
TextField {
id: textField
Layout.fillWidth: true
text: root.value ? root.value : root.paramType.defaultValue
onTextChanged: {
root.value = text;
}
}
}
}

View File

@ -0,0 +1,46 @@
import QtQuick 2.8
import QtQuick.Controls 2.1
Loader {
id: loader
property var paramType: null
property var value: null
source: {
var comp;
switch (loader.paramType.type) {
case "bool":
comp = "Bool";
break;
case "String":
comp = "String";
break;
case "Int":
comp = "Int";
break;
default:
print("unhandled param type:", paramType.type)
}
return Qt.resolvedUrl(comp + "ParamDelegate.qml")
}
onStatusChanged: {
if (status == Loader.Ready) {
loader.item.value = root.value
}
}
Binding {
target: loader.item
when: loader.item
property: "paramType"
value: loader.paramType
}
Binding {
target: loader
when: loader.item
property: "value"
value: loader.item.value
}
}

View File

@ -0,0 +1,9 @@
import QtQuick 2.4
import QtQuick.Controls 2.1
ItemDelegate {
property var paramType: null
property var value: null
}

View File

@ -0,0 +1,24 @@
import QtQuick 2.8
import QtQuick.Layouts 1.2
import QtQuick.Controls 2.1
ParamDelegateBase {
id: root
contentItem: RowLayout {
width: parent.width
Label {
id: label
text: root.paramType.name
}
TextField {
id: textField
Layout.fillWidth: true
text: root.value ? root.value : root.paramType.defaultValue
onTextChanged: {
root.value = text;
}
}
}
}

View File

@ -36,7 +36,8 @@ HEADERS += types/types.h \
types/ruleaction.h \ types/ruleaction.h \
types/ruleactions.h \ types/ruleactions.h \
types/ruleactionparams.h \ types/ruleactionparams.h \
types/ruleactionparam.h types/ruleactionparam.h \
types/logentry.h
SOURCES += types/vendor.cpp \ SOURCES += types/vendor.cpp \
types/vendors.cpp \ types/vendors.cpp \
@ -64,7 +65,8 @@ SOURCES += types/vendor.cpp \
types/ruleaction.cpp \ types/ruleaction.cpp \
types/ruleactions.cpp \ types/ruleactions.cpp \
types/ruleactionparams.cpp \ types/ruleactionparams.cpp \
types/ruleactionparam.cpp types/ruleactionparam.cpp \
types/logentry.cpp
# install header file with relative subdirectory # install header file with relative subdirectory
for(header, HEADERS) { for(header, HEADERS) {

View File

@ -22,6 +22,8 @@
#include "device.h" #include "device.h"
#include <QDebug>
Device::Device(QObject *parent) : Device::Device(QObject *parent) :
QObject(parent), QObject(parent),
m_statesProxy(new StatesProxy(this)) m_statesProxy(new StatesProxy(this))

View File

@ -70,6 +70,16 @@ void DeviceClass::setName(const QString &name)
m_name = name; m_name = name;
} }
QString DeviceClass::displayName() const
{
return m_displayName;
}
void DeviceClass::setDisplayName(const QString &displayName)
{
m_displayName = displayName;
}
QStringList DeviceClass::createMethods() const QStringList DeviceClass::createMethods() const
{ {
return m_createMethods; return m_createMethods;

View File

@ -38,6 +38,7 @@ class DeviceClass : public QObject
Q_OBJECT Q_OBJECT
Q_PROPERTY(QString name READ name CONSTANT) Q_PROPERTY(QString name READ name CONSTANT)
Q_PROPERTY(QString displayName READ displayName CONSTANT)
Q_PROPERTY(QUuid id READ id CONSTANT) Q_PROPERTY(QUuid id READ id CONSTANT)
Q_PROPERTY(QUuid vendorId READ vendorId CONSTANT) Q_PROPERTY(QUuid vendorId READ vendorId CONSTANT)
Q_PROPERTY(QStringList createMethods READ createMethods CONSTANT) Q_PROPERTY(QStringList createMethods READ createMethods CONSTANT)
@ -90,6 +91,9 @@ public:
QString name() const; QString name() const;
void setName(const QString &name); void setName(const QString &name);
QString displayName() const;
void setDisplayName(const QString &displayName);
QUuid id() const; QUuid id() const;
void setId(const QUuid &id); void setId(const QUuid &id);
@ -136,6 +140,7 @@ private:
QUuid m_vendorId; QUuid m_vendorId;
QUuid m_pluginId; QUuid m_pluginId;
QString m_name; QString m_name;
QString m_displayName;
QStringList m_createMethods; QStringList m_createMethods;
SetupMethod m_setupMethod; SetupMethod m_setupMethod;
QList<BasicTag> m_basicTags; QList<BasicTag> m_basicTags;

Some files were not shown because too many files have changed in this diff Show More