--- /dev/null
+using System;
+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
+{
+ public enum SecurityType
+ {
+ None = 0,
+ Wep = 1,
+ WpaPsk = 2,
+ Wpa2Psk = 3,
+ Eap = 4
+ }
+ class AddNetwork : ContentPage
+ {
+ private WiFi mWifi;
+ private Button mFindButton;
+ private SecurityType mSecurity;
+ private bool mShowAdvancedOptions;
+ View mAddNetworkView;
+ View mAdvancedView;
+ Window mWindow = NUIApplication.GetDefaultWindow();
+ internal AddNetwork(WiFi wifi)
+ {
+ mWifi = wifi;
+ mSecurity = SecurityType.None;
+ }
+
+ internal void CreateComponents(APSource apSource)
+ {
+ var appBar = new AppBar()
+ {
+ Title = Resources.IDS_ST_BODY_ADD_NETWORK,
+ };
+
+ AppBarStyle appBarStyle = (AppBarStyle)ThemeManager.GetStyle("Tizen.NUI.Components.AppBar");
+ Button backButton = new Button(((AppBarStyle)appBarStyle).BackButton);
+
+ backButton.Clicked += OnBackClicked;
+ appBar.NavigationContent = backButton;
+
+ mAddNetworkView = new View()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ HorizontalAlignment = HorizontalAlignment.Center,
+ },
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ HeightSpecification = LayoutParamPolicies.MatchParent,
+ Padding = new Extents(20, 20, 20, 20),
+ };
+ var nameFieldTitle = new TextLabel()
+ {
+
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ Text = Resources.IDS_WIFI_BODY_NAME,
+ };
+ mAddNetworkView.Add(nameFieldTitle);
+ var nameField = new TextField()
+ {
+
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ PlaceholderText = Resources.IDS_WIFI_BODY_ENTER_NETWORK_NAME,
+ Name = Resources.IDS_WIFI_BODY_NAME,
+ };
+
+ mAddNetworkView.Add(nameField);
+
+ var passwordFieldTitle = new TextLabel()
+ {
+
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ Text = Resources.IDS_WIFI_HEADER_PASSWORD,
+ };
+ mAddNetworkView.Add(passwordFieldTitle);
+
+ var passwordField = new TextField()
+ {
+
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ PlaceholderText = Resources.IDS_WIFI_HEADER_ENTER_PASSWORD,
+ Name = Resources.IDS_WIFI_HEADER_PASSWORD,
+ };
+
+ mAddNetworkView.Add(passwordField);
+
+ DefaultLinearItem securityOptions = new DefaultLinearItem()
+ {
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ IsSelectable = false,
+ Text = Resources.IDS_ST_BUTTON_SECURITY_ABB,
+
+ };
+ securityOptions.Clicked += OnSecurityOptionsClicked;
+ mAddNetworkView.Add(securityOptions);
+
+ var showMore = new CheckBox();
+ showMore.SelectedChanged += OnShowMoreSelectionChanged;
+ showMore.Text = Resources.IDS_WIFI_BODY_SHOW_ADVANCED_OPTIONS;
+ showMore.TextAlignment = HorizontalAlignment.End;
+ showMore.CellHorizontalAlignment = HorizontalAlignmentType.Left;
+ mAddNetworkView.Add(showMore);
+
+ AppBar = appBar;
+ Content = mAddNetworkView;
+ }
+ public void OnShowMoreSelectionChanged(object sender, SelectedChangedEventArgs e)
+ {
+ Debug("OnShowMoreSelectinChanged");
+ if (e.IsSelected)
+ {
+ ShowAdvancedOptions();
+ }
+ else
+ {
+ Debug("UnSelected");
+ mAddNetworkView.Remove(mAdvancedView);
+ }
+ }
+
+ public void ShowAdvancedOptions()
+ {
+
+ mAdvancedView = new View()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ HorizontalAlignment = HorizontalAlignment.Center,
+ },
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ HeightSpecification = LayoutParamPolicies.MatchParent,
+ Padding = new Extents(20, 20, 20, 20),
+ };
+
+ Debug("ShowAdvancedOptions");
+ var passwordFieldTitle = new TextLabel()
+ {
+
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ Text = Resources.IDS_WIFI_HEADER_PASSWORD,
+ };
+ mAdvancedView.Add(passwordFieldTitle);
+ mAddNetworkView.Add(mAdvancedView);
+ }
+
+ public void OnSecurityOptionsClicked(object source, ClickedEventArgs args)
+ {
+ Debug("OnSecurityOptionsClicked");
+ var page = new SecurityOptionsPage(mWifi);
+ page.CreateComponents();
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Push(page);
+ }
+
+ private Button CreateButton(int width, int height, string name)
+ {
+ var button = new Button()
+ {
+ Text = name,
+ WidthSpecification = width,
+ HeightSpecification = height,
+ };
+ return button;
+ }
+
+ private Button CreateCancelButton()
+ {
+ var cancelButton = CreateButton(300, 80, Resources.IDS_WIFI_SK_CANCEL);
+ cancelButton.Clicked += (object source, ClickedEventArgs args) =>
+ {
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
+ };
+ return cancelButton;
+ }
+
+ private void OnBackClicked(object source, ClickedEventArgs args)
+ {
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
+ }
+
+ private async void OnConnectClicked(AP ap, string password)
+ {
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
+ await mWifi.Connect(ap, password);
+ if (mWifi.GetConnectedAP().Equals(ap.Essid))
+ {
+ ap.StateInfo = Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS;
+ }
+ }
+ }
+
+ class SecurityOptionsPage : DialogPage
+ {
+ private WiFi mWifi;
+ private RadioButton[] mSecurityOptions;
+ private RadioButtonGroup mGroup;
+ string mImagesPath;
+
+ private string[] options = new string[]
+ {
+ "None",
+ "WEP",
+ "WPA PSK",
+ "WPA2 PSK"
+ };
+ internal SecurityOptionsPage(WiFi wifi)
+ {
+ Debug("SecurityOptionsPage");
+ mWifi = wifi;
+ mSecurityOptions = new RadioButton[4];
+ mGroup = new RadioButtonGroup();
+ mImagesPath = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "images/";
+ Debug("path: " + mImagesPath);
+ }
+
+ internal void CreateComponents()
+ {
+ Debug("CreateComponents");
+ var securityOptionView = new RecyclerViewItem()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ },
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ HeightSpecification = LayoutParamPolicies.WrapContent,
+ };
+
+ var okButton = new Button()
+ {
+ Text = Resources.IDS_WIFI_SK2_OK,
+ };
+ okButton.Clicked += OnOkClicked;
+
+ CreateSecurityOptions(securityOptionView);
+ mSecurityOptions[0].IsSelected = true;
+ Content = new AlertDialog()
+ {
+ Title = Resources.IDS_ST_BUTTON_SECURITY_ABB,
+ Content = securityOptionView,
+ Actions = new View[] { okButton },
+ };
+ }
+
+ private void OnOkClicked(object source, ClickedEventArgs args)
+ {
+ Debug("OnOkClicked");
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
+ }
+
+ private void CreateSecurityOptions(View securityOptionView)
+ {
+ for (int i = 0; i < 4; i++)
+ {
+ mSecurityOptions[i] = new RadioButton();
+ mSecurityOptions[i].SelectedChanged += (object sender, SelectedChangedEventArgs args) =>
+ {
+ Debug($"Left {i}th Utility RadioButton's IsSelected is changed to {args.IsSelected}.");
+ };
+ var radioButtonStyle = mSecurityOptions[i].Style;
+ radioButtonStyle.Icon.Opacity = new Selector<float?>
+ {
+ Normal = 1.0f,
+ Selected = 1.0f,
+ Disabled = 0.4f,
+ DisabledSelected = 0.4f
+ };
+ radioButtonStyle.Icon.BackgroundImage = "";
+
+ radioButtonStyle.Icon.ResourceUrl = new Selector<string>
+ {
+ Normal = mImagesPath + "controller_btn_radio_off.png",
+ Selected = mImagesPath + "controller_btn_radio_on.png",
+ Disabled = mImagesPath + "controller_btn_radio_off.png",
+ DisabledSelected = mImagesPath + "controller_btn_radio_on.png",
+ };
+ mSecurityOptions[i].ApplyStyle(radioButtonStyle);
+ mSecurityOptions[i].Size = new Size(48, 48);
+ mSecurityOptions[i].Icon.Size = new Size(48, 48);
+ mSecurityOptions[i].Text = options[i];
+ mSecurityOptions[i].Name = options[i];
+ Debug(i + " " + options[i] + " : ");
+ mGroup.Add(mSecurityOptions[i]);
+ securityOptionView.Add(mSecurityOptions[i]);
+ }
+ }
+ }
+}
+