using Microsoft.Maui.Controls; using MediaShare.Data; using System.Collections.ObjectModel; using System.Diagnostics; using MediaShare.Interface; using System.Windows.Input; namespace MediaShare.View { public partial class DeviceTabButtons : ContentView { private DatabaseContext _dbContext; public event EventHandler<(string deviceName, string hostAddress, string port)> DeviceAdded; public ObservableCollection Devices { get; set; } public ICommand RefreshCommand { get; } private bool _isRefreshing; public bool IsRefreshing { get => _isRefreshing; set { _isRefreshing = value; OnPropertyChanged(); } } public DeviceTabButtons() { InitializeComponent(); InitializeDeviceTabButtons(); } private void InitializeDeviceTabButtons() { _dbContext = App.Services.GetRequiredService(); Devices = new ObservableCollection(_dbContext.GetAllDevices()); BindingContext = this; //RefreshCommand = new Command(ExecuteRefreshCommand); } public void ExecuteRefreshCommand() { Devices.Clear(); var devices = _dbContext.GetAllDevices(); foreach (var device in devices) { Devices.Add(device); } IsRefreshing = false; } private async void OnAddDeviceTapped(object sender, EventArgs e) { Devices = new ObservableCollection(_dbContext.GetAllDevices()); var addDevicePage = new AddDevicePage(this, Devices); addDevicePage.DeviceAdded += (s, deviceInfo) => { AddDevice(deviceInfo.Item1, deviceInfo.Item2, deviceInfo.Item3); }; await Navigation.PushAsync(addDevicePage); } private async void OnScanQRTapped(object sender, EventArgs e) { Devices = new ObservableCollection(_dbContext.GetAllDevices()); var scanQRPage = new ScanQRPage(Devices); await Navigation.PushAsync(scanQRPage); } private void AddDevice(string deviceName, string hostAddress, string port) { _dbContext.AddDevice(deviceName, hostAddress, port); Devices.Add(new MediaShare.Model.DeviceInfo { DeviceName = deviceName, HostAddress = hostAddress, Port = port, DeviceInfoCombined = $"{deviceName}\n{hostAddress}:{port}" }); DeviceAdded?.Invoke(this, (deviceName, hostAddress, port)); } } }