You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-packaging/opensuse/core/tdelibs/networkstatus.diff

6007 lines
192 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Index: networkstatus/connectionmanager.cpp
===================================================================
--- /dev/null
+++ networkstatus/connectionmanager.cpp
@@ -0,0 +1,171 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <kapplication.h>
+#include <kdebug.h>
+#include <kstaticdeleter.h>
+
+#include "connectionmanager.h"
+#include "connectionmanager_p.h"
+
+// Connection manager itself
+ConnectionManager::ConnectionManager( QObject * parent, const char * name ) : DCOPObject( "ConnectionManager" ), QObject( parent, name ), d( new ConnectionManagerPrivate( this ) )
+{
+ d->service = new NetworkStatusIface_stub( kapp->dcopClient(), "kded", "networkstatus" );
+
+ connectDCOPSignal( "kded", "networkstatus", "statusChange(int)", "slotStatusChanged(int)", false );
+
+ initialise();
+}
+
+ConnectionManager::~ConnectionManager()
+{
+ delete d;
+}
+
+ConnectionManager *ConnectionManager::s_self = 0L;
+
+ConnectionManager *ConnectionManager::self()
+{
+ static KStaticDeleter<ConnectionManager> deleter;
+ if(!s_self)
+ deleter.setObject( s_self, new ConnectionManager( 0, "connection_manager" ) );
+ return s_self;
+}
+
+void ConnectionManager::initialise()
+{
+ // determine initial state and set the state object accordingly.
+ d->status = ( NetworkStatus::Status )d->service->status();
+}
+
+NetworkStatus::Status ConnectionManager::status()
+{
+ return d->status;
+}
+
+void ConnectionManager::slotStatusChanged( int status )
+{
+ d->status = ( NetworkStatus::Status )status;
+ switch ( status ) {
+ case NetworkStatus::NoNetworks:
+ break;
+ case NetworkStatus::Unreachable:
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ case NetworkStatus::OfflineFailed:
+ case NetworkStatus::ShuttingDown:
+ case NetworkStatus::Offline:
+ case NetworkStatus::Establishing:
+ if ( d->disconnectPolicy == Managed ) {
+ emit d->disconnected();
+ } else if ( d->disconnectPolicy == OnNextChange ) {
+ setDisconnectPolicy( Manual );
+ emit d->disconnected();
+ }
+ break;
+ case NetworkStatus::Online:
+ if ( d->disconnectPolicy == Managed ) {
+ emit d->connected();
+ } else if ( d->disconnectPolicy == OnNextChange ) {
+ setConnectPolicy( Manual );
+ emit d->connected();
+ }
+ break;
+ default:
+ kdDebug() << k_funcinfo << "Unrecognised status code!" << endl;
+ }
+ emit statusChanged( d->status );
+}
+
+ConnectionManager::ConnectionPolicy ConnectionManager::connectPolicy() const
+{
+ return d->connectPolicy;
+}
+
+void ConnectionManager::setConnectPolicy( ConnectionManager::ConnectionPolicy policy )
+{
+ d->connectPolicy = policy;
+}
+
+ConnectionManager::ConnectionPolicy ConnectionManager::disconnectPolicy() const
+{
+ return d->disconnectPolicy;
+}
+
+void ConnectionManager::setDisconnectPolicy( ConnectionManager::ConnectionPolicy policy )
+{
+ d->disconnectPolicy = policy;
+}
+
+void ConnectionManager::setManualConnectionPolicies()
+{
+ d->connectPolicy = ConnectionManager::Manual;
+ d->disconnectPolicy = ConnectionManager::Manual;
+}
+
+void ConnectionManager::setManagedConnectionPolicies()
+{
+ d->connectPolicy = ConnectionManager::Managed;
+ d->disconnectPolicy = ConnectionManager::Managed;
+}
+
+void ConnectionManager::registerConnectSlot( QObject * receiver, const char * member )
+{
+ d->connectReceiver = receiver;
+ d->connectSlot = member;
+ connect( d, SIGNAL( connected() ), receiver, member );
+}
+
+void ConnectionManager::forgetConnectSlot()
+{
+ disconnect( d, SIGNAL( connected() ), d->connectReceiver, d->connectSlot );
+ d->connectReceiver = 0;
+ d->connectSlot = 0;
+}
+
+bool ConnectionManager::isConnectSlotRegistered() const
+{
+ return ( d->connectSlot != 0 );
+}
+
+void ConnectionManager::registerDisconnectSlot( QObject * receiver, const char * member )
+{
+ d->disconnectReceiver = receiver;
+ d->disconnectSlot = member;
+ connect( d, SIGNAL( disconnected() ), receiver, member );
+}
+
+void ConnectionManager::forgetDisconnectSlot()
+{
+ disconnect( d, SIGNAL( disconnected() ), d->disconnectReceiver, d->disconnectSlot );
+ d->disconnectReceiver = 0;
+ d->disconnectSlot = 0;
+}
+
+bool ConnectionManager::isDisconnectSlotRegistered() const
+{
+ return ( d->disconnectSlot != 0 );
+}
+
+#include "connectionmanager.moc"
+
Index: networkstatus/connectionmanager.h
===================================================================
--- /dev/null
+++ networkstatus/connectionmanager.h
@@ -0,0 +1,167 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KDE_CONNECTION_MANAGER_H
+#define KDE_CONNECTION_MANAGER_H
+
+#include <dcopobject.h>
+#include <kdemacros.h>
+
+#include <networkstatuscommon.h>
+
+class ConnectionManagerPrivate;
+
+class KDE_EXPORT ConnectionManager : public QObject, virtual public DCOPObject
+{
+Q_OBJECT
+K_DCOP
+k_dcop:
+ void slotStatusChanged( int status );
+public:
+ /**
+ * This defines application policy in response to networking connect/disconnect events
+ * Manual - the app only disconnects when the user does so
+ * OnNextChange - the app should connect or disconnect the next time the network changes state, thereafter
+ * Manual
+ * Managed - the app should disconnect when the ConnectionManager thinks the system is
+ * offline
+ */
+ enum ConnectionPolicy { Manual, OnNextChange, Managed };
+ /**
+ * Set a policy to manage the application's connect behaviour
+ */
+ void setConnectPolicy( ConnectionPolicy );
+ /**
+ * Retrieve a policy managing the application's connect behaviour
+ */
+ ConnectionPolicy connectPolicy() const;
+
+ /**
+ * Set a policy to manage the application's disconnect behaviour
+ */
+ void setDisconnectPolicy( ConnectionPolicy );
+
+ /**
+ * Retrieve a policy managing the application's disconnect behaviour
+ */
+ ConnectionPolicy disconnectPolicy() const;
+
+ /*
+ * We'll get logic of the form
+ * onStatusChange() {
+ * if ( ConnectionManager::self()->policy( ConnectionManager::ConnectBehaviour ) == ConnectionManager::OnNextChange ||
+ * ConnectionManager::self()->policy( ConnectionManager::ConnectBehaviour ) == ConnectionManager::Managed )
+ * {
+ * // do connect
+ *
+ * // reset the policy
+ * if ( ConnectionManager::self()->policy( ConnectionManager::ConnectBehaviour ) == ConnectionManager::OnNextChange )
+ * ConnectionManager::self()->setPolicy( ConnectionManager::ConnectionManager,
+ * ConnectionManager::Manual );
+ * }
+ *
+ * Do we just use the CM for policy storage, or do we try to factor the logic to implement the
+ * policy into the CM too?
+ *
+ * could signal doConnect(), then reset the policy
+ * or could register a connect slot
+ * registerConnectMethod( QObject * receiver, const char * member );
+ * unregisterConnectMethod();
+ * etc.
+ *
+ * The problem with automatically controlled behaviour, where policy may change as a result of a
+ * connect, is that if it is also manually altered, the CM needs to be updated. But the CM needs to
+ * be updated in any case.
+ * CM need
+ */
+ /**
+ * Lazy-method to set Manual on both policies
+ */
+ void setManualConnectionPolicies();
+ /**
+ * Lazy-method to set Managed on both policies
+ */
+ void setManagedConnectionPolicies();
+
+ /**
+ * Record a slot to call on a given receiving QObject when
+ * 1) the network connection is online,
+ * 2) the policy mandates that the app connect
+ *
+ * Only one slot may be registered at any one time. If a second slot is
+ * registered, the first slot is forgotten
+ * @param receiver the QObject where the slot is located
+ * @param member the slot to call. Set up member using the SLOT() macro.
+ */
+ void registerConnectSlot( QObject * receiver, const char * member );
+
+ /**
+ * Forget any connect slot previously registered
+ */
+ void forgetConnectSlot();
+
+ /**
+ * Has any slot been registered to be called on connect?
+ */
+ bool isConnectSlotRegistered() const;
+
+ /**
+ * Record a slot to call on a given receiving QObject when
+ * 1) the network connection goes offline (in any way ),
+ * 2) the policy mandates that the app disconnect
+ *
+ * Only one slot may be registered at any one time. If a second slot is
+ * registered, the first slot is forgotten
+ * @param receiver the QObject where the slot is located
+ * @param member the slot to call. Set up member using the SLOT() macro.
+ */
+ void registerDisconnectSlot( QObject * receiver, const char * member );
+
+ /**
+ * Forget any disconnect slot previously registered
+ */
+ void forgetDisconnectSlot();
+
+ /**
+ * Has any slot been registered to be called on disconnect?
+ */
+ bool isDisconnectSlotRegistered() const;
+
+ /// existing API
+
+ static ConnectionManager* self();
+ virtual ~ConnectionManager();
+ NetworkStatus::Status status();
+signals:
+ // signal that the network for a hostname is up/down
+ void statusChanged( NetworkStatus::Status status );
+private:
+ // sets up internal state
+ void initialise();
+ // reread the desktop status from the daemon and update internal state
+ ConnectionManager( QObject *parent, const char * name );
+ ConnectionManagerPrivate * d;
+ static ConnectionManager * s_self;
+};
+
+#endif
+
Index: networkstatus/connectionmanager_p.cpp
===================================================================
--- /dev/null
+++ networkstatus/connectionmanager_p.cpp
@@ -0,0 +1,13 @@
+#include "connectionmanager_p.h"
+
+ConnectionManagerPrivate::ConnectionManagerPrivate(QObject * parent, const char * name ) : QObject( parent, name ), service( 0 ), connectPolicy( ConnectionManager::Managed ),
+ disconnectPolicy( ConnectionManager::Managed ), connectReceiver( 0 ), connectSlot( 0 ),
+ disconnectReceiver( 0 ), disconnectSlot( 0 )
+{
+}
+
+ConnectionManagerPrivate::~ConnectionManagerPrivate()
+{
+}
+
+#include "connectionmanager_p.moc"
Index: networkstatus/connectionmanager_p.h
===================================================================
--- /dev/null
+++ networkstatus/connectionmanager_p.h
@@ -0,0 +1,55 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef CONNECTIONMANAGERPRIVATE_H
+#define CONNECTIONMANAGERPRIVATE_H
+
+#include <qobject.h>
+
+#include "connectionmanager.h"
+#include "networkstatuscommon.h"
+#include "networkstatusiface_stub.h"
+
+
+// ConnectionManager's private parts
+class ConnectionManagerPrivate : public QObject
+{
+Q_OBJECT
+ friend class ConnectionManager;
+public:
+ ConnectionManagerPrivate( QObject * parent = 0, const char * name = 0);
+ ~ConnectionManagerPrivate();
+ // this holds the currently active state
+ NetworkStatus::Status status;
+ NetworkStatusIface_stub * service;
+ ConnectionManager::ConnectionPolicy connectPolicy;
+ ConnectionManager::ConnectionPolicy disconnectPolicy;
+ QObject * connectReceiver;
+ const char * connectSlot;
+ QObject * disconnectReceiver;
+ const char * disconnectSlot;
+signals:
+ void connected();
+ void disconnected();
+};
+
+#endif
Index: networkstatus/Makefile.am
===================================================================
--- /dev/null
+++ networkstatus/Makefile.am
@@ -0,0 +1,45 @@
+#SUBDIRS = networkstatustray
+
+METASOURCES = AUTO
+
+INCLUDES = -I$(top_srcdir)/kded -I$(top_srcdir) $(all_includes)
+
+kde_module_LTLIBRARIES = kded_networkstatus.la
+
+kded_networkstatus_la_SOURCES = networkstatus.cpp networkstatus.skel \
+ network.cpp
+kded_networkstatus_la_LIBADD = $(LIB_KDECORE) $(LIB_KIO) ./libnetworkstatus.la
+kded_networkstatus_la_LDFLAGS = $(all_libraries) -module -avoid-version
+
+servicesdir = $(kde_servicesdir)/kded
+
+services_DATA = networkstatus.desktop
+
+lib_LTLIBRARIES = libnetworkstatus.la libconnectionmanager.la
+
+libnetworkstatus_la_LIBADD = $(LIB_KDECORE)
+libnetworkstatus_la_LDFLAGS = $(all_libraries)
+libnetworkstatus_la_SOURCES = networkstatuscommon.cpp
+
+libconnectionmanager_la_LIBADD = $(LIB_KDECORE) libnetworkstatus.la
+libconnectionmanager_la_LDFLAGS = $(all_libraries)
+libconnectionmanager_la_SOURCES = connectionmanager.cpp connectionmanager_p.cpp networkstatusindicator.cpp connectionmanager.skel networkstatusiface.stub
+
+noinst_PROGRAMS = networkstatustestservice networkstatustestclient managedconnectiontestclient
+
+networkstatustestservice_LDFLAGS = $(all_libraries)
+networkstatustestservice_LDADD = $(LIB_KFILE) libnetworkstatus.la
+networkstatustestservice_SOURCES = testservice.cpp testserviceview.ui networkstatusiface.stub
+
+networkstatustestclient_LDFLAGS = $(all_libraries)
+networkstatustestclient_LDADD = $(LIB_KFILE) libnetworkstatus.la libconnectionmanager.la
+networkstatustestclient_SOURCES = testclient.cpp testclientview.ui
+
+managedconnectiontestclient_LDFLAGS = $(all_libraries)
+managedconnectiontestclient_LDADD = $(LIB_KFILE) libnetworkstatus.la libconnectionmanager.la
+managedconnectiontestclient_SOURCES = testclient2.cpp testclientview.ui
+
+noinst_HEADERS = network.h testservice.h testclient.h
+
+include_HEADERS = networkstatuscommon.h connectionmanager.h networkstatusindicator.h \
+ networkstatusiface.h
Index: networkstatus/network.cpp
===================================================================
--- /dev/null
+++ networkstatus/network.cpp
@@ -0,0 +1,62 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <kdebug.h>
+
+#include "network.h"
+
+Network::Network( NetworkStatus::Properties properties )
+ : m_name( properties.name ), m_status( properties.status ), m_service( properties.service )
+{
+}
+
+void Network::setStatus( NetworkStatus::Status status )
+{
+ m_status = status;
+}
+
+NetworkStatus::Status Network::status()
+{
+ return m_status;
+}
+
+void Network::setName( const QString& name )
+{
+ m_name = name;
+}
+
+QString Network::name()
+{
+ return m_name;
+}
+
+QString Network::service()
+{
+ return m_service;
+}
+
+void Network::setService( const QString& service )
+{
+ m_service = service;
+}
+
+// vim: sw=4 ts=4
Index: networkstatus/network.h
===================================================================
--- /dev/null
+++ networkstatus/network.h
@@ -0,0 +1,60 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef NETWORKSTATUS_NETWORK_H
+#define NETWORKSTATUS_NETWORK_H
+
+#include "networkstatuscommon.h"
+
+class Network
+{
+public:
+ Network( const QString name );
+ Network( NetworkStatus::Properties properties );
+ /**
+ * Update the status of this network
+ */
+ void setStatus( NetworkStatus::Status status );
+ /**
+ * The connection status of this network
+ */
+ NetworkStatus::Status status();
+ /**
+ * The name of this network
+ */
+ QString name();
+ void setName( const QString& name );
+ /**
+ * Returns the service owning this network
+ */
+ QString service();
+ void setService( const QString& service );
+
+private:
+ Network( const Network & );
+ QString m_name;
+ NetworkStatus::Status m_status;
+ QString m_service;
+};
+
+#endif
+// vim: sw=4 ts=4
Index: networkstatus/networkstatuscommon.cpp
===================================================================
--- /dev/null
+++ networkstatus/networkstatuscommon.cpp
@@ -0,0 +1,76 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include "networkstatuscommon.h"
+
+QDataStream & operator<< ( QDataStream & s, const NetworkStatus::Properties p )
+{
+ s << p.name;
+ s << (int)p.status;
+ s << p.service;
+ return s;
+}
+
+QDataStream & operator>> ( QDataStream & s, NetworkStatus::Properties &p )
+{
+ int status;
+ s >> p.name;
+ s >> status;
+ p.status = (NetworkStatus::Status)status;
+ s >> p.service;
+ return s;
+}
+
+namespace NetworkStatus
+{
+ QString toString( NetworkStatus::Status st )
+ {
+ QString str;
+ switch ( st ) {
+ case NetworkStatus::NoNetworks:
+ str = "NoNetworks";
+ break;
+ case NetworkStatus::Unreachable:
+ str = "Unreachable";
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ str = "OfflineDisconnected";
+ break;
+ case NetworkStatus::OfflineFailed:
+ str = "OfflineFailed";
+ break;
+ case NetworkStatus::ShuttingDown:
+ str = "ShuttingDown";
+ break;
+ case NetworkStatus::Offline:
+ str = "Offline";
+ break;
+ case NetworkStatus::Establishing:
+ str = "Establishing";
+ break;
+ case NetworkStatus::Online:
+ str = "Online";
+ break;
+ }
+ return str;
+ }
+} // namespace NetworkStatus
Index: networkstatus/networkstatuscommon.h
===================================================================
--- /dev/null
+++ networkstatus/networkstatuscommon.h
@@ -0,0 +1,52 @@
+/* This file is part of kdepim
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef NETWORKSTATUS_COMMON_H
+#define NETWORKSTATUS_COMMON_H
+
+#include <qstringlist.h>
+
+namespace NetworkStatus
+{
+ enum Status { NoNetworks = 1, Unreachable, OfflineDisconnected, OfflineFailed, ShuttingDown, Offline, Establishing, Online };
+ enum RequestResult { RequestAccepted = 1, Connected, UserRefused, Unavailable };
+ enum UnusedDemandPolicy { All, User, None, Permanent };
+
+ // BINARY COMPATIBILITY ALERT BEGIN !!!!
+ struct Properties
+ {
+ QString name;
+ Status status;
+ UnusedDemandPolicy unused1;
+ QCString service;
+ bool unused3;
+ QStringList unused4;
+ };
+ // BINARY COMPATIBILITY ALERT END !!!!
+
+ QString toString( Status st );
+}
+
+QDataStream & operator>> ( QDataStream & s, NetworkStatus::Properties &p );
+QDataStream & operator<< ( QDataStream & s, const NetworkStatus::Properties p );
+
+#endif
Index: networkstatus/networkstatus.cpp
===================================================================
--- /dev/null
+++ networkstatus/networkstatus.cpp
@@ -0,0 +1,163 @@
+/* This file is part of kdepim
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include "networkstatus.h"
+
+#include <qmap.h>
+
+#include <dcopclient.h>
+#include <kapplication.h>
+#include <kdebug.h>
+
+#include "network.h"
+#include <kdemacros.h>
+
+extern "C" {
+ KDE_EXPORT KDEDModule* create_networkstatus( const QCString& obj )
+ {
+ return new NetworkStatusModule( obj );
+ }
+}
+
+// INTERNALLY USED STRUCTS AND TYPEDEFS
+
+typedef QMap< QString, Network * > NetworkMap;
+
+class NetworkStatusModule::Private
+{
+public:
+ NetworkMap networks;
+ NetworkStatus::Status status;
+};
+
+// CTORS/DTORS
+
+NetworkStatusModule::NetworkStatusModule( const QCString & obj ) : KDEDModule( obj ), d( new Private )
+{
+ d->status = NetworkStatus::NoNetworks;
+ connect( kapp->dcopClient(), SIGNAL( applicationRemoved( const QCString& ) ) , this, SLOT( unregisteredFromDCOP( const QCString& ) ) );
+ // connect( kapp->dcopClient(), SIGNAL( applicationRegistered( const QCString& ) ) , this, SLOT( registeredToDCOP( const QCString& ) ) );
+}
+
+NetworkStatusModule::~NetworkStatusModule()
+{
+ NetworkMap::ConstIterator it;
+ const NetworkMap::ConstIterator end = d->networks.end();
+
+ for ( it = d->networks.begin(); it != end; ++it ) {
+ delete ( *it );
+ }
+
+ delete d;
+}
+
+// CLIENT INTERFACE
+
+QStringList NetworkStatusModule::networks()
+{
+ kdDebug() << k_funcinfo << " contains " << d->networks.count() << " networks" << endl;
+ return d->networks.keys();
+}
+
+int NetworkStatusModule::status()
+{
+ kdDebug() << k_funcinfo << " status: " << (int)d->status << endl;
+ return (int)d->status;
+}
+
+//protected:
+
+void NetworkStatusModule::updateStatus()
+{
+ NetworkStatus::Status bestStatus = NetworkStatus::NoNetworks;
+ const NetworkStatus::Status oldStatus = d->status;
+
+ NetworkMap::ConstIterator it;
+ const NetworkMap::ConstIterator end = d->networks.end();
+ for ( it = d->networks.begin(); it != end; ++it ) {
+ if ( ( *it )->status() > bestStatus )
+ bestStatus = ( *it )->status();
+ }
+ d->status = bestStatus;
+
+ if ( oldStatus != d->status ) {
+ statusChange( (int)d->status );
+ }
+}
+
+void NetworkStatusModule::unregisteredFromDCOP( const QCString & appId )
+{
+ // unregister and delete any networks owned by a service that has just unregistered
+ NetworkMap::Iterator it = d->networks.begin();
+ const NetworkMap::Iterator end = d->networks.end();
+ while (it != d->networks.end())
+ {
+ if ( ( *it )->service() == QString( appId ) )
+ {
+ NetworkMap::Iterator toRemove = it++;
+ delete *toRemove;
+ d->networks.remove( toRemove );
+ updateStatus();
+ continue;
+ }
+ ++it;
+ }
+}
+
+// SERVICE INTERFACE //
+void NetworkStatusModule::setNetworkStatus( const QString & networkName, int st )
+{
+ kdDebug() << k_funcinfo << networkName << ", " << st << endl;
+ NetworkStatus::Status changedStatus = (NetworkStatus::Status)st;
+ Network * net = 0;
+ NetworkMap::Iterator it = d->networks.find( networkName );
+ if ( it != d->networks.end() ) {
+ net = (*it);
+ net->setStatus( changedStatus );
+ updateStatus();
+ }
+ else
+ kdDebug() << " No network named '" << networkName << "' found." << endl;
+}
+
+void NetworkStatusModule::registerNetwork( const NetworkStatus::Properties properties )
+{
+ kdDebug() << k_funcinfo << properties.name << ", with status " << properties.status << endl;
+
+ d->networks.insert( properties.name, new Network( properties ) );
+ updateStatus();
+}
+
+void NetworkStatusModule::unregisterNetwork( const QString & networkName )
+{
+ kdDebug() << k_funcinfo << networkName << endl;
+
+ NetworkMap::Iterator it = d->networks.find( networkName );
+ if ( it != d->networks.end() ) {
+ delete *it;
+ d->networks.remove( it );
+ }
+ updateStatus();
+}
+
+#include "networkstatus.moc"
+// vim: set noet sw=4 ts=4:
Index: networkstatus/networkstatus.desktop
===================================================================
--- /dev/null
+++ networkstatus/networkstatus.desktop
@@ -0,0 +1,98 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Network Status Daemon
+Name[af]=Netwerk status bediener
+Name[ar]=مراقب القرص و التنفيذ لحالة الشبكة
+Name[bg]=Демон за състояние на мрежата
+Name[ca]=Dimoni de l'estat de la xarxa
+Name[cs]=Démon stavu sítě
+Name[da]=Netværkstatusdæmon
+Name[de]=Überwachung des Netzwerkstatus
+Name[el]=Δαίμονας κατάστασης δικτύου
+Name[es]=Daemon de estado de la red
+Name[et]=Võrguoleku deemon
+Name[eu]=Sarearen egoera deabrua
+Name[fa]=شبح وضعیت شبکه
+Name[fi]=Verkkotilan tarkkailija
+Name[fr]=Suivi de l'état du réseau
+Name[fy]=Netwurktastândaemon
+Name[gl]=Daemon do Estado da Rede
+Name[hu]=Hálózati állapotjelző szolgáltatás
+Name[is]=Netstöðupúki
+Name[it]=Demone dello stato della rete
+Name[ja]=ネットワークステータスデーモン
+Name[kk]=Желі күйінің қызметі
+Name[km]=ដេមិន​ស្ថានភាព​បណ្ដាញ
+Name[lt]=Tinklo statuso tarnyba
+Name[mk]=Даемон за мрежен статус
+Name[ms]=Daemon Berstatus Rangkaian
+Name[nb]=Statusnisse for nettverket
+Name[nds]=Nettwarkstatus-Dämoon
+Name[ne]=सञ्जाल स्थिति डेइमन
+Name[nl]=Netwerkstatusdaemon
+Name[nn]=Statusnisse for nettverket
+Name[pl]=Usługa stanu sieci
+Name[pt]=Servidor de Estado de Rede
+Name[pt_BR]=Daemon de Status da Rede
+Name[ru]=Служба состояния сети
+Name[sk]=Daemon stavu siete
+Name[sl]=Demon za omrežno stanje
+Name[sr]=Демон за статус мреже
+Name[sr@Latn]=Demon za status mreže
+Name[sv]=Nätverksstatusdemon
+Name[ta]=வலைப்பின்னல் நிலை டெமான்
+Name[tr]=Ağ Durum İzleyici
+Name[uk]=Демон стану мережі
+Name[zh_CN]=网络状态守护程序
+Name[zh_TW]=網路狀態守護程式
+Comment=Tracks status of network interfaces and provides notification to applications using the network.
+Comment[af]=Hou tred van die status van netwerk intervlakke en verskaf kennisgewings na programme wat die netwerk gebruik.
+Comment[bg]=Следене на състоянието на мрежата и предаване на информацията на програмите, които имат нужда
+Comment[ca]=Controla l'estat de les interfícies de xarxa i proporciona notificacions a les aplicacions que usen la xarxa.
+Comment[cs]=Zjiš'tuje stav síťových rozhraní a upozorňuje v případě přístupu aplikací k síti.
+Comment[da]=Sporer status af netværksgrænseflade og sørger for meddelelser til programmer der bruger netværket.
+Comment[de]=Überprüft den Netzwerk-Status und benachrichtigt anfragende Anwendungen
+Comment[el]=Παρακολουθεί την κατάσταση του δικτύου και παρέχει ειδοποιήσεις σε εφαρμογές που χρησιμοποιούν το δίκτυο.
+Comment[es]=Sigue la pista de las interfaces de red y proporciona notificaciones a las aplicaciones que están usando la red.
+Comment[et]=Jälgib võrguliideste olekut ja annab sellest võrgu vahendusel rakendustele teada.
+Comment[eu]=Sare interfazeen egoera jarraitzen du eta sarea darabilten aplikazioei jakinarazten die.
+Comment[fa]=وضعیت واسطهای شبکه را شیار داده و با استفاده از شبکه، برای کاربردها اخطار فراهم می‌کند.
+Comment[fi]=Tarkkailee verkkoliitäntöjen tilaa ja varoittaa verkkoa käyttäviä sovelluksia.
+Comment[fr]=Surveille l'état des interfaces réseaux et fournit des notifications aux applications qui utilisent le réseau
+Comment[fy]=Hâldt de tastân by fan de Netwurkynterfaces en hâldt dêr de tapassings fan op de hichte.
+Comment[gl]=Monitoriza o estado das interfaces de rede e fornece notificacións ás aplicacións que usen a rede.
+Comment[hu]=Figyeli a hálózati csatolók állapotát és értesítési lehetőséget biztosít hálózati alkalmazások számára.
+Comment[is]=Fylgist með stöðu netkorta og sendir tilkynningar til forrita sem nota netið.
+Comment[it]=Controlla lo stato delle interfacce di rete e fornisce notifiche alle applicazioni che usano al rete.
+Comment[ja]=ネットワークインターフェースの状態を追跡し、ネットワークを用いるアプリケーションに通知します
+Comment[kk]=Желі интерфейстерінің күйін бақылап, желіні қолданатын бағдарламаларын құлақтандыру қызметі.
+Comment[km]=តាមដាន​ស្ថានភាព​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ ព្រម​ទាំង​ផ្ដល់​នូវ​ការ​ជូនដំណឹង​ទៅ​កម្មវិធី ដែល​ប្រើ​បណ្ដាញ ។
+Comment[lt]=Seka tinklo sąsajų būseną ir informuoja apie jas programas, naudojančias tinklą
+Comment[mk]=Го следи статусот на мрежните интерфејси и дава известувања на апликациите што ја користат мрежата.
+Comment[ms]=Menjejak status antara muka rangkaian dan memberitahu aplikasi yang menggunakan rangkaian tersebut.
+Comment[nb]=Overvåker status for nettverksgrensesnitt og varsler programmer som bruker nettverket.
+Comment[nds]=Överwacht den Tostand vun Nettwark-Koppelsteden un sendt Narichten na Programmen, de dat Nettwark bruukt.
+Comment[ne]=सञ्जाल इन्टरफेसको स्थिति ट्र्याक गर्दछ र सञ्जाल प्रयोग गरेर अनुप्रयोगमा जानकारी उपलब्ध गराउछ ।
+Comment[nl]=Houdt de status bij van de netwerkinterfaces en houdt daar de toepassingen van op de hoogte.
+Comment[nn]=Overvakar status for nettverksgrensesnitt og varslar program som brukar nettverket.
+Comment[pl]=Śledzi stan interfejsów sieciowych i powiadamia programy używające sieci.
+Comment[pt]=Vigia o estado das interfaces de rede e avisa as aplicações que utilizam a rede.
+Comment[pt_BR]=Controla o status das interfaces de rede e fornece notificações para aplicativos utilizando a rede.
+Comment[ru]=Служба отслеживания состояния сетевых интерфейсов и обращения приложений к сети.
+Comment[sk]=Sleduje stav sieťových rozhraní a poskytuje upozornenia aplikáciám používajúcim sieť.
+Comment[sl]=Sledi stanju omrežnim vmesnikom in omogoča obvestila programom, ki uporabljajo omrežje
+Comment[sr]=Прати статус мрежних интерфејса и пружа обавештења програмима који користе мрежу.
+Comment[sr@Latn]=Prati status mrežnih interfejsa i pruža obaveštenja programima koji koriste mrežu.
+Comment[sv]=Bevakar status för nätverksgränssnitt och tillhandahåller underrättelser till program som använder nätverket.
+Comment[ta]=வலைப்பின்னலைப் பயன்படுத்தி வலைப்பின்னல் இடைமுகங்களின் நிலையை கண்காணிக்கிறது மற்றும் பயன்பாடுகளுக்கு அறிவிப்பை வழங்குகிறது.
+Comment[uk]=Слідкує за станом інтерфейсів мережі і сповіщає програми, які користуються мережею.
+Comment[zh_CN]=跟踪网卡的状态并为应用程序提供使用网络的通知。
+Comment[zh_TW]=追蹤網路介面的狀態,並提供使用網路的應用程式的通知。
+Type=Service
+ServiceTypes=KDEDModule
+X-KDE-ModuleType=Library
+X-KDE-Library=networkstatus
+X-KDE-FactoryName=networkstatus
+X-KDE-Kded-autoload=true
+X-KDE-Kded-load-on-demand=true
+
Index: networkstatus/networkstatus.h
===================================================================
--- /dev/null
+++ networkstatus/networkstatus.h
@@ -0,0 +1,66 @@
+/* This file is part of kdepim
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KDED_NETWORKSTATUS_H
+#define KDED_NETWORKSTATUS_H
+
+#include <kdedmodule.h>
+
+#include "networkstatuscommon.h"
+#include "network.h"
+
+class NetworkStatusModule : virtual public KDEDModule
+{
+Q_OBJECT
+K_DCOP
+public:
+ NetworkStatusModule( const QCString& obj );
+ ~NetworkStatusModule();
+k_dcop:
+ // Client interface
+ QStringList networks();
+ int status();
+ // Service interface
+ void setNetworkStatus( const QString & networkName, int status );
+ void registerNetwork( NetworkStatus::Properties properties );
+ void unregisterNetwork( const QString & networkName );
+k_dcop_signals:
+ /**
+ * A status change occurred affecting the overall connectivity
+ * @param status The new status
+ */
+ void statusChange( int status );
+protected slots:
+ //void registeredToDCOP( const QCString& appId );
+ void unregisteredFromDCOP( const QCString& appId );
+
+protected:
+ // recalculate cached status
+ void updateStatus();
+
+private:
+ class Private;
+ Private *d;
+};
+
+#endif
+// vim: sw=4 ts=4
Index: networkstatus/networkstatusiface.h
===================================================================
--- /dev/null
+++ networkstatus/networkstatusiface.h
@@ -0,0 +1,50 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KDED_NETWORKSTATUSIFACE_H
+#define KDED_NETWORKSTATUSIFACE_H
+
+#include <dcopobject.h>
+#include <qstringlist.h>
+
+#include "networkstatuscommon.h"
+
+class NetworkStatusIface : virtual public DCOPObject
+{
+K_DCOP
+k_dcop:
+ // Client interface
+ virtual QStringList networks() = 0;
+ virtual int status() = 0;
+ // Service interface
+ virtual void setNetworkStatus( const QString & networkName, int status ) = 0;
+ virtual void registerNetwork( NetworkStatus::Properties properties ) = 0;
+ virtual void unregisterNetwork( const QString & networkName ) = 0 ;
+k_dcop_signals:
+ /**
+ * A status change occurred affecting the overall connectivity
+ * @param status The new status
+ */
+ virtual void statusChange( int status ) = 0;
+};
+#endif
+// vim: sw=4 ts=4
Index: networkstatus/networkstatusindicator.cpp
===================================================================
--- /dev/null
+++ networkstatus/networkstatusindicator.cpp
@@ -0,0 +1,64 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <qlabel.h>
+#include <qtooltip.h>
+#include <kiconloader.h>
+#include <klocale.h>
+
+#include "connectionmanager.h"
+
+#include "networkstatusindicator.h"
+
+StatusBarNetworkStatusIndicator::StatusBarNetworkStatusIndicator(
+ QWidget * parent, const char * name ) : QHBox( parent, name )/*, d( new StatusBarNetworkStatusIndicatorPrivate )*/
+{
+ setMargin( 2 );
+ setSpacing( 1 );
+ QLabel * label = new QLabel( this, "offlinemodelabel" );
+ label->setPixmap( SmallIcon("connect_no") );
+ QToolTip::add( label, i18n( "The desktop is offline" ) );
+
+ connect( ConnectionManager::self(), SIGNAL( statusChanged( NetworkStatus::Status ) ),
+ SLOT( networkStatusChanged( NetworkStatus::Status) ) );
+
+}
+
+void StatusBarNetworkStatusIndicator::init()
+{
+ networkStatusChanged( ConnectionManager::self()->status());
+}
+
+StatusBarNetworkStatusIndicator::~StatusBarNetworkStatusIndicator()
+{
+}
+
+void StatusBarNetworkStatusIndicator::networkStatusChanged( NetworkStatus::Status status )
+{
+ if ( status == NetworkStatus::Online || status == NetworkStatus::NoNetworks ) {
+ hide();
+ } else {
+ show();
+ }
+}
+
+#include "networkstatusindicator.moc"
Index: networkstatus/networkstatusindicator.h
===================================================================
--- /dev/null
+++ networkstatus/networkstatusindicator.h
@@ -0,0 +1,42 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KDE_NETWORKSTATUS_INDICATOR_H
+#define KDE_NETWORKSTATUS_INDICATOR_H
+
+#include <qhbox.h>
+#include <kdemacros.h>
+#include <networkstatuscommon.h>
+
+class StatusBarNetworkStatusIndicator : public QHBox
+{
+Q_OBJECT
+public:
+ StatusBarNetworkStatusIndicator( QWidget * parent, const char * name );
+ virtual ~StatusBarNetworkStatusIndicator();
+ void init();
+protected slots:
+ void networkStatusChanged( NetworkStatus::Status status );
+};
+
+#endif
+
Index: networkstatus/networkstatus.kdevelop
===================================================================
--- /dev/null
+++ networkstatus/networkstatus.kdevelop
@@ -0,0 +1,108 @@
+<?xml version = '1.0'?>
+<kdevelop>
+ <general>
+ <author>Will Stephenson</author>
+ <email>wstephenson@suse.de</email>
+ <version>$VERSION$</version>
+ <projectmanagement>KDevKDEAutoProject</projectmanagement>
+ <primarylanguage>C++</primarylanguage>
+ <keywords>
+ <keyword>Qt</keyword>
+ <keyword>KDE</keyword>
+ </keywords>
+ </general>
+ <kdevfileview>
+ <groups>
+ <group pattern="*.cpp;*.cxx;*.h" name="Sources" />
+ <group pattern="*.ui" name="User Interface" />
+ <group pattern="*.png" name="Icons" />
+ <group pattern="*.po;*.ts" name="Translations" />
+ <group pattern="*" name="Others" />
+ <hidenonprojectfiles>false</hidenonprojectfiles>
+ <hidenonlocation>false</hidenonlocation>
+ </groups>
+ <tree>
+ <hidepatterns>*.o,*.lo,CVS</hidepatterns>
+ <hidenonprojectfiles>false</hidenonprojectfiles>
+ </tree>
+ </kdevfileview>
+ <kdevdoctreeview>
+ <ignoretocs>
+ <toc>ada</toc>
+ <toc>ada_bugs_gcc</toc>
+ <toc>bash</toc>
+ <toc>bash_bugs</toc>
+ <toc>clanlib</toc>
+ <toc>fortran_bugs_gcc</toc>
+ <toc>gnome1</toc>
+ <toc>gnustep</toc>
+ <toc>gtk</toc>
+ <toc>gtk_bugs</toc>
+ <toc>haskell</toc>
+ <toc>haskell_bugs_ghc</toc>
+ <toc>java_bugs_gcc</toc>
+ <toc>java_bugs_sun</toc>
+ <toc>opengl</toc>
+ <toc>pascal_bugs_fp</toc>
+ <toc>php</toc>
+ <toc>php_bugs</toc>
+ <toc>perl</toc>
+ <toc>perl_bugs</toc>
+ <toc>python</toc>
+ <toc>python_bugs</toc>
+ <toc>ruby</toc>
+ <toc>ruby_bugs</toc>
+ <toc>sdl</toc>
+ <toc>stl</toc>
+ <toc>sw</toc>
+ <toc>w3c-dom-level2-html</toc>
+ <toc>w3c-svg</toc>
+ <toc>w3c-uaag10</toc>
+ <toc>wxwidgets_bugs</toc>
+ </ignoretocs>
+ <ignoreqt_xml>
+ <toc>qmake User Guide</toc>
+ </ignoreqt_xml>
+ </kdevdoctreeview>
+ <kdevdebugger>
+ <general>
+ <dbgshell>libtool</dbgshell>
+ </general>
+ </kdevdebugger>
+ <kdevfilecreate>
+ <useglobaltypes>
+ <type ext="ui" />
+ <type ext="cpp" />
+ <type ext="h" />
+ </useglobaltypes>
+ </kdevfilecreate>
+ <kdevautoproject>
+ <make>
+ <envvars>
+ <envvar value="1" name="WANT_AUTOCONF_2_5" />
+ <envvar value="1" name="WANT_AUTOMAKE_1_6" />
+ </envvars>
+ </make>
+ <run>
+ <directoryradio>executable</directoryradio>
+ </run>
+ <general>
+ <activetarget>kded_networkstatus.la</activetarget>
+ </general>
+ </kdevautoproject>
+ <kdevcppsupport>
+ <references/>
+ <codecompletion>
+ <includeGlobalFunctions>true</includeGlobalFunctions>
+ <includeTypes>true</includeTypes>
+ <includeEnums>true</includeEnums>
+ <includeTypedefs>false</includeTypedefs>
+ <automaticCodeCompletion>true</automaticCodeCompletion>
+ <automaticArgumentsHint>true</automaticArgumentsHint>
+ <automaticHeaderCompletion>true</automaticHeaderCompletion>
+ <codeCompletionDelay>250</codeCompletionDelay>
+ <argumentsHintDelay>400</argumentsHintDelay>
+ <headerCompletionDelay>250</headerCompletionDelay>
+ </codecompletion>
+ </kdevcppsupport>
+</kdevelop>
Index: networkstatus/README.statetransition
===================================================================
--- /dev/null
+++ networkstatus/README.statetransition
@@ -0,0 +1,29 @@
+This table defines the actions to be taken on state transition.
+
+TODO: potentially add extra states OnlineReading and OnlineWriting
+
+ NEW
+ |Offline | Online |
+---+---+----------------+---------------+
+ | | |N|set online |
+ | | |L|reload |
+ | O | |C|resources |
+ | F | +---------------+
+ | F | |L|set online |
+O | | |C|reload res. |
+L | | | |write res. |
+D +---+----------------+---------------+
+ | |N|set offline | |
+ | |C| | |
+ | | | | |
+ | O +---------------+| |
+ | N |U|set offline | |
+ | |W|write locally | |
+ | |C|(subject to | |
+ | | | save policy)| |
+---+---+----------------+---------------+
+LC = Local changes exist
+NLC = No local changes exist
+UWC = Unsaved changes exist
+NC = no changes exist
+
Index: networkstatus/.svn/dir-prop-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/dir-prop-base
@@ -0,0 +1,11 @@
+K 10
+svn:ignore
+V 83
+Makefile
+Makefile.in
+Makefile.calls.in
+Makefile.rules.in
+*_skel.cpp
+*.kidl
+Doxyfile
+END
Index: networkstatus/.svn/entries
===================================================================
--- /dev/null
+++ networkstatus/.svn/entries
@@ -0,0 +1,342 @@
+8
+
+dir
+712059
+svn+ssh://mueller@svn.kde.org/home/kde/branches/work/~wstephens/kdelibs/networkstatus
+svn+ssh://mueller@svn.kde.org/home/kde
+
+
+
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+svn:special svn:externals svn:needs-lock
+
+
+
+
+
+
+
+
+
+
+
+283d02a7-25f6-0310-bc7c-ecb5cbfe19da
+
+network.h
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+034300313451d5b6a95bff1022861227
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+networkstatusindicator.h
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+bbc7c6ea3b8da983d477d53556e39dd0
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+connectionmanager.h
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+7992e623b84fd99f9ff17c613a7269a3
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+testservice.cpp
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+527dc95a7ae39d565bd29d5fe59de31a
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+testclient2.cpp
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+c426585cf5d9e3f4b06adcaff0a3ef32
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+networkstatus.h
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+8ca1d871b31d5840e2e3d24da4693f1d
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+testclientview.ui
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+8f63eb3db978c53143417ad33d45076b
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+testservice.h
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+2b5693b2e174ebf96e460a52cfcf9739
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+testclient2.h
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+3b9f645e56a92014b7a6547c5bc88527
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+README.statetransition
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+0091b6bdce4abe1e1260bf2a4cce984f
+2005-02-11T15:15:30.000000Z
+388364
+wstephens
+has-props
+
+networkstatuscommon.cpp
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+1516e99224ce850fb6d134346fd9d074
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+connectionmanager_p.cpp
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+07e9643c6cdb39d28abc9c8992bcab23
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+networkstatuscommon.h
+file
+712062
+
+
+
+2007-09-13T13:10:21.000000Z
+a4f22eecd7d0a0fdcc78c9c31d5f14fd
+2007-09-13T13:12:05.866586Z
+712062
+mueller
+has-props
+
+testclient.cpp
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+d932143bab5c7985bc48e64e2bf0c227
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+connectionmanager_p.h
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+34ed7e34d50ae4b36342a6cc250ad386
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+testclient.h
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+67d3671e5fbeb51a333550f52ec34294
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+networkstatus.kdevelop
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+64e6cd906f82dad6a3c70a8dd7e69c3c
+2005-01-24T08:48:57.000000Z
+381869
+wstephens
+has-props
+
+networkstatus.desktop
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+1bc32c39d8c6ed9c63e6fdc1b3d34aba
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+testserviceview.ui
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+f8883c2425f16054c8cfd99a6c288000
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+Makefile.am
+file
+712061
+
+
+
+2007-09-13T13:10:11.000000Z
+70d1b224f8edc970fbdf2f4af63282f0
+2007-09-13T13:11:26.289844Z
+712061
+mueller
+has-props
+
+network.cpp
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+1f481f54f0161b8a65d00753d6397904
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+networkstatusindicator.cpp
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+243176eca79394c0e2a763b1e56a0690
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+networkstatusiface.h
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+285a14008068eb0cd26e3af2bb8fbb92
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+
+connectionmanager.cpp
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+922d360b2e43b6b35f56c0d97ab1afa9
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
+networkstatus.cpp
+file
+
+
+
+
+2007-09-13T13:09:10.000000Z
+433313b5f03259de305b6d722c0251e5
+2007-08-06T09:06:39.201606Z
+696919
+wstephens
+has-props
+
Index: networkstatus/.svn/format
===================================================================
--- /dev/null
+++ networkstatus/.svn/format
@@ -0,0 +1 @@
+8
Index: networkstatus/.svn/prop-base/connectionmanager.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/connectionmanager.cpp.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 13
+text/x-c++src
+END
Index: networkstatus/.svn/prop-base/connectionmanager.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/connectionmanager.h.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 11
+text/x-chdr
+END
Index: networkstatus/.svn/prop-base/Makefile.am.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/Makefile.am.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 9
+text/x-am
+END
Index: networkstatus/.svn/prop-base/network.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/network.cpp.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 13
+text/x-c++src
+END
Index: networkstatus/.svn/prop-base/network.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/network.h.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 11
+text/x-chdr
+END
Index: networkstatus/.svn/prop-base/networkstatuscommon.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/networkstatuscommon.cpp.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 13
+text/x-c++src
+END
Index: networkstatus/.svn/prop-base/networkstatuscommon.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/networkstatuscommon.h.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 11
+text/x-chdr
+END
Index: networkstatus/.svn/prop-base/networkstatus.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/networkstatus.cpp.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 13
+text/x-c++src
+END
Index: networkstatus/.svn/prop-base/networkstatus.desktop.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/networkstatus.desktop.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 14
+text/x-desktop
+END
Index: networkstatus/.svn/prop-base/networkstatus.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/networkstatus.h.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 11
+text/x-chdr
+END
Index: networkstatus/.svn/prop-base/networkstatus.kdevelop.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/networkstatus.kdevelop.svn-base
@@ -0,0 +1,5 @@
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+END
Index: networkstatus/.svn/prop-base/README.statetransition.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/README.statetransition.svn-base
@@ -0,0 +1,5 @@
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+END
Index: networkstatus/.svn/prop-base/testservice.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/testservice.cpp.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 13
+text/x-c++src
+END
Index: networkstatus/.svn/prop-base/testservice.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/prop-base/testservice.h.svn-base
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+Author Date Id Revision
+K 13
+svn:mime-type
+V 11
+text/x-chdr
+END
Index: networkstatus/.svn/text-base/connectionmanager.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/connectionmanager.cpp.svn-base
@@ -0,0 +1,171 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <kapplication.h>
+#include <kdebug.h>
+#include <kstaticdeleter.h>
+
+#include "connectionmanager.h"
+#include "connectionmanager_p.h"
+
+// Connection manager itself
+ConnectionManager::ConnectionManager( QObject * parent, const char * name ) : DCOPObject( "ConnectionManager" ), QObject( parent, name ), d( new ConnectionManagerPrivate( this ) )
+{
+ d->service = new NetworkStatusIface_stub( kapp->dcopClient(), "kded", "networkstatus" );
+
+ connectDCOPSignal( "kded", "networkstatus", "statusChange(int)", "slotStatusChanged(int)", false );
+
+ initialise();
+}
+
+ConnectionManager::~ConnectionManager()
+{
+ delete d;
+}
+
+ConnectionManager *ConnectionManager::s_self = 0L;
+
+ConnectionManager *ConnectionManager::self()
+{
+ static KStaticDeleter<ConnectionManager> deleter;
+ if(!s_self)
+ deleter.setObject( s_self, new ConnectionManager( 0, "connection_manager" ) );
+ return s_self;
+}
+
+void ConnectionManager::initialise()
+{
+ // determine initial state and set the state object accordingly.
+ d->status = ( NetworkStatus::Status )d->service->status();
+}
+
+NetworkStatus::Status ConnectionManager::status()
+{
+ return d->status;
+}
+
+void ConnectionManager::slotStatusChanged( int status )
+{
+ d->status = ( NetworkStatus::Status )status;
+ switch ( status ) {
+ case NetworkStatus::NoNetworks:
+ break;
+ case NetworkStatus::Unreachable:
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ case NetworkStatus::OfflineFailed:
+ case NetworkStatus::ShuttingDown:
+ case NetworkStatus::Offline:
+ case NetworkStatus::Establishing:
+ if ( d->disconnectPolicy == Managed ) {
+ emit d->disconnected();
+ } else if ( d->disconnectPolicy == OnNextChange ) {
+ setDisconnectPolicy( Manual );
+ emit d->disconnected();
+ }
+ break;
+ case NetworkStatus::Online:
+ if ( d->disconnectPolicy == Managed ) {
+ emit d->connected();
+ } else if ( d->disconnectPolicy == OnNextChange ) {
+ setConnectPolicy( Manual );
+ emit d->connected();
+ }
+ break;
+ default:
+ kdDebug() << k_funcinfo << "Unrecognised status code!" << endl;
+ }
+ emit statusChanged( d->status );
+}
+
+ConnectionManager::ConnectionPolicy ConnectionManager::connectPolicy() const
+{
+ return d->connectPolicy;
+}
+
+void ConnectionManager::setConnectPolicy( ConnectionManager::ConnectionPolicy policy )
+{
+ d->connectPolicy = policy;
+}
+
+ConnectionManager::ConnectionPolicy ConnectionManager::disconnectPolicy() const
+{
+ return d->disconnectPolicy;
+}
+
+void ConnectionManager::setDisconnectPolicy( ConnectionManager::ConnectionPolicy policy )
+{
+ d->disconnectPolicy = policy;
+}
+
+void ConnectionManager::setManualConnectionPolicies()
+{
+ d->connectPolicy = ConnectionManager::Manual;
+ d->disconnectPolicy = ConnectionManager::Manual;
+}
+
+void ConnectionManager::setManagedConnectionPolicies()
+{
+ d->connectPolicy = ConnectionManager::Managed;
+ d->disconnectPolicy = ConnectionManager::Managed;
+}
+
+void ConnectionManager::registerConnectSlot( QObject * receiver, const char * member )
+{
+ d->connectReceiver = receiver;
+ d->connectSlot = member;
+ connect( d, SIGNAL( connected() ), receiver, member );
+}
+
+void ConnectionManager::forgetConnectSlot()
+{
+ disconnect( d, SIGNAL( connected() ), d->connectReceiver, d->connectSlot );
+ d->connectReceiver = 0;
+ d->connectSlot = 0;
+}
+
+bool ConnectionManager::isConnectSlotRegistered() const
+{
+ return ( d->connectSlot != 0 );
+}
+
+void ConnectionManager::registerDisconnectSlot( QObject * receiver, const char * member )
+{
+ d->disconnectReceiver = receiver;
+ d->disconnectSlot = member;
+ connect( d, SIGNAL( disconnected() ), receiver, member );
+}
+
+void ConnectionManager::forgetDisconnectSlot()
+{
+ disconnect( d, SIGNAL( disconnected() ), d->disconnectReceiver, d->disconnectSlot );
+ d->disconnectReceiver = 0;
+ d->disconnectSlot = 0;
+}
+
+bool ConnectionManager::isDisconnectSlotRegistered() const
+{
+ return ( d->disconnectSlot != 0 );
+}
+
+#include "connectionmanager.moc"
+
Index: networkstatus/.svn/text-base/connectionmanager.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/connectionmanager.h.svn-base
@@ -0,0 +1,167 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KDE_CONNECTION_MANAGER_H
+#define KDE_CONNECTION_MANAGER_H
+
+#include <dcopobject.h>
+#include <kdemacros.h>
+
+#include <networkstatuscommon.h>
+
+class ConnectionManagerPrivate;
+
+class KDE_EXPORT ConnectionManager : public QObject, virtual public DCOPObject
+{
+Q_OBJECT
+K_DCOP
+k_dcop:
+ void slotStatusChanged( int status );
+public:
+ /**
+ * This defines application policy in response to networking connect/disconnect events
+ * Manual - the app only disconnects when the user does so
+ * OnNextChange - the app should connect or disconnect the next time the network changes state, thereafter
+ * Manual
+ * Managed - the app should disconnect when the ConnectionManager thinks the system is
+ * offline
+ */
+ enum ConnectionPolicy { Manual, OnNextChange, Managed };
+ /**
+ * Set a policy to manage the application's connect behaviour
+ */
+ void setConnectPolicy( ConnectionPolicy );
+ /**
+ * Retrieve a policy managing the application's connect behaviour
+ */
+ ConnectionPolicy connectPolicy() const;
+
+ /**
+ * Set a policy to manage the application's disconnect behaviour
+ */
+ void setDisconnectPolicy( ConnectionPolicy );
+
+ /**
+ * Retrieve a policy managing the application's disconnect behaviour
+ */
+ ConnectionPolicy disconnectPolicy() const;
+
+ /*
+ * We'll get logic of the form
+ * onStatusChange() {
+ * if ( ConnectionManager::self()->policy( ConnectionManager::ConnectBehaviour ) == ConnectionManager::OnNextChange ||
+ * ConnectionManager::self()->policy( ConnectionManager::ConnectBehaviour ) == ConnectionManager::Managed )
+ * {
+ * // do connect
+ *
+ * // reset the policy
+ * if ( ConnectionManager::self()->policy( ConnectionManager::ConnectBehaviour ) == ConnectionManager::OnNextChange )
+ * ConnectionManager::self()->setPolicy( ConnectionManager::ConnectionManager,
+ * ConnectionManager::Manual );
+ * }
+ *
+ * Do we just use the CM for policy storage, or do we try to factor the logic to implement the
+ * policy into the CM too?
+ *
+ * could signal doConnect(), then reset the policy
+ * or could register a connect slot
+ * registerConnectMethod( QObject * receiver, const char * member );
+ * unregisterConnectMethod();
+ * etc.
+ *
+ * The problem with automatically controlled behaviour, where policy may change as a result of a
+ * connect, is that if it is also manually altered, the CM needs to be updated. But the CM needs to
+ * be updated in any case.
+ * CM need
+ */
+ /**
+ * Lazy-method to set Manual on both policies
+ */
+ void setManualConnectionPolicies();
+ /**
+ * Lazy-method to set Managed on both policies
+ */
+ void setManagedConnectionPolicies();
+
+ /**
+ * Record a slot to call on a given receiving QObject when
+ * 1) the network connection is online,
+ * 2) the policy mandates that the app connect
+ *
+ * Only one slot may be registered at any one time. If a second slot is
+ * registered, the first slot is forgotten
+ * @param receiver the QObject where the slot is located
+ * @param member the slot to call. Set up member using the SLOT() macro.
+ */
+ void registerConnectSlot( QObject * receiver, const char * member );
+
+ /**
+ * Forget any connect slot previously registered
+ */
+ void forgetConnectSlot();
+
+ /**
+ * Has any slot been registered to be called on connect?
+ */
+ bool isConnectSlotRegistered() const;
+
+ /**
+ * Record a slot to call on a given receiving QObject when
+ * 1) the network connection goes offline (in any way ),
+ * 2) the policy mandates that the app disconnect
+ *
+ * Only one slot may be registered at any one time. If a second slot is
+ * registered, the first slot is forgotten
+ * @param receiver the QObject where the slot is located
+ * @param member the slot to call. Set up member using the SLOT() macro.
+ */
+ void registerDisconnectSlot( QObject * receiver, const char * member );
+
+ /**
+ * Forget any disconnect slot previously registered
+ */
+ void forgetDisconnectSlot();
+
+ /**
+ * Has any slot been registered to be called on disconnect?
+ */
+ bool isDisconnectSlotRegistered() const;
+
+ /// existing API
+
+ static ConnectionManager* self();
+ virtual ~ConnectionManager();
+ NetworkStatus::Status status();
+signals:
+ // signal that the network for a hostname is up/down
+ void statusChanged( NetworkStatus::Status status );
+private:
+ // sets up internal state
+ void initialise();
+ // reread the desktop status from the daemon and update internal state
+ ConnectionManager( QObject *parent, const char * name );
+ ConnectionManagerPrivate * d;
+ static ConnectionManager * s_self;
+};
+
+#endif
+
Index: networkstatus/.svn/text-base/connectionmanager_p.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/connectionmanager_p.cpp.svn-base
@@ -0,0 +1,13 @@
+#include "connectionmanager_p.h"
+
+ConnectionManagerPrivate::ConnectionManagerPrivate(QObject * parent, const char * name ) : QObject( parent, name ), service( 0 ), connectPolicy( ConnectionManager::Managed ),
+ disconnectPolicy( ConnectionManager::Managed ), connectReceiver( 0 ), connectSlot( 0 ),
+ disconnectReceiver( 0 ), disconnectSlot( 0 )
+{
+}
+
+ConnectionManagerPrivate::~ConnectionManagerPrivate()
+{
+}
+
+#include "connectionmanager_p.moc"
Index: networkstatus/.svn/text-base/connectionmanager_p.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/connectionmanager_p.h.svn-base
@@ -0,0 +1,55 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef CONNECTIONMANAGERPRIVATE_H
+#define CONNECTIONMANAGERPRIVATE_H
+
+#include <qobject.h>
+
+#include "connectionmanager.h"
+#include "networkstatuscommon.h"
+#include "networkstatusiface_stub.h"
+
+
+// ConnectionManager's private parts
+class ConnectionManagerPrivate : public QObject
+{
+Q_OBJECT
+ friend class ConnectionManager;
+public:
+ ConnectionManagerPrivate( QObject * parent = 0, const char * name = 0);
+ ~ConnectionManagerPrivate();
+ // this holds the currently active state
+ NetworkStatus::Status status;
+ NetworkStatusIface_stub * service;
+ ConnectionManager::ConnectionPolicy connectPolicy;
+ ConnectionManager::ConnectionPolicy disconnectPolicy;
+ QObject * connectReceiver;
+ const char * connectSlot;
+ QObject * disconnectReceiver;
+ const char * disconnectSlot;
+signals:
+ void connected();
+ void disconnected();
+};
+
+#endif
Index: networkstatus/.svn/text-base/Makefile.am.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/Makefile.am.svn-base
@@ -0,0 +1,45 @@
+#SUBDIRS = networkstatustray
+
+METASOURCES = AUTO
+
+INCLUDES = -I$(top_srcdir)/kded -I$(top_srcdir) $(all_includes)
+
+kde_module_LTLIBRARIES = kded_networkstatus.la
+
+kded_networkstatus_la_SOURCES = networkstatus.cpp networkstatus.skel \
+ network.cpp
+kded_networkstatus_la_LIBADD = $(LIB_KDECORE) $(LIB_KIO) ./libnetworkstatus.la
+kded_networkstatus_la_LDFLAGS = $(all_libraries) -module -avoid-version
+
+servicesdir = $(kde_servicesdir)/kded
+
+services_DATA = networkstatus.desktop
+
+lib_LTLIBRARIES = libnetworkstatus.la libconnectionmanager.la
+
+libnetworkstatus_la_LIBADD = $(LIB_KDECORE)
+libnetworkstatus_la_LDFLAGS = $(all_libraries)
+libnetworkstatus_la_SOURCES = networkstatuscommon.cpp
+
+libconnectionmanager_la_LIBADD = $(LIB_KDECORE) libnetworkstatus.la
+libconnectionmanager_la_LDFLAGS = $(all_libraries)
+libconnectionmanager_la_SOURCES = connectionmanager.cpp connectionmanager_p.cpp networkstatusindicator.cpp connectionmanager.skel networkstatusiface.stub
+
+noinst_PROGRAMS = networkstatustestservice networkstatustestclient managedconnectiontestclient
+
+networkstatustestservice_LDFLAGS = $(all_libraries)
+networkstatustestservice_LDADD = $(LIB_KFILE) libnetworkstatus.la
+networkstatustestservice_SOURCES = testservice.cpp testserviceview.ui networkstatusiface.stub
+
+networkstatustestclient_LDFLAGS = $(all_libraries)
+networkstatustestclient_LDADD = $(LIB_KFILE) libnetworkstatus.la libconnectionmanager.la
+networkstatustestclient_SOURCES = testclient.cpp testclientview.ui
+
+managedconnectiontestclient_LDFLAGS = $(all_libraries)
+managedconnectiontestclient_LDADD = $(LIB_KFILE) libnetworkstatus.la libconnectionmanager.la
+managedconnectiontestclient_SOURCES = testclient2.cpp testclientview.ui
+
+noinst_HEADERS = network.h testservice.h testclient.h
+
+include_HEADERS = networkstatuscommon.h connectionmanager.h networkstatusindicator.h \
+ networkstatusiface.h
Index: networkstatus/.svn/text-base/network.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/network.cpp.svn-base
@@ -0,0 +1,62 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <kdebug.h>
+
+#include "network.h"
+
+Network::Network( NetworkStatus::Properties properties )
+ : m_name( properties.name ), m_status( properties.status ), m_service( properties.service )
+{
+}
+
+void Network::setStatus( NetworkStatus::Status status )
+{
+ m_status = status;
+}
+
+NetworkStatus::Status Network::status()
+{
+ return m_status;
+}
+
+void Network::setName( const QString& name )
+{
+ m_name = name;
+}
+
+QString Network::name()
+{
+ return m_name;
+}
+
+QString Network::service()
+{
+ return m_service;
+}
+
+void Network::setService( const QString& service )
+{
+ m_service = service;
+}
+
+// vim: sw=4 ts=4
Index: networkstatus/.svn/text-base/network.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/network.h.svn-base
@@ -0,0 +1,60 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef NETWORKSTATUS_NETWORK_H
+#define NETWORKSTATUS_NETWORK_H
+
+#include "networkstatuscommon.h"
+
+class Network
+{
+public:
+ Network( const QString name );
+ Network( NetworkStatus::Properties properties );
+ /**
+ * Update the status of this network
+ */
+ void setStatus( NetworkStatus::Status status );
+ /**
+ * The connection status of this network
+ */
+ NetworkStatus::Status status();
+ /**
+ * The name of this network
+ */
+ QString name();
+ void setName( const QString& name );
+ /**
+ * Returns the service owning this network
+ */
+ QString service();
+ void setService( const QString& service );
+
+private:
+ Network( const Network & );
+ QString m_name;
+ NetworkStatus::Status m_status;
+ QString m_service;
+};
+
+#endif
+// vim: sw=4 ts=4
Index: networkstatus/.svn/text-base/networkstatuscommon.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/networkstatuscommon.cpp.svn-base
@@ -0,0 +1,76 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include "networkstatuscommon.h"
+
+QDataStream & operator<< ( QDataStream & s, const NetworkStatus::Properties p )
+{
+ s << p.name;
+ s << (int)p.status;
+ s << p.service;
+ return s;
+}
+
+QDataStream & operator>> ( QDataStream & s, NetworkStatus::Properties &p )
+{
+ int status;
+ s >> p.name;
+ s >> status;
+ p.status = (NetworkStatus::Status)status;
+ s >> p.service;
+ return s;
+}
+
+namespace NetworkStatus
+{
+ QString toString( NetworkStatus::Status st )
+ {
+ QString str;
+ switch ( st ) {
+ case NetworkStatus::NoNetworks:
+ str = "NoNetworks";
+ break;
+ case NetworkStatus::Unreachable:
+ str = "Unreachable";
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ str = "OfflineDisconnected";
+ break;
+ case NetworkStatus::OfflineFailed:
+ str = "OfflineFailed";
+ break;
+ case NetworkStatus::ShuttingDown:
+ str = "ShuttingDown";
+ break;
+ case NetworkStatus::Offline:
+ str = "Offline";
+ break;
+ case NetworkStatus::Establishing:
+ str = "Establishing";
+ break;
+ case NetworkStatus::Online:
+ str = "Online";
+ break;
+ }
+ return str;
+ }
+} // namespace NetworkStatus
Index: networkstatus/.svn/text-base/networkstatuscommon.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/networkstatuscommon.h.svn-base
@@ -0,0 +1,52 @@
+/* This file is part of kdepim
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef NETWORKSTATUS_COMMON_H
+#define NETWORKSTATUS_COMMON_H
+
+#include <qstringlist.h>
+
+namespace NetworkStatus
+{
+ enum Status { NoNetworks = 1, Unreachable, OfflineDisconnected, OfflineFailed, ShuttingDown, Offline, Establishing, Online };
+ enum RequestResult { RequestAccepted = 1, Connected, UserRefused, Unavailable };
+ enum UnusedDemandPolicy { All, User, None, Permanent };
+
+ // BINARY COMPATIBILITY ALERT BEGIN !!!!
+ struct Properties
+ {
+ QString name;
+ Status status;
+ UnusedDemandPolicy unused1;
+ QCString service;
+ bool unused3;
+ QStringList unused4;
+ };
+ // BINARY COMPATIBILITY ALERT END !!!!
+
+ QString toString( Status st );
+}
+
+QDataStream & operator>> ( QDataStream & s, NetworkStatus::Properties &p );
+QDataStream & operator<< ( QDataStream & s, const NetworkStatus::Properties p );
+
+#endif
Index: networkstatus/.svn/text-base/networkstatus.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/networkstatus.cpp.svn-base
@@ -0,0 +1,162 @@
+/* This file is part of kdepim
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include "networkstatus.h"
+
+#include <qmap.h>
+
+#include <dcopclient.h>
+#include <kapplication.h>
+#include <kdebug.h>
+
+#include "network.h"
+#include <kdepimmacros.h>
+
+extern "C" {
+ KDE_EXPORT KDEDModule* create_networkstatus( const QCString& obj )
+ {
+ return new NetworkStatusModule( obj );
+ }
+}
+
+// INTERNALLY USED STRUCTS AND TYPEDEFS
+
+typedef QMap< QString, Network * > NetworkMap;
+
+class NetworkStatusModule::Private
+{
+public:
+ NetworkMap networks;
+ NetworkStatus::Status status;
+};
+
+// CTORS/DTORS
+
+NetworkStatusModule::NetworkStatusModule( const QCString & obj ) : KDEDModule( obj ), d( new Private )
+{
+ d->status = NetworkStatus::NoNetworks;
+ connect( kapp->dcopClient(), SIGNAL( applicationRemoved( const QCString& ) ) , this, SLOT( unregisteredFromDCOP( const QCString& ) ) );
+ // connect( kapp->dcopClient(), SIGNAL( applicationRegistered( const QCString& ) ) , this, SLOT( registeredToDCOP( const QCString& ) ) );
+}
+
+NetworkStatusModule::~NetworkStatusModule()
+{
+ NetworkMap::ConstIterator it;
+ const NetworkMap::ConstIterator end = d->networks.end();
+
+ for ( it = d->networks.begin(); it != end; ++it ) {
+ delete ( *it );
+ }
+
+ delete d;
+}
+
+// CLIENT INTERFACE
+
+QStringList NetworkStatusModule::networks()
+{
+ kdDebug() << k_funcinfo << " contains " << d->networks.count() << " networks" << endl;
+ return d->networks.keys();
+}
+
+int NetworkStatusModule::status()
+{
+ kdDebug() << k_funcinfo << " status: " << (int)d->status << endl;
+ return (int)d->status;
+}
+
+//protected:
+
+void NetworkStatusModule::updateStatus()
+{
+ NetworkStatus::Status bestStatus = NetworkStatus::NoNetworks;
+ const NetworkStatus::Status oldStatus = d->status;
+
+ NetworkMap::ConstIterator it;
+ const NetworkMap::ConstIterator end = d->networks.end();
+ for ( it = d->networks.begin(); it != end; ++it ) {
+ if ( ( *it )->status() > bestStatus )
+ bestStatus = ( *it )->status();
+ }
+ d->status = bestStatus;
+
+ if ( oldStatus != d->status ) {
+ statusChange( (int)d->status );
+ }
+}
+
+void NetworkStatusModule::unregisteredFromDCOP( const QCString & appId )
+{
+ // unregister and delete any networks owned by a service that has just unregistered
+ NetworkMap::Iterator it;
+ const NetworkMap::Iterator end = d->networks.end();
+ for ( it = d->networks.begin(); it != end; ++it )
+ {
+ if ( ( *it )->service() == QString( appId ) )
+ {
+ NetworkMap::Iterator toRemove = it;
+ Network * removedNet = *toRemove;
+ d->networks.remove( toRemove );
+ updateStatus();
+ delete removedNet;
+ }
+ }
+}
+
+// SERVICE INTERFACE //
+void NetworkStatusModule::setNetworkStatus( const QString & networkName, int st )
+{
+ kdDebug() << k_funcinfo << networkName << ", " << st << endl;
+ NetworkStatus::Status changedStatus = (NetworkStatus::Status)st;
+ Network * net = 0;
+ NetworkMap::Iterator it = d->networks.find( networkName );
+ if ( it != d->networks.end() ) {
+ net = (*it);
+ net->setStatus( changedStatus );
+ updateStatus();
+ }
+ else
+ kdDebug() << " No network named '" << networkName << "' found." << endl;
+}
+
+void NetworkStatusModule::registerNetwork( const NetworkStatus::Properties properties )
+{
+ kdDebug() << k_funcinfo << properties.name << ", with status " << properties.status << endl;
+
+ d->networks.insert( properties.name, new Network( properties ) );
+ updateStatus();
+}
+
+void NetworkStatusModule::unregisterNetwork( const QString & networkName )
+{
+ kdDebug() << k_funcinfo << networkName << endl;
+
+ NetworkMap::Iterator it = d->networks.find( networkName );
+ if ( it != d->networks.end() ) {
+ delete *it;
+ d->networks.remove( it );
+ }
+ updateStatus();
+}
+
+#include "networkstatus.moc"
+// vim: set noet sw=4 ts=4:
Index: networkstatus/.svn/text-base/networkstatus.desktop.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/networkstatus.desktop.svn-base
@@ -0,0 +1,98 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Network Status Daemon
+Name[af]=Netwerk status bediener
+Name[ar]=مراقب القرص و التنفيذ لحالة الشبكة
+Name[bg]=Демон за състояние на мрежата
+Name[ca]=Dimoni de l'estat de la xarxa
+Name[cs]=Démon stavu sítě
+Name[da]=Netværkstatusdæmon
+Name[de]=Überwachung des Netzwerkstatus
+Name[el]=Δαίμονας κατάστασης δικτύου
+Name[es]=Daemon de estado de la red
+Name[et]=Võrguoleku deemon
+Name[eu]=Sarearen egoera deabrua
+Name[fa]=شبح وضعیت شبکه
+Name[fi]=Verkkotilan tarkkailija
+Name[fr]=Suivi de l'état du réseau
+Name[fy]=Netwurktastândaemon
+Name[gl]=Daemon do Estado da Rede
+Name[hu]=Hálózati állapotjelző szolgáltatás
+Name[is]=Netstöðupúki
+Name[it]=Demone dello stato della rete
+Name[ja]=ネットワークステータスデーモン
+Name[kk]=Желі күйінің қызметі
+Name[km]=ដេមិន​ស្ថានភាព​បណ្ដាញ
+Name[lt]=Tinklo statuso tarnyba
+Name[mk]=Даемон за мрежен статус
+Name[ms]=Daemon Berstatus Rangkaian
+Name[nb]=Statusnisse for nettverket
+Name[nds]=Nettwarkstatus-Dämoon
+Name[ne]=सञ्जाल स्थिति डेइमन
+Name[nl]=Netwerkstatusdaemon
+Name[nn]=Statusnisse for nettverket
+Name[pl]=Usługa stanu sieci
+Name[pt]=Servidor de Estado de Rede
+Name[pt_BR]=Daemon de Status da Rede
+Name[ru]=Служба состояния сети
+Name[sk]=Daemon stavu siete
+Name[sl]=Demon za omrežno stanje
+Name[sr]=Демон за статус мреже
+Name[sr@Latn]=Demon za status mreže
+Name[sv]=Nätverksstatusdemon
+Name[ta]=வலைப்பின்னல் நிலை டெமான்
+Name[tr]=Ağ Durum İzleyici
+Name[uk]=Демон стану мережі
+Name[zh_CN]=网络状态守护程序
+Name[zh_TW]=網路狀態守護程式
+Comment=Tracks status of network interfaces and provides notification to applications using the network.
+Comment[af]=Hou tred van die status van netwerk intervlakke en verskaf kennisgewings na programme wat die netwerk gebruik.
+Comment[bg]=Следене на състоянието на мрежата и предаване на информацията на програмите, които имат нужда
+Comment[ca]=Controla l'estat de les interfícies de xarxa i proporciona notificacions a les aplicacions que usen la xarxa.
+Comment[cs]=Zjiš'tuje stav síťových rozhraní a upozorňuje v případě přístupu aplikací k síti.
+Comment[da]=Sporer status af netværksgrænseflade og sørger for meddelelser til programmer der bruger netværket.
+Comment[de]=Überprüft den Netzwerk-Status und benachrichtigt anfragende Anwendungen
+Comment[el]=Παρακολουθεί την κατάσταση του δικτύου και παρέχει ειδοποιήσεις σε εφαρμογές που χρησιμοποιούν το δίκτυο.
+Comment[es]=Sigue la pista de las interfaces de red y proporciona notificaciones a las aplicaciones que están usando la red.
+Comment[et]=Jälgib võrguliideste olekut ja annab sellest võrgu vahendusel rakendustele teada.
+Comment[eu]=Sare interfazeen egoera jarraitzen du eta sarea darabilten aplikazioei jakinarazten die.
+Comment[fa]=وضعیت واسطهای شبکه را شیار داده و با استفاده از شبکه، برای کاربردها اخطار فراهم می‌کند.
+Comment[fi]=Tarkkailee verkkoliitäntöjen tilaa ja varoittaa verkkoa käyttäviä sovelluksia.
+Comment[fr]=Surveille l'état des interfaces réseaux et fournit des notifications aux applications qui utilisent le réseau
+Comment[fy]=Hâldt de tastân by fan de Netwurkynterfaces en hâldt dêr de tapassings fan op de hichte.
+Comment[gl]=Monitoriza o estado das interfaces de rede e fornece notificacións ás aplicacións que usen a rede.
+Comment[hu]=Figyeli a hálózati csatolók állapotát és értesítési lehetőséget biztosít hálózati alkalmazások számára.
+Comment[is]=Fylgist með stöðu netkorta og sendir tilkynningar til forrita sem nota netið.
+Comment[it]=Controlla lo stato delle interfacce di rete e fornisce notifiche alle applicazioni che usano al rete.
+Comment[ja]=ネットワークインターフェースの状態を追跡し、ネットワークを用いるアプリケーションに通知します
+Comment[kk]=Желі интерфейстерінің күйін бақылап, желіні қолданатын бағдарламаларын құлақтандыру қызметі.
+Comment[km]=តាមដាន​ស្ថានភាព​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ ព្រម​ទាំង​ផ្ដល់​នូវ​ការ​ជូនដំណឹង​ទៅ​កម្មវិធី ដែល​ប្រើ​បណ្ដាញ ។
+Comment[lt]=Seka tinklo sąsajų būseną ir informuoja apie jas programas, naudojančias tinklą
+Comment[mk]=Го следи статусот на мрежните интерфејси и дава известувања на апликациите што ја користат мрежата.
+Comment[ms]=Menjejak status antara muka rangkaian dan memberitahu aplikasi yang menggunakan rangkaian tersebut.
+Comment[nb]=Overvåker status for nettverksgrensesnitt og varsler programmer som bruker nettverket.
+Comment[nds]=Överwacht den Tostand vun Nettwark-Koppelsteden un sendt Narichten na Programmen, de dat Nettwark bruukt.
+Comment[ne]=सञ्जाल इन्टरफेसको स्थिति ट्र्याक गर्दछ र सञ्जाल प्रयोग गरेर अनुप्रयोगमा जानकारी उपलब्ध गराउछ ।
+Comment[nl]=Houdt de status bij van de netwerkinterfaces en houdt daar de toepassingen van op de hoogte.
+Comment[nn]=Overvakar status for nettverksgrensesnitt og varslar program som brukar nettverket.
+Comment[pl]=Śledzi stan interfejsów sieciowych i powiadamia programy używające sieci.
+Comment[pt]=Vigia o estado das interfaces de rede e avisa as aplicações que utilizam a rede.
+Comment[pt_BR]=Controla o status das interfaces de rede e fornece notificações para aplicativos utilizando a rede.
+Comment[ru]=Служба отслеживания состояния сетевых интерфейсов и обращения приложений к сети.
+Comment[sk]=Sleduje stav sieťových rozhraní a poskytuje upozornenia aplikáciám používajúcim sieť.
+Comment[sl]=Sledi stanju omrežnim vmesnikom in omogoča obvestila programom, ki uporabljajo omrežje
+Comment[sr]=Прати статус мрежних интерфејса и пружа обавештења програмима који користе мрежу.
+Comment[sr@Latn]=Prati status mrežnih interfejsa i pruža obaveštenja programima koji koriste mrežu.
+Comment[sv]=Bevakar status för nätverksgränssnitt och tillhandahåller underrättelser till program som använder nätverket.
+Comment[ta]=வலைப்பின்னலைப் பயன்படுத்தி வலைப்பின்னல் இடைமுகங்களின் நிலையை கண்காணிக்கிறது மற்றும் பயன்பாடுகளுக்கு அறிவிப்பை வழங்குகிறது.
+Comment[uk]=Слідкує за станом інтерфейсів мережі і сповіщає програми, які користуються мережею.
+Comment[zh_CN]=跟踪网卡的状态并为应用程序提供使用网络的通知。
+Comment[zh_TW]=追蹤網路介面的狀態,並提供使用網路的應用程式的通知。
+Type=Service
+ServiceTypes=KDEDModule
+X-KDE-ModuleType=Library
+X-KDE-Library=networkstatus
+X-KDE-FactoryName=networkstatus
+X-KDE-Kded-autoload=true
+X-KDE-Kded-load-on-demand=true
+
Index: networkstatus/.svn/text-base/networkstatus.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/networkstatus.h.svn-base
@@ -0,0 +1,66 @@
+/* This file is part of kdepim
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KDED_NETWORKSTATUS_H
+#define KDED_NETWORKSTATUS_H
+
+#include <kdedmodule.h>
+
+#include "networkstatuscommon.h"
+#include "network.h"
+
+class NetworkStatusModule : virtual public KDEDModule
+{
+Q_OBJECT
+K_DCOP
+public:
+ NetworkStatusModule( const QCString& obj );
+ ~NetworkStatusModule();
+k_dcop:
+ // Client interface
+ QStringList networks();
+ int status();
+ // Service interface
+ void setNetworkStatus( const QString & networkName, int status );
+ void registerNetwork( NetworkStatus::Properties properties );
+ void unregisterNetwork( const QString & networkName );
+k_dcop_signals:
+ /**
+ * A status change occurred affecting the overall connectivity
+ * @param status The new status
+ */
+ void statusChange( int status );
+protected slots:
+ //void registeredToDCOP( const QCString& appId );
+ void unregisteredFromDCOP( const QCString& appId );
+
+protected:
+ // recalculate cached status
+ void updateStatus();
+
+private:
+ class Private;
+ Private *d;
+};
+
+#endif
+// vim: sw=4 ts=4
Index: networkstatus/.svn/text-base/networkstatusiface.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/networkstatusiface.h.svn-base
@@ -0,0 +1,50 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KDED_NETWORKSTATUSIFACE_H
+#define KDED_NETWORKSTATUSIFACE_H
+
+#include <dcopobject.h>
+#include <qstringlist.h>
+
+#include "networkstatuscommon.h"
+
+class NetworkStatusIface : virtual public DCOPObject
+{
+K_DCOP
+k_dcop:
+ // Client interface
+ virtual QStringList networks() = 0;
+ virtual int status() = 0;
+ // Service interface
+ virtual void setNetworkStatus( const QString & networkName, int status ) = 0;
+ virtual void registerNetwork( NetworkStatus::Properties properties ) = 0;
+ virtual void unregisterNetwork( const QString & networkName ) = 0 ;
+k_dcop_signals:
+ /**
+ * A status change occurred affecting the overall connectivity
+ * @param status The new status
+ */
+ virtual void statusChange( int status ) = 0;
+};
+#endif
+// vim: sw=4 ts=4
Index: networkstatus/.svn/text-base/networkstatusindicator.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/networkstatusindicator.cpp.svn-base
@@ -0,0 +1,64 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <qlabel.h>
+#include <qtooltip.h>
+#include <kiconloader.h>
+#include <klocale.h>
+
+#include "connectionmanager.h"
+
+#include "networkstatusindicator.h"
+
+StatusBarNetworkStatusIndicator::StatusBarNetworkStatusIndicator(
+ QWidget * parent, const char * name ) : QHBox( parent, name )/*, d( new StatusBarNetworkStatusIndicatorPrivate )*/
+{
+ setMargin( 2 );
+ setSpacing( 1 );
+ QLabel * label = new QLabel( this, "offlinemodelabel" );
+ label->setPixmap( SmallIcon("connect_no") );
+ QToolTip::add( label, i18n( "The desktop is offline" ) );
+
+ connect( ConnectionManager::self(), SIGNAL( statusChanged( NetworkStatus::Status ) ),
+ SLOT( networkStatusChanged( NetworkStatus::Status) ) );
+
+}
+
+void StatusBarNetworkStatusIndicator::init()
+{
+ networkStatusChanged( ConnectionManager::self()->status());
+}
+
+StatusBarNetworkStatusIndicator::~StatusBarNetworkStatusIndicator()
+{
+}
+
+void StatusBarNetworkStatusIndicator::networkStatusChanged( NetworkStatus::Status status )
+{
+ if ( status == NetworkStatus::Online || status == NetworkStatus::NoNetworks ) {
+ hide();
+ } else {
+ show();
+ }
+}
+
+#include "networkstatusindicator.moc"
Index: networkstatus/.svn/text-base/networkstatusindicator.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/networkstatusindicator.h.svn-base
@@ -0,0 +1,42 @@
+/* This file is part of the KDE project
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library. If not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this library
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KDE_NETWORKSTATUS_INDICATOR_H
+#define KDE_NETWORKSTATUS_INDICATOR_H
+
+#include <qhbox.h>
+#include <kdemacros.h>
+#include <networkstatuscommon.h>
+
+class StatusBarNetworkStatusIndicator : public QHBox
+{
+Q_OBJECT
+public:
+ StatusBarNetworkStatusIndicator( QWidget * parent, const char * name );
+ virtual ~StatusBarNetworkStatusIndicator();
+ void init();
+protected slots:
+ void networkStatusChanged( NetworkStatus::Status status );
+};
+
+#endif
+
Index: networkstatus/.svn/text-base/networkstatus.kdevelop.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/networkstatus.kdevelop.svn-base
@@ -0,0 +1,108 @@
+<?xml version = '1.0'?>
+<kdevelop>
+ <general>
+ <author>Will Stephenson</author>
+ <email>wstephenson@suse.de</email>
+ <version>$VERSION$</version>
+ <projectmanagement>KDevKDEAutoProject</projectmanagement>
+ <primarylanguage>C++</primarylanguage>
+ <keywords>
+ <keyword>Qt</keyword>
+ <keyword>KDE</keyword>
+ </keywords>
+ </general>
+ <kdevfileview>
+ <groups>
+ <group pattern="*.cpp;*.cxx;*.h" name="Sources" />
+ <group pattern="*.ui" name="User Interface" />
+ <group pattern="*.png" name="Icons" />
+ <group pattern="*.po;*.ts" name="Translations" />
+ <group pattern="*" name="Others" />
+ <hidenonprojectfiles>false</hidenonprojectfiles>
+ <hidenonlocation>false</hidenonlocation>
+ </groups>
+ <tree>
+ <hidepatterns>*.o,*.lo,CVS</hidepatterns>
+ <hidenonprojectfiles>false</hidenonprojectfiles>
+ </tree>
+ </kdevfileview>
+ <kdevdoctreeview>
+ <ignoretocs>
+ <toc>ada</toc>
+ <toc>ada_bugs_gcc</toc>
+ <toc>bash</toc>
+ <toc>bash_bugs</toc>
+ <toc>clanlib</toc>
+ <toc>fortran_bugs_gcc</toc>
+ <toc>gnome1</toc>
+ <toc>gnustep</toc>
+ <toc>gtk</toc>
+ <toc>gtk_bugs</toc>
+ <toc>haskell</toc>
+ <toc>haskell_bugs_ghc</toc>
+ <toc>java_bugs_gcc</toc>
+ <toc>java_bugs_sun</toc>
+ <toc>opengl</toc>
+ <toc>pascal_bugs_fp</toc>
+ <toc>php</toc>
+ <toc>php_bugs</toc>
+ <toc>perl</toc>
+ <toc>perl_bugs</toc>
+ <toc>python</toc>
+ <toc>python_bugs</toc>
+ <toc>ruby</toc>
+ <toc>ruby_bugs</toc>
+ <toc>sdl</toc>
+ <toc>stl</toc>
+ <toc>sw</toc>
+ <toc>w3c-dom-level2-html</toc>
+ <toc>w3c-svg</toc>
+ <toc>w3c-uaag10</toc>
+ <toc>wxwidgets_bugs</toc>
+ </ignoretocs>
+ <ignoreqt_xml>
+ <toc>qmake User Guide</toc>
+ </ignoreqt_xml>
+ </kdevdoctreeview>
+ <kdevdebugger>
+ <general>
+ <dbgshell>libtool</dbgshell>
+ </general>
+ </kdevdebugger>
+ <kdevfilecreate>
+ <useglobaltypes>
+ <type ext="ui" />
+ <type ext="cpp" />
+ <type ext="h" />
+ </useglobaltypes>
+ </kdevfilecreate>
+ <kdevautoproject>
+ <make>
+ <envvars>
+ <envvar value="1" name="WANT_AUTOCONF_2_5" />
+ <envvar value="1" name="WANT_AUTOMAKE_1_6" />
+ </envvars>
+ </make>
+ <run>
+ <directoryradio>executable</directoryradio>
+ </run>
+ <general>
+ <activetarget>kded_networkstatus.la</activetarget>
+ </general>
+ </kdevautoproject>
+ <kdevcppsupport>
+ <references/>
+ <codecompletion>
+ <includeGlobalFunctions>true</includeGlobalFunctions>
+ <includeTypes>true</includeTypes>
+ <includeEnums>true</includeEnums>
+ <includeTypedefs>false</includeTypedefs>
+ <automaticCodeCompletion>true</automaticCodeCompletion>
+ <automaticArgumentsHint>true</automaticArgumentsHint>
+ <automaticHeaderCompletion>true</automaticHeaderCompletion>
+ <codeCompletionDelay>250</codeCompletionDelay>
+ <argumentsHintDelay>400</argumentsHintDelay>
+ <headerCompletionDelay>250</headerCompletionDelay>
+ </codecompletion>
+ </kdevcppsupport>
+</kdevelop>
Index: networkstatus/.svn/text-base/README.statetransition.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/README.statetransition.svn-base
@@ -0,0 +1,29 @@
+This table defines the actions to be taken on state transition.
+
+TODO: potentially add extra states OnlineReading and OnlineWriting
+
+ NEW
+ |Offline | Online |
+---+---+----------------+---------------+
+ | | |N|set online |
+ | | |L|reload |
+ | O | |C|resources |
+ | F | +---------------+
+ | F | |L|set online |
+O | | |C|reload res. |
+L | | | |write res. |
+D +---+----------------+---------------+
+ | |N|set offline | |
+ | |C| | |
+ | | | | |
+ | O +---------------+| |
+ | N |U|set offline | |
+ | |W|write locally | |
+ | |C|(subject to | |
+ | | | save policy)| |
+---+---+----------------+---------------+
+LC = Local changes exist
+NLC = No local changes exist
+UWC = Unsaved changes exist
+NC = no changes exist
+
Index: networkstatus/.svn/text-base/testclient2.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/testclient2.cpp.svn-base
@@ -0,0 +1,222 @@
+/* This file is part of kdepim.
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2
+ as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qvbox.h>
+
+#include <kaboutdata.h>
+#include <kcmdlineargs.h>
+#include <kdebug.h>
+#include <kdeversion.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <kiconloader.h>
+
+#include <connectionmanager.h>
+#include <networkstatusindicator.h>
+
+#include "testclientview.h"
+#include "testclient2.h"
+
+TestClient::TestClient()
+ : KMainWindow( 0, "ktestnetworkstatus" ),
+ m_layout( new QVBox( 0, "layout" ) ),
+ m_status( AppDisconnected )
+{
+ m_view = new TestClientView( this );
+ new StatusBarNetworkStatusIndicator( m_view, "statusindicator" );
+ // tell the KMainWindow that this is indeed the main widget
+ setCentralWidget(m_view);
+
+ networkStatusChanged( ConnectionManager::self()->status() );
+ appDisconnected();
+
+ connect( ConnectionManager::self(), SIGNAL( statusChanged( NetworkStatus::Status ) ), SLOT( networkStatusChanged( NetworkStatus::Status ) ) );
+ ConnectionManager::self()->registerConnectSlot( this, SLOT( doConnect() ) );
+ ConnectionManager::self()->registerDisconnectSlot( this, SLOT( doDisconnect() ) );
+
+ connect( m_view->connectButton, SIGNAL( clicked() ), SLOT( connectButtonClicked() ) );
+}
+
+TestClient::~TestClient()
+{
+}
+
+void TestClient::networkStatusChanged( NetworkStatus::Status status )
+{
+ kdDebug() << k_funcinfo << endl;
+ kdDebug() << "Networking is now: " << NetworkStatus::toString( status ) << " (" << status << ")" << endl;
+ m_view->netStatusLabel->setText( NetworkStatus::toString( status ) );
+ m_view->netStatusLabel->setPaletteBackgroundColor( toQColor( status ) );
+}
+
+void TestClient::doConnect()
+{
+ Q_ASSERT( ConnectionManager::self()->status() == NetworkStatus::Online );
+ if ( m_status != AppConnected ) {
+ appIsConnected();
+ }
+}
+
+void TestClient::doDisconnect()
+{
+ Q_ASSERT( ConnectionManager::self()->status() != NetworkStatus::Online );
+ if ( m_status == AppConnected ) {
+ appDisconnected();
+ }
+}
+
+void TestClient::connectButtonClicked()
+{
+ kdDebug() << k_funcinfo << endl;
+ if ( m_status == AppDisconnected ) {
+ switch ( ConnectionManager::self()->status() )
+ {
+ case NetworkStatus::NoNetworks:
+ case NetworkStatus::Online:
+ appIsConnected();
+ break;
+ default:
+ appWaiting();
+ break;
+ }
+ }
+ else if ( m_status == AppConnected || m_status == AppWaitingForConnect ) {
+ appDisconnected();
+ }
+}
+
+void TestClient::appWaiting()
+{
+ kdDebug() << k_funcinfo << endl;
+ //m_status = AppWaitingForConnect;
+ m_view->appStatusLabel->setText( "Waiting" );
+}
+
+void TestClient::appIsConnected()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( true );
+ m_view->connectButton->setText( "Disconnect" );
+ m_view->appStatusLabel->setText( "Connected" );
+ m_status = AppConnected;
+}
+
+void TestClient::appEstablishing()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->netStatusLabel->setText( "Establishing" );
+ m_view->connectButton->setEnabled( false );
+}
+
+void TestClient::appDisestablishing( )
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( false );
+ m_view->appStatusLabel->setText( "Disconnected" );
+}
+
+void TestClient::appDisconnected( )
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( true );
+ m_view->connectButton->setText( "Start Connect" );
+ m_view->appStatusLabel->setText( "Disconnected" );
+ m_status = AppDisconnected;
+}
+
+QColor TestClient::toQColor( NetworkStatus::Status st )
+{
+ QColor col;
+ switch ( st ) {
+ case NetworkStatus::NoNetworks:
+ col = Qt::darkGray;
+ break;
+ case NetworkStatus::Unreachable:
+ col = Qt::darkMagenta;
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::OfflineFailed:
+ col = Qt::darkRed;
+ break;
+ case NetworkStatus::ShuttingDown:
+ col = Qt::darkYellow;
+ break;
+ case NetworkStatus::Offline:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::Establishing:
+ col = Qt::yellow;
+ break;
+ case NetworkStatus::Online:
+ col = Qt::green;
+ break;
+ }
+ return col;
+}
+//main
+static const char description[] =
+ I18N_NOOP("Test Client for Network Status kded module");
+
+static const char version[] = "v0.1";
+
+static KCmdLineOptions options[] =
+{
+ KCmdLineLastOption
+};
+
+int main(int argc, char **argv)
+{
+ KAboutData about("KNetworkStatusTestClient", I18N_NOOP("knetworkstatustestclient"), version, description, KAboutData::License_GPL, "(C) 2007 Will Stephenson", 0, 0, "wstephenson@kde.org");
+ about.addAuthor( "Will Stephenson", 0, "wstephenson@kde.org" );
+ KCmdLineArgs::init(argc, argv, &about);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KApplication app;
+
+ // register ourselves as a dcop client
+ app.dcopClient()->registerAs(app.name(), false);
+
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ if (args->count() == 0)
+ {
+ TestClient *widget = new TestClient;
+ widget->show();
+ }
+ else
+ {
+ int i = 0;
+ for (; i < args->count(); i++)
+ {
+ TestClient *widget = new TestClient;
+ widget->show();
+ }
+ }
+ args->clear();
+
+ return app.exec();
+}
+
+#include "testclient2.moc"
+
Index: networkstatus/.svn/text-base/testclient2.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/testclient2.h.svn-base
@@ -0,0 +1,82 @@
+/* This file is part of kdepim.
+
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KTESTNETWORKSTATUS_H
+#define KTESTNETWORKSTATUS_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <dcopclient.h>
+#include <kapplication.h>
+#include <kmainwindow.h>
+#include <networkstatuscommon.h>
+
+#include "networkstatusiface_stub.h"
+
+class TestClientView;
+
+/**
+ * Test client that uses a ConnectionManager to change its state
+ *
+ * @short Main window class
+ * @author Will Stephenson <wstephenson@kde.org>
+ * @version 0.1
+ */
+class TestClient : public KMainWindow
+{
+Q_OBJECT
+public:
+ enum AppStatus{ AppDisconnected, AppWaitingForConnect, AppConnected };
+ /**
+ * Default Constructor
+ */
+ TestClient();
+
+ /**
+ * Default Destructor
+ */
+ virtual ~TestClient();
+
+private slots:
+ void networkStatusChanged( NetworkStatus::Status status );
+ void connectButtonClicked();
+ void doConnect();
+ void doDisconnect();
+private:
+ void appWaiting();
+ void appEstablishing();
+ void appIsConnected();
+ void appDisestablishing();
+ void appDisconnected();
+ static QColor toQColor( NetworkStatus::Status );
+private:
+ QHBox * m_layout;
+ NetworkStatusIface_stub *m_service;
+ TestClientView *m_view;
+ AppStatus m_status; // this represents the app's status not the network's status
+};
+
+#endif // KTESTNETWORKSTATUS_H
+
Index: networkstatus/.svn/text-base/testclient.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/testclient.cpp.svn-base
@@ -0,0 +1,234 @@
+/* This file is part of kdepim.
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2
+ as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <qlabel.h>
+#include <qpushbutton.h>
+
+
+#include <kaboutdata.h>
+#include <kcmdlineargs.h>
+#include <kdebug.h>
+#include <kdeversion.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <kiconloader.h>
+
+#include "connectionmanager.h"
+#include "testclientview.h"
+#include "testclient.h"
+
+TestClient::TestClient()
+ : KMainWindow( 0, "ktestnetworkstatus" ),
+ m_view(new TestClientView(this)),
+ m_status( AppDisconnected )
+{
+ // tell the KMainWindow that this is indeed the main widget
+ setCentralWidget(m_view);
+
+ networkStatusChanged( ConnectionManager::self()->status() );
+ appDisconnected();
+
+ connect( ConnectionManager::self(), SIGNAL( statusChanged( NetworkStatus::Status ) ), SLOT( networkStatusChanged( NetworkStatus::Status ) ) );
+
+ connect( m_view->connectButton, SIGNAL( toggled( bool ) ), SLOT( connectButtonToggled( bool ) ) );
+}
+
+TestClient::~TestClient()
+{
+}
+
+void TestClient::networkStatusChanged( NetworkStatus::Status status )
+{
+ kdDebug() << k_funcinfo << endl;
+//enum EnumStatus { NoNetworks = 1, Unreachable, OfflineDisconnected, OfflineFailed, ShuttingDown
+// , Offline, Establishing, Online };
+ kdDebug() << "Networking is now: " << NetworkStatus::toString( status ) << " (" << status << ")" << endl;
+ m_view->netStatusLabel->setText( NetworkStatus::toString( status ) );
+ m_view->netStatusLabel->setPaletteBackgroundColor( toQColor( status ) );
+ switch ( status ) {
+ case NetworkStatus::NoNetworks:
+ break;
+ case NetworkStatus::Unreachable:
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ break;
+ case NetworkStatus::OfflineFailed:
+ break;
+ case NetworkStatus::ShuttingDown:
+ if ( m_status == AppConnected ) {
+ appDisestablishing();
+ }
+ break;
+ case NetworkStatus::Offline:
+ if ( m_status == AppConnected ) {
+ appDisconnected();
+ }
+ break;
+ case NetworkStatus::Establishing:
+ if ( m_status == AppWaitingForConnect )
+ appEstablishing();
+ else if ( m_status == AppConnected )
+ appDisconnected();
+ break;
+ case NetworkStatus::Online:
+ if ( m_status == AppWaitingForConnect )
+ appIsConnected();
+ break;
+ default:
+ m_view->netStatusLabel->setText( "Unrecognised status code!" );
+ }
+}
+
+void TestClient::connectButtonToggled( bool on )
+{
+ kdDebug() << k_funcinfo << endl;
+ if ( on && m_status == AppDisconnected ) {
+ switch ( ConnectionManager::self()->status() )
+ {
+ case NetworkStatus::NoNetworks:
+ case NetworkStatus::Online:
+ appIsConnected();
+ break;
+ default:
+ appWaiting();
+ break;
+ }
+ }
+ else if ( !on && m_status == AppConnected ) {
+ appDisconnected();
+ }
+}
+
+void TestClient::appWaiting()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_status = AppWaitingForConnect;
+ m_view->appStatusLabel->setText( "Waiting" );
+}
+
+void TestClient::appIsConnected()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( true );
+ m_view->connectButton->setText( "Disconnect" );
+ m_view->appStatusLabel->setText( "Connected" );
+ m_status = AppConnected;
+}
+
+void TestClient::appEstablishing()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->netStatusLabel->setText( "Establishing" );
+ m_view->connectButton->setEnabled( false );
+}
+
+void TestClient::appDisestablishing( )
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( false );
+ m_view->appStatusLabel->setText( "Disconnected" );
+}
+
+void TestClient::appDisconnected( )
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( true );
+ m_view->connectButton->setText( "Start Connect" );
+ m_view->appStatusLabel->setText( "Disconnected" );
+ m_status = AppDisconnected;
+}
+
+QColor TestClient::toQColor( NetworkStatus::Status st )
+{
+ QColor col;
+ switch ( st ) {
+ case NetworkStatus::NoNetworks:
+ col = Qt::darkGray;
+ break;
+ case NetworkStatus::Unreachable:
+ col = Qt::darkMagenta;
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::OfflineFailed:
+ col = Qt::darkRed;
+ break;
+ case NetworkStatus::ShuttingDown:
+ col = Qt::darkYellow;
+ break;
+ case NetworkStatus::Offline:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::Establishing:
+ col = Qt::yellow;
+ break;
+ case NetworkStatus::Online:
+ col = Qt::green;
+ break;
+ }
+ return col;
+}
+//main
+static const char description[] =
+ I18N_NOOP("Test Client for Network Status kded module");
+
+static const char version[] = "v0.1";
+
+static KCmdLineOptions options[] =
+{
+ KCmdLineLastOption
+};
+
+int main(int argc, char **argv)
+{
+ KAboutData about("KNetworkStatusTestClient", I18N_NOOP("knetworkstatustestclient"), version, description, KAboutData::License_GPL, "(C) 2007 Will Stephenson", 0, 0, "wstephenson@kde.org");
+ about.addAuthor( "Will Stephenson", 0, "wstephenson@kde.org" );
+ KCmdLineArgs::init(argc, argv, &about);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KApplication app;
+
+ // register ourselves as a dcop client
+ app.dcopClient()->registerAs(app.name(), false);
+
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ if (args->count() == 0)
+ {
+ TestClient *widget = new TestClient;
+ widget->show();
+ }
+ else
+ {
+ int i = 0;
+ for (; i < args->count(); i++)
+ {
+ TestClient *widget = new TestClient;
+ widget->show();
+ }
+ }
+ args->clear();
+
+ return app.exec();
+}
+
+#include "testclient.moc"
+
Index: networkstatus/.svn/text-base/testclient.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/testclient.h.svn-base
@@ -0,0 +1,80 @@
+/* This file is part of kdepim.
+
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KTESTNETWORKSTATUS_H
+#define KTESTNETWORKSTATUS_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <dcopclient.h>
+#include <kapplication.h>
+#include <kmainwindow.h>
+#include <networkstatuscommon.h>
+
+#include "networkstatusiface_stub.h"
+
+class TestClientView;
+
+/**
+ * This class serves as the main window for ktestnetworkstatus. It handles the
+ * menus, toolbars, and status bars.
+ *
+ * @short Main window class
+ * @author Will Stephenson <wstephenson@kde.org>
+ * @version 0.1
+ */
+class TestClient : public KMainWindow
+{
+Q_OBJECT
+public:
+ enum AppStatus{ AppDisconnected, AppWaitingForConnect, AppConnected };
+ /**
+ * Default Constructor
+ */
+ TestClient();
+
+ /**
+ * Default Destructor
+ */
+ virtual ~TestClient();
+
+private slots:
+ void networkStatusChanged( NetworkStatus::Status status );
+ void connectButtonToggled( bool on );
+private:
+ void appWaiting();
+ void appEstablishing();
+ void appIsConnected();
+ void appDisestablishing();
+ void appDisconnected();
+ static QColor toQColor( NetworkStatus::Status );
+private:
+ NetworkStatusIface_stub *m_service;
+ TestClientView *m_view;
+ AppStatus m_status; // this represents the app's status not the network's status
+};
+
+#endif // KTESTNETWORKSTATUS_H
+
Index: networkstatus/.svn/text-base/testclientview.ui.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/testclientview.ui.svn-base
@@ -0,0 +1,177 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>TestClientView</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>TestClientView</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>356</width>
+ <height>127</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel4</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&lt;font size="+2"&gt;&lt;b&gt;Client for KDE 3 Offline Mode&lt;/b&gt;&lt;/font&gt;</string>
+ </property>
+ <property name="alignment">
+ <set>AlignVCenter</set>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Network status:</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>netStatusLabel</cstring>
+ </property>
+ <property name="paletteBackgroundColor">
+ <color>
+ <red>0</red>
+ <green>255</green>
+ <blue>0</blue>
+ </color>
+ </property>
+ <property name="frameShape">
+ <enum>Panel</enum>
+ </property>
+ <property name="text">
+ <string>STATUS</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout1_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_2</cstring>
+ </property>
+ <property name="text">
+ <string>App status:</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>appStatusLabel</cstring>
+ </property>
+ <property name="paletteBackgroundColor">
+ <color>
+ <red>0</red>
+ <green>255</green>
+ <blue>0</blue>
+ </color>
+ </property>
+ <property name="frameShape">
+ <enum>Panel</enum>
+ </property>
+ <property name="text">
+ <string>STATUS</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>31</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>connectButton</cstring>
+ </property>
+ <property name="text">
+ <string>Start Connect</string>
+ </property>
+ <property name="toggleButton">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>61</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
Index: networkstatus/.svn/text-base/testservice.cpp.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/testservice.cpp.svn-base
@@ -0,0 +1,219 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2
+ as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qtimer.h>
+
+#include <dcopclient.h>
+#include <kaboutdata.h>
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <kdebug.h>
+#include <klocale.h>
+
+#include "testservice.h"
+#include "testserviceview.h"
+#include "networkstatusiface_stub.h"
+
+TestService::TestService() : KMainWindow( 0, "testservice" ),
+ m_service( new NetworkStatusIface_stub( "kded", "networkstatus" ) ),
+ m_status ( NetworkStatus::Offline ),
+ m_nextStatus( NetworkStatus::OfflineDisconnected ),
+ m_view( new TestServiceView( this ) )
+{
+ setCentralWidget( m_view );
+ kapp->dcopClient()->registerAs("testservice" );
+
+ connect( m_view->changeCombo, SIGNAL( activated( int ) ), SLOT( changeComboActivated( int ) ) );
+ connect( m_view->changeButton, SIGNAL( clicked() ), SLOT( changeButtonClicked() ) );
+
+ connect( kapp->dcopClient(), SIGNAL( applicationRegistered( const QCString& ) ), this, SLOT( registeredToDCOP( const QCString& ) ) );
+ kapp->dcopClient()->setNotifications( true );
+
+ m_view->statusLabel->setText( NetworkStatus::toString( m_status ) );
+ m_view->statusLabel->setPaletteBackgroundColor( toQColor( m_status ) );
+ setCaption( NetworkStatus::toString( m_status ) );
+
+ registerService();
+}
+
+TestService::~TestService()
+{
+ delete m_service;
+ delete m_view;
+}
+
+void TestService::registerService()
+{
+ NetworkStatus::Properties nsp;
+ nsp.name = "test_net";
+ nsp.service = kapp->dcopClient()->appId();
+ nsp.status = m_status;
+ m_service->registerNetwork( nsp );
+}
+
+void TestService::registeredToDCOP( const QCString & appId )
+{
+ if ( appId == "kded" )
+ registerService();
+}
+
+int TestService::status( const QString & network )
+{
+ Q_UNUSED( network );
+ return (int)m_status;
+}
+
+void TestService::changeComboActivated( int index )
+{
+ switch ( index ) {
+ case 0 /*NetworkStatus::OfflineDisconnected*/:
+ m_nextStatus = NetworkStatus::OfflineDisconnected;
+ break;
+ case 1 /*NetworkStatus::OfflineFailed*/:
+ m_nextStatus = NetworkStatus::OfflineFailed;
+ break;
+ case 2 /*NetworkStatus::ShuttingDown*/:
+ m_nextStatus = NetworkStatus::ShuttingDown;
+ break;
+ case 3 /*NetworkStatus::Offline*/:
+ m_nextStatus = NetworkStatus::Offline;
+ break;
+ case 4 /*NetworkStatus::Establishing*/:
+ m_nextStatus = NetworkStatus::Establishing;
+ break;
+ case 5 /*NetworkStatus::Online*/:
+ m_nextStatus = NetworkStatus::Online;
+ break;
+ default:
+ kdDebug() << "Unrecognised status!" << endl;
+ Q_ASSERT( false );
+ }
+ m_view->changeButton->setEnabled( true );
+}
+
+void TestService::changeButtonClicked()
+{
+ m_view->changeButton->setEnabled( false );
+ m_status = m_nextStatus;
+ m_service->setNetworkStatus( "test_net", ( int )m_status );
+ m_view->statusLabel->setText( NetworkStatus::toString( m_status ) );
+ m_view->statusLabel->setPaletteBackgroundColor( toQColor( m_status ) );
+ setCaption( NetworkStatus::toString( m_status ) );
+}
+
+int TestService::establish( const QString & network )
+{
+ Q_UNUSED( network );
+ m_status = NetworkStatus::Establishing;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+ m_nextStatus = NetworkStatus::Online;
+ QTimer::singleShot( 5000, this, SLOT( slotStatusChange() ) );
+ return (int)NetworkStatus::RequestAccepted;
+}
+
+int TestService::shutdown( const QString & network )
+{
+ Q_UNUSED( network );
+ m_status = NetworkStatus::ShuttingDown;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+ m_nextStatus = NetworkStatus::Offline;
+ QTimer::singleShot( 5000, this, SLOT( slotStatusChange() ) );
+ return (int)NetworkStatus::RequestAccepted;
+}
+
+void TestService::simulateFailure()
+{
+ m_status = NetworkStatus::OfflineFailed;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+}
+
+void TestService::simulateDisconnect()
+{
+ m_status = NetworkStatus::OfflineDisconnected;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+}
+
+void TestService::slotStatusChange()
+{
+ m_status = m_nextStatus;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+}
+
+QColor TestService::toQColor( NetworkStatus::Status st )
+{
+ QColor col;
+ switch ( st ) {
+ case NetworkStatus::NoNetworks:
+ col = Qt::darkGray;
+ break;
+ case NetworkStatus::Unreachable:
+ col = Qt::darkMagenta;
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::OfflineFailed:
+ col = Qt::darkRed;
+ break;
+ case NetworkStatus::ShuttingDown:
+ col = Qt::darkYellow;
+ break;
+ case NetworkStatus::Offline:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::Establishing:
+ col = Qt::yellow;
+ break;
+ case NetworkStatus::Online:
+ col = Qt::green;
+ break;
+ }
+ return col;
+}
+
+static const char description[] =
+ I18N_NOOP("Test Service for Network Status kded module");
+
+static const char version[] = "v0.1";
+
+static KCmdLineOptions options[] =
+{
+ KCmdLineLastOption
+};
+
+int main( int argc, char** argv )
+{
+ KAboutData about("KNetworkStatusTestService", I18N_NOOP("knetworkstatustestservice"), version, description, KAboutData::License_GPL, "(C) 2007 Will Stephenson", 0, 0, "wstephenson@kde.org");
+ about.addAuthor( "Will Stephenson", 0, "wstephenson@kde.org" );
+ KCmdLineArgs::init(argc, argv, &about);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KApplication app;
+
+ TestService * test = new TestService;
+ test->show();
+ return app.exec();
+}
+
+#include "testservice.moc"
Index: networkstatus/.svn/text-base/testservice.h.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/testservice.h.svn-base
@@ -0,0 +1,60 @@
+/* This file is part of kdepim.
+
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef _TEST_NETWORKSTATUS_SERVICE_H
+#define _TEST_NETWORKSTATUS_SERVICE_H
+
+#include <kmainwindow.h>
+
+#include "networkstatuscommon.h"
+
+class NetworkStatusIface_stub;
+class TestServiceView;
+
+class TestService : public KMainWindow {
+Q_OBJECT
+public:
+ TestService();
+ virtual ~TestService();
+ int status( const QString & network );
+ int establish( const QString & network );
+ int shutdown( const QString & network );
+ void simulateFailure();
+ void simulateDisconnect();
+protected slots:
+ void changeComboActivated( int index );
+ void registeredToDCOP( const QCString& appId );
+
+ void changeButtonClicked();
+
+ void slotStatusChange();
+private:
+ void registerService();
+ static QColor toQColor( NetworkStatus::Status );
+ NetworkStatusIface_stub * m_service;
+ NetworkStatus::Status m_status;
+ NetworkStatus::Status m_nextStatus;
+ TestServiceView * m_view;
+};
+
+#endif
Index: networkstatus/.svn/text-base/testserviceview.ui.svn-base
===================================================================
--- /dev/null
+++ networkstatus/.svn/text-base/testserviceview.ui.svn-base
@@ -0,0 +1,181 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>TestServiceView</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>TestServiceView</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>367</width>
+ <height>132</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel4</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;font size="+2"&gt;&lt;b&gt;Service for KDE 3 Offline Mode&lt;/b&gt;&lt;/font&gt;</string>
+ </property>
+ <property name="alignment">
+ <set>AlignVCenter</set>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Status:</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>statusLabel</cstring>
+ </property>
+ <property name="paletteBackgroundColor">
+ <color>
+ <red>0</red>
+ <green>255</green>
+ <blue>0</blue>
+ </color>
+ </property>
+ <property name="frameShape">
+ <enum>StyledPanel</enum>
+ </property>
+ <property name="text">
+ <string>STATUS</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout3</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel3</cstring>
+ </property>
+ <property name="text">
+ <string>Change to:</string>
+ </property>
+ </widget>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>Offline Disconnected</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Offline Failed</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Shutting Down</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Offline</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Establishing</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Online</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>changeCombo</cstring>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>51</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>changeButton</cstring>
+ </property>
+ <property name="text">
+ <string>Do change</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>41</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
+
Index: networkstatus/testclient2.cpp
===================================================================
--- /dev/null
+++ networkstatus/testclient2.cpp
@@ -0,0 +1,222 @@
+/* This file is part of kdepim.
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2
+ as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qvbox.h>
+
+#include <kaboutdata.h>
+#include <kcmdlineargs.h>
+#include <kdebug.h>
+#include <kdeversion.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <kiconloader.h>
+
+#include <connectionmanager.h>
+#include <networkstatusindicator.h>
+
+#include "testclientview.h"
+#include "testclient2.h"
+
+TestClient::TestClient()
+ : KMainWindow( 0, "ktestnetworkstatus" ),
+ m_layout( new QVBox( 0, "layout" ) ),
+ m_status( AppDisconnected )
+{
+ m_view = new TestClientView( this );
+ new StatusBarNetworkStatusIndicator( m_view, "statusindicator" );
+ // tell the KMainWindow that this is indeed the main widget
+ setCentralWidget(m_view);
+
+ networkStatusChanged( ConnectionManager::self()->status() );
+ appDisconnected();
+
+ connect( ConnectionManager::self(), SIGNAL( statusChanged( NetworkStatus::Status ) ), SLOT( networkStatusChanged( NetworkStatus::Status ) ) );
+ ConnectionManager::self()->registerConnectSlot( this, SLOT( doConnect() ) );
+ ConnectionManager::self()->registerDisconnectSlot( this, SLOT( doDisconnect() ) );
+
+ connect( m_view->connectButton, SIGNAL( clicked() ), SLOT( connectButtonClicked() ) );
+}
+
+TestClient::~TestClient()
+{
+}
+
+void TestClient::networkStatusChanged( NetworkStatus::Status status )
+{
+ kdDebug() << k_funcinfo << endl;
+ kdDebug() << "Networking is now: " << NetworkStatus::toString( status ) << " (" << status << ")" << endl;
+ m_view->netStatusLabel->setText( NetworkStatus::toString( status ) );
+ m_view->netStatusLabel->setPaletteBackgroundColor( toQColor( status ) );
+}
+
+void TestClient::doConnect()
+{
+ Q_ASSERT( ConnectionManager::self()->status() == NetworkStatus::Online );
+ if ( m_status != AppConnected ) {
+ appIsConnected();
+ }
+}
+
+void TestClient::doDisconnect()
+{
+ Q_ASSERT( ConnectionManager::self()->status() != NetworkStatus::Online );
+ if ( m_status == AppConnected ) {
+ appDisconnected();
+ }
+}
+
+void TestClient::connectButtonClicked()
+{
+ kdDebug() << k_funcinfo << endl;
+ if ( m_status == AppDisconnected ) {
+ switch ( ConnectionManager::self()->status() )
+ {
+ case NetworkStatus::NoNetworks:
+ case NetworkStatus::Online:
+ appIsConnected();
+ break;
+ default:
+ appWaiting();
+ break;
+ }
+ }
+ else if ( m_status == AppConnected || m_status == AppWaitingForConnect ) {
+ appDisconnected();
+ }
+}
+
+void TestClient::appWaiting()
+{
+ kdDebug() << k_funcinfo << endl;
+ //m_status = AppWaitingForConnect;
+ m_view->appStatusLabel->setText( "Waiting" );
+}
+
+void TestClient::appIsConnected()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( true );
+ m_view->connectButton->setText( "Disconnect" );
+ m_view->appStatusLabel->setText( "Connected" );
+ m_status = AppConnected;
+}
+
+void TestClient::appEstablishing()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->netStatusLabel->setText( "Establishing" );
+ m_view->connectButton->setEnabled( false );
+}
+
+void TestClient::appDisestablishing( )
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( false );
+ m_view->appStatusLabel->setText( "Disconnected" );
+}
+
+void TestClient::appDisconnected( )
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( true );
+ m_view->connectButton->setText( "Start Connect" );
+ m_view->appStatusLabel->setText( "Disconnected" );
+ m_status = AppDisconnected;
+}
+
+QColor TestClient::toQColor( NetworkStatus::Status st )
+{
+ QColor col;
+ switch ( st ) {
+ case NetworkStatus::NoNetworks:
+ col = Qt::darkGray;
+ break;
+ case NetworkStatus::Unreachable:
+ col = Qt::darkMagenta;
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::OfflineFailed:
+ col = Qt::darkRed;
+ break;
+ case NetworkStatus::ShuttingDown:
+ col = Qt::darkYellow;
+ break;
+ case NetworkStatus::Offline:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::Establishing:
+ col = Qt::yellow;
+ break;
+ case NetworkStatus::Online:
+ col = Qt::green;
+ break;
+ }
+ return col;
+}
+//main
+static const char description[] =
+ I18N_NOOP("Test Client for Network Status kded module");
+
+static const char version[] = "v0.1";
+
+static KCmdLineOptions options[] =
+{
+ KCmdLineLastOption
+};
+
+int main(int argc, char **argv)
+{
+ KAboutData about("KNetworkStatusTestClient", I18N_NOOP("knetworkstatustestclient"), version, description, KAboutData::License_GPL, "(C) 2007 Will Stephenson", 0, 0, "wstephenson@kde.org");
+ about.addAuthor( "Will Stephenson", 0, "wstephenson@kde.org" );
+ KCmdLineArgs::init(argc, argv, &about);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KApplication app;
+
+ // register ourselves as a dcop client
+ app.dcopClient()->registerAs(app.name(), false);
+
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ if (args->count() == 0)
+ {
+ TestClient *widget = new TestClient;
+ widget->show();
+ }
+ else
+ {
+ int i = 0;
+ for (; i < args->count(); i++)
+ {
+ TestClient *widget = new TestClient;
+ widget->show();
+ }
+ }
+ args->clear();
+
+ return app.exec();
+}
+
+#include "testclient2.moc"
+
Index: networkstatus/testclient2.h
===================================================================
--- /dev/null
+++ networkstatus/testclient2.h
@@ -0,0 +1,82 @@
+/* This file is part of kdepim.
+
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KTESTNETWORKSTATUS_H
+#define KTESTNETWORKSTATUS_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <dcopclient.h>
+#include <kapplication.h>
+#include <kmainwindow.h>
+#include <networkstatuscommon.h>
+
+#include "networkstatusiface_stub.h"
+
+class TestClientView;
+
+/**
+ * Test client that uses a ConnectionManager to change its state
+ *
+ * @short Main window class
+ * @author Will Stephenson <wstephenson@kde.org>
+ * @version 0.1
+ */
+class TestClient : public KMainWindow
+{
+Q_OBJECT
+public:
+ enum AppStatus{ AppDisconnected, AppWaitingForConnect, AppConnected };
+ /**
+ * Default Constructor
+ */
+ TestClient();
+
+ /**
+ * Default Destructor
+ */
+ virtual ~TestClient();
+
+private slots:
+ void networkStatusChanged( NetworkStatus::Status status );
+ void connectButtonClicked();
+ void doConnect();
+ void doDisconnect();
+private:
+ void appWaiting();
+ void appEstablishing();
+ void appIsConnected();
+ void appDisestablishing();
+ void appDisconnected();
+ static QColor toQColor( NetworkStatus::Status );
+private:
+ QHBox * m_layout;
+ NetworkStatusIface_stub *m_service;
+ TestClientView *m_view;
+ AppStatus m_status; // this represents the app's status not the network's status
+};
+
+#endif // KTESTNETWORKSTATUS_H
+
Index: networkstatus/testclient.cpp
===================================================================
--- /dev/null
+++ networkstatus/testclient.cpp
@@ -0,0 +1,234 @@
+/* This file is part of kdepim.
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2
+ as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <qlabel.h>
+#include <qpushbutton.h>
+
+
+#include <kaboutdata.h>
+#include <kcmdlineargs.h>
+#include <kdebug.h>
+#include <kdeversion.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <kiconloader.h>
+
+#include "connectionmanager.h"
+#include "testclientview.h"
+#include "testclient.h"
+
+TestClient::TestClient()
+ : KMainWindow( 0, "ktestnetworkstatus" ),
+ m_view(new TestClientView(this)),
+ m_status( AppDisconnected )
+{
+ // tell the KMainWindow that this is indeed the main widget
+ setCentralWidget(m_view);
+
+ networkStatusChanged( ConnectionManager::self()->status() );
+ appDisconnected();
+
+ connect( ConnectionManager::self(), SIGNAL( statusChanged( NetworkStatus::Status ) ), SLOT( networkStatusChanged( NetworkStatus::Status ) ) );
+
+ connect( m_view->connectButton, SIGNAL( toggled( bool ) ), SLOT( connectButtonToggled( bool ) ) );
+}
+
+TestClient::~TestClient()
+{
+}
+
+void TestClient::networkStatusChanged( NetworkStatus::Status status )
+{
+ kdDebug() << k_funcinfo << endl;
+//enum EnumStatus { NoNetworks = 1, Unreachable, OfflineDisconnected, OfflineFailed, ShuttingDown
+// , Offline, Establishing, Online };
+ kdDebug() << "Networking is now: " << NetworkStatus::toString( status ) << " (" << status << ")" << endl;
+ m_view->netStatusLabel->setText( NetworkStatus::toString( status ) );
+ m_view->netStatusLabel->setPaletteBackgroundColor( toQColor( status ) );
+ switch ( status ) {
+ case NetworkStatus::NoNetworks:
+ break;
+ case NetworkStatus::Unreachable:
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ break;
+ case NetworkStatus::OfflineFailed:
+ break;
+ case NetworkStatus::ShuttingDown:
+ if ( m_status == AppConnected ) {
+ appDisestablishing();
+ }
+ break;
+ case NetworkStatus::Offline:
+ if ( m_status == AppConnected ) {
+ appDisconnected();
+ }
+ break;
+ case NetworkStatus::Establishing:
+ if ( m_status == AppWaitingForConnect )
+ appEstablishing();
+ else if ( m_status == AppConnected )
+ appDisconnected();
+ break;
+ case NetworkStatus::Online:
+ if ( m_status == AppWaitingForConnect )
+ appIsConnected();
+ break;
+ default:
+ m_view->netStatusLabel->setText( "Unrecognised status code!" );
+ }
+}
+
+void TestClient::connectButtonToggled( bool on )
+{
+ kdDebug() << k_funcinfo << endl;
+ if ( on && m_status == AppDisconnected ) {
+ switch ( ConnectionManager::self()->status() )
+ {
+ case NetworkStatus::NoNetworks:
+ case NetworkStatus::Online:
+ appIsConnected();
+ break;
+ default:
+ appWaiting();
+ break;
+ }
+ }
+ else if ( !on && m_status == AppConnected ) {
+ appDisconnected();
+ }
+}
+
+void TestClient::appWaiting()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_status = AppWaitingForConnect;
+ m_view->appStatusLabel->setText( "Waiting" );
+}
+
+void TestClient::appIsConnected()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( true );
+ m_view->connectButton->setText( "Disconnect" );
+ m_view->appStatusLabel->setText( "Connected" );
+ m_status = AppConnected;
+}
+
+void TestClient::appEstablishing()
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->netStatusLabel->setText( "Establishing" );
+ m_view->connectButton->setEnabled( false );
+}
+
+void TestClient::appDisestablishing( )
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( false );
+ m_view->appStatusLabel->setText( "Disconnected" );
+}
+
+void TestClient::appDisconnected( )
+{
+ kdDebug() << k_funcinfo << endl;
+ m_view->connectButton->setEnabled( true );
+ m_view->connectButton->setText( "Start Connect" );
+ m_view->appStatusLabel->setText( "Disconnected" );
+ m_status = AppDisconnected;
+}
+
+QColor TestClient::toQColor( NetworkStatus::Status st )
+{
+ QColor col;
+ switch ( st ) {
+ case NetworkStatus::NoNetworks:
+ col = Qt::darkGray;
+ break;
+ case NetworkStatus::Unreachable:
+ col = Qt::darkMagenta;
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::OfflineFailed:
+ col = Qt::darkRed;
+ break;
+ case NetworkStatus::ShuttingDown:
+ col = Qt::darkYellow;
+ break;
+ case NetworkStatus::Offline:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::Establishing:
+ col = Qt::yellow;
+ break;
+ case NetworkStatus::Online:
+ col = Qt::green;
+ break;
+ }
+ return col;
+}
+//main
+static const char description[] =
+ I18N_NOOP("Test Client for Network Status kded module");
+
+static const char version[] = "v0.1";
+
+static KCmdLineOptions options[] =
+{
+ KCmdLineLastOption
+};
+
+int main(int argc, char **argv)
+{
+ KAboutData about("KNetworkStatusTestClient", I18N_NOOP("knetworkstatustestclient"), version, description, KAboutData::License_GPL, "(C) 2007 Will Stephenson", 0, 0, "wstephenson@kde.org");
+ about.addAuthor( "Will Stephenson", 0, "wstephenson@kde.org" );
+ KCmdLineArgs::init(argc, argv, &about);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KApplication app;
+
+ // register ourselves as a dcop client
+ app.dcopClient()->registerAs(app.name(), false);
+
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ if (args->count() == 0)
+ {
+ TestClient *widget = new TestClient;
+ widget->show();
+ }
+ else
+ {
+ int i = 0;
+ for (; i < args->count(); i++)
+ {
+ TestClient *widget = new TestClient;
+ widget->show();
+ }
+ }
+ args->clear();
+
+ return app.exec();
+}
+
+#include "testclient.moc"
+
Index: networkstatus/testclient.h
===================================================================
--- /dev/null
+++ networkstatus/testclient.h
@@ -0,0 +1,80 @@
+/* This file is part of kdepim.
+
+ Copyright (C) 2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef KTESTNETWORKSTATUS_H
+#define KTESTNETWORKSTATUS_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <dcopclient.h>
+#include <kapplication.h>
+#include <kmainwindow.h>
+#include <networkstatuscommon.h>
+
+#include "networkstatusiface_stub.h"
+
+class TestClientView;
+
+/**
+ * This class serves as the main window for ktestnetworkstatus. It handles the
+ * menus, toolbars, and status bars.
+ *
+ * @short Main window class
+ * @author Will Stephenson <wstephenson@kde.org>
+ * @version 0.1
+ */
+class TestClient : public KMainWindow
+{
+Q_OBJECT
+public:
+ enum AppStatus{ AppDisconnected, AppWaitingForConnect, AppConnected };
+ /**
+ * Default Constructor
+ */
+ TestClient();
+
+ /**
+ * Default Destructor
+ */
+ virtual ~TestClient();
+
+private slots:
+ void networkStatusChanged( NetworkStatus::Status status );
+ void connectButtonToggled( bool on );
+private:
+ void appWaiting();
+ void appEstablishing();
+ void appIsConnected();
+ void appDisestablishing();
+ void appDisconnected();
+ static QColor toQColor( NetworkStatus::Status );
+private:
+ NetworkStatusIface_stub *m_service;
+ TestClientView *m_view;
+ AppStatus m_status; // this represents the app's status not the network's status
+};
+
+#endif // KTESTNETWORKSTATUS_H
+
Index: networkstatus/testclientview.ui
===================================================================
--- /dev/null
+++ networkstatus/testclientview.ui
@@ -0,0 +1,177 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>TestClientView</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>TestClientView</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>356</width>
+ <height>127</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel4</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&lt;font size="+2"&gt;&lt;b&gt;Client for KDE 3 Offline Mode&lt;/b&gt;&lt;/font&gt;</string>
+ </property>
+ <property name="alignment">
+ <set>AlignVCenter</set>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Network status:</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>netStatusLabel</cstring>
+ </property>
+ <property name="paletteBackgroundColor">
+ <color>
+ <red>0</red>
+ <green>255</green>
+ <blue>0</blue>
+ </color>
+ </property>
+ <property name="frameShape">
+ <enum>Panel</enum>
+ </property>
+ <property name="text">
+ <string>STATUS</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout1_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_2</cstring>
+ </property>
+ <property name="text">
+ <string>App status:</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>appStatusLabel</cstring>
+ </property>
+ <property name="paletteBackgroundColor">
+ <color>
+ <red>0</red>
+ <green>255</green>
+ <blue>0</blue>
+ </color>
+ </property>
+ <property name="frameShape">
+ <enum>Panel</enum>
+ </property>
+ <property name="text">
+ <string>STATUS</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>31</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>connectButton</cstring>
+ </property>
+ <property name="text">
+ <string>Start Connect</string>
+ </property>
+ <property name="toggleButton">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>61</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
Index: networkstatus/testservice.cpp
===================================================================
--- /dev/null
+++ networkstatus/testservice.cpp
@@ -0,0 +1,219 @@
+/* This file is part of kdepim.
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2
+ as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qtimer.h>
+
+#include <dcopclient.h>
+#include <kaboutdata.h>
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <kdebug.h>
+#include <klocale.h>
+
+#include "testservice.h"
+#include "testserviceview.h"
+#include "networkstatusiface_stub.h"
+
+TestService::TestService() : KMainWindow( 0, "testservice" ),
+ m_service( new NetworkStatusIface_stub( "kded", "networkstatus" ) ),
+ m_status ( NetworkStatus::Offline ),
+ m_nextStatus( NetworkStatus::OfflineDisconnected ),
+ m_view( new TestServiceView( this ) )
+{
+ setCentralWidget( m_view );
+ kapp->dcopClient()->registerAs("testservice" );
+
+ connect( m_view->changeCombo, SIGNAL( activated( int ) ), SLOT( changeComboActivated( int ) ) );
+ connect( m_view->changeButton, SIGNAL( clicked() ), SLOT( changeButtonClicked() ) );
+
+ connect( kapp->dcopClient(), SIGNAL( applicationRegistered( const QCString& ) ), this, SLOT( registeredToDCOP( const QCString& ) ) );
+ kapp->dcopClient()->setNotifications( true );
+
+ m_view->statusLabel->setText( NetworkStatus::toString( m_status ) );
+ m_view->statusLabel->setPaletteBackgroundColor( toQColor( m_status ) );
+ setCaption( NetworkStatus::toString( m_status ) );
+
+ registerService();
+}
+
+TestService::~TestService()
+{
+ delete m_service;
+ delete m_view;
+}
+
+void TestService::registerService()
+{
+ NetworkStatus::Properties nsp;
+ nsp.name = "test_net";
+ nsp.service = kapp->dcopClient()->appId();
+ nsp.status = m_status;
+ m_service->registerNetwork( nsp );
+}
+
+void TestService::registeredToDCOP( const QCString & appId )
+{
+ if ( appId == "kded" )
+ registerService();
+}
+
+int TestService::status( const QString & network )
+{
+ Q_UNUSED( network );
+ return (int)m_status;
+}
+
+void TestService::changeComboActivated( int index )
+{
+ switch ( index ) {
+ case 0 /*NetworkStatus::OfflineDisconnected*/:
+ m_nextStatus = NetworkStatus::OfflineDisconnected;
+ break;
+ case 1 /*NetworkStatus::OfflineFailed*/:
+ m_nextStatus = NetworkStatus::OfflineFailed;
+ break;
+ case 2 /*NetworkStatus::ShuttingDown*/:
+ m_nextStatus = NetworkStatus::ShuttingDown;
+ break;
+ case 3 /*NetworkStatus::Offline*/:
+ m_nextStatus = NetworkStatus::Offline;
+ break;
+ case 4 /*NetworkStatus::Establishing*/:
+ m_nextStatus = NetworkStatus::Establishing;
+ break;
+ case 5 /*NetworkStatus::Online*/:
+ m_nextStatus = NetworkStatus::Online;
+ break;
+ default:
+ kdDebug() << "Unrecognised status!" << endl;
+ Q_ASSERT( false );
+ }
+ m_view->changeButton->setEnabled( true );
+}
+
+void TestService::changeButtonClicked()
+{
+ m_view->changeButton->setEnabled( false );
+ m_status = m_nextStatus;
+ m_service->setNetworkStatus( "test_net", ( int )m_status );
+ m_view->statusLabel->setText( NetworkStatus::toString( m_status ) );
+ m_view->statusLabel->setPaletteBackgroundColor( toQColor( m_status ) );
+ setCaption( NetworkStatus::toString( m_status ) );
+}
+
+int TestService::establish( const QString & network )
+{
+ Q_UNUSED( network );
+ m_status = NetworkStatus::Establishing;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+ m_nextStatus = NetworkStatus::Online;
+ QTimer::singleShot( 5000, this, SLOT( slotStatusChange() ) );
+ return (int)NetworkStatus::RequestAccepted;
+}
+
+int TestService::shutdown( const QString & network )
+{
+ Q_UNUSED( network );
+ m_status = NetworkStatus::ShuttingDown;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+ m_nextStatus = NetworkStatus::Offline;
+ QTimer::singleShot( 5000, this, SLOT( slotStatusChange() ) );
+ return (int)NetworkStatus::RequestAccepted;
+}
+
+void TestService::simulateFailure()
+{
+ m_status = NetworkStatus::OfflineFailed;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+}
+
+void TestService::simulateDisconnect()
+{
+ m_status = NetworkStatus::OfflineDisconnected;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+}
+
+void TestService::slotStatusChange()
+{
+ m_status = m_nextStatus;
+ m_service->setNetworkStatus( "test_net", (int)m_status );
+}
+
+QColor TestService::toQColor( NetworkStatus::Status st )
+{
+ QColor col;
+ switch ( st ) {
+ case NetworkStatus::NoNetworks:
+ col = Qt::darkGray;
+ break;
+ case NetworkStatus::Unreachable:
+ col = Qt::darkMagenta;
+ break;
+ case NetworkStatus::OfflineDisconnected:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::OfflineFailed:
+ col = Qt::darkRed;
+ break;
+ case NetworkStatus::ShuttingDown:
+ col = Qt::darkYellow;
+ break;
+ case NetworkStatus::Offline:
+ col = Qt::blue;
+ break;
+ case NetworkStatus::Establishing:
+ col = Qt::yellow;
+ break;
+ case NetworkStatus::Online:
+ col = Qt::green;
+ break;
+ }
+ return col;
+}
+
+static const char description[] =
+ I18N_NOOP("Test Service for Network Status kded module");
+
+static const char version[] = "v0.1";
+
+static KCmdLineOptions options[] =
+{
+ KCmdLineLastOption
+};
+
+int main( int argc, char** argv )
+{
+ KAboutData about("KNetworkStatusTestService", I18N_NOOP("knetworkstatustestservice"), version, description, KAboutData::License_GPL, "(C) 2007 Will Stephenson", 0, 0, "wstephenson@kde.org");
+ about.addAuthor( "Will Stephenson", 0, "wstephenson@kde.org" );
+ KCmdLineArgs::init(argc, argv, &about);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KApplication app;
+
+ TestService * test = new TestService;
+ test->show();
+ return app.exec();
+}
+
+#include "testservice.moc"
Index: networkstatus/testservice.h
===================================================================
--- /dev/null
+++ networkstatus/testservice.h
@@ -0,0 +1,60 @@
+/* This file is part of kdepim.
+
+ Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+
+#ifndef _TEST_NETWORKSTATUS_SERVICE_H
+#define _TEST_NETWORKSTATUS_SERVICE_H
+
+#include <kmainwindow.h>
+
+#include "networkstatuscommon.h"
+
+class NetworkStatusIface_stub;
+class TestServiceView;
+
+class TestService : public KMainWindow {
+Q_OBJECT
+public:
+ TestService();
+ virtual ~TestService();
+ int status( const QString & network );
+ int establish( const QString & network );
+ int shutdown( const QString & network );
+ void simulateFailure();
+ void simulateDisconnect();
+protected slots:
+ void changeComboActivated( int index );
+ void registeredToDCOP( const QCString& appId );
+
+ void changeButtonClicked();
+
+ void slotStatusChange();
+private:
+ void registerService();
+ static QColor toQColor( NetworkStatus::Status );
+ NetworkStatusIface_stub * m_service;
+ NetworkStatus::Status m_status;
+ NetworkStatus::Status m_nextStatus;
+ TestServiceView * m_view;
+};
+
+#endif
Index: networkstatus/testserviceview.ui
===================================================================
--- /dev/null
+++ networkstatus/testserviceview.ui
@@ -0,0 +1,181 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>TestServiceView</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>TestServiceView</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>367</width>
+ <height>132</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel4</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;font size="+2"&gt;&lt;b&gt;Service for KDE 3 Offline Mode&lt;/b&gt;&lt;/font&gt;</string>
+ </property>
+ <property name="alignment">
+ <set>AlignVCenter</set>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Status:</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>statusLabel</cstring>
+ </property>
+ <property name="paletteBackgroundColor">
+ <color>
+ <red>0</red>
+ <green>255</green>
+ <blue>0</blue>
+ </color>
+ </property>
+ <property name="frameShape">
+ <enum>StyledPanel</enum>
+ </property>
+ <property name="text">
+ <string>STATUS</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout3</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel3</cstring>
+ </property>
+ <property name="text">
+ <string>Change to:</string>
+ </property>
+ </widget>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>Offline Disconnected</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Offline Failed</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Shutting Down</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Offline</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Establishing</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Online</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>changeCombo</cstring>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>51</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>changeButton</cstring>
+ </property>
+ <property name="text">
+ <string>Do change</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>41</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
+