using System;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Diary.ViewModels;
using Diary.Views;
using System.Threading.Tasks;
namespace Diary;
public partial class App : Application
{
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override async void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
var splashScreenVM = new SplashScreenViewModel();
var splashScreen = new SplashScreen
{
DataContext = splashScreenVM
};
desktop.MainWindow = splashScreen;
splashScreen.Show();
try
{
splashScreenVM.StartupMessage = "Checking If config.json File Exists...";
await Task.Delay(1000, splashScreenVM.CancellationToken);
bool jsonExists = CheckForJsonFile();
if (jsonExists)
{
splashScreenVM.StartupMessage =
"config.json File Found. Loading Data From Json File...Please Wait!";
await Task.Delay(2000, splashScreenVM.CancellationToken);
splashScreenVM.StartupMessage =
"Data Loaded From Json File... Launching Home Screen... Please Wait!";
await Task.Delay(2000, splashScreenVM.CancellationToken);
desktop.MainWindow = HomeScreen;
}
else
{
splashScreenVM.StartupMessage = "config.json File Not Found. Creating New Json File...Please Wait!";
await Task.Delay(2000, splashScreenVM.CancellationToken);
bool jsonCreated = CreateJsonFile();
if (jsonCreated)
{
splashScreenVM.StartupMessage = "Json File Created. Launching Setup Screen...Please Wait!";
await Task.Delay(2000, splashScreenVM.CancellationToken);
var mainWin = new MainWindow
{
DataContext = new MainWindowViewModel(),
};
desktop.MainWindow = mainWin;
mainWin.Show();
splashScreen.Close();
}
else
{
throw new ArgumentException("Unable To Create Json File.");
}
}
}
catch (TaskCanceledException)
{
splashScreen.Close();
return;
}
}
base.OnFrameworkInitializationCompleted();
}
private bool CheckForJsonFile()
{
bool jsonCheck = false;
string fileName = "ProjectSettings.Json";
ProjectSettings readProjectSettings;
if (File.Exists(fileName))
{
readProjectSettings = JsonConverter.DeserializeObject<ProjectSettings>(File.ReadAllText(fileName));
jsonCheck = true;
}
else
{
readProjectSettings = new ProjectSettings();
jsonCheck = false;
}
readProjectSettings.decProp1 = readProjectSettings.decProp1;
return jsonCheck;
}
}
using System;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Diary.ViewModels;
using Diary.Views;
using System.Threading.Tasks;
namespace Diary;
public partial class App : Application
{
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override async void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
var splashScreenVM = new SplashScreenViewModel();
var splashScreen = new SplashScreen
{
DataContext = splashScreenVM
};
desktop.MainWindow = splashScreen;
splashScreen.Show();
try
{
splashScreenVM.StartupMessage = "Checking If config.json File Exists...";
await Task.Delay(1000, splashScreenVM.CancellationToken);
bool jsonExists = CheckForJsonFile();
if (jsonExists)
{
splashScreenVM.StartupMessage =
"config.json File Found. Loading Data From Json File...Please Wait!";
await Task.Delay(2000, splashScreenVM.CancellationToken);
splashScreenVM.StartupMessage =
"Data Loaded From Json File... Launching Home Screen... Please Wait!";
await Task.Delay(2000, splashScreenVM.CancellationToken);
desktop.MainWindow = HomeScreen;
}
else
{
splashScreenVM.StartupMessage = "config.json File Not Found. Creating New Json File...Please Wait!";
await Task.Delay(2000, splashScreenVM.CancellationToken);
bool jsonCreated = CreateJsonFile();
if (jsonCreated)
{
splashScreenVM.StartupMessage = "Json File Created. Launching Setup Screen...Please Wait!";
await Task.Delay(2000, splashScreenVM.CancellationToken);
var mainWin = new MainWindow
{
DataContext = new MainWindowViewModel(),
};
desktop.MainWindow = mainWin;
mainWin.Show();
splashScreen.Close();
}
else
{
throw new ArgumentException("Unable To Create Json File.");
}
}
}
catch (TaskCanceledException)
{
splashScreen.Close();
return;
}
}
base.OnFrameworkInitializationCompleted();
}
private bool CheckForJsonFile()
{
bool jsonCheck = false;
string fileName = "ProjectSettings.Json";
ProjectSettings readProjectSettings;
if (File.Exists(fileName))
{
readProjectSettings = JsonConverter.DeserializeObject<ProjectSettings>(File.ReadAllText(fileName));
jsonCheck = true;
}
else
{
readProjectSettings = new ProjectSettings();
jsonCheck = false;
}
readProjectSettings.decProp1 = readProjectSettings.decProp1;
return jsonCheck;
}
}