mirror of https://github.com/leiurayer/downkyi
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
729 lines
26 KiB
729 lines
26 KiB
using DownKyi.Core.Aria2cNet.Server;
|
|
using DownKyi.Core.Settings;
|
|
using DownKyi.Core.Utils.Validator;
|
|
using DownKyi.Events;
|
|
using DownKyi.Services;
|
|
using DownKyi.Utils;
|
|
using Prism.Commands;
|
|
using Prism.Events;
|
|
using Prism.Regions;
|
|
using Prism.Services.Dialogs;
|
|
using System.Collections.Generic;
|
|
|
|
namespace DownKyi.ViewModels.Settings
|
|
{
|
|
public class ViewNetworkViewModel : BaseViewModel
|
|
{
|
|
public const string Tag = "PageSettingsNetwork";
|
|
|
|
private bool isOnNavigatedTo;
|
|
|
|
#region 页面属性申明
|
|
|
|
private bool useSSL;
|
|
public bool UseSSL
|
|
{
|
|
get => useSSL;
|
|
set => SetProperty(ref useSSL, value);
|
|
}
|
|
|
|
private bool builtin;
|
|
public bool Builtin
|
|
{
|
|
get => builtin;
|
|
set => SetProperty(ref builtin, value);
|
|
}
|
|
|
|
private bool aria2c;
|
|
public bool Aria2c
|
|
{
|
|
get => aria2c;
|
|
set => SetProperty(ref aria2c, value);
|
|
}
|
|
|
|
private bool customAria2c;
|
|
public bool CustomAria2c
|
|
{
|
|
get => customAria2c;
|
|
set => SetProperty(ref customAria2c, value);
|
|
}
|
|
|
|
private List<int> maxCurrentDownloads;
|
|
public List<int> MaxCurrentDownloads
|
|
{
|
|
get => maxCurrentDownloads;
|
|
set => SetProperty(ref maxCurrentDownloads, value);
|
|
}
|
|
|
|
private int selectedMaxCurrentDownload;
|
|
public int SelectedMaxCurrentDownload
|
|
{
|
|
get => selectedMaxCurrentDownload;
|
|
set => SetProperty(ref selectedMaxCurrentDownload, value);
|
|
}
|
|
|
|
private List<int> splits;
|
|
public List<int> Splits
|
|
{
|
|
get => splits;
|
|
set => SetProperty(ref splits, value);
|
|
}
|
|
|
|
private int selectedSplit;
|
|
public int SelectedSplit
|
|
{
|
|
get => selectedSplit;
|
|
set => SetProperty(ref selectedSplit, value);
|
|
}
|
|
|
|
private bool isHttpProxy;
|
|
public bool IsHttpProxy
|
|
{
|
|
get => isHttpProxy;
|
|
set => SetProperty(ref isHttpProxy, value);
|
|
}
|
|
|
|
private string httpProxy;
|
|
public string HttpProxy
|
|
{
|
|
get => httpProxy;
|
|
set => SetProperty(ref httpProxy, value);
|
|
}
|
|
|
|
private int httpProxyPort;
|
|
public int HttpProxyPort
|
|
{
|
|
get => httpProxyPort;
|
|
set => SetProperty(ref httpProxyPort, value);
|
|
}
|
|
|
|
private string ariaHost;
|
|
public string AriaHost
|
|
{
|
|
get => ariaHost;
|
|
set => SetProperty(ref ariaHost, value);
|
|
}
|
|
|
|
private int ariaListenPort;
|
|
public int AriaListenPort
|
|
{
|
|
get => ariaListenPort;
|
|
set => SetProperty(ref ariaListenPort, value);
|
|
}
|
|
|
|
private string ariaToken;
|
|
public string AriaToken
|
|
{
|
|
get => ariaToken;
|
|
set => SetProperty(ref ariaToken, value);
|
|
}
|
|
|
|
private List<string> ariaLogLevels;
|
|
public List<string> AriaLogLevels
|
|
{
|
|
get => ariaLogLevels;
|
|
set => SetProperty(ref ariaLogLevels, value);
|
|
}
|
|
|
|
private string selectedAriaLogLevel;
|
|
public string SelectedAriaLogLevel
|
|
{
|
|
get => selectedAriaLogLevel;
|
|
set => SetProperty(ref selectedAriaLogLevel, value);
|
|
}
|
|
|
|
private List<int> ariaMaxConcurrentDownloads;
|
|
public List<int> AriaMaxConcurrentDownloads
|
|
{
|
|
get => ariaMaxConcurrentDownloads;
|
|
set => SetProperty(ref ariaMaxConcurrentDownloads, value);
|
|
}
|
|
|
|
private int selectedAriaMaxConcurrentDownload;
|
|
public int SelectedAriaMaxConcurrentDownload
|
|
{
|
|
get => selectedAriaMaxConcurrentDownload;
|
|
set => SetProperty(ref selectedAriaMaxConcurrentDownload, value);
|
|
}
|
|
|
|
private List<int> ariaSplits;
|
|
public List<int> AriaSplits
|
|
{
|
|
get => ariaSplits;
|
|
set => SetProperty(ref ariaSplits, value);
|
|
}
|
|
|
|
private int selectedAriaSplit;
|
|
public int SelectedAriaSplit
|
|
{
|
|
get => selectedAriaSplit;
|
|
set => SetProperty(ref selectedAriaSplit, value);
|
|
}
|
|
|
|
private int ariaMaxOverallDownloadLimit;
|
|
public int AriaMaxOverallDownloadLimit
|
|
{
|
|
get => ariaMaxOverallDownloadLimit;
|
|
set => SetProperty(ref ariaMaxOverallDownloadLimit, value);
|
|
}
|
|
|
|
private int ariaMaxDownloadLimit;
|
|
public int AriaMaxDownloadLimit
|
|
{
|
|
get => ariaMaxDownloadLimit;
|
|
set => SetProperty(ref ariaMaxDownloadLimit, value);
|
|
}
|
|
|
|
private bool isAriaHttpProxy;
|
|
public bool IsAriaHttpProxy
|
|
{
|
|
get => isAriaHttpProxy;
|
|
set => SetProperty(ref isAriaHttpProxy, value);
|
|
}
|
|
|
|
private string ariaHttpProxy;
|
|
public string AriaHttpProxy
|
|
{
|
|
get => ariaHttpProxy;
|
|
set => SetProperty(ref ariaHttpProxy, value);
|
|
}
|
|
|
|
private int ariaHttpProxyPort;
|
|
public int AriaHttpProxyPort
|
|
{
|
|
get => ariaHttpProxyPort;
|
|
set => SetProperty(ref ariaHttpProxyPort, value);
|
|
}
|
|
|
|
private List<string> ariaFileAllocations;
|
|
public List<string> AriaFileAllocations
|
|
{
|
|
get => ariaFileAllocations;
|
|
set => SetProperty(ref ariaFileAllocations, value);
|
|
}
|
|
|
|
private string selectedAriaFileAllocation;
|
|
public string SelectedAriaFileAllocation
|
|
{
|
|
get => selectedAriaFileAllocation;
|
|
set => SetProperty(ref selectedAriaFileAllocation, value);
|
|
}
|
|
|
|
#endregion
|
|
|
|
public ViewNetworkViewModel(IEventAggregator eventAggregator, IDialogService dialogService) : base(eventAggregator, dialogService)
|
|
{
|
|
|
|
#region 属性初始化
|
|
|
|
// builtin同时下载数
|
|
MaxCurrentDownloads = new List<int>();
|
|
for (int i = 1; i <= 10; i++) { MaxCurrentDownloads.Add(i); }
|
|
|
|
// builtin最大线程数
|
|
Splits = new List<int>();
|
|
for (int i = 1; i <= 10; i++) { Splits.Add(i); }
|
|
|
|
// Aria的日志等级
|
|
AriaLogLevels = new List<string>
|
|
{
|
|
"DEBUG",
|
|
"INFO",
|
|
"NOTICE",
|
|
"WARN",
|
|
"ERROR"
|
|
};
|
|
|
|
// Aria同时下载数
|
|
AriaMaxConcurrentDownloads = new List<int>();
|
|
for (int i = 1; i <= 10; i++) { AriaMaxConcurrentDownloads.Add(i); }
|
|
|
|
// Aria最大线程数
|
|
AriaSplits = new List<int>();
|
|
for (int i = 1; i <= 10; i++) { AriaSplits.Add(i); }
|
|
|
|
// Aria文件预分配
|
|
AriaFileAllocations = new List<string>
|
|
{
|
|
"NONE",
|
|
"PREALLOC",
|
|
"FALLOC"
|
|
};
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导航到页面时执行
|
|
/// </summary>
|
|
/// <param name="navigationContext"></param>
|
|
public override void OnNavigatedTo(NavigationContext navigationContext)
|
|
{
|
|
base.OnNavigatedTo(navigationContext);
|
|
|
|
isOnNavigatedTo = true;
|
|
|
|
// 启用https
|
|
AllowStatus useSSL = SettingsManager.GetInstance().UseSSL();
|
|
UseSSL = useSSL == AllowStatus.YES;
|
|
|
|
// 选择下载器
|
|
var downloader = SettingsManager.GetInstance().GetDownloader();
|
|
switch (downloader)
|
|
{
|
|
case Downloader.NOT_SET:
|
|
break;
|
|
case Downloader.BUILT_IN:
|
|
Builtin = true;
|
|
break;
|
|
case Downloader.ARIA:
|
|
Aria2c = true;
|
|
break;
|
|
case Downloader.CUSTOM_ARIA:
|
|
CustomAria2c = true;
|
|
break;
|
|
}
|
|
|
|
// builtin同时下载数
|
|
SelectedMaxCurrentDownload = SettingsManager.GetInstance().GetMaxCurrentDownloads();
|
|
|
|
// builtin最大线程数
|
|
SelectedSplit = SettingsManager.GetInstance().GetSplit();
|
|
|
|
// 是否开启builtin http代理
|
|
AllowStatus isHttpProxy = SettingsManager.GetInstance().IsHttpProxy();
|
|
IsHttpProxy = isHttpProxy == AllowStatus.YES;
|
|
|
|
// builtin的http代理的地址
|
|
HttpProxy = SettingsManager.GetInstance().GetHttpProxy();
|
|
|
|
// builtin的http代理的端口
|
|
HttpProxyPort = SettingsManager.GetInstance().GetHttpProxyListenPort();
|
|
|
|
// Aria服务器host
|
|
AriaHost = SettingsManager.GetInstance().GetAriaHost();
|
|
|
|
// Aria服务器端口
|
|
AriaListenPort = SettingsManager.GetInstance().GetAriaListenPort();
|
|
|
|
// Aria服务器Token
|
|
AriaToken = SettingsManager.GetInstance().GetAriaToken();
|
|
|
|
// Aria的日志等级
|
|
AriaConfigLogLevel ariaLogLevel = SettingsManager.GetInstance().GetAriaLogLevel();
|
|
SelectedAriaLogLevel = ariaLogLevel.ToString("G");
|
|
|
|
// Aria同时下载数
|
|
SelectedAriaMaxConcurrentDownload = SettingsManager.GetInstance().GetMaxCurrentDownloads();
|
|
|
|
// Aria最大线程数
|
|
SelectedAriaSplit = SettingsManager.GetInstance().GetAriaSplit();
|
|
|
|
// Aria下载速度限制
|
|
AriaMaxOverallDownloadLimit = SettingsManager.GetInstance().GetAriaMaxOverallDownloadLimit();
|
|
|
|
// Aria下载单文件速度限制
|
|
AriaMaxDownloadLimit = SettingsManager.GetInstance().GetAriaMaxDownloadLimit();
|
|
|
|
// 是否开启Aria http代理
|
|
AllowStatus isAriaHttpProxy = SettingsManager.GetInstance().IsAriaHttpProxy();
|
|
IsAriaHttpProxy = isAriaHttpProxy == AllowStatus.YES;
|
|
|
|
// Aria的http代理的地址
|
|
AriaHttpProxy = SettingsManager.GetInstance().GetAriaHttpProxy();
|
|
|
|
// Aria的http代理的端口
|
|
AriaHttpProxyPort = SettingsManager.GetInstance().GetAriaHttpProxyListenPort();
|
|
|
|
// Aria文件预分配
|
|
AriaConfigFileAllocation ariaFileAllocation = SettingsManager.GetInstance().GetAriaFileAllocation();
|
|
SelectedAriaFileAllocation = ariaFileAllocation.ToString("G");
|
|
|
|
isOnNavigatedTo = false;
|
|
}
|
|
|
|
#region 命令申明
|
|
|
|
// 是否启用https事件
|
|
private DelegateCommand useSSLCommand;
|
|
public DelegateCommand UseSSLCommand => useSSLCommand ?? (useSSLCommand = new DelegateCommand(ExecuteUseSSLCommand));
|
|
|
|
/// <summary>
|
|
/// 是否启用https事件
|
|
/// </summary>
|
|
private void ExecuteUseSSLCommand()
|
|
{
|
|
AllowStatus useSSL = UseSSL ? AllowStatus.YES : AllowStatus.NO;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().UseSSL(useSSL);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// 下载器选择事件
|
|
private DelegateCommand<string> selectDownloaderCommand;
|
|
public DelegateCommand<string> SelectDownloaderCommand => selectDownloaderCommand ?? (selectDownloaderCommand = new DelegateCommand<string>(ExecuteSelectDownloaderCommand));
|
|
|
|
/// <summary>
|
|
/// 下载器选择事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteSelectDownloaderCommand(string parameter)
|
|
{
|
|
Downloader downloader;
|
|
switch (parameter)
|
|
{
|
|
case "Builtin":
|
|
downloader = Downloader.BUILT_IN;
|
|
break;
|
|
case "Aria2c":
|
|
downloader = Downloader.ARIA;
|
|
break;
|
|
case "CustomAria2c":
|
|
downloader = Downloader.CUSTOM_ARIA;
|
|
break;
|
|
default:
|
|
downloader = SettingsManager.GetInstance().GetDownloader();
|
|
break;
|
|
}
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetDownloader(downloader);
|
|
PublishTip(isSucceed);
|
|
|
|
AlertService alertService = new AlertService(dialogService);
|
|
ButtonResult result = alertService.ShowInfo(DictionaryResource.GetString("ConfirmReboot"));
|
|
if (result == ButtonResult.OK)
|
|
{
|
|
System.Windows.Application.Current.Shutdown();
|
|
System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location);
|
|
}
|
|
}
|
|
|
|
// builtin同时下载数事件
|
|
private DelegateCommand<object> maxCurrentDownloadsCommand;
|
|
public DelegateCommand<object> MaxCurrentDownloadsCommand => maxCurrentDownloadsCommand ?? (maxCurrentDownloadsCommand = new DelegateCommand<object>(ExecuteMaxCurrentDownloadsCommand));
|
|
|
|
/// <summary>
|
|
/// builtin同时下载数事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteMaxCurrentDownloadsCommand(object parameter)
|
|
{
|
|
SelectedMaxCurrentDownload = (int)parameter;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetMaxCurrentDownloads(SelectedMaxCurrentDownload);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// builtin最大线程数事件
|
|
private DelegateCommand<object> splitsCommand;
|
|
public DelegateCommand<object> SplitsCommand => splitsCommand ?? (splitsCommand = new DelegateCommand<object>(ExecuteSplitsCommand));
|
|
|
|
/// <summary>
|
|
/// builtin最大线程数事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteSplitsCommand(object parameter)
|
|
{
|
|
SelectedSplit = (int)parameter;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetSplit(SelectedSplit);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// 是否开启builtin http代理事件
|
|
private DelegateCommand isHttpProxyCommand;
|
|
public DelegateCommand IsHttpProxyCommand => isHttpProxyCommand ?? (isHttpProxyCommand = new DelegateCommand(ExecuteIsHttpProxyCommand));
|
|
|
|
/// <summary>
|
|
/// 是否开启builtin http代理事件
|
|
/// </summary>
|
|
private void ExecuteIsHttpProxyCommand()
|
|
{
|
|
AllowStatus isHttpProxy = IsHttpProxy ? AllowStatus.YES : AllowStatus.NO;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().IsHttpProxy(isHttpProxy);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// builtin的http代理的地址事件
|
|
private DelegateCommand<string> httpProxyCommand;
|
|
public DelegateCommand<string> HttpProxyCommand => httpProxyCommand ?? (httpProxyCommand = new DelegateCommand<string>(ExecuteHttpProxyCommand));
|
|
|
|
/// <summary>
|
|
/// builtin的http代理的地址事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteHttpProxyCommand(string parameter)
|
|
{
|
|
bool isSucceed = SettingsManager.GetInstance().SetHttpProxy(parameter);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// builtin的http代理的端口事件
|
|
private DelegateCommand<string> httpProxyPortCommand;
|
|
public DelegateCommand<string> HttpProxyPortCommand => httpProxyPortCommand ?? (httpProxyPortCommand = new DelegateCommand<string>(ExecuteHttpProxyPortCommand));
|
|
|
|
/// <summary>
|
|
/// builtin的http代理的端口事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteHttpProxyPortCommand(string parameter)
|
|
{
|
|
int httpProxyPort = (int)Number.GetInt(parameter);
|
|
HttpProxyPort = httpProxyPort;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetHttpProxyListenPort(HttpProxyPort);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria服务器host事件
|
|
private DelegateCommand<string> ariaHostCommand;
|
|
public DelegateCommand<string> AriaHostCommand => ariaHostCommand ?? (ariaHostCommand = new DelegateCommand<string>(ExecuteAriaHostCommand));
|
|
|
|
/// <summary>
|
|
/// Aria服务器host事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaHostCommand(string parameter)
|
|
{
|
|
AriaHost = parameter;
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaHost(AriaHost);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria服务器端口事件
|
|
private DelegateCommand<string> ariaListenPortCommand;
|
|
public DelegateCommand<string> AriaListenPortCommand => ariaListenPortCommand ?? (ariaListenPortCommand = new DelegateCommand<string>(ExecuteAriaListenPortCommand));
|
|
|
|
/// <summary>
|
|
/// Aria服务器端口事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaListenPortCommand(string parameter)
|
|
{
|
|
int listenPort = (int)Number.GetInt(parameter);
|
|
AriaListenPort = listenPort;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaListenPort(AriaListenPort);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria服务器token事件
|
|
private DelegateCommand<string> ariaTokenCommand;
|
|
public DelegateCommand<string> AriaTokenCommand => ariaTokenCommand ?? (ariaTokenCommand = new DelegateCommand<string>(ExecuteAriaTokenCommand));
|
|
|
|
/// <summary>
|
|
/// Aria服务器token事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaTokenCommand(string parameter)
|
|
{
|
|
AriaToken = parameter;
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaToken(AriaToken);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria的日志等级事件
|
|
private DelegateCommand<string> ariaLogLevelsCommand;
|
|
public DelegateCommand<string> AriaLogLevelsCommand => ariaLogLevelsCommand ?? (ariaLogLevelsCommand = new DelegateCommand<string>(ExecuteAriaLogLevelsCommand));
|
|
|
|
/// <summary>
|
|
/// Aria的日志等级事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaLogLevelsCommand(string parameter)
|
|
{
|
|
AriaConfigLogLevel ariaLogLevel;
|
|
switch (parameter)
|
|
{
|
|
case "DEBUG":
|
|
ariaLogLevel = AriaConfigLogLevel.DEBUG;
|
|
break;
|
|
case "INFO":
|
|
ariaLogLevel = AriaConfigLogLevel.INFO;
|
|
break;
|
|
case "NOTICE":
|
|
ariaLogLevel = AriaConfigLogLevel.NOTICE;
|
|
break;
|
|
case "WARN":
|
|
ariaLogLevel = AriaConfigLogLevel.WARN;
|
|
break;
|
|
case "ERROR":
|
|
ariaLogLevel = AriaConfigLogLevel.ERROR;
|
|
break;
|
|
default:
|
|
ariaLogLevel = AriaConfigLogLevel.INFO;
|
|
break;
|
|
}
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaLogLevel(ariaLogLevel);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria同时下载数事件
|
|
private DelegateCommand<object> ariaMaxConcurrentDownloadsCommand;
|
|
public DelegateCommand<object> AriaMaxConcurrentDownloadsCommand => ariaMaxConcurrentDownloadsCommand ?? (ariaMaxConcurrentDownloadsCommand = new DelegateCommand<object>(ExecuteAriaMaxConcurrentDownloadsCommand));
|
|
|
|
/// <summary>
|
|
/// Aria同时下载数事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaMaxConcurrentDownloadsCommand(object parameter)
|
|
{
|
|
SelectedAriaMaxConcurrentDownload = (int)parameter;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetMaxCurrentDownloads(SelectedAriaMaxConcurrentDownload);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria最大线程数事件
|
|
private DelegateCommand<object> ariaSplitsCommand;
|
|
public DelegateCommand<object> AriaSplitsCommand => ariaSplitsCommand ?? (ariaSplitsCommand = new DelegateCommand<object>(ExecuteAriaSplitsCommand));
|
|
|
|
/// <summary>
|
|
/// Aria最大线程数事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaSplitsCommand(object parameter)
|
|
{
|
|
SelectedAriaSplit = (int)parameter;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaSplit(SelectedAriaSplit);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria下载速度限制事件
|
|
private DelegateCommand<string> ariaMaxOverallDownloadLimitCommand;
|
|
public DelegateCommand<string> AriaMaxOverallDownloadLimitCommand => ariaMaxOverallDownloadLimitCommand ?? (ariaMaxOverallDownloadLimitCommand = new DelegateCommand<string>(ExecuteAriaMaxOverallDownloadLimitCommand));
|
|
|
|
/// <summary>
|
|
/// Aria下载速度限制事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaMaxOverallDownloadLimitCommand(string parameter)
|
|
{
|
|
int downloadLimit = (int)Number.GetInt(parameter);
|
|
AriaMaxOverallDownloadLimit = downloadLimit;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaMaxOverallDownloadLimit(AriaMaxOverallDownloadLimit);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria下载单文件速度限制事件
|
|
private DelegateCommand<string> ariaMaxDownloadLimitCommand;
|
|
public DelegateCommand<string> AriaMaxDownloadLimitCommand => ariaMaxDownloadLimitCommand ?? (ariaMaxDownloadLimitCommand = new DelegateCommand<string>(ExecuteAriaMaxDownloadLimitCommand));
|
|
|
|
/// <summary>
|
|
/// Aria下载单文件速度限制事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaMaxDownloadLimitCommand(string parameter)
|
|
{
|
|
int downloadLimit = (int)Number.GetInt(parameter);
|
|
AriaMaxDownloadLimit = downloadLimit;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaMaxDownloadLimit(AriaMaxDownloadLimit);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// 是否开启Aria http代理事件
|
|
private DelegateCommand isAriaHttpProxyCommand;
|
|
public DelegateCommand IsAriaHttpProxyCommand => isAriaHttpProxyCommand ?? (isAriaHttpProxyCommand = new DelegateCommand(ExecuteIsAriaHttpProxyCommand));
|
|
|
|
/// <summary>
|
|
/// 是否开启Aria http代理事件
|
|
/// </summary>
|
|
private void ExecuteIsAriaHttpProxyCommand()
|
|
{
|
|
AllowStatus isAriaHttpProxy = IsAriaHttpProxy ? AllowStatus.YES : AllowStatus.NO;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().IsAriaHttpProxy(isAriaHttpProxy);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria的http代理的地址事件
|
|
private DelegateCommand<string> ariaHttpProxyCommand;
|
|
public DelegateCommand<string> AriaHttpProxyCommand => ariaHttpProxyCommand ?? (ariaHttpProxyCommand = new DelegateCommand<string>(ExecuteAriaHttpProxyCommand));
|
|
|
|
/// <summary>
|
|
/// Aria的http代理的地址事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaHttpProxyCommand(string parameter)
|
|
{
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaHttpProxy(parameter);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria的http代理的端口事件
|
|
private DelegateCommand<string> ariaHttpProxyPortCommand;
|
|
public DelegateCommand<string> AriaHttpProxyPortCommand => ariaHttpProxyPortCommand ?? (ariaHttpProxyPortCommand = new DelegateCommand<string>(ExecuteAriaHttpProxyPortCommand));
|
|
|
|
/// <summary>
|
|
/// Aria的http代理的端口事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaHttpProxyPortCommand(string parameter)
|
|
{
|
|
int httpProxyPort = (int)Number.GetInt(parameter);
|
|
AriaHttpProxyPort = httpProxyPort;
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaHttpProxyListenPort(AriaHttpProxyPort);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
// Aria文件预分配事件
|
|
private DelegateCommand<string> ariaFileAllocationsCommand;
|
|
public DelegateCommand<string> AriaFileAllocationsCommand => ariaFileAllocationsCommand ?? (ariaFileAllocationsCommand = new DelegateCommand<string>(ExecuteAriaFileAllocationsCommand));
|
|
|
|
/// <summary>
|
|
/// Aria文件预分配事件
|
|
/// </summary>
|
|
/// <param name="parameter"></param>
|
|
private void ExecuteAriaFileAllocationsCommand(string parameter)
|
|
{
|
|
AriaConfigFileAllocation ariaFileAllocation;
|
|
switch (parameter)
|
|
{
|
|
case "NONE":
|
|
ariaFileAllocation = AriaConfigFileAllocation.NONE;
|
|
break;
|
|
case "PREALLOC":
|
|
ariaFileAllocation = AriaConfigFileAllocation.PREALLOC;
|
|
break;
|
|
case "FALLOC":
|
|
ariaFileAllocation = AriaConfigFileAllocation.FALLOC;
|
|
break;
|
|
default:
|
|
ariaFileAllocation = AriaConfigFileAllocation.PREALLOC;
|
|
break;
|
|
}
|
|
|
|
bool isSucceed = SettingsManager.GetInstance().SetAriaFileAllocation(ariaFileAllocation);
|
|
PublishTip(isSucceed);
|
|
}
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 发送需要显示的tip
|
|
/// </summary>
|
|
/// <param name="isSucceed"></param>
|
|
private void PublishTip(bool isSucceed)
|
|
{
|
|
if (isOnNavigatedTo) { return; }
|
|
|
|
if (isSucceed)
|
|
{
|
|
eventAggregator.GetEvent<MessageEvent>().Publish(DictionaryResource.GetString("TipSettingUpdated"));
|
|
}
|
|
else
|
|
{
|
|
eventAggregator.GetEvent<MessageEvent>().Publish(DictionaryResource.GetString("TipSettingFailed"));
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|