File indexing completed on 2024-05-05 09:56:42
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 }