From 930b13eecc1a43963a785791d2ed27da630c5a45 Mon Sep 17 00:00:00 2001 From: Mateusz Skoczek Date: Mon, 4 Mar 2024 19:31:48 +0100 Subject: [PATCH] twitch settings added, settings images dictionary added --- .../Strings/en-US/SettingsViewResources.resw | 33 ++++++++ .../Home/HomeViewModel.cs | 2 +- .../Settings/SettingsViewModel.cs | 72 +++++++++++++++++ .../Settings/SettingsView.xaml | 73 ++++++++++++++++++ .../CommonSettings.cs | 4 +- .../Models/Searching.cs | 15 ++++ VDownload/App.xaml | 1 + .../SearchingPlaylistCountDark.png | Bin 0 -> 16386 bytes .../SearchingPlaylistCountLight.png | Bin 0 -> 25332 bytes .../Images/ImagesSettingsView.xaml | 13 ++++ VDownload/VDownload.csproj | 10 +++ 11 files changed, 220 insertions(+), 3 deletions(-) create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/Models/Searching.cs create mode 100644 VDownload/Assets/SettingsView/SearchingPlaylistCountDark.png create mode 100644 VDownload/Assets/SettingsView/SearchingPlaylistCountLight.png create mode 100644 VDownload/Dictionaries/Images/ImagesSettingsView.xaml diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SettingsViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SettingsViewResources.resw index 7773170..8b0e6f4 100644 --- a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SettingsViewResources.resw +++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SettingsViewResources.resw @@ -120,4 +120,37 @@ Settings + + Searching + + + 0 = Get all + + + Default number of videos fetched from playlist + + + Twitch + + + Retry when downloading single VOD chunk fails + + + Number of retries + + + Time between fail and retry (in miliseconds) + + + WARNING: Too many chunks downloaded at once may cause performance problems + + + Maximum number of VOD chunks downloaded in parallel + + + Only chunks from trim start to trim end range will be downloaded + + + VOD passive trimming + \ No newline at end of file diff --git a/VDownload.Core/VDownload.Core.ViewModels/Home/HomeViewModel.cs b/VDownload.Core/VDownload.Core.ViewModels/Home/HomeViewModel.cs index a9b9d75..9d17d50 100644 --- a/VDownload.Core/VDownload.Core.ViewModels/Home/HomeViewModel.cs +++ b/VDownload.Core/VDownload.Core.ViewModels/Home/HomeViewModel.cs @@ -149,7 +149,7 @@ namespace VDownload.Core.ViewModels.Home OptionBarPlaylistSearchButtonChecked = false; OptionBarSearchNotPending = true; OptionBarVideoSearchTBValue = string.Empty; - OptionBarPlaylistSearchNBValue = _settingsService.Data.Common.MaxNumberOfVideosToGetFromPlaylist; + OptionBarPlaylistSearchNBValue = _settingsService.Data.Common.Searching.MaxNumberOfVideosToGetFromPlaylist; OptionBarPlaylistSearchTBValue = string.Empty; } diff --git a/VDownload.Core/VDownload.Core.ViewModels/Settings/SettingsViewModel.cs b/VDownload.Core/VDownload.Core.ViewModels/Settings/SettingsViewModel.cs index ab950b6..8315d0f 100644 --- a/VDownload.Core/VDownload.Core.ViewModels/Settings/SettingsViewModel.cs +++ b/VDownload.Core/VDownload.Core.ViewModels/Settings/SettingsViewModel.cs @@ -4,10 +4,82 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using VDownload.Services.Data.Settings; namespace VDownload.Core.ViewModels.Settings { public class SettingsViewModel : ObservableObject { + #region SERVICES + + protected readonly ISettingsService _settingsService; + + #endregion + + + + #region PROPERTIES + + public int SearchingPlaylistCount + { + get => _settingsService.Data.Common.Searching.MaxNumberOfVideosToGetFromPlaylist; + set => SetProperty(_settingsService.Data.Common.Searching.MaxNumberOfVideosToGetFromPlaylist, value, _settingsService.Data.Common.Searching, (u, n) => u.MaxNumberOfVideosToGetFromPlaylist = n); + } + + public bool TwitchVodPassiveTrimming + { + get => _settingsService.Data.Twitch.Vod.PassiveTrimming; + set => SetProperty(_settingsService.Data.Twitch.Vod.PassiveTrimming, value, _settingsService.Data.Twitch.Vod, (u, n) => u.PassiveTrimming = n); + } + + public int TwitchVodParallelDownloads + { + get => _settingsService.Data.Twitch.Vod.MaxNumberOfParallelDownloads; + set => SetProperty(_settingsService.Data.Twitch.Vod.MaxNumberOfParallelDownloads, value, _settingsService.Data.Twitch.Vod, (u, n) => u.MaxNumberOfParallelDownloads = n); + } + + public bool TwitchVodChunkDownloadingErrorRetry + { + get => _settingsService.Data.Twitch.Vod.ChunkDownloadingError.Retry; + set => SetProperty(_settingsService.Data.Twitch.Vod.ChunkDownloadingError.Retry, value, _settingsService.Data.Twitch.Vod.ChunkDownloadingError, (u, n) => u.Retry = n); + } + + public int TwitchVodChunkDownloadingErrorRetryCount + { + get => _settingsService.Data.Twitch.Vod.ChunkDownloadingError.RetriesCount; + set => SetProperty(_settingsService.Data.Twitch.Vod.ChunkDownloadingError.RetriesCount, value, _settingsService.Data.Twitch.Vod.ChunkDownloadingError, (u, n) => u.RetriesCount = n); + } + + public int TwitchVodChunkDownloadingErrorRetryDelay + { + get => _settingsService.Data.Twitch.Vod.ChunkDownloadingError.RetryDelay; + set => SetProperty(_settingsService.Data.Twitch.Vod.ChunkDownloadingError.RetryDelay, value, _settingsService.Data.Twitch.Vod.ChunkDownloadingError, (u, n) => u.RetryDelay = n); + } + + #endregion + + + + #region CONSTRUCTORS + + public SettingsViewModel(ISettingsService settingsService) + { + _settingsService = settingsService; + + base.PropertyChanged += PropertyChangedEventHandler; + } + + #endregion + + + + #region PRIVATE METHODS + + private async void PropertyChangedEventHandler(object sender, System.ComponentModel.PropertyChangedEventArgs e) + { + await _settingsService.Save(); + } + + #endregion } } diff --git a/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml b/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml index 71c1613..f1fe579 100644 --- a/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml +++ b/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml @@ -6,6 +6,11 @@ xmlns:local="using:VDownload.Core.Views.Settings" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:ctuc="using:CommunityToolkit.WinUI.UI.Controls" + xmlns:ctc="using:CommunityToolkit.WinUI.Controls" + xmlns:ct="using:CommunityToolkit.WinUI" + xmlns:i="using:Microsoft.Xaml.Interactivity" + xmlns:ic="using:Microsoft.Xaml.Interactions.Core" mc:Ignorable="d" Background="{ThemeResource ViewBackgroundColor}"> @@ -19,5 +24,73 @@ Grid.Row="0" FontSize="28" FontWeight="SemiBold"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/CommonSettings.cs b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/CommonSettings.cs index 8211f13..fd0fbc7 100644 --- a/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/CommonSettings.cs +++ b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/CommonSettings.cs @@ -12,8 +12,8 @@ namespace VDownload.Services.Data.Settings { public class CommonSettings { - [JsonProperty("max_number_of_videos_to_get_from_playlist")] - public int MaxNumberOfVideosToGetFromPlaylist { get; set; } = 0; + [JsonProperty("searching")] + public Searching Searching { get; set; } = new Searching(); [JsonProperty("temp")] public Temp Temp { get; set; } = new Temp(); diff --git a/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/Models/Searching.cs b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/Models/Searching.cs new file mode 100644 index 0000000..cba8144 --- /dev/null +++ b/VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/Models/Searching.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VDownload.Services.Data.Settings.Models +{ + public class Searching + { + [JsonProperty("max_number_of_videos_to_get_from_playlist")] + public int MaxNumberOfVideosToGetFromPlaylist { get; set; } = 0; + } +} diff --git a/VDownload/App.xaml b/VDownload/App.xaml index d88ed54..4814124 100644 --- a/VDownload/App.xaml +++ b/VDownload/App.xaml @@ -18,6 +18,7 @@ + diff --git a/VDownload/Assets/SettingsView/SearchingPlaylistCountDark.png b/VDownload/Assets/SettingsView/SearchingPlaylistCountDark.png new file mode 100644 index 0000000000000000000000000000000000000000..01f741d4cd4e947c2b53d0296eab563065d6a0ee GIT binary patch literal 16386 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 a+t%Ifhp(Tw8A&9hdv}@c%-%si@&5n;i|QT# literal 0 HcmV?d00001 diff --git a/VDownload/Dictionaries/Images/ImagesSettingsView.xaml b/VDownload/Dictionaries/Images/ImagesSettingsView.xaml new file mode 100644 index 0000000..51545e0 --- /dev/null +++ b/VDownload/Dictionaries/Images/ImagesSettingsView.xaml @@ -0,0 +1,13 @@ + + + + + /Assets/SettingsView/SearchingPlaylistCountLight.png + + + /Assets/SettingsView/SearchingPlaylistCountDark.png + + + diff --git a/VDownload/VDownload.csproj b/VDownload/VDownload.csproj index 8a756cf..ac08e63 100644 --- a/VDownload/VDownload.csproj +++ b/VDownload/VDownload.csproj @@ -148,6 +148,7 @@ + @@ -192,6 +193,12 @@ Always + + Always + + + Always + @@ -413,6 +420,9 @@ Always + + MSBuild:Compile + MSBuild:Compile