\r
namespace SettingWiFi\r
{\r
+ public enum WiFiState {\r
+ Disconnected = 0,\r
+ Association = 1,\r
+ Configuration = 2,\r
+ Connected = 3,\r
+ }\r
+\r
public class WiFi\r
{\r
IEnumerable<WiFiAP> apList = new List<WiFiAP>();\r
\r
+ private event EventHandler<WiFiStateChangedEventArgs> wifiStateChanged = null;\r
+\r
public async Task Activate()\r
{\r
Debug("WiFi.Activate");\r
string securityType = item.SecurityInformation.SecurityType.ToString();\r
bool isWpsSupported = item.SecurityInformation.IsWpsSupported;\r
\r
- if (item.NetworkInformation.ConnectionState.ToString().Equals(Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS))\r
- {\r
- apInfoList.Add(new AP(item, item.NetworkInformation.Essid,\r
- Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS, securityType,\r
- isWpsSupported, item.NetworkInformation.RssiLevel));\r
- continue;\r
- }\r
- string text = "";\r
+ WiFiState state = convertWiFiState(item.NetworkInformation.ConnectionState);\r
+ apInfoList.Add(new AP(item, item.NetworkInformation.Essid,\r
+ state, securityType, isWpsSupported,\r
+ item.NetworkInformation.Bssid, item.NetworkInformation.RssiLevel));\r
+ }\r
\r
- if (securityType.Equals(Resources.IDS_ST_BODY_NONE))\r
- {\r
- text = Resources.IDS_WIFI_POP_OPEN;\r
- }\r
- else if (securityType.Equals(Resources.IDS_WIFI_BODY_EAP))\r
- {\r
- text = Resources.IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY + " (Eap)";\r
- }\r
- else if (isWpsSupported)\r
+ return apInfoList;\r
+ }\r
+\r
+ internal event EventHandler<WiFiStateChangedEventArgs> WiFiStateChangedEventArgs\r
+ {\r
+ add\r
+ {\r
+ if (wifiStateChanged == null)\r
{\r
- text = Resources.IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY + " (WPS available)";\r
+ WiFiManager.ConnectionStateChanged += OnConnectionStateChanged;\r
}\r
- else\r
+ wifiStateChanged += value;\r
+ }\r
+ remove\r
+ {\r
+ wifiStateChanged -= value;\r
+ if (wifiStateChanged == null)\r
{\r
- text = Resources.IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY;\r
+ WiFiManager.ConnectionStateChanged -= OnConnectionStateChanged;\r
}\r
+ }\r
+ }\r
\r
- apInfoList.Add(new AP(item, item.NetworkInformation.Essid,\r
- text, securityType,\r
- isWpsSupported, item.NetworkInformation.RssiLevel));\r
+ private void OnConnectionStateChanged(object sender, ConnectionStateChangedEventArgs e)\r
+ {\r
+ Debug("OnConnectionStateChanged is callled");\r
+ var ap = e.AP;\r
+ var bssid = ap.NetworkInformation.Bssid;\r
+ WiFiState state = convertWiFiState(e.State);\r
+ WiFiStateChangedEventArgs arg = new WiFiStateChangedEventArgs(bssid, state);\r
+ wifiStateChanged.Invoke(null, arg);\r
+ }\r
+\r
+ private WiFiState convertWiFiState(WiFiConnectionState state)\r
+ {\r
+ switch (state)\r
+ {\r
+ case WiFiConnectionState.Disconnected:\r
+ return WiFiState.Disconnected;\r
+ case WiFiConnectionState.Association:\r
+ return WiFiState.Association;\r
+ case WiFiConnectionState.Congfiguration:\r
+ return WiFiState.Configuration;\r
+ case WiFiConnectionState.Connected:\r
+ return WiFiState.Connected;\r
}\r
+ return WiFiState.Disconnected;\r
+ }\r
+ }\r
\r
- return apInfoList;\r
+ internal class WiFiStateChangedEventArgs\r
+ {\r
+ internal WiFiStateChangedEventArgs(string bssid, WiFiState state)\r
+ {\r
+ Bssid = bssid;\r
+ State = state;\r
+ }\r
+\r
+ internal string Bssid\r
+ {\r
+ get;\r
+ set;\r
+ }\r
+\r
+ internal WiFiState State\r
+ {\r
+ get;\r
+ set;\r
}\r
}\r
}\r
}\r
string iconDir;\r
private string essid;\r
- private string state;\r
+ private WiFiState state;\r
+ private string stateInfo;\r
private string secType;\r
private bool isWps;\r
private SignalStrengthIndicator signalStrength = SignalStrengthIndicator.UNKNOWN;\r
\r
private void OnPropertyChanged(string propertyName)\r
{\r
- Debug("OnPropertyChanged");\r
+ Debug("OnPropertyChanged " + propertyName);\r
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\r
}\r
\r
+ ", IconDir: " + iconDir); // TODO: will be removed.\r
}\r
\r
- public AP(WiFiAP apHandle, string apEssid, string apState, string apSecType, bool apIsWps, SignalStrengthIndicator apSignalStrength)\r
+ public AP(WiFiAP apHandle, string apEssid, WiFiState apState,\r
+ string apSecType, bool apIsWps, string apBssid, SignalStrengthIndicator apSignalStrength)\r
{\r
ApHandle = apHandle;\r
essid = apEssid;\r
- state = apState;\r
secType = apSecType;\r
isWps = apIsWps;\r
+ Bssid = apBssid;\r
+ StateInfo = GetStateInfo(state);\r
signalStrength = apSignalStrength;\r
UpdateWiFiAPIcon();\r
}\r
\r
- public AP(WiFiAP apHandle, string apEssid, string apState, string apSecType, bool apIsWps, WiFiRssiLevel apRssiLevel)\r
+ public AP(WiFiAP apHandle, string apEssid, WiFiState apState,\r
+ string apSecType, bool apIsWps, string apBssid, WiFiRssiLevel apRssiLevel)\r
{\r
ApHandle = apHandle;\r
essid = apEssid;\r
state = apState;\r
secType = apSecType;\r
isWps = apIsWps;\r
+ State = apState;\r
+ Bssid = apBssid;\r
+ StateInfo = GetStateInfo(state);\r
signalStrength = ConvertToSignalStrength(apRssiLevel);\r
UpdateWiFiAPIcon();\r
}\r
}\r
}\r
\r
+ public WiFiState State\r
+ {\r
+ get\r
+ {\r
+ return state;\r
+ }\r
+ set\r
+ {\r
+ state = value;\r
+ StateInfo = GetStateInfo(state);\r
+ }\r
+ }\r
+\r
+ private string GetStateInfo(WiFiState state)\r
+ {\r
+ switch (state)\r
+ {\r
+ case WiFiState.Disconnected:\r
+ if (secType.Equals(Resources.IDS_ST_BODY_NONE))\r
+ {\r
+ return Resources.IDS_WIFI_POP_OPEN;\r
+ }\r
+ else if (secType.Equals(Resources.IDS_WIFI_BODY_EAP))\r
+ {\r
+ return Resources.IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY + " (Eap)";\r
+ }\r
+ else if (isWps)\r
+ {\r
+ return Resources.IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY + " (WPS available)";\r
+ }\r
+ else\r
+ {\r
+ return Resources.IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY;\r
+ }\r
+ case WiFiState.Association:\r
+ case WiFiState.Configuration:\r
+ return Resources.IDS_WIFI_BODY_CONNECTING_ING;\r
+ case WiFiState.Connected:\r
+ return Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS;\r
+ }\r
+ return "";\r
+ }\r
+\r
public string ImageUrl\r
{\r
get\r
}\r
}\r
\r
- public string State\r
+ public string StateInfo\r
{\r
get\r
{\r
- return state;\r
+ return stateInfo;\r
}\r
set\r
{\r
- state = value;\r
- OnPropertyChanged("State");\r
+ stateInfo = value;\r
+ OnPropertyChanged("StateInfo");\r
}\r
}\r
\r
return signalStrength;\r
}\r
}\r
+\r
+ public string Bssid\r
+ {\r
+ get;\r
+ set;\r
+ }\r
};\r
}\r
if (apList == null)\r
{\r
Debug("apList is null");\r
- this.Add(new AP(null, "", "", "", false, AP.SignalStrengthIndicator.UNKNOWN));\r
+ this.Add(new AP(null, "", WiFiState.Disconnected, "", false, "", AP.SignalStrengthIndicator.UNKNOWN));\r
return;\r
}\r
// Clear method have some issue about asynchronous actions,\r
\r
foreach (var item in apList)\r
{\r
- this.Add(new AP(item.ApHandle, item.Essid, item.State, item.SecType, item.IsWps, item.SignalStrength));\r
+ this.Add(item);\r
}\r
+\r
}\r
\r
public void RemoveScanList()\r
text = Resources.IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY;\r
}\r
\r
- ap.State = text;\r
+ ap.StateInfo = text;\r
+ }\r
+\r
+ internal void UpdateApState(string bssid, WiFiState state)\r
+ {\r
+ Debug("UpdateApState. bssid: " + bssid + ", state: " + state.ToString());\r
+ var apList = this.Items;\r
+ foreach (var ap in apList)\r
+ {\r
+ if (ap.Bssid.Equals(bssid))\r
+ {\r
+ ap.State = state;\r
+ break;\r
+ }\r
+ }\r
}\r
}\r
\r
{\r
available.UpdateState(ap);\r
}\r
+\r
+ internal void UpdateApState(string bssid, WiFiState state)\r
+ {\r
+ available.UpdateApState(bssid, state);\r
+ }\r
}\r
}
\ No newline at end of file
using Tizen.NUI.BaseComponents;
using Tizen.NUI.Components;
using SettingWiFi.res.locale;
+using static SettingWiFi.Logger;
namespace SettingWiFi
internal ConnectPage(WiFi wifi)
{
+ Debug("ConnectPage");
mWifi = wifi;
}
Navigator.Pop();
}
- private void Connect()
+ private async void Connect()
{
- mAp.State = Resources.IDS_WIFI_BODY_CONNECTING_ING;
- mWifi.Connect(mAp, "datanetwork");
+ Debug("Connect");
+ //mAp.StateInfo = Resources.IDS_WIFI_BODY_CONNECTING_ING;
+ await mWifi.Connect(mAp, "datanetwork");
+
+ if(mWifi.GetConnectedAP().Equals(mAp.Essid))
+ {
+ mAp.StateInfo = Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS;
+ }
}
}
}
\ No newline at end of file
using Tizen.NUI.Components;
using SettingWiFi.res.locale;
using static SettingWiFi.Logger;
-
+using System;
namespace SettingWiFi
{
SelectionMode = ItemSelectionMode.Single,
};
mScanList.SelectionChanged += OnScanListSelected;
+ mWifi.WiFiStateChangedEventArgs += OnWiFiStateChanged;
var header = GetHeader();
var scanButton = new Button()
Content = mainView;
}
+ private void OnWiFiStateChanged(object sender, WiFiStateChangedEventArgs e)
+ {
+ mApSource.UpdateApState(e.Bssid, e.State);
+ }
+
private DataTemplate CreateItemTemplate()
{
return new DataTemplate(() =>
};
item.Label.SetBinding(TextLabel.TextProperty, "Essid");
item.Label.HorizontalAlignment = HorizontalAlignment.Begin;
- item.SubLabel.SetBinding(TextLabel.TextProperty, "State");
+ item.SubLabel.SetBinding(TextLabel.TextProperty, "StateInfo");
item.SubLabel.HorizontalAlignment = HorizontalAlignment.Begin;
ImageViewStyle imageViewStyle = new ImageViewStyle()
public async void OnScanListSelected(object sender, SelectionChangedEventArgs ev)
{
//SingleSelection Only have 1 or nil object in the list.
+ /*
foreach (object item in ev.PreviousSelection)
{
if (item == null) break;
{
Debug("Disconnect " + ap.Essid);
await mWifi.Disconnect(ap.Essid);
- mApSource.UpdateState(ap);
+ //mApSource.UpdateState(ap);
}
}
+ */
foreach (object item in ev.CurrentSelection)
{
if (item == null) break;
if (item is AP ap)
{
- if (ap.State.Equals(Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS))
+ if (ap.StateInfo.Equals(Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS))
{
Debug("Already connected " + ap.Essid);
break;