File indexing completed on 2024-05-12 16:16:10
0001 /* 0002 SPDX-FileCopyrightText: 2016-2023 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "networkmanager.h" 0008 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) 0009 #include "texttranslator_debug.h" 0010 #include <QNetworkInformation> 0011 #else 0012 #include <QNetworkConfigurationManager> 0013 #endif 0014 using namespace TextTranslator; 0015 0016 Q_GLOBAL_STATIC(NetworkManager, s_pNetworkManagerSelf) 0017 0018 NetworkManager::NetworkManager(QObject *parent) 0019 : QObject(parent) 0020 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 0021 , mNetworkConfigureManager(new QNetworkConfigurationManager()) 0022 #endif 0023 { 0024 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 0025 QT_WARNING_PUSH 0026 QT_WARNING_DISABLE_CLANG("-Wdeprecated-declarations") 0027 QT_WARNING_DISABLE_GCC("-Wdeprecated-declarations") 0028 connect(mNetworkConfigureManager, &QNetworkConfigurationManager::onlineStateChanged, this, &NetworkManager::networkStatusChanged); 0029 QT_WARNING_POP 0030 #else 0031 QNetworkInformation::instance()->loadBackendByFeatures(QNetworkInformation::Feature::Reachability); 0032 connect(QNetworkInformation::instance(), &QNetworkInformation::reachabilityChanged, this, [this](QNetworkInformation::Reachability newReachability) { 0033 Q_EMIT networkStatusChanged(newReachability == QNetworkInformation::Reachability::Online); 0034 }); 0035 #endif 0036 } 0037 0038 NetworkManager::~NetworkManager() 0039 { 0040 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 0041 delete mNetworkConfigureManager; 0042 #endif 0043 } 0044 0045 NetworkManager *NetworkManager::self() 0046 { 0047 return s_pNetworkManagerSelf(); 0048 } 0049 0050 bool NetworkManager::isOnline() const 0051 { 0052 #if QT_VERSION >= QT_VERSION_CHECK(6, 1, 0) 0053 if (QNetworkInformation::loadBackendByFeatures(QNetworkInformation::Feature::Reachability)) { 0054 return QNetworkInformation::instance()->reachability() == QNetworkInformation::Reachability::Online; 0055 } else { 0056 qCWarning(TEXTTRANSLATOR_LOG) << "Couldn't find a working backend for QNetworkInformation"; 0057 return false; 0058 } 0059 #else 0060 return mNetworkConfigureManager->isOnline(); 0061 #endif 0062 } 0063 0064 #include "moc_networkmanager.cpp"