using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using Tango.BL.Entities;
using Tango.Integration.Operation;
using Tango.Integration.ExternalBridge;
namespace Tango.PPC.Common.Application
{
/// <summary>
/// Represents the application manager.
/// </summary>
public interface IPPCApplicationManager
{
/// <summary>
/// Occurs when the application has started.
/// </summary>
event EventHandler ApplicationStarted;
/// <summary>
/// Occurs when the application is ready and all modules are views are loaded.
/// </summary>
event EventHandler ApplicationReady;
/// <summary>
/// Occurs when the main window content has been rendered.
/// </summary>
event EventHandler ContentRendered;
/// <summary>
/// Occurs when all PPC modules are ready and initialized.
/// </summary>
event EventHandler ModulesInitialized;
/// <summary>
/// Occurs when machine setup is required.
/// </summary>
event EventHandler SetupRequired;
/// <summary>
/// Occurs when a system restart is required.
/// </summary>
event EventHandler SystemRestartRequired;
/// <summary>
/// Occurs when the updater utility has failed to perform the last update.
/// </summary>
event EventHandler UpdaterFailed;
/// <summary>
/// Occurs when the application has encountered an error when initializing.
/// </summary>
event EventHandler<Exception> ApplicationInitializationError;
/// <summary>
/// Gets a value indicating whether the application is shutting down.
/// </summary>
bool IsShuttingDown { get; }
/// <summary>
/// Gets a value indicating whether the application is in technician mode.
/// </summary>
bool IsInTechnicianMode { get; }
/// <summary>
/// Gets a value indicating whether an update has occurred before the application started.
/// </summary>
bool IsAfterUpdate { get; }
/// <summary>
/// Gets a value indicating whether the updater utility has failed to perform the last update.
/// </summary>
bool IsUpdateFailed { get; }
/// <summary>
/// Shutdown the application.
/// </summary>
void ShutDown();
/// <summary>
/// Restarts the application.
/// </summary>
void Restart();
/// <summary>
/// Runs the updater utility and exits the application.
/// </summary>
void UpdateApplication(String updaterPath, String arguments);
/// <summary>
/// Enteres the application technician mode.
/// </summary>
void EnterTechnicianMode(bool displayNotification = true);
/// <summary>
/// Exits the application technician mode.
/// </summary>
void ExitTechnicianMode();
/// <summary>
/// Gets the application version.
/// </summary>
Version Version { get; }
/// <summary>
/// Gets the firmware version.
/// </summary>
Version FirmwareVersion { get; }
/// <summary>
/// Gets the application build date.
/// </summary>
String BuildDate { get; }
/// <summary>
/// Gets the application startup date.
/// </summary>
DateTime StartUpDate { get; }
/// <summary>
/// Gets or sets the application folder.
/// </summary>
String StartPath { get; }
/// <summary>
/// Gets or sets a value indicating whether the screen is currently locked.
/// </summary>
bool IsScreenLocked { get; set; }
/// <summary>
/// Resets the screen lock timer.
/// </summary>
void ResetScreenLockTimer();
/// <summary>
/// Invokes a dialog for entering a password and releasing the screen lock.
/// </summary>
void ReleaseScreenLock();
/// <summary>
/// Sets the state of the main window.
/// </summary>
/// <param name="state">The state.</param>
void SetWindowState(WindowState state);
}
}