diff --git a/SharepointToolbox/App.xaml.cs b/SharepointToolbox/App.xaml.cs index 0746383..1e6d042 100644 --- a/SharepointToolbox/App.xaml.cs +++ b/SharepointToolbox/App.xaml.cs @@ -8,6 +8,8 @@ using SharepointToolbox.Infrastructure.Logging; using SharepointToolbox.Services; using SharepointToolbox.ViewModels; using SharepointToolbox.ViewModels.Tabs; +using SharepointToolbox.Views.Dialogs; +using SharepointToolbox.Views.Tabs; using System.Windows; namespace SharepointToolbox; @@ -74,6 +76,8 @@ public partial class App : Application services.AddSingleton(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddSingleton(); } } diff --git a/SharepointToolbox/MainWindow.xaml.cs b/SharepointToolbox/MainWindow.xaml.cs index 0e8c340..68ae713 100644 --- a/SharepointToolbox/MainWindow.xaml.cs +++ b/SharepointToolbox/MainWindow.xaml.cs @@ -1,6 +1,9 @@ using System.Windows; using System.Windows.Controls; +using Microsoft.Extensions.DependencyInjection; using SharepointToolbox.ViewModels; +using SharepointToolbox.Views.Dialogs; +using SharepointToolbox.Views.Tabs; namespace SharepointToolbox; @@ -8,11 +11,18 @@ public partial class MainWindow : Window { private readonly MainWindowViewModel _viewModel; - public MainWindow(MainWindowViewModel viewModel) + public MainWindow(MainWindowViewModel viewModel, IServiceProvider serviceProvider) { InitializeComponent(); _viewModel = viewModel; DataContext = viewModel; + + // Wire profile management dialog factory + viewModel.OpenProfileManagementDialog = () => serviceProvider.GetRequiredService(); + + // Replace Settings tab placeholder with the DI-resolved SettingsView + SettingsTabItem.Content = serviceProvider.GetRequiredService(); + Loaded += OnLoaded; } diff --git a/SharepointToolbox/ViewModels/MainWindowViewModel.cs b/SharepointToolbox/ViewModels/MainWindowViewModel.cs index 77b8097..7b2b7e6 100644 --- a/SharepointToolbox/ViewModels/MainWindowViewModel.cs +++ b/SharepointToolbox/ViewModels/MainWindowViewModel.cs @@ -1,4 +1,5 @@ using System.Collections.ObjectModel; +using System.Windows; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; @@ -15,6 +16,9 @@ public partial class MainWindowViewModel : ObservableRecipient private readonly SessionManager _sessionManager; private readonly ILogger _logger; + // Set by the view layer (MainWindow.xaml.cs) to open the dialog using DI + public Func? OpenProfileManagementDialog { get; set; } + [ObservableProperty] private TenantProfile? _selectedProfile; @@ -122,6 +126,12 @@ public partial class MainWindowViewModel : ObservableRecipient private void OpenProfileManagement() { - // Profile management dialog opened by View layer (plan 01-07) + if (OpenProfileManagementDialog == null) return; + var dialog = OpenProfileManagementDialog(); + dialog.Owner = Application.Current.MainWindow; + dialog.ShowDialog(); + + // Reload profiles after dialog closes (modal — ShowDialog blocks until closed) + _ = LoadProfilesAsync(); } } diff --git a/SharepointToolbox/Views/Dialogs/ProfileManagementDialog.xaml b/SharepointToolbox/Views/Dialogs/ProfileManagementDialog.xaml new file mode 100644 index 0000000..6be2e53 --- /dev/null +++ b/SharepointToolbox/Views/Dialogs/ProfileManagementDialog.xaml @@ -0,0 +1,60 @@ + + + + + + + + + + +