using Avalonia.Controls;
using NewLife.Studio.App.Controls;
using NewLife.Studio.App.Services;
using NewLife.Studio.Core;
using NewLife.Studio.Store;
using NewLife.Studio.Data;
namespace NewLife.Studio.App.Views;
public partial class MainWindow : Window
{
private readonly ModuleLoader _moduleLoader;
private readonly IStoreService _storeService;
private readonly IDataProvider _dataProvider;
public MainWindow() : this(new ModuleLoader(), null!, null!) { }
public MainWindow(ModuleLoader moduleLoader, IStoreService storeService, IDataProvider dataProvider)
{
InitializeComponent();
_moduleLoader = moduleLoader;
_storeService = storeService;
_dataProvider = dataProvider;
_moduleLoader.ModuleActivated += OnModuleActivated;
NavBarControl.ModuleSelected += OnNavBarModuleSelected;
AIPanelControl.Initialize(_storeService, _dataProvider);
}
public async Task InitializeAsync()
{
_moduleLoader.ScanModules();
NavBarControl.SetModules(_moduleLoader.Modules, null);
StatusBarControl.SetModule("准备就绪");
await _moduleLoader.ActivateDefaultAsync();
if (_moduleLoader.ActiveModule != null)
{
NavBarControl.SetModules(_moduleLoader.Modules, _moduleLoader.ActiveModule);
ModuleHostControl.SetContent(_moduleLoader.ActiveModule.Module.GetView());
}
}
private void OnModuleActivated(object? sender, ModuleInfo moduleInfo)
{
NavBarControl.SetModules(_moduleLoader.Modules, moduleInfo);
ModuleHostControl.SetContent(moduleInfo.Module.GetView());
StatusBarControl.SetModule(moduleInfo.DisplayName);
}
private async void OnNavBarModuleSelected(object? sender, ModuleInfo moduleInfo)
{
await _moduleLoader.ActivateModuleAsync(moduleInfo);
}
}
|