188 lines
6.3 KiB
C#
188 lines
6.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using BlubbFish.Utils;
|
|
|
|
namespace NetMonitorTray.View {
|
|
public partial class ViewWindowForm : Form {
|
|
private Models.Window model;
|
|
private int clickedNetwork = 0;
|
|
private int clickedVpn = 0;
|
|
|
|
public ViewWindowForm() {
|
|
this.InitializeComponent();
|
|
this.FormClosed += Controller.Window.FormClosed;
|
|
|
|
this.networksList.ItemActivate += Controller.Window.NetworkAktivate;
|
|
this.openvpnList.ItemActivate += Controller.Window.VpnAktivate;
|
|
this.networksList.Click += Controller.Window.NetworkSelected;
|
|
this.openvpnList.Click += Controller.Window.VpnSelected;
|
|
|
|
this.settingsFolderpickerVpn.Click += new System.EventHandler(Controller.Window.ChangeOpenVpnFolder);
|
|
this.openvpnButtonConfigfile.Click += new System.EventHandler(Controller.Window.ChangeOpenVpnConfigFile);
|
|
this.settingsFolderPickerLog.Click += new System.EventHandler(Controller.Window.ChangeLogFolder);
|
|
}
|
|
|
|
public void UpdateForm() {
|
|
this.BeginInvoke((Action)(() => {
|
|
updateLog();
|
|
updateNetworks();
|
|
updateVpn();
|
|
updateSettings();
|
|
}));
|
|
}
|
|
|
|
private void updateLog() {
|
|
this.logBox.Text = "TODO: Read Log File";
|
|
}
|
|
|
|
private void updateVpn() {
|
|
List<string> vpns = this.model.Vpns;
|
|
foreach(string vpn in vpns) {
|
|
ListViewItem item = new ListViewItem();
|
|
item.Text = vpn;
|
|
item.SubItems.Add(this.model.getVpnProperty(vpn, "Name"));
|
|
openvpnList.Items.Add(item);
|
|
}
|
|
showSelectedOpenvpn(clickedVpn);
|
|
}
|
|
|
|
public void showSelectedOpenvpn(int i) {
|
|
List<string> vpns = this.model.Vpns;
|
|
if(vpns.Count == 0) {
|
|
return;
|
|
}
|
|
if(vpns.Count <= i) {
|
|
i = 0;
|
|
}
|
|
for(int j = 0; j < this.openvpnList.Items.Count; j++) {
|
|
if(j == i) {
|
|
this.openvpnList.Items[j].Selected = true;
|
|
} else {
|
|
this.openvpnList.Items[j].Selected = false;
|
|
}
|
|
string n = vpns[i];
|
|
string v = this.model.getVpnProperty(n, "Name");
|
|
this.openvpnName.Text = v;
|
|
v = this.model.getVpnProperty(n, "Config");
|
|
this.openvpnConfig.Text = v;
|
|
}
|
|
}
|
|
|
|
private void updateNetworks() {
|
|
List<string> networks = this.model.Networks;
|
|
foreach(string network in networks) {
|
|
ListViewItem item = new ListViewItem();
|
|
item.Text = network;
|
|
item.SubItems.Add(this.model.getNetworkProperty(network, "Name"));
|
|
networksList.Items.Add(item);
|
|
}
|
|
List<string> adapters = this.model.getNetworkAdapters();
|
|
this.networkAdapter.Items.AddRange(adapters.ToArray<string>());
|
|
showSelectedNetwork(clickedNetwork);
|
|
}
|
|
|
|
public void showSelectedNetwork(int i) {
|
|
List<string> networks = this.model.Networks;
|
|
if(networks.Count == 0) {
|
|
return;
|
|
}
|
|
if(networks.Count <= i) {
|
|
i = 0;
|
|
}
|
|
for(int j=0; j<this.networksList.Items.Count;j++) {
|
|
if(j == i) {
|
|
this.networksList.Items[j].Selected = true;
|
|
} else {
|
|
this.networksList.Items[j].Selected = false;
|
|
}
|
|
}
|
|
string n = networks[i];
|
|
string v = this.model.getNetworkProperty(n, "Name");
|
|
this.networkName.Text = v;
|
|
v = this.model.getNetworkProperty(n, "Ip");
|
|
if(v == "auto") {
|
|
this.networkIp.ReadOnly = true;
|
|
this.networkIp.Text = "";
|
|
this.networkSubnet.ReadOnly = true;
|
|
this.networkSubnet.Text = "";
|
|
this.networkGateway.ReadOnly = true;
|
|
this.networkGateway.Text = "";
|
|
this.networkAutoIp.Checked = true;
|
|
} else {
|
|
this.networkIp.ReadOnly = false;
|
|
this.networkIp.Text = v;
|
|
v = this.model.getNetworkProperty(n, "Subnet");
|
|
this.networkSubnet.ReadOnly = false;
|
|
this.networkSubnet.Text = v;
|
|
v = this.model.getNetworkProperty(n, "Gateway");
|
|
this.networkGateway.ReadOnly = false;
|
|
this.networkGateway.Text = v;
|
|
this.networkAutoIp.Checked = false;
|
|
}
|
|
v = this.model.getNetworkProperty(n, "Dns");
|
|
if(v == "auto") {
|
|
this.networkDns.ReadOnly = true;
|
|
this.networkDns.Text = "";
|
|
this.networkAutoDns.Checked = true;
|
|
} else {
|
|
this.networkDns.ReadOnly = false;
|
|
this.networkDns.Text = v;
|
|
this.networkAutoDns.Checked = false;
|
|
}
|
|
v = this.model.getNetworkProperty(n, "Wins");
|
|
if(v == "auto") {
|
|
this.networkWins.ReadOnly = true;
|
|
this.networkWins.Text = "";
|
|
this.networkAutoWins.Checked = true;
|
|
} else {
|
|
this.networkWins.ReadOnly = false;
|
|
this.networkWins.Text = v;
|
|
this.networkAutoWins.Checked = false;
|
|
}
|
|
v = this.model.getNetworkProperty(n, "Adapter");
|
|
this.networkAdapter.Text = v;
|
|
}
|
|
|
|
private void updateSettings() {
|
|
settingsServerPort.Text = this.model.getSettingsProperty("ports", "server");
|
|
settingsClientPortFrom.Text = this.model.getSettingsProperty("ports", "client_from");
|
|
settingsClientPortTo.Text = this.model.getSettingsProperty("ports", "client_to");
|
|
settingsVpnFolder.Text = this.model.getSettingsProperty("program", "openvpn");
|
|
settingsLogFolder.Text = this.model.getSettingsProperty("program", "logfolder");
|
|
foreach(OwnObject.LogLevel item in Enum.GetValues(typeof(OwnObject.LogLevel))) {
|
|
settingsLogLevel.Items.Add(item.ToString());
|
|
}
|
|
settingsLogLevel.Text = this.model.getSettingsProperty("program", "loglevel");
|
|
}
|
|
|
|
public void SetModel(Models.Window window) {
|
|
this.model = window;
|
|
}
|
|
|
|
|
|
|
|
public string FolderPicker() {
|
|
DialogResult r = this.folderBrowserDialog1.ShowDialog();
|
|
if(r == System.Windows.Forms.DialogResult.OK) {
|
|
return this.folderBrowserDialog1.SelectedPath;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
internal string FilePicker() {
|
|
DialogResult r = this.openFileDialog1.ShowDialog();
|
|
if(r == System.Windows.Forms.DialogResult.OK) {
|
|
return this.openFileDialog1.FileName;
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
}
|