-using System;
+using SettingWiFi.res.locale;
using System.Collections.Generic;
using Tizen.NUI;
using Tizen.NUI.BaseComponents;
-using Tizen.NUI.Components;
using Tizen.NUI.Binding;
-using SettingWiFi.res.locale;
+using Tizen.NUI.Components;
using static SettingWiFi.Logger;
namespace SettingWiFi
class AddNetwork : ContentPage
{
private WiFi mWifi;
- private Button mFindButton;
- private SecurityType mSecurity;
- private bool mShowAdvancedOptions;
- Button mConnectButton;
+ private APSource mApSource;
+ private AP mAp;
+ private string mPassword;
+ private AddNetworkItem mNetworkItem;
+ CheckBox mShowAdvancedButton;
+
+ View mConnectButton;
View mAddNetworkView;
+
AddNetworkInfoSource mAddNetworkInfoSource;
AddNetworkInfoSource mNetworkDetailsInfoSource;
CollectionView mAdvancedViewCollection;
CollectionView mNetworkDetailsCollection;
+
Window mWindow = NUIApplication.GetDefaultWindow();
internal AddNetwork(WiFi wifi)
{
mWifi = wifi;
- mSecurity = SecurityType.None;
+ mPassword = "";
+ mNetworkItem = new AddNetworkItem("None", "DHCP", "None");
}
internal void CreateComponents(APSource apSource)
{
- mNetworkDetailsInfoSource = new AddNetworkInfoSource(mWifi);
- mAddNetworkInfoSource = new AddNetworkInfoSource(mWifi);
- 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);
+ mNetworkDetailsInfoSource = new AddNetworkInfoSource(mWifi, mNetworkItem);
+ mAddNetworkInfoSource = new AddNetworkInfoSource(mWifi, mNetworkItem);
+ mApSource = apSource;
- backButton.Clicked += OnBackClicked;
- appBar.NavigationContent = backButton;
+ var appBar = CreateAppBar();
- mAddNetworkView = new View()
+ View mRootView = new View()
{
Layout = new LinearLayout()
{
},
WidthSpecification = LayoutParamPolicies.MatchParent,
HeightSpecification = LayoutParamPolicies.MatchParent,
- Padding = new Extents(20, 20, 20, 20),
+ };
+
+ mAddNetworkView = new ScrollableBase()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ HorizontalAlignment = HorizontalAlignment.Begin,
+ },
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ HeightSpecification = LayoutParamPolicies.MatchParent,
+ ScrollingDirection = ScrollableBase.Direction.Vertical,
+ HideScrollbar = false,
};
mNetworkDetailsCollection = new CollectionView()
ItemsLayouter = new LinearLayouter(),
ItemTemplate = CreateItemTemplate(),
IsGrouped = false,
- ScrollingDirection = ScrollableBase.Direction.Vertical,
WidthSpecification = LayoutParamPolicies.MatchParent,
HeightSpecification = LayoutParamPolicies.MatchParent,
};
+
mAddNetworkView.Add(mNetworkDetailsCollection);
- 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);
+ mNetworkDetailsInfoSource.ShowNetworkInfo();
+
+ mShowAdvancedButton = new CheckBox()
+ {
+ Text = Resources.IDS_WIFI_BODY_SHOW_ADVANCED_OPTIONS,
+ TextAlignment = HorizontalAlignment.End,
+ CellHorizontalAlignment = HorizontalAlignmentType.Left,
+ };
+ mShowAdvancedButton.SelectedChanged += OnShowAdvancedSelectionChanged;
+ mAddNetworkView.Add(mShowAdvancedButton);
mAdvancedViewCollection = new CollectionView()
{
ItemsLayouter = new LinearLayouter(),
ItemTemplate = CreateItemTemplate(),
IsGrouped = false,
- ScrollingDirection = ScrollableBase.Direction.Vertical,
WidthSpecification = LayoutParamPolicies.MatchParent,
HeightSpecification = LayoutParamPolicies.WrapContent,
};
+ mAddNetworkView.Add(mAdvancedViewCollection);
+
+ mRootView.Add(mAddNetworkView);
+
+ mConnectButton = CreateButtonView();
+ mRootView.Add(mConnectButton);
+
+ AppBar = appBar;
+ Content = mRootView;
+ }
+
+ private AppBar CreateAppBar()
+ {
+ 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;
+ return appBar;
+ }
- mConnectButton = new Button()
+ private View CreateButtonView()
+ {
+ var button = new Button()
{
Text = Resources.IDS_WIFI_BODY_CONNECT,
};
- mConnectButton.Clicked += OnConnectClicked;
- mAddNetworkView.Add(mAdvancedViewCollection);
- mAddNetworkView.Add(mConnectButton);
- mNetworkDetailsInfoSource.ShowNetworkInfo(SecurityType.None);
- AppBar = appBar;
- Content = mAddNetworkView;
- }
+ button.Clicked += OnConnectClicked;
+
+ var buttonView = new View()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ HorizontalAlignment = HorizontalAlignment.Center,
+ },
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ HeightSpecification = LayoutParamPolicies.WrapContent,
+ };
+
+ buttonView.Add(button);
+ return buttonView;
+ }
private DataTemplate CreateItemTemplate()
{
return new DataTemplate(() =>
return item;
});
}
- public void OnShowMoreSelectionChanged(object sender, SelectedChangedEventArgs e)
+ public void OnShowAdvancedSelectionChanged(object sender, SelectedChangedEventArgs e)
{
- Debug("OnShowMoreSelectinChanged");
+ Debug("OnShowAdvancedSelectionChanged");
if (e.IsSelected)
{
- mAddNetworkInfoSource.ShowInfo(true, true);
+ mAddNetworkInfoSource.ShowAdvancedInfo();
}
else
{
}
else if (info.InfoTitle == Resources.IDS_WIFI_HEADER_PASSWORD)
{
-
+ OnPasswordClicked(sender, e);
}
- else if(info.InfoTitle == Resources.IDS_WIFI_BODY_IP_SETTINGS)
+ else if (info.InfoTitle == Resources.IDS_WIFI_BODY_IP_SETTINGS)
{
OnIPSettingsClicked(sender, e);
}
public void OnNewtworkNameClicked(object source, ClickedEventArgs e)
{
Debug("OnNewtworkNameClicked");
- var page = new SecurityOptionsPage(mWifi); // TO DO : Need add proper page
- page.CreateComponents();
+ var page = new AddNetworkInfoInputPage(mNetworkItem, mNetworkDetailsInfoSource);
+ page.CreateComponents(Resources.IDS_WIFI_BODY_NETWORK_NAME, Resources.IDS_WIFI_BODY_ENTER_NETWORK_NAME);
NUIApplication.GetDefaultWindow().GetDefaultNavigator().Push(page);
}
public void OnSecurityOptionsClicked(object source, ClickedEventArgs e)
{
Debug("OnSecurityOptionsClicked");
- var page = new SecurityOptionsPage(mWifi);
- page.CreateComponents();
+
+ string[] options = new string[]
+ {
+ "None",
+ "WEP",
+ "WPA PSK",
+ "WPA2 PSK"
+ };
+
+ var page = new AddNetworkInfoInputPage(mNetworkItem, mNetworkDetailsInfoSource);
+ page.CreateRadioComponents(Resources.IDS_ST_BUTTON_SECURITY_ABB, options);
NUIApplication.GetDefaultWindow().GetDefaultNavigator().Push(page);
}
public void OnIPSettingsClicked(object source, ClickedEventArgs e)
{
Debug("OnIPSettingsClicked");
- var page = new SecurityOptionsPage(mWifi); // TO DO : Need add proper page
- page.CreateComponents();
+
+ string[] options = new string[]
+ {
+ "DHCP",
+ "Static",
+ };
+
+ var page = new AddNetworkInfoInputPage(mNetworkItem, mNetworkDetailsInfoSource);
+ page.CreateRadioComponents(Resources.IDS_WIFI_BODY_IP_SETTINGS, options);
NUIApplication.GetDefaultWindow().GetDefaultNavigator().Push(page);
}
- public void OnProxyClicked(object source, ClickedEventArgs e)
+ public void OnPasswordClicked(object source, ClickedEventArgs e)
{
- Debug("OnProxyClicked");
- var page = new SecurityOptionsPage(mWifi); // TO DO : Need add proper page
- page.CreateComponents();
+ Debug("OnPasswordClicked");
+
+ var page = new AddNetworkInfoInputPage(mNetworkItem, mNetworkDetailsInfoSource);
+ page.CreateComponents(Resources.IDS_WIFI_HEADER_PASSWORD, "");
NUIApplication.GetDefaultWindow().GetDefaultNavigator().Push(page);
}
- private Button CreateButton(int width, int height, string name)
+ public void OnProxyClicked(object source, ClickedEventArgs e)
{
- var button = new Button()
- {
- Text = name,
- WidthSpecification = width,
- HeightSpecification = height,
- };
- return button;
- }
+ Debug("OnProxyClicked");
- private Button CreateCancelButton()
- {
- var cancelButton = CreateButton(300, 80, Resources.IDS_WIFI_SK_CANCEL);
- cancelButton.Clicked += (object source, ClickedEventArgs args) =>
+ string[] options = new string[]
{
- NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
+ "None",
+ "Manual",
};
- return cancelButton;
+
+ var page = new AddNetworkInfoInputPage(mNetworkItem, mNetworkDetailsInfoSource);
+ page.CreateRadioComponents(Resources.IDS_ST_SBODY_PROXY_ADDRESS, options);
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Push(page);
}
private void OnBackClicked(object source, ClickedEventArgs args)
private void OnConnectClicked(object source, ClickedEventArgs args)
{
- Connect();
NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
}
- private async void Connect()
- {
- Debug("Connect");
- }
- }
-
- 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)
+ private void OnOkClicked(object source, ClickedEventArgs args)
{
- Debug("SecurityOptionsPage");
- mWifi = wifi;
- mSecurityOptions = new RadioButton[4];
- mGroup = new RadioButtonGroup();
- mImagesPath = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "images/";
- Debug("path: " + mImagesPath);
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
}
- internal void CreateComponents()
+ private async void Connect(string essid)
{
- Debug("CreateComponents");
- var securityOptionView = new RecyclerViewItem()
+ Debug("Connect");
+ mApSource.SetScanningState(true);
+ Debug("Searching AP named: " + essid);
+ await mWifi.ScanSpecificAP(essid);
+ List<AP> apList = mWifi.GetSpecificScanResult();
+ mApSource.SetScanningState(false);
+ if (apList.Count == 0)
{
- Layout = new LinearLayout()
- {
- LinearOrientation = LinearLayout.Orientation.Vertical,
- },
- WidthSpecification = LayoutParamPolicies.MatchParent,
- HeightSpecification = LayoutParamPolicies.WrapContent,
- };
-
- var okButton = new Button()
+ Debug("No ap found with ssid " + essid);
+ return;
+ }
+ else if (apList.Count == 1)
{
- Text = Resources.IDS_WIFI_SK2_OK,
- };
- okButton.Clicked += OnOkClicked;
-
- CreateSecurityOptions(securityOptionView);
- mSecurityOptions[0].IsSelected = true;
- Content = new AlertDialog()
+ mAp = apList[0];
+ Debug("An AP found with ssid " + essid);
+ if (!mAp.IsConnected())
+ {
+ ConnectToAP(mAp, mPassword);
+ }
+ else
+ {
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
+ }
+ return;
+ }
+ else
{
- Title = Resources.IDS_ST_BUTTON_SECURITY_ABB,
- Content = securityOptionView,
- Actions = new View[] { okButton },
- };
+ // Not required as of now because rpi4 doesn't search for more than one AP with same ssid.
+ Debug("More than one ap found with ssid " + apList.Count);
+ }
}
- private void OnOkClicked(object source, ClickedEventArgs args)
+ private async void ConnectToAP(AP ap, string password)
{
- Debug("OnOkClicked");
NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
- }
-
- private void CreateSecurityOptions(View securityOptionView)
- {
- for (int i = 0; i < 4; i++)
+ await mWifi.Connect(ap, password);
+ if (mWifi.GetConnectedAP().Equals(ap.Essid))
{
- 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]);
+ ap.StateInfo = Resources.IDS_WIFI_SBODY_CONNECTED_M_STATUS;
}
}
}
--- /dev/null
+using SettingWiFi.res.locale;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+using static SettingWiFi.Logger;
+
+namespace SettingWiFi
+{
+ internal class AddNetworkInfoInputPage : DialogPage
+ {
+ private AddNetworkItem mAddItem;
+ AddNetworkInfoSource mInfoSource;
+
+ private TextField mValueField;
+ private RadioButton[] mRadioButtons;
+ private RadioButtonGroup mGroup;
+ private ButtonStyle mRadioButtonStyle;
+
+ private string mTitle;
+ private int mCount;
+ private string mImagesPath;
+ private string[] mOptionNames;
+
+
+ internal AddNetworkInfoInputPage(AddNetworkItem item, AddNetworkInfoSource infoSource)
+ {
+ Debug("AddNetworkInfoInputPage");
+ mAddItem = item;
+ mInfoSource = infoSource;
+ mGroup = new RadioButtonGroup();
+ mImagesPath = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "images/";
+ }
+
+ internal void CreateComponents(string title, string value)
+ {
+ mTitle = title;
+ var infoView = new RecyclerViewItem()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Vertical,
+ },
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ HeightSpecification = LayoutParamPolicies.WrapContent,
+ };
+
+ mValueField = new TextField()
+ {
+ WidthSpecification = 600,
+ PlaceholderText = value,
+ };
+ infoView.Add(mValueField);
+
+ var cancelButton = new Button()
+ {
+ Text = Resources.IDS_WIFI_SK_CANCEL,
+ };
+ cancelButton.Clicked += OnCancelClicked;
+ var okButton = new Button()
+ {
+ Text = "OK",
+ };
+ okButton.Clicked += OnOkClicked;
+
+ Content = new AlertDialog()
+ {
+ Title = title,
+ Content = infoView,
+ Actions = new View[] { cancelButton, okButton },
+ };
+ }
+
+ internal void CreateRadioComponents(string title, string[] options)
+ {
+ Debug("CreateRadioComponents" + title);
+ mTitle = title;
+ mOptionNames = options;
+ mCount = options.Length;
+ mRadioButtons = new RadioButton[mCount];
+
+ CreateRadioButtonStyle();
+ var optionView = new View()
+ {
+ 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 += OnRadioOkClicked;
+
+ CreateRadioOptions(optionView);
+ mRadioButtons[0].IsSelected = true;
+ Content = new AlertDialog()
+ {
+ Title = mTitle,
+ Content = optionView,
+ Actions = new View[] { okButton },
+ };
+ }
+ private void CreateRadioOptions(View optionView)
+ {
+ for (int i = 0; i < mCount; i++)
+ {
+ var childView = new View()
+ {
+ Layout = new GridLayout()
+ {
+ GridOrientation = GridLayout.Orientation.Horizontal,
+ Columns = 2,
+ Rows = 1,
+ ColumnSpacing = 10,
+ },
+ };
+ mRadioButtons[i] = new RadioButton();
+ mRadioButtons[i].SelectedChanged += (object sender, SelectedChangedEventArgs args) =>
+ {
+ OnSelectionChanged(sender, args, i);
+ };
+ mRadioButtons[i].ApplyStyle(mRadioButtonStyle);
+ mRadioButtons[i].Size = new Size(48, 48);
+ mRadioButtons[i].Icon.Size = new Size(48, 48);
+ mGroup.Add(mRadioButtons[i]);
+
+ var nameLabel = new TextLabel(mOptionNames[i]);
+ nameLabel.WidthSpecification = 150;
+ childView.Add(nameLabel);
+ childView.Add(mRadioButtons[i]);
+ optionView.Add(childView);
+ }
+ }
+ void CreateRadioButtonStyle()
+ {
+ mRadioButtonStyle = new ButtonStyle();
+ mRadioButtonStyle.Icon.Opacity = new Selector<float?>
+ {
+ Normal = 1.0f,
+ Selected = 1.0f,
+ Disabled = 0.4f,
+ DisabledSelected = 0.4f
+ };
+ mRadioButtonStyle.Icon.BackgroundImage = "";
+
+ mRadioButtonStyle.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",
+ };
+ }
+
+ void OnSelectionChanged(object sender, SelectedChangedEventArgs e, int i)
+ {
+ Debug($"Left {i}th Utility RadioButton's IsSelected is changed to {e.IsSelected}.");
+ // To Do
+ }
+
+ private void OnRadioOkClicked(object source, ClickedEventArgs args)
+ {
+ Debug("OnRadioOkClicked");
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
+ }
+ private void OnOkClicked(object sender, ClickedEventArgs e)
+ {
+ Debug("OnOkClicked " + mValueField.Text + " : " + mTitle);
+ UpdateInfo(mTitle, mValueField.Text);
+ mInfoSource.Clear();
+ mInfoSource.ShowNetworkInfo();
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
+ }
+
+ private void OnCancelClicked(object sender, ClickedEventArgs e)
+ {
+ Debug("OnCancelClicked");
+ NUIApplication.GetDefaultWindow().GetDefaultNavigator().Pop();
+ }
+
+ private void UpdateInfo(string fieldName, string value)
+ {
+ Debug("UpdateInfo");
+
+ if (fieldName == Resources.IDS_WIFI_BODY_NETWORK_NAME)
+ {
+ mAddItem.NetworkName = value;
+ Debug("Name after: " + mAddItem.NetworkName);
+ }
+ else if (fieldName == Resources.IDS_ST_BUTTON_SECURITY_ABB)
+ {
+ mAddItem.SecurityType = value;
+ }
+ else if (fieldName == Resources.IDS_WIFI_BODY_IP_SETTINGS)
+ {
+ mAddItem.IPSettings = value;
+ }
+ else if (fieldName == Resources.IDS_ST_SBODY_PROXY_ADDRESS)
+ {
+ mAddItem.ProxyType = value;
+ }else if (fieldName == Resources.IDS_WIFI_HEADER_PASSWORD)
+ {
+ mAddItem.Password = value;
+ }
+ }
+ }
+}