Files
desktop-edge-win/DesktopEdge/MainMenu.xaml.cs
T
2020-07-08 14:27:22 -04:00

160 lines
5.6 KiB
C#

using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Diagnostics;
using System;
using System.Threading;
using System.Management.Automation;
using ZitiDesktopEdge.Models;
namespace ZitiDesktopEdge
{
/// <summary>
/// Interaction logic for MainMenu.xaml
/// </summary>
public partial class MainMenu : UserControl {
public delegate void AttachementChanged(bool attached);
public event AttachementChanged OnAttachmentChange;
public string menuState = "Main";
public string licenseData = "it's open source - someone motivated could track this down. we'll add this some day i'm sure";
public MainMenu() {
InitializeComponent();
LicensesItems.Text = licenseData;
}
private void HideMenu(object sender, MouseButtonEventArgs e) {
menuState = "Menu";
UpdateState();
MainMenuArea.Visibility = Visibility.Collapsed;
}
private void CloseApp(object sender, MouseButtonEventArgs e) {
Application.Current.Shutdown();
}
private void ShowAbout(object sender, MouseButtonEventArgs e) {
menuState = "About";
UpdateState();
}
private void ShowAdvanced(object sender, MouseButtonEventArgs e) {
menuState = "Advanced";
UpdateState();
}
private void ShowLicenses(object sender, MouseButtonEventArgs e) {
menuState = "Licenses";
UpdateState();
}
private void ShowConfig(object sender, MouseButtonEventArgs e) {
menuState = "Config";
UpdateState();
}
private void ShowLogs(object sender, MouseButtonEventArgs e) {
menuState = "Logs";
UpdateState();
}
private void ShowUILogs(object sender, MouseButtonEventArgs e) {
menuState = "UILogs";
UpdateState();
}
private void UpdateState() {
MainItems.Visibility = Visibility.Collapsed;
AboutItems.Visibility = Visibility.Collapsed;
MainItemsButton.Visibility = Visibility.Collapsed;
AboutItemsButton.Visibility = Visibility.Collapsed;
BackArrow.Visibility = Visibility.Collapsed;
AdvancedItems.Visibility = Visibility.Collapsed;
LicensesItems.Visibility = Visibility.Collapsed;
LogsItems.Visibility = Visibility.Collapsed;
ConfigItems.Visibility = Visibility.Collapsed;
if (menuState=="About") {
MenuTitle.Content = "About";
AboutItemsButton.Visibility = Visibility.Visible;
AboutItems.Visibility = Visibility.Visible;
BackArrow.Visibility = Visibility.Visible;
} else if (menuState=="Advanced") {
MenuTitle.Content = "Advanced Settings";
AdvancedItems.Visibility = Visibility.Visible;
BackArrow.Visibility = Visibility.Visible;
} else if (menuState=="Licenses") {
MenuTitle.Content = "Third Party Licenses";
LicensesItems.Visibility = Visibility.Visible;
BackArrow.Visibility = Visibility.Visible;
} else if (menuState=="Logs") {
ServiceClient.Client client = (ServiceClient.Client)Application.Current.Properties["ServiceClient"];
MenuTitle.Content = "Service Logs";
LogsItems.Text = client.GetLogs();
LogsItems.Visibility = Visibility.Visible;
BackArrow.Visibility = Visibility.Visible;
} else if (menuState == "UILogs") {
ServiceClient.Client client = (ServiceClient.Client)Application.Current.Properties["ServiceClient"];
MenuTitle.Content = "Application Logs";
LogsItems.Text = UILog.GetLogs();
LogsItems.Visibility = Visibility.Visible;
BackArrow.Visibility = Visibility.Visible;
} else if (menuState=="Config") {
MenuTitle.Content = "Tunnel Configuration";
ConfigItems.Visibility = Visibility.Visible;
BackArrow.Visibility = Visibility.Visible;
ConfigIp.Value = Application.Current.Properties["ip"]?.ToString();
ConfigSubnet.Value = Application.Current.Properties["subnet"]?.ToString();
ConfigMtu.Value = Application.Current.Properties["mtu"]?.ToString();
ConfigDns.Value = Application.Current.Properties["dns"]?.ToString();
} else {
MenuTitle.Content = "Main Menu";
MainItems.Visibility = Visibility.Visible;
MainItemsButton.Visibility = Visibility.Visible;
}
}
private void GoBack(object sender, MouseButtonEventArgs e) {
if (menuState=="Config"||menuState=="Logs"||menuState=="UILogs") {
menuState = "Advanced";
} else if (menuState=="Licenses") {
menuState = "About";
} else {
menuState = "Menu";
}
UpdateState();
}
private void ShowPrivacy(object sender, MouseButtonEventArgs e) {
Process.Start(new ProcessStartInfo("https://netfoundry.io/privacy") { UseShellExecute = true });
}
private void ShowTerms(object sender, MouseButtonEventArgs e) {
Process.Start(new ProcessStartInfo("https://netfoundry.io/terms") { UseShellExecute = true });
}
private void ShowFeedback(object sender, MouseButtonEventArgs e) {
Process.Start(new ProcessStartInfo("mailto:ziti-support@netfoundry.io") { UseShellExecute = true });
}
private void ShowSupport(object sender, MouseButtonEventArgs e) {
Process.Start(new ProcessStartInfo("https://openziti.discourse.group/") { UseShellExecute = true });
}
private void DetachWindow(object sender, MouseButtonEventArgs e) {
Application.Current.MainWindow.ShowInTaskbar = true;
DetachButton.Visibility = Visibility.Collapsed;
AttachButton.Visibility = Visibility.Visible;
Arrow.Visibility = Visibility.Collapsed;
if (OnAttachmentChange != null) {
OnAttachmentChange(false);
}
MainMenuArea.Visibility = Visibility.Collapsed;
}
private void RetachWindow(object sender, MouseButtonEventArgs e) {
Application.Current.MainWindow.ShowInTaskbar = false;
DetachButton.Visibility = Visibility.Visible;
AttachButton.Visibility = Visibility.Collapsed;
Arrow.Visibility = Visibility.Visible;
if (OnAttachmentChange != null) {
OnAttachmentChange(true);
}
}
}
}