Files
BeWoPlaner/BeWoLauncher/Logic/Behavior/ViewSwitchBehavior.cs

190 lines
5.4 KiB
C#

using BeWoLauncher.Logic.Controller;
using BeWoLauncher.Logic.Utils;
using BeWoLauncher.View;
using BeWoLauncher.View.Frames;
using BS.SharedLauncher.Enums;
using System;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Threading;
using static BeWoLauncher.Logic.Controller.ViewController;
namespace BeWoLauncher.Logic.Behavior
{
public class ViewSwitchBehavior
{
private UserControl _currentView;
private FrameBase _currentFrame;
private LauncherMode _currentLauncherMode;
private UserControl CurrentView
{
get => _currentView;
set
{
_currentView = value;
CurrentWindow.Dispatcher.BeginInvoke(DispatcherPriority.Render,
(Action)delegate
{
CurrentWindow.SetMainContent(value);
});
}
}
private FrameBase CurrentFrame
{
get => _currentFrame;
set
{
_currentFrame = value;
if (CurrentView is FrameView frameview)
CurrentWindow.Dispatcher.BeginInvoke(DispatcherPriority.Render,
(Action)delegate
{
frameview.SetFrame(value);
});
else
CurrentView = new FrameView(value);
}
}
public ViewSwitchBehavior()
{
}
public void ShowView(ViewType vt)
{
CurrentView = ViewController.ViewBuilder.GetNewView(vt);
}
public void ShowFrame(FrameType ft)
{
CurrentFrame = ViewController.ViewBuilder.GetNewFrame(ft);
}
public void ShowInfo(bool is_update)
{
ViewController.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
if (is_update)
{
ShowFrame(FrameType.UpdateInfo);
}
else
{
ShowFrame(FrameType.InstallInfo);
}
}));
}
public void ShowError(Exception exception)
{
Error = exception;
ViewController.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
ShowFrame(FrameType.GenericFail);
}));
}
public void ShowError(string exception)
{
ErrorString = exception;
ViewController.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
ShowFrame(FrameType.GenericFail);
}));
}
public void ShowNoPermissions(string path)
{
ViewController.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
FailedPath = path;
ShowFrame(FrameType.NoPermissionInfo);
}));
}
public void ShowUninstallInfo()
{
ViewController.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
ShowFrame(FrameType.UninstallInfo);
}));
}
/// <summary>
/// Zeigt Ladebildschirm und startet BeWo Prozess
/// </summary>
public void ShowLoading()
{
ViewController.Dispatcher.BeginInvoke(DispatcherPriority.Render, new Action(() =>
{
ShowFrame(FrameType.LoadingScreen);
}));
}
public void BackToLogin(object sender, EventArgs e)
{
ShowView(ViewType.LoginView);
}
public void LoginSuccessful(object sender, EventArgs e)
{
Task.Run(() => ViewController.LaunchBehavior.LoginSuccessful());
}
public void InstallInfoAccept(object sender, EventArgs e)
{
var install = sender as InstallInfoFrame;
if (IsDirectoryWritable(install.InstallLocation))
{
LauncherPaths.SetAndSaveInstallLocation(install.InstallLocation);
ShowFrame(FrameType.InstallProgress);
}
else
{
ShowFrame(FrameType.NoPermissionInfo);
}
}
public void InstallSuccesss(object sender, EventArgs e)
{
LauncherAppdataConfig.SetFirstInstallationSuccess(true);
ShowFrame(FrameType.LoadingScreen);
}
public void InstallFailed(object sender, EventArgs e)
{
ShowFrame(FrameType.InstallFailed);
}
public void UpdateFailed(object sender, EventArgs e)
{
ShowFrame(FrameType.UpdateFailed);
}
public void UninstallFailed(object sender, EventArgs e)
{
ShowFrame(FrameType.UninstallFailed);
}
public void UpdateStarting(object sender, EventArgs e)
{
ShowFrame(FrameType.UpdateProgress);
}
public void UpdateSuccess(object sender, EventArgs e)
{
ShowFrame(FrameType.LoadingScreen);
}
public void UninstallStarting(object sender, EventArgs e)
{
ShowFrame(FrameType.UninstallProgress);
}
public void UninstallSuccess(object sender, EventArgs e)
{
ShowFrame(FrameType.UninstallSuccessful);
}
}
}