private View view = null;
private ObservableCollection<View> items;
private int counter = 0;
+ private const int listItemWidth = 460;
+ private const int listItemHeight = 89;
private WifiState State { get; set; } = new WifiState();
- private static IEnumerable<View> CreateViews(string pattern)
- {
- yield return CreateManualWifiView(460, 89);
- foreach (var item in Enumerable.Range(1, 10))
- {
- yield return CreateWifiView(460, 89, $"Wi-Fi_{item}");
- }
- }
-
public View View
{
get
});
view.Add(CreateListViewPlaceHolder());
-
- ForVerify();
}
return view;
}
}
- private async void ForVerify()
- {
- counter++;
- if (counter > 4)
- return;
- if (view != null)
- {
- await Task.Delay(2000);
- items.RemoveAt(1);
- //items.Insert(1, CreateViewAbsolute($"s{counter}"));
- ForVerify();
- }
- }
-
- private static View CreateManualWifiView(int width, int height)
+ private static View CreateManualWifiView()
{
var manualWifi = new View()
{
- Size = new Size(width, height),
+ Size = new Size(listItemWidth, listItemHeight),
Layout = new AbsoluteLayout(),
};
return manualWifi;
}
- private static View CreateWifiView(int width, int height, string name)
+ private static View CreateWifiView(WifiInfo wifiInfo)
{
var wifi = new View()
{
- Size = new Size(width, height),
+ Size = new Size(listItemWidth, listItemHeight),
Layout = new AbsoluteLayout(),
};
BackgroundImage = System.IO.Path.Combine(NUIApplication.Current.DirectoryInfo.Resource, "12_icon_wifi.svg"),
});
- wifi.Add(new TextLabel(name)
+ wifi.Add(new TextLabel(wifiInfo.Essid)
{
Position = new Position(78, 28),
PixelSize = 20f,
Layout = new AbsoluteLayout(),
};
- header.Add(new TextLabel("Wi-Fi")
- {
- Size = new Size(49, 24),
- Position = new Position(40, 43),
- PixelSize = 19f,
- TextColor = new Color(0, 14.0f / 255.0f, 47.0f / 255.0f, 1.0f),
- FontFamily = "BreezeSans",
- FontStyle = FontsStyles.Regular(),
- });
+ header.Add(CreateWifiScanningPlaceHolder());
- header.Add(new Button(ButtonStyles.Scan)
+ var scan = new Button(ButtonStyles.Scan)
{
Size = new Size(72, 32),
Position = new Position(276, 39),
- });
+ };
+ scan.ClickEvent += async (s, e) =>
+ {
+ scan.IsEnabled = false;
+ await foreach(var item in State.Scan())
+ {
+ items.Add(CreateWifiView(item));
+ }
+ scan.IsEnabled = State.IsTurnedOn;
+ };
+ scan.IsEnabled = State.IsTurnedOn;
+ State.OnTurnedOff += () => scan.IsEnabled = State.IsTurnedOn;
+ State.OnTurnedOn += () => scan.IsEnabled = State.IsTurnedOn;
+ header.Add(scan);
header.Add(CreateTurnOnButton());
return header;
private View CreateListViewPlaceHolder()
{
var view = new View();
- items = new ObservableCollection<View>(CreateViews($"{counter} "));
+ items = new ObservableCollection<View>();
+ items.Add(CreateManualWifiView());
var listView = new ListView(480, 328)//480, 335
{
Items = items
}.View;
- listView.Hide();
view.Add(listView);
var prompt = new TextLabel()
return view;
}
+ private static View CreateScanningView()
+ {
+ var view = new View()
+ {
+ Layout = new LinearLayout()
+ {
+ LinearOrientation = LinearLayout.Orientation.Horizontal,
+ }
+ };
+ view.Add(new View()
+ {
+ Margin = new Extents(0, 0, 1, 0),
+ BackgroundImage = System.IO.Path.Combine(NUIApplication.Current.DirectoryInfo.Resource, "12_icon_scanning.png"),
+ });
+ view.Add(new TextLabel("Scanning...")
+ {
+ Margin = new Extents(17, 0, 0, 0),
+ PixelSize = 19f,
+ TextColor = new Color(0, 14.0f / 255.0f, 47.0f / 255.0f, 1.0f),
+ FontFamily = "BreezeSans",
+ FontStyle = FontsStyles.Regular(),
+ });
+ return view;
+ }
+
+ private View CreateWifiScanningPlaceHolder()
+ {
+ var view = new View()
+ {
+ Position = new Position(40, 43),
+ };
+
+ var wifi = new TextLabel("Wi-Fi")
+ {
+ //Size = new Size(49, 24),
+ PixelSize = 19f,
+ TextColor = new Color(0, 14.0f / 255.0f, 47.0f / 255.0f, 1.0f),
+ FontFamily = "BreezeSans",
+ FontStyle = FontsStyles.Regular(),
+ };
+ view.Add(wifi);
+
+ var scanning = CreateScanningView();
+ view.Add(scanning);
+
+ void startScan()
+ {
+ wifi.Hide();
+ scanning.Show();
+ }
+ void finishScan()
+ {
+ scanning.Hide();
+ wifi.Show();
+ }
+ finishScan();
+ State.OnScanStarted += startScan;
+ State.OnScanFinished += finishScan;
+ return view;
+ }
+
public void Dispose()
{
view = null;