mirror of
https://github.com/jwetzell/qController.git
synced 2026-08-04 23:17:56 +00:00
183 lines
6.2 KiB
C#
183 lines
6.2 KiB
C#
using Acr.UserDialogs;
|
|
using Xamarin.Forms;
|
|
using Xamarin.Essentials;
|
|
using qController.Pages;
|
|
using System;
|
|
using QControlKit;
|
|
using Serilog;
|
|
|
|
namespace qController
|
|
{
|
|
public partial class App : Application
|
|
{
|
|
public static INavigation iNav;
|
|
public static NavigationPage NavigationPage { get; private set; }
|
|
public static RootPage rootPage;
|
|
public static DisplayInfo mainDisplayInfo;
|
|
public static double Height;
|
|
public static double Width;
|
|
public static double HeightUnit;
|
|
public static double WidthUnit;
|
|
public static bool MenuIsPresented
|
|
{
|
|
get => rootPage.IsPresented;
|
|
set => rootPage.IsPresented = value;
|
|
}
|
|
|
|
public App()
|
|
{
|
|
InitializeComponent();
|
|
Current.RequestedThemeChanged += Current_RequestedThemeChanged;
|
|
SetAppResources();
|
|
|
|
mainDisplayInfo = DeviceDisplay.MainDisplayInfo;
|
|
|
|
Height = mainDisplayInfo.Height / mainDisplayInfo.Density;
|
|
Width = mainDisplayInfo.Width / mainDisplayInfo.Density;
|
|
HeightUnit = Height / 100.0;
|
|
WidthUnit = Width / 100.0;
|
|
|
|
rootPage = new RootPage();
|
|
NavigationPage = new NavigationPage(new QBrowserPage());
|
|
rootPage.Detail = NavigationPage;
|
|
MainPage = rootPage;
|
|
rootPage.Init();
|
|
|
|
AppActions.OnAppAction += AppActions_OnAppAction;
|
|
|
|
}
|
|
|
|
private void AppActions_OnAppAction(object sender, AppActionEventArgs e)
|
|
{
|
|
// Don't handle events fired for old application instances
|
|
// and cleanup the old instance's event handler
|
|
if (Current != this && Current is App app)
|
|
{
|
|
AppActions.OnAppAction -= app.AppActions_OnAppAction;
|
|
return;
|
|
}
|
|
Device.BeginInvokeOnMainThread(async () =>
|
|
{
|
|
QRecentWorkspaceInfo packagedInfo = QStorage.recentWorkspaceInfo;
|
|
if (packagedInfo != null && e.AppAction.Id.Equals("recent_workspace"))
|
|
{
|
|
await NavigationPage.PopToRootAsync();
|
|
QWorkspace recentWorkspace = new QWorkspace(packagedInfo.workspaceInfo, new QServer(packagedInfo.serverInfo.host, packagedInfo.serverInfo.port));
|
|
await NavigationPage.PushAsync(new QWorkspacePage(recentWorkspace));
|
|
Log.Debug("Pushed WorkspacePage from App Action");
|
|
}
|
|
});
|
|
}
|
|
|
|
private void Current_RequestedThemeChanged(object sender, AppThemeChangedEventArgs e)
|
|
{
|
|
SetAppResources();
|
|
}
|
|
|
|
private void SetAppResources()
|
|
{
|
|
|
|
switch (Current.RequestedTheme)
|
|
{
|
|
case OSAppTheme.Light:
|
|
SetLightResources();
|
|
break;
|
|
case OSAppTheme.Dark:
|
|
SetDarkResources();
|
|
break;
|
|
case OSAppTheme.Unspecified:
|
|
//Default to Light
|
|
SetLightResources();
|
|
break;
|
|
default:
|
|
SetLightResources();
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void SetDarkResources()
|
|
{
|
|
|
|
Resources["NavigationBarColor"] = Color.FromHex("#3f6dab");
|
|
Resources["PageBackgroundColor"] = Color.FromHex("#525252");
|
|
|
|
|
|
Resources["PrimaryColor"] = Color.WhiteSmoke;
|
|
Resources["SecondaryColor"] = Color.White;
|
|
Resources["PrimaryTextColor"] = Color.LightGray;
|
|
Resources["SecondaryTextColor"] = Color.White;
|
|
Resources["TertiaryTextColor"] = Color.Gray;
|
|
Resources["TransparentColor"] = Color.Transparent;
|
|
|
|
Resources["IconTextColor"] = Color.WhiteSmoke;
|
|
|
|
Resources["ListViewBackgroundColor"] = Color.FromHex("#363636");
|
|
|
|
Resources["ServerCellBackgroundColor"] = Color.FromHex("#363636");
|
|
Resources["WorkspaceCellBackgroundColor"] = Color.FromHex("#737373");
|
|
|
|
Resources["SelectedCueCellBackgroundColor"] = Color.FromHex("#737373");
|
|
|
|
}
|
|
|
|
private void SetLightResources()
|
|
{
|
|
Resources["NavigationBarColor"] = Color.FromHex("#3089ff");
|
|
Resources["PageBackgroundColor"] = Color.LightGray;
|
|
|
|
|
|
Resources["PrimaryColor"] = Color.WhiteSmoke;
|
|
Resources["SecondaryColor"] = Color.White;
|
|
Resources["PrimaryTextColor"] = Color.Black;
|
|
Resources["SecondaryTextColor"] = Color.White;
|
|
Resources["TertiaryTextColor"] = Color.Gray;
|
|
Resources["TransparentColor"] = Color.Transparent;
|
|
|
|
Resources["IconTextColor"] = Color.Black;
|
|
|
|
Resources["ListViewBackgroundColor"] = Color.White;
|
|
|
|
Resources["ServerCellBackgroundColor"] = Color.White;
|
|
Resources["WorkspaceCellBackgroundColor"] = Color.FromHex("#D8D8D8");
|
|
|
|
Resources["SelectedCueCellBackgroundColor"] = Color.FromHex("#D8D8D8");
|
|
|
|
}
|
|
|
|
public static void SetRecentWorkspace(QWorkspace workspace)
|
|
{
|
|
try
|
|
{
|
|
QRecentWorkspaceInfo recentWorkspaceInfo = new QRecentWorkspaceInfo {
|
|
workspaceInfo = workspace.getWorkspaceInfo(),
|
|
serverInfo = workspace.GetServerInfo()
|
|
};
|
|
|
|
QStorage.UpdateRecentWorkspace(recentWorkspaceInfo);
|
|
|
|
Device.BeginInvokeOnMainThread(async () =>
|
|
{
|
|
await AppActions.SetAsync(new AppAction("recent_workspace", workspace.name, workspace.version));
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Debug(ex.ToString());
|
|
}
|
|
}
|
|
|
|
public static void showToast(string message)
|
|
{
|
|
ToastConfig toastConfig = new ToastConfig(message);
|
|
toastConfig.SetDuration(3000);
|
|
toastConfig.SetPosition(ToastPosition.Bottom);
|
|
UserDialogs.Instance.Toast(toastConfig);
|
|
}
|
|
|
|
public static void ShowMenu(object sender, EventArgs e)
|
|
{
|
|
MenuIsPresented = true;
|
|
}
|
|
}
|
|
}
|