diff --git a/TV Player WPF/VideoPlayer.xaml b/TV Player WPF/VideoPlayer.xaml
index 4a92fcd..dda4895 100644
--- a/TV Player WPF/VideoPlayer.xaml
+++ b/TV Player WPF/VideoPlayer.xaml
@@ -26,10 +26,32 @@
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -53,6 +75,9 @@
+
+
+
diff --git a/TV Player WPF/VideoPlayer.xaml.cs b/TV Player WPF/VideoPlayer.xaml.cs
index 10998f1..cd23d4b 100644
--- a/TV Player WPF/VideoPlayer.xaml.cs
+++ b/TV Player WPF/VideoPlayer.xaml.cs
@@ -17,16 +17,16 @@ namespace TV_Player
private LibVLC _libVLC;
private MediaPlayer _mediaPlayer;
private PlayerViewModel _viewModel;
- private DispatcherTimer _overlayAutoHideTimer;
+ //private DispatcherTimer _overlayAutoHideTimer;
public VideoPlayer()
{
InitializeComponent();
- _overlayAutoHideTimer = new DispatcherTimer();
- _overlayAutoHideTimer.Interval = TimeSpan.FromSeconds(3);
- _overlayAutoHideTimer.Tick += _overlayAutoHideTimer_Tick;
- _overlayAutoHideTimer.Start();
+ //_overlayAutoHideTimer = new DispatcherTimer();
+ //_overlayAutoHideTimer.Interval = TimeSpan.FromSeconds(3);
+ //_overlayAutoHideTimer.Tick += _overlayAutoHideTimer_Tick;
+ //_overlayAutoHideTimer.Start();
_libVLC = new LibVLC(enableDebugLogs: true);
_mediaPlayer = new MediaPlayer(_libVLC);
@@ -58,6 +58,7 @@ namespace TV_Player
private void VideoView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
+
ToggleOverlay();
}
@@ -88,7 +89,8 @@ namespace TV_Player
private void ToggleOverlay()
{
if (overlayPanel.Visibility == Visibility.Visible)
- {
+ {
+ _viewModel.ProgramGuideVisible = false;
HideOverlay();
}
else
@@ -104,12 +106,12 @@ namespace TV_Player
public void ShowOverlay()
{
- _overlayAutoHideTimer.Start();
+ //_overlayAutoHideTimer.Start();
overlayPanel.Visibility = Visibility.Visible;
}
public void HideOverlay()
{
- _overlayAutoHideTimer.Stop();
+ // _overlayAutoHideTimer.Stop();
overlayPanel.Visibility = Visibility.Collapsed;
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
diff --git a/TV Player WPF/ViewModels/M3UParser.cs b/TV Player WPF/ViewModels/M3UParser.cs
index 6f33aac..40fb469 100644
--- a/TV Player WPF/ViewModels/M3UParser.cs
+++ b/TV Player WPF/ViewModels/M3UParser.cs
@@ -13,7 +13,7 @@ namespace TV_Player
public string Title { get => _title; set => SetProperty(ref _title, value); }
public DateTime StartTime { get; set; }
- public DateTime StopTime { get; set; }
+ public DateTime EndTime { get; set; }
public int DurationValue { get => _durationValue; set => SetProperty(ref _durationValue, value); }
}
@@ -75,7 +75,7 @@ namespace TV_Player
var id = reader.GetAttribute("channel");
var channel = epgChannels.FirstOrDefault(x => x.Id == id);
program.StartTime = DateTime.ParseExact(reader.GetAttribute("start"), "yyyyMMddHHmmss zzz", null);
- program.StopTime = DateTime.ParseExact(reader.GetAttribute("stop"), "yyyyMMddHHmmss zzz", null);
+ program.EndTime = DateTime.ParseExact(reader.GetAttribute("stop"), "yyyyMMddHHmmss zzz", null);
reader.Read();
program.Title = reader.ReadElementContentAsString();
diff --git a/TV Player WPF/ViewModels/MainViewModel.cs b/TV Player WPF/ViewModels/MainViewModel.cs
index a9b0edb..a9ef975 100644
--- a/TV Player WPF/ViewModels/MainViewModel.cs
+++ b/TV Player WPF/ViewModels/MainViewModel.cs
@@ -66,7 +66,7 @@ namespace TV_Player
}
}
- private void OnCloseAppButtonClick()
+ public void OnCloseAppButtonClick()
{
Environment.Exit(0);
}
diff --git a/TV Player WPF/ViewModels/PlayerViewModel.cs b/TV Player WPF/ViewModels/PlayerViewModel.cs
index 59201a6..cb7a347 100644
--- a/TV Player WPF/ViewModels/PlayerViewModel.cs
+++ b/TV Player WPF/ViewModels/PlayerViewModel.cs
@@ -1,4 +1,5 @@
using CommunityToolkit.Mvvm.Input;
+using System;
using System.Reactive.Linq;
using System.Windows.Input;
using TV_Player.ViewModels;
@@ -54,12 +55,28 @@ namespace TV_Player
get => _endProgram;
set => SetProperty(ref _endProgram, value);
}
+
+ private bool _programGuideVisible;
+ public bool ProgramGuideVisible
+ {
+ get => _programGuideVisible;
+ set => SetProperty(ref _programGuideVisible, value);
+ }
+
+ List _programsOnCurrentChannel;
+ public List Programs
+ {
+ get => _programsOnCurrentChannel;
+ set => SetProperty(ref _programsOnCurrentChannel, value);
+ }
private List _programs;
public ICommand BackCommand { get; }
public ICommand FullscreenCommand { get; }
public ICommand NextCommand { get; }
public ICommand PreviousCommand { get; }
+ public ICommand ShowProgramListCommand { get; }
+ public ICommand CloseAppCommand { get; }
private ProgramGuide _currentGuide;
private ProgramInfo _currentProgramInfo;
@@ -77,6 +94,9 @@ namespace TV_Player
NextCommand = new RelayCommand(NextProgram);
PreviousCommand = new RelayCommand(PreviousProgram);
FullscreenCommand = new RelayCommand(TVPlayerViewModel.Instance.FullScreenToggle);
+ CloseAppCommand = new RelayCommand(TVPlayerViewModel.Instance.CloseAppCommand);
+ ShowProgramListCommand = new RelayCommand(ShowProgramList);
+ ProgramGuideVisible = false;
_programSubscriber = TVPlayerViewModel.Instance.PlaylistData.AllPrograms.Subscribe(x =>
{
@@ -101,6 +121,7 @@ namespace TV_Player
try
{
_currentGuide = x.FirstOrDefault(p => p.Id == _currentProgram.TvgID);
+
UpdateScreenInfo();
_timer = Observable.Interval(TimeSpan.FromMinutes(1)).Subscribe(x =>
@@ -121,6 +142,7 @@ namespace TV_Player
_programGuideDisposable?.Dispose();
UpdateUI();
}
+
private void NextProgram()
{
_currentProgramIndex += 1;
@@ -130,11 +152,19 @@ namespace TV_Player
_programGuideDisposable?.Dispose();
UpdateUI();
}
+
+ private void ShowProgramList()
+ {
+ ProgramGuideVisible = true;
+ }
+
private void UpdateScreenInfo()
{
try
{
- _currentProgramInfo = _currentGuide.Programs.FirstOrDefault(d => d.StartTime <= DateTime.Now && d.StopTime >= DateTime.Now);
+ _currentProgramInfo = _currentGuide.Programs.FirstOrDefault(d => d.StartTime <= DateTime.Now && d.EndTime >= DateTime.Now);
+ Programs = _currentGuide.Programs.Skip(_currentGuide.Programs.FindIndex(x=>x.Title==_currentProgramInfo.Title)).Take(7).ToList();
+
if (_currentProgramInfo == null)
{
IsProgramInfoVisible = false;
@@ -144,9 +174,9 @@ namespace TV_Player
IsProgramInfoVisible = true;
ProgramGuideText = _currentProgramInfo.Title;
StartProgram = _currentProgramInfo.StartTime.ToShortTimeString();
- EndProgram = _currentProgramInfo.StopTime.ToShortTimeString();
+ EndProgram = _currentProgramInfo.EndTime.ToShortTimeString();
- var programMinutes = (_currentProgramInfo.StopTime - _currentProgramInfo.StartTime).TotalMinutes;
+ var programMinutes = (_currentProgramInfo.EndTime - _currentProgramInfo.StartTime).TotalMinutes;
DurationValue = (int)((DateTime.Now - _currentProgramInfo.StartTime).TotalMinutes / programMinutes * 100);
}
diff --git a/TV Player WPF/ViewModels/TVPlayerViewModel.cs b/TV Player WPF/ViewModels/TVPlayerViewModel.cs
index e956588..a9cbe65 100644
--- a/TV Player WPF/ViewModels/TVPlayerViewModel.cs
+++ b/TV Player WPF/ViewModels/TVPlayerViewModel.cs
@@ -117,6 +117,11 @@ namespace TV_Player.ViewModels
_mainViewModel.OnFullSctreenButtonClick();
}
+ public void CloseAppCommand()
+ {
+ _mainViewModel.OnCloseAppButtonClick();
+ }
+
public void SetBackButtonAction(Action action)
{
_mainViewModel.ButtonBackAction = action;
diff --git a/TV Player/ViewModels/M3UParser.cs b/TV Player/ViewModels/M3UParser.cs
index bac057b..67d71dc 100644
--- a/TV Player/ViewModels/M3UParser.cs
+++ b/TV Player/ViewModels/M3UParser.cs
@@ -12,7 +12,7 @@ namespace TV_Player.MAUI
public string Title { get => _title; set => SetProperty(ref _title, value); }
public DateTime StartTime { get; set; }
- public DateTime StopTime { get; set; }
+ public DateTime EndTime { get; set; }
public int DurationValue { get => _durationValue; set => SetProperty(ref _durationValue, value); }
}
@@ -74,7 +74,7 @@ namespace TV_Player.MAUI
var id = reader.GetAttribute("channel");
var channel = epgChannels.FirstOrDefault(x => x.Id == id);
program.StartTime = DateTime.ParseExact(reader.GetAttribute("start"), "yyyyMMddHHmmss zzz", null);
- program.StopTime = DateTime.ParseExact(reader.GetAttribute("stop"), "yyyyMMddHHmmss zzz", null);
+ program.EndTime = DateTime.ParseExact(reader.GetAttribute("stop"), "yyyyMMddHHmmss zzz", null);
reader.Read();
program.Title = reader.ReadElementContentAsString();