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.Logging;
using Tango.PMR.Printing;
using Tango.Settings;
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 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 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 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 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;
}
}
}