/** * SPDX-FileCopyrightText: 2023 Bart De Vries * * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ #pragma once #include #include class NetworkConnectionManager : public QObject { Q_OBJECT QML_ELEMENT QML_SINGLETON Q_PROPERTY(bool networkReachable READ networkReachable NOTIFY networkReachableChanged) Q_PROPERTY(bool feedUpdatesAllowed READ feedUpdatesAllowed NOTIFY feedUpdatesAllowedChanged) Q_PROPERTY(bool episodeDownloadsAllowed READ episodeDownloadsAllowed NOTIFY episodeDownloadsAllowedChanged) Q_PROPERTY(bool imageDownloadsAllowed READ imageDownloadsAllowed NOTIFY imageDownloadsAllowedChanged) Q_PROPERTY(bool streamingAllowed READ streamingAllowed NOTIFY streamingAllowedChanged) public: static NetworkConnectionManager &instance() { static NetworkConnectionManager _instance; return _instance; } static NetworkConnectionManager *create(QQmlEngine *engine, QJSEngine *) { engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership); return &instance(); } [[nodiscard]] bool networkReachable() const; [[nodiscard]] bool feedUpdatesAllowed() const; [[nodiscard]] bool episodeDownloadsAllowed() const; [[nodiscard]] bool imageDownloadsAllowed() const; [[nodiscard]] bool streamingAllowed() const; Q_SIGNALS: void networkReachableChanged(); void feedUpdatesAllowedChanged(); void episodeDownloadsAllowedChanged(); void imageDownloadsAllowedChanged(); void streamingAllowedChanged(); private: NetworkConnectionManager(QObject *parent = nullptr); bool m_backendAvailable = false; };