Warning, file /plasma/plasma-workspace/shell/userfeedback.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     SPDX-FileCopyrightText: 2019 Aleix Pol Gonzalez <aleixpol@kde.org>
0003     SPDX-FileCopyrightText: 2020 David Edmundson <davidedmundson@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "userfeedback.h"
0009 
0010 #include <KUserFeedback/ApplicationVersionSource>
0011 #include <KUserFeedback/CompilerInfoSource>
0012 #include <KUserFeedback/OpenGLInfoSource>
0013 #include <KUserFeedback/PlatformInfoSource>
0014 #include <KUserFeedback/Provider>
0015 #include <KUserFeedback/QPAInfoSource>
0016 #include <KUserFeedback/QtVersionSource>
0017 #include <KUserFeedback/ScreenInfoSource>
0018 #include <KUserFeedback/UsageTimeSource>
0019 
0020 #include <KLocalizedString>
0021 
0022 #include "shellcorona.h"
0023 
0024 class PanelCountSource : public KUserFeedback::AbstractDataSource
0025 {
0026 public:
0027     /*! Create a new start count data source. */
0028     PanelCountSource(ShellCorona *corona)
0029         : AbstractDataSource(QStringLiteral("panelCount"), KUserFeedback::Provider::DetailedSystemInformation)
0030         , corona(corona)
0031     {
0032     }
0033 
0034     QString name() const override
0035     {
0036         return i18n("Panel Count");
0037     }
0038     QString description() const override
0039     {
0040         return i18n("Counts the panels");
0041     }
0042 
0043     QVariant data() override
0044     {
0045         return QVariantMap{{QStringLiteral("panelCount"), corona->panelCount()}};
0046     }
0047 
0048 private:
0049     ShellCorona *const corona;
0050 };
0051 
0052 UserFeedback::UserFeedback(ShellCorona *corona, QObject *parent)
0053     : QObject(parent)
0054     , m_provider(new KUserFeedback::Provider(this))
0055 {
0056     m_provider->setProductIdentifier(QStringLiteral("org.kde.plasmashell"));
0057     m_provider->setFeedbackServer(QUrl(QStringLiteral("https://telemetry.kde.org/")));
0058     m_provider->setSubmissionInterval(7);
0059     m_provider->setApplicationStartsUntilEncouragement(5);
0060     m_provider->setEncouragementDelay(30);
0061     m_provider->addDataSource(new KUserFeedback::ApplicationVersionSource);
0062     m_provider->addDataSource(new KUserFeedback::CompilerInfoSource);
0063     m_provider->addDataSource(new KUserFeedback::PlatformInfoSource);
0064     m_provider->addDataSource(new KUserFeedback::QtVersionSource);
0065     m_provider->addDataSource(new KUserFeedback::UsageTimeSource);
0066     m_provider->addDataSource(new KUserFeedback::OpenGLInfoSource);
0067     m_provider->addDataSource(new KUserFeedback::ScreenInfoSource);
0068     m_provider->addDataSource(new KUserFeedback::QPAInfoSource);
0069     m_provider->addDataSource(new PanelCountSource(corona));
0070 
0071     auto plasmaConfig = KSharedConfig::openConfig(QStringLiteral("PlasmaUserFeedback"));
0072     m_provider->setTelemetryMode(KUserFeedback::Provider::TelemetryMode(
0073         plasmaConfig->group(QStringLiteral("Global")).readEntry("FeedbackLevel", int(KUserFeedback::Provider::NoTelemetry))));
0074 }
0075 
0076 QString UserFeedback::describeDataSources() const
0077 {
0078     return m_provider->describeDataSources();
0079 }