From aaaec8b3f88a53ce2ec3b9295774523b6f2d8c82 Mon Sep 17 00:00:00 2001
From: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: Tue, 4 Sep 2012 10:25:49 -0500
Subject: Add global networking state control

---
 .../network-manager/network-manager.cpp            | 24 ++++++++++++++++++++++
 .../network-manager/network-manager.h              |  1 +
 tdecore/tdenetworkconnections.cpp                  |  5 +++++
 tdecore/tdenetworkconnections.h                    | 12 +++++++++++
 4 files changed, 42 insertions(+)

diff --git a/tdecore/networkbackends/network-manager/network-manager.cpp b/tdecore/networkbackends/network-manager/network-manager.cpp
index b68a8bdb8..3a303237b 100644
--- a/tdecore/networkbackends/network-manager/network-manager.cpp
+++ b/tdecore/networkbackends/network-manager/network-manager.cpp
@@ -4117,6 +4117,30 @@ bool TDENetworkConnectionManager_BackendNM::wiFiHardwareEnabled() {
 	}
 }
 
+bool TDENetworkConnectionManager_BackendNM::enableNetworking(bool enable) {
+	// FIXME
+	// Yes, this abuses the Sleep command
+	// Is there a better way to do it?
+	if (d->m_networkManagerProxy) {
+		int asynccallid;
+		TQT_DBusError error;
+		d->m_networkManagerProxy->SleepAsync(asynccallid, !enable, error);
+		if (error.isValid()) {
+			// Error!
+			PRINT_ERROR(error.name())
+			return FALSE;
+		}
+		else {
+			// FIXME
+			// Wait for async reply before returning...
+			return TRUE;
+		}
+	}
+	else {
+		return FALSE;
+	}
+}
+
 bool TDENetworkConnectionManager_BackendNM::enableWiFi(bool enable) {
 	if (d->m_networkManagerProxy) {
 		TQT_DBusError error;
diff --git a/tdecore/networkbackends/network-manager/network-manager.h b/tdecore/networkbackends/network-manager/network-manager.h
index 82e12696a..ef878bb00 100644
--- a/tdecore/networkbackends/network-manager/network-manager.h
+++ b/tdecore/networkbackends/network-manager/network-manager.h
@@ -143,6 +143,7 @@ class TDECORE_EXPORT TDENetworkConnectionManager_BackendNM : public TDENetworkCo
 		virtual bool networkingEnabled();
 		virtual bool wiFiHardwareEnabled();
 
+		virtual bool enableNetworking(bool enable);
 		virtual bool enableWiFi(bool enable);
 		virtual bool wiFiEnabled();
 
diff --git a/tdecore/tdenetworkconnections.cpp b/tdecore/tdenetworkconnections.cpp
index a02f72e64..96da418e7 100644
--- a/tdecore/tdenetworkconnections.cpp
+++ b/tdecore/tdenetworkconnections.cpp
@@ -729,6 +729,11 @@ bool TDEGlobalNetworkManager::networkingEnabled() {
 	return m_internalConnectionManager->networkingEnabled();
 }
 
+bool TDEGlobalNetworkManager::enableNetworking(bool enable) {
+	if (!m_internalConnectionManager) return false;
+	return m_internalConnectionManager->enableNetworking(enable);
+}
+
 bool TDEGlobalNetworkManager::wiFiHardwareEnabled() {
 	if (!m_internalConnectionManager) return false;
 	return m_internalConnectionManager->wiFiHardwareEnabled();
diff --git a/tdecore/tdenetworkconnections.h b/tdecore/tdenetworkconnections.h
index ca20f613c..e13484262 100644
--- a/tdecore/tdenetworkconnections.h
+++ b/tdecore/tdenetworkconnections.h
@@ -993,6 +993,12 @@ class TDECORE_EXPORT TDENetworkConnectionManager : public TQObject
 		*/
 		virtual bool networkingEnabled() = 0;
 
+		/**
+		* @param enable true to enable networking, false to disable it.
+		* @return true on success, false on failure.
+		*/
+		virtual bool enableNetworking(bool enable) = 0;
+
 		/**
 		* @return true if WiFi hardware is enabled, false if not.
 		*/
@@ -1147,6 +1153,12 @@ class TDECORE_EXPORT TDEGlobalNetworkManager : public TQObject
 		*/
 		virtual bool networkingEnabled();
 
+		/**
+		* @param enable true to enable networking, false to disable it.
+		* @return true on success, false on failure.
+		*/
+		virtual bool enableNetworking(bool enable);
+
 		/**
 		* @return true if WiFi hardware is enabled, false if not.
 		*/
-- 
cgit v1.2.3

