diff options
author | Eike Ziller <eike.ziller@qt.io> | 2019-11-11 12:03:55 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2019-11-11 12:03:55 +0100 |
commit | ce2efcf29baf75d81da16a720066d2ec00529329 (patch) | |
tree | a13a5f608cd410a1ff9444342e3977af36e4361a /src/datasources/servicesource.cpp | |
parent | 6dc752e0a22165034a06ebaa3e5bce5be8e05716 (diff) | |
parent | 03f2d7ae72b71f7320eedcdf3c2611de82be4f83 (diff) |
Merge remote-tracking branch 'origin/4.11'
Change-Id: Ic877e309ac43be18d35d84214a4eb6795342b46c
Diffstat (limited to 'src/datasources/servicesource.cpp')
-rw-r--r-- | src/datasources/servicesource.cpp | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/src/datasources/servicesource.cpp b/src/datasources/servicesource.cpp new file mode 100644 index 0000000..8bb71eb --- /dev/null +++ b/src/datasources/servicesource.cpp @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company +** Contact: https://www.qt.io/licensing/ +** +** This file is part of UsageStatistic plugin for Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ +#include "servicesource.h" + +#include <QtCore/QDateTime> +#include <QtCore/QSettings> + +#include "common/utils.h" +#include "common/scopedsettingsgroupsetter.h" + +namespace UsageStatistic { +namespace Internal { + +using namespace KUserFeedback; + +ServiceSource::ServiceSource(std::shared_ptr<KUserFeedback::Provider> provider) + : AbstractDataSource(QStringLiteral("serviceData"), Provider::BasicSystemInformation) + , m_provider(std::move(provider)) +{ +} + +QString ServiceSource::name() const +{ + return tr("Service data"); +} + +QString ServiceSource::description() const +{ + return tr("Additional technical things to make data processing more reliable and useful"); +} + +static QString documentVersionKey() { return QStringLiteral("documentVersion"); } +static QString telemetryLevelKey() { return QStringLiteral("telemetryLevel"); } +static QString createdAtKey() { return QStringLiteral("createdAt"); } +static QString uuidKey() { return QStringLiteral("uuid"); } + +static QString documentVersionString() +{ + static const auto versionString = [](){ + const Utils::DocumentVersion v; + return QStringLiteral("%1.%2.%3").arg(v.major).arg(v.minor).arg(v.patch); + }(); + return versionString; +} + +static int telemetryLevel(const std::shared_ptr<KUserFeedback::Provider> &provider) +{ + if (!provider) { + return -1; + } + + switch (provider->telemetryMode()) { + case Provider::BasicSystemInformation: + return 1; + case Provider::BasicUsageStatistics: + return 2; + case Provider::DetailedSystemInformation: + return 3; + case Provider::DetailedUsageStatistics: + return 4; + default: + return -1; + } +} + +static QString createdAtString() +{ + return QDateTime::currentDateTime().toString(Qt::ISODate); +} + +QVariant ServiceSource::data() +{ + return QVariantMap{{documentVersionKey(), documentVersionString()}, + {telemetryLevelKey(), telemetryLevel(m_provider)}, + {createdAtKey(), createdAtString()}, + {uuidKey(), m_uuid.toString(QUuid::WithoutBraces)}}; +} + +void ServiceSource::loadImpl(QSettings *settings) +{ + auto setter = ScopedSettingsGroupSetter::forDataSource(*this, *settings); + m_uuid = qvariant_cast<QUuid>(settings->value(uuidKey(), m_uuid)); +} + +void ServiceSource::storeImpl(QSettings *settings) +{ + auto setter = ScopedSettingsGroupSetter::forDataSource(*this, *settings); + settings->setValue(uuidKey(), m_uuid); +} + +} // Internal +} // UsageStatistic |