Add "Add Network" functionality 54/290454/5
authorAkash Kumar <akash1.kumar@samsung.com>
Sat, 25 Mar 2023 04:34:43 +0000 (10:04 +0530)
committerAkash Kumar <akash1.kumar@samsung.com>
Mon, 3 Apr 2023 08:42:04 +0000 (14:12 +0530)
This patche set adds
-  security option pop-up and
-  show/hide advanced options on toggling checkbox

Change-Id: I216fea2e9cfd20d3a6edc37cda6703a2d66305ae
Signed-off-by: Akash Kumar <akash1.kumar@samsung.com>
SettingWiFi/SettingWiFi/res/images/controller_btn_radio_off.png [new file with mode: 0644]
SettingWiFi/SettingWiFi/res/images/controller_btn_radio_on.png [new file with mode: 0644]
SettingWiFi/SettingWiFi/resources/locale/Resources.Designer.cs
SettingWiFi/SettingWiFi/resources/locale/Resources.en.resx
SettingWiFi/SettingWiFi/resources/locale/Resources.ko-KR.resx
SettingWiFi/SettingWiFi/view/AddNetwork.cs [new file with mode: 0644]
SettingWiFi/SettingWiFi/view/MainPage.cs
SettingWiFi/SettingWiFi/view/Resources.cs
packaging/org.tizen.cssetting-wifi-1.0.0.tpk

diff --git a/SettingWiFi/SettingWiFi/res/images/controller_btn_radio_off.png b/SettingWiFi/SettingWiFi/res/images/controller_btn_radio_off.png
new file mode 100644 (file)
index 0000000..d423241
Binary files /dev/null and b/SettingWiFi/SettingWiFi/res/images/controller_btn_radio_off.png differ
diff --git a/SettingWiFi/SettingWiFi/res/images/controller_btn_radio_on.png b/SettingWiFi/SettingWiFi/res/images/controller_btn_radio_on.png
new file mode 100644 (file)
index 0000000..d08e8e7
Binary files /dev/null and b/SettingWiFi/SettingWiFi/res/images/controller_btn_radio_on.png differ
index 141b3fef641ce62495f18c74d49a5a2a184a9247..6e2cef4b3dadacb1aad67b18c63b22870d2c706e 100755 (executable)
@@ -814,6 +814,26 @@ namespace SettingWiFi.res.locale
                 return ResourceManager.GetString("IDS_WIFI_AFTER_YOU_INSTALL_THEY_WILL_BE_SHOWN_HERE", resourceCulture);
             }
         }
-
+        public static string IDS_ST_BODY_ADD_NETWORK
+        {
+            get
+            {
+                return ResourceManager.GetString("IDS_ST_BODY_ADD_NETWORK", resourceCulture);
+            }
+        }
+        public static string IDS_WIFI_BODY_ENTER_NETWORK_NAME
+        {
+            get
+            {
+                return ResourceManager.GetString("IDS_WIFI_BODY_ENTER_NETWORK_NAME", resourceCulture);
+            }
+        }
+        public static string IDS_WIFI_BODY_SHOW_ADVANCED_OPTIONS
+        {
+            get
+            {
+                return ResourceManager.GetString("IDS_WIFI_BODY_SHOW_ADVANCED_OPTIONS", resourceCulture);
+            }
+        }
     }
 }
index e138bc76be331a811c4aedd1d3113fb93ac5512b..933a7ffb4a3b718d21c5ed7cf623266340533b57 100755 (executable)
   <data name="IDS_WIFI_AFTER_YOU_INSTALL_THEY_WILL_BE_SHOWN_HERE" xml:space="preserve">\r
     <value>After you install, they will be shown here.</value>\r
   </data>\r
+  <data name="IDS_ST_BODY_ADD_NETWORK" xml:space="preserve">\r
+    <value>Add network</value>\r
+  </data>\r
+  <data name="IDS_WIFI_BODY_ENTER_NETWORK_NAME" xml:space="preserve">\r
+    <value>Enter network name</value>\r
+  </data>\r
+  <data name="IDS_WIFI_BODY_SHOW_ADVANCED_OPTIONS" xml:space="preserve">\r
+    <value>Show advanced options</value>\r
+  </data>\r
 </root>\r
