using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using Tango.BL;
using Tango.Integration.Operation;
using Tango.Logging;
using Tango.MachineStudio.Common.Web;
using Tango.PMR.Printing;
using Tango.Settings;
using Tango.Transport.Adapters;
using Tango.Web;
namespace Tango.MachineStudio.Common
{
public class MachineStudioSettings : SettingsBase
{
public class StudioModuleBounds
{
public String Name { get; set; }
public Rect Bounds { get; set; }
public WindowState State { get; set; }
}
public enum WorkingEnvironment
{
Remote,
Local
}
/// <summary>
/// Gets or sets the last login email.
/// </summary>
public String LastLoginEmail { get; set; }
/// <summary>
/// Gets or sets the last login password.
/// </summary>
public String LastLoginPassword { get; set; }
/// <summary>
/// Gets or sets the last login method.
/// </summary>
public LoginMethod LastLoginMethod { get; set; }
/// <summary>
/// Gets or sets a value indicating whether to save the user credentials.
/// </summary>
public bool RememberMe { get; set; }
/// <summary>
/// Gets or sets the last virtual machine serial number.
/// </summary>
public String LastVirtualMachineSerialNumber { get; set; }
/// <summary>
/// Gets or sets the logging categories.
/// </summary>
public List<LogCategory> LoggingCategories { get; set; }
/// <summary>
/// Gets or sets the last bounds.
/// </summary>
public Rect LastBounds { get; set; }
/// <summary>
/// Gets or sets the default issue report assign to.
/// </summary>
public String DefaultIssueReportAssignTo { get; set; }
/// <summary>
/// Gets or sets the default issue report area.
/// </summary>
public String DefaultIssueReportArea { get; set; }
/// <summary>
/// Gets or sets the default issue report tags.
/// </summary>
public List<String> DefaultIssueReportTags { get; set; }
/// <summary>
/// Gets or sets a value indicating whether add external bridge client emulator when scanning for connected machines.
/// </summary>
public bool UseExternalBridgeEmulator { get; set; }
/// <summary>
/// Gets or sets the last bounds of modules open windows.
/// </summary>
public List<StudioModuleBounds> StudioModulesBounds { get; set; }
/// <summary>
/// Gets or sets the last module that was opened in the main window.
/// </summary>
public String LastMainModuleName { get; set; }
/// <summary>
/// Gets or sets the working environment.
/// </summary>
public WorkingEnvironment Environment { get; set; }
/// <summary>
/// Gets or sets the deployment slot.
/// </summary>
public DeploymentSlot DeploymentSlot { get; set; }
/// <summary>
/// Gets or sets the job upload strategy.
/// </summary>
public JobUploadStrategy JobUploadStrategy { get; set; }
/// <summary>
/// Gets or sets the job number of units method.
/// </summary>
public JobUnitsMethods JobUnitsMethod { get; set; }
/// <summary>
/// Gets or sets a value indicating whether to by pass environment version check.
/// </summary>
public bool ByPassEnvironmentVersionCheck { get; set; }
/// <summary>
/// Gets or sets a value indicating whether to force the application version update.
/// </summary>
public bool ForceVersionUpdate { get; set; }
/// <summary>
/// Gets or sets a value indicating whether to enable database entity caching.
/// </summary>
public ObservablesContextInMemoryCachingMode CachingMode { get; set; }
/// <summary>
/// Gets or sets the maximum cache time for a single entity (when CachingMode is set Absolute or Relative).
/// </summary>
public TimeSpan MaximumCacheTime { get; set; }
/// <summary>
/// Gets or sets the external bridge request timeout.
/// </summary>
public TimeSpan ExternalBridgeRequestTimeout { get; set; }
/// <summary>
/// Gets or sets the external bridge continuous request timeout.
/// </summary>
public TimeSpan ExternalBridgeContinuousRequestTimeout { get; set; }
/// <summary>
/// Gets or sets the external bridge SignalR hub.
/// </summary>
public String ExternalBridgeSignalRHub { get; set; }
/// <summary>
/// Gets or sets a value indicating whether to enable external bridge scanning via SignalR.
/// </summary>
public bool EnableExternalBridgeSignalR { get; set; }
/// <summary>
/// Gets or sets the TCP transport adapter write mode.
/// </summary>
public TcpTransportAdapterWriteMode TcpTransportAdapterWriteMode { get; set; }
/// <summary>
/// Gets the machine service address.
/// </summary>
public String MachineServiceAddress
{
get { return GetMachineServiceAddress(); }
}
/// <summary>
/// Gets the machine service address.
/// </summary>
/// <returns></returns>
public String GetMachineServiceAddress()
{
return DeploymentSlot.ToAddress();
}
/// <summary>
/// Gets or sets the working theme.
/// </summary>
public MachineStudioTheme Theme { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="MachineStudio"/> class.
/// </summary>
public MachineStudioSettings()
{
LastBounds = new Rect();
LoggingCategories = new List<LogCategory>();
DefaultIssueReportTags = new List<string>();
StudioModulesBounds = new List<StudioModuleBounds>();
Environment = WorkingEnvironment.Remote;
DeploymentSlot = DeploymentSlot.DEV;
JobUploadStrategy = JobUploadStrategy.JobDescriptionFile;
MaximumCacheTime = TimeSpan.FromMinutes(5);
CachingMode = ObservablesContextInMemoryCachingMode.None;
Theme = MachineStudioTheme.Light;
JobUnitsMethod = JobUnitsMethods.Operator;
ExternalBridgeRequestTimeout = TimeSpan.FromSeconds(5);
ExternalBridgeContinuousRequestTimeout = TimeSpan.FromSeconds(5);
ExternalBridgeSignalRHub = "ExternalBridgeHub";
EnableExternalBridgeSignalR = true;
TcpTransportAdapterWriteMode = TcpTransportAdapterWriteMode.Interval;
}
}
}