diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2014-10-06 00:52:45 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2014-10-06 00:52:45 -0500 |
commit | 111cc213644c3d3f0f0659b7c61877871c6a5519 (patch) | |
tree | 07ad7f8572af6e6f8f8b9c07e32eccba7ce6a3a2 /kmail/kmkernel.cpp | |
parent | faf37227f5194237dbda5973c21d05de3633ea03 (diff) | |
download | tdepim-111cc213644c3d3f0f0659b7c61877871c6a5519.tar.gz tdepim-111cc213644c3d3f0f0659b7c61877871c6a5519.zip |
Detect if kmail is online or offline and automatically switch modes
This relates to Bug 1525 and Bug 1105
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() ) |