summaryrefslogtreecommitdiff
path: root/windows/WinUI/NetworkInfoView.xaml.cs
blob: 3ecc31b843fcb3b187aa634401eb1af981621bf3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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 NetworkInfoView.xaml
    /// </summary>
    public partial class NetworkInfoView : UserControl
    {
        private APIHandler handler;
        private ZeroTierNetwork network;

        public NetworkInfoView(APIHandler handler, ZeroTierNetwork network)
        {
            InitializeComponent();

            this.handler = handler;
            this.network = network;

            UpdateNetworkData();
        }

        private void UpdateNetworkData()
        {
            this.networkId.Text = network.NetworkId;
            this.networkName.Text = network.NetworkName;
            this.networkStatus.Text = network.NetworkStatus;
            this.networkType.Text = network.NetworkType;
            this.macAddress.Text = network.MacAddress;
            this.mtu.Text = network.MTU.ToString();
            this.broadcastEnabled.Text = (network.BroadcastEnabled ? "ENABLED" : "DISABLED");
            this.bridgingEnabled.Text = (network.Bridge ? "ENABLED" : "DISABLED");
            this.deviceName.Text = network.DeviceName;

            string iplist = "";
            for (int i = 0; i < network.AssignedAddresses.Length; ++i)
            {
                iplist += network.AssignedAddresses[i];
                if (i < (network.AssignedAddresses.Length - 1))
                    iplist += "\n";
            }

            this.managedIps.Text = iplist;

            this.allowDefault.IsChecked = network.AllowDefault;
            this.allowGlobal.IsChecked = network.AllowGlobal;
            this.allowManaged.IsChecked = network.AllowManaged;

            allowDefault.Checked += AllowDefault_CheckStateChanged;
            allowDefault.Unchecked += AllowDefault_CheckStateChanged;
            allowGlobal.Checked += AllowGlobal_CheckStateChanged;
            allowGlobal.Unchecked += AllowGlobal_CheckStateChanged;
            allowManaged.Checked += AllowManaged_CheckStateChanged;
            allowManaged.Unchecked += AllowManaged_CheckStateChanged;

        }

        public bool HasNetwork(ZeroTierNetwork network)
        {
            if (this.network.NetworkId.Equals(network.NetworkId))
                return true;

            return false;
        }

        private void leaveButton_Click(object sender, RoutedEventArgs e)
        {
            handler.LeaveNetwork(network.NetworkId);
        }

        private void AllowManaged_CheckStateChanged(object sender, RoutedEventArgs e)
        {
            CheckBox cb = sender as CheckBox;
            handler.JoinNetwork(network.NetworkId,
                allowManaged.IsChecked ?? false,
                allowGlobal.IsChecked ?? false,
                allowDefault.IsChecked ?? false);
        }

        private void AllowGlobal_CheckStateChanged(object sender, RoutedEventArgs e)
        {
            CheckBox cb = sender as CheckBox;
            handler.JoinNetwork(network.NetworkId,
                allowManaged.IsChecked ?? false,
                allowGlobal.IsChecked ?? false,
                allowDefault.IsChecked ?? false);
        }

        private void AllowDefault_CheckStateChanged(object sender, RoutedEventArgs e)
        {
            CheckBox cb = sender as CheckBox;
            handler.JoinNetwork(network.NetworkId,
                allowManaged.IsChecked ?? false,
                allowGlobal.IsChecked ?? false,
                allowDefault.IsChecked ?? false);
        }
    }
}