diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/CommonResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/CommonResources.resw
index 2deb893..9632010 100644
--- a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/CommonResources.resw
+++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/CommonResources.resw
@@ -117,6 +117,42 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Only audio
+
+
+ Only video
+
+
+ Original
+
+
+ Fast
+
+
+ Faster
+
+
+ Medium
+
+
+ Slow
+
+
+ Slower
+
+
+ Super fast
+
+
+ Ultra fast
+
+
+ Very fast
+
+
+ Very slow
+
You are trying to download a video using a metered connection. Do you want to continue?
diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeDownloadsViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeDownloadsViewResources.resw
index 3867e3d..f6b9601 100644
--- a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeDownloadsViewResources.resw
+++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeDownloadsViewResources.resw
@@ -117,15 +117,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Only audio
-
-
- Only video
-
-
- Original
-
Cancelled
diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomePlaylistViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomePlaylistViewResources.resw
index 874d57f..512a21d 100644
--- a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomePlaylistViewResources.resw
+++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomePlaylistViewResources.resw
@@ -180,15 +180,6 @@
Media options
-
- Only audio
-
-
- Only video
-
-
- Original
-
Media type
diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeVideoViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeVideoViewResources.resw
index b8b8cf7..5e860a6 100644
--- a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeVideoViewResources.resw
+++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeVideoViewResources.resw
@@ -144,15 +144,6 @@
Media options
-
- Only audio
-
-
- Only video
-
-
- Original
-
Media type
diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SettingsViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SettingsViewResources.resw
new file mode 100644
index 0000000..afeb536
--- /dev/null
+++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SettingsViewResources.resw
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Settings
+
+
+ Notifications
+
+
+ Show notifications when task ended successfully
+
+
+ Show notifications when task ended unsuccessfully
+
+
+ FFmpeg location
+
+
+ Browse
+
+
+ Processing
+
+
+ Speed
+
+
+ Use hardware acceleration
+
+
+ Use multithreading
+
+
+ Restore settings to default
+
+
+ Searching
+
+
+ 0 = Get all
+
+
+ Default number of videos fetched from playlist
+
+
+ Audio extension
+
+
+ Default media options
+
+
+ Default output directory
+
+
+ Browse
+
+
+ Filename template
+
+
+ Tasks
+
+
+ Media type
+
+
+ Maximum number of tasks running in parallel
+
+
+ Otherwise, default directory defined below (after expanding) will be used
+
+
+ Save last output directory
+
+
+ Video extension
+
+
+ Delete task's temporary files when an error occurs
+
+
+ Temporary files location
+
+
+ Browse
+
+
+ Temporary files
+
+
+ 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 3d57811..9ea848e 100644
--- a/VDownload.Core/VDownload.Core.ViewModels/Settings/SettingsViewModel.cs
+++ b/VDownload.Core/VDownload.Core.ViewModels/Settings/SettingsViewModel.cs
@@ -1,12 +1,238 @@
-using System;
+using CommunityToolkit.Mvvm.ComponentModel;
+using CommunityToolkit.Mvvm.Input;
+using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using VDownload.Models;
+using VDownload.Services.Data.Configuration;
+using VDownload.Services.Data.Settings;
+using VDownload.Services.UI.StoragePicker;
+using VDownload.Services.UI.StringResources;
namespace VDownload.Core.ViewModels.Settings
{
- public class SettingsViewModel
+ public partial class SettingsViewModel : ObservableObject
{
+ #region SERVICES
+
+ protected readonly ISettingsService _settingsService;
+ protected readonly IConfigurationService _configurationService;
+ protected readonly IStringResourcesService _stringResourcesService;
+ protected readonly IStoragePickerService _storagePickerService;
+
+ #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 int TasksRunningTasks
+ {
+ get => _settingsService.Data.Common.Tasks.MaxNumberOfRunningTasks;
+ set => SetProperty(_settingsService.Data.Common.Tasks.MaxNumberOfRunningTasks, value, _settingsService.Data.Common.Tasks, (u, n) => u.MaxNumberOfRunningTasks = n);
+ }
+
+ public MediaType TasksMediaType
+ {
+ get => _settingsService.Data.Common.Tasks.DefaultMediaType;
+ set => SetProperty(_settingsService.Data.Common.Tasks.DefaultMediaType, value, _settingsService.Data.Common.Tasks, (u, n) => u.DefaultMediaType = n);
+ }
+
+ public VideoExtension TasksVideoExtension
+ {
+ get => _settingsService.Data.Common.Tasks.DefaultVideoExtension;
+ set => SetProperty(_settingsService.Data.Common.Tasks.DefaultVideoExtension, value, _settingsService.Data.Common.Tasks, (u, n) => u.DefaultVideoExtension = n);
+ }
+
+ public AudioExtension TasksAudioExtension
+ {
+ get => _settingsService.Data.Common.Tasks.DefaultAudioExtension;
+ set => SetProperty(_settingsService.Data.Common.Tasks.DefaultAudioExtension, value, _settingsService.Data.Common.Tasks, (u, n) => u.DefaultAudioExtension = n);
+ }
+
+ public string TasksFilenameTemplate
+ {
+ get => _settingsService.Data.Common.Tasks.FilenameTemplate;
+ set => SetProperty(_settingsService.Data.Common.Tasks.FilenameTemplate, value, _settingsService.Data.Common.Tasks, (u, n) => u.FilenameTemplate = n);
+ }
+
+ public bool TasksSaveLastOutputDirectory
+ {
+ get => _settingsService.Data.Common.Tasks.SaveLastOutputDirectory;
+ set => SetProperty(_settingsService.Data.Common.Tasks.SaveLastOutputDirectory, value, _settingsService.Data.Common.Tasks, (u, n) => u.SaveLastOutputDirectory = n);
+ }
+
+ public string TasksDefaultOutputDirectory
+ {
+ get => _settingsService.Data.Common.Tasks.DefaultOutputDirectory;
+ set => SetProperty(_settingsService.Data.Common.Tasks.DefaultOutputDirectory, value, _settingsService.Data.Common.Tasks, (u, n) => u.DefaultOutputDirectory = n);
+ }
+
+ public string ProcessingFFmpegLocation
+ {
+ get => _settingsService.Data.Common.Processing.FFmpegLocation;
+ set => SetProperty(_settingsService.Data.Common.Processing.FFmpegLocation, value, _settingsService.Data.Common.Processing, (u, n) => u.FFmpegLocation = n);
+ }
+
+ public bool ProcessingUseHardwareAcceleration
+ {
+ get => _settingsService.Data.Common.Processing.UseHardwareAcceleration;
+ set => SetProperty(_settingsService.Data.Common.Processing.UseHardwareAcceleration, value, _settingsService.Data.Common.Processing, (u, n) => u.UseHardwareAcceleration = n);
+ }
+
+ public bool ProcessingUseMultithreading
+ {
+ get => _settingsService.Data.Common.Processing.UseMultithreading;
+ set => SetProperty(_settingsService.Data.Common.Processing.UseMultithreading, value, _settingsService.Data.Common.Processing, (u, n) => u.UseMultithreading = n);
+ }
+
+ public ProcessingSpeed ProcessingSpeed
+ {
+ get => _settingsService.Data.Common.Processing.Speed;
+ set => SetProperty(_settingsService.Data.Common.Processing.Speed, value, _settingsService.Data.Common.Processing, (u, n) => u.Speed = n);
+ }
+
+ public bool NotificationsOnSuccessful
+ {
+ get => _settingsService.Data.Common.Notifications.OnSuccessful;
+ set => SetProperty(_settingsService.Data.Common.Notifications.OnSuccessful, value, _settingsService.Data.Common.Notifications, (u, n) => u.OnSuccessful = n);
+ }
+
+ public bool NotificationsOnUnsuccessful
+ {
+ get => _settingsService.Data.Common.Notifications.OnUnsuccessful;
+ set => SetProperty(_settingsService.Data.Common.Notifications.OnUnsuccessful, value, _settingsService.Data.Common.Notifications, (u, n) => u.OnUnsuccessful = n);
+ }
+
+ public string TempDirectory
+ {
+ get => _settingsService.Data.Common.Temp.Directory;
+ set => SetProperty(_settingsService.Data.Common.Temp.Directory, value, _settingsService.Data.Common.Temp, (u, n) => u.Directory = n);
+ }
+
+ public bool TempDeleteOnFail
+ {
+ get => _settingsService.Data.Common.Temp.DeleteOnError;
+ set => SetProperty(_settingsService.Data.Common.Temp.DeleteOnError, value, _settingsService.Data.Common.Temp, (u, n) => u.DeleteOnError = 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);
+ }
+
+ [ObservableProperty]
+ protected string _tasksFilenameTemplateTooltip;
+
+ #endregion
+
+
+
+ #region CONSTRUCTORS
+
+ public SettingsViewModel(ISettingsService settingsService, IConfigurationService configurationService, IStringResourcesService stringResourcesService, IStoragePickerService storagePickerService)
+ {
+ _settingsService = settingsService;
+ _configurationService = configurationService;
+ _stringResourcesService = stringResourcesService;
+ _storagePickerService = storagePickerService;
+
+ base.PropertyChanged += PropertyChangedEventHandler;
+
+ _tasksFilenameTemplateTooltip = string.Join('\n', _configurationService.Common.FilenameTemplates.Select(x => _stringResourcesService.FilenameTemplateResources.Get(x.Name)));
+ }
+
+ #endregion
+
+
+
+ #region COMMANDS
+
+ [RelayCommand]
+ public async Task BrowseTasksDefaultOutputDirectory()
+ {
+ string? newDirectory = await _storagePickerService.OpenDirectory();
+ if (newDirectory is not null)
+ {
+ this.TasksDefaultOutputDirectory = newDirectory;
+ }
+ }
+
+ [RelayCommand]
+ public async Task BrowseTempDirectory()
+ {
+ string? newDirectory = await _storagePickerService.OpenDirectory();
+ if (newDirectory is not null)
+ {
+ this.TempDirectory = newDirectory;
+ }
+ }
+
+ [RelayCommand]
+ public async Task BrowseProcessingFFmpegLocation()
+ {
+ string? newDirectory = await _storagePickerService.OpenDirectory();
+ if (newDirectory is not null)
+ {
+ this.ProcessingFFmpegLocation = newDirectory;
+ }
+ }
+
+ [RelayCommand]
+ public async Task RestoreToDefault()
+ {
+ await _settingsService.Restore();
+ foreach (PropertyInfo property in this.GetType().GetProperties())
+ {
+ base.OnPropertyChanged(property.Name);
+ }
+ }
+
+ #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/BaseWindow.xaml.cs b/VDownload.Core/VDownload.Core.Views/BaseWindow.xaml.cs
index c6dcf97..ade7603 100644
--- a/VDownload.Core/VDownload.Core.Views/BaseWindow.xaml.cs
+++ b/VDownload.Core/VDownload.Core.Views/BaseWindow.xaml.cs
@@ -1,3 +1,5 @@
+using Microsoft.UI;
+using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
@@ -39,6 +41,7 @@ namespace VDownload.Core.Views
public BaseWindow(BaseViewModel viewModel)
{
this.InitializeComponent();
+ this.Activated += BaseWindow_Activated;
this.ExtendsContentIntoTitleBar = true;
this.SetTitleBar(this.AppTitleBar);
@@ -54,6 +57,14 @@ namespace VDownload.Core.Views
private void Root_Loaded(object sender, RoutedEventArgs e) => RootLoaded?.Invoke(this, EventArgs.Empty);
+ private void BaseWindow_Activated(object sender, WindowActivatedEventArgs args)
+ {
+ IntPtr windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(this);
+ WindowId windowId = Win32Interop.GetWindowIdFromWindow(windowHandle);
+ AppWindow appWindow = AppWindow.GetFromWindowId(windowId);
+ appWindow.SetIcon(@"Assets\Logo\Logo.ico");
+ }
+
#endregion
}
}
diff --git a/VDownload.Core/VDownload.Core.Views/Home/HomeDownloadsView.xaml b/VDownload.Core/VDownload.Core.Views/Home/HomeDownloadsView.xaml
index 911e767..b2a9a6d 100644
--- a/VDownload.Core/VDownload.Core.Views/Home/HomeDownloadsView.xaml
+++ b/VDownload.Core/VDownload.Core.Views/Home/HomeDownloadsView.xaml
@@ -98,15 +98,15 @@
Orientation="Horizontal">
-
-
-
diff --git a/VDownload.Core/VDownload.Core.Views/Home/HomePlaylistView.xaml b/VDownload.Core/VDownload.Core.Views/Home/HomePlaylistView.xaml
index ebfbe2f..9b13f73 100644
--- a/VDownload.Core/VDownload.Core.Views/Home/HomePlaylistView.xaml
+++ b/VDownload.Core/VDownload.Core.Views/Home/HomePlaylistView.xaml
@@ -311,13 +311,13 @@
-
+
-
+
-
+
diff --git a/VDownload.Core/VDownload.Core.Views/Home/HomeVideoView.xaml b/VDownload.Core/VDownload.Core.Views/Home/HomeVideoView.xaml
index 73832dc..aff7cb3 100644
--- a/VDownload.Core/VDownload.Core.Views/Home/HomeVideoView.xaml
+++ b/VDownload.Core/VDownload.Core.Views/Home/HomeVideoView.xaml
@@ -111,13 +111,13 @@
-
+
-
+
-
+
diff --git a/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml b/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml
index 1b000e8..8fcb718 100644
--- a/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml
+++ b/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml
@@ -6,10 +6,293 @@
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"
+ xmlns:m="using:VDownload.Models"
mc:Ignorable="d"
- Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
+ Background="{ThemeResource ViewBackgroundColor}">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml.cs b/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml.cs
index 9ad360f..5f5399f 100644
--- a/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml.cs
+++ b/VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml.cs
@@ -5,14 +5,6 @@ namespace VDownload.Core.Views.Settings
{
public sealed partial class SettingsView : Page
{
- #region PROPERTIES
-
- public new SettingsViewModel DataContext { get; set; }
-
- #endregion
-
-
-
#region CONSTRUCTORS
public SettingsView(SettingsViewModel viewModel)
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.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs b/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs
index 79d965f..0748449 100644
--- a/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs
+++ b/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs
@@ -15,6 +15,8 @@ namespace VDownload.Services.UI.StringResources
StringResources SearchResources { get; }
StringResources CommonResources { get; }
StringResources DialogButtonsResources { get; }
+ StringResources SettingsViewResources { get; }
+ StringResources FilenameTemplateResources { get; }
}
@@ -41,6 +43,8 @@ namespace VDownload.Services.UI.StringResources
public StringResources SearchResources { get; protected set; }
public StringResources CommonResources { get; protected set; }
public StringResources DialogButtonsResources { get; protected set; }
+ public StringResources SettingsViewResources { get; protected set; }
+ public StringResources FilenameTemplateResources { get; protected set; }
#endregion
@@ -62,6 +66,8 @@ namespace VDownload.Services.UI.StringResources
SearchResources = BuildResource("SearchResources");
CommonResources = BuildResource("CommonResources");
DialogButtonsResources = BuildResource("DialogButtonsResources");
+ SettingsViewResources = BuildResource("SettingsViewResources");
+ FilenameTemplateResources = BuildResource("FilenameTemplateResources");
}
#endregion
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/Logo/Logo.ico b/VDownload/Assets/Logo/Logo.ico
new file mode 100644
index 0000000..9fc1211
Binary files /dev/null and b/VDownload/Assets/Logo/Logo.ico differ
diff --git a/VDownload/Assets/SettingsView/NotificationOnSuccessfulDark.png b/VDownload/Assets/SettingsView/NotificationOnSuccessfulDark.png
new file mode 100644
index 0000000..9e6d85f
Binary files /dev/null and b/VDownload/Assets/SettingsView/NotificationOnSuccessfulDark.png differ
diff --git a/VDownload/Assets/SettingsView/NotificationOnSuccessfulLight.png b/VDownload/Assets/SettingsView/NotificationOnSuccessfulLight.png
new file mode 100644
index 0000000..439737f
Binary files /dev/null and b/VDownload/Assets/SettingsView/NotificationOnSuccessfulLight.png differ
diff --git a/VDownload/Assets/SettingsView/NotificationOnUnsuccessfulDark.png b/VDownload/Assets/SettingsView/NotificationOnUnsuccessfulDark.png
new file mode 100644
index 0000000..fcae41b
Binary files /dev/null and b/VDownload/Assets/SettingsView/NotificationOnUnsuccessfulDark.png differ
diff --git a/VDownload/Assets/SettingsView/NotificationOnUnsuccessfulLight.png b/VDownload/Assets/SettingsView/NotificationOnUnsuccessfulLight.png
new file mode 100644
index 0000000..57d3bff
Binary files /dev/null and b/VDownload/Assets/SettingsView/NotificationOnUnsuccessfulLight.png differ
diff --git a/VDownload/Assets/SettingsView/ProcessingFFmpegLocationDark.png b/VDownload/Assets/SettingsView/ProcessingFFmpegLocationDark.png
new file mode 100644
index 0000000..731e15e
Binary files /dev/null and b/VDownload/Assets/SettingsView/ProcessingFFmpegLocationDark.png differ
diff --git a/VDownload/Assets/SettingsView/ProcessingFFmpegLocationLight.png b/VDownload/Assets/SettingsView/ProcessingFFmpegLocationLight.png
new file mode 100644
index 0000000..b82f380
Binary files /dev/null and b/VDownload/Assets/SettingsView/ProcessingFFmpegLocationLight.png differ
diff --git a/VDownload/Assets/SettingsView/ProcessingSpeedDark.png b/VDownload/Assets/SettingsView/ProcessingSpeedDark.png
new file mode 100644
index 0000000..28d3f9a
Binary files /dev/null and b/VDownload/Assets/SettingsView/ProcessingSpeedDark.png differ
diff --git a/VDownload/Assets/SettingsView/ProcessingSpeedLight.png b/VDownload/Assets/SettingsView/ProcessingSpeedLight.png
new file mode 100644
index 0000000..5e7b7ee
Binary files /dev/null and b/VDownload/Assets/SettingsView/ProcessingSpeedLight.png differ
diff --git a/VDownload/Assets/SettingsView/ProcessingUseHardwareAccelerationDark.png b/VDownload/Assets/SettingsView/ProcessingUseHardwareAccelerationDark.png
new file mode 100644
index 0000000..5a83f4e
Binary files /dev/null and b/VDownload/Assets/SettingsView/ProcessingUseHardwareAccelerationDark.png differ
diff --git a/VDownload/Assets/SettingsView/ProcessingUseHardwareAccelerationLight.png b/VDownload/Assets/SettingsView/ProcessingUseHardwareAccelerationLight.png
new file mode 100644
index 0000000..2864771
Binary files /dev/null and b/VDownload/Assets/SettingsView/ProcessingUseHardwareAccelerationLight.png differ
diff --git a/VDownload/Assets/SettingsView/ProcessingUseMultithreadingDark.png b/VDownload/Assets/SettingsView/ProcessingUseMultithreadingDark.png
new file mode 100644
index 0000000..3f26960
Binary files /dev/null and b/VDownload/Assets/SettingsView/ProcessingUseMultithreadingDark.png differ
diff --git a/VDownload/Assets/SettingsView/ProcessingUseMultithreadingLight.png b/VDownload/Assets/SettingsView/ProcessingUseMultithreadingLight.png
new file mode 100644
index 0000000..478965e
Binary files /dev/null and b/VDownload/Assets/SettingsView/ProcessingUseMultithreadingLight.png differ
diff --git a/VDownload/Assets/SettingsView/SearchingPlaylistCountDark.png b/VDownload/Assets/SettingsView/SearchingPlaylistCountDark.png
new file mode 100644
index 0000000..01f741d
Binary files /dev/null and b/VDownload/Assets/SettingsView/SearchingPlaylistCountDark.png differ
diff --git a/VDownload/Assets/SettingsView/SearchingPlaylistCountLight.png b/VDownload/Assets/SettingsView/SearchingPlaylistCountLight.png
new file mode 100644
index 0000000..4fb782f
Binary files /dev/null and b/VDownload/Assets/SettingsView/SearchingPlaylistCountLight.png differ
diff --git a/VDownload/Assets/SettingsView/TasksDefaultMediaOptionsDark.png b/VDownload/Assets/SettingsView/TasksDefaultMediaOptionsDark.png
new file mode 100644
index 0000000..71fe363
Binary files /dev/null and b/VDownload/Assets/SettingsView/TasksDefaultMediaOptionsDark.png differ
diff --git a/VDownload/Assets/SettingsView/TasksDefaultMediaOptionsLight.png b/VDownload/Assets/SettingsView/TasksDefaultMediaOptionsLight.png
new file mode 100644
index 0000000..685ac0d
Binary files /dev/null and b/VDownload/Assets/SettingsView/TasksDefaultMediaOptionsLight.png differ
diff --git a/VDownload/Assets/SettingsView/TasksFilenameTemplateDark.png b/VDownload/Assets/SettingsView/TasksFilenameTemplateDark.png
new file mode 100644
index 0000000..4a9b713
Binary files /dev/null and b/VDownload/Assets/SettingsView/TasksFilenameTemplateDark.png differ
diff --git a/VDownload/Assets/SettingsView/TasksFilenameTemplateLight.png b/VDownload/Assets/SettingsView/TasksFilenameTemplateLight.png
new file mode 100644
index 0000000..bd9da97
Binary files /dev/null and b/VDownload/Assets/SettingsView/TasksFilenameTemplateLight.png differ
diff --git a/VDownload/Assets/SettingsView/TasksOutputDirectoryDark.png b/VDownload/Assets/SettingsView/TasksOutputDirectoryDark.png
new file mode 100644
index 0000000..731e15e
Binary files /dev/null and b/VDownload/Assets/SettingsView/TasksOutputDirectoryDark.png differ
diff --git a/VDownload/Assets/SettingsView/TasksOutputDirectoryLight.png b/VDownload/Assets/SettingsView/TasksOutputDirectoryLight.png
new file mode 100644
index 0000000..b82f380
Binary files /dev/null and b/VDownload/Assets/SettingsView/TasksOutputDirectoryLight.png differ
diff --git a/VDownload/Assets/SettingsView/TasksRunningTasksDark.png b/VDownload/Assets/SettingsView/TasksRunningTasksDark.png
new file mode 100644
index 0000000..da06dec
Binary files /dev/null and b/VDownload/Assets/SettingsView/TasksRunningTasksDark.png differ
diff --git a/VDownload/Assets/SettingsView/TasksRunningTasksLight.png b/VDownload/Assets/SettingsView/TasksRunningTasksLight.png
new file mode 100644
index 0000000..dc42751
Binary files /dev/null and b/VDownload/Assets/SettingsView/TasksRunningTasksLight.png differ
diff --git a/VDownload/Assets/SettingsView/TempDeleteOnFailDark.png b/VDownload/Assets/SettingsView/TempDeleteOnFailDark.png
new file mode 100644
index 0000000..8e33b76
Binary files /dev/null and b/VDownload/Assets/SettingsView/TempDeleteOnFailDark.png differ
diff --git a/VDownload/Assets/SettingsView/TempDeleteOnFailLight.png b/VDownload/Assets/SettingsView/TempDeleteOnFailLight.png
new file mode 100644
index 0000000..8db92f4
Binary files /dev/null and b/VDownload/Assets/SettingsView/TempDeleteOnFailLight.png differ
diff --git a/VDownload/Assets/SettingsView/TempDirectoryDark.png b/VDownload/Assets/SettingsView/TempDirectoryDark.png
new file mode 100644
index 0000000..c77de97
Binary files /dev/null and b/VDownload/Assets/SettingsView/TempDirectoryDark.png differ
diff --git a/VDownload/Assets/SettingsView/TempDirectoryLight.png b/VDownload/Assets/SettingsView/TempDirectoryLight.png
new file mode 100644
index 0000000..b8151ed
Binary files /dev/null and b/VDownload/Assets/SettingsView/TempDirectoryLight.png differ
diff --git a/VDownload/Dictionaries/Converters.xaml b/VDownload/Dictionaries/Converters.xaml
index 0ab4f0a..f9324ce 100644
--- a/VDownload/Dictionaries/Converters.xaml
+++ b/VDownload/Dictionaries/Converters.xaml
@@ -12,4 +12,5 @@
+
diff --git a/VDownload/Dictionaries/Images/ImagesLogo.xaml b/VDownload/Dictionaries/Images/ImagesLogo.xaml
index 09e6ce0..1ebe7ea 100644
--- a/VDownload/Dictionaries/Images/ImagesLogo.xaml
+++ b/VDownload/Dictionaries/Images/ImagesLogo.xaml
@@ -3,4 +3,5 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
/Assets/Logo/Logo.png
+ /Assets/Logo/Logo.ico
diff --git a/VDownload/Dictionaries/Images/ImagesSettingsView.xaml b/VDownload/Dictionaries/Images/ImagesSettingsView.xaml
new file mode 100644
index 0000000..fd1967a
--- /dev/null
+++ b/VDownload/Dictionaries/Images/ImagesSettingsView.xaml
@@ -0,0 +1,37 @@
+
+
+
+
+ /Assets/SettingsView/SearchingPlaylistCountLight.png
+ /Assets/SettingsView/TasksDefaultMediaOptionsLight.png
+ /Assets/SettingsView/TasksRunningTasksLight.png
+ /Assets/SettingsView/TasksFilenameTemplateLight.png
+ /Assets/SettingsView/TasksOutputDirectoryLight.png
+ /Assets/SettingsView/TempDirectoryLight.png
+ /Assets/SettingsView/TempDeleteOnFailLight.png
+ /Assets/SettingsView/NotificationOnSuccessfulLight.png
+ /Assets/SettingsView/NotificationOnUnsuccessfulLight.png
+ /Assets/SettingsView/ProcessingFFmpegLocationLight.png
+ /Assets/SettingsView/ProcessingUseHardwareAccelerationLight.png
+ /Assets/SettingsView/ProcessingUseMultithreadingLight.png
+ /Assets/SettingsView/ProcessingSpeedLight.png
+
+
+ /Assets/SettingsView/SearchingPlaylistCountDark.png
+ /Assets/SettingsView/TasksDefaultMediaOptionsDark.png
+ /Assets/SettingsView/TasksRunningTasksDark.png
+ /Assets/SettingsView/TasksFilenameTemplateDark.png
+ /Assets/SettingsView/TasksOutputDirectoryDark.png
+ /Assets/SettingsView/TempDirectoryDark.png
+ /Assets/SettingsView/TempDeleteOnFailDark.png
+ /Assets/SettingsView/NotificationOnSuccessfulDark.png
+ /Assets/SettingsView/NotificationOnUnsuccessfulDark.png
+ /Assets/SettingsView/ProcessingFFmpegLocationDark.png
+ /Assets/SettingsView/ProcessingUseHardwareAccelerationDark.png
+ /Assets/SettingsView/ProcessingUseMultithreadingDark.png
+ /Assets/SettingsView/ProcessingSpeedDark.png
+
+
+
diff --git a/VDownload/VDownload.csproj b/VDownload/VDownload.csproj
index 8a756cf..a171dc6 100644
--- a/VDownload/VDownload.csproj
+++ b/VDownload/VDownload.csproj
@@ -13,6 +13,7 @@
true
true
false
+ Assets\Logo\Logo.ico
@@ -76,8 +77,6 @@
-
-
@@ -96,6 +95,12 @@
+
+
+
+
+
+
@@ -139,6 +144,8 @@
+
+
@@ -148,6 +155,7 @@
+
@@ -189,9 +197,75 @@
+
+ Always
+
+
+ Always
+
Always
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
@@ -404,15 +478,39 @@
Always
+
+ Always
+
Always
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
Always
Always
+
+ MSBuild:Compile
+
MSBuild:Compile