From 0216dae757a1ae8e4971b00b0c79fbafb33bbd57 Mon Sep 17 00:00:00 2001
From: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: Wed, 5 Sep 2012 15:01:20 -0500
Subject: Make access point notifications more extensible

---
 .../network-manager/network-manager.cpp            |  9 ++++++--
 tdecore/tdenetworkconnections.cpp                  |  4 ++--
 tdecore/tdenetworkconnections.h                    | 24 +++++++++++++++-------
 3 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/tdecore/networkbackends/network-manager/network-manager.cpp b/tdecore/networkbackends/network-manager/network-manager.cpp
index 2671ac57b..d6db41565 100644
--- a/tdecore/networkbackends/network-manager/network-manager.cpp
+++ b/tdecore/networkbackends/network-manager/network-manager.cpp
@@ -1199,7 +1199,7 @@ void TDENetworkConnectionManager_BackendNMPrivate::internalProcessDeviceStateCha
 void TDENetworkConnectionManager_BackendNMPrivate::internalProcessWiFiAccessPointAdded(const TQT_DBusObjectPath& dbuspath) {
 	TDENetworkWiFiAPInfo* apInfo = m_parent->getAccessPointDetails(dbuspath);
 	if (apInfo) {
-		m_parent->internalAccessPointVisibilityChanged(apInfo->BSSID, TRUE);
+		m_parent->internalAccessPointStatusChanged(apInfo->BSSID, TDENetworkAPEventType::Discovered);
 		delete apInfo;
 	}
 }
@@ -1207,11 +1207,16 @@ void TDENetworkConnectionManager_BackendNMPrivate::internalProcessWiFiAccessPoin
 void TDENetworkConnectionManager_BackendNMPrivate::internalProcessWiFiAccessPointRemoved(const TQT_DBusObjectPath& dbuspath) {
 	TDENetworkWiFiAPInfo* apInfo = m_parent->getAccessPointDetails(dbuspath);
 	if (apInfo) {
-		m_parent->internalAccessPointVisibilityChanged(apInfo->BSSID, FALSE);
+		m_parent->internalAccessPointStatusChanged(apInfo->BSSID, TDENetworkAPEventType::Lost);
 		delete apInfo;
 	}
 }
 
+// FIXME
+// If access point strength changes, this must be called:
+// m_parent->internalAccessPointStatusChanged(apInfo->BSSID, TDENetworkAPEventType::Lost);
+// How do I get NetworkManager to notify me when an access point changes strength?  Do I have to poll it for this information?
+
 TDENetworkDeviceType::TDENetworkDeviceType TDENetworkConnectionManager_BackendNM::deviceType() {
 	if (m_macAddress == "") {
 		return TDENetworkDeviceType::BackendOnly;
diff --git a/tdecore/tdenetworkconnections.cpp b/tdecore/tdenetworkconnections.cpp
index 67cca7f5f..2e35cb6c8 100644
--- a/tdecore/tdenetworkconnections.cpp
+++ b/tdecore/tdenetworkconnections.cpp
@@ -716,8 +716,8 @@ void TDENetworkConnectionManager::internalNetworkDeviceStateChanged(TDENetworkCo
 	m_prevDeviceStatus[hwAddress] = newState;
 }
 
-void TDENetworkConnectionManager::internalAccessPointVisibilityChanged(TDEMACAddress BSSID, bool detected) {
-	emit(accessPointVisibilityChanged(BSSID, detected));
+void TDENetworkConnectionManager::internalAccessPointStatusChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event) {
+	emit(accessPointStatusChanged(BSSID, event));
 }
 
 /*================================================================================================*/
diff --git a/tdecore/tdenetworkconnections.h b/tdecore/tdenetworkconnections.h
index 720b93378..3bff2e5db 100644
--- a/tdecore/tdenetworkconnections.h
+++ b/tdecore/tdenetworkconnections.h
@@ -176,6 +176,16 @@ namespace TDENetworkSlaveDeviceType {
 	};
 };
 
+namespace TDENetworkAPEventType {
+	enum TDENetworkAPEventType {
+		Discovered,
+		Lost,
+		SignalStrengthChanged,
+		Other,
+		Last = Other
+	};
+};
+
 namespace TDENetworkGlobalManagerFlags {
 	enum TDENetworkGlobalManagerFlags {
 		Unknown			= 0x00000000,
@@ -1045,10 +1055,10 @@ class TDECORE_EXPORT TDENetworkConnectionManager : public TQObject
 		void networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus newState, TDENetworkConnectionStatus::TDENetworkConnectionStatus previousState, TQString hwAddress);
 
 		/**
-		* Emitted whenever a wireless access point is detected or lost
-		* If a new access point was detected, @param detected will be set to TRUE, otherwise if lost it will be set to FALSE
+		* Emitted whenever the status of a wireless access point changes
+		* The event type that caused the signal is available in @param event
 		*/
-		void accessPointVisibilityChanged(TDEMACAddress BSSID, bool detected);
+		void accessPointStatusChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event);
 
 	public:
 		/**
@@ -1095,7 +1105,7 @@ class TDECORE_EXPORT TDENetworkConnectionManager : public TQObject
 		void clearTDENetworkHWNeighborList();
 		void internalNetworkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags newState);
 		void internalNetworkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus newState, TQString hwAddress=TQString::null);
-		void internalAccessPointVisibilityChanged(TDEMACAddress BSSID, bool detected);
+		void internalAccessPointStatusChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event);
 
 	protected:
 		TDENetworkConnectionList* m_connectionList;
@@ -1235,10 +1245,10 @@ class TDECORE_EXPORT TDEGlobalNetworkManager : public TQObject
 		void networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus newState, TDENetworkConnectionStatus::TDENetworkConnectionStatus previousState, TQString hwAddress);
 
 		/**
-		* Emitted whenever a wireless access point is detected or lost
-		* If a new access point was detected, @param detected will be set to TRUE, otherwise if lost it will be set to FALSE
+		* Emitted whenever the status of a wireless access point changes
+		* The event type that caused the signal is available in @param event
 		*/
-		void accessPointVisibilityChanged(TDEMACAddress BSSID, bool detected);
+		void accessPointStatusChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event);
 
 	public:
 		/**
-- 
cgit v1.2.3

