BASE changed interface
This commit is contained in:
commit
256bb084c5
30 files changed
+2836
No files matched your search
@@ -0,0 +1,72 @@
|
||||
using System.Windows;
|
||||
using FoxBrowser.Core;
|
||||
using Forms = System.Windows.Forms;
|
||||
|
||||
namespace FoxBrowser.UI;
|
||||
|
||||
public partial class VpnSettingsWindow : Window
|
||||
{
|
||||
private readonly VpnManager _vpn;
|
||||
|
||||
public VpnSettingsWindow(VpnManager vpn)
|
||||
{
|
||||
InitializeComponent();
|
||||
_vpn = vpn;
|
||||
ProfileList.ItemsSource = _vpn.Profiles;
|
||||
_vpn.StateChanged += OnStateChanged;
|
||||
RefreshState();
|
||||
Closed += (_, _) => _vpn.StateChanged -= OnStateChanged;
|
||||
}
|
||||
|
||||
private void Import_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
using var dialog = new Forms.OpenFileDialog
|
||||
{
|
||||
Filter = "WireGuard config (*.conf)|*.conf|All files (*.*)|*.*",
|
||||
Title = "Імпортувати WireGuard конфігурацію"
|
||||
};
|
||||
if (dialog.ShowDialog() != Forms.DialogResult.OK) return;
|
||||
try
|
||||
{
|
||||
var profile = _vpn.ImportTunnelConfig(dialog.FileName);
|
||||
ProfileList.SelectedItem = profile;
|
||||
RefreshState();
|
||||
}
|
||||
catch (Exception ex) { ShowError(ex.Message); }
|
||||
}
|
||||
|
||||
private async void Connect_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ProfileList.SelectedItem is not VpnProfile profile)
|
||||
{
|
||||
ShowError("Спочатку імпортуйте або виберіть профіль .conf.");
|
||||
return;
|
||||
}
|
||||
try { await _vpn.ConnectAsync(profile); }
|
||||
catch (Exception ex) { ShowError(ex.Message); }
|
||||
finally { RefreshState(); }
|
||||
}
|
||||
|
||||
private async void Disconnect_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
try { await _vpn.DisconnectAsync(); }
|
||||
catch (Exception ex) { ShowError(ex.Message); }
|
||||
finally { RefreshState(); }
|
||||
}
|
||||
|
||||
private void OnStateChanged(object? sender, EventArgs e) => Dispatcher.Invoke(RefreshState);
|
||||
|
||||
private void RefreshState()
|
||||
{
|
||||
StatusText.Text = _vpn.State.ToString();
|
||||
ErrorText.Text = _vpn.LastError ?? string.Empty;
|
||||
}
|
||||
|
||||
private void ShowError(string message)
|
||||
{
|
||||
ErrorText.Text = message;
|
||||
System.Windows.MessageBox.Show(this, message, "VPN", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
|
||||
private void Close_Click(object sender, RoutedEventArgs e) => Close();
|
||||
}
|
||||
Reference in new issue
Block a user