Allow to add/remove multiple playlists from settings window

This commit is contained in:
2024-10-23 14:37:54 +03:00
parent 6d09c2699c
commit 7cbda8a6b9
7 changed files with 127 additions and 30 deletions
+34 -4
View File
@@ -1,10 +1,18 @@
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
{
@@ -12,6 +20,13 @@ namespace TV_Player.ViewModels
set => SetProperty(ref _playlistURL, value);
}
private ObservableCollection<KeyValuePair<string, string>> _playlists;
public ObservableCollection<KeyValuePair<string, string>> Playlists
{
get => _playlists;
set => SetProperty(ref _playlists, value);
}
private bool _startFullScreen;
public bool StartFullScreen
{
@@ -27,7 +42,9 @@ namespace TV_Player.ViewModels
}
public ICommand SaveCommand { get; }
public ICommand PlaylistDeleteCommand { get; }
public ICommand BackCommand { get; }
public ICommand AddPlaylistCommand { get; }
public SettingsViewModel()
{
@@ -35,12 +52,25 @@ namespace TV_Player.ViewModels
SaveCommand = new RelayCommand(OnSaveSettings);
BackCommand = new RelayCommand(OnBackCommand);
AddPlaylistCommand = new RelayCommand(OnAddPlaylistCommand);
PlaylistDeleteCommand = new RelayCommand<KeyValuePair<string, string>>(OnPlaylistDeleteCommand);
StartFullScreen = SettingsModel.StartFullScreen;
StartLastScreen = SettingsModel.StartFromLastScreen;
// PlaylistURL = SettingsModel.PlaylistURL;
Playlists = new ObservableCollection<KeyValuePair<string, string>>(SettingsModel.Playlists);
}
private void OnAddPlaylistCommand()
{
Playlists.Add(new KeyValuePair<string, string>(PlaylistName, PlaylistURL));
}
private void OnPlaylistDeleteCommand(KeyValuePair<string, string> pair)
{
Playlists.Remove(pair);
}
private void OnBackCommand()
{
TVPlayerViewModel.Instance.SelectScreen();
@@ -50,10 +80,10 @@ namespace TV_Player.ViewModels
{
SettingsModel.StartFullScreen = StartFullScreen;
SettingsModel.StartFromLastScreen = StartLastScreen;
//SettingsModel.PlaylistURL = PlaylistURL;
SettingsModel.Playlists.Clear();
SettingsModel.Playlists = Playlists.ToDictionary<string, string>();
SettingsModel.SaveSetttings();
TVPlayerViewModel.Instance.InitializeTVWithData();
TVPlayerViewModel.Instance.InitializeTVWithData();
}
}
}
@@ -44,7 +44,8 @@ namespace TV_Player.ViewModels
{
if (SettingsModel.Playlists!=null && SettingsModel.Playlists.Any())
{
foreach(var playlist in SettingsModel.Playlists)
PlayListsData.Clear();
foreach (var playlist in SettingsModel.Playlists)
{
PlayListsData.Add(playlist.Key, new ProgramsData(playlist.Key,playlist.Value));
}