1 /* 2 Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Library General Public 6 License as published by the Free Software Foundation; either 7 version 2 of the License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Library General Public License for more details. 13 14 You should have received a copy of the GNU Library General Public License 15 along with this library; see the file COPYING.LIB. If not, write to 16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 Boston, MA 02110-1301, USA. 18 */ 19 20 #include "config.h" 21 #include "NetworkStateNotifier.h" 22 23 #if PLATFORM(QT) && ENABLE(QT_BEARER) 24 25 #include "NetworkStateNotifierPrivate.h" 26 #include "qnetworkconfigmanager.h" 27 28 namespace WebCore { 29 30 NetworkStateNotifierPrivate::NetworkStateNotifierPrivate(NetworkStateNotifier* notifier) 31 : m_configurationManager(new QNetworkConfigurationManager()) 32 , m_online(m_configurationManager->isOnline()) 33 , m_networkAccessAllowed(true) 34 , m_notifier(notifier) 35 { 36 Q_ASSERT(notifier); 37 connect(m_configurationManager, SIGNAL(onlineStateChanged(bool)), this, SLOT(onlineStateChanged(bool))); 38 } 39 40 void NetworkStateNotifierPrivate::onlineStateChanged(bool isOnline) 41 { 42 if (m_online == isOnline) 43 return; 44 45 m_online = isOnline; 46 if (m_networkAccessAllowed) 47 m_notifier->updateState(); 48 } 49 50 void NetworkStateNotifierPrivate::networkAccessPermissionChanged(bool isAllowed) 51 { 52 if (isAllowed == m_networkAccessAllowed) 53 return; 54 55 m_networkAccessAllowed = isAllowed; 56 if (m_online) 57 m_notifier->updateState(); 58 } 59 60 NetworkStateNotifierPrivate::~NetworkStateNotifierPrivate() 61 { 62 delete m_configurationManager; 63 } 64 65 void NetworkStateNotifier::updateState() 66 { 67 if (m_isOnLine == (p->m_online && p->m_networkAccessAllowed)) 68 return; 69 70 m_isOnLine = p->m_online && p->m_networkAccessAllowed; 71 if (m_networkStateChangedFunction) 72 m_networkStateChangedFunction(); 73 } 74 75 NetworkStateNotifier::NetworkStateNotifier() 76 : m_isOnLine(true) 77 , m_networkStateChangedFunction(0) 78 { 79 p = new NetworkStateNotifierPrivate(this); 80 m_isOnLine = p->m_online && p->m_networkAccessAllowed; 81 } 82 83 void NetworkStateNotifier::setNetworkAccessAllowed(bool isAllowed) 84 { 85 p->networkAccessPermissionChanged(isAllowed); 86 } 87 88 } // namespace WebCore 89 90 #include "moc_NetworkStateNotifierPrivate.cpp" 91 92 #endif 93