Files
DMS/DMS.WPF/ViewModels/SettingViewModel.cs

162 lines
3.8 KiB
C#
Raw Normal View History

using CommunityToolkit.Mvvm.Input;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using DMS.Config;
using DMS.Services;
2025-07-19 22:29:50 +08:00
using DMS.WPF.Helper;
using DMS.Infrastructure.Interfaces;
using DMS.Helper;
2025-07-19 11:11:01 +08:00
namespace DMS.WPF.ViewModels;
public partial class SettingViewModel : ViewModelBase
{
2025-07-19 22:29:50 +08:00
private readonly IDbContext transaction;
private AppSettings _settings;
2025-07-19 22:29:50 +08:00
public SettingViewModel(IDbContext transaction)
{
2025-07-19 22:29:50 +08:00
_settings = AppSettings.Load();
AvailableDbTypes = Enum.GetNames(typeof(SqlSugar.DbType)).ToList();
2025-07-12 12:55:46 +08:00
Themes = new List<string> { "浅色", "深色", "跟随系统" };
2025-07-19 22:29:50 +08:00
this.transaction = transaction;
2025-07-12 12:55:46 +08:00
}
public List<string> Themes { get; }
public string SelectedTheme
{
2025-07-19 22:29:50 +08:00
get => _settings.Theme;
2025-07-12 12:55:46 +08:00
set
{
2025-07-19 22:29:50 +08:00
if (_settings.Theme != value)
2025-07-12 12:55:46 +08:00
{
2025-07-19 22:29:50 +08:00
_settings.Theme = value;
2025-07-12 12:55:46 +08:00
OnPropertyChanged();
2025-07-19 22:29:50 +08:00
_settings.Save();
2025-07-12 12:55:46 +08:00
ThemeHelper.ApplyTheme(value);
}
}
}
public List<string> AvailableDbTypes { get; set; }
public string SelectedDbType
{
2025-07-19 22:29:50 +08:00
get => _settings.Database.DbType;
set
{
2025-07-19 22:29:50 +08:00
if (_settings.Database.DbType != value)
{
2025-07-19 22:29:50 +08:00
_settings.Database.DbType = value;
OnPropertyChanged();
2025-07-19 22:29:50 +08:00
_settings.Save();
}
}
}
public string Server
{
2025-07-19 22:29:50 +08:00
get => _settings.Database.Server;
set
{
2025-07-19 22:29:50 +08:00
if (_settings.Database.Server != value)
{
2025-07-19 22:29:50 +08:00
_settings.Database.Server = value;
OnPropertyChanged();
2025-07-19 22:29:50 +08:00
_settings.Save();
}
}
}
public int Port
{
2025-07-19 22:29:50 +08:00
get => _settings.Database.Port;
set
{
2025-07-19 22:29:50 +08:00
if (_settings.Database.Port != value)
{
2025-07-19 22:29:50 +08:00
_settings.Database.Port = value;
OnPropertyChanged();
2025-07-19 22:29:50 +08:00
_settings.Save();
}
}
}
public string UserId
{
2025-07-19 22:29:50 +08:00
get => _settings.Database.UserId;
set
{
2025-07-19 22:29:50 +08:00
if (_settings.Database.UserId != value)
{
2025-07-19 22:29:50 +08:00
_settings.Database.UserId = value;
OnPropertyChanged();
2025-07-19 22:29:50 +08:00
_settings.Save();
}
}
}
public string Password
{
2025-07-19 22:29:50 +08:00
get => _settings.Database.Password;
set
{
2025-07-19 22:29:50 +08:00
if (_settings.Database.Password != value)
{
2025-07-19 22:29:50 +08:00
_settings.Database.Password = value;
OnPropertyChanged();
2025-07-19 22:29:50 +08:00
_settings.Save();
}
}
}
public string Database
{
2025-07-19 22:29:50 +08:00
get => _settings.Database.Database;
set
{
2025-07-19 22:29:50 +08:00
if (_settings.Database.Database != value)
{
2025-07-19 22:29:50 +08:00
_settings.Database.Database = value;
OnPropertyChanged();
2025-07-19 22:29:50 +08:00
_settings.Save();
}
}
}
public bool MinimizeToTrayOnClose
{
2025-07-19 22:29:50 +08:00
get => _settings.MinimizeToTrayOnClose;
set
{
2025-07-19 22:29:50 +08:00
if (_settings.MinimizeToTrayOnClose != value)
{
2025-07-19 22:29:50 +08:00
_settings.MinimizeToTrayOnClose = value;
OnPropertyChanged(nameof(MinimizeToTrayOnClose));
2025-07-19 22:29:50 +08:00
_settings.Save();
}
}
}
[RelayCommand]
private async Task TestConnection()
{
try
{
2025-07-19 22:29:50 +08:00
using (var db = transaction.GetInstance())
{
await db.Ado.OpenAsync();
NotificationHelper.ShowSuccess("连接成功!");
}
}
catch (Exception ex)
{
NotificationHelper.ShowError($"连接失败:{ex.Message}", ex);
}
}
2025-07-12 12:55:46 +08:00
}