| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 | 
							- using AlarmInfoServerSim.Services;
 
- using CommunityToolkit.Mvvm.ComponentModel;
 
- using CommunityToolkit.Mvvm.Input;
 
- using System.Net;
 
- namespace AlarmInfoServerSim.ViewModels;
 
- public partial class StatusBarViewModel : ObservableObject ,IDisposable
 
- {
 
-     private readonly ILogService _logService; 
 
-     private readonly ISharedConfig _sharedConfig;
 
-     private readonly IInfoSendingService _infoSendingService;
 
-     private bool disposedValue;
 
-     [ObservableProperty]
 
-     private List<IPAddress> _iPAddresses;
 
-     [ObservableProperty]
 
-     private bool _isSelectingEnable;
 
-     [ObservableProperty]
 
-     private IPAddress _selectedIP;
 
-     [ObservableProperty]
 
-     private int _selectedPort;
 
-     [ObservableProperty]
 
-     private string _buttonContent;
 
-     [ObservableProperty]
 
-     private string _remoteIp;
 
-     [ObservableProperty]
 
-     private string _remotePort;
 
-     [ObservableProperty]
 
-     private string _status;
 
-     public StatusBarViewModel(ILogService logService, ISharedConfig sharedConfig, IInfoSendingService sendInfoService)
 
-     {
 
-         _logService = logService;
 
-         _sharedConfig = sharedConfig;
 
-         _infoSendingService = sendInfoService;
 
-         _infoSendingService.TcpServerStatusChanged += OnTcpServerStatusChanged;
 
-         _infoSendingService.ConnectionChanged += OnConnectionChanged;
 
-         _iPAddresses = _sharedConfig.IPAddresses;
 
-         _isSelectingEnable = true;
 
-         _selectedIP = IPAddress.None;
 
-         _selectedPort = 50052;
 
-         _buttonContent = "Open";
 
-         _remoteIp = "Unknown";
 
-         _remotePort = "Unknown";
 
-         _status = "Disconnected";
 
-     }
 
-     [RelayCommand]
 
-     private void OpenOrClose()
 
-     {
 
-         if (ButtonContent == "Open")
 
-         {
 
-             if (SelectedIP == IPAddress.None || SelectedPort < 0)
 
-             {
 
-                 _logService.Log($"IP or Port is not correct");
 
-                 return;
 
-             }
 
-             _sharedConfig.SelectedIPAddress = SelectedIP;
 
-             _sharedConfig.SelectedPort = SelectedPort;
 
-             _infoSendingService.Open();
 
-             return;
 
-         }
 
-         if (ButtonContent == "Close")
 
-         {
 
-             _infoSendingService.Close();
 
-             return;
 
-         }
 
-     }
 
-     private void OnTcpServerStatusChanged(object? sender, bool e)
 
-     {
 
-         App.Current.Dispatcher.Invoke(() =>
 
-         {
 
-             ButtonContent = e ? "Close" : "Open";
 
-             IsSelectingEnable = !e;
 
-         });
 
-         
 
-     }
 
-     private void OnConnectionChanged(object? sender, (bool, UniversalNetFrame451.IO.TcpConnection) e)
 
-     {
 
-         App.Current.Dispatcher.Invoke(() =>
 
-         {
 
-             if (e.Item1)
 
-             {
 
-                 Status = "Connected";
 
-                 RemoteIp = e.Item2.RemoteEndPoint.Address.ToString();
 
-                 RemotePort = e.Item2.RemoteEndPoint.Port.ToString();
 
-                 _logService.Log($"Get a connection from {RemoteIp}:{RemotePort}");
 
-             }
 
-             else
 
-             {
 
-                 Status = "Disconnected";
 
-                 RemoteIp = "Unknown";
 
-                 RemotePort = "Unknown";
 
-                 _logService.Log($"The connection lost");
 
-             }
 
-         });
 
-     }
 
-     protected virtual void Dispose(bool disposing)
 
-     {
 
-         if (!disposedValue)
 
-         {
 
-             if (disposing)
 
-             {
 
-                 // TODO: dispose managed state (managed objects)
 
-                 _infoSendingService.TcpServerStatusChanged-=OnTcpServerStatusChanged;
 
-                 _infoSendingService.ConnectionChanged -= OnConnectionChanged;
 
-             }
 
-             // TODO: free unmanaged resources (unmanaged objects) and override finalizer
 
-             // TODO: set large fields to null
 
-             disposedValue = true;
 
-         }
 
-     }
 
-     // // TODO: override finalizer only if 'Dispose(bool disposing)' has code to free unmanaged resources
 
-     // ~StatusBarViewModel()
 
-     // {
 
-     //     // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
 
-     //     Dispose(disposing: false);
 
-     // }
 
-     public void Dispose()
 
-     {
 
-         // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
 
-         Dispose(disposing: true);
 
-         GC.SuppressFinalize(this);
 
-     }
 
- }
 
 
  |