diff --git a/src/KeyKeeper/ViewModels/LockedRepositoryViewModel.cs b/src/KeyKeeper/ViewModels/LockedRepositoryViewModel.cs index 1221161..360db26 100644 --- a/src/KeyKeeper/ViewModels/LockedRepositoryViewModel.cs +++ b/src/KeyKeeper/ViewModels/LockedRepositoryViewModel.cs @@ -1,5 +1,13 @@ +using KeyKeeper.PasswordStore; + namespace KeyKeeper.ViewModels; public class LockedRepositoryViewModel : ViewModelBase { + private IPassStore passStore; + + public LockedRepositoryViewModel(IPassStore store) + { + passStore = store; + } } \ No newline at end of file diff --git a/src/KeyKeeper/ViewModels/RepositoryWindowViewModel.cs b/src/KeyKeeper/ViewModels/RepositoryWindowViewModel.cs index 3385820..8365bbf 100644 --- a/src/KeyKeeper/ViewModels/RepositoryWindowViewModel.cs +++ b/src/KeyKeeper/ViewModels/RepositoryWindowViewModel.cs @@ -1,11 +1,39 @@ +using KeyKeeper.PasswordStore; + namespace KeyKeeper.ViewModels; public class RepositoryWindowViewModel : ViewModelBase { - private object currentPage = new LockedRepositoryViewModel(); + private object currentPage; + private IPassStore passStore; + public object CurrentPage { get => currentPage; set { currentPage = value; OnPropertyChanged(nameof(CurrentPage)); } } + + public RepositoryWindowViewModel(IPassStore store) + { + passStore = store; + UpdateLockStatus(); + } + + private void UpdateLockStatus() + { + if (currentPage is LockedRepositoryViewModel && !passStore.Locked) + SwitchToUnlocked(); + else if (currentPage is UnlockedRepositoryViewModel && passStore.Locked) + SwitchToLocked(); + } + + private void SwitchToUnlocked() + { + currentPage = new UnlockedRepositoryViewModel(passStore); + } + + private void SwitchToLocked() + { + currentPage = new LockedRepositoryViewModel(passStore); + } } \ No newline at end of file diff --git a/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs b/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs index 9f79977..23b2e71 100644 --- a/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs +++ b/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs @@ -1,5 +1,13 @@ +using KeyKeeper.PasswordStore; + namespace KeyKeeper.ViewModels; public class UnlockedRepositoryViewModel : ViewModelBase { + private IPassStore passStore; + + public UnlockedRepositoryViewModel(IPassStore store) + { + passStore = store; + } } \ No newline at end of file diff --git a/src/KeyKeeper/Views/MainWindow.axaml.cs b/src/KeyKeeper/Views/MainWindow.axaml.cs index fdb7704..3bf9f0c 100644 --- a/src/KeyKeeper/Views/MainWindow.axaml.cs +++ b/src/KeyKeeper/Views/MainWindow.axaml.cs @@ -84,8 +84,7 @@ namespace KeyKeeper.Views { var repositoryWindow = new RepositoryWindow() { - DataContext = new RepositoryWindowViewModel(), - PassStore = store, + DataContext = new RepositoryWindowViewModel(store), WindowStartupLocation = WindowStartupLocation.CenterScreen }; repositoryWindow.Closed += (s, e) => this.Show();