public class WiFi\r
{\r
IEnumerable<WiFiAP> apList = new List<WiFiAP>();\r
+ IEnumerable<WiFiAP> specificAPList = new List<WiFiAP>();\r
\r
private event EventHandler<WiFiStateChangedEventArgs> wifiStateChanged = null;\r
\r
{\r
Debug("Fail to connect" + e.ToString());\r
}\r
-\r
}\r
\r
public Task Disconnect(string essid)\r
ap.ForgetAP();\r
}\r
\r
+ public async Task ScanSpecificAP(string essid)\r
+ {\r
+ Debug("WiFi.ScanSpecificAP");\r
+ try\r
+ {\r
+ await WiFiManager.ScanSpecificAPAsync(essid);\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Debug("Fail to scan specific AP " + e.ToString());\r
+ }\r
+ }\r
+\r
+ public List<AP> GetSpecificScanResult()\r
+ {\r
+ Debug("WiFi.GetSpecificScanResult");\r
+ try\r
+ {\r
+ specificAPList = WiFiManager.GetFoundSpecificAPs();\r
+ return GetSpecificAPList();\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Debug("Fail to get scan result " + e.ToString());\r
+ }\r
+\r
+ return null;\r
+ }\r
+\r
+ public async Task ConnectWps(AP ap, string pin)\r
+ {\r
+ Debug("WiFi.ConnectWps");\r
+ WiFiAP wifiAP = FindAP(ap.Essid);\r
+ if (wifiAP == null)\r
+ {\r
+ Debug("Cannot find " + ap.Essid);\r
+ return;\r
+ }\r
+\r
+ try\r
+ {\r
+ if (pin == null)\r
+ {\r
+ await wifiAP.ConnectWpsAsync(new WpsPbcInfo());\r
+ }\r
+ else\r
+ {\r
+ await wifiAP.ConnectWpsAsync(new WpsPinInfo(pin));\r
+ }\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Debug("Fail to connect" + e.ToString());\r
+ }\r
+ }\r
+\r
private WiFiAP FindAP(string essid)\r
{\r
Debug("WiFi.FindAP");\r
return item;\r
}\r
}\r
-\r
return null;\r
}\r
\r
return WiFiManager.GetConnectedAP().NetworkInformation.Essid;\r
}\r
\r
+ public string GetConnectionState()\r
+ {\r
+ Debug("WiFi.GetConnectionState");\r
+ return WiFiManager.ConnectionState.ToString();\r
+ }\r
+\r
public List<AP> GetAPList()\r
{\r
Debug("WiFi.GetAPList");\r
get;\r
set;\r
}\r
+\r
+ public List<AP> GetSpecificAPList()\r
+ {\r
+ Debug("WiFi.GetSpecificAPList");\r
+ List<AP> apInfoList = new List<AP>();\r
+ foreach (var item in specificAPList)\r
+ {\r
+ Debug("AP name: " + item.NetworkInformation.Essid);\r
+ Debug("AP connection state: " + item.NetworkInformation.ConnectionState.ToString());\r
+\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.NetworkInformation.Essid, Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS, securityType, isWpsSupported));\r
+ continue;\r
+ }\r
+\r
+ string text = "";\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
+ {\r
+ text = Resources.IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY + " (WPS available)";\r
+ }\r
+ else\r
+ {\r
+ text = Resources.IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY;\r
+ }\r
+\r
+ apInfoList.Add(new AP(item.NetworkInformation.Essid, text, securityType, isWpsSupported));\r
+ }\r
+\r
+ return apInfoList;\r
+ }\r
}\r
}\r
return ResourceManager.GetString("IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY", resourceCulture);
}
}
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_ST_BODY_NETWORK_SSID {
+ get {
+ return ResourceManager.GetString("IDS_ST_BODY_NETWORK_SSID", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_SK_CANCEL {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_SK_CANCEL", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_COM_BODY_FIND {
+ get {
+ return ResourceManager.GetString("IDS_COM_BODY_FIND", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_POP_PRESS_WPS_ON_YOUR_WI_FI_ACCESS_POINT_WITHIN_PD_MINUTES {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_POP_PRESS_WPS_ON_YOUR_WI_FI_ACCESS_POINT_WITHIN_PD_MINUTES", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_BUTTON_WPS_BUTTON {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_BUTTON_WPS_BUTTON", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_SK_WPS_PIN {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_SK_WPS_PIN", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_HEADER_SELECT_WPS_METHOD_ABB {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_HEADER_SELECT_WPS_METHOD_ABB", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_BODY_CONNECT {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_BODY_CONNECT", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_OPT_WPS {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_OPT_WPS", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_BODY_WI_FI {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_BODY_WI_FI", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_BUTTON_SCAN {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_BUTTON_SCAN", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_ST_BODY_ENTER_THE_P1SS_PIN_ON_YOUR_WI_FI_ROUTER_THE_SETUP_CAN_TAKE_UP_TO_P2SD_MINUTES_TO_COMPLETE {
+ get {
+ return ResourceManager.GetString("IDS_ST_BODY_ENTER_THE_P1SS_PIN_ON_YOUR_WI_FI_ROUTER_THE_SETUP_CAN_TAKE_UP_TO_P2SD_MINUTES_TO_COMPLETE", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// 과(와) 유사한 지역화된 문자열을 찾습니다.
+ /// </summary>
+ public static string IDS_WIFI_HEADER_PASSWORD {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_HEADER_PASSWORD", resourceCulture);
+ }
+ }
}
}
<data name="IDS_WIFI_BODY_CONNECTING_ING" xml:space="preserve">\r
<value>Connecting...</value>\r
</data>\r
- <data name="IDS_WIFI_SBODY_CONNECTED_M_STATUS" xml:space="preserve">\r
- <value>Connected</value>\r
- </data>\r
<data name="IDS_WIFI_HEADER_WI_FI_NETWORK_INFO_ABB" xml:space="preserve">\r
<value>Wi-Fi network info</value>\r
</data>\r
<data name="IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY" xml:space="preserve">\r
<value>Secured</value>\r
</data>\r
+ <data name="IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK" xml:space="preserve">\r
+ <value>Find hidden network</value>\r
+ </data>\r
+ <data name="IDS_ST_BODY_NETWORK_SSID" xml:space="preserve">\r
+ <value>Network SSID</value>\r
+ </data>\r
+ <data name="IDS_WIFI_SK_CANCEL" xml:space="preserve">\r
+ <value>Cancel</value>\r
+ </data>\r
+ <data name="IDS_COM_BODY_FIND" xml:space="preserve">\r
+ <value>Find</value>\r
+ </data>\r
+ <data name="IDS_WIFI_POP_PRESS_WPS_ON_YOUR_WI_FI_ACCESS_POINT_WITHIN_PD_MINUTES" xml:space="preserve">\r
+ <value>Press WPS on your Wi-Fi access point within {0} minutes.</value>\r
+ </data>\r
+ <data name="IDS_WIFI_BUTTON_WPS_BUTTON" xml:space="preserve">\r
+ <value>WPS button</value>\r
+ </data>\r
+ <data name="IDS_WIFI_SK_WPS_PIN" xml:space="preserve">\r
+ <value>WPS PIN</value>\r
+ </data>\r
+ <data name="IDS_WIFI_HEADER_SELECT_WPS_METHOD_ABB" xml:space="preserve">\r
+ <value>Select WPS method</value>\r
+ </data>\r
+ <data name="IDS_WIFI_BODY_CONNECT" xml:space="preserve">\r
+ <value>Connect</value>\r
+ </data>\r
+ <data name="IDS_WIFI_OPT_WPS" xml:space="preserve">\r
+ <value>WPS</value>\r
+ </data>\r
+ <data name="IDS_WIFI_BODY_WI_FI" xml:space="preserve">\r
+ <value>Wi-Fi</value>\r
+ </data>\r
+ <data name="IDS_WIFI_BUTTON_SCAN" xml:space="preserve">\r
+ <value>Scan</value>\r
+ </data>\r
+ <data name="IDS_ST_BODY_ENTER_THE_P1SS_PIN_ON_YOUR_WI_FI_ROUTER_THE_SETUP_CAN_TAKE_UP_TO_P2SD_MINUTES_TO_COMPLETE" xml:space="preserve">\r
+ <value>Enter the {0} PIN on your Wi-Fi router. The setup can take up to {1} minutes to complete.</value>\r
+ </data>\r
+ <data name="IDS_WIFI_HEADER_PASSWORD" xml:space="preserve">\r
+ <value>Password</value>\r
+ </data>\r
</root>
\ No newline at end of file
<data name="IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY" xml:space="preserve">\r
<value>보안</value>\r
</data>\r
+ <data name="IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK" xml:space="preserve">\r
+ <value>숨겨진 네트워크 찾기</value>\r
+ </data>\r
+ <data name="IDS_ST_BODY_NETWORK_SSID" xml:space="preserve">\r
+ <value>네트워크 이름</value>\r
+ </data>\r
+ <data name="IDS_WIFI_SK_CANCEL" xml:space="preserve">\r
+ <value>취소</value>\r
+ </data>\r
+ <data name="IDS_COM_BODY_FIND" xml:space="preserve">\r
+ <value>찾기</value>\r
+ </data>\r
+ <data name="IDS_WIFI_POP_PRESS_WPS_ON_YOUR_WI_FI_ACCESS_POINT_WITHIN_PD_MINUTES" xml:space="preserve">\r
+ <value>Wi-Fi 액세스 포인트에서 %d분 안에 WPS 버튼을 누르세요.</value>\r
+ </data>\r
+ <data name="IDS_WIFI_BUTTON_WPS_BUTTON" xml:space="preserve">\r
+ <value>WPS 버튼</value>\r
+ </data>\r
+ <data name="IDS_WIFI_SK_WPS_PIN" xml:space="preserve">\r
+ <value>WPS PIN</value>\r
+ </data>\r
+ <data name="IDS_WIFI_HEADER_SELECT_WPS_METHOD_ABB" xml:space="preserve">\r
+ <value>WPS 방식 선택</value>\r
+ </data>\r
+ <data name="IDS_WIFI_BODY_CONNECT" xml:space="preserve">\r
+ <value>연결</value>\r
+ </data>\r
+ <data name="IDS_WIFI_OPT_WPS" xml:space="preserve">\r
+ <value>WPS</value>\r
+ </data>\r
+ <data name="IDS_WIFI_BODY_WI_FI" xml:space="preserve">\r
+ <value>Wi-Fi</value>\r
+ </data>\r
+ <data name="IDS_WIFI_BUTTON_SCAN" xml:space="preserve">\r
+ <value>찾기</value>\r
+ </data>\r
+ <data name="IDS_ST_BODY_ENTER_THE_P1SS_PIN_ON_YOUR_WI_FI_ROUTER_THE_SETUP_CAN_TAKE_UP_TO_P2SD_MINUTES_TO_COMPLETE" xml:space="preserve">\r
+ <value>Wi-Fi 공유기에 PIN{0}을 입력하세요. 설정을 완료하기까지 최대 {1}분이 소요됩니다.</value>\r
+ </data>\r
+ <data name="IDS_WIFI_HEADER_PASSWORD" xml:space="preserve">\r
+ <value>비밀번호</value>\r
+ </data>\r
</root>
\ No newline at end of file
<data name="IDS_ST_BODY_SECURED_ABB_M_WIFI_AP_SUMMARY" xml:space="preserve">\r
<value />\r
</data>\r
+ <data name="IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_ST_BODY_NETWORK_SSID" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_SK_CANCEL" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_COM_BODY_FIND" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_POP_PRESS_WPS_ON_YOUR_WI_FI_ACCESS_POINT_WITHIN_PD_MINUTES" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_BUTTON_WPS_BUTTON" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_SK_WPS_PIN" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_HEADER_SELECT_WPS_METHOD_ABB" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_BODY_CONNECT" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_OPT_WPS" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_BODY_WI_FI" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_BUTTON_SCAN" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_ST_BODY_ENTER_THE_P1SS_PIN_ON_YOUR_WI_FI_ROUTER_THE_SETUP_CAN_TAKE_UP_TO_P2SD_MINUTES_TO_COMPLETE" xml:space="preserve">\r
+ <value />\r
+ </data>\r
+ <data name="IDS_WIFI_HEADER_PASSWORD" xml:space="preserve">\r
+ <value />\r
+ </data>\r
</root>
\ No newline at end of file
+using System;
using Tizen.NUI;
using Tizen.NUI.BaseComponents;
using Tizen.NUI.Components;
HeightSpecification = 100,
};
+ var passwordItem = new DefaultLinearItem();
+ var wpsButtonItem = new DefaultLinearItem();
+
var passwordField = new TextField()
{
WidthSpecification = 400,
+ BackgroundColor = Color.Grey,
+ PlaceholderText = Resources.IDS_WIFI_HEADER_PASSWORD,
};
var hiddenInput = new Tizen.NUI.Text.HiddenInput();
hiddenInput.ShowLastCharacterDuration = 1000;
passwordField.SetHiddenInput(hiddenInput);
- connectView.Add(passwordField);
+ var wpsButton = new Button()
+ {
+ Text = Resources.IDS_WIFI_OPT_WPS,
+ };
+ wpsButton.Clicked += OnWpsClicked;
+
+ passwordItem.Add(passwordField);
+ wpsButtonItem.Add(wpsButton);
- var item = new DefaultLinearItem();
- connectView.Add(item);
+ connectView.Add(passwordItem);
+ connectView.Add(wpsButtonItem);
var cancelButton = new Button()
{
- Text = "Cancel",
- WidthSpecification = 300,
- HeightSpecification = 80,
+ Text = Resources.IDS_WIFI_SK_CANCEL,
};
cancelButton.Clicked += OnCancelClicked;
var connectButton = new Button()
{
- Text = "Connect",
- WidthSpecification = 300,
- HeightSpecification = 80,
+ Text = Resources.IDS_WIFI_BODY_CONNECT,
};
connectButton.Clicked += OnConnectClicked;
Navigator.Pop();
}
+ private void OnWpsClicked(object source, ClickedEventArgs args)
+ {
+ var page = new WpsConnectPage(mWifi);
+ page.CreateComponents(mAp);
+ Navigator.Push(page);
+ }
+
private void OnConnectClicked(object source, ClickedEventArgs args)
{
Connect();
--- /dev/null
+using System.Collections.Generic;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+using SettingWiFi.res.locale;
+using static SettingWiFi.Logger;
+
+namespace SettingWiFi
+{
+ internal class HiddenConnectPage : ContentPage
+ {
+ private WiFi mWifi;
+ private APSource mApSource;
+
+ internal HiddenConnectPage(WiFi wifi)
+ {
+ mWifi = wifi;
+ }
+
+ internal void CreateComponents(APSource apSource)
+ {
+ mApSource = apSource;
+
+ var findView = new View()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ },
+ WidthSpecification = 200,
+ HeightSpecification = 100,
+ };
+
+ var ssidField = new TextField()
+ {
+ Text = Resources.IDS_ST_BODY_NETWORK_SSID,
+ WidthSpecification = 400,
+ };
+
+ // todo: add text input
+ var input = "dnet_sn";
+
+ findView.Add(ssidField);
+
+ var item = new DefaultLinearItem();
+ findView.Add(item);
+
+ var cancelButton = new Button()
+ {
+ Text = Resources.IDS_WIFI_SK_CANCEL,
+ WidthSpecification = 300,
+ HeightSpecification = 80,
+ };
+ cancelButton.Clicked += (object source, ClickedEventArgs args) =>
+ {
+ Navigator.Pop();
+ };
+
+ var findButton = new Button()
+ {
+ Text = Resources.IDS_COM_BODY_FIND,
+ WidthSpecification = 300,
+ HeightSpecification = 80,
+ };
+ findButton.Clicked += (object source, ClickedEventArgs args) =>
+ {
+ if (mWifi.IsActive())
+ {
+ ConnectSpecificAP(input);
+ }
+ };
+
+ Content = new AlertDialog()
+ {
+ Title = Resources.IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK,
+ Content = findView,
+ Actions = new View[] { cancelButton, findButton },
+ };
+ }
+
+ private async void ConnectSpecificAP(string essid)
+ {
+ await mWifi.ScanSpecificAP(essid);
+
+ List<AP> apList = mWifi.GetSpecificScanResult();
+ if (apList.Count == 0)
+ {
+ Navigator.Pop();
+ return;
+ }
+
+ // todo: locate on the bottom of the scan list
+ //if (apList.Count > 1)
+ //{
+ // Navigator.Pop();
+ // return;
+ //}
+
+ foreach (var item in apList)
+ {
+ if (item.SecType.Equals(Resources.IDS_WIFI_POP_OPEN))
+ {
+ await mWifi.Connect(item.Essid, null);
+ }
+ else
+ {
+ Navigator.Push(CreateConnectPage(item));
+ }
+ break;
+ }
+ }
+
+ private DialogPage CreateConnectPage(AP ap)
+ {
+ var page = new ConnectPage(mWifi);
+ page.CreateComponents(ap);
+ return page;
+ }
+ }
+}
\ No newline at end of file
CollectionView mScanList;
ContentPage mInfoPage;
- ContentPage mMorePage;
DialogPage mConnectPage;
WiFi mWifi;
};
MenuItem[] menuItems = new MenuItem[itemCount];
- menuItems[0] = new MenuItem() { Text = "Add WiFi network" };
+ menuItems[0] = new MenuItem() { Text = Resources.IDS_WIFI_BUTTON_FIND_HIDDEN_NETWORK };
menuItems[0].SelectedChanged += (object sender, SelectedChangedEventArgs args) =>
{
+ Navigator.Push(CreateHiddenConnectPage());
var menuItem = sender as MenuItem;
- mMorePage = CreateMorePage();
- Navigator.Push(mMorePage);
};
moreButton.Clicked += (object sender, ClickedEventArgs args) =>
var appBar = new AppBar()
{
- Title = "Wi-Fi",
+ Title = Resources.IDS_WIFI_BODY_WI_FI,
Actions = new View[] { moreButton, },
};
var header = GetHeader();
var scanButton = new Button()
{
- Text = "Scan",
+ Text = Resources.IDS_WIFI_BUTTON_SCAN,
WidthSpecification = 300,
HeightSpecification = 80,
};
var toggle = new DefaultLinearItem()
{
WidthSpecification = LayoutParamPolicies.MatchParent,
- Text = "Wi-Fi",
+ Text = Resources.IDS_WIFI_BODY_WI_FI,
IsSelectable = false,
};
toggle.Label.HorizontalAlignment = HorizontalAlignment.Begin;
return page;
}
- private ContentPage CreateMorePage()
+ private ContentPage CreateHiddenConnectPage()
{
- var page = new MorePage(mWifi);
- page.CreateComponents();
+ var page = new HiddenConnectPage(mWifi);
+ page.CreateComponents(mApSource);
return page;
}
--- /dev/null
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+using SettingWiFi.res.locale;
+using static SettingWiFi.Logger;
+
+
+namespace SettingWiFi
+{
+ internal class WpsButtonWaitPage : DialogPage
+ {
+ private WiFi mWifi;
+ private AP mAp;
+ private bool isConnected = false;
+
+ internal WpsButtonWaitPage(WiFi wifi)
+ {
+ mWifi = wifi;
+ }
+
+ internal void CreateComponents(AP ap)
+ {
+ mAp = ap;
+
+ var view = new View()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ },
+ };
+
+ var messageItem = new DefaultLinearItem();
+ var progressItem = new DefaultLinearItem();
+
+ string timeout = "2";
+ TextLabel text = new TextLabel(String.Format(Resources.IDS_WIFI_POP_PRESS_WPS_ON_YOUR_WI_FI_ACCESS_POINT_WITHIN_PD_MINUTES, timeout))
+ {
+ Size = new Size(1000, 700),
+ HorizontalAlignment = HorizontalAlignment.Begin,
+ PointSize = 15.0f,
+ };
+
+ var progress = new Progress()
+ {
+ MinValue = 0,
+ MaxValue = 120,
+ CurrentValue = 0,
+ TrackColor = Color.White,
+ ProgressColor = Color.Navy,
+ Size = new Size(400, 50),
+ WidthSpecification = 400,
+ };
+
+ messageItem.Add(text);
+ progressItem.Add(progress);
+
+ view.Add(messageItem);
+ view.Add(progressItem);
+
+ int timeCnt = 60 * 2;
+ var timer = new Timer(1000);
+ timer.Tick += (o, e) =>
+ {
+ timeCnt--;
+ progress.CurrentValue++;
+ if (timeCnt == 0)
+ {
+ Navigator.Pop();
+ return false;
+ }
+
+ checkConnection();
+ if (isConnected)
+ {
+ Navigator.Pop();
+ return false;
+ }
+
+ return true;
+ };
+ timer.Start();
+
+ var cancelButton = new Button()
+ {
+ Text = Resources.IDS_WIFI_SK_CANCEL,
+ WidthSpecification = 100,
+ HeightSpecification = 60,
+ };
+ cancelButton.Clicked += (object s, ClickedEventArgs e) =>
+ {
+ timer.Stop();
+ Navigator.Pop();
+ };
+
+ Content = new AlertDialog()
+ {
+ Title = Resources.IDS_WIFI_BUTTON_WPS_BUTTON,
+ Content = view,
+ Actions = new View[] { cancelButton },
+ };
+ }
+
+ private async void checkConnection()
+ {
+ if (mWifi.GetConnectionState().Equals(Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS))
+ {
+ isConnected = true;
+ }
+ }
+ }
+
+ internal class WpsPinWaitPage : DialogPage
+ {
+ private WiFi mWifi;
+ private AP mAp;
+ private bool isConnected = false;
+
+ internal WpsPinWaitPage(WiFi wifi)
+ {
+ mWifi = wifi;
+ }
+
+ internal void CreateComponents(AP ap, string pin)
+ {
+ mAp = ap;
+
+ var view = new View()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ },
+ };
+
+ var messageItem = new DefaultLinearItem();
+ var progressItem = new DefaultLinearItem();
+
+ string timeout = "2";
+ TextLabel text = new TextLabel(String.Format(Resources.IDS_ST_BODY_ENTER_THE_P1SS_PIN_ON_YOUR_WI_FI_ROUTER_THE_SETUP_CAN_TAKE_UP_TO_P2SD_MINUTES_TO_COMPLETE, pin, timeout))
+ {
+ Size = new Size(1000, 700),
+ };
+ text.HorizontalAlignment = HorizontalAlignment.Begin;
+ text.PointSize = 15.0f;
+
+ var progress = new Progress()
+ {
+ MinValue = 0,
+ MaxValue = 120,
+ CurrentValue = 0,
+ TrackColor = Color.White,
+ ProgressColor = Color.Navy,
+ Size = new Size(400, 50),
+ WidthSpecification = 400,
+ };
+
+ messageItem.Add(text);
+ progressItem.Add(progress);
+
+ view.Add(messageItem);
+ view.Add(progressItem);
+
+ int timeCnt = 60 * 2;
+ var timer = new Timer(1000);
+ timer.Tick += (o, e) =>
+ {
+ timeCnt--;
+ progress.CurrentValue++;
+ if (timeCnt == 0)
+ {
+ Navigator.Pop();
+ return false;
+ }
+
+ checkConnection();
+ if (isConnected)
+ {
+ Debug(Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS);
+ Navigator.Pop();
+ return false;
+ }
+
+ return true;
+ };
+ timer.Start();
+
+ var cancelButton = new Button()
+ {
+ Text = Resources.IDS_WIFI_SK_CANCEL,
+ WidthSpecification = 100,
+ HeightSpecification = 60,
+ };
+ cancelButton.Clicked += (object s, ClickedEventArgs e) =>
+ {
+ timer.Stop();
+ Navigator.Pop();
+ };
+
+ Content = new AlertDialog()
+ {
+ Title = Resources.IDS_WIFI_SK_WPS_PIN,
+ Content = view,
+ Actions = new View[] { cancelButton },
+ };
+ }
+
+ private async void checkConnection()
+ {
+ if (mWifi.GetConnectionState().Equals(Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS))
+ {
+ isConnected = true;
+ }
+ }
+ }
+
+ internal class WpsConnectPage : DialogPage
+ {
+ private WiFi mWifi;
+ private AP mAp;
+
+ internal WpsConnectPage(WiFi wifi)
+ {
+ mWifi = wifi;
+ }
+
+ internal void CreateComponents(AP ap)
+ {
+ mAp = ap;
+
+ var view = new View()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ },
+ WidthSpecification = 200,
+ HeightSpecification = 100,
+ };
+
+ var pbsButton = new Button()
+ {
+ Text = Resources.IDS_WIFI_BUTTON_WPS_BUTTON,
+ };
+ pbsButton.Clicked += OnButtonMethodClicked;
+
+ var pinButton = new Button()
+ {
+ Text = Resources.IDS_WIFI_SK_WPS_PIN,
+ };
+ pinButton.Clicked += OnPinMethodClicked;
+
+ Content = new AlertDialog()
+ {
+ Title = Resources.IDS_WIFI_HEADER_SELECT_WPS_METHOD_ABB,
+ Content = view,
+ Actions = new View[] { pbsButton, pinButton },
+ };
+ }
+
+ private void OnButtonMethodClicked(object source, ClickedEventArgs args)
+ {
+ var page = new WpsButtonWaitPage(mWifi);
+ page.CreateComponents(mAp);
+
+ ConnectWpsPbs();
+
+ Navigator.Push(page);
+ }
+
+ private void OnPinMethodClicked(object source, ClickedEventArgs args)
+ {
+ //GeneratePinNumber(); // todo
+ string pin = "1234";
+ ConnectWpsPin(pin);
+
+ var page = new WpsPinWaitPage(mWifi);
+ page.CreateComponents(mAp, pin);
+
+ Navigator.Push(page);
+ }
+
+ private async void ConnectWpsPbs()
+ {
+ await mWifi.ConnectWps(mAp, null);
+ }
+
+ private async void ConnectWpsPin(string pin)
+ {
+ await mWifi.ConnectWps(mAp, pin);
+ }
+ }
+}
\ No newline at end of file