aboutsummaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/scopedsettingsgroupsetter.cpp60
-rw-r--r--src/common/scopedsettingsgroupsetter.h57
-rw-r--r--src/common/utils.h53
3 files changed, 170 insertions, 0 deletions
diff --git a/src/common/scopedsettingsgroupsetter.cpp b/src/common/scopedsettingsgroupsetter.cpp
new file mode 100644
index 0000000..472b6fd
--- /dev/null
+++ b/src/common/scopedsettingsgroupsetter.cpp
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** 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 "scopedsettingsgroupsetter.h"
+
+#include <QSettings>
+
+#include <KUserFeedback/AbstractDataSource>
+
+#include "usagestatisticconstants.h"
+
+namespace UsageStatistic {
+namespace Internal {
+
+ScopedSettingsGroupSetter::ScopedSettingsGroupSetter(QSettings &settings,
+ const std::initializer_list<QString> &prefixes)
+ : m_settings(settings)
+ , m_prefixesCount(int(prefixes.size()))
+{
+ for (auto &&prefix : prefixes) {
+ m_settings.beginGroup(prefix);
+ }
+}
+
+ScopedSettingsGroupSetter::~ScopedSettingsGroupSetter()
+{
+ while (m_prefixesCount-- > 0) {
+ m_settings.endGroup();
+ }
+}
+
+ScopedSettingsGroupSetter ScopedSettingsGroupSetter::forDataSource(
+ const KUserFeedback::AbstractDataSource &ds, QSettings &settings)
+{
+ return ScopedSettingsGroupSetter(settings, {Constants::DATA_SOURCES_SETTINGS_GROUP, ds.id()});
+}
+
+} // namespace Internal
+} // namespace UsageStatistic
diff --git a/src/common/scopedsettingsgroupsetter.h b/src/common/scopedsettingsgroupsetter.h
new file mode 100644
index 0000000..adcaa61
--- /dev/null
+++ b/src/common/scopedsettingsgroupsetter.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** 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.
+**
+****************************************************************************/
+#pragma once
+
+#include <memory>
+
+#include <QtCore/QtGlobal>
+
+QT_BEGIN_NAMESPACE
+class QSettings;
+QT_END_NAMESPACE
+
+namespace KUserFeedback { class AbstractDataSource; }
+
+namespace UsageStatistic {
+namespace Internal {
+
+//! Used to set the specific set of group prefixes. Everything will be unset in the destructor
+class ScopedSettingsGroupSetter
+{
+public:
+ ScopedSettingsGroupSetter(QSettings &settings, const std::initializer_list<QString> &prefixes);
+
+ ~ScopedSettingsGroupSetter();
+
+ static ScopedSettingsGroupSetter forDataSource(const KUserFeedback::AbstractDataSource &ds,
+ QSettings &settings);
+
+private:
+ QSettings &m_settings;
+ int m_prefixesCount;
+};
+
+} // namespace Internal
+} // namespace UsageStatistic
diff --git a/src/common/utils.h b/src/common/utils.h
new file mode 100644
index 0000000..592728a
--- /dev/null
+++ b/src/common/utils.h
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** 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.
+**
+****************************************************************************/
+#pragma once
+
+#include <QtCore/QString>
+
+namespace UsageStatistic {
+namespace Internal {
+namespace Utils {
+
+//! Secret key for authentication defined during building
+constexpr auto secret() { return USP_AUTH_KEY; }
+
+//! Base server URL defined during building
+constexpr auto serverUrl() { return USP_SERVER_URL; }
+
+/*! Data scheme version for the JSON document
+ *
+ * Should be changed if you change the output data format,
+ * for example, change a key or add a new data source.
+ */
+struct DocumentVersion
+{
+ int major = 1;
+ int minor = 0;
+ int patch = 0;
+};
+
+} // namespace Utils
+} // namespace Internal
+} // namespace UsageStatistic