summaryrefslogtreecommitdiffstats
path: root/kmail/kmkernel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmail/kmkernel.cpp')
-rw-r--r--kmail/kmkernel.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/kmail/kmkernel.cpp b/kmail/kmkernel.cpp
index df0ab2d5..162e179b 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() )