1
0
Fork 0
mirror of https://github.com/hawkeye-stan/msfs-popout-panel-manager.git synced 2024-11-21 13:20:11 +00:00
msfs-popout-panel-manager/Orchestration/MainOrchestrator.cs
2023-09-10 12:19:41 -04:00

108 lines
4.1 KiB
C#

using AutoUpdaterDotNET;
using MSFSPopoutPanelManager.Shared;
using MSFSPopoutPanelManager.WindowsAgent;
using System;
using System.IO;
using System.Threading.Tasks;
using System.Windows;
namespace MSFSPopoutPanelManager.Orchestration
{
public class MainOrchestrator : ObservableObject
{
public MainOrchestrator()
{
AppSettingData = new AppSettingData();
ProfileData = new ProfileData();
FlightSimData = new FlightSimData();
ProfileData.FlightSimDataRef = FlightSimData;
ProfileData.AppSettingDataRef = AppSettingData;
FlightSimData.ProfileDataRef = ProfileData;
Profile = new ProfileOrchestrator(ProfileData, FlightSimData);
PanelSource = new PanelSourceOrchestrator(ProfileData, AppSettingData, FlightSimData);
PanelPopOut = new PanelPopOutOrchestrator(ProfileData, AppSettingData, FlightSimData);
PanelConfiguration = new PanelConfigurationOrchestrator(ProfileData, AppSettingData, FlightSimData);
FlightSim = new FlightSimOrchestrator(ProfileData, AppSettingData, FlightSimData);
Help = new HelpOrchestrator();
Keyboard = new KeyboardOrchestrator(AppSettingData, FlightSimData);
PanelSource.FlightSimOrchestrator = FlightSim;
PanelPopOut.FlightSimOrchestrator = FlightSim;
PanelPopOut.PanelSourceOrchestrator = PanelSource;
PanelPopOut.PanelConfigurationOrchestrator = PanelConfiguration;
FlightSim.PanelPopOutOrchestrator = PanelPopOut;
FlightSim.PanelConfigurationOrchestrator = PanelConfiguration;
FlightSim.OnSimulatorExited += (sender, e) => { ApplicationClose(); Environment.Exit(0); };
Keyboard.PanelPopOutOrchestrator = PanelPopOut;
// Delete all existing cache version of app
Help.DeleteAppCache();
}
public ProfileOrchestrator Profile { get; set; }
public PanelSourceOrchestrator PanelSource { get; set; }
public PanelPopOutOrchestrator PanelPopOut { get; set; }
public PanelConfigurationOrchestrator PanelConfiguration { get; set; }
public ProfileData ProfileData { get; set; }
public AppSettingData AppSettingData { get; private set; }
public FlightSimData FlightSimData { get; private set; }
public FlightSimOrchestrator FlightSim { get; set; }
public HelpOrchestrator Help { get; set; }
public KeyboardOrchestrator Keyboard { get; set; }
public IntPtr ApplicationHandle { get; set; }
public Window ApplicationWindow { get; set; }
public void Initialize()
{
AppSettingData.ReadSettings();
ProfileData.ReadProfiles();
PanelSource.ApplicationHandle = ApplicationHandle;
if (AppSettingData.ApplicationSetting.GeneralSetting.CheckForUpdate)
CheckForAutoUpdate();
ProfileData.SetActiveProfile(AppSettingData.ApplicationSetting.SystemSetting.LastUsedProfileId); // Load last used profile
Task.Run(() => FlightSim.StartSimConnectServer()); // Start the SimConnect server
Keyboard.Initialize();
}
public void ApplicationClose()
{
// Force unhook all win events
PanelConfiguration.EndConfiguration();
PanelConfiguration.EndTouchHook();
InputHookManager.EndKeyboardHook();
FlightSim.EndSimConnectServer(true);
}
private void CheckForAutoUpdate()
{
string jsonPath = Path.Combine(Path.Combine(FileIo.GetUserDataFilePath(), "autoupdate.json"));
AutoUpdater.PersistenceProvider = new JsonFilePersistenceProvider(jsonPath);
AutoUpdater.Synchronous = true;
AutoUpdater.AppTitle = "MSFS Pop Out Panel Manager";
AutoUpdater.RunUpdateAsAdmin = false;
AutoUpdater.UpdateFormSize = new System.Drawing.Size(1024, 660);
AutoUpdater.Start(AppSettingData.ApplicationSetting.SystemSetting.AutoUpdaterUrl);
}
}
}