File indexing completed on 2024-05-12 16:21:30

0001 /**
0002  * SPDX-FileCopyrightText: 2023 Bart De Vries <bart@mogwai.be>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QObject>
0010 
0011 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0012 #include <solidextras/networkstatus.h>
0013 #endif
0014 
0015 class NetworkConnectionManager : public QObject
0016 {
0017     Q_OBJECT
0018 
0019     Q_PROPERTY(bool feedUpdatesAllowed READ feedUpdatesAllowed NOTIFY feedUpdatesAllowedChanged)
0020     Q_PROPERTY(bool episodeDownloadsAllowed READ episodeDownloadsAllowed NOTIFY episodeDownloadsAllowedChanged)
0021     Q_PROPERTY(bool imageDownloadsAllowed READ imageDownloadsAllowed NOTIFY imageDownloadsAllowedChanged)
0022     Q_PROPERTY(bool streamingAllowed READ streamingAllowed NOTIFY streamingAllowedChanged)
0023 
0024 public:
0025     static NetworkConnectionManager &instance()
0026     {
0027         static NetworkConnectionManager _instance;
0028         return _instance;
0029     }
0030 
0031     [[nodiscard]] bool feedUpdatesAllowed() const;
0032     [[nodiscard]] bool episodeDownloadsAllowed() const;
0033     [[nodiscard]] bool imageDownloadsAllowed() const;
0034     [[nodiscard]] bool streamingAllowed() const;
0035 
0036 Q_SIGNALS:
0037     void feedUpdatesAllowedChanged();
0038     void episodeDownloadsAllowedChanged();
0039     void imageDownloadsAllowedChanged();
0040     void streamingAllowedChanged();
0041 
0042 private:
0043     NetworkConnectionManager(QObject *parent = nullptr);
0044 
0045 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0046     SolidExtras::NetworkStatus m_networkStatus;
0047 #else
0048     bool m_backendAvailable = false;
0049 #endif
0050 };