mirror of
https://github.com/lantean-code/qbtmud.git
synced 2025-10-23 04:52:22 +00:00
414 lines
16 KiB
C#
414 lines
16 KiB
C#
using Lantean.QBitTorrentClient.Models;
|
|
|
|
namespace Lantean.QBTMud.Components.Options
|
|
{
|
|
public partial class DownloadsOptions : Options
|
|
{
|
|
protected string? TorrentContentLayout { get; set; }
|
|
protected bool AddToTopOfQueue { get; set; }
|
|
protected bool AddStoppedEnabled { get; set; }
|
|
protected string? TorrentStopCondition { get; set; }
|
|
protected bool AutoDeleteMode { get; set; }
|
|
protected bool PreallocateAll { get; set; }
|
|
protected bool IncompleteFilesExt { get; set; }
|
|
protected bool AutoTmmEnabled { get; set; }
|
|
protected bool TorrentChangedTmmEnabled { get; set; }
|
|
protected bool SavePathChangedTmmEnabled { get; set; }
|
|
protected bool CategoryChangedTmmEnabled { get; set; }
|
|
protected bool UseSubcategories { get; set; }
|
|
protected string? SavePath { get; set; }
|
|
protected bool TempPathEnabled { get; set; }
|
|
protected string? TempPath { get; set; }
|
|
protected bool ExportDirEnabled { get; set; }
|
|
protected string? ExportDir { get; set; }
|
|
protected bool ExportDirFinEnabled { get; set; }
|
|
protected string? ExportDirFin { get; set; }
|
|
protected Dictionary<string, SaveLocation> ScanDirs { get; set; } = [];
|
|
protected bool ExcludedFileNamesEnabled { get; set; }
|
|
protected string? ExcludedFileNames { get; set; }
|
|
protected bool MailNotificationEnabled { get; set; }
|
|
protected string? MailNotificationSender { get; set; }
|
|
protected string? MailNotificationEmail { get; set; }
|
|
protected string? MailNotificationSmtp { get; set; }
|
|
protected bool MailNotificationSslEnabled { get; set; }
|
|
protected bool MailNotificationAuthEnabled { get; set; }
|
|
protected string? MailNotificationUsername { get; set; }
|
|
protected string? MailNotificationPassword { get; set; }
|
|
protected bool AutorunOnTorrentAddedEnabled { get; set; }
|
|
protected string? AutorunOnTorrentAddedProgram { get; set; }
|
|
protected bool AutorunEnabled { get; set; }
|
|
protected string? AutorunProgram { get; set; }
|
|
|
|
protected List<KeyValuePair<string, SaveLocation>> AddedScanDirs { get; set; } = [];
|
|
|
|
protected override bool SetOptions()
|
|
{
|
|
if (Preferences is null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// when adding a torrent
|
|
TorrentContentLayout = Preferences.TorrentContentLayout;
|
|
AddToTopOfQueue = Preferences.AddToTopOfQueue;
|
|
AddStoppedEnabled = Preferences.AddStoppedEnabled;
|
|
TorrentStopCondition = Preferences.TorrentStopCondition;
|
|
AutoDeleteMode = Preferences.AutoDeleteMode == 1;
|
|
PreallocateAll = Preferences.PreallocateAll;
|
|
IncompleteFilesExt = Preferences.IncompleteFilesExt;
|
|
|
|
// saving management
|
|
AutoTmmEnabled = Preferences.AutoTmmEnabled;
|
|
TorrentChangedTmmEnabled = Preferences.TorrentChangedTmmEnabled;
|
|
SavePathChangedTmmEnabled = Preferences.SavePathChangedTmmEnabled;
|
|
CategoryChangedTmmEnabled = Preferences.CategoryChangedTmmEnabled;
|
|
UseSubcategories = Preferences.UseSubcategories;
|
|
SavePath = Preferences.SavePath;
|
|
TempPathEnabled = Preferences.TempPathEnabled;
|
|
TempPath = Preferences.TempPath;
|
|
ExportDir = Preferences.ExportDir;
|
|
ExportDirEnabled = !string.IsNullOrEmpty(Preferences.ExportDir);
|
|
ExportDirFin = Preferences.ExportDirFin;
|
|
ExportDirFinEnabled = !string.IsNullOrEmpty(Preferences.ExportDirFin);
|
|
|
|
ScanDirs.Clear();
|
|
foreach (var dir in Preferences.ScanDirs)
|
|
{
|
|
ScanDirs.Add(dir.Key, dir.Value);
|
|
}
|
|
|
|
ExcludedFileNamesEnabled = Preferences.ExcludedFileNamesEnabled;
|
|
ExcludedFileNames = Preferences.ExcludedFileNames;
|
|
|
|
// email notification
|
|
MailNotificationEnabled = Preferences.MailNotificationEnabled;
|
|
MailNotificationSender = Preferences.MailNotificationSender;
|
|
MailNotificationEmail = Preferences.MailNotificationEmail;
|
|
MailNotificationSmtp = Preferences.MailNotificationSmtp;
|
|
MailNotificationSslEnabled = Preferences.MailNotificationSslEnabled;
|
|
MailNotificationAuthEnabled = Preferences.MailNotificationAuthEnabled;
|
|
MailNotificationUsername = Preferences.MailNotificationUsername;
|
|
MailNotificationPassword = Preferences.MailNotificationPassword;
|
|
|
|
// autorun
|
|
AutorunOnTorrentAddedEnabled = Preferences.AutorunOnTorrentAddedEnabled;
|
|
AutorunOnTorrentAddedProgram = Preferences.AutorunOnTorrentAddedProgram;
|
|
AutorunEnabled = Preferences.AutorunEnabled;
|
|
AutorunProgram = Preferences.AutorunProgram;
|
|
|
|
AddedScanDirs.Clear();
|
|
AddDefaultScanDir();
|
|
|
|
return true;
|
|
}
|
|
|
|
protected async Task TorrentContentLayoutChanged(string value)
|
|
{
|
|
TorrentContentLayout = value;
|
|
UpdatePreferences.TorrentContentLayout = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task AddToTopOfQueueChanged(bool value)
|
|
{
|
|
AddToTopOfQueue = value;
|
|
UpdatePreferences.AddToTopOfQueue = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task AddStoppedEnabledChanged(bool value)
|
|
{
|
|
AddStoppedEnabled = value;
|
|
UpdatePreferences.AddStoppedEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task TorrentStopConditionChanged(string value)
|
|
{
|
|
TorrentStopCondition = value;
|
|
UpdatePreferences.TorrentStopCondition = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task AutoDeleteModeChanged(bool value)
|
|
{
|
|
AutoDeleteMode = value;
|
|
UpdatePreferences.AutoDeleteMode = value ? 1 : 0;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task PreallocateAllChanged(bool value)
|
|
{
|
|
PreallocateAll = value;
|
|
UpdatePreferences.PreallocateAll = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task IncompleteFilesExtChanged(bool value)
|
|
{
|
|
IncompleteFilesExt = value;
|
|
UpdatePreferences.IncompleteFilesExt = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task AutoTmmEnabledChanged(bool value)
|
|
{
|
|
AutoTmmEnabled = value;
|
|
UpdatePreferences.AutoTmmEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task TorrentChangedTmmEnabledChanged(bool value)
|
|
{
|
|
TorrentChangedTmmEnabled = value;
|
|
UpdatePreferences.TorrentChangedTmmEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task SavePathChangedTmmEnabledChanged(bool value)
|
|
{
|
|
SavePathChangedTmmEnabled = value;
|
|
UpdatePreferences.SavePathChangedTmmEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task CategoryChangedTmmEnabledChanged(bool value)
|
|
{
|
|
CategoryChangedTmmEnabled = value;
|
|
UpdatePreferences.CategoryChangedTmmEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task UseSubcategoriesChanged(bool value)
|
|
{
|
|
UseSubcategories = value;
|
|
UpdatePreferences.UseSubcategories = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task SavePathChanged(string value)
|
|
{
|
|
SavePath = value;
|
|
UpdatePreferences.SavePath = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task TempPathEnabledChanged(bool value)
|
|
{
|
|
TempPathEnabled = value;
|
|
UpdatePreferences.TempPathEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task TempPathChanged(string value)
|
|
{
|
|
TempPath = value;
|
|
UpdatePreferences.TempPath = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected void ExportDirEnabledChanged(bool value)
|
|
{
|
|
ExportDirEnabled = value;
|
|
}
|
|
|
|
protected async Task ExportDirChanged(string value)
|
|
{
|
|
ExportDir = value;
|
|
UpdatePreferences.ExportDir = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected void ExportDirFinEnabledChanged(bool value)
|
|
{
|
|
ExportDirFinEnabled = value;
|
|
}
|
|
|
|
protected async Task ExportDirFinChanged(string value)
|
|
{
|
|
ExportDirFin = value;
|
|
UpdatePreferences.ExportDirFin = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task ScanDirsKeyChanged(string key, string value)
|
|
{
|
|
if (ScanDirs.Remove(key, out var location))
|
|
{
|
|
ScanDirs[value] = location;
|
|
}
|
|
UpdatePreferences.ScanDirs = ScanDirs;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task ScanDirsValueChanged(string key, string value)
|
|
{
|
|
ScanDirs[key] = SaveLocation.Create(value);
|
|
UpdatePreferences.ScanDirs = ScanDirs;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task AddedScanDirsKeyChanged(int index, string key)
|
|
{
|
|
if (key == "")
|
|
{
|
|
return;
|
|
}
|
|
|
|
ScanDirs.Add(key, AddedScanDirs[index].Value);
|
|
AddedScanDirs.RemoveAt(index);
|
|
UpdatePreferences.ScanDirs = ScanDirs;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
|
|
#pragma warning disable S2583 // Conditionally executed code should be reachable
|
|
if (AddedScanDirs.Count == 0)
|
|
{
|
|
AddDefaultScanDir();
|
|
}
|
|
#pragma warning restore S2583 // Conditionally executed code should be reachable
|
|
}
|
|
|
|
protected void AddedScanDirsValueChanged(int index, string value)
|
|
{
|
|
var existing = AddedScanDirs[index];
|
|
AddedScanDirs[index] = new KeyValuePair<string, SaveLocation>(existing.Key, SaveLocation.Create(value));
|
|
}
|
|
|
|
protected void AddNewScanDir()
|
|
{
|
|
AddDefaultScanDir();
|
|
}
|
|
|
|
protected void RemoveAddedScanDir(int index)
|
|
{
|
|
AddedScanDirs.RemoveAt(index);
|
|
}
|
|
|
|
protected async Task RemoveExistingScanDir(string key)
|
|
{
|
|
ScanDirs.Remove(key);
|
|
UpdatePreferences.ScanDirs = ScanDirs;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task ExcludedFileNamesEnabledChanged(bool value)
|
|
{
|
|
ExcludedFileNamesEnabled = value;
|
|
UpdatePreferences.ExcludedFileNamesEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task ExcludedFileNamesChanged(string value)
|
|
{
|
|
ExcludedFileNames = value;
|
|
UpdatePreferences.ExcludedFileNames = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task MailNotificationEnabledChanged(bool value)
|
|
{
|
|
MailNotificationEnabled = value;
|
|
UpdatePreferences.MailNotificationEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task MailNotificationSenderChanged(string value)
|
|
{
|
|
MailNotificationSender = value;
|
|
UpdatePreferences.MailNotificationSender = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task MailNotificationEmailChanged(string value)
|
|
{
|
|
MailNotificationEmail = value;
|
|
UpdatePreferences.MailNotificationEmail = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task MailNotificationSmtpChanged(string value)
|
|
{
|
|
MailNotificationSmtp = value;
|
|
UpdatePreferences.MailNotificationSmtp = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task MailNotificationSslEnabledChanged(bool value)
|
|
{
|
|
MailNotificationSslEnabled = value;
|
|
UpdatePreferences.MailNotificationSslEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task MailNotificationAuthEnabledChanged(bool value)
|
|
{
|
|
MailNotificationAuthEnabled = value;
|
|
UpdatePreferences.MailNotificationAuthEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task MailNotificationUsernameChanged(string value)
|
|
{
|
|
MailNotificationUsername = value;
|
|
UpdatePreferences.MailNotificationUsername = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task MailNotificationPasswordChanged(string value)
|
|
{
|
|
MailNotificationPassword = value;
|
|
UpdatePreferences.MailNotificationPassword = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task AutorunOnTorrentAddedEnabledChanged(bool value)
|
|
{
|
|
AutorunOnTorrentAddedEnabled = value;
|
|
UpdatePreferences.AutorunOnTorrentAddedEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task AutorunOnTorrentAddedProgramChanged(string value)
|
|
{
|
|
AutorunOnTorrentAddedProgram = value;
|
|
UpdatePreferences.AutorunOnTorrentAddedProgram = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task AutorunEnabledChanged(bool value)
|
|
{
|
|
AutorunEnabled = value;
|
|
UpdatePreferences.AutorunEnabled = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
protected async Task AutorunProgramChanged(string value)
|
|
{
|
|
AutorunProgram = value;
|
|
UpdatePreferences.AutorunProgram = value;
|
|
await PreferencesChanged.InvokeAsync(UpdatePreferences);
|
|
}
|
|
|
|
private void AddDefaultScanDir()
|
|
{
|
|
AddedScanDirs.Add(new KeyValuePair<string, SaveLocation>("", SaveLocation.Create(1)));
|
|
}
|
|
|
|
protected Func<string, string?> IsValidNewKey => IsValidNewKeyFunc;
|
|
|
|
private string? IsValidNewKeyFunc(string? key)
|
|
{
|
|
if (key is null)
|
|
{
|
|
return null;
|
|
}
|
|
if (ScanDirs.ContainsKey(key))
|
|
{
|
|
return "A folder with this path already exists";
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|