diff options
Diffstat (limited to 'kmail/kmkernel.cpp')
-rw-r--r-- | kmail/kmkernel.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/kmail/kmkernel.cpp b/kmail/kmkernel.cpp index df0ab2d5b..162e179ba 100644 --- a/kmail/kmkernel.cpp +++ b/kmail/kmkernel.cpp @@ -169,6 +169,18 @@ KMKernel::KMKernel (TQObject *parent, const char *name) : connectDCOPSignal( 0, 0, "kmailSelectFolder(TQString)", "selectFolder(TQString)", false ); + + mNetworkManager = TDEGlobal::networkManager(); + if (mNetworkManager) { + connect( mNetworkManager, TQT_SIGNAL( networkDeviceStateChanged( TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString ) ), + this, TQT_SLOT( slotNetworkStateChanged( TDENetworkConnectionStatus::TDENetworkConnectionStatus newState, TDENetworkConnectionStatus::TDENetworkConnectionStatus previousState, TQString hwAddress ) ) ); + if (networkStateConnected()) { + resumeNetworkJobs(); + } + else { + stopNetworkJobs(); + } + } } KMKernel::~KMKernel () @@ -2456,6 +2468,38 @@ int KMKernel::timeOfLastMessageCountChange() const return mTimeOfLastMessageCountChange; } +bool KMKernel::networkStateConnected() +{ + if (mNetworkManager) { + TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags networkStatus = mNetworkManager->backendStatus(); + if ((networkStatus & TDENetworkGlobalManagerFlags::Connected) + || (networkStatus & TDENetworkGlobalManagerFlags::BackendUnavailable) + || (networkStatus == TDENetworkGlobalManagerFlags::Unknown) + ){ + // Connected or no backend available + return true; + } + else { + // Not connected + return false; + } + } + else { + // Assume connected + return true; + } +} + +void KMKernel::slotNetworkStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString) +{ + if (networkStateConnected()) { + resumeNetworkJobs(); + } + else { + stopNetworkJobs(); + } +} + Wallet *KMKernel::wallet() { static bool walletOpenFailed = false; if ( mWallet && mWallet->isOpen() ) |