Added BackCommand to video player window

This commit is contained in:
Vova
2024-01-18 19:06:51 +02:00
parent 10b4146772
commit 7ad95d9754
5 changed files with 39 additions and 61 deletions
+15 -18
View File
@@ -6,26 +6,23 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800" d:DesignHeight="450" d:DesignWidth="800"
> Unloaded="UserControl_Unloaded">
<Grid> <Grid>
<Grid x:Name="videoPlayer"> <vlc:VideoView x:Name="VideoView" Panel.ZIndex="1">
<vlc:VideoView x:Name="VideoView" Panel.ZIndex="1"> <StackPanel Panel.ZIndex="10" IsHitTestVisible="True" Background="#01FFFFFF"
<StackPanel Panel.ZIndex="2" Opacity="0.9"
IsHitTestVisible="True"
HorizontalAlignment="Stretch" MouseLeftButtonDown="MyUserControl_MouseDown" HorizontalAlignment="Stretch" MouseLeftButtonDown="MyUserControl_MouseDown"
TouchDown="MyUserControl_TouchDown" > TouchDown="MyUserControl_TouchDown" >
<Grid x:Name="overlayPanel" Visibility="Collapsed" > <Grid x:Name="overlayPanel" Visibility="Collapsed" >
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition /> <ColumnDefinition />
<ColumnDefinition /> <ColumnDefinition />
<ColumnDefinition /> <ColumnDefinition />
<ColumnDefinition /> <ColumnDefinition />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Grid.Column="0" Content="Pause" HorizontalAlignment="Stretch" Click="PauseButton_Click" /> <Button Grid.Column="0" Content="Back" HorizontalAlignment="Stretch" Command="{Binding BackCommand}" />
</Grid> <Button Grid.Column="1" Content="Pause" HorizontalAlignment="Stretch" Click="PauseButton_Click" />
</StackPanel> </Grid>
</vlc:VideoView> </StackPanel>
</Grid> </vlc:VideoView>
</Grid> </Grid>
</UserControl> </UserControl>
+7 -1
View File
@@ -3,6 +3,7 @@ using LibVLCSharp.WPF;
using System.IO; using System.IO;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Forms.Integration;
using System.Windows.Input; using System.Windows.Input;
namespace TV_Player namespace TV_Player
@@ -77,7 +78,7 @@ namespace TV_Player
VideoView.MediaPlayer.Play(media); VideoView.MediaPlayer.Play(media);
} }
} }
private void MyUserControl_MouseDown(object sender, MouseButtonEventArgs e) private void MyUserControl_MouseDown(object sender, MouseButtonEventArgs e)
{ {
@@ -110,5 +111,10 @@ namespace TV_Player
{ {
overlayPanel.Visibility = Visibility.Collapsed; overlayPanel.Visibility = Visibility.Collapsed;
} }
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
VideoView.MediaPlayer.Dispose();
}
} }
} }
+17 -26
View File
@@ -1,4 +1,6 @@
using System.Windows.Input; using CommunityToolkit.Mvvm.Input;
using System.Windows.Input;
using TV_Player.ViewModels;
namespace TV_Player namespace TV_Player
{ {
@@ -6,43 +8,32 @@ namespace TV_Player
public class PlayerViewModel: ObservableViewModelBase public class PlayerViewModel: ObservableViewModelBase
{ {
private readonly M3UInfo _currentProgram;
private string _urlSource; private M3UInfo _currentProgram;
public string URLSource public M3UInfo SelectedProgram
{ {
get => _urlSource; get => _currentProgram;
set => SetProperty(ref _urlSource, value); set => SetProperty(ref _currentProgram, value);
} }
public GroupInfo SelectedItem { get; set; } public M3UInfo SelectedItem { get; set; }
public ICommand PlayCommand { get; } public ICommand BackCommand { get; }
public PlayerViewModel(M3UInfo selectedProgram) public PlayerViewModel(M3UInfo selectedProgram)
{ {
_currentProgram = selectedProgram; _currentProgram = selectedProgram;
//PlayM3U8(_currentProgram.Url); BackCommand = new RelayCommand(OnButtonBackClick);
//_libVLC = new LibVLC();
//_mediaPlayer = new MediaPlayer(new Media(_libVLC, new Uri(_currentProgram.Url)));
//_mediaPlayer.Play();
//PlayCommand = new Command(OnPlayButtonClicked);
} }
private void OnPlayButtonClicked() private void OnButtonBackClick()
{ {
PlayM3U8(_currentProgram.Url); var groupInfo = new GroupInfo() { Name = _currentProgram.GroupTitle, Count = 0 };
var programListViewModel = new ProgramsListViewModel(groupInfo);
var conrtrol = new ProgramsList();
TVPlayerViewModel.Instance.SetPageContext(conrtrol, programListViewModel);
} }
private void PlayM3U8(string url)
{
try
{
URLSource = _currentProgram.Url;
}
catch (Exception ex)
{
// Handle exceptions
}
}
} }
} }
@@ -24,13 +24,9 @@ namespace TV_Player
private void OnItemSelected() private void OnItemSelected()
{ {
//var navigation = (INavigation)Application.Current.MainPage.Navigation;
var programListViewModel = new ProgramsListViewModel(SelectedItem); var programListViewModel = new ProgramsListViewModel(SelectedItem);
var conrtrol = new ProgramsList(); var conrtrol = new ProgramsList();
TVPlayerViewModel.Instance.SetPageContext(conrtrol, programListViewModel); TVPlayerViewModel.Instance.SetPageContext(conrtrol, programListViewModel);
} }
} }
} }
@@ -24,22 +24,10 @@ namespace TV_Player
private void OnItemSelected() private void OnItemSelected()
{ {
var playerViewModel = new PlayerViewModel(SelectedItem); var playerViewModel = new PlayerViewModel(SelectedItem);
var conrtrol = new VideoPlayer(); var conrtrol = new VideoPlayer();
conrtrol.SourceUrl = SelectedItem.Url; conrtrol.SourceUrl = SelectedItem.Url;
TVPlayerViewModel.Instance.SetPageContext(conrtrol, playerViewModel); TVPlayerViewModel.Instance.SetPageContext(conrtrol, playerViewModel);
//var navigation = (INavigation)Application.Current.MainPage.Navigation;
//var playerViewModel = new PlayerViewModel(SelectedItem);
//// Create a new SecondPage and set its BindingContext to the ViewModel
//var playerPage = new PlayerPage
//{
// BindingContext = playerViewModel
//};
//// Navigate to the OtherPage
//navigation.PushAsync(playerPage);
} }
} }
} }