Define classes for each ContentPage 63/282563/2
authorcheoleun moon <chleun.moon@samsung.com>
Thu, 6 Oct 2022 03:25:24 +0000 (12:25 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Thu, 6 Oct 2022 10:33:10 +0000 (19:33 +0900)
Change-Id: I4433088182959f983023a19c3e9350b2fb7473ae

SettingWiFi/SettingWiFi/AP.cs [deleted file]
SettingWiFi/SettingWiFi/SettingWiFi.cs
SettingWiFi/SettingWiFi/WiFi.cs [deleted file]
SettingWiFi/SettingWiFi/WidgetSettingWiFi.cs [deleted file]
SettingWiFi/SettingWiFi/controller/WiFi.cs [new file with mode: 0755]
SettingWiFi/SettingWiFi/view/AP.cs [new file with mode: 0755]
SettingWiFi/SettingWiFi/view/InfoPage.cs [new file with mode: 0644]
SettingWiFi/SettingWiFi/view/Logger.cs [new file with mode: 0644]
SettingWiFi/SettingWiFi/view/MainPage.cs [new file with mode: 0644]
SettingWiFi/SettingWiFi/view/MorePage.cs [new file with mode: 0644]
SettingWiFi/SettingWiFi/view/WidgetSettingWiFi.cs [new file with mode: 0755]

diff --git a/SettingWiFi/SettingWiFi/AP.cs b/SettingWiFi/SettingWiFi/AP.cs
deleted file mode 100755 (executable)
index d394406..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-using System;\r
-using System.ComponentModel;\r
-using System.Collections.Generic;\r
-using System.Collections.ObjectModel;\r
-using Tizen;\r
-using Tizen.NUI.BaseComponents;\r
-using Tizen.NUI.Components;\r
-using Tizen.NUI.Binding;\r
-using Tizen.Network.WiFi;\r
-\r
-\r
-namespace SettingWiFi\r
-{\r
-    public class AP : INotifyPropertyChanged\r
-    {\r
-        string iconDir = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "icon.png";\r
-        private string essid;\r
-        private string state;\r
-\r
-        public event PropertyChangedEventHandler PropertyChanged;\r
-\r
-        private void OnPropertyChanged(string propertyName)\r
-        {\r
-            Log.Debug(Program.LogTag, "OnPropertyChanged");\r
-            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\r
-        }\r
-\r
-        public AP(string apEssid, string apState)\r
-        {\r
-            essid = apEssid;\r
-            state = apState;\r
-        }\r
-\r
-        public string Essid\r
-        {\r
-            get\r
-            {\r
-                return essid;\r
-            }\r
-            set\r
-            {\r
-                essid = value;\r
-                OnPropertyChanged("Essid");\r
-            }\r
-        }\r
-\r
-        public string ImageUrl\r
-        {\r
-            get\r
-            {\r
-                return iconDir;\r
-            }\r
-        }\r
-\r
-        public string State\r
-        {\r
-            get\r
-            {\r
-                return state;\r
-            }\r
-            set\r
-            {\r
-                state = value;\r
-                OnPropertyChanged("State");\r
-            }\r
-        }\r
-    };\r
-\r
-    public class DeviceCollection : ObservableCollection<AP>\r
-    {\r
-        private string title;\r
-\r
-        public DeviceCollection(string groupTitle)\r
-        {\r
-            title = groupTitle;\r
-            this.UpdateScanList(null);\r
-        }\r
-\r
-        public string Title\r
-        {\r
-            get\r
-            {\r
-                return title;\r
-            }\r
-            set\r
-            {\r
-                title = value;\r
-                OnPropertyChanged(new PropertyChangedEventArgs("Title"));\r
-            }\r
-        }\r
-\r
-        public void UpdateScanList(List<AP> apList)\r
-        {\r
-            if (apList == null)\r
-            {\r
-                Log.Debug(Program.LogTag, "apList is null");\r
-                this.Add(new AP("", ""));\r
-                return;\r
-            }\r
-            // Clear method have some issue about asynchronous actions,\r
-            // so call Remove for all item is recommanded.\r
-            while (this.Count > 0)\r
-            {\r
-                this.RemoveAt(this.Count - 1);\r
-            }\r
-\r
-            foreach (var item in apList)\r
-            {\r
-                this.Add(new AP(item.Essid, item.State));\r
-            }\r
-        }\r
-\r
-        public void RemoveDevices()\r
-        {\r
-            while (this.Count > 0)\r
-            {\r
-                this.RemoveAt(this.Count - 1);\r
-            }\r
-        }\r
-    }\r
-\r
-    public class APSource : ObservableCollection<DeviceCollection>\r
-    {\r
-        private DeviceCollection available;\r
-        public APSource()\r
-        {\r
-            Log.Debug(Program.LogTag, "new APSource");\r
-            available = new DeviceCollection("Available networks");\r
-            this.Add(available);\r
-            Log.Debug(Program.LogTag, "Add DeviceCollection");\r
-        }\r
-        public void UpdateScanList(List<AP> apList)\r
-        {\r
-            available.UpdateScanList(apList);\r
-        }\r
-\r
-        public void RemoveDevices()\r
-        {\r
-            available.RemoveDevices();\r
-        }\r
-    }\r
-}
\ No newline at end of file
index f2aafc53bd0eaf425c09523dfab24674132c38ef..8ec3fec303d0a67d79f6d536fd899b941436a684 100755 (executable)
@@ -4,10 +4,9 @@ using Tizen.NUI;
 
 namespace SettingWiFi
 {
-    public class Program : NUIWidgetApplication
+    public class SettingWiFi : NUIWidgetApplication
     {
-        internal static readonly string LogTag = "SettingWiFi.App";
-        public Program(Dictionary<System.Type, string> widgetSet) : base(widgetSet)
+        public SettingWiFi(Dictionary<System.Type, string> widgetSet) : base(widgetSet)
         {
         }
 
@@ -28,7 +27,7 @@ namespace SettingWiFi
         {
             Dictionary<System.Type, string> widgetSet = new Dictionary<Type, string>();
             widgetSet.Add(typeof(WidgetSettingWiFi), "wifi@org.tizen.cssetting-wifi");
-            var app = new Program(widgetSet);
+            var app = new SettingWiFi(widgetSet);
             app.Run(args);
         }
     }
diff --git a/SettingWiFi/SettingWiFi/WiFi.cs b/SettingWiFi/SettingWiFi/WiFi.cs
deleted file mode 100755 (executable)
index b6e1a2b..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Threading.Tasks;\r
-using Tizen;\r
-using Tizen.Network.WiFi;\r
-\r
-namespace SettingWiFi\r
-{\r
-    public class WiFi\r
-    {\r
-        IEnumerable<WiFiAP> apList = new List<WiFiAP>();\r
-\r
-        public async Task Activate()\r
-        {\r
-            try\r
-            {\r
-                await WiFiManager.ActivateAsync();\r
-            }\r
-            catch (Exception e)\r
-            {\r
-                Log.Debug(Program.LogTag, "Fail to activate WiFi " + e.ToString());\r
-            }\r
-        }\r
-\r
-        public Task Deactivate()\r
-        {\r
-            return WiFiManager.DeactivateAsync();\r
-        }\r
-\r
-        public async Task Scan()\r
-        {\r
-            try\r
-            {\r
-                await WiFiManager.ScanAsync();\r
-            }\r
-            catch (Exception e)\r
-            {\r
-                Log.Debug(Program.LogTag, "Fail to scan " + e.ToString());\r
-            }\r
-        }\r
-\r
-        public List<AP> GetScanResult()\r
-        {\r
-            try\r
-            {\r
-                apList = WiFiManager.GetFoundAPs();\r
-                return GetAPList();\r
-            }\r
-            catch (Exception e)\r
-            {\r
-                Log.Debug(Program.LogTag, "Fail to get scan result " + e.ToString());\r
-            }\r
-\r
-            return null;\r
-        }\r
-\r
-        public async Task Connect(string essid, string password)\r
-        {\r
-            WiFiAP ap = FindAP(essid);\r
-            if (ap == null)\r
-            {\r
-                Log.Debug(Program.LogTag, "Cannet find " + essid);\r
-                return;\r
-            }\r
-\r
-            if (password.Length > 0)\r
-            {\r
-                ap.SecurityInformation.SetPassphrase(password);\r
-            }\r
-\r
-            try\r
-            {\r
-                await ap.ConnectAsync();\r
-            }\r
-            catch (Exception e)\r
-            {\r
-                Log.Debug(Program.LogTag, "Fail to connect" + e.ToString());\r
-            }\r
-\r
-        }\r
-\r
-        public Task Disconnect(string essid)\r
-        {\r
-            WiFiAP ap = FindAP(essid);\r
-            if (ap == null)\r
-            {\r
-                return Task.FromException(new ArgumentException("Cannot find " + essid));\r
-            }\r
-            return ap.DisconnectAsync();\r
-        }\r
-\r
-        public void Forget(string essid)\r
-        {\r
-            WiFiAP ap = FindAP(essid);\r
-            if (ap == null)\r
-            {\r
-                Log.Debug(Program.LogTag, "Cannot find " + essid);\r
-                return;\r
-            }\r
-            ap.ForgetAP();\r
-        }\r
-\r
-        private WiFiAP FindAP(string essid)\r
-        {\r
-            GetScanResult();\r
-            foreach (var item in apList)\r
-            {\r
-                Log.Debug(Program.LogTag, "Found AP\t" + item.NetworkInformation.Essid);\r
-                if (item.NetworkInformation.Essid.Equals(essid))\r
-                {\r
-                    return item;\r
-                }\r
-            }\r
-\r
-            return null;\r
-        }\r
-\r
-        public bool IsActive()\r
-        {\r
-            if (WiFiManager.IsActive)\r
-            {\r
-                return true;\r
-            }\r
-\r
-            return false;\r
-        }\r
-\r
-        public string GetConnectedAP()\r
-        {\r
-            return WiFiManager.GetConnectedAP().NetworkInformation.Essid;\r
-        }\r
-\r
-        public List<AP> GetAPList()\r
-        {\r
-            List<AP> apInfoList = new List<AP>();\r
-            foreach (var item in apList)\r
-            {\r
-                Log.Debug(Program.LogTag, "AP name: " + item.NetworkInformation.Essid);\r
-                Log.Debug(Program.LogTag, "AP connection state: " + item.NetworkInformation.ConnectionState.ToString());\r
-\r
-                string connectionState = item.NetworkInformation.ConnectionState.ToString();\r
-                string securityType = item.SecurityInformation.SecurityType.ToString();\r
-                //bool isPassphraseRequired = item.SecurityInformation.IsPassphraseRequired;\r
-                bool isWpsSupported = item.SecurityInformation.IsWpsSupported;\r
-\r
-                if (item.NetworkInformation.ConnectionState.ToString().Equals("Connected"))\r
-                {\r
-                    apInfoList.Add(new AP(item.NetworkInformation.Essid, "Connected"));\r
-                    continue;\r
-                }\r
-                string text = "";\r
-\r
-                if (securityType.Equals("None"))\r
-                {\r
-                    text = "Open";\r
-                }\r
-                else if (securityType.Equals("Eap"))\r
-                {\r
-                    text = "Secured (Eap)";\r
-                }\r
-                else if (isWpsSupported)\r
-                {\r
-                    text = "Secured (WPS available)";\r
-                }\r
-                else\r
-                {\r
-                    text = "Secured";\r
-                }\r
-\r
-                apInfoList.Add(new AP(item.NetworkInformation.Essid, text));\r
-            }\r
-\r
-            return apInfoList;\r
-        }\r
-    }\r
-}\r
diff --git a/SettingWiFi/SettingWiFi/WidgetSettingWiFi.cs b/SettingWiFi/SettingWiFi/WidgetSettingWiFi.cs
deleted file mode 100755 (executable)
index b9fedba..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-using System;\r
-using System.Collections.Generic;\r
-using Tizen;\r
-using Tizen.Applications;\r
-using Tizen.NUI;\r
-using Tizen.NUI.Accessibility;\r
-using Tizen.NUI.BaseComponents;\r
-using Tizen.NUI.Binding;\r
-using Tizen.NUI.Components;\r
-\r
-\r
-namespace SettingWiFi\r
-{\r
-    internal class WidgetSettingWiFi : Widget\r
-    {\r
-        CollectionView scanList;\r
-        Navigator navigator;\r
-\r
-        ContentPage mainPage;\r
-        ContentPage infoPage;\r
-        ContentPage morePage;\r
-\r
-        WiFi wifi;\r
-        APSource apSource;\r
-\r
-        private static readonly int itemCount = 1;\r
-        private MenuItem[] menuItems = new MenuItem[itemCount];\r
-\r
-        private RecyclerViewItem GetHeader()\r
-        {\r
-            var header = new RecyclerViewItem()\r
-            {\r
-                Layout = new LinearLayout()\r
-                {\r
-                    LinearOrientation = LinearLayout.Orientation.Vertical,\r
-                },\r
-                WidthSpecification = LayoutParamPolicies.MatchParent,\r
-                HeightSpecification = LayoutParamPolicies.WrapContent,\r
-            };\r
-\r
-            bool isWiFiOn = false;\r
-            if (IsWiFiActive())\r
-            {\r
-                isWiFiOn = true;\r
-                Log.Debug(Program.LogTag, "ScanAP");\r
-                ScanAP();\r
-            }\r
-\r
-            var toggle = new DefaultLinearItem()\r
-            {\r
-                WidthSpecification = LayoutParamPolicies.MatchParent,\r
-                Text = "Wi-Fi",\r
-                IsSelectable = false,\r
-            };\r
-            toggle.Label.HorizontalAlignment = HorizontalAlignment.Begin;\r
-\r
-            var onOffSwitch = new Switch()\r
-            {\r
-                IsSelected = isWiFiOn,\r
-            };\r
-\r
-            toggle.Extra = onOffSwitch;\r
-            onOffSwitch.SelectedChanged += OnWiFiSelected;\r
-            header.Add(toggle);\r
-\r
-            return header;\r
-        }\r
-\r
-        private ContentPage CreateMainPage()\r
-        {\r
-            var moreButton = new Button()\r
-            {\r
-                Text = "More",\r
-            };\r
-\r
-            MenuItem[] menuItems = new MenuItem[itemCount];\r
-            menuItems[0] = new MenuItem() { Text = "Add WiFi network" };\r
-            menuItems[0].SelectedChanged += (object sender, SelectedChangedEventArgs args) =>\r
-            {\r
-                var menuItem = sender as MenuItem;\r
-                navigator.Push(morePage);\r
-            };\r
-\r
-            moreButton.Clicked += (object sender, ClickedEventArgs args) =>\r
-            {\r
-                var menu = new Menu()\r
-                {\r
-                    Anchor = moreButton,\r
-                    HorizontalPositionToAnchor = Menu.RelativePosition.Center,\r
-                    VerticalPositionToAnchor = Menu.RelativePosition.End,\r
-                    Items = menuItems,\r
-                };\r
-                menu.Post();\r
-            };\r
-\r
-            var appBar = new AppBar()\r
-            {\r
-                Title = "Wi-Fi",\r
-                Actions = new View[] { moreButton, },\r
-            };\r
-\r
-            AppBarStyle appBarStyle = (AppBarStyle)ThemeManager.GetStyle("Tizen.NUI.Components.AppBar");\r
-            Button backButton = new Button(((AppBarStyle)appBarStyle).BackButton);\r
-\r
-            backButton.Clicked += (object source, ClickedEventArgs args) =>\r
-            {\r
-                navigator.Pop();\r
-            };\r
-\r
-            appBar.NavigationContent = backButton;\r
-\r
-            View mainView = new View()\r
-            {\r
-                Layout = new LinearLayout()\r
-                {\r
-                    LinearOrientation = LinearLayout.Orientation.Vertical,\r
-                    HorizontalAlignment = HorizontalAlignment.Center,\r
-                },\r
-                WidthSpecification = LayoutParamPolicies.MatchParent,\r
-                HeightSpecification = LayoutParamPolicies.MatchParent,\r
-            };\r
-\r
-            scanList = new CollectionView()\r
-            {\r
-                ItemsSource = apSource,\r
-                ItemsLayouter = new LinearLayouter(),\r
-                ItemTemplate = new DataTemplate(() =>\r
-                {\r
-                    DefaultLinearItem item = new DefaultLinearItem() //itemÀÌ °¢ AP\r
-                    {\r
-                        WidthSpecification = LayoutParamPolicies.MatchParent,\r
-                    };\r
-                    item.Label.SetBinding(TextLabel.TextProperty, "Essid");\r
-                    item.Label.HorizontalAlignment = HorizontalAlignment.Begin;\r
-                    item.SubLabel.SetBinding(TextLabel.TextProperty, "State");\r
-                    item.SubLabel.HorizontalAlignment = HorizontalAlignment.Begin;\r
-                    item.Icon.SetBinding(ImageView.ResourceUrlProperty, "ImageUrl");\r
-                    item.Icon.WidthSpecification = 40;\r
-                    item.Icon.HeightSpecification = 40;\r
-\r
-                    var infoButton = new Button()\r
-                    {\r
-                        Text = "i",\r
-                        WidthSpecification = 40,\r
-                        HeightSpecification = 40,\r
-                    };\r
-                    //infoButton.Icon.SetBinding(ImageView.ResourceUrlProperty, "InfoImageUrl");\r
-                    infoButton.Clicked += OnInfoButtonClicked;\r
-                    item.Extra = infoButton;\r
-\r
-                    return item;\r
-                }),\r
-                GroupHeaderTemplate = new DataTemplate(() =>\r
-                {\r
-                    DefaultTitleItem group = new DefaultTitleItem();\r
-                    group.WidthSpecification = LayoutParamPolicies.MatchParent;\r
-\r
-                    group.Label.SetBinding(TextLabel.TextProperty, "Title");\r
-                    group.Label.HorizontalAlignment = HorizontalAlignment.Begin;\r
-\r
-                    return group;\r
-                }),\r
-                IsGrouped = true,\r
-                ScrollingDirection = ScrollableBase.Direction.Vertical,\r
-                WidthSpecification = LayoutParamPolicies.MatchParent,\r
-                HeightSpecification = LayoutParamPolicies.MatchParent,\r
-                SelectionMode = ItemSelectionMode.Single,\r
-            };\r
-            scanList.SelectionChanged += OnScanListSelected;\r
-\r
-            var header = GetHeader();\r
-            var scanButton = new Button()\r
-            {\r
-                Text = "Scan",\r
-                WidthSpecification = 300,\r
-                HeightSpecification = 80,\r
-            };\r
-            scanButton.Clicked += OnScanButtonClicked;\r
-\r
-            mainView.Add(header);\r
-            mainView.Add(scanList);\r
-            mainView.Add(scanButton);\r
-            ContentPage page = new ContentPage()\r
-            {\r
-                AppBar = appBar,\r
-                Content = mainView,\r
-            };\r
-\r
-            return page;\r
-        }\r
-\r
-        private ContentPage CreateInfoPage(AP ap)\r
-        {\r
-            var appBar = new AppBar()\r
-            {\r
-                Title = "Wi-Fi network info",\r
-            };\r
-\r
-            AppBarStyle appBarStyle = (AppBarStyle)ThemeManager.GetStyle("Tizen.NUI.Components.AppBar");\r
-            Button backButton = new Button(((AppBarStyle)appBarStyle).BackButton);\r
-\r
-            backButton.Clicked += (object source, ClickedEventArgs args) =>\r
-            {\r
-                navigator.Pop();\r
-            };\r
-\r
-            View infoView = new View()\r
-            {\r
-                Layout = new LinearLayout()\r
-                {\r
-                    LinearOrientation = LinearLayout.Orientation.Vertical,\r
-                    HorizontalAlignment = HorizontalAlignment.Center,\r
-                },\r
-                WidthSpecification = LayoutParamPolicies.MatchParent,\r
-                HeightSpecification = LayoutParamPolicies.MatchParent,\r
-            };\r
-\r
-            var forgetButton = new Button()\r
-            {\r
-                Text = "Forget",\r
-                WidthSpecification = 300,\r
-                HeightSpecification = 80,\r
-            };\r
-\r
-            forgetButton.Clicked += (object source, ClickedEventArgs args) =>\r
-            {\r
-                Log.Debug(Program.LogTag, "Forget " + ap.Essid);\r
-                wifi.Forget(ap.Essid);\r
-                ScanAP();\r
-            };\r
-\r
-            infoView.Add(forgetButton);\r
-            ContentPage page = new ContentPage()\r
-            {\r
-                AppBar = appBar,\r
-                Content = infoView,\r
-            };\r
-\r
-            return page;\r
-        }\r
-\r
-        private ContentPage CreatemorePage()\r
-        {\r
-            var appBar = new AppBar()\r
-            {\r
-                Title = "Add Wi-Fi network",\r
-            };\r
-\r
-            AppBarStyle appBarStyle = (AppBarStyle)ThemeManager.GetStyle("Tizen.NUI.Components.AppBar");\r
-            Button backButton = new Button(((AppBarStyle)appBarStyle).BackButton);\r
-\r
-            backButton.Clicked += (object source, ClickedEventArgs args) =>\r
-            {\r
-                navigator.Pop();\r
-            };\r
-\r
-            View moreView = new View()\r
-            {\r
-                Layout = new LinearLayout()\r
-                {\r
-                    LinearOrientation = LinearLayout.Orientation.Vertical,\r
-                    HorizontalAlignment = HorizontalAlignment.Center,\r
-                },\r
-                WidthSpecification = LayoutParamPolicies.MatchParent,\r
-                HeightSpecification = LayoutParamPolicies.MatchParent,\r
-            };\r
-\r
-            ContentPage page = new ContentPage()\r
-            {\r
-                AppBar = appBar,\r
-                Content = moreView,\r
-            };\r
-\r
-            return page;\r
-        }\r
-\r
-        protected override void OnCreate(string contentInfo, Window window)\r
-        {\r
-            navigator = window.GetDefaultNavigator();\r
-            wifi = new WiFi();\r
-            apSource = new APSource();\r
-\r
-            mainPage = CreateMainPage();\r
-            morePage = CreatemorePage();\r
-\r
-            navigator.Push(mainPage);\r
-        }\r
-\r
-        /* Call WiFi */\r
-        private async void OnWiFiSelected(object sender, SelectedChangedEventArgs e)\r
-        {\r
-            if (e.IsSelected)\r
-            {\r
-                if (!IsWiFiActive())\r
-                {\r
-                    await wifi.Activate();\r
-                }\r
-                /* TODO: auto connect */\r
-                ScanAP();\r
-            }\r
-            else\r
-            {\r
-                if (IsWiFiActive())\r
-                {\r
-                    await wifi.Deactivate();\r
-                }\r
-                apSource.RemoveDevices();\r
-            }\r
-        }\r
-\r
-        private void OnScanButtonClicked(object sender, ClickedEventArgs e)\r
-        {\r
-            Log.Debug(Program.LogTag, "OnScanButtonClicked");\r
-            ScanAP();\r
-        }\r
-\r
-        private void OnInfoButtonClicked(object sender, ClickedEventArgs e)\r
-        {\r
-            Log.Debug(Program.LogTag, "OnInfoButtonClicked");\r
-            Button button = (Button)sender;\r
-            infoPage = CreateInfoPage(button.BindingContext as AP);\r
-            navigator.Push(infoPage);\r
-        }\r
-\r
-        private bool IsWiFiActive()\r
-        {\r
-            return wifi.IsActive();\r
-        }\r
-\r
-        private async void ScanAP()\r
-        {\r
-            if (IsWiFiActive())\r
-            {\r
-                await wifi.Scan();\r
-                List<AP> apList = wifi.GetScanResult();\r
-                apSource.UpdateScanList(apList);\r
-            }\r
-        }\r
-\r
-        public async void OnScanListSelected(object sender, SelectionChangedEventArgs ev)\r
-        {\r
-            //SingleSelection Only have 1 or nil object in the list.\r
-            foreach (object item in ev.PreviousSelection)\r
-            {\r
-                if (item == null) break;\r
-                if (item is AP ap)\r
-                {\r
-                    //Log.Debug(LogTag, "Disconnect ");\r
-                    //await wifi.Disconnect(device.Essid);\r
-                    //device.State = "Disonnected";\r
-\r
-                    // device.Connected = false;\r
-                }\r
-            }\r
-            foreach (object item in ev.CurrentSelection)\r
-            {\r
-                if (item == null) break;\r
-                if (item is AP ap)\r
-                {\r
-                    if (ap.State.Equals("Connected"))\r
-                    {\r
-                        Log.Debug(Program.LogTag, "already connected");\r
-                        return;\r
-                    }\r
-\r
-                    /* TODO: pop-up (password, cancel, connect) */\r
-                    ap.State = "Connecting";\r
-                    await wifi.Connect(ap.Essid, "datanetwork");\r
-                    if(wifi.GetConnectedAP().Equals(ap.Essid))\r
-                    {\r
-                        ap.State = "Connected";\r
-                    }\r
-                    //  device.Connected = true;\r
-                    //  device.Registered = true;\r
-                }\r
-            }\r
-        }\r
-    }\r
-}\r
diff --git a/SettingWiFi/SettingWiFi/controller/WiFi.cs b/SettingWiFi/SettingWiFi/controller/WiFi.cs
new file mode 100755 (executable)
index 0000000..2b4068c
--- /dev/null
@@ -0,0 +1,189 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Text;\r
+using System.Threading.Tasks;\r
+using Tizen;\r
+using Tizen.Network.WiFi;\r
+using static SettingWiFi.Logger;\r
+\r
+namespace SettingWiFi\r
+{\r
+    public class WiFi\r
+    {\r
+        IEnumerable<WiFiAP> apList = new List<WiFiAP>();\r
+\r
+        public async Task Activate()\r
+        {\r
+            Debug("WiFi.Activate");\r
+            try\r
+            {\r
+                await WiFiManager.ActivateAsync();\r
+            }\r
+            catch (Exception e)\r
+            {\r
+                Debug("Fail to activate WiFi " + e.ToString());\r
+            }\r
+        }\r
+\r
+        public Task Deactivate()\r
+        {\r
+            Debug("WiFi.Deactivate");\r
+            return WiFiManager.DeactivateAsync();\r
+        }\r
+\r
+        public async Task Scan()\r
+        {\r
+            Debug("WiFi.Scan");\r
+            try\r
+            {\r
+                await WiFiManager.ScanAsync();\r
+            }\r
+            catch (Exception e)\r
+            {\r
+                Debug("Fail to scan " + e.ToString());\r
+            }\r
+        }\r
+\r
+        public List<AP> GetScanResult()\r
+        {\r
+            Debug("WiFi.GetScanResult");\r
+            try\r
+            {\r
+                apList = WiFiManager.GetFoundAPs();\r
+                return GetAPList();\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 Connect(string essid, string password)\r
+        {\r
+            Debug("WiFi.Connect");\r
+            WiFiAP ap = FindAP(essid);\r
+            if (ap == null)\r
+            {\r
+                Debug("Cannet find " + essid);\r
+                return;\r
+            }\r
+\r
+            if (password.Length > 0)\r
+            {\r
+                ap.SecurityInformation.SetPassphrase(password);\r
+            }\r
+\r
+            try\r
+            {\r
+                await ap.ConnectAsync();\r
+            }\r
+            catch (Exception e)\r
+            {\r
+                Debug("Fail to connect" + e.ToString());\r
+            }\r
+\r
+        }\r
+\r
+        public Task Disconnect(string essid)\r
+        {\r
+            Debug("WiFi.Disconnect");\r
+            WiFiAP ap = FindAP(essid);\r
+            if (ap == null)\r
+            {\r
+                return Task.FromException(new ArgumentException("Cannot find " + essid));\r
+            }\r
+            return ap.DisconnectAsync();\r
+        }\r
+\r
+        public void Forget(string essid)\r
+        {\r
+            Debug("WiFi.Forget");\r
+            WiFiAP ap = FindAP(essid);\r
+            if (ap == null)\r
+            {\r
+                Debug("Cannot find " + essid);\r
+                return;\r
+            }\r
+            ap.ForgetAP();\r
+        }\r
+\r
+        private WiFiAP FindAP(string essid)\r
+        {\r
+            Debug("WiFi.FindAP");\r
+            GetScanResult();\r
+            foreach (var item in apList)\r
+            {\r
+                Debug("Found AP\t" + item.NetworkInformation.Essid);\r
+                if (item.NetworkInformation.Essid.Equals(essid))\r
+                {\r
+                    return item;\r
+                }\r
+            }\r
+\r
+            return null;\r
+        }\r
+\r
+        public bool IsActive()\r
+        {\r
+            Debug("WiFi.IsActive");\r
+            if (WiFiManager.IsActive)\r
+            {\r
+                return true;\r
+            }\r
+\r
+            return false;\r
+        }\r
+\r
+        public string GetConnectedAP()\r
+        {\r
+            Debug("WiFi.GetConnectedAP");\r
+            return WiFiManager.GetConnectedAP().NetworkInformation.Essid;\r
+        }\r
+\r
+        public List<AP> GetAPList()\r
+        {\r
+            Debug("WiFi.GetAPList");\r
+            List<AP> apInfoList = new List<AP>();\r
+            foreach (var item in apList)\r
+            {\r
+                //Debug("AP name: " + item.NetworkInformation.Essid);\r
+                //Debug("AP connection state: " + item.NetworkInformation.ConnectionState.ToString());\r
+\r
+                string connectionState = item.NetworkInformation.ConnectionState.ToString();\r
+                string securityType = item.SecurityInformation.SecurityType.ToString();\r
+                //bool isPassphraseRequired = item.SecurityInformation.IsPassphraseRequired;\r
+                bool isWpsSupported = item.SecurityInformation.IsWpsSupported;\r
+\r
+                if (item.NetworkInformation.ConnectionState.ToString().Equals("Connected"))\r
+                {\r
+                    apInfoList.Add(new AP(item.NetworkInformation.Essid, "Connected"));\r
+                    continue;\r
+                }\r
+                string text = "";\r
+\r
+                if (securityType.Equals("None"))\r
+                {\r
+                    text = "Open";\r
+                }\r
+                else if (securityType.Equals("Eap"))\r
+                {\r
+                    text = "Secured (Eap)";\r
+                }\r
+                else if (isWpsSupported)\r
+                {\r
+                    text = "Secured (WPS available)";\r
+                }\r
+                else\r
+                {\r
+                    text = "Secured";\r
+                }\r
+\r
+                apInfoList.Add(new AP(item.NetworkInformation.Essid, text));\r
+            }\r
+\r
+            return apInfoList;\r
+        }\r
+    }\r
+}\r
diff --git a/SettingWiFi/SettingWiFi/view/AP.cs b/SettingWiFi/SettingWiFi/view/AP.cs
new file mode 100755 (executable)
index 0000000..b290194
--- /dev/null
@@ -0,0 +1,143 @@
+using System;\r
+using System.ComponentModel;\r
+using System.Collections.Generic;\r
+using System.Collections.ObjectModel;\r
+using Tizen;\r
+using Tizen.NUI.BaseComponents;\r
+using Tizen.NUI.Components;\r
+using Tizen.NUI.Binding;\r
+using Tizen.Network.WiFi;\r
+using static SettingWiFi.Logger;\r
+\r
+\r
+namespace SettingWiFi\r
+{\r
+    public class AP : INotifyPropertyChanged\r
+    {\r
+        string iconDir = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "icon.png";\r
+        private string essid;\r
+        private string state;\r
+\r
+        public event PropertyChangedEventHandler PropertyChanged;\r
+\r
+        private void OnPropertyChanged(string propertyName)\r
+        {\r
+            Debug("OnPropertyChanged");\r
+            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\r
+        }\r
+\r
+        public AP(string apEssid, string apState)\r
+        {\r
+            essid = apEssid;\r
+            state = apState;\r
+        }\r
+\r
+        public string Essid\r
+        {\r
+            get\r
+            {\r
+                return essid;\r
+            }\r
+            set\r
+            {\r
+                essid = value;\r
+                OnPropertyChanged("Essid");\r
+            }\r
+        }\r
+\r
+        public string ImageUrl\r
+        {\r
+            get\r
+            {\r
+                return iconDir;\r
+            }\r
+        }\r
+\r
+        public string State\r
+        {\r
+            get\r
+            {\r
+                return state;\r
+            }\r
+            set\r
+            {\r
+                state = value;\r
+                OnPropertyChanged("State");\r
+            }\r
+        }\r
+    };\r
+\r
+    public class DeviceCollection : ObservableCollection<AP>\r
+    {\r
+        private string title;\r
+\r
+        public DeviceCollection(string groupTitle)\r
+        {\r
+            title = groupTitle;\r
+            this.UpdateScanList(null);\r
+        }\r
+\r
+        public string Title\r
+        {\r
+            get\r
+            {\r
+                return title;\r
+            }\r
+            set\r
+            {\r
+                title = value;\r
+                OnPropertyChanged(new PropertyChangedEventArgs("Title"));\r
+            }\r
+        }\r
+\r
+        public void UpdateScanList(List<AP> apList)\r
+        {\r
+            if (apList == null)\r
+            {\r
+                Debug("apList is null");\r
+                this.Add(new AP("", ""));\r
+                return;\r
+            }\r
+            // Clear method have some issue about asynchronous actions,\r
+            // so call Remove for all item is recommanded.\r
+            while (this.Count > 0)\r
+            {\r
+                this.RemoveAt(this.Count - 1);\r
+            }\r
+\r
+            foreach (var item in apList)\r
+            {\r
+                this.Add(new AP(item.Essid, item.State));\r
+            }\r
+        }\r
+\r
+        public void RemoveDevices()\r
+        {\r
+            while (this.Count > 0)\r
+            {\r
+                this.RemoveAt(this.Count - 1);\r
+            }\r
+        }\r
+    }\r
+\r
+    public class APSource : ObservableCollection<DeviceCollection>\r
+    {\r
+        private DeviceCollection available;\r
+        public APSource()\r
+        {\r
+            Debug("new APSource");\r
+            available = new DeviceCollection("Available networks");\r
+            this.Add(available);\r
+            Debug("Add DeviceCollection");\r
+        }\r
+        public void UpdateScanList(List<AP> apList)\r
+        {\r
+            available.UpdateScanList(apList);\r
+        }\r
+\r
+        public void RemoveDevices()\r
+        {\r
+            available.RemoveDevices();\r
+        }\r
+    }\r
+}
\ No newline at end of file
diff --git a/SettingWiFi/SettingWiFi/view/InfoPage.cs b/SettingWiFi/SettingWiFi/view/InfoPage.cs
new file mode 100644 (file)
index 0000000..94210af
--- /dev/null
@@ -0,0 +1,69 @@
+using Tizen;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+using static SettingWiFi.Logger;
+
+namespace SettingWiFi
+{
+    internal class InfoPage : ContentPage
+    {
+        private AP mAp;
+        private WiFi mWifi;
+
+        internal InfoPage(WiFi wifi)
+        {
+            mWifi = wifi;
+        }
+
+        internal void CreateComponents(AP ap)
+        {
+            mAp = ap;
+
+            var appBar = new AppBar()
+            {
+                Title = "Wi-Fi network info",
+            };
+
+            AppBarStyle appBarStyle = (AppBarStyle)ThemeManager.GetStyle("Tizen.NUI.Components.AppBar");
+            Button backButton = new Button(((AppBarStyle)appBarStyle).BackButton);
+
+            backButton.Clicked += OnBackButtonClicked;
+            View infoView = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+
+            var forgetButton = new Button()
+            {
+                Text = "Forget",
+                WidthSpecification = 300,
+                HeightSpecification = 80,
+            };
+
+            forgetButton.Clicked += OnForgetButtonClicked;
+
+            infoView.Add(forgetButton);
+
+            AppBar = appBar;
+            Content = infoView;
+        }
+
+        private void OnBackButtonClicked(object source, ClickedEventArgs args)
+        {
+            Navigator.Pop();
+        }
+
+        private void OnForgetButtonClicked(object source, ClickedEventArgs args)
+        {
+            Debug("Forget " + mAp.Essid);
+            mWifi.Forget(mAp.Essid);
+        }
+    }
+}
\ No newline at end of file
diff --git a/SettingWiFi/SettingWiFi/view/Logger.cs b/SettingWiFi/SettingWiFi/view/Logger.cs
new file mode 100644 (file)
index 0000000..9b58722
--- /dev/null
@@ -0,0 +1,24 @@
+using Tizen;
+
+namespace SettingWiFi
+{
+    internal class Logger
+    {
+        internal static readonly string LogTag = "SettingWiFi.App";
+
+        internal static void Debug(string msg)
+        {
+            Log.Debug(LogTag, msg);
+        }
+
+        internal static void Info(string msg)
+        {
+            Log.Info(LogTag, msg);
+        }
+
+        internal static void Error(string msg)
+        {
+            Log.Error(LogTag, msg);
+        }
+    }
+}
\ No newline at end of file
diff --git a/SettingWiFi/SettingWiFi/view/MainPage.cs b/SettingWiFi/SettingWiFi/view/MainPage.cs
new file mode 100644 (file)
index 0000000..8471231
--- /dev/null
@@ -0,0 +1,302 @@
+using System.Collections.Generic;
+using Tizen;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Binding;
+using Tizen.NUI.Components;
+using static SettingWiFi.Logger;
+
+
+namespace SettingWiFi
+{
+    internal class MainPage : ContentPage
+    {
+        CollectionView mScanList;
+
+        ContentPage mInfoPage;
+        ContentPage mMorePage;
+
+        WiFi mWifi;
+        APSource mApSource;
+
+        private static readonly int itemCount = 1;
+        private MenuItem[] menuItems = new MenuItem[itemCount];
+
+        internal MainPage(WiFi wifi)
+        {
+            mWifi = wifi;
+        }
+
+        internal void CreateComponents()
+        {
+            mApSource = new APSource();
+
+            var moreButton = new Button()
+            {
+                Text = "More",
+            };
+
+            MenuItem[] menuItems = new MenuItem[itemCount];
+            menuItems[0] = new MenuItem() { Text = "Add WiFi network" };
+            menuItems[0].SelectedChanged += (object sender, SelectedChangedEventArgs args) =>
+            {
+                var menuItem = sender as MenuItem;
+                Navigator.Push(mMorePage);
+            };
+
+            moreButton.Clicked += (object sender, ClickedEventArgs args) =>
+            {
+                var menu = new Menu()
+                {
+                    Anchor = moreButton,
+                    HorizontalPositionToAnchor = Menu.RelativePosition.Center,
+                    VerticalPositionToAnchor = Menu.RelativePosition.End,
+                    Items = menuItems,
+                };
+                menu.Post();
+            };
+
+            var appBar = new AppBar()
+            {
+                Title = "Wi-Fi",
+                Actions = new View[] { moreButton, },
+            };
+
+            AppBarStyle appBarStyle = (AppBarStyle)ThemeManager.GetStyle("Tizen.NUI.Components.AppBar");
+            Button backButton = new Button(((AppBarStyle)appBarStyle).BackButton);
+
+            backButton.Clicked += (object source, ClickedEventArgs args) =>
+            {
+                Navigator.Pop();
+            };
+
+            appBar.NavigationContent = backButton;
+
+            View mainView = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+
+            mScanList = new CollectionView()
+            {
+                ItemsSource = mApSource,
+                ItemsLayouter = new LinearLayouter(),
+                ItemTemplate = CreateItemTemplate(),
+                GroupHeaderTemplate = new DataTemplate(() =>
+                {
+                    DefaultTitleItem group = new DefaultTitleItem();
+                    group.WidthSpecification = LayoutParamPolicies.MatchParent;
+
+                    group.Label.SetBinding(TextLabel.TextProperty, "Title");
+                    group.Label.HorizontalAlignment = HorizontalAlignment.Begin;
+
+                    return group;
+                }),
+                IsGrouped = true,
+                ScrollingDirection = ScrollableBase.Direction.Vertical,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+                SelectionMode = ItemSelectionMode.Single,
+            };
+            mScanList.SelectionChanged += OnScanListSelected;
+
+            var header = GetHeader();
+            var scanButton = new Button()
+            {
+                Text = "Scan",
+                WidthSpecification = 300,
+                HeightSpecification = 80,
+            };
+            scanButton.Clicked += OnScanButtonClicked;
+
+            mainView.Add(header);
+            mainView.Add(mScanList);
+            mainView.Add(scanButton);
+
+            AppBar = appBar;
+            Content = mainView;
+        }
+
+        private DataTemplate CreateItemTemplate()
+        {
+            return new DataTemplate(() =>
+                {
+                    DefaultLinearItem item = new DefaultLinearItem() //itemÀÌ °¢ AP
+                    {
+                        WidthSpecification = LayoutParamPolicies.MatchParent,
+                    };
+                    item.Label.SetBinding(TextLabel.TextProperty, "Essid");
+                    item.Label.HorizontalAlignment = HorizontalAlignment.Begin;
+                    item.SubLabel.SetBinding(TextLabel.TextProperty, "State");
+                    item.SubLabel.HorizontalAlignment = HorizontalAlignment.Begin;
+                    item.Icon.SetBinding(ImageView.ResourceUrlProperty, "ImageUrl");
+                    item.Icon.WidthSpecification = 40;
+                    item.Icon.HeightSpecification = 40;
+
+                    var infoButton = new Button()
+                    {
+                        Text = "i",
+                        WidthSpecification = 40,
+                        HeightSpecification = 40,
+                    };
+                    //infoButton.Icon.SetBinding(ImageView.ResourceUrlProperty, "InfoImageUrl");
+                    infoButton.Clicked += OnInfoButtonClicked;
+                    item.Extra = infoButton;
+
+                    return item;
+                });
+        }
+
+        private RecyclerViewItem GetHeader()
+        {
+            var header = new RecyclerViewItem()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.WrapContent,
+            };
+
+            bool isWiFiOn = false;
+            if (IsWiFiActive())
+            {
+                isWiFiOn = true;
+                Debug("ScanAP");
+                ScanAP();
+            }
+
+            var toggle = new DefaultLinearItem()
+            {
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                Text = "Wi-Fi",
+                IsSelectable = false,
+            };
+            toggle.Label.HorizontalAlignment = HorizontalAlignment.Begin;
+
+            var onOffSwitch = new Switch()
+            {
+                IsSelected = isWiFiOn,
+            };
+
+            toggle.Extra = onOffSwitch;
+            onOffSwitch.SelectedChanged += OnWiFiSelected;
+            header.Add(toggle);
+
+            return header;
+        }
+
+        private ContentPage CreateInfoPage(AP ap)
+        {
+            var page = new InfoPage(mWifi);
+            page.CreateComponents(ap);
+            return page;
+        }
+
+        private ContentPage CreateMorePage()
+        {
+            var page = new MorePage(mWifi);
+            page.CreateComponents();
+            return page;
+        }
+
+        /* Call WiFi */
+        private async void OnWiFiSelected(object sender, SelectedChangedEventArgs e)
+        {
+            Debug("OnWiFiSelected");
+            if (e.IsSelected)
+            {
+                if (!IsWiFiActive())
+                {
+                    await mWifi.Activate();
+                }
+                /* TODO: auto connect */
+                ScanAP();
+            }
+            else
+            {
+                if (IsWiFiActive())
+                {
+                    await mWifi.Deactivate();
+                }
+                mApSource.RemoveDevices();
+            }
+        }
+
+        private void OnScanButtonClicked(object sender, ClickedEventArgs e)
+        {
+            Debug("OnScanButtonClicked");
+            ScanAP();
+        }
+
+        private void OnInfoButtonClicked(object sender, ClickedEventArgs e)
+        {
+            Debug("OnInfoButtonClicked");
+            Button button = (Button)sender;
+            mInfoPage = CreateInfoPage(button.BindingContext as AP);
+
+            Navigator.Push(mInfoPage);
+        }
+
+        private bool IsWiFiActive()
+        {
+            return mWifi.IsActive();
+        }
+
+        private async void ScanAP()
+        {
+            if (IsWiFiActive())
+            {
+                await mWifi.Scan();
+                List<AP> apList = mWifi.GetScanResult();
+                mApSource.UpdateScanList(apList);
+            }
+        }
+
+        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;
+                if (item is AP ap)
+                {
+                    //Log.Debug(LogTag, "Disconnect ");
+                    //await wifi.Disconnect(device.Essid);
+                    //device.State = "Disonnected";
+
+                    // device.Connected = false;
+                }
+            }
+            foreach (object item in ev.CurrentSelection)
+            {
+                if (item == null) break;
+                if (item is AP ap)
+                {
+                    if (ap.State.Equals("Connected"))
+                    {
+                        Debug("already connected");
+                        return;
+                    }
+
+                    /* TODO: pop-up (password, cancel, connect) */
+                    ap.State = "Connecting";
+                    await mWifi.Connect(ap.Essid, "datanetwork");
+                    if(mWifi.GetConnectedAP().Equals(ap.Essid))
+                    {
+                        ap.State = "Connected";
+                    }
+                    //  device.Connected = true;
+                    //  device.Registered = true;
+                }
+            }
+        }
+    }
+}
diff --git a/SettingWiFi/SettingWiFi/view/MorePage.cs b/SettingWiFi/SettingWiFi/view/MorePage.cs
new file mode 100644 (file)
index 0000000..a0a2c1d
--- /dev/null
@@ -0,0 +1,49 @@
+
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace SettingWiFi
+{
+    internal class MorePage : ContentPage
+    {
+        WiFi mWifi;
+
+        internal MorePage(WiFi wifi)
+        {
+            mWifi = wifi;
+        }
+
+        internal void CreateComponents()
+        {
+            var appBar = new AppBar()
+            {
+                Title = "Add Wi-Fi network",
+            };
+
+            AppBarStyle appBarStyle = (AppBarStyle)ThemeManager.GetStyle("Tizen.NUI.Components.AppBar");
+            Button backButton = new Button(((AppBarStyle)appBarStyle).BackButton);
+
+            backButton.Clicked += OnBackButtonClicked;
+
+            View moreView = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+
+            AppBar = appBar;
+            Content = moreView;
+        }
+
+        private void OnBackButtonClicked(object source, ClickedEventArgs args)
+        {
+            Navigator.Pop();
+        }
+    }
+}
\ No newline at end of file
diff --git a/SettingWiFi/SettingWiFi/view/WidgetSettingWiFi.cs b/SettingWiFi/SettingWiFi/view/WidgetSettingWiFi.cs
new file mode 100755 (executable)
index 0000000..acc4a5f
--- /dev/null
@@ -0,0 +1,38 @@
+using System;\r
+using System.Collections.Generic;\r
+using Tizen;\r
+using Tizen.Applications;\r
+using Tizen.NUI;\r
+using Tizen.NUI.Accessibility;\r
+using Tizen.NUI.BaseComponents;\r
+using Tizen.NUI.Binding;\r
+using Tizen.NUI.Components;\r
+\r
+\r
+namespace SettingWiFi\r
+{\r
+    internal class WidgetSettingWiFi : Widget\r
+    {\r
+        Navigator navigator;\r
+\r
+        ContentPage mMainPage;\r
+\r
+        WiFi mWifi;\r
+\r
+        private ContentPage CreateMainPage()\r
+        {\r
+            var page = new MainPage(mWifi);\r
+            page.CreateComponents();\r
+            return page;\r
+        }\r
+\r
+        protected override void OnCreate(string contentInfo, Window window)\r
+        {\r
+            navigator = window.GetDefaultNavigator();\r
+            mWifi = new WiFi();\r
+\r
+            mMainPage = CreateMainPage();\r
+            navigator.Push(mMainPage);\r
+        }\r
+    }\r
+}\r