metered connection warnings added

This commit is contained in:
2024-03-04 00:28:32 +01:00
Unverified
parent 2edca7e564
commit 3ddb8e73e3
12 changed files with 298 additions and 21 deletions

View File

@@ -10,8 +10,11 @@ using System.Threading.Tasks;
using VDownload.Core.Tasks;
using VDownload.Models;
using VDownload.Services.Data.Settings;
using VDownload.Services.UI.Dialogs;
using VDownload.Services.UI.StoragePicker;
using VDownload.Services.UI.StringResources;
using VDownload.Services.Utility.Filename;
using VDownload.Services.Utility.Network;
namespace VDownload.Core.ViewModels.Home
{
@@ -24,6 +27,9 @@ namespace VDownload.Core.ViewModels.Home
protected readonly ISettingsService _settingsService;
protected readonly IStoragePickerService _storagePickerService;
protected readonly IFilenameService _filenameService;
protected readonly INetworkService _networkService;
protected readonly IDialogsService _dialogsService;
protected readonly IStringResourcesService _stringResourcesService;
#endregion
@@ -91,12 +97,15 @@ namespace VDownload.Core.ViewModels.Home
#region CONSTRUCTORS
public HomeVideoViewModel(IDownloadTaskManager tasksManager, ISettingsService settingsService, IStoragePickerService storagePickerService, IFilenameService filenameService)
public HomeVideoViewModel(IDownloadTaskManager tasksManager, ISettingsService settingsService, IStoragePickerService storagePickerService, IFilenameService filenameService, INetworkService networkService, IDialogsService dialogsService, IStringResourcesService stringResourcesService)
{
_tasksManager = tasksManager;
_settingsService = settingsService;
_storagePickerService = storagePickerService;
_filenameService = filenameService;
_networkService = networkService;
_dialogsService = dialogsService;
_stringResourcesService = stringResourcesService;
}
#endregion
@@ -141,19 +150,10 @@ namespace VDownload.Core.ViewModels.Home
}
[RelayCommand]
public void CreateTask()
{
_tasksManager.AddTask(_video, BuildDownloadOptions());
CloseRequested?.Invoke(this, EventArgs.Empty);
}
public async Task CreateTask() => await CreateTask(false);
[RelayCommand]
public void CreateTaskAndDownload()
{
DownloadTask task = _tasksManager.AddTask(_video, BuildDownloadOptions());
CloseRequested?.Invoke(this, EventArgs.Empty);
task.Enqueue();
}
public async Task CreateTaskAndDownload() => await CreateTask(true);
#endregion
@@ -161,6 +161,24 @@ namespace VDownload.Core.ViewModels.Home
#region PRIVATE METHODS
protected async Task CreateTask(bool download)
{
if (download && _networkService.IsMetered)
{
string title = _stringResourcesService.CommonResources.Get("StartAtMeteredConnectionDialogTitle");
string message = _stringResourcesService.CommonResources.Get("StartAtMeteredConnectionDialogMessage");
DialogResultYesNo result = await _dialogsService.ShowYesNo(title, message);
download = result == DialogResultYesNo.Yes;
}
DownloadTask task = _tasksManager.AddTask(_video, BuildDownloadOptions());
CloseRequested?.Invoke(this, EventArgs.Empty);
if (download)
{
task.Enqueue();
}
}
protected VideoDownloadOptions BuildDownloadOptions()
{
return new VideoDownloadOptions(Duration)