移动浏览目录至用户状态

This commit is contained in:
ww-rm
2025-11-02 15:25:43 +08:00
parent b4c7579d24
commit 7bb76d508e
4 changed files with 24 additions and 3 deletions

View File

@@ -33,6 +33,12 @@ namespace SpineViewer.Models
#endregion #endregion
#region
public string? ExploringDirectory { get; set; }
#endregion
#region #region
public uint ResolutionX { get; set; } = 1500; public uint ResolutionX { get; set; } = 1500;

View File

@@ -12,7 +12,6 @@ namespace SpineViewer.Models
{ {
public class WorkspaceModel public class WorkspaceModel
{ {
public string? ExploringDirectory { get; set; }
public RendererWorkspaceConfigModel RendererConfig { get; set; } = new(); public RendererWorkspaceConfigModel RendererConfig { get; set; } = new();
public List<SpineObjectWorkspaceConfigModel> LoadedSpineObjects { get; set; } = []; public List<SpineObjectWorkspaceConfigModel> LoadedSpineObjects { get; set; } = [];
} }

View File

@@ -181,14 +181,12 @@ namespace SpineViewer.ViewModels.MainWindow
{ {
return new() return new()
{ {
ExploringDirectory = _explorerListViewModel.CurrentDirectory,
RendererConfig = _sfmlRendererViewModel.WorkspaceConfig, RendererConfig = _sfmlRendererViewModel.WorkspaceConfig,
LoadedSpineObjects = _spineObjectListViewModel.LoadedSpineObjects LoadedSpineObjects = _spineObjectListViewModel.LoadedSpineObjects
}; };
} }
set set
{ {
_explorerListViewModel.CurrentDirectory = value.ExploringDirectory;
_sfmlRendererViewModel.WorkspaceConfig = value.RendererConfig; _sfmlRendererViewModel.WorkspaceConfig = value.RendererConfig;
_spineObjectListViewModel.LoadedSpineObjects = value.LoadedSpineObjects; _spineObjectListViewModel.LoadedSpineObjects = value.LoadedSpineObjects;
} }

View File

@@ -189,6 +189,7 @@ public partial class MainWindow : Window
_userStateWatchers.Add(PropertyWatcher.Watch(_rightPanelGrid.RowDefinitions[0], RowDefinition.HeightProperty, DelayedSaveUserState)); _userStateWatchers.Add(PropertyWatcher.Watch(_rightPanelGrid.RowDefinitions[0], RowDefinition.HeightProperty, DelayedSaveUserState));
_userStateWatchers.Add(PropertyWatcher.Watch(_rightPanelGrid.RowDefinitions[2], RowDefinition.HeightProperty, DelayedSaveUserState)); _userStateWatchers.Add(PropertyWatcher.Watch(_rightPanelGrid.RowDefinitions[2], RowDefinition.HeightProperty, DelayedSaveUserState));
_vm.ExplorerListViewModel.PropertyChanged += ExplorerListUserStateChanged;
_vm.SFMLRendererViewModel.PropertyChanged += SFMLRendererUserStateChanged; _vm.SFMLRendererViewModel.PropertyChanged += SFMLRendererUserStateChanged;
} }
@@ -234,6 +235,7 @@ public partial class MainWindow : Window
// 撤除所有状态监听器 // 撤除所有状态监听器
_vm.SFMLRendererViewModel.PropertyChanged -= SFMLRendererUserStateChanged; _vm.SFMLRendererViewModel.PropertyChanged -= SFMLRendererUserStateChanged;
_vm.ExplorerListViewModel.PropertyChanged -= ExplorerListUserStateChanged;
foreach (var w in _userStateWatchers) w.Dispose(); foreach (var w in _userStateWatchers) w.Dispose();
_userStateWatchers.Clear(); _userStateWatchers.Clear();
@@ -284,6 +286,8 @@ public partial class MainWindow : Window
_rightPanelGrid.RowDefinitions[0].Height = new(m.RightPanelGridRow0Height, GridUnitType.Star); _rightPanelGrid.RowDefinitions[0].Height = new(m.RightPanelGridRow0Height, GridUnitType.Star);
_rightPanelGrid.RowDefinitions[2].Height = new(m.RightPanelGridRow2Height, GridUnitType.Star); _rightPanelGrid.RowDefinitions[2].Height = new(m.RightPanelGridRow2Height, GridUnitType.Star);
_vm.ExplorerListViewModel.CurrentDirectory = m.ExploringDirectory;
_vm.SFMLRendererViewModel.SetResolution(m.ResolutionX, m.ResolutionY); _vm.SFMLRendererViewModel.SetResolution(m.ResolutionX, m.ResolutionY);
_vm.SFMLRendererViewModel.MaxFps = m.MaxFps; _vm.SFMLRendererViewModel.MaxFps = m.MaxFps;
_vm.SFMLRendererViewModel.Speed = m.Speed; _vm.SFMLRendererViewModel.Speed = m.Speed;
@@ -317,6 +321,8 @@ public partial class MainWindow : Window
RightPanelGridRow0Height = _rightPanelGrid.RowDefinitions[0].Height.Value, RightPanelGridRow0Height = _rightPanelGrid.RowDefinitions[0].Height.Value,
RightPanelGridRow2Height = _rightPanelGrid.RowDefinitions[2].Height.Value, RightPanelGridRow2Height = _rightPanelGrid.RowDefinitions[2].Height.Value,
ExploringDirectory = _vm.ExplorerListViewModel.CurrentDirectory,
ResolutionX = _vm.SFMLRendererViewModel.ResolutionX, ResolutionX = _vm.SFMLRendererViewModel.ResolutionX,
ResolutionY = _vm.SFMLRendererViewModel.ResolutionY, ResolutionY = _vm.SFMLRendererViewModel.ResolutionY,
MaxFps = _vm.SFMLRendererViewModel.MaxFps, MaxFps = _vm.SFMLRendererViewModel.MaxFps,
@@ -356,6 +362,18 @@ public partial class MainWindow : Window
_saveUserStateTimer.Start(); _saveUserStateTimer.Start();
} }
private void ExplorerListUserStateChanged(object? sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case nameof(ExplorerListViewModel.CurrentDirectory):
DelayedSaveUserState();
break;
default:
break;
}
}
private void SFMLRendererUserStateChanged(object? sender, PropertyChangedEventArgs e) private void SFMLRendererUserStateChanged(object? sender, PropertyChangedEventArgs e)
{ {
switch (e.PropertyName) switch (e.PropertyName)