KUnifiedPush

selftest.h
1/*
2 SPDX-FileCopyrightText: 2025 Volker Krause <vkrause@kde.org>
3 SPDX-License-Identifier: LGPL-2.0-or-later
4*/
5
6#ifndef KUNIFIEDPUSH_SELFTEST_H
7#define KUNIFIEDPUSH_SELFTEST_H
8
9#include <QObject>
10#include <QTimer>
11
13class QNetworkReply;
14
15namespace KUnifiedPush {
16class Connector;
17class Notifier;
18}
19
20/** Push notification self-test state machine. */
21class SelfTest : public QObject
22{
24 Q_PROPERTY(State state READ state NOTIFY stateChanged)
25 Q_PROPERTY(QString errorMessage READ errorMessage NOTIFY errorMessageChanged)
26public:
27 explicit SelfTest(QObject *parent = nullptr);
28 ~SelfTest();
29
30 inline void setNetworkAccessManager(QNetworkAccessManager *nam) { m_nam = nam; }
31
32 enum State {
33 Idle,
34 WaitingForEndpoint,
35 Submitting,
36 WaitingForMessage,
37 Success,
38 Error,
39 };
40 Q_ENUM(State)
41
42 [[nodiscard]] inline State state() const { return m_state; }
43 [[nodiscard]] inline QString errorMessage() const { return m_errorMsg; }
44
45 Q_INVOKABLE void start();
46 Q_INVOKABLE void reset();
47
49 void stateChanged();
50 void errorMessageChanged();
51
52private:
53 void endpointChanged();
54 void submissionFinished(QNetworkReply *reply);
55 void messageReceived(const QByteArray &msg);
56
57 void setState(State state);
58 void setErrorMessage(const QString &errMsg);
59
60 QNetworkAccessManager *m_nam = nullptr;
61 State m_state = Idle;
62 std::unique_ptr<KUnifiedPush::Connector> m_connector;
63 std::unique_ptr<KUnifiedPush::Notifier> m_notifier;
64 QByteArray m_msg;
65 QString m_errorMsg;
66 QTimer m_timer;
67};
68
69#endif
Client connector to UnifiedPush.
Definition connector.h:23
Push notification submission job.
Definition notifier.h:23
Client-side integration with UnifiedPush.
Definition connector.h:14
QObject(QObject *parent)
Q_ENUM(...)
Q_INVOKABLEQ_INVOKABLE
Q_OBJECTQ_OBJECT
Q_PROPERTY(...)
Q_SIGNALSQ_SIGNALS
QObject * parent() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Apr 25 2025 12:05:39 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.