using DownKyi.Core.Settings; using DownKyi.Events; using DownKyi.Models; using DownKyi.Utils; using Prism.Commands; using Prism.Events; using Prism.Regions; using Prism.Services.Dialogs; namespace DownKyi.ViewModels.Settings { public class ViewAboutViewModel : BaseViewModel { public const string Tag = "PageSettingsAbout"; private bool isOnNavigatedTo; #region 页面属性申明 private string appName; public string AppName { get { return appName; } set { SetProperty(ref appName, value); } } private string appVersion; public string AppVersion { get { return appVersion; } set { SetProperty(ref appVersion, value); } } private bool isReceiveBetaVersion; public bool IsReceiveBetaVersion { get { return isReceiveBetaVersion; } set { SetProperty(ref isReceiveBetaVersion, value); } } private bool autoUpdateWhenLaunch; public bool AutoUpdateWhenLaunch { get { return autoUpdateWhenLaunch; } set { SetProperty(ref autoUpdateWhenLaunch, value); } } #endregion public ViewAboutViewModel(IEventAggregator eventAggregator, IDialogService dialogService) : base(eventAggregator, dialogService) { #region 属性初始化 AppInfo app = new AppInfo(); AppName = app.Name; AppVersion = app.VersionName; #endregion } /// /// 导航到页面时执行 /// /// public override void OnNavigatedTo(NavigationContext navigationContext) { base.OnNavigatedTo(navigationContext); isOnNavigatedTo = true; // 是否接收测试版更新 var isReceiveBetaVersion = SettingsManager.GetInstance().IsReceiveBetaVersion(); IsReceiveBetaVersion = isReceiveBetaVersion == AllowStatus.YES; // 是否在启动时自动检查更新 var isAutoUpdateWhenLaunch = SettingsManager.GetInstance().GetAutoUpdateWhenLaunch(); AutoUpdateWhenLaunch = isAutoUpdateWhenLaunch == AllowStatus.YES; isOnNavigatedTo = false; } #region 命令申明 // 访问主页事件 private DelegateCommand appNameCommand; public DelegateCommand AppNameCommand => appNameCommand ?? (appNameCommand = new DelegateCommand(ExecuteAppNameCommand)); /// /// 访问主页事件 /// private void ExecuteAppNameCommand() { System.Diagnostics.Process.Start("https://github.com/leiurayer/downkyi"); } // 检查更新事件 private DelegateCommand checkUpdateCommand; public DelegateCommand CheckUpdateCommand => checkUpdateCommand ?? (checkUpdateCommand = new DelegateCommand(ExecuteCheckUpdateCommand)); /// /// 检查更新事件 /// private void ExecuteCheckUpdateCommand() { //eventAggregator.GetEvent().Publish("开始查找更新,请稍后~"); eventAggregator.GetEvent().Publish("请前往主页下载最新版~"); } // 意见反馈事件 private DelegateCommand feedbackCommand; public DelegateCommand FeedbackCommand => feedbackCommand ?? (feedbackCommand = new DelegateCommand(ExecuteFeedbackCommand)); /// /// 意见反馈事件 /// private void ExecuteFeedbackCommand() { System.Diagnostics.Process.Start("https://github.com/leiurayer/downkyi/issues"); } // 是否接收测试版更新事件 private DelegateCommand receiveBetaVersionCommand; public DelegateCommand ReceiveBetaVersionCommand => receiveBetaVersionCommand ?? (receiveBetaVersionCommand = new DelegateCommand(ExecuteReceiveBetaVersionCommand)); /// /// 是否接收测试版更新事件 /// private void ExecuteReceiveBetaVersionCommand() { AllowStatus isReceiveBetaVersion = IsReceiveBetaVersion ? AllowStatus.YES : AllowStatus.NO; bool isSucceed = SettingsManager.GetInstance().IsReceiveBetaVersion(isReceiveBetaVersion); PublishTip(isSucceed); } // 是否在启动时自动检查更新事件 private DelegateCommand autoUpdateWhenLaunchCommand; public DelegateCommand AutoUpdateWhenLaunchCommand => autoUpdateWhenLaunchCommand ?? (autoUpdateWhenLaunchCommand = new DelegateCommand(ExecuteAutoUpdateWhenLaunchCommand)); /// /// 是否在启动时自动检查更新事件 /// private void ExecuteAutoUpdateWhenLaunchCommand() { AllowStatus isAutoUpdateWhenLaunch = AutoUpdateWhenLaunch ? AllowStatus.YES : AllowStatus.NO; bool isSucceed = SettingsManager.GetInstance().SetAutoUpdateWhenLaunch(isAutoUpdateWhenLaunch); PublishTip(isSucceed); } // Brotli.NET许可证查看事件 private DelegateCommand brotliLicenseCommand; public DelegateCommand BrotliLicenseCommand => brotliLicenseCommand ?? (brotliLicenseCommand = new DelegateCommand(ExecuteBrotliLicenseCommand)); /// /// Brotli.NET许可证查看事件 /// private void ExecuteBrotliLicenseCommand() { System.Diagnostics.Process.Start("https://licenses.nuget.org/MIT"); } // Google.Protobuf许可证查看事件 private DelegateCommand protobufLicenseCommand; public DelegateCommand ProtobufLicenseCommand => protobufLicenseCommand ?? (protobufLicenseCommand = new DelegateCommand(ExecuteProtobufLicenseCommand)); /// /// Google.Protobuf许可证查看事件 /// private void ExecuteProtobufLicenseCommand() { System.Diagnostics.Process.Start("https://github.com/protocolbuffers/protobuf/blob/master/LICENSE"); } // Newtonsoft.Json许可证查看事件 private DelegateCommand newtonsoftLicenseCommand; public DelegateCommand NewtonsoftLicenseCommand => newtonsoftLicenseCommand ?? (newtonsoftLicenseCommand = new DelegateCommand(ExecuteNewtonsoftLicenseCommand)); /// /// Newtonsoft.Json许可证查看事件 /// private void ExecuteNewtonsoftLicenseCommand() { System.Diagnostics.Process.Start("https://licenses.nuget.org/MIT"); } // Prism.DryIoc许可证查看事件 private DelegateCommand prismLicenseCommand; public DelegateCommand PrismLicenseCommand => prismLicenseCommand ?? (prismLicenseCommand = new DelegateCommand(ExecutePrismLicenseCommand)); /// /// Prism.DryIoc许可证查看事件 /// private void ExecutePrismLicenseCommand() { System.Diagnostics.Process.Start("https://www.nuget.org/packages/Prism.DryIoc/8.1.97/license"); } // QRCoder许可证查看事件 private DelegateCommand qRCoderLicenseCommand; public DelegateCommand QRCoderLicenseCommand => qRCoderLicenseCommand ?? (qRCoderLicenseCommand = new DelegateCommand(ExecuteQRCoderLicenseCommand)); /// /// QRCoder许可证查看事件 /// private void ExecuteQRCoderLicenseCommand() { System.Diagnostics.Process.Start("https://licenses.nuget.org/MIT"); } // System.Data.SQLite.Core许可证查看事件 private DelegateCommand sQLiteLicenseCommand; public DelegateCommand SQLiteLicenseCommand => sQLiteLicenseCommand ?? (sQLiteLicenseCommand = new DelegateCommand(ExecuteSQLiteLicenseCommand)); /// /// System.Data.SQLite.Core许可证查看事件 /// private void ExecuteSQLiteLicenseCommand() { System.Diagnostics.Process.Start("https://www.sqlite.org/copyright.html"); } // Aria2c许可证查看事件 private DelegateCommand ariaLicenseCommand; public DelegateCommand AriaLicenseCommand => ariaLicenseCommand ?? (ariaLicenseCommand = new DelegateCommand(ExecuteAriaLicenseCommand)); /// /// Aria2c许可证查看事件 /// private void ExecuteAriaLicenseCommand() { System.Diagnostics.Process.Start("aria2_COPYING.txt"); } // FFmpeg许可证查看事件 private DelegateCommand fFmpegLicenseCommand; public DelegateCommand FFmpegLicenseCommand => fFmpegLicenseCommand ?? (fFmpegLicenseCommand = new DelegateCommand(ExecuteFFmpegLicenseCommand)); /// /// FFmpeg许可证查看事件 /// private void ExecuteFFmpegLicenseCommand() { System.Diagnostics.Process.Start("FFmpeg_LICENSE.txt"); } #endregion /// /// 发送需要显示的tip /// /// private void PublishTip(bool isSucceed) { if (isOnNavigatedTo) { return; } if (isSucceed) { eventAggregator.GetEvent().Publish(DictionaryResource.GetString("TipSettingUpdated")); } else { eventAggregator.GetEvent().Publish(DictionaryResource.GetString("TipSettingFailed")); } } } }