netmonitor/NetMonitorTray/Views/ViewWindowForm.cs

188 lines
6.3 KiB
C#
Raw Permalink Normal View History

2015-03-04 23:21:34 +01:00
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;
2015-11-16 01:10:59 +01:00
using BlubbFish.Utils;
2015-03-04 23:21:34 +01:00
2015-11-16 01:10:59 +01:00
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";
}
2015-03-04 23:21:34 +01:00
2015-11-16 01:10:59 +01:00
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;
2015-03-04 23:21:34 +01:00
}
2015-11-16 01:10:59 +01:00
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;
}
}
2015-03-04 23:21:34 +01:00
2015-11-16 01:10:59 +01:00
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;
2015-03-04 23:21:34 +01:00
}
2015-11-16 01:10:59 +01:00
}
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;
2015-03-04 23:21:34 +01:00
}
2015-11-16 01:10:59 +01:00
}
2015-03-04 23:21:34 +01:00
}