This commit is contained in:
2024-02-28 01:22:13 +01:00
Unverified
parent e3ec5c3a48
commit 74eb899e31
51 changed files with 562 additions and 608 deletions

View File

@@ -9,8 +9,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.4.230913002" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.755" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.4.240211001" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.2428" />
</ItemGroup>
<ItemGroup>

View File

@@ -140,7 +140,7 @@ namespace VDownload.Core.Tasks
await _settingsService.Load();
string tempDirectory = $"{_settingsService.Data.Common.TempDirectory}\\{_configurationService.Common.Path.Temp.TasksDirectory}\\{_id}";
string tempDirectory = $"{_settingsService.Data.Common.Temp.Directory}\\{_configurationService.Common.Path.Temp.TasksDirectory}\\{_id}";
Directory.CreateDirectory(tempDirectory);
List<string> content = new List<string>()
@@ -211,7 +211,7 @@ namespace VDownload.Core.Tasks
}
finally
{
if (Status != DownloadTaskStatus.EndedUnsuccessfully || _settingsService.Data.Common.DeleteTempOnError)
if (Status != DownloadTaskStatus.EndedUnsuccessfully || _settingsService.Data.Common.Temp.DeleteOnError)
{
Directory.Delete(tempDirectory, true);
}

View File

@@ -129,13 +129,12 @@ namespace VDownload.Core.Tasks
DownloadTaskStatus.Processing,
DownloadTaskStatus.Finalizing
];
while (true)
{
try
{
IEnumerable<DownloadTask> pendingTasks = Tasks.Where(x => pendingStatuses.Contains(x.Status));
int freeSlots = _settingsService.Data.Common.MaxNumberOfRunningTasks - pendingTasks.Count();
int freeSlots = _settingsService.Data.Common.Tasks.MaxNumberOfRunningTasks - pendingTasks.Count();
if (freeSlots > 0)
{
IEnumerable<DownloadTask> queuedTasks = Tasks.Where(x => x.Status == DownloadTaskStatus.Queued).OrderBy(x => x.CreateDate).Take(freeSlots);

View File

@@ -11,7 +11,7 @@ using VDownload.Core.ViewModels.Home;
using VDownload.Core.ViewModels.Settings;
using VDownload.Services.UI.DictionaryResources;
using VDownload.Services.UI.StringResources;
using VDownload.Toolkit.UI.Models;
using SimpleToolkit.UI.Models;
namespace VDownload.Core.ViewModels
{

View File

@@ -0,0 +1,75 @@
using CommunityToolkit.Mvvm.ComponentModel;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VDownload.Models;
using VDownload.Sources.Twitch.Configuration.Models;
namespace VDownload.Core.ViewModels.Home
{
public partial class HomePlaylistViewModel : ObservableObject
{
#region SERVICES
#endregion
#region FIELDS
#endregion
#region PROPERTIES
[ObservableProperty]
protected string _name;
#endregion
#region CONSTRUCTORS
public HomePlaylistViewModel()
{
}
#endregion
#region PUBLIC METHODS
public async Task LoadPlaylist(Playlist playlist)
{
Name = playlist.Name;
}
#endregion
#region COMMANDS
#endregion
#region EVENTS
public event EventHandler CloseRequested;
#endregion
}
}

View File

@@ -87,14 +87,6 @@ namespace VDownload.Core.ViewModels.Home
#region EVENTS
public event EventHandler TaskAdded;
#endregion
#region CONSTRUCTORS
public HomeVideoViewModel(IDownloadTaskManager tasksManager, ISettingsService settingsService, IStoragePickerService storagePickerService)
@@ -110,7 +102,7 @@ namespace VDownload.Core.ViewModels.Home
#region PUBLIC METHODS
public async void LoadVideo(Video video)
public async Task LoadVideo(Video video)
{
await _settingsService.Load();
@@ -125,13 +117,13 @@ namespace VDownload.Core.ViewModels.Home
Streams = [.. video.Streams];
SelectedStream = Streams[0];
MediaType = _settingsService.Data.Common.DefaultTaskSettings.MediaType;
MediaType = _settingsService.Data.Common.Tasks.DefaultMediaType;
TrimStart = TimeSpan.Zero;
TrimEnd = Duration;
DirectoryPath = _settingsService.Data.Common.DefaultTaskSettings.OutputDirectory;
DirectoryPath = _settingsService.Data.Common.Tasks.DefaultOutputDirectory;
Filename = Title.Length > 50 ? Title.Substring(0, 50) : Title;
VideoExtension = _settingsService.Data.Common.DefaultTaskSettings.VideoExtension;
AudioExtension = _settingsService.Data.Common.DefaultTaskSettings.AudioExtension;
VideoExtension = _settingsService.Data.Common.Tasks.DefaultVideoExtension;
AudioExtension = _settingsService.Data.Common.Tasks.DefaultAudioExtension;
}
@@ -149,14 +141,14 @@ namespace VDownload.Core.ViewModels.Home
public void CreateTask()
{
_tasksManager.AddTask(_video, BuildDownloadOptions());
TaskAdded?.Invoke(this, EventArgs.Empty);
CloseRequested?.Invoke(this, EventArgs.Empty);
}
[RelayCommand]
public void CreateTaskAndDownload()
{
DownloadTask task = _tasksManager.AddTask(_video, BuildDownloadOptions());
TaskAdded?.Invoke(this, EventArgs.Empty);
CloseRequested?.Invoke(this, EventArgs.Empty);
task.Enqueue();
}
@@ -181,5 +173,13 @@ namespace VDownload.Core.ViewModels.Home
}
#endregion
#region EVENTS
public event EventHandler CloseRequested;
#endregion
}
}

View File

@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VDownload.Core.Tasks;
using VDownload.Models;
using VDownload.Services.Data.Configuration;
using VDownload.Services.Data.Settings;
@@ -42,7 +43,10 @@ namespace VDownload.Core.ViewModels.Home
protected readonly IStringResourcesService _stringResourcesService;
protected readonly ISearchService _searchService;
protected readonly IDownloadTaskManager _downloadTaskManager;
protected readonly HomeVideoViewModel _videoViewModel;
protected readonly HomePlaylistViewModel _playlistViewModel;
#endregion
@@ -52,6 +56,7 @@ namespace VDownload.Core.ViewModels.Home
protected readonly Type _downloadsView = typeof(HomeDownloadsViewModel);
protected readonly Type _videoView = typeof(HomeVideoViewModel);
protected readonly Type _playlistView = typeof(HomePlaylistViewModel);
#endregion
@@ -96,15 +101,20 @@ namespace VDownload.Core.ViewModels.Home
#region CONSTRUCTORS
public HomeViewModel(IConfigurationService configurationService, ISettingsService settingsService, IStringResourcesService stringResourcesService, ISearchService searchService, HomeVideoViewModel videoViewModel)
public HomeViewModel(IConfigurationService configurationService, ISettingsService settingsService, IStringResourcesService stringResourcesService, ISearchService searchService, IDownloadTaskManager downloadTaskManager, HomeVideoViewModel videoViewModel, HomePlaylistViewModel playlistViewModel)
{
_configurationService = configurationService;
_settingsService = settingsService;
_stringResourcesService = stringResourcesService;
_searchService = searchService;
_downloadTaskManager = downloadTaskManager;
_videoViewModel = videoViewModel;
_videoViewModel.TaskAdded += VideoViewModel_TaskAdded;
_videoViewModel.CloseRequested += BackToDownload_EventHandler;
_playlistViewModel = playlistViewModel;
_playlistViewModel.CloseRequested += BackToDownload_EventHandler;
}
#endregion
@@ -195,7 +205,7 @@ namespace VDownload.Core.ViewModels.Home
return;
}
_videoViewModel.LoadVideo(video);
await _videoViewModel.LoadVideo(video);
MainContent = _videoView;
@@ -224,6 +234,10 @@ namespace VDownload.Core.ViewModels.Home
return;
}
await _playlistViewModel.LoadPlaylist(playlist);
MainContent = _playlistView;
OptionBarSearchNotPending = true;
OptionBarLoading = false;
OptionBarMessage = null;
@@ -232,7 +246,10 @@ namespace VDownload.Core.ViewModels.Home
[RelayCommand]
public void Download()
{
foreach (DownloadTask task in _downloadTaskManager.Tasks)
{
task.Enqueue();
}
}
#endregion
@@ -241,7 +258,7 @@ namespace VDownload.Core.ViewModels.Home
#region PRIVATE METHODS
private async void VideoViewModel_TaskAdded(object sender, EventArgs e) => await Navigation();
private async void BackToDownload_EventHandler(object sender, EventArgs e) => await Navigation();
#endregion
}

