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.
88 lines
3.4 KiB
88 lines
3.4 KiB
using AIK.Common.Enum;
|
|
using AIK.Common.IconString;
|
|
using AIK.Common.Interface;
|
|
using AIK.Models;
|
|
using AIK.Models.SystemSettings;
|
|
using AIK.Models.VideoModels;
|
|
using AIK.Service.IService;
|
|
using AIK.ViewModels.Messages;
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using CommunityToolkit.Mvvm.Messaging;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
|
|
namespace AIK.ViewModels
|
|
{
|
|
public partial class SettingsViewModel : ObservableObject
|
|
{
|
|
private readonly IConfigurationService _configurationService;
|
|
private readonly ILocalizationService _localizationService;
|
|
private readonly IDataCacheService _dataCacheService;
|
|
[ObservableProperty]
|
|
private string _language;
|
|
[ObservableProperty]
|
|
private LanguageItems _selectedLanguage;
|
|
private ObservableCollection<LanguageItems> _supLanguageItems;
|
|
private readonly IModalDialogService _modalDialogService;
|
|
public ObservableCollection<LanguageItems> SupLanguageItems
|
|
{
|
|
get => _supLanguageItems;
|
|
set => SetProperty(ref _supLanguageItems, value);
|
|
}
|
|
private readonly ISettingsService _settingsService;
|
|
public SettingsViewModel(IConfigurationService configurationService, ILocalizationService localizationService, IDataCacheService dataCacheService, IModalDialogService modalDialogService, ISettingsService settingsService)
|
|
{
|
|
_settingsService = settingsService;
|
|
_configurationService = configurationService;
|
|
_localizationService = localizationService;
|
|
SupLanguageItems = new ObservableCollection<LanguageItems>(_localizationService.SupportedLanguages);
|
|
_selectedLanguage = SupLanguageItems.FirstOrDefault(a => a.Code == _settingsService.Load().Language);
|
|
_dataCacheService = dataCacheService;
|
|
_modalDialogService = modalDialogService;
|
|
|
|
}
|
|
#region 通知
|
|
partial void OnSelectedLanguageChanged(LanguageItems value)
|
|
{
|
|
if (value != null)
|
|
{
|
|
_dataCacheService.ClearAllAsync();//清理缓存
|
|
_localizationService.SetLanguage(SelectedLanguage.Code);
|
|
_settingsService.Save(new Common.Language.UserPreferences() { Language = value.Code });
|
|
_configurationService.UpdateLanguageAsync(SelectedLanguage.Code);
|
|
WeakReferenceMessenger.Default.Send(new LocalLanguageMessage(value));
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
#region 页面方法
|
|
//[RelayCommand](弃用)
|
|
//public void SelectedLanguage(LanguageItems language)
|
|
//{
|
|
// Language = language.Code;
|
|
//}
|
|
[RelayCommand]
|
|
public void ClearAllCache()
|
|
{
|
|
_dataCacheService.ClearAllAsync();
|
|
_modalDialogService.ShowDialogAsync("提示", "清除缓存完成", MessageTypeEnum.Success, true, true, 3000);
|
|
// 重启
|
|
Process.Start(new ProcessStartInfo
|
|
{
|
|
FileName = System.Reflection.Assembly.GetEntryAssembly()?.Location,
|
|
UseShellExecute = true
|
|
});
|
|
|
|
Application.Current.Shutdown();
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
|