using System.Windows; using System.Windows.Controls; using Microsoft.Extensions.DependencyInjection; using SharepointToolbox.Core.Models; using SharepointToolbox.ViewModels; using SharepointToolbox.Views.Dialogs; using SharepointToolbox.Views.Tabs; namespace SharepointToolbox; public partial class MainWindow : Window { private readonly MainWindowViewModel _viewModel; public MainWindow(MainWindowViewModel viewModel, IServiceProvider serviceProvider) { InitializeComponent(); _viewModel = viewModel; DataContext = viewModel; // Wire profile management dialog factory viewModel.OpenProfileManagementDialog = () => serviceProvider.GetRequiredService(); // Wire global site picker dialog factory (same pattern as PermissionsView) viewModel.OpenGlobalSitePickerDialog = () => { var factory = serviceProvider.GetRequiredService>(); return factory(viewModel.SelectedProfile ?? new TenantProfile()); }; // Replace Permissions tab placeholder with the DI-resolved PermissionsView PermissionsTabItem.Content = serviceProvider.GetRequiredService(); // Replace Storage tab placeholder with the DI-resolved StorageView StorageTabItem.Content = serviceProvider.GetRequiredService(); // Replace Search tab placeholder with the DI-resolved SearchView SearchTabItem.Content = serviceProvider.GetRequiredService(); // Replace Duplicates tab placeholder with the DI-resolved DuplicatesView DuplicatesTabItem.Content = serviceProvider.GetRequiredService(); // Phase 4: Replace stub tabs with DI-resolved Views TransferTabItem.Content = serviceProvider.GetRequiredService(); BulkMembersTabItem.Content = serviceProvider.GetRequiredService(); BulkSitesTabItem.Content = serviceProvider.GetRequiredService(); FolderStructureTabItem.Content = serviceProvider.GetRequiredService(); TemplatesTabItem.Content = serviceProvider.GetRequiredService(); // Phase 7: User Access Audit UserAccessAuditTabItem.Content = serviceProvider.GetRequiredService(); // Replace Settings tab placeholder with the DI-resolved SettingsView SettingsTabItem.Content = serviceProvider.GetRequiredService(); Loaded += OnLoaded; } private async void OnLoaded(object sender, RoutedEventArgs e) { await _viewModel.LoadProfilesAsync(); } // Expose the LogPanel RichTextBox (generated by x:Name="LogPanel") for LogPanelSink wiring public RichTextBox GetLogPanel() => LogPanel; }