148 lines
5.8 KiB
C#
148 lines
5.8 KiB
C#
using System.Windows;
|
|
using JetBrains.Annotations;
|
|
using Livia.Models;
|
|
using Livia.Models.Data;
|
|
using Livia.Properties;
|
|
using Livia.Utility.DependencyInjection;
|
|
using Livia.ViewModels;
|
|
using Livia.Views;
|
|
using Livia.Views.Utility;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using SiemensCereflow.ViewModels;
|
|
using SiemensCereflow.Views.Controls;
|
|
|
|
namespace SiemensCereflow;
|
|
|
|
/// <summary>
|
|
/// Interaction logic for App.xaml
|
|
/// </summary>
|
|
public partial class App
|
|
{
|
|
|
|
private readonly ILogger _logger;
|
|
private readonly IServiceProvider _serviceProvider;
|
|
private readonly IWarningSystem _warningSystem;
|
|
[UsedImplicitly] private Mutex? _mutex;
|
|
private readonly Dictionary<string, string>? _argsDictionary;
|
|
|
|
public App()
|
|
{
|
|
(string parseMsgIndex, string parseArg, _argsDictionary) = LocalCommandLineServerHandler.ParseArgs(["input_dir", "log_dir", "output_dir"]);
|
|
|
|
if (_argsDictionary?.TryGetValue("suspend_dir", out string? tempFolder) ?? false)
|
|
ServiceConfigurations.TempFolder = tempFolder;
|
|
|
|
if (_argsDictionary?.TryGetValue("log_dir", out string? logFolder) ?? false)
|
|
ServiceProviderFactory.LogFolder = logFolder;
|
|
|
|
InitializeComponent();
|
|
ServiceProviderFactory.Init(sc =>
|
|
{
|
|
sc.AddSingleton<ILiviaControlViewModel, SiemensCereFlowControlViewModel>();
|
|
sc.AddSingleton<IServerHandler, LocalCommandLineServerHandler>();
|
|
});
|
|
AppHelper helper = ActivatorUtilities.GetServiceOrCreateInstance<AppHelper>(ServiceProviderFactory.ServiceProvider);
|
|
Dispatcher.UnhandledException += helper.OnDispatcherUnhandledException;
|
|
|
|
//TODO:: I am not convinced this will work, because we are already using settings before this.
|
|
helper.UpdateSettings();
|
|
//parse success
|
|
if (_argsDictionary != null)
|
|
{
|
|
if (_argsDictionary.TryGetValue("language", out string? language))
|
|
{
|
|
if (language == "zh-Hans-CN")
|
|
language = "zh-CN";
|
|
Settings.Default.Language = language;
|
|
}
|
|
else
|
|
{
|
|
SettingsWindowViewModel.LanguageSelectionEnabled = true;
|
|
}
|
|
|
|
if (_argsDictionary.TryGetValue("culture_info", out string? cultureInfo))
|
|
{
|
|
Settings.Default.CultureInfo = cultureInfo;
|
|
SettingsWindowViewModel.DisplaySettingsCardEnabled = false;
|
|
}
|
|
|
|
if (_argsDictionary?.TryGetValue("font_family", out string? fontFamily) ?? false)
|
|
{
|
|
foreach (LanguageComboBoxItemViewModel viewModel in ViewUtility.LanguageList.Where(viewModel => viewModel.Id == Settings.Default.Language))
|
|
{
|
|
viewModel.DefaultFont = fontFamily;
|
|
ViewSettings.Default.FontFamily = fontFamily;
|
|
ViewUtility.LoadFonts();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
Settings.Default.Save();
|
|
ViewSettings.Default.Save();
|
|
|
|
helper.LoadStrings();
|
|
|
|
_serviceProvider = ServiceProviderFactory.ServiceProvider;
|
|
_logger = ActivatorUtilities.GetServiceOrCreateInstance<ILogger<App>>(ServiceProviderFactory.ServiceProvider);
|
|
_warningSystem = ActivatorUtilities.GetServiceOrCreateInstance<IWarningSystem>(ServiceProviderFactory.ServiceProvider);
|
|
_logger.LogInformation("App Starting");
|
|
_logger.LogInformation("build time: 2024-04-25 13:54");
|
|
SettingsLogger.Init();
|
|
|
|
_logger.LogInformation($"args = {string.Join(" ", Environment.GetCommandLineArgs())}");
|
|
|
|
if (string.IsNullOrEmpty(parseMsgIndex))
|
|
return;
|
|
|
|
//in case parse fail. Warning is deferred because other warning system is not available at time error is caught.
|
|
_warningSystem.ShowDialog(WarningWindowKind.Warning, true, parseMsgIndex, parseArg);
|
|
Current.Shutdown();
|
|
}
|
|
|
|
private void OnStartup(object sender, StartupEventArgs eventArgs)
|
|
{
|
|
_mutex = new Mutex(true, "Livia", out bool isNewInstance);
|
|
if (!isNewInstance)
|
|
{
|
|
_warningSystem.ShowDialog(WarningWindowKind.Warning, true, "InstanceIsRunningError");
|
|
Current.Shutdown();
|
|
}
|
|
|
|
//set to siemens version
|
|
MosaicImageGroupControlViewModel.RoiEnabled = false;
|
|
MainWindowViewModel.ConfirmExiting = false;
|
|
MainWindowViewModel.ShowCheckReportsButton = false;
|
|
MainWindowViewModel.ShowExportReportButton = false;
|
|
MainWindowViewModel.ShowHistoryButton = false;
|
|
MainWindowViewModel.ShowLoadDataButton = false;
|
|
MainWindowViewModel.ShowLogoutButton = false;
|
|
MainWindowViewModel.ShowSearchButton = false;
|
|
MainWindowViewModel.HideTitleBar = true;
|
|
MainWindowViewModel.ClearFilesOnExit = false;
|
|
MainWindowViewModel.ShowRemainingQuota = false;
|
|
SettingsWindowViewModel.SecurityTabEnabled = false;
|
|
SettingsWindowViewModel.GeneralTabEnabled = false;
|
|
Settings.Default.ShowUpdateButton = false;
|
|
Settings.Default.LogoutAfter = 0;
|
|
|
|
MainWindow mainWindow = ActivatorUtilities.CreateInstance<MainWindow>(_serviceProvider);
|
|
mainWindow.AddMainControl(new SiemensCereFlowControl(ActivatorUtilities.GetServiceOrCreateInstance<ILiviaControlViewModel>(ServiceProviderFactory.ServiceProvider)));
|
|
MainWindow = mainWindow;
|
|
|
|
//always maximize
|
|
mainWindow.Width = SystemParameters.WorkArea.Width;
|
|
mainWindow.Height = SystemParameters.WorkArea.Height;
|
|
mainWindow.Left = 0;
|
|
mainWindow.Top = 0;
|
|
|
|
mainWindow.Show();
|
|
|
|
_logger.LogInformation("App Started");
|
|
|
|
if (_argsDictionary == null)
|
|
return;
|
|
|
|
mainWindow.ProcessDataCommandLine(_argsDictionary);
|
|
}
|
|
} |