index a93cdd5193281fc9ad4c0224bcc755c8824eb9d8..ef9aefaf5f1b457a0d7cb8d6f438059b9e944463 100755 (executable)
   <data name="IDS_WIFI_AFTER_YOU_INSTALL_THEY_WILL_BE_SHOWN_HERE" xml:space="preserve">\r
     <value>설치가 완료되면 여기에 표시됩니다.</value>\r
   </data>\r
+  <data name="IDS_ST_BODY_ADD_NETWORK" xml:space="preserve">\r
+    <value>네트워크 추가</value>\r
+  </data>\r
+  <data name="IDS_WIFI_BODY_ENTER_NETWORK_NAME" xml:space="preserve">\r
+    <value>네트워크 이름 입력</value>\r
+  </data>\r
+  <data name="IDS_WIFI_BODY_SHOW_ADVANCED_OPTIONS" xml:space="preserve">\r
+    <value>고급 옵션 표시</value>\r
+  </data>\r
+\r
 </root>\r
diff --git a/SettingWiFi/SettingWiFi/view/AddNetwork.cs b/SettingWiFi/SettingWiFi/view/AddNetwork.cs
new file mode 100644 (file)
index 0000000..368543e
--- /dev/null
@@ -0,0 +1,295 @@
+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]);
+            }
+        }
+    }
+}
+
index de39475522a22fca9de6ad9ce289ab73a3bc4263..1391784f5153e1570b4bc5d5dbd85081b06a2369 100755 (executable)
@@ -109,11 +109,19 @@ namespace SettingWiFi
                 HeightSpecification = 80,
             };
             scanButton.Clicked += OnScanClicked;
+            //Add Network button
+            var addNetwork = new Button()
+            {
+                Text = Resources.IDS_ST_BODY_ADD_NETWORK,
+                WidthSpecification = 300,
+                HeightSpecification = 80,
+            };
+            addNetwork.Clicked += OnAddNetworkClicked;
 
             mainView.Add(header);
             mainView.Add(mScanList);
             mainView.Add(scanButton);
-
+            mainView.Add(addNetwork);
             Content = mainView;
         }
 
@@ -268,6 +276,20 @@ namespace SettingWiFi
             return page;
         }
 
+        private ContentPage CreateAddNetworkPage()
+        {
+            var page = new AddNetwork(mWifi);
+            page.CreateComponents(mApSource);
+            return page;
+        }
+
+        private void OnAddNetworkClicked(object sender, ClickedEventArgs e)
+        {
+            Debug("OnAddNetworkClicked");
+            var page = CreateAddNetworkPage();
+            NUIApplication.GetDefaultWindow().GetDefaultNavigator().Push(page);
+        }
+
         private async void ConnectOpenAP(AP ap)
         {
             Debug("Connect open AP");
index 183006339fd688eace4df23c0838ebd2b1eff53a..3418f94f3ea1de0e6e746cdf1143cc0fe2ad6a94 100755 (executable)
         static public string IDS_WIFI_CERTIFICATE_SEARCH_RESULTS = "Certificate Search Results";\r
         static public string IDS_WIFI_NO_CERTIFICATE_FOUND = "No certificate found.";\r
         static public string IDS_WIFI_AFTER_YOU_INSTALL_THEY_WILL_BE_SHOWN_HERE = "After you install, they will be shown here.";\r
+        static public string IDS_ST_BODY_ADD_NETWORK = "Add network";\r
+        static public string IDS_WIFI_BODY_ENTER_NETWORK_NAME = "Enter network name";\r
+        static public string IDS_WIFI_BODY_SHOW_ADVANCED_OPTIONS = "Show advanced options";\r
     }\r
 }\r
index dfed33c25e9599ace14bd945a2e17c1383952661..2920a4375dc07675215423598b760ffebca4e64e 100644 (file)
Binary files a/packaging/org.tizen.cssetting-wifi-1.0.0.tpk and b/packaging/org.tizen.cssetting-wifi-1.0.0.tpk differ