Detect if kmail is online or offline and automatically switch modes

This relates to Bug 1525 and Bug 1105
pull/21/head
Timothy Pearson 10 years ago
parent faf37227f5
commit 111cc21364

@ -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() )

@ -14,6 +14,8 @@
#include <tdeimproxy.h>
#include <tdepimmacros.h>
#include <tdenetworkconnections.h>
#include "kmailIface.h"
#include "kmmsgbase.h"
#include "globalsettings.h"
@ -434,6 +436,7 @@ public slots:
protected slots:
void slotDataReq(TDEIO::Job*,TQByteArray&);
void slotResult(TDEIO::Job*);
void slotNetworkStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString);
signals:
void configChanged();
@ -443,6 +446,7 @@ signals:
private:
void openReader( bool onlyCheck );
KMMsgStatus strToStatus(const TQString &flags);
bool networkStateConnected();
KMFolder *currentFolder();
KMFolder *the_inboxFolder;
@ -522,6 +526,8 @@ private:
TQStringList mAddMessageMsgIds;
TQString mAddMessageLastFolder;
KMFolder *mAddMsgCurrentFolder;
TDEGlobalNetworkManager *mNetworkManager;
};
#endif

Loading…
Cancel
Save