add settings screen

get playlist from settings, in first run - open Settings
This commit is contained in:
Vova
2024-01-30 16:31:11 +02:00
parent d8365d2b1f
commit 9b8e8a835a
18 changed files with 527 additions and 228 deletions
+70 -3
View File
@@ -5,6 +5,7 @@ namespace TV_Player.ViewModels
public class TVPlayerViewModel : IDisposable
{
private readonly MainViewModel _mainViewModel;
public ProgramsData PlaylistData { get; private set; }
public Action ButtonBackAction { get; set; }
@@ -21,6 +22,8 @@ namespace TV_Player.ViewModels
public TVPlayerViewModel()
{
PlaylistData = new ProgramsData();
_mainViewModel = new MainViewModel();
var mainWindow = new MainWindow();
mainWindow.DataContext = _mainViewModel;
@@ -28,19 +31,81 @@ namespace TV_Player.ViewModels
mainWindow.Show();
_instance = this;
ShowInitialScreen();
SettingsModel.LoadSettings();
InitializeTVWithData();
}
private void ShowInitialScreen()
public void InitializeTVWithData()
{
if (!string.IsNullOrEmpty(SettingsModel.PlaylistURL))
{
if (SettingsModel.StartFullScreen)
FullScreenToggle();
PlaylistData.GetData(SettingsModel.PlaylistURL);
if (SettingsModel.StartFromLastScreen)
SelectScreen();
else
ShowProgramsGroupScreen();
}
else
{
ShowSettingsScreen();
}
}
public void SelectScreen()
{
switch (SettingsModel.LastScreen)
{
case "ProgramsListViewModel":
ShowProgramsListScreen(SettingsModel.Group);
break;
case "PlayerViewModel":
ShowPlayerScreen(SettingsModel.Program);
break;
default:
ShowProgramsGroupScreen();
break;
}
}
public void ShowProgramsGroupScreen()
{
var vm = new ProgramsGroupViewModel();
var control = new ProgramsGroupGrid();
control.DataContext = vm;
SettingsModel.LastScreen = nameof(ProgramsGroupViewModel);
SetPageContext(control, vm);
}
public void ShowProgramsListScreen(GroupInfo group)
{
SettingsModel.Group = group;
var programListViewModel = new ProgramsListViewModel(group);
var conrtrol = new ProgramsList();
SettingsModel.LastScreen = nameof(ProgramsListViewModel);
SetPageContext(conrtrol, programListViewModel);
}
public void ShowPlayerScreen(M3UInfo program)
{
SettingsModel.Program = program;
var playerViewModel = new PlayerViewModel(program);
var conrtrol = new VideoPlayer();
conrtrol.SourceUrl = program.Url;
SettingsModel.LastScreen = nameof(PlayerViewModel);
SetPageContext(conrtrol, playerViewModel);
}
public void ShowSettingsScreen()
{
var playerViewModel = new SettingsViewModel();
var conrtrol = new Settings();
SetPageContext(conrtrol, playerViewModel);
}
public void TopPanelVisible(bool value, string title)
{
_mainViewModel.IsTopPanelVisible = value;
@@ -57,13 +122,15 @@ namespace TV_Player.ViewModels
_mainViewModel.ButtonBackAction = action;
}
public void SetPageContext(ContentControl control, object viewModel)
private void SetPageContext(ContentControl control, object viewModel)
{
if (_mainViewModel.Control is IDisposable disposable)
disposable.Dispose();
control.DataContext = viewModel;
_mainViewModel.Control = control;
SettingsModel.SaveSetttings();
}
public void Dispose()