• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdenetwork API Reference
  • KDE Home
  • Contact Us
 

kopete/libkopete

  • sources
  • kde-4.14
  • kdenetwork
  • kopete
  • libkopete
connectionmanager.cpp
Go to the documentation of this file.
1 /*
2  connectionmanager.cpp - Provides the client side interface to the kde networkstatus daemon
3 
4  Copyright (c) 2004 by Will Stephenson <wstephenson@kde.org>
5 
6  Kopete (c) 2004-2007 by the Kopete developers <kopete-devel@kde.org>
7 
8  *************************************************************************
9  * *
10  * This library is free software; you can redistribute it and/or *
11  * modify it under the terms of the GNU Lesser General Public *
12  * License as published by the Free Software Foundation; either *
13  * version 2 of the License, or (at your option) any later version. *
14  * *
15  *************************************************************************
16  */
17 
18 
19 #include "connectionmanager.h"
20 
21 #include <kdebug.h>
22 #include <klocale.h>
23 #include <kmessagebox.h>
24 
25 #include "clientiface_stub.h"
26 #include "networkstatuscommon.h"
27 
28 // ConnectionManager's private parts
29 class ConnectionManagerPrivate
30 {
31  public:
32  // this holds the currently active state
33  ConnectionManager::State m_state;
34  ClientIface_stub * m_stub;
35  bool m_userInitiatedOnly;
36 };
37 
38 // Connection manager itself
39 ConnectionManager::ConnectionManager( QObject * parent, const char * name ) : DCOPObject( "ConnectionManager" ),QObject( parent )
40 {
41  setObjectName(name);
42  d = new ConnectionManagerPrivate;
43 
44  d->m_stub = new ClientIface_stub( kapp->dcopClient(), "kded", "networkstatus" );
45 
46  connectDCOPSignal( "kded", "networkstatus", "statusChange(QString,int)", "slotStatusChanged(QString,int)", false );
47  d->m_userInitiatedOnly = false;
48  initialise();
49 }
50 
51 ConnectionManager *ConnectionManager::self()
52 {
53  static ConnectionManager s;
54  return &s;
55 }
56 
57 void ConnectionManager::initialise()
58 {
59  // determine initial state and set the state object accordingly.
60  d->m_state = Inactive;
61  updateStatus();
62 }
63 
64 void ConnectionManager::updateStatus()
65 {
66  NetworkStatus::EnumStatus daemonStatus = (NetworkStatus::EnumStatus)d->m_stub->status( QString() );
67  kDebug() ;
68  switch ( daemonStatus )
69  {
70  case NetworkStatus::Offline:
71  case NetworkStatus::OfflineFailed:
72  case NetworkStatus::OfflineDisconnected:
73  case NetworkStatus::ShuttingDown:
74  if ( d->m_state == Online )
75  {
76  kDebug() << "STATE IS PENDING";
77  d->m_state = Pending;
78  }
79  else
80  {
81  kDebug() << "STATE IS OFFLINE";
82  d->m_state = Offline;
83  }
84  break;
85  case NetworkStatus::Establishing:
86  case NetworkStatus::Online:
87  kDebug() << "STATE IS ONLINE";
88  d->m_state = Online;
89  break;
90  case NetworkStatus::NoNetworks:
91  case NetworkStatus::Unreachable:
92  kDebug() << "STATE IS INACTIVE";
93  d->m_state = Inactive;
94  break;
95  }
96 }
97 
98 ConnectionManager::~ConnectionManager()
99 {
100  delete d;
101 }
102 
103 NetworkStatus::EnumStatus ConnectionManager::status( const QString & host )
104 {
105  // need also to check that the daemon hasn't died
106  updateStatus();
107  if ( d->m_state == Pending )
108  return NetworkStatus::Offline;
109  if ( d->m_state == Online )
110  return NetworkStatus::Online;
111  if ( d->m_state == Offline )
112  return NetworkStatus::Offline;
113  return NetworkStatus::NoNetworks;
114 }
115 
116 NetworkStatus::EnumRequestResult ConnectionManager::requestConnection( QWidget * mainWidget, const QString & host, bool userInitiated )
117 {
118  kDebug() ;
119  NetworkStatus::EnumRequestResult result;
120  // if offline and the user has previously indicated they didn't want any new connections, suppress it
121  if ( d->m_state == Offline && !userInitiated && d->m_userInitiatedOnly )
122  result = NetworkStatus::UserRefused;
123  // if offline, ask the user whether this connection should be allowed
124  if ( d->m_state == Offline )
125  {
126  if ( askToConnect( mainWidget ) )
127  //result = NetworkStatus::Connected;
128  result = (NetworkStatus::EnumRequestResult)d->m_stub->request( host, userInitiated );
129  else
130  result = NetworkStatus::UserRefused;
131  }
132  // otherwise, just ask for the connection
133  else
134  result = (NetworkStatus::EnumRequestResult)d->m_stub->request( host, userInitiated );
135 
136  return result;
137 }
138 
139 void ConnectionManager::relinquishConnection( const QString & host )
140 {
141  d->m_stub->relinquish( host );
142 }
143 
144 void ConnectionManager::slotStatusChanged( QString host, int status )
145 {
146  kDebug() ;
147  updateStatus();
148  // reset user initiated only flag if we are now online
149  if ( d->m_state == Online )
150  d->m_userInitiatedOnly = false;
151 
152  emit statusChanged( host, (NetworkStatus::EnumStatus)status );
153 }
154 
155 bool ConnectionManager::askToConnect( QWidget * mainWidget )
156 {
157  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?" );
158  i18n( "This application is currently in offline mode. Do you want to connect?" );
159  return ( KMessageBox::questionYesNo( mainWidget,
160  i18n("This application is currently in offline mode. Do you want to connect in order to carry out this operation?"),
161  i18n("Leave Offline Mode?"),
162  i18n("Connect"), i18n("Stay Offline"),
163  QLatin1String("OfflineModeAlwaysGoOnline") ) == KMessageBox::Yes );
164 }
165 
166 #include "connectionmanager.moc"
status
OnlineStatus::StatusType status
Definition: kopeteonlinestatus.cpp:103
ConnectionManager::Inactive
Definition: connectionmanager.h:34
QWidget
NetworkStatus::UserRefused
Definition: networkstatuscommon.h:10
ConnectionManager::askToConnect
bool askToConnect(QWidget *mainWidget)
Definition: connectionmanager.cpp:155
NetworkStatus::ShuttingDown
Definition: networkstatuscommon.h:9
ConnectionManager::statusChanged
void statusChanged(const QString &host, NetworkStatus::EnumStatus status)
NetworkStatus::OfflineDisconnected
Definition: networkstatuscommon.h:9
ConnectionManager::status
NetworkStatus::EnumStatus status(const QString &host)
Definition: connectionmanager.cpp:103
ConnectionManager
Definition: connectionmanager.h:28
networkstatuscommon.h
NetworkStatus::EnumRequestResult
EnumRequestResult
Definition: networkstatuscommon.h:10
ConnectionManager::updateStatus
void updateStatus()
Definition: connectionmanager.cpp:64
NetworkStatus::NoNetworks
Definition: networkstatuscommon.h:9
ConnectionManager::Online
Definition: connectionmanager.h:34
ConnectionManager::Offline
Definition: connectionmanager.h:34
ConnectionManager::self
static ConnectionManager * self()
Definition: connectionmanager.cpp:51
ConnectionManager::State
State
Definition: connectionmanager.h:34
QObject
QObject::setObjectName
void setObjectName(const QString &name)
ConnectionManager::relinquishConnection
void relinquishConnection(const QString &host)
Definition: connectionmanager.cpp:139
NetworkStatus::Online
Definition: networkstatuscommon.h:9
ConnectionManager::slotStatusChanged
void slotStatusChanged(QString host, int status)
Definition: connectionmanager.cpp:144
ConnectionManager::Pending
Definition: connectionmanager.h:34
QString
Kopete::UI::Global::mainWidget
KOPETE_EXPORT QWidget * mainWidget()
Returns the main widget - this is the widget that message boxes and KNotify stuff should use as a par...
Definition: kopeteuiglobal.cpp:37
NetworkStatus::Unreachable
Definition: networkstatuscommon.h:9
QLatin1String
NetworkStatus::OfflineFailed
Definition: networkstatuscommon.h:9
NetworkStatus::Offline
Definition: networkstatuscommon.h:9
NetworkStatus::EnumStatus
EnumStatus
Definition: networkstatuscommon.h:9
ConnectionManager::~ConnectionManager
virtual ~ConnectionManager()
Definition: connectionmanager.cpp:98
ConnectionManager::requestConnection
NetworkStatus::EnumRequestResult requestConnection(QWidget *mainWidget, const QString &host, bool userInitiated)
Definition: connectionmanager.cpp:116
NetworkStatus::Establishing
Definition: networkstatuscommon.h:9
DCOPObject
ConnectionManager::initialise
void initialise()
Definition: connectionmanager.cpp:57
connectionmanager.h
name
const char * name
Definition: kopeteonlinestatus.cpp:104
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:29:19 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kopete/libkopete

Skip menu "kopete/libkopete"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdenetwork API Reference

Skip menu "kdenetwork API Reference"
  • kget
  • kopete
  •   kopete
  •   libkopete
  • krdc
  • krfb

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal