diff --git a/sources/awesome-widget/package/contents/config/main.xml b/sources/awesome-widget/package/contents/config/main.xml index 84caacc..063a99e 100644 --- a/sources/awesome-widget/package/contents/config/main.xml +++ b/sources/awesome-widget/package/contents/config/main.xml @@ -62,7 +62,10 @@ ( ) - + + 100 + + false diff --git a/sources/awesome-widget/package/contents/ui/advanced.qml b/sources/awesome-widget/package/contents/ui/advanced.qml index 5365da2..a4d29a8 100644 --- a/sources/awesome-widget/package/contents/ui/advanced.qml +++ b/sources/awesome-widget/package/contents/ui/advanced.qml @@ -51,7 +51,8 @@ Item { property alias cfg_customUptime: customUptime.value property alias cfg_acOnline: acOnline.value property alias cfg_acOffline: acOffline.value - property alias cfg_telemetry: telemetry.checked + property alias cfg_telemetryCount: telemetryCount.value + property alias cfg_telemetryRemote: telemetryRemote.checked property alias cfg_telemetryId: telemetryId.value @@ -234,9 +235,17 @@ Item { height: implicitHeight width: parent.width CheckBoxSelector { - id: telemetry + id: telemetryRemote text: i18n("Enable remote telemetry") } + IntegerSelector { + id: telemetryCount + maximumValue: 10000 + minimumValue: 0 + stepSize: 50 + text: i18n("History count") + value: plasmoid.configuration.telemetryCount + } LineSelector { id: telemetryId text: i18n("Telemetry ID") @@ -249,17 +258,5 @@ Item { Component.onCompleted: { if (debug) console.debug() - - // generate UUID if missing - if (telemetryId.value.length == 0) - telemetryId.value = generateUuid() - } - - // code from http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript - function generateUuid() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); - return v.toString(16); - }); } } diff --git a/sources/awesome-widget/package/contents/ui/main.qml b/sources/awesome-widget/package/contents/ui/main.qml index 49ae54e..ca0ab71 100644 --- a/sources/awesome-widget/package/contents/ui/main.qml +++ b/sources/awesome-widget/package/contents/ui/main.qml @@ -210,7 +210,13 @@ Item { awKeys.setAggregatorProperty("customUptime", plasmoid.configuration.customUptime) awKeys.setAggregatorProperty("tempUnits", plasmoid.configuration.tempUnits) awKeys.setAggregatorProperty("translate", plasmoid.configuration.translateStrings) + // update telemetry ID + if (plasmoid.configuration.telemetryId.length == 0) + plasmoid.configuration.telemetryId = generateUuid() // save telemetry + awTelemetryHandler.init(plasmoid.configuration.telemetryCount, + plasmoid.configuration.telemetryRemote, + plasmoid.configuration.telemetryId) if (awTelemetryHandler.put("awwidgetconfig", plasmoid.configuration.text)) awTelemetryHandler.uploadTelemetry("awwidgetconfig", plasmoid.configuration.text) } @@ -241,4 +247,12 @@ Item { tagSelectorBox.model = awKeys.dictKeys(true) return tagSelector.open() } + + // code from http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript + function generateUuid() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); + } } diff --git a/sources/awesome-widget/package/contents/ui/widget.qml b/sources/awesome-widget/package/contents/ui/widget.qml index 87699df..ad5b083 100644 --- a/sources/awesome-widget/package/contents/ui/widget.qml +++ b/sources/awesome-widget/package/contents/ui/widget.qml @@ -30,9 +30,6 @@ Item { AWActions { id: awActions } - AWTelemetryHandler { - id: awTelemetryHandler - } width: childrenRect.width height: childrenRect.height diff --git a/sources/awesome-widget/plugin/awtelemetryhandler.cpp b/sources/awesome-widget/plugin/awtelemetryhandler.cpp index 19b5345..0c1d361 100644 --- a/sources/awesome-widget/plugin/awtelemetryhandler.cpp +++ b/sources/awesome-widget/plugin/awtelemetryhandler.cpp @@ -34,14 +34,10 @@ AWTelemetryHandler::AWTelemetryHandler(QObject *parent, const QString clientId) { qCDebug(LOG_AW) << __PRETTY_FUNCTION__; - m_genericConfig = QString("%1/awesomewidgets/general.ini") - .arg(QStandardPaths::writableLocation( - QStandardPaths::GenericDataLocation)); m_localFile = QString("%1/awesomewidgets/telemetry.ini") .arg(QStandardPaths::writableLocation( QStandardPaths::GenericDataLocation)); - init(); // override client id if any if (!clientId.isEmpty()) m_clientId = clientId; @@ -78,6 +74,16 @@ QString AWTelemetryHandler::getLast(const QString group) const } +void AWTelemetryHandler::init(const int count, const bool enableRemote, const QString clientId) +{ + qCDebug(LOG_AW) << "Init telemetry with count" << count << "enable remote" << enableRemote << "client ID" << clientId; + + m_storeCount = count; + m_uploadEnabled = enableRemote; + m_clientId = clientId; +} + + bool AWTelemetryHandler::put(const QString group, const QString value) const { qCDebug(LOG_AW) << "Store data with group" << group << "and value" << value; @@ -181,44 +187,3 @@ QString AWTelemetryHandler::getKey(const int count) const return QString("%1").arg(count, 3, 10, QChar('0')); } - - -void AWTelemetryHandler::init() -{ - QSettings settings(m_genericConfig, QSettings::IniFormat); - settings.beginGroup(QString("Telemetry")); - - // unique client id - m_clientId - = settings.value(QString("ClientID"), QUuid::createUuid().toString()) - .toString(); - setConfiguration(QString("ClientID"), m_clientId, false); - // count items to store - m_storeCount = settings.value(QString("StoreHistory"), 100).toInt(); - setConfiguration(QString("StoreHistory"), m_storeCount, false); - // check if upload enabled - m_uploadEnabled = settings.value(QString("Upload"), false).toBool(); - setConfiguration(QString("Upload"), m_uploadEnabled, false); - - settings.endGroup(); -} - - -bool AWTelemetryHandler::setConfiguration(const QString key, - const QVariant value, - const bool override) const -{ - qCDebug(LOG_AW) << "Set configuration key" << key << "to value" << value - << "force override enabled" << override; - - QSettings settings(m_genericConfig, QSettings::IniFormat); - settings.beginGroup(QString("Telemetry")); - if (settings.childKeys().contains(key) && !override) - return true; - - settings.setValue(key, value); - settings.endGroup(); - settings.sync(); - - return (settings.status() == QSettings::NoError); -} diff --git a/sources/awesome-widget/plugin/awtelemetryhandler.h b/sources/awesome-widget/plugin/awtelemetryhandler.h index f8b11a0..3054668 100644 --- a/sources/awesome-widget/plugin/awtelemetryhandler.h +++ b/sources/awesome-widget/plugin/awtelemetryhandler.h @@ -39,6 +39,7 @@ public: virtual ~AWTelemetryHandler(); Q_INVOKABLE QStringList get(const QString group) const; Q_INVOKABLE QString getLast(const QString group) const; + Q_INVOKABLE void init(const int count, const bool enableRemote, const QString clientId); Q_INVOKABLE bool put(const QString group, const QString value) const; Q_INVOKABLE void uploadTelemetry(const QString group, const QString value); @@ -50,11 +51,7 @@ private slots: private: QString getKey(const int count) const; - void init(); - bool setConfiguration(const QString key, const QVariant value, - const bool override) const; QString m_clientId; - QString m_genericConfig; QString m_localFile; int m_storeCount = 0; bool m_uploadEnabled = false; diff --git a/sources/qml/AWExtensions.qml b/sources/qml/AWExtensions.qml index 29afbff..c2bba77 100644 --- a/sources/qml/AWExtensions.qml +++ b/sources/qml/AWExtensions.qml @@ -31,6 +31,9 @@ Row { AWFormatterConfigFactory { id: awFormatter } + AWTelemetryHandler { + id: awTelemetryHandler + } // parent object in which text will be replaced property var textArea diff --git a/sources/test/testawtelemetryhandler.cpp b/sources/test/testawtelemetryhandler.cpp index 9d2f04a..d13e180 100644 --- a/sources/test/testawtelemetryhandler.cpp +++ b/sources/test/testawtelemetryhandler.cpp @@ -26,7 +26,8 @@ void TestAWTelemetryHandler::initTestCase() { - plugin = new AWTelemetryHandler(this, telemetryId); + plugin = new AWTelemetryHandler(this); + plugin->init(1, true, telemetryId); telemetryData = AWTestLibrary::randomString(); telemetryGroup = AWTestLibrary::randomString(); }