Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.3
kdenetwork3
kdenetwork_networkstatus_branch.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kdenetwork_networkstatus_branch.diff of Package kdenetwork3
Index: kopete/protocols/groupwise/gwaccount.h =================================================================== --- kopete/protocols/groupwise/gwaccount.h.orig +++ kopete/protocols/groupwise/gwaccount.h @@ -27,7 +27,7 @@ #include "gwerror.h" -#include <managedconnectionaccount.h> +#include <kopetepasswordedaccount.h> class KActionMenu; @@ -54,7 +54,7 @@ using namespace GroupWise; /** * This represents an account on a Novell GroupWise Messenger Server */ -class GroupWiseAccount : public Kopete::ManagedConnectionAccount +class GroupWiseAccount : public Kopete::PasswordedAccount { Q_OBJECT public: @@ -146,7 +146,7 @@ public slots: void slotTestRTFize(); /* Connects to the server. */ - void performConnectWithPassword ( const QString &password ); + void connectWithPassword ( const QString &password ); /* Disconnects from the server. */ virtual void disconnect(); Index: kopete/protocols/groupwise/gwaccount.cpp =================================================================== --- kopete/protocols/groupwise/gwaccount.cpp.orig +++ kopete/protocols/groupwise/gwaccount.cpp @@ -66,7 +66,7 @@ #include "gwaccount.h" GroupWiseAccount::GroupWiseAccount( GroupWiseProtocol *parent, const QString& accountID, const char *name ) -: Kopete::ManagedConnectionAccount ( parent, accountID, 0, "groupwiseaccount" ) +: Kopete::PasswordedAccount ( parent, accountID, 0, "groupwiseaccount" ) { Q_UNUSED( name ); // Init the myself contact @@ -232,7 +232,7 @@ void GroupWiseAccount::setAway( bool awa setOnlineStatus( protocol()->groupwiseAvailable ); } -void GroupWiseAccount::performConnectWithPassword( const QString &password ) +void GroupWiseAccount::connectWithPassword( const QString &password ) { if ( password.isEmpty() ) { Index: kopete/kopete/kopetewindow.h =================================================================== --- kopete/kopete/kopetewindow.h.orig +++ kopete/kopete/kopetewindow.h @@ -24,6 +24,7 @@ #include <kmainwindow.h> #include <qlabel.h> +#include <networkstatuscommon.h> class QHBox; class QTimer; @@ -240,6 +241,7 @@ private: int deskRight; QPoint position; QHBox *m_statusBarWidget; + QHBox *m_statusBarOfflineModeWidget; KopeteSystemTray *m_tray; bool m_autoHide; unsigned int m_autoHideTimeout; @@ -259,6 +261,7 @@ private: KPopupMenu * m_globalStatusMessageMenu; QLineEdit * m_newMessageEdit; QString m_globalStatusMessageStored; + QLabel * m_offlineModeLabel; }; Index: kopete/kopete/kopeteapplication.cpp =================================================================== --- kopete/kopete/kopeteapplication.cpp.orig +++ kopete/kopete/kopeteapplication.cpp @@ -28,6 +28,7 @@ #include <klocale.h> #include <kcmdlineargs.h> #include <kmessagebox.h> +#include <connectionmanager.h> #include "addaccountwizard.h" #include "kabcpersistence.h" @@ -211,7 +212,9 @@ void KopeteApplication::slotAllPluginsLo KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); // --noconnect not specified? - if ( args->isSet( "connect" ) && KopetePrefs::prefs()->autoConnect() ) + if ( args->isSet( "connect" ) && KopetePrefs::prefs()->autoConnect() && + ( ConnectionManager::self()->status() == NetworkStatus::NoNetworks || + ConnectionManager::self()->status() == NetworkStatus::Online ) ) Kopete::AccountManager::self()->connectAll(); Index: kopete/kopete/kopetewindow.cpp =================================================================== --- kopete/kopete/kopetewindow.cpp.orig +++ kopete/kopete/kopetewindow.cpp @@ -52,6 +52,8 @@ #include <ksqueezedtextlabel.h> #include <kstringhandler.h> #include <kurl.h> +#include <connectionmanager.h> +#include <networkstatusindicator.h> #include "addcontactpage.h" #include "addcontactwizard.h" @@ -146,6 +148,10 @@ KopeteWindow::KopeteWindow( QWidget *par m_globalStatusMessage = new KSqueezedTextLabel( statusBarMessage ); statusBar()->addWidget(statusBarMessage, 1, false ); + StatusBarNetworkStatusIndicator * indicator = new StatusBarNetworkStatusIndicator( this, "netstatusindicator" ); + statusBar()->addWidget( indicator, 0, false ); + indicator->init(); + m_pluginConfig = 0L; m_autoHideTimer = new QTimer( this ); @@ -193,7 +199,6 @@ KopeteWindow::KopeteWindow( QWidget *par //install an event filter for the quick search toolbar so we can //catch the hide events toolBar( "quickSearchBar" )->installEventFilter( this ); - } void KopeteWindow::initView() Index: kopete/kopete/config/behavior/behaviorconfig_general.ui =================================================================== --- kopete/kopete/config/behavior/behaviorconfig_general.ui.orig +++ kopete/kopete/config/behavior/behaviorconfig_general.ui @@ -8,8 +8,8 @@ <rect> <x>0</x> <y>0</y> - <width>348</width> - <height>302</height> + <width>454</width> + <height>318</height> </rect> </property> <property name="caption"> @@ -151,13 +151,16 @@ <cstring>mAutoConnect</cstring> </property> <property name="text"> - <string>Connect automatically at &startup</string> + <string>Connect automatically</string> + </property> + <property name="accel"> + <string></string> </property> <property name="toolTip" stdset="0"> - <string>Connect all your accounts automatically when starting Kopete</string> + <string>Connect on startup and when a network is available</string> </property> <property name="whatsThis" stdset="0"> - <string>When starting Kopete all your accounts will be connected automatically. Note: You can exclude accounts individually in their properties.</string> + <string>When starting Kopete, and whenever a network is online, all your accounts will be connected automatically. Note: You can exclude accounts individually in their properties.</string> </property> </widget> </vbox> Index: kopete/libkopete/managedconnectionaccount.h =================================================================== --- kopete/libkopete/managedconnectionaccount.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - managedconnectionaccount.h - Kopete Account that uses a manager to - control its connection and respond to connection events - - Copyright (c) 2005 by Will Stephenson <lists@stevello.free-online.co.uk> - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org> - - ************************************************************************* - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Lesser General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - ************************************************************************* -*/ - -#ifndef MANAGEDCONNECTIONACCOUNT_H -#define MANAGEDCONNECTIONACCOUNT_H - -#include "networkstatuscommon.h" - -#include "kopetepasswordedaccount.h" - -namespace Kopete -{ -class Protocol; - -/** - * A ManagedConnectionAccount queries the NetworkStatus KDED Module before trying to connect using - * connectwithPassword, starting a network connection if needed. If the network is not available, - * it delays calling performConnectWithPassword until it receives notification from the daemon - * that the network is up. The account receiveds notifications from the daemon of network failures - * and calls disconnect to set the account offline in a timely manner. - */ -class KOPETE_EXPORT ManagedConnectionAccount : public PasswordedAccount -{ - Q_OBJECT - public: - /** - * @brief ManagedConnectionAccount constructor. - * @param parent The protocol this account connects via - * @param acctId The ID of this account - should be unique within this protocol - * @param maxPasswordLength The maximum length for passwords for this account, or 0 for no limit - * @param name The name for this QObject - */ - ManagedConnectionAccount( Protocol *parent, const QString &acctId, uint maxPasswordLength = 0, const char *name = 0 ); - public slots: - /** - * @brief Begin the connection process, by checking if the connection is available with the ConnectionManager. - * This method is called by PasswordedAccount::connect() - * @param password the password to connect with. - */ - void connectWithPassword( const QString &password ); - protected: - /** - * @brief Connect to the server, once the network is available. - * This method is called by the ManagedConnectionAccount once the network is available. In this method you should set up your - * network connection and connect to the server. - */ - virtual void performConnectWithPassword( const QString & password ) = 0; - protected slots: - /** - * @brief Handle a change in the network connection - * Called by the ConnectionManager when the network comes up or fails. - * The default implementation calls performConnectWithPassword when the network goes online and connectWithPassword() was - * previously called, and calls disconnect() when the connection goes down. - * @param host For future expansion. - * @param status the new status of the network - */ - virtual void slotConnectionStatusChanged( const QString & host, NetworkStatus::EnumStatus status ); - private: - QString m_password; - bool m_waitingForConnection; -}; - -} - -#endif Index: kopete/libkopete/connectionmanager.h =================================================================== --- kopete/libkopete/connectionmanager.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - connectionmanager.h - Provides the client side interface to the kde networkstatus daemon - - Copyright (c) 2004 by Will Stephenson <lists@stevello.free-online.co.uk> - - ************************************************************************* - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Lesser General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - ************************************************************************* -*/ - -#ifndef KDE_CONNECTION_MANAGER_H -#define KDE_CONNECTION_MANAGER_H - -#include <dcopobject.h> - -#include "kopete_export.h" -#include "networkstatuscommon.h" - -class ConnectionManagerPrivate; - -class KOPETE_EXPORT ConnectionManager : public QObject, virtual public DCOPObject -{ - Q_OBJECT - K_DCOP - public: - static ConnectionManager* self(); - enum State { Inactive, Online, Offline, Pending }; - virtual ~ConnectionManager(); - NetworkStatus::EnumStatus status( const QString & host ); - // check if a hostname is available. Ask user if offline. Request host - NetworkStatus::EnumRequestResult requestConnection( QWidget* mainWidget, const QString & host, bool userInitiated ); - // method to relinquish a connection - void relinquishConnection( const QString & host ); - signals: - // signal that the network for a hostname is up/down - void statusChanged( const QString & host, NetworkStatus::EnumStatus status ); - protected: - // sets up internal state - void initialise(); - // reread the desktop status from the daemon and update internal state - void updateStatus(); - // ask if the user would like to reconnect - bool askToConnect( QWidget * mainWidget ); - k_dcop: - void slotStatusChanged( QString host, int status ); - private: - ConnectionManager( QObject *parent, const char * name ); - ConnectionManagerPrivate *d; - static ConnectionManager * s_self; -}; - -#endif - Index: kopete/libkopete/networkstatuscommon.cpp =================================================================== --- kopete/libkopete/networkstatuscommon.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "networkstatuscommon.h" -#include <kdebug.h> - -QDataStream & operator<< ( QDataStream & s, const NetworkStatus::Properties p ) -{ - kdDebug() << k_funcinfo << "status is: " << (int)p.status << endl; - s << (int)p.status; - s << (int)p.onDemandPolicy; - s << p.service; - s << ( p.internet ? 1 : 0 ); - s << p.netmasks; - return s; -} - -QDataStream & operator>> ( QDataStream & s, NetworkStatus::Properties &p ) -{ - int status, onDemandPolicy, internet; - s >> status; - kdDebug() << k_funcinfo << "status is: " << status << endl; - p.status = ( NetworkStatus::EnumStatus )status; - s >> onDemandPolicy; - p.onDemandPolicy = ( NetworkStatus::EnumOnDemandPolicy )onDemandPolicy; - s >> p.service; - s >> internet; - if ( internet ) - p.internet = true; - else - p.internet = false; - s >> p.netmasks; - kdDebug() << k_funcinfo << "enum converted status is: " << p.status << endl; - return s; -} Index: kopete/libkopete/managedconnectionaccount.cpp =================================================================== --- kopete/libkopete/managedconnectionaccount.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - managedconnectionaccount.h - Kopete Account that uses a manager to - control its connection and respond to connection events - - Copyright (c) 2005 by Will Stephenson <lists@stevello.free-online.co.uk> - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org> - - ************************************************************************* - * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Lesser General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * - * * - ************************************************************************* -*/ - -#include "connectionmanager.h" -#include "kopeteuiglobal.h" - -#include "managedconnectionaccount.h" - - -namespace Kopete -{ - -ManagedConnectionAccount::ManagedConnectionAccount( Protocol *parent, const QString &acctId, uint maxPasswordLength, const char *name ) - : PasswordedAccount( parent, acctId, maxPasswordLength, name ), m_waitingForConnection( false ) -{ - QObject::connect( ConnectionManager::self(), SIGNAL(statusChanged(const QString&, NetworkStatus::EnumStatus ) ), - SLOT(slotConnectionStatusChanged(const QString&, NetworkStatus::EnumStatus ) ) ); -} - -void ManagedConnectionAccount::connectWithPassword( const QString &password ) -{ - m_password = password; - NetworkStatus::EnumStatus status = ConnectionManager::self()->status( QString::null ); - if ( status == NetworkStatus::NoNetworks ) - performConnectWithPassword( password ); - else - { - m_waitingForConnection = true; - // need to adapt libkopete so we know the hostname in this class and whether the connection was user initiated - // for now, these are the default parameters to always bring up a connection to "the internet". - NetworkStatus::EnumRequestResult response = ConnectionManager::self()->requestConnection( Kopete::UI::Global::mainWidget(), QString::null, true ); - if ( response == NetworkStatus::Connected ) - { - m_waitingForConnection = false; - performConnectWithPassword( password ); - } - else if ( response == NetworkStatus::UserRefused || response == NetworkStatus::Unavailable ) - disconnect(); - } -} - -void ManagedConnectionAccount::slotConnectionStatusChanged( const QString & host, NetworkStatus::EnumStatus status ) -{ - Q_UNUSED(host); // as above, we didn't register a hostname, so treat any connection as our own. - - if ( m_waitingForConnection && ( status == NetworkStatus::Online || status == NetworkStatus::NoNetworks ) ) - { - m_waitingForConnection = false; - performConnectWithPassword( m_password ); - } - else if ( isConnected() && ( status == NetworkStatus::Offline - || status == NetworkStatus::ShuttingDown - || status == NetworkStatus::OfflineDisconnected - || status == NetworkStatus::OfflineFailed ) ) - disconnect(); -} - -} // end namespace Kopete -#include "managedconnectionaccount.moc" Index: kopete/libkopete/networkstatuscommon.h =================================================================== --- kopete/libkopete/networkstatuscommon.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef NETWORKSTATUS_COMMON_H -#define NETWORKSTATUS_COMMON_H - -#include <qstringlist.h> - -namespace NetworkStatus -{ - enum EnumStatus { NoNetworks = 1, Unreachable, OfflineDisconnected, OfflineFailed, ShuttingDown, Offline, Establishing, Online }; - enum EnumRequestResult { RequestAccepted = 1, Connected, UserRefused, Unavailable }; - enum EnumOnDemandPolicy { All, User, None, Permanent }; - struct Properties - { - QString name; - // status of the network - EnumStatus status; - // policy for on-demand usage as defined by the service - EnumOnDemandPolicy onDemandPolicy; - // identifier for the service - QCString service; - // indicate that the connection is to 'the internet' - similar to default gateway in routing - bool internet; - // list of netmasks that the network connects to - overridden by above internet - QStringList netmasks; - // for future expansion consider - // EnumChargingModel - FlatRate, TimeCharge, VolumeCharged - // EnumLinkStatus - for WLANs - VPOOR, POOR, AVERAGE, GOOD, EXCELLENT - }; -} - -QDataStream & operator>> ( QDataStream & s, NetworkStatus::Properties &p ); -QDataStream & operator<< ( QDataStream & s, const NetworkStatus::Properties p ); - -#endif Index: kopete/libkopete/connectionmanager.cpp =================================================================== --- kopete/libkopete/connectionmanager.cpp +++ /dev/null @@ -1,153 +0,0 @@ -#include <kapplication.h> -#include <kdebug.h> -#include <klocale.h> -#include <kmessagebox.h> -#include <kstaticdeleter.h> - -#include "clientiface_stub.h" -#include "networkstatuscommon.h" - -#include "connectionmanager.h" - -// ConnectionManager's private parts -class ConnectionManagerPrivate -{ - public: - // this holds the currently active state - ConnectionManager::State m_state; - ClientIface_stub * m_stub; - bool m_userInitiatedOnly; -}; - -// Connection manager itself -ConnectionManager::ConnectionManager( QObject * parent, const char * name ) : DCOPObject( "ConnectionManager" ),QObject( parent, name ) -{ - d = new ConnectionManagerPrivate; - - d->m_stub = new ClientIface_stub( kapp->dcopClient(), "kded", "networkstatus" ); - - connectDCOPSignal( "kded", "networkstatus", "statusChange(QString,int)", "slotStatusChanged(QString,int)", false ); - d->m_userInitiatedOnly = false; - initialise(); -} - -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->m_state = Inactive; - updateStatus(); -} - -void ConnectionManager::updateStatus() -{ - NetworkStatus::EnumStatus daemonStatus = (NetworkStatus::EnumStatus)d->m_stub->status( QString::null ); - kdDebug() << k_funcinfo << endl; - switch ( daemonStatus ) - { - case NetworkStatus::Offline: - case NetworkStatus::OfflineFailed: - case NetworkStatus::OfflineDisconnected: - case NetworkStatus::ShuttingDown: - if ( d->m_state == Online ) - { - kdDebug() << "STATE IS PENDING" << endl; - d->m_state = Pending; - } - else - { - kdDebug() << "STATE IS OFFLINE" << endl; - d->m_state = Offline; - } - break; - case NetworkStatus::Establishing: - case NetworkStatus::Online: - kdDebug() << "STATE IS ONLINE" << endl; - d->m_state = Online; - break; - case NetworkStatus::NoNetworks: - case NetworkStatus::Unreachable: - kdDebug() << "STATE IS INACTIVE" << endl; - d->m_state = Inactive; - break; - } -} - -ConnectionManager::~ConnectionManager() -{ - delete d; -} - -NetworkStatus::EnumStatus ConnectionManager::status( const QString & host ) -{ - // need also to check that the daemon hasn't died - updateStatus(); - if ( d->m_state == Pending ) - return NetworkStatus::Offline; - if ( d->m_state == Online ) - return NetworkStatus::Online; - if ( d->m_state == Offline ) - return NetworkStatus::Offline; - return NetworkStatus::NoNetworks; -} - -NetworkStatus::EnumRequestResult ConnectionManager::requestConnection( QWidget * mainWidget, const QString & host, bool userInitiated ) -{ - kdDebug() << k_funcinfo << endl; - NetworkStatus::EnumRequestResult result; - // if offline and the user has previously indicated they didn't want any new connections, suppress it - if ( d->m_state == Offline && !userInitiated && d->m_userInitiatedOnly ) - result = NetworkStatus::UserRefused; - // if offline, ask the user whether this connection should be allowed - if ( d->m_state == Offline ) - { - if ( askToConnect( mainWidget ) ) - //result = NetworkStatus::Connected; - result = (NetworkStatus::EnumRequestResult)d->m_stub->request( host, userInitiated ); - else - result = NetworkStatus::UserRefused; - } - // otherwise, just ask for the connection - else - result = (NetworkStatus::EnumRequestResult)d->m_stub->request( host, userInitiated ); - - return result; -} - -void ConnectionManager::relinquishConnection( const QString & host ) -{ - d->m_stub->relinquish( host ); -} - -void ConnectionManager::slotStatusChanged( QString host, int status ) -{ - kdDebug() << k_funcinfo << endl; - updateStatus(); - // reset user initiated only flag if we are now online - if ( d->m_state == Online ) - d->m_userInitiatedOnly = false; - - emit statusChanged( host, (NetworkStatus::EnumStatus)status ); -} - -bool ConnectionManager::askToConnect( QWidget * mainWidget ) -{ - i18n( "A network connection was disconnected. The application is now in offline mode. Do you want the application to resume network operations when the network is available again?" ); - i18n( "This application is currently in offline mode. Do you want to connect?" ); - return ( KMessageBox::questionYesNo( mainWidget, - i18n("This application is currently in offline mode. Do you want to connect in order to carry out this operation?"), - i18n("Leave Offline Mode?"), - i18n("Connect"), i18n("Stay Offline"), - QString::fromLatin1("OfflineModeAlwaysGoOnline") ) == KMessageBox::Yes ); -} - -#include "connectionmanager.moc" Index: kopete/libkopete/kopeteaccountmanager.h =================================================================== --- kopete/libkopete/kopeteaccountmanager.h.orig +++ kopete/libkopete/kopeteaccountmanager.h @@ -208,6 +208,10 @@ private: AccountManager(); private slots: + /** + * Slot called by ConnectionManager to connect everything + */ + void doConnect(); void slotPluginLoaded( Kopete::Plugin *plugin ); void slotAccountOnlineStatusChanged(Kopete::Contact *c, const Kopete::OnlineStatus &oldStatus, const Kopete::OnlineStatus &newStatus); Index: kopete/libkopete/kopeteaccountmanager.cpp =================================================================== --- kopete/libkopete/kopeteaccountmanager.cpp.orig +++ kopete/libkopete/kopeteaccountmanager.cpp @@ -27,12 +27,15 @@ #include <kglobal.h> #include <kplugininfo.h> +#include <connectionmanager.h> + #include "kopeteaccount.h" #include "kopeteaway.h" #include "kopeteprotocol.h" #include "kopetecontact.h" #include "kopetecontactlist.h" #include "kopetepluginmanager.h" +#include "kopeteprefs.h" #include "kopeteonlinestatus.h" #include "kopeteonlinestatusmanager.h" #include "kopetemetacontact.h" @@ -78,6 +81,8 @@ AccountManager::AccountManager() : QObject( qApp, "KopeteAccountManager" ) { d = new Private; + ConnectionManager::self()->registerConnectSlot( this, SLOT( doConnect() ) ); + ConnectionManager::self()->registerDisconnectSlot( this, SLOT( disconnectAll() ) ); } @@ -433,6 +438,12 @@ void AccountManager::slotAccountOnlineSt emit accountOnlineStatusChanged(account, oldStatus, newStatus); } +void AccountManager::doConnect() +{ + if ( KopetePrefs::prefs()->autoConnect() ) + setAvailableAll(); +} + } //END namespace Kopete #include "kopeteaccountmanager.moc" Index: kopete/libkopete/Makefile.am =================================================================== --- kopete/libkopete/Makefile.am.orig +++ kopete/libkopete/Makefile.am @@ -19,7 +19,7 @@ AM_CPPFLAGS = -DKDE_NO_COMPAT -DQT_NO_CO lib_LTLIBRARIES = libkopete.la -libkopete_la_SOURCES = knotification.cpp connectionmanager.cpp kopeteonlinestatus.cpp kopeteonlinestatusmanager.cpp \ +libkopete_la_SOURCES = knotification.cpp kopeteonlinestatus.cpp kopeteonlinestatusmanager.cpp \ kopeteprotocol.cpp kopetecontact.cpp kopetepluginmanager.cpp kopeteplugin.cpp \ kopetemessage.cpp kopetechatsession.cpp kopetechatsessionmanager.cpp \ kopetecontactlist.cpp kopetemetacontact.cpp kopeteawaydialog.cpp kopetetransfermanager.cpp \ @@ -30,12 +30,12 @@ libkopete_la_SOURCES = knotification.cpp kopetemimetypehandler.cpp kopetetask.cpp kopetemimesourcefactory.cpp \ kopeteeventpresentation.cpp kopetenotifyevent.cpp kopetenotifydataobject.cpp kopeteblacklister.cpp \ kopetemessageevent.cpp kopetemessagehandler.cpp kopetemessagehandlerchain.cpp \ - kopetesimplemessagehandler.cpp kopeteproperties.cpp kabcpersistence.cpp connectionmanager.skel \ - clientiface.stub managedconnectionaccount.cpp networkstatuscommon.h kopeteconfig.kcfgc kopeteutils.cpp \ + kopetesimplemessagehandler.cpp kopeteproperties.cpp kabcpersistence.cpp \ + kopeteconfig.kcfgc kopeteutils.cpp \ kopeteprefs.cpp kopetepicture.cpp webcamwidget.cpp libkopete_la_LDFLAGS = -no-undefined -version-info 1:0:0 $(all_libraries) -libkopete_la_LIBADD = -lkabc ui/libkopeteui.la $(COMPAT_LIBS) $(LIB_KIO) $(LIB_XSS) $(LIB_XRENDER) +libkopete_la_LIBADD = -lkabc ui/libkopeteui.la $(COMPAT_LIBS) $(LIB_KIO) $(LIB_XSS) $(LIB_XRENDER) -lconnectionmanager kde_kcfg_DATA = kopete.kcfg @@ -62,7 +62,7 @@ kopeteinclude_HEADERS = kopeteaccount.h kopetechatsession.h kopetechatsessionmanager.h kopetemetacontact.h kopetemimetypehandler.h \ kopeteonlinestatus.h kopeteonlinestatusmanager.h kopetepasswordedaccount.h \ kopetepassword.h kopeteplugin.h kopeteprotocol.h kopetesimplemessagehandler.h kopetetask.h \ - kopetetransfermanager.h kopeteuiglobal.h kabcpersistence.h managedconnectionaccount.h \ + kopetetransfermanager.h kopeteuiglobal.h kabcpersistence.h \ kopetenotifydataobject.h kopeteversion.h kopeteprefs.h kopetepicture.h webcamwidget.h \ kopetepluginmanager.h Index: kppp/kpppwidget.cpp =================================================================== --- kppp/kpppwidget.cpp.orig +++ kppp/kpppwidget.cpp @@ -69,6 +69,8 @@ #include "general.h" #include "modems.h" +#include "networkstatusiface_stub.h" + // delay disconnection for a second #define DISCONNECT_DELAY 1000 @@ -79,6 +81,7 @@ KPPPWidget::KPPPWidget( QWidget *parent, , acct(0) , m_bCmdlAccount (false) , m_bCmdlModem (false) + , m_serviceStub( 0 ) { tabWindow = 0; @@ -336,9 +339,17 @@ KPPPWidget::KPPPWidget( QWidget *parent, // attach to the DCOP server, if possible if (!kapp->dcopClient()->attach()) kdDebug(5002) << "Error: Could not connect to the DCOP server" << endl; - else + else { kapp->dcopClient()->registerAs(kapp->name(), true); + m_serviceStub = new NetworkStatusIface_stub( "kded", "networkstatus" ); + + connect( kapp->dcopClient(), SIGNAL( applicationRegistered( const QCString& ) ), + this, SLOT( appRegisteredToDCOP( const QCString& ) ) ); + kapp->dcopClient()->setNotifications( true ); + registerService(); + } + // this timer will delay the actual disconnection DISCONNECTION_DELAY ms // to give applications time to shutdown, logout, whatever.. disconnectTimer = new QTimer(this); @@ -581,6 +592,7 @@ void KPPPWidget::sigPPPDDied() { disconnectTimer->stop(); // signal other applications that we are disconnected now kapp->dcopClient()->emitDCOPSignal("KpppIface", "disconnected()", QByteArray()); + m_serviceStub->setNetworkStatus( KDED_NETWORK_NAME, NetworkStatus::Offline ); kdDebug(5002) << "Executing command on disconnect since pppd has died." << endl; QApplication::flushX(); @@ -798,6 +810,7 @@ void KPPPWidget::disconnect() { // signal other applications that we are about to go offline now kapp->dcopClient()->emitDCOPSignal("KpppIface", "aboutToDisconnect()", QByteArray()); + m_serviceStub->setNetworkStatus( KDED_NETWORK_NAME, NetworkStatus::ShuttingDown ); con_win->hide(); con->show(); con->disableButtons(); // will reenable them later in delayedDisconnect() @@ -836,6 +849,7 @@ void KPPPWidget::delayedDisconnect() { // signal other applications that we are disconnected now kapp->dcopClient()->emitDCOPSignal("KpppIface", "disconnected()", QByteArray()); + m_serviceStub->setNetworkStatus( KDED_NETWORK_NAME, NetworkStatus::Offline ); QApplication::flushX(); execute_command(gpppdata.command_on_disconnect()); @@ -880,6 +894,7 @@ void KPPPWidget::quitbutton() { // signal other applications that we are disconnected now kapp->dcopClient()->emitDCOPSignal("KpppIface", "disconnected()", QByteArray()); + m_serviceStub->setNetworkStatus( KDED_NETWORK_NAME, NetworkStatus::Offline ); QApplication::flushX(); execute_command(gpppdata.command_on_disconnect()); @@ -1068,6 +1083,25 @@ void KPPPWidget::showNews() { #endif } +NetworkStatusIface_stub * KPPPWidget::networkService() const +{ + return m_serviceStub; +} + +void KPPPWidget::appRegisteredToDCOP( const QCString & appId ) +{ + if ( appId == "kded" ) + registerService(); +} + +void KPPPWidget::registerService() +{ + NetworkStatus::Properties nsp; + nsp.name = KDED_NETWORK_NAME; + nsp.service = kapp->dcopClient()->appId(); + nsp.status = NetworkStatus::NoNetworks; + m_serviceStub->registerNetwork( nsp ); +} #include "kpppwidget.moc" Index: kppp/connect.cpp =================================================================== --- kppp/connect.cpp.orig +++ kppp/connect.cpp @@ -71,6 +71,7 @@ #include "pppstats.h" #include "requester.h" #include "utils.h" +#include "networkstatusiface_stub.h" extern KPPPWidget *p_kppp; @@ -217,6 +218,7 @@ void ConnectWidget::init() { // signal other applications that we are about to get connected kapp->dcopClient()->emitDCOPSignal("KpppIface", "aboutToConnect()", QByteArray()); + p_kppp->networkService()->setNetworkStatus( KDED_NETWORK_NAME, NetworkStatus::Establishing ); // run the "before-connect" command if (!gpppdata.command_before_connect().isEmpty()) { @@ -1193,7 +1195,7 @@ void ConnectWidget::if_waiting_slot() { // signal other applications that we are connected now kapp->dcopClient()->emitDCOPSignal("KpppIface", "connected()", QByteArray()); - + p_kppp->networkService()->setNetworkStatus( KDED_NETWORK_NAME, NetworkStatus::Online ); if(!gpppdata.command_on_connect().isEmpty()) { messg->setText(i18n("Running startup command...")); Index: kppp/kpppwidget.h =================================================================== --- kppp/kpppwidget.h.orig +++ kppp/kpppwidget.h @@ -40,6 +40,8 @@ #include "KPPPIface.h" +#define KDED_NETWORK_NAME "KPPPNetwork" + class GeneralWidget; class ModemsWidget; class ModemWidget; @@ -49,6 +51,7 @@ class AboutWidget; class PPPStats; class KDialogBase; class KPushButton; +class NetworkStatusIface_stub; class SignalEvent : public QEvent { public: @@ -72,6 +75,7 @@ public: void setQuitOnDisconnect (bool b); bool quitOnDisconnect () {return m_bQuitOnDisconnect;}; + NetworkStatusIface_stub * networkService() const; private slots: void newdefaultaccount(int); void newdefaultmodem(int); @@ -88,6 +92,7 @@ private slots: void shutDown(); void delayedDisconnect(); + void appRegisteredToDCOP( const QCString & appId ); public slots: void beginConnect(); @@ -125,6 +130,7 @@ private: QString encodeWord(const QString &s); void showNews (); void setButtons(); + void registerService(); QString ruleset_load_errmsg; @@ -167,6 +173,8 @@ private: QTimer *disconnectTimer; + + NetworkStatusIface_stub * m_serviceStub; }; Index: kppp/Makefile.am =================================================================== --- kppp/Makefile.am.orig +++ kppp/Makefile.am @@ -48,10 +48,13 @@ kppp_SOURCES = kpppwidget.cpp \ utils.cpp \ providerdb.cpp \ modems.cpp \ + networkstatusiface.stub \ KPPPIface.skel +networkstatusiface_DIR = $(includedir) + # the library search path -kppp_LDFLAGS = $(all_libraries) $(KDE_RPATH) +kppp_LDFLAGS = $(all_libraries) $(KDE_RPATH) -lnetworkstatus # the libraries to link against. Be aware of the order. First the libraries, # that depend on the following ones.
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor