using CommunityToolkit.Mvvm.Input; using System.Collections.ObjectModel; using System.Windows.Input; namespace TV_Player.ViewModels { internal class SettingsViewModel : ObservableViewModelBase { private string _playlistName; public string PlaylistName { get => _playlistName; set => SetProperty(ref _playlistName, value); } private string _playlistURL; public string PlaylistURL { get => _playlistURL; set => SetProperty(ref _playlistURL, value); } private ObservableCollection> _playlists; public ObservableCollection> Playlists { get => _playlists; set => SetProperty(ref _playlists, value); } private bool _startFullScreen; public bool StartFullScreen { get => _startFullScreen; set => SetProperty(ref _startFullScreen, value); } private bool _startLastScreen; public bool StartLastScreen { get => _startLastScreen; set => SetProperty(ref _startLastScreen, value); } public ICommand SaveCommand { get; } public ICommand PlaylistDeleteCommand { get; } public ICommand BackCommand { get; } public ICommand AddPlaylistCommand { get; } public SettingsViewModel() { TVPlayerViewModel.Instance.TopPanelVisible(false, ""); SaveCommand = new RelayCommand(OnSaveSettings); BackCommand = new RelayCommand(OnBackCommand); AddPlaylistCommand = new RelayCommand(OnAddPlaylistCommand); PlaylistDeleteCommand = new RelayCommand>(OnPlaylistDeleteCommand); StartFullScreen = SettingsModel.StartFullScreen; StartLastScreen = SettingsModel.StartFromLastScreen; Playlists = SettingsModel.Playlists == null ? ([]) : new ObservableCollection>(SettingsModel.Playlists); } private void OnAddPlaylistCommand() { var url = PlaylistURL?.Trim(); var name = PlaylistName?.Trim(); if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(url)) return; Playlists.Add(new KeyValuePair(name, url)); } private void OnPlaylistDeleteCommand(KeyValuePair pair) { Playlists.Remove(pair); } private void OnBackCommand() { TVPlayerViewModel.Instance.SelectScreen(); } private void OnSaveSettings() { SettingsModel.StartFullScreen = StartFullScreen; SettingsModel.StartFromLastScreen = StartLastScreen; SettingsModel.Playlists?.Clear(); SettingsModel.Playlists = Playlists.ToDictionary(); SettingsModel.SaveSetttings(); TVPlayerViewModel.Instance.InitializeTVWithData(); } } }