diff --git a/TV Player WPF/Assets/AppStyle.xaml b/TV Player WPF/Assets/AppStyle.xaml
index a0d588f..93e8f3a 100644
--- a/TV Player WPF/Assets/AppStyle.xaml
+++ b/TV Player WPF/Assets/AppStyle.xaml
@@ -15,7 +15,7 @@
- программ
+
@@ -101,9 +101,9 @@ c-0.781-0.781-0.788-2.047-0.007-2.828L51.438,14.43c1.754-1.755,1.753-4.61-0.001-
-
+
-
+
diff --git a/TV Player WPF/Assets/en-US.xaml b/TV Player WPF/Assets/en-US.xaml
new file mode 100644
index 0000000..128794a
--- /dev/null
+++ b/TV Player WPF/Assets/en-US.xaml
@@ -0,0 +1,12 @@
+
+
+ Settings
+ Fullscreen
+ Remember last seen programm
+ Add new playlist
+ Playlist URL
+ Playlist name
+ programs
+
\ No newline at end of file
diff --git a/TV Player WPF/PlaylistWorker/M3UParser.cs b/TV Player WPF/PlaylistWorker/M3UParser.cs
index 030d9b0..23018f1 100644
--- a/TV Player WPF/PlaylistWorker/M3UParser.cs
+++ b/TV Player WPF/PlaylistWorker/M3UParser.cs
@@ -103,7 +103,7 @@ namespace TV_Player
}
}
- public static async Task ParseEpg(string channelId)
+ public static async Task ParseEpg(string groupName, string channelId)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
@@ -112,9 +112,9 @@ namespace TV_Player
settings.Async = true;
ProgramGuide channel = null;
- var fileName = "guide.xml";
+ var fileName = groupName+"_guide.xml";
string programDataPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
- string filePath = Path.Combine(programDataPath, "TV_Player", fileName);
+ string filePath = Path.Combine(programDataPath, "TVPlayer", fileName);
using (XmlReader reader = XmlReader.Create(filePath, settings))
{
diff --git a/TV Player WPF/Settings.xaml b/TV Player WPF/Settings.xaml
index 628f3fa..cdf0cb5 100644
--- a/TV Player WPF/Settings.xaml
+++ b/TV Player WPF/Settings.xaml
@@ -6,6 +6,7 @@
mc:Ignorable="d">
+
@@ -29,15 +30,16 @@
-
-
+
+
+
-
+
- Откывать во весь экран
- Запоминать последний выбор
+
+
diff --git a/TV Player WPF/ViewModels/ProgramsData.cs b/TV Player WPF/ViewModels/ProgramsData.cs
index d2c792d..aceeec1 100644
--- a/TV Player WPF/ViewModels/ProgramsData.cs
+++ b/TV Player WPF/ViewModels/ProgramsData.cs
@@ -10,10 +10,12 @@ namespace TV_Player
private readonly ReplaySubject programGuideSubject = new ReplaySubject();
public IObservable> AllPrograms => programsSubject;
public IObservable> GroupsInformation => groupsSubject;
-
public IObservable ProgramGuideInfo => programGuideSubject;
+
+ private readonly string _programName;
public ProgramsData(string name,string playlistURL)
{
+ _programName = name;
Task.Run(() => GetPrograms(name,playlistURL));
}
@@ -34,7 +36,7 @@ namespace TV_Player
public Task GetGuideByProgram(string channelID)
{
- return M3UParser.ParseEpg(channelID);
+ return M3UParser.ParseEpg(_programName,channelID);
}
private async Task GetProgramGuide(string name, string guideLink)
diff --git a/TV Player WPF/ViewModels/SettingsViewModel.cs b/TV Player WPF/ViewModels/SettingsViewModel.cs
index 5328c00..e3e3aee 100644
--- a/TV Player WPF/ViewModels/SettingsViewModel.cs
+++ b/TV Player WPF/ViewModels/SettingsViewModel.cs
@@ -63,7 +63,19 @@ namespace TV_Player.ViewModels
private void OnAddPlaylistCommand()
{
- Playlists.Add(new KeyValuePair(PlaylistName, PlaylistURL));
+ var url = PlaylistURL?.Trim();
+ var name = PlaylistName?.Trim();
+ if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(url))
+ return;
+ if (IsValidUrl(url))
+ Playlists.Add(new KeyValuePair(name, url));
+ }
+
+ private bool IsValidUrl(string url)
+ {
+ Uri uriResult;
+ return Uri.TryCreate(url, UriKind.Absolute, out uriResult)
+ && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
}
private void OnPlaylistDeleteCommand(KeyValuePair pair)
diff --git a/TV Player WPF/ViewModels/TVPlayerViewModel.cs b/TV Player WPF/ViewModels/TVPlayerViewModel.cs
index 1588b7a..8f722a0 100644
--- a/TV Player WPF/ViewModels/TVPlayerViewModel.cs
+++ b/TV Player WPF/ViewModels/TVPlayerViewModel.cs
@@ -1,4 +1,5 @@
-using System.Windows.Controls;
+using System.Windows;
+using System.Windows.Controls;
namespace TV_Player.ViewModels
{
@@ -12,7 +13,7 @@ namespace TV_Player.ViewModels
public Action ButtonBackAction { get; set; }
- private string _currentPlaylistName;
+ public string _currentPlaylistName;
private static TVPlayerViewModel? _instance;
public static TVPlayerViewModel Instance
@@ -44,6 +45,7 @@ namespace TV_Player.ViewModels
{
if (SettingsModel.Playlists!=null && SettingsModel.Playlists.Any())
{
+ SetLanguageDictionary();
PlayListsData.Clear();
foreach (var playlist in SettingsModel.Playlists)
{
@@ -64,6 +66,24 @@ namespace TV_Player.ViewModels
}
}
+ private void SetLanguageDictionary()
+ {
+ ResourceDictionary dict = new ResourceDictionary();
+ switch (Thread.CurrentThread.CurrentCulture.ToString())
+ {
+ case "en-US":
+ dict.Source = new Uri("..\\Assets\\en-US.xaml", UriKind.Relative);
+ break;
+ case "ru-RU":
+ dict.Source = new Uri("..\\Assets\\ru-RU.xaml", UriKind.Relative);
+ break;
+ default:
+ dict.Source = new Uri("..\\Assets\\en-US.xaml", UriKind.Relative);
+ break;
+ }
+ Application.Current.Resources.MergedDictionaries.Add(dict);
+ }
+
public void SelectScreen()
{
switch (SettingsModel.LastScreen)