menu now dynamically populates the network list

This commit is contained in:
Grant Limberg 2016-11-10 14:17:57 -08:00
parent 005b5aacaf
commit fd71ceeab5
6 changed files with 260 additions and 51 deletions

View file

@ -1,14 +1,60 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace WinUI
{
public class ZeroTierNetwork
[Serializable]
public class ZeroTierNetwork : ISerializable, IEquatable<ZeroTierNetwork>, IComparable<ZeroTierNetwork>
{
protected ZeroTierNetwork(SerializationInfo info, StreamingContext ctx)
{
NetworkId = info.GetString("NetworkId");
MacAddress = info.GetString("MacAddress");
NetworkName = info.GetString("NetworkName");
NetworkStatus = info.GetString("NetworkStatus");
NetworkType = info.GetString("NetworkType");
MTU = info.GetInt32("MTU");
DHCP = info.GetBoolean("DHCP");
Bridge = info.GetBoolean("Bridge");
BroadcastEnabled = info.GetBoolean("BroadcastEnabled");
PortError = info.GetInt32("PortError");
NetconfRevision = info.GetInt32("NetconfRevision");
AssignedAddresses = (string[])info.GetValue("AssignedAddresses", typeof(string[]));
Routes = (NetworkRoute[])info.GetValue("Routes", typeof(NetworkRoute[]));
DeviceName = info.GetString("DeviceName");
AllowManaged = info.GetBoolean("AllowManaged");
AllowGlobal = info.GetBoolean("AllowGlobal");
AllowDefault = info.GetBoolean("AllowDefault");
IsConnected = false;
}
public virtual void GetObjectData(SerializationInfo info, StreamingContext ctx)
{
info.AddValue("NetworkId", NetworkId);
info.AddValue("MacAddress", MacAddress);
info.AddValue("NetworkName", NetworkName);
info.AddValue("NetworkStatus", NetworkStatus);
info.AddValue("NetworkType", NetworkType);
info.AddValue("MTU", MTU);
info.AddValue("DHCP", DHCP);
info.AddValue("Bridge", Bridge);
info.AddValue("BroadcastEnabled", BroadcastEnabled);
info.AddValue("PortError", PortError);
info.AddValue("NetconfRevision", NetconfRevision);
info.AddValue("AssignedAddresses", AssignedAddresses);
info.AddValue("Routes", Routes);
info.AddValue("DeviceName", DeviceName);
info.AddValue("AllowManaged", AllowManaged);
info.AddValue("AllowGlobal", AllowGlobal);
info.AddValue("AllowDefault", AllowDefault);
}
[JsonProperty("nwid")]
public string NetworkId { get; set; }
@ -59,5 +105,47 @@ namespace WinUI
[JsonProperty("allowDefault")]
public bool AllowDefault { get; set; }
public bool IsConnected { get; set; } = false;
public String Title
{
get
{
if (NetworkName != null && NetworkName.Length > 0)
{
return NetworkId + " (" + NetworkName + ")";
}
else
{
return NetworkId;
}
}
}
public bool Equals(ZeroTierNetwork network)
{
return NetworkId.Equals(network.NetworkId);
}
public int CompareTo(ZeroTierNetwork network)
{
UInt64 thisNwid = UInt64.Parse(NetworkId, System.Globalization.NumberStyles.HexNumber);
UInt64 otherNwid = UInt64.Parse(network.NetworkId, System.Globalization.NumberStyles.HexNumber);
if (thisNwid > otherNwid)
{
return 1;
}
else if (thisNwid < otherNwid)
{
return -1;
}
else
{
return 0;
}
}
}
}