File indexing completed on 2024-12-15 03:45:04
0001 /* 0002 SPDX-FileCopyrightText: 2017 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: MIT 0005 */ 0006 0007 #ifndef KUSERFEEDBACK_PROVIDER_P_H 0008 #define KUSERFEEDBACK_PROVIDER_P_H 0009 0010 #include "provider.h" 0011 0012 #include <common/surveytargetexpressionevaluator.h> 0013 0014 #include <QDateTime> 0015 #include <QStringList> 0016 #include <QTime> 0017 #include <QTimer> 0018 #include <QVector> 0019 #include <QElapsedTimer> 0020 0021 #include <memory> 0022 0023 QT_BEGIN_NAMESPACE 0024 class QNetworkAccessManager; 0025 class QNetworkReply; 0026 class QSettings; 0027 QT_END_NAMESPACE 0028 0029 namespace KUserFeedback { 0030 class ProviderPrivate : public SurveyTargetExpressionDataProvider 0031 { 0032 public: 0033 explicit ProviderPrivate(Provider *qq); 0034 ~ProviderPrivate() override; 0035 0036 int currentApplicationTime() const; 0037 0038 std::unique_ptr<QSettings> makeSettings() const; 0039 std::unique_ptr<QSettings> makeGlobalSettings() const; 0040 void load(); 0041 void store(); 0042 void storeOne(const QString &key, const QVariant &value); 0043 void storeOneGlobal(const QString &key, const QVariant &value); 0044 0045 void aboutToQuit(); 0046 0047 bool isValidSource(AbstractDataSource *source) const; 0048 QByteArray jsonData(Provider::TelemetryMode mode) const; 0049 void scheduleNextSubmission(qint64 minTime = 0); 0050 void submitProbe(const QUrl &url); 0051 void submitProbeFinished(QNetworkReply *reply); 0052 void submit(const QUrl &url); 0053 void submitFinished(QNetworkReply *reply); 0054 0055 bool selectSurvey(const SurveyInfo &survey) const; 0056 0057 Provider::TelemetryMode highestTelemetryMode() const; 0058 void scheduleEncouragement(); 0059 void emitShowEncouragementMessage(); 0060 0061 void writeAuditLog(const QDateTime &dt); 0062 0063 QVariant sourceData(const QString &sourceId) const override; 0064 0065 Provider *q; 0066 0067 QString productId; 0068 0069 QTimer submissionTimer; 0070 QNetworkAccessManager *networkAccessManager; 0071 QUrl serverUrl; 0072 QDateTime lastSubmitTime; 0073 int redirectCount; 0074 int submissionInterval; 0075 Provider::TelemetryMode telemetryMode; 0076 0077 int surveyInterval; 0078 QDateTime lastSurveyTime; 0079 QStringList completedSurveys; 0080 0081 QElapsedTimer startTime; 0082 int startCount; 0083 int usageTime; 0084 0085 QTimer encouragementTimer; 0086 QDateTime lastEncouragementTime; 0087 int encouragementStarts; 0088 int encouragementTime; 0089 int encouragementDelay; 0090 int encouragementInterval; 0091 0092 int backoffIntervalMinutes; 0093 0094 QVector<AbstractDataSource*> dataSources; 0095 QHash<QString, AbstractDataSource*> dataSourcesById; 0096 }; 0097 } 0098 0099 #endif