add settings screen
get playlist from settings, in first run - open Settings
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user