2025-07-06 11:09:57 +08:00
|
|
|
using CommunityToolkit.Mvvm.Input;
|
2025-10-04 18:42:12 +08:00
|
|
|
using DMS.Application.Configurations;
|
2025-07-19 22:29:50 +08:00
|
|
|
using DMS.WPF.Helper;
|
2025-10-02 12:35:42 +08:00
|
|
|
using DMS.WPF.Interfaces;
|
2025-07-06 11:09:57 +08:00
|
|
|
|
2025-07-19 11:11:01 +08:00
|
|
|
namespace DMS.WPF.ViewModels;
|
2025-06-23 13:42:02 +08:00
|
|
|
|
2025-07-06 11:09:57 +08:00
|
|
|
public partial class SettingViewModel : ViewModelBase
|
2025-06-23 13:42:02 +08:00
|
|
|
{
|
2025-10-02 12:35:42 +08:00
|
|
|
private AppSettings _settings;
|
|
|
|
|
private readonly INotificationService _notificationService;
|
2025-07-06 11:09:57 +08:00
|
|
|
|
2025-10-02 12:35:42 +08:00
|
|
|
public SettingViewModel(AppSettings appSettings,INotificationService notificationService)
|
2025-07-06 11:09:57 +08:00
|
|
|
{
|
2025-10-02 12:35:42 +08:00
|
|
|
_settings = appSettings;
|
|
|
|
|
_notificationService = notificationService;
|
|
|
|
|
AvailableDbTypes = Enum.GetNames(typeof(SqlSugar.DbType)).ToList();
|
|
|
|
|
Themes = new List<string> { "浅色", "深色", "跟随系统" };
|
2025-07-12 12:55:46 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<string> Themes { get; }
|
|
|
|
|
|
2025-10-02 12:35:42 +08:00
|
|
|
public string SelectedTheme
|
|
|
|
|
{
|
|
|
|
|
get => _settings.Theme;
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (_settings.Theme != value)
|
|
|
|
|
{
|
|
|
|
|
_settings.Theme = value;
|
|
|
|
|
OnPropertyChanged();
|
|
|
|
|
_settings.Save();
|
|
|
|
|
ThemeHelper.ApplyTheme(value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-07-06 11:09:57 +08:00
|
|
|
|
|
|
|
|
public List<string> AvailableDbTypes { get; set; }
|
|
|
|
|
|
2025-10-02 12:35:42 +08:00
|
|
|
public string SelectedDbType
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
get => _settings.Db.DbType;
|
2025-10-02 12:35:42 +08:00
|
|
|
set
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
if (_settings.Db.DbType != value)
|
2025-10-02 12:35:42 +08:00
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
_settings.Db.DbType = value;
|
2025-10-02 12:35:42 +08:00
|
|
|
OnPropertyChanged();
|
|
|
|
|
_settings.Save();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-07-06 11:09:57 +08:00
|
|
|
|
2025-10-02 12:35:42 +08:00
|
|
|
public string Server
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
get => _settings.Db.Server;
|
2025-10-02 12:35:42 +08:00
|
|
|
set
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
if (_settings.Db.Server != value)
|
2025-10-02 12:35:42 +08:00
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
_settings.Db.Server = value;
|
2025-10-02 12:35:42 +08:00
|
|
|
OnPropertyChanged();
|
|
|
|
|
_settings.Save();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-07-06 11:09:57 +08:00
|
|
|
|
2025-10-02 12:35:42 +08:00
|
|
|
public int Port
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
get => _settings.Db.Port;
|
2025-10-02 12:35:42 +08:00
|
|
|
set
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
if (_settings.Db.Port != value)
|
2025-10-02 12:35:42 +08:00
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
_settings.Db.Port = value;
|
2025-10-02 12:35:42 +08:00
|
|
|
OnPropertyChanged();
|
|
|
|
|
_settings.Save();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-07-06 11:09:57 +08:00
|
|
|
|
2025-10-02 12:35:42 +08:00
|
|
|
public string UserId
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
get => _settings.Db.UserId;
|
2025-10-02 12:35:42 +08:00
|
|
|
set
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
if (_settings.Db.UserId != value)
|
2025-10-02 12:35:42 +08:00
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
_settings.Db.UserId = value;
|
2025-10-02 12:35:42 +08:00
|
|
|
OnPropertyChanged();
|
|
|
|
|
_settings.Save();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Password
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
get => _settings.Db.Password;
|
2025-10-02 12:35:42 +08:00
|
|
|
set
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
if (_settings.Db.Password != value)
|
2025-10-02 12:35:42 +08:00
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
_settings.Db.Password = value;
|
2025-10-02 12:35:42 +08:00
|
|
|
OnPropertyChanged();
|
|
|
|
|
_settings.Save();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-04 18:42:12 +08:00
|
|
|
public string DbName
|
2025-10-02 12:35:42 +08:00
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
get => _settings.Db.DbName;
|
2025-10-02 12:35:42 +08:00
|
|
|
set
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
if (_settings.Db.DbName != value)
|
2025-10-02 12:35:42 +08:00
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
_settings.Db.DbName = value;
|
2025-10-02 12:35:42 +08:00
|
|
|
OnPropertyChanged();
|
|
|
|
|
_settings.Save();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-07-06 11:09:57 +08:00
|
|
|
|
2025-10-02 12:35:42 +08:00
|
|
|
public bool MinimizeToTrayOnClose
|
|
|
|
|
{
|
|
|
|
|
get => _settings.MinimizeToTrayOnClose;
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (_settings.MinimizeToTrayOnClose != value)
|
|
|
|
|
{
|
|
|
|
|
_settings.MinimizeToTrayOnClose = value;
|
|
|
|
|
OnPropertyChanged(nameof(MinimizeToTrayOnClose));
|
|
|
|
|
_settings.Save();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int DefaultPollingInterval
|
|
|
|
|
{
|
|
|
|
|
get => _settings.DefaultPollingInterval;
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (_settings.DefaultPollingInterval != value)
|
|
|
|
|
{
|
|
|
|
|
_settings.DefaultPollingInterval = value;
|
|
|
|
|
OnPropertyChanged();
|
|
|
|
|
_settings.Save();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-07-09 20:48:14 +08:00
|
|
|
|
2025-07-06 11:09:57 +08:00
|
|
|
[RelayCommand]
|
|
|
|
|
private async Task TestConnection()
|
|
|
|
|
{
|
2025-10-02 12:35:42 +08:00
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
// 使用当前配置测试数据库连接
|
|
|
|
|
using var db = new SqlSugar.SqlSugarScope(new SqlSugar.ConnectionConfig()
|
|
|
|
|
{
|
2025-10-04 18:42:12 +08:00
|
|
|
DbType = (SqlSugar.DbType)Enum.Parse(typeof(SqlSugar.DbType), _settings.Db.DbType),
|
2025-10-02 12:35:42 +08:00
|
|
|
ConnectionString = _settings.ToConnectionString(),
|
|
|
|
|
IsAutoCloseConnection = true
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await db.Ado.ExecuteCommandAsync("SELECT 1");
|
|
|
|
|
_notificationService.ShowSuccess("连接成功!");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_notificationService.ShowError($"连接失败:{ex.Message}", ex);
|
|
|
|
|
}
|
2025-07-06 11:09:57 +08:00
|
|
|
}
|
2025-07-12 12:55:46 +08:00
|
|
|
}
|