123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- namespace WinUI
- {
- /// <summary>
- /// Interaction logic for NetworksPage.xaml
- /// </summary>
- public partial class NetworksPage : UserControl
- {
- public NetworksPage()
- {
- InitializeComponent();
- }
- public void setNetworks(List<ZeroTierNetwork> networks)
- {
- if (networks == null)
- {
- this.wrapPanel.Children.Clear();
- return;
- }
- foreach (ZeroTierNetwork network in networks)
- {
- NetworkInfoView view = ChildWithNetwork(network);
- if (view != null)
- {
- view.SetNetworkInfo(network);
- }
- else
- {
- wrapPanel.Children.Add(
- new NetworkInfoView(
- network));
- }
- }
- // remove networks we're no longer joined to.
- List<ZeroTierNetwork> tmpList = GetNetworksFromChildren();
- foreach (ZeroTierNetwork n in networks)
- {
- if (tmpList.Contains(n))
- {
- tmpList.Remove(n);
- }
- }
- foreach (ZeroTierNetwork n in tmpList)
- {
- NetworkInfoView view = ChildWithNetwork(n);
- if (view != null)
- {
- wrapPanel.Children.Remove(view);
- }
- }
- }
- private NetworkInfoView ChildWithNetwork(ZeroTierNetwork network)
- {
- List<NetworkInfoView> list = wrapPanel.Children.OfType<NetworkInfoView>().ToList();
-
- foreach (NetworkInfoView view in list)
- {
- if (view.HasNetwork(network))
- {
- return view;
- }
- }
- return null;
- }
- private List<ZeroTierNetwork> GetNetworksFromChildren()
- {
- List<ZeroTierNetwork> networks = new List<ZeroTierNetwork>(wrapPanel.Children.Count);
- List<NetworkInfoView> list = wrapPanel.Children.OfType<NetworkInfoView>().ToList();
- foreach (NetworkInfoView n in list)
- {
- networks.Add(n.network);
- }
- return networks;
- }
- }
- }
|