View File

@@ -12,6 +12,7 @@
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.4.240211001" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.2428" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
<PackageReference Include="SimpleToolkit.UI.Models" Version="1.4.0" />
</ItemGroup>
<ItemGroup>
@@ -23,7 +24,6 @@
<ProjectReference Include="..\..\VDownload.Services\VDownload.Services.UI\VDownload.Services.UI.WebView\VDownload.Services.UI.WebView.csproj" />
<ProjectReference Include="..\..\VDownload.Sources\VDownload.Sources.Twitch\VDownload.Sources.Twitch.Authentication\VDownload.Sources.Twitch.Authentication.csproj" />
<ProjectReference Include="..\..\VDownload.Sources\VDownload.Sources\VDownload.Sources.csproj" />
<ProjectReference Include="..\..\VDownload.Toolkit\VDownload.Toolkit.UI\VDownload.Toolkit.UI.Models\VDownload.Toolkit.UI.Models.csproj" />
<ProjectReference Include="..\VDownload.Core.Tasks\VDownload.Core.Tasks.csproj" />
</ItemGroup>

View File

@@ -7,7 +7,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:ic="using:Microsoft.Xaml.Interactions.Core"
xmlns:cb="using:VDownload.Toolkit.UI.Behaviors"
xmlns:cb="using:SimpleToolkit.UI.WinUI.Behaviors"
mc:Ignorable="d">
<Window.SystemBackdrop>
<MicaBackdrop Kind="Base"/>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<Page
x:Class="VDownload.Core.Views.Home.HomePlaylistView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:VDownload.Core.Views.Home"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ViewBackgroundColor}">
<Grid Padding="15"
RowSpacing="20">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
VerticalAlignment="Center"
Text="{Binding Name}"
FontWeight="Bold"
FontSize="20"
TextWrapping="WrapWholeWords"/>
<AppBarButton Grid.Column="2"
Margin="-5"
Icon="Filter"
Width="40"
Height="48">
<AppBarButton.Resources>
<TeachingTip x:Name="FilterWindow">
</TeachingTip>
</AppBarButton.Resources>
</AppBarButton>
</Grid>
<ItemsControl Grid.Row="1">
</ItemsControl>
<StackPanel Grid.Row="2"
HorizontalAlignment="Right"
Orientation="Horizontal">
</StackPanel>
</Grid>
</Page>

View File

@@ -0,0 +1,31 @@
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using VDownload.Core.ViewModels.Home;
using Windows.Foundation;
using Windows.Foundation.Collections;
namespace VDownload.Core.Views.Home
{
public sealed partial class HomePlaylistView : Page
{
#region CONSTRUCTORS
public HomePlaylistView(HomePlaylistViewModel viewModel)
{
this.InitializeComponent();
this.DataContext = viewModel;
}
#endregion
}
}

View File

@@ -12,7 +12,7 @@
xmlns:ct="using:CommunityToolkit.WinUI"
xmlns:ctc="using:CommunityToolkit.WinUI.Controls"
xmlns:ctuc="using:CommunityToolkit.WinUI.UI.Controls"
xmlns:c="using:VDownload.Toolkit.UI.Controls"
xmlns:c="using:SimpleToolkit.UI.WinUI.Controls"
mc:Ignorable="d"
Background="{ThemeResource ViewBackgroundColor}">

View File

@@ -7,6 +7,9 @@
<UseWinUI>true</UseWinUI>
<UseRidGraph>true</UseRidGraph>
</PropertyGroup>
<ItemGroup>
<None Remove="Home\HomePlaylistView.xaml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.WinUI" Version="7.1.2" />
@@ -16,11 +19,11 @@
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.4.240211001" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.2428" />
<PackageReference Include="Microsoft.Xaml.Behaviors.WinUI.Managed" Version="2.0.9" />
<PackageReference Include="SimpleToolkit.UI.WinUI.Behaviors" Version="1.4.0" />
<PackageReference Include="SimpleToolkit.UI.WinUI.Controls" Version="1.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\VDownload.Toolkit\VDownload.Toolkit.UI\VDownload.Toolkit.UI.Behaviors\VDownload.Toolkit.UI.Behaviors.csproj" />
<ProjectReference Include="..\..\VDownload.Toolkit\VDownload.Toolkit.UI\VDownload.Toolkit.UI.Controls\VDownload.Toolkit.UI.Controls.csproj" />
<ProjectReference Include="..\VDownload.Core.Strings\VDownload.Core.Strings.csproj" />
<ProjectReference Include="..\VDownload.Core.ViewModels\VDownload.Core.ViewModels.csproj" />
</ItemGroup>
@@ -35,6 +38,9 @@
<None Update="Home\HomeDownloadsView.xaml">
<Generator>MSBuild:Compile</Generator>
</None>
<Page Update="Home\HomePlaylistView.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
<None Update="Home\HomeVideoView.xaml">
<Generator>MSBuild:Compile</Generator>
</None>

View File

@@ -20,6 +20,7 @@ namespace VDownload.Core.Views
{ typeof(HomeViewModel), typeof(HomeView) },
{ typeof(HomeDownloadsViewModel), typeof(HomeDownloadsView) },
{ typeof(HomeVideoViewModel), typeof(HomeVideoView) },
{ typeof(HomePlaylistViewModel), typeof(HomePlaylistView) },
{ typeof(SettingsViewModel), typeof(SettingsView) },
{ typeof(AuthenticationViewModel), typeof(AuthenticationView) }
};