diff --git a/WebAedificaConfigurator/WebAedificaConfigurator.csproj b/WebAedificaConfigurator/WebAedificaConfigurator.csproj index 2b08dd6..127bb1f 100644 --- a/WebAedificaConfigurator/WebAedificaConfigurator.csproj +++ b/WebAedificaConfigurator/WebAedificaConfigurator.csproj @@ -12,7 +12,7 @@ - + diff --git a/WebWindowComplex/WebWindowComplex.csproj b/WebWindowComplex/WebWindowComplex.csproj index 98fbdca..b947d7d 100644 --- a/WebWindowComplex/WebWindowComplex.csproj +++ b/WebWindowComplex/WebWindowComplex.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.7.10.916 + 2.7.10.917 Annamaria Sassi Egalware Componente gestione Configurazioni avanzate Window per LUX @@ -147,6 +147,10 @@ + + + + diff --git a/WebWindowComplex/Window.cs b/WebWindowComplex/Window.cs index 4a664c9..d1598e9 100644 --- a/WebWindowComplex/Window.cs +++ b/WebWindowComplex/Window.cs @@ -1173,9 +1173,9 @@ namespace WebWindowComplex internal void SetSelHardwareFromId(string sId) { if (m_HardwareList.Count == 0) - m_SelHardware = m_HardwareCompleteList.FirstOrDefault(x => x.Id.Equals(sId)) ?? new Hardware("", "", "", Enums.OpeningTypes.NULL, "", 0, 0); + m_SelHardware = m_HardwareCompleteList.FirstOrDefault(x => x.Id.Equals(sId)) ?? new Hardware("", "", "", Enums.OpeningTypes.Null, "", 0, 0); else - m_SelHardware = m_HardwareList.FirstOrDefault(x => x.Id.Equals(sId)) ?? new Hardware("", "", "", Enums.OpeningTypes.NULL, "", 0, 0); + m_SelHardware = m_HardwareList.FirstOrDefault(x => x.Id.Equals(sId)) ?? new Hardware("", "", "", Enums.OpeningTypes.Null, "", 0, 0); if (m_SelHardware == null) m_SelHardware = m_HardwareList[0]; //SelFamilyHardware = m_SelHardware.FamilyName; @@ -1189,7 +1189,7 @@ namespace WebWindowComplex } set { - m_SelHardware = m_HardwareList.FirstOrDefault(x => !string.IsNullOrEmpty(value) && x.Id.Equals(value)) ?? new Hardware("", "", "", Enums.OpeningTypes.NULL, "", 0, 0); + m_SelHardware = m_HardwareList.FirstOrDefault(x => !string.IsNullOrEmpty(value) && x.Id.Equals(value)) ?? new Hardware("", "", "", Enums.OpeningTypes.Null, "", 0, 0); ParentWindow.OnUpdatePreview(ParentWindow.sSerialized()); } } @@ -1246,46 +1246,46 @@ namespace WebWindowComplex case Openings.TURNONLY_LEFT: case Openings.TURNONLY_RIGHT: { - return Enums.OpeningTypes.TURNONLY; + return Enums.OpeningTypes.TurnOnly; } case Openings.TILTTURN_LEFT: case Openings.TILTTURN_RIGHT: { - return Enums.OpeningTypes.TILTTURN; + return Enums.OpeningTypes.TiltTurn; } case Openings.TILTONLY_TOP: case Openings.TILTONLY_BOTTOM: { - return Enums.OpeningTypes.TILTONLY; + return Enums.OpeningTypes.TiltOnly; } case Openings.PIVOT: { - return Enums.OpeningTypes.PIVOT; + return Enums.OpeningTypes.Pivot; } case Openings.FIXED: { - return Enums.OpeningTypes.FIXED; + return Enums.OpeningTypes.Fixed; } case Openings.COMPLANARSLIDE_LEFT: case Openings.COMPLANARSLIDE_RIGHT: { - return Enums.OpeningTypes.COMPLANARSLIDE; + return Enums.OpeningTypes.ComplanarSlide; } case Openings.LIFTSLIDE_LEFT: case Openings.LIFTSLIDE_RIGHT: { - return Enums.OpeningTypes.LIFTSLIDE; + return Enums.OpeningTypes.LiftSlide; } default: { - return Enums.OpeningTypes.NULL; + return Enums.OpeningTypes.Null; } } } @@ -1356,7 +1356,7 @@ namespace WebWindowComplex } } - return Enums.OpeningTypes.NULL; + return Enums.OpeningTypes.Null; } else { diff --git a/WebWindowConfigurator/WebWindowConfigurator.csproj b/WebWindowConfigurator/WebWindowConfigurator.csproj index 7d44d51..5170ef0 100644 --- a/WebWindowConfigurator/WebWindowConfigurator.csproj +++ b/WebWindowConfigurator/WebWindowConfigurator.csproj @@ -6,7 +6,7 @@ net8.0 enable enable - 2.7.10.916 + 2.7.10.917 Annamaria Sassi Egalware Componente gestione JWD per LUX @@ -26,7 +26,7 @@ - + @@ -172,6 +172,13 @@ + + + + + + + diff --git a/WebWindowTest/WebWindowTest.csproj b/WebWindowTest/WebWindowTest.csproj index e2be174..d06e030 100644 --- a/WebWindowTest/WebWindowTest.csproj +++ b/WebWindowTest/WebWindowTest.csproj @@ -12,7 +12,7 @@ - + diff --git a/WebWindowTest/Window.cs b/WebWindowTest/Window.cs index 5b88ce8..09f843d 100644 --- a/WebWindowTest/Window.cs +++ b/WebWindowTest/Window.cs @@ -14,68 +14,337 @@ using static WebWindowTest.ParametriOpzioni; namespace WebWindowTest { - - public class Window + public struct IdNameStruct { - public event EventHandler OnPreview = delegate { }; + #region Public Constructors - private string m_sProfilePath; - public string sProfilePath + public IdNameStruct(int Id, string Name) + { + this = default(IdNameStruct); + m_Id = Id; + m_Name = Name; + } + + #endregion Public Constructors + + #region Public Properties + + public int Id { get { - return m_sProfilePath; + return m_Id; } set { - m_sProfilePath = value; + m_Id = value; } } - private string m_sMaterial; - public string sMaterial + public string Name { get { - return m_sMaterial; + return m_Name; } set { - m_sMaterial = value; - OnUpdatePreview(sSerialized()); + m_Name = value; } } - private string m_sColorMaterial; - public string sColorMaterial + #endregion Public Properties + + #region Public Methods + + public static int IdFromInd(int Ind, ObservableCollection List) + { + return List[Ind].Id; + } + + public static int IdFromInd(int Ind, List List) + { + return List[Ind].Id; + } + + public static int IdFromInd(int Ind, ObservableCollection List) + { + if (List[Ind] is IdNameStruct) + { + return ((IdNameStruct)List[Ind]).Id; + } + + return 0; + } + + public static int IdFromInd(int Ind, List List) + { + if (List[Ind] is IdNameStruct) + { + return ((IdNameStruct)List[Ind]).Id; + } + + return 0; + } + + public static int IdFromName(string Name, ObservableCollection List) + { + checked + { + int num = List.Count - 1; + for (int i = 0; i <= num; i++) + { + if (string.Compare(((IdNameStruct)List[i]).Name, Name, false) == 0) + { + return ((IdNameStruct)List[i]).Id; + } + } + return 0; + } + } + + public static int IdFromName(string Name, List List) + { + checked + { + int num = List.Count - 1; + for (int i = 0; i <= num; i++) + { + if (string.Compare(((IdNameStruct)List[i]).Name, Name, false) == 0) + { + return ((IdNameStruct)List[i]).Id; + } + } + return 0; + } + } + + public static int IndFromId(int Id, ObservableCollection List) + { + checked + { + int num = List.Count - 1; + for (int i = 0; i <= num; i++) + { + if (List[i].Id == Id) + { + return i; + } + } + + return 0; + } + } + + public static int IndFromId(int Id, List List) + { + checked + { + int num = List.Count - 1; + for (int i = 0; i <= num; i++) + { + if (List[i].Id == Id) + { + return i; + } + } + + return 0; + } + } + + public static int IndFromId(int Id, ObservableCollection List) + { + checked + { + int num = List.Count - 1; + for (int i = 0; i <= num; i++) + { + if (List[i] is IdNameStruct && ((IdNameStruct)List[i]).Id == Id) + { + return i; + } + } + + return 0; + } + } + + public static int IndFromId(int Id, List List) + { + checked + { + int num = List.Count - 1; + for (int i = 0; i <= num; i++) + { + if (List[i] is IdNameStruct && ((IdNameStruct)List[i]).Id == Id) + { + return i; + } + } + + return 0; + } + } + + public override string ToString() + { + return Name; + } + + #endregion Public Methods + + #region Private Fields + + private int m_Id; + + private string m_Name; + + #endregion Private Fields + } + + public class AGBOptionCombo : ParametriOpzioni + { + #region Public Constructors + + public AGBOptionCombo(ParametriOpzioniParametri HdwOptionParam) : base(HdwOptionParam) + { + m_Type = HDWOPTIONTYPES.COMBO; + foreach (var Value in HdwOptionParam.Opzioni) + m_ValueList.Add(new AGBOptionParameter(Value.Valore, Value.DescrizioneOpzione)); + m_sValue = m_ValueList.FirstOrDefault(x => x.sValue == HdwOptionParam.ValoreCorrente) ?? new AGBOptionParameter("", ""); + } + + #endregion Public Constructors + + #region Public Properties + + public AGBOptionParameter sValue { get { - return m_sColorMaterial; + return m_sValue; } set { - m_sColorMaterial = value; - OnUpdatePreview(sSerialized()); + m_sValue = value; } } - private string m_sGlass; - public string sGlass + public List ValueList { get { - return m_sGlass; - } - set - { - m_sGlass = value; - OnUpdatePreview(sSerialized()); + return m_ValueList; } } - private ObservableCollection m_AreaList = new ObservableCollection(); - public ObservableCollection AreaList + #endregion Public Properties + + #region Private Fields + + private AGBOptionParameter m_sValue; + private List m_ValueList = new List(); + + #endregion Private Fields + } + + public class AGBOptionParameter + { + #region Public Constructors + + public AGBOptionParameter(string sValue, string sDescription) + { + m_sValue = sValue; + m_sDescription = sDescription; + } + + #endregion Public Constructors + + #region Public Properties + + public string sDescription + { + get + { + return m_sDescription; + } + } + + public string sValue + { + get + { + return m_sValue; + } + } + + #endregion Public Properties + + #region Private Fields + + private string m_sDescription; + private string m_sValue; + + #endregion Private Fields + } + + public class AGBOptionText : ParametriOpzioni + { + #region Public Constructors + + public AGBOptionText(ParametriOpzioniParametri HdwOptionParam) : base(HdwOptionParam) + { + m_Type = HDWOPTIONTYPES.TEXT; + m_sValue = HdwOptionParam.ValoreCorrente; + } + + #endregion Public Constructors + + #region Public Properties + + public string sValue + { + get + { + return m_sValue; + } + set + { + m_sValue = value; + } + } + + #endregion Public Properties + + #region Private Fields + + private string m_sValue; + + #endregion Private Fields + } + + public abstract class Area + { + #region Public Constructors + + public Area(Area ParentArea, Window ParentWindow) + { + m_ParentWindow = ParentWindow; + m_ParentArea = ParentArea; + } + + #endregion Public Constructors + + #region Public Properties + + public static int nCounterGroup + { + get => m_CounterGroup; + set => m_CounterGroup = value; + } + + public List AreaList { get { @@ -87,56 +356,19 @@ namespace WebWindowTest } } - internal JsonWindow Serialize() + public AreaTypes AreaType { - JsonWindow JsonWindow = new JsonWindow(sProfilePath, sMaterial, sColorMaterial, sGlass); - foreach (var Area in AreaList) - JsonWindow.AreaList.Add(Area.Serialize()); - return JsonWindow; - } - - internal string sSerialized() - { - return JsonConvert.SerializeObject(Serialize(), Formatting.Indented); - } - - internal void OnUpdatePreview(string sJwd) - { - OnPreviewEventArgs e = new OnPreviewEventArgs(sJwd); - EventHandler handler = OnPreview; - if (handler != null) + get { - handler(this, e); + return m_AreaType; + } + set + { + m_AreaType = value; } } - } - public class OnPreviewEventArgs : EventArgs - { - public string sJwd; - - public OnPreviewEventArgs(string sJwd) - { - this.sJwd = sJwd; - } - } - - public abstract class Area - { - // Conteggio dei macro elementi - private static int m_CounterGroup = 0; - public static void AddCounterGroup() - { - m_CounterGroup++; - } - public static int nCounterGroup - { - get => m_CounterGroup; - set => m_CounterGroup = value; - } - - private int m_IdGroup; - public int IdGroup + public int IdGroup { get { @@ -146,23 +378,9 @@ namespace WebWindowTest set { m_IdGroup = value; - } - } - public void SetIdGroup(int nIdGroup) - { - m_IdGroup = nIdGroup; - } - - protected Window m_ParentWindow; - public Window ParentWindow - { - get - { - return m_ParentWindow; } } - protected int m_nAreaId = -1; public int nAreaId { get @@ -176,37 +394,6 @@ namespace WebWindowTest } } - private List m_AreaList = new List(); - public List AreaList - { - get - { - return m_AreaList; - } - set - { - m_AreaList = value; - } - } - - private AreaTypes m_AreaType; - public AreaTypes AreaType - { - get - { - return m_AreaType; - } - set - { - m_AreaType = value; - } - } - internal void SetAreaType(AreaTypes AreaType) - { - m_AreaType = AreaType; - } - - private Area m_ParentArea; public Area ParentArea { get @@ -214,18 +401,59 @@ namespace WebWindowTest return m_ParentArea; } } - internal void SetParentArea(Area ParentArea) + + public Window ParentWindow { - m_ParentArea = ParentArea; + get + { + return m_ParentWindow; + } } - public Area(Area ParentArea, Window ParentWindow) + #endregion Public Properties + + #region Public Methods + + public static void AddCounterGroup() { - m_ParentWindow = ParentWindow; - m_ParentArea = ParentArea; + m_CounterGroup++; } - internal abstract JsonArea Serialize(); + public void AddSash() + { + List ContentArea = new List(); + Area ParentArea = AreaList[0].ParentArea; + // Salvo gli oggetti già presenti e li cancello da AreaList + ContentArea.Add(AreaList[0]); + AreaList.Remove(AreaList[0]); + // Aggiungo Area sash di default + Sash SashArea = Sash.CreateSash(ParentArea); + Sash.s_SelFamilyHW = Sash.s_FamilyHardwareList.First(); + SashArea.RefreshHardwareList(); + SashArea.SetSelHardwareFromId(SashArea.HardwareList.First().Id); + // Aggiungo area + AreaList.Add(SashArea); + if (SashArea.nSashQty == 1) + { + // Inserisco il riempimento precedente + AreaList[0].AreaList.Add(ContentArea[0]); + AreaList[0].AreaList[0].SetParentArea(AreaList[0]); + } + else + { + // All'area Sash aggiunto uno Splitted per ogni anta + for (int i = 1; i < SashArea.nSashQty; i++) + { + AreaList[0].AreaList.Add(Splitted.CreateSplitted(SashArea)); + } + Fill fill2 = (Fill)ContentArea[0]; + for (int i = 1; i < SashArea.nSashQty; i++) + { + AreaList[0].AreaList[1].AreaList.Add(Fill.CreateFill(AreaList[0].AreaList[1], fill2.FillType)); + } + } + ParentWindow.OnUpdatePreview(ParentWindow.sSerialized()); + } public void AddSplit(Area ParentArea) { @@ -264,46 +492,17 @@ namespace WebWindowTest ParentWindow.OnUpdatePreview(ParentWindow.sSerialized()); } - public void AddSash() + public abstract Area Copy(Area ParentArea); + + public void SetIdGroup(int nIdGroup) { - List ContentArea = new List(); - Area ParentArea = AreaList[0].ParentArea; - // Salvo gli oggetti già presenti e li cancello da AreaList - ContentArea.Add(AreaList[0]); - AreaList.Remove(AreaList[0]); - // Aggiungo Area sash di default - Sash SashArea = Sash.CreateSash(ParentArea); - Sash.s_SelFamilyHW = Sash.s_FamilyHardwareList.First(); - SashArea.RefreshHardwareList(); - SashArea.SetSelHardwareFromId(SashArea.HardwareList.First().Id); - // Aggiungo area - AreaList.Add(SashArea); - if(SashArea.nSashQty == 1) - { - // Inserisco il riempimento precedente - AreaList[0].AreaList.Add(ContentArea[0]); - AreaList[0].AreaList[0].SetParentArea(AreaList[0]); - } - else - { - // All'area Sash aggiunto uno Splitted per ogni anta - for (int i = 1; i < SashArea.nSashQty; i++) - { - AreaList[0].AreaList.Add(Splitted.CreateSplitted(SashArea)); - } - Fill fill2 = (Fill)ContentArea[0]; - for (int i = 1; i < SashArea.nSashQty; i++) - { - AreaList[0].AreaList[1].AreaList.Add(Fill.CreateFill(AreaList[0].AreaList[1], fill2.FillType)); - } - } - ParentWindow.OnUpdatePreview(ParentWindow.sSerialized()); + m_IdGroup = nIdGroup; } public void SwapAree() { Area tempArea; - if(this is Sash || this is Split) + if (this is Sash || this is Split) { tempArea = AreaList[0]; AreaList[0] = AreaList[1]; @@ -311,38 +510,226 @@ namespace WebWindowTest } } - public abstract Area Copy(Area ParentArea); + #endregion Public Methods + + #region Internal Methods + + internal abstract JsonArea Serialize(); + + internal void SetAreaType(AreaTypes AreaType) + { + m_AreaType = AreaType; + } + + internal void SetParentArea(Area ParentArea) + { + m_ParentArea = ParentArea; + } + + #endregion Internal Methods + + #region Protected Fields + + protected int m_nAreaId = -1; + + protected Window m_ParentWindow; + + #endregion Protected Fields + + #region Private Fields + + // Conteggio dei macro elementi + private static int m_CounterGroup = 0; + + private List m_AreaList = new List(); + private AreaTypes m_AreaType; + private int m_IdGroup; + private Area m_ParentArea; + + #endregion Private Fields + } + + public class Fill : Area + { + #region Public Constructors + + public Fill(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) + { + } + + #endregion Public Constructors + + #region Public Properties + + public FillTypes FillType + { + get + { + return (FillTypes)m_SelFillType; + } + } + + public List FillTypeList + { + get + { + return m_FillTypeList; + } + } + + public FillTypes SelFillType + { + get + { + return m_SelFillType; + } + set + { + m_SelFillType = value; + } + } + + public int SelFillTypeIndex + { + get + { + return IdNameStruct.IndFromId((int)m_SelFillType, m_FillTypeList); + } + set + { + m_SelFillType = (FillTypes)IdNameStruct.IdFromInd(value, m_FillTypeList); + m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); + } + } + + #endregion Public Properties + + #region Public Methods + + public override Fill Copy(Area newParentArea) + { + Fill newFill = new Fill(newParentArea, m_ParentWindow); + AddCounterGroup(); + newFill.SetIdGroup(nCounterGroup); + newFill.SetFillType(SelFillType); + newFill.SetAreaType(AreaType); + return newFill; + } + + #endregion Public Methods + + #region Internal Methods + + internal static Fill CreateFill(Area AreaParent, FillTypes FillType) + { + Fill Fill = new Fill(AreaParent, AreaParent.ParentWindow); + AddCounterGroup(); + Fill.SetIdGroup(nCounterGroup); + Fill.SetAreaType(AreaTypes.FILL); + Fill.SetFillType(FillType); + return Fill; + } + + internal override JsonArea Serialize() + { + if (nCounterGroup < IdGroup) + Area.nCounterGroup = IdGroup; + JsonFill JsonFill = new JsonFill(FillType, IdGroup); + foreach (var Area in AreaList) + JsonFill.AreaList.Add(Area.Serialize()); + return JsonFill; + } + + internal void SetFillType(FillTypes value) + { + m_SelFillType = value; + m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); + } + + #endregion Internal Methods + + #region Private Fields + + private List m_FillTypeList = new List + { + new IdNameStruct((int)FillTypes.GLASS, "Glass"), + new IdNameStruct((int)FillTypes.WOOD, "Wood") + }; + + private FillTypes m_SelFillType; + + #endregion Private Fields } public class Frame : Area { - private ObservableCollection m_ShapeList = new ObservableCollection + #region Public Constructors + + public Frame(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) { - new IdNameStruct((int)Shapes.RECTANGLE, "Rectangle"), - new IdNameStruct((int)Shapes.RIGHTCHAMFER, "Right Chamfer"), - new IdNameStruct((int)Shapes.LEFTCHAMFER, "Left Chamfer"), - new IdNameStruct((int)Shapes.DOUBLECHAMFER, "Double Chamfer"), - new IdNameStruct((int)Shapes.ARC, "Arc"), - new IdNameStruct((int)Shapes.ARC_FULL, "Arc Full"), - new IdNameStruct((int)Shapes.DOUBLEARC, "Double Arc"), - new IdNameStruct((int)Shapes.TRIANGLE, "Triangle") - }; - public ObservableCollection ShapeList + } + + #endregion Public Constructors + + #region Public Properties + + public bool BottomRail { get { - return m_ShapeList; + return m_bBottomRail; + } + set + { + m_bBottomRail = value; + m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); } } - private Shapes m_Shape; - public Shapes Shape + public int BottomRailQty { get { - return m_Shape; + return m_nBottomRailQty; + } + set + { + if (m_nBottomRailQty >= 0) + { + m_nBottomRailQty = value; + if (m_nBottomRailQty > 0) + { + m_bBottomRail = true; + } + else + { + m_bBottomRail = false; + } + } + m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); } } + + public ObservableCollection DimensionList + { + get + { + return m_DimensionList; + } + } + + public ObservableCollection JointList + { + get + { + return m_JointList; + } + set + { + m_JointList = value; + } + } + public int SelShapeIndex { get @@ -466,6 +853,71 @@ namespace WebWindowTest m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); } } + + public Shapes Shape + { + get + { + return m_Shape; + } + } + + public ObservableCollection ShapeList + { + get + { + return m_ShapeList; + } + } + + #endregion Public Properties + + #region Public Methods + + public override Frame Copy(Area ParentArea) + { + return null; + } + + #endregion Public Methods + + #region Internal Methods + + internal static Area CreateFrame(Window Window) + { + Frame NewFrame = new Frame(null, Window); + NewFrame.SetAreaType(AreaTypes.FRAME); + NewFrame.SetSelShape(Shapes.RECTANGLE); + NewFrame.SetBottomRail(false); + NewFrame.SetBottomRailQty(0); + return NewFrame; + } + + internal override JsonArea Serialize() + { + Area.nCounterGroup = 0; + if (nCounterGroup < IdGroup) + Area.nCounterGroup = IdGroup; + JsonFrame JsonFrame = new JsonFrame(m_Shape, m_bBottomRail, m_nBottomRailQty, IdGroup); + foreach (var Dimension in DimensionList) + JsonFrame.DimensionList.Add(Dimension.Serialize()); + foreach (var Joint in JointList) + JsonFrame.JointList.Add(Joint.Serialize()); + foreach (var Area in AreaList) + JsonFrame.AreaList.Add(Area.Serialize()); + return JsonFrame; + } + + internal void SetBottomRail(bool bBottomRail) + { + m_bBottomRail = bBottomRail; + } + + internal void SetBottomRailQty(int nBottomRailQty) + { + m_nBottomRailQty = nBottomRailQty; + } + internal void SetSelShape(Shapes Value) { DimensionList.Clear(); @@ -571,16 +1023,413 @@ namespace WebWindowTest m_Shape = Value; } + #endregion Internal Methods + + #region Private Fields + + private bool m_bBottomRail; + private ObservableCollection m_DimensionList = new ObservableCollection(); - public ObservableCollection DimensionList + + private ObservableCollection m_JointList = new ObservableCollection(); + + private int m_nBottomRailQty = 0; + + private Shapes m_Shape; + + private ObservableCollection m_ShapeList = new ObservableCollection + { + new IdNameStruct((int)Shapes.RECTANGLE, "Rectangle"), + new IdNameStruct((int)Shapes.RIGHTCHAMFER, "Right Chamfer"), + new IdNameStruct((int)Shapes.LEFTCHAMFER, "Left Chamfer"), + new IdNameStruct((int)Shapes.DOUBLECHAMFER, "Double Chamfer"), + new IdNameStruct((int)Shapes.ARC, "Arc"), + new IdNameStruct((int)Shapes.ARC_FULL, "Arc Full"), + new IdNameStruct((int)Shapes.DOUBLEARC, "Double Arc"), + new IdNameStruct((int)Shapes.TRIANGLE, "Triangle") + }; + + #endregion Private Fields + } + + public class FrameDimension + { + #region Public Constructors + + public FrameDimension(Frame ParentFrame, int nIndex, string sName, double dValue, bool bIsLen) + { + m_ParentFrame = ParentFrame; + m_nIndex = nIndex; + m_sName = sName; + m_dValue = dValue; + m_bIsLen = bIsLen; + } + + #endregion Public Constructors + + #region Public Properties + + public double dValue { get { - return m_DimensionList; + return m_dValue; + } + set + { + m_dValue = value; + if (value > MaxDim) + { + m_dValue = MaxDim; + } + else if (value < MinDim) + { + m_dValue = MinDim; + } + m_ParentFrame.ParentWindow.OnUpdatePreview(m_ParentFrame.ParentWindow.sSerialized()); + } + } + + public int nIndex + { + get + { + return m_nIndex; + } + } + + public Frame ParentFrame + { + get + { + return m_ParentFrame; + } + } + + public string sName + { + get + { + return m_sName; + } + } + + #endregion Public Properties + + #region Internal Methods + + internal JsonFrameDimension Serialize() + { + JsonFrameDimension JsonFrameDimension = new JsonFrameDimension(m_nIndex, m_sName, m_dValue); + return JsonFrameDimension; + } + + #endregion Internal Methods + + #region Protected Fields + + protected Frame m_ParentFrame; + + #endregion Protected Fields + + #region Private Fields + + private bool m_bIsLen = false; + + private double m_dValue; + + private int m_nIndex; + + private string m_sName; + + // valore massimo e minimo della dimensione del frame + private int MaxDim = 4000; + + private int MinDim = 600; + + #endregion Private Fields + } + + public class Joint + { + #region Public Constructors + + public Joint(Area ParentArea, int nIndex, Joints SelJointType) + { + m_ParentArea = ParentArea; + m_nIndex = nIndex; + m_SelJointType = SelJointType; + } + + #endregion Public Constructors + + #region Public Properties + + public List JointTypeList + { + get + { + return m_JointTypeList; + } + } + + public int nIndex + { + get + { + return m_nIndex; + } + } + + public Area ParentArea + { + get + { + return m_ParentArea; + } + } + + public Joints SelJointType + { + get + { + return m_SelJointType; + } + set + { + m_SelJointType = value; + } + } + + public int SelJointTypeIndex + { + get + { + return IdNameStruct.IndFromId((int)m_SelJointType, m_JointTypeList); + } + set + { + m_SelJointType = (Joints)IdNameStruct.IdFromInd(value, m_JointTypeList); + m_ParentArea.ParentWindow.OnUpdatePreview(m_ParentArea.ParentWindow.sSerialized()); + } + } + + #endregion Public Properties + + #region Public Methods + + public Joint Copy() + { + Joint newJoint = new Joint(ParentArea, nIndex, SelJointType); + return newJoint; + } + + #endregion Public Methods + + #region Internal Methods + + internal JsonJoint Serialize() + { + JsonJoint JsonJoint = new JsonJoint(m_nIndex, m_SelJointType); + return JsonJoint; + } + + internal void SetSelJointType(Joints value) + { + m_SelJointType = value; + //NotifyPropertyChanged(nameof(SelJointTypeIndex)); + } + + #endregion Internal Methods + + #region Protected Fields + + protected Area m_ParentArea; + + #endregion Protected Fields + + #region Private Fields + + private List m_JointTypeList = new List + { + new IdNameStruct((int)Joints.ANGLED, "Angled"), + new IdNameStruct((int)Joints.FULL_H, "Full H"), + new IdNameStruct((int)Joints.FULL_V, "Full V") + }; + + private int m_nIndex; + private Joints m_SelJointType; + + #endregion Private Fields + } + + public class OnPreviewEventArgs : EventArgs + { + #region Public Fields + + public string sJwd; + + #endregion Public Fields + + #region Public Constructors + + public OnPreviewEventArgs(string sJwd) + { + this.sJwd = sJwd; + } + + #endregion Public Constructors + } + + public partial class ParametriOpzioni + { + #region Public Constructors + + public ParametriOpzioni(ParametriOpzioniParametri HdwOptionParam) + { + m_sName = HdwOptionParam.NomeParametro; + m_sDescription = HdwOptionParam.DescrizioneParametro; + m_OptVisibility = Visibility.VISIBLE; + // If(HdwOptionParam.Visible.ToLower = "true", Visibility.Visible, Visibility.Collapsed) + } + + #endregion Public Constructors + + #region Public Enums + + public enum HDWOPTIONTYPES : int + { + TEXT = 1, + LENGHT = 2, + COMBO = 3 + } + + #endregion Public Enums + + #region Public Properties + + public Visibility OptVisibility + { + get + { + return m_OptVisibility; + } + } + + public string sDescription + { + get + { + return m_sDescription; + } + } + + public string sName + { + get + { + return m_sName; + } + } + + public HDWOPTIONTYPES Type + { + get + { + return m_Type; + } + } + + #endregion Public Properties + + #region Protected Fields + + protected HDWOPTIONTYPES m_Type; + + #endregion Protected Fields + + #region Private Fields + + private Visibility m_OptVisibility; + private string m_sDescription; + private string m_sName; + + #endregion Private Fields + } + + public class Sash : Area + { + #region Public Fields + + // Lista hardware completa passata dal chiamante del componente + public static List m_HardwareCompleteList = new List(); + + // Lista hardware completa passata dal chiamante del componente + public static List s_FamilyHardwareList = new List(); + + // Macro famiglia hardware scelta dal chiamante + public static string s_SelFamilyHW = ""; + + #endregion Public Fields + + #region Public Constructors + + public Sash(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) + { + } + + #endregion Public Constructors + + #region Public Properties + + public bool bIsMeasureGlass + { + get + { + return m_bIsMeasureGlass; + } + set + { + m_bIsMeasureGlass = value; + } + } + + public bool bIsPercentage + { + get + { + return m_bIsPercentage; + } + } + + public bool bIsSashVertical + { + get + { + return m_bIsSashVertical; + } + set + { + m_bIsSashVertical = value; + } + } + + public ObservableCollection HardwareList + { + get + { + return m_HardwareList; + } + } + + public ObservableCollection HwdOptionList + { + get + { + return m_HwdOptionList; } } - private ObservableCollection m_JointList = new ObservableCollection(); public ObservableCollection JointList { get @@ -593,97 +1442,6 @@ namespace WebWindowTest } } - private bool m_bBottomRail; - public bool BottomRail - { - get - { - return m_bBottomRail; - } - set - { - m_bBottomRail = value; - m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); - } - } - internal void SetBottomRail(bool bBottomRail) - { - m_bBottomRail = bBottomRail; - } - - private int m_nBottomRailQty = 0; - public int BottomRailQty - { - get - { - return m_nBottomRailQty; - } - set - { - if (m_nBottomRailQty >= 0) - { - m_nBottomRailQty = value; - if (m_nBottomRailQty > 0) - { - m_bBottomRail = true; - } - else - { - m_bBottomRail = false; - } - } - m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); - } - } - internal void SetBottomRailQty(int nBottomRailQty) - { - m_nBottomRailQty = nBottomRailQty; - } - - public Frame(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) - { - } - - internal static Area CreateFrame(Window Window) - { - Frame NewFrame = new Frame(null, Window); - NewFrame.SetAreaType(AreaTypes.FRAME); - NewFrame.SetSelShape(Shapes.RECTANGLE); - NewFrame.SetBottomRail(false); - NewFrame.SetBottomRailQty(0); - return NewFrame; - } - - public override Frame Copy(Area ParentArea) - { - return null; - } - - internal override JsonArea Serialize() - { - Area.nCounterGroup = 0; - if (nCounterGroup < IdGroup) - Area.nCounterGroup = IdGroup; - JsonFrame JsonFrame = new JsonFrame(m_Shape, m_bBottomRail, m_nBottomRailQty, IdGroup); - foreach (var Dimension in DimensionList) - JsonFrame.DimensionList.Add(Dimension.Serialize()); - foreach (var Joint in JointList) - JsonFrame.JointList.Add(Joint.Serialize()); - foreach (var Area in AreaList) - JsonFrame.AreaList.Add(Area.Serialize()); - return JsonFrame; - } - } - - public class Sash : Area - { - // Lista hardware completa passata dal chiamante del componente - public static List m_HardwareCompleteList = new List(); - // Lista hardware completa passata dal chiamante del componente - public static List s_FamilyHardwareList = new List(); - // Macro famiglia hardware scelta dal chiamante - public static string s_SelFamilyHW = ""; - public int nSashQty { get @@ -710,12 +1468,12 @@ namespace WebWindowTest // aggiungo area Sash di default for (var SplitIndex = m_SashList.Count; SplitIndex <= value - 1; SplitIndex++) { - SashList.Add(new SashDimension(dNewDimension, true, this, SplitIndex+1)); + SashList.Add(new SashDimension(dNewDimension, true, this, SplitIndex + 1)); } } else if (value < m_SashList.Count) { - if(value > 0) + if (value > 0) { double dLastDimension = 0; for (var SplitIndex = m_SashList.Count - 1; SplitIndex >= value; SplitIndex += -1) @@ -725,7 +1483,7 @@ namespace WebWindowTest } dLastDimension += m_SashList[SashList.Count - 1].dDimension; SashList[SashList.Count - 1].SetDimension(dLastDimension); - if(value == 1) + if (value == 1) SashList[0].SetHasHandle(true); } else @@ -733,7 +1491,7 @@ namespace WebWindowTest SashList.RemoveAt(0); } } - if(m_SashList.Count == 0) + if (m_SashList.Count == 0) { Area child = AreaList[0]; // Se nella singola anta ho uno split @@ -774,10 +1532,10 @@ namespace WebWindowTest else { // Se aggiungo ante - if(SashList.Count > AreaList.Count) + if (SashList.Count > AreaList.Count) { List ContentArea = new List(); - // Salvo in ContentArea il sottoalbero delle singole aree che mantengo + // Salvo in ContentArea il sottoalbero delle singole aree che mantengo if (AreaList.Count >= 1 & SashList.Count > AreaList.Count) { foreach (Area area in AreaList) @@ -801,7 +1559,6 @@ namespace WebWindowTest ContentArea[i].SetParentArea(AreaList[i]); } AreaList[i].AreaList.Add(ContentArea[i]); - } // Aggiungo all'ultimo Splitted l'area di vetro Fill newFill = Fill.CreateFill(AreaList[1], FillTypes.GLASS); @@ -827,60 +1584,6 @@ namespace WebWindowTest m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); } } - internal void SetSashQty(int Qty) - { - if(Qty >= 0 && Qty <= 4) - { - if (Qty > m_SashList.Count) - { - // recupero larghezza ultimo - double dLastDimension = 100; - double dNewDimension = 100; - if (m_SashList.Count > 0) - { - dLastDimension = m_SashList[m_SashList.Count - 1].dDimension; - dNewDimension = dLastDimension / (Qty + 1 - nSashQty); - m_SashList[m_SashList.Count - 1].dDimension = dNewDimension; - } - else - dNewDimension = dLastDimension / (Qty + 1 - nSashQty); - // aggiungo area Sash di default - for (var SplitIndex = m_SashList.Count; SplitIndex <= Qty - 1; SplitIndex++) - SashList.Add(new SashDimension(dNewDimension, true, this, SplitIndex + 1)); - } - else if (Qty < m_SashList.Count) - { - for (var SplitIndex = m_SashList.Count - 1; SplitIndex >= Qty; SplitIndex += -1) - SashList.RemoveAt(SplitIndex); - } - } - } - - private List m_OrientationSashTypeList = new List - { - new IdNameStruct((int)OrientationSash.VERTICAL, "Vertical"), - new IdNameStruct((int)OrientationSash.HORIZONTAL, "Horizontal"), - }; - public List OrientationSashTypeList - { - get - { - return m_OrientationSashTypeList; - } - } - - private OrientationSash m_SelOrientationSashType; - public OrientationSash SelOrientationSashType - { - get - { - return m_SelOrientationSashType; - } - set - { - m_SelOrientationSashType = value; - } - } public OrientationSash OrientationSashType { @@ -889,117 +1592,15 @@ namespace WebWindowTest return (OrientationSash)m_SelOrientationSashType; } } - internal void SetOrientationSashType(OrientationSash value) - { - m_SelOrientationSashType = value; - } - public int SelOrientationSashTypeIndex + + public List OrientationSashTypeList { get { - return IdNameStruct.IndFromId((int)m_SelOrientationSashType, m_OrientationSashTypeList); - } - set - { - m_SelOrientationSashType = (OrientationSash)IdNameStruct.IdFromInd(value, m_OrientationSashTypeList); - if(value == 0) - { - m_bIsSashVertical = true; - } - else - { - m_bIsSashVertical = false; - } - m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); + return m_OrientationSashTypeList; } } - private bool m_bIsSashVertical; - public bool bIsSashVertical - { - get - { - return m_bIsSashVertical; - } - set - { - m_bIsSashVertical = value; - } - } - internal void SetIsSashVertical(bool IsSashVertical) - { - m_bIsSashVertical = IsSashVertical; - if (IsSashVertical) - { - m_SelOrientationSashType = OrientationSash.VERTICAL; - } - else - { - m_SelOrientationSashType = OrientationSash.HORIZONTAL; - } - } - - private bool m_bIsMeasureGlass; - public bool bIsMeasureGlass - { - get - { - return m_bIsMeasureGlass; - } - set - { - m_bIsMeasureGlass = value; - } - } - internal void SetIsMeasureGlass(bool IsMeasureGlass) - { - m_bIsMeasureGlass = IsMeasureGlass; - } - - private ObservableCollection m_SashList = new ObservableCollection(); - public ObservableCollection SashList - { - get - { - return m_SashList; - } - set - { - m_SashList = value; - } - } - - private SashTypes m_SashType; - public SashTypes SashType - { - get - { - return m_SashType; - } - set - { - m_SashType = value; - } - } - internal void SetSashType(SashTypes SashType) - { - m_SashType = SashType; - } - - private ObservableCollection m_JointList = new ObservableCollection(); - public ObservableCollection JointList - { - get - { - return m_JointList; - } - set - { - m_JointList = value; - } - } - - private bool m_bSashBottomRail; public bool SashBottomRail { get @@ -1011,12 +1612,7 @@ namespace WebWindowTest m_bSashBottomRail = value; } } - internal void SetSashBottomRail(bool bBottomRail) - { - m_bSashBottomRail = bBottomRail; - } - private int m_nSashBottomRailQty; public int SashBottomRailQty { get @@ -1026,7 +1622,7 @@ namespace WebWindowTest set { // Controllo che il valore inserito sia positivo - if(value >= 0) + if (value >= 0) { m_nSashBottomRailQty = value; if (m_nSashBottomRailQty > 0) @@ -1041,30 +1637,31 @@ namespace WebWindowTest } } } - internal void SetSashBottomRailQty(int nBottomRailQty) - { - m_nSashBottomRailQty = nBottomRailQty; - } - private bool m_bIsPercentage = true; - public bool bIsPercentage + public ObservableCollection SashList { get { - return m_bIsPercentage; + return m_SashList; + } + set + { + m_SashList = value; } } - private ObservableCollection m_HardwareList = new ObservableCollection(); - public ObservableCollection HardwareList + public SashTypes SashType { get { - return m_HardwareList; + return m_SashType; + } + set + { + m_SashType = value; } } - private Hardware m_SelHardware; public Hardware SelHardware { get @@ -1146,21 +1743,6 @@ namespace WebWindowTest } } - internal void SetSelHardware(Hardware value) - { - m_SelHardware = value; - } - - internal void SetSelHardwareFromId(string sId) - { - if(m_HardwareList.Count == 0) - m_SelHardware = m_HardwareCompleteList.FirstOrDefault(x => x.Id == sId) ?? new Hardware("", "", "", "", "", 0, 0); - else - m_SelHardware = m_HardwareList.FirstOrDefault(x => x.Id == sId)?? new Hardware("","","","","",0,0); - if (m_SelHardware == null) - m_SelHardware = m_HardwareList[0]; - } - public int SelHardwareTypeIndex { get @@ -1181,27 +1763,116 @@ namespace WebWindowTest } } - internal void SetFirstHardware() - { - if (m_HardwareList.Count > 0) - { - m_SelHardware = m_HardwareList[0]; - } - } - - private ObservableCollection m_HwdOptionList = new ObservableCollection(); - public ObservableCollection HwdOptionList + public OrientationSash SelOrientationSashType { get { - return m_HwdOptionList; + return m_SelOrientationSashType; + } + set + { + m_SelOrientationSashType = value; } } - public Sash(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) + public int SelOrientationSashTypeIndex { + get + { + return IdNameStruct.IndFromId((int)m_SelOrientationSashType, m_OrientationSashTypeList); + } + set + { + m_SelOrientationSashType = (OrientationSash)IdNameStruct.IdFromInd(value, m_OrientationSashTypeList); + if (value == 0) + { + m_bIsSashVertical = true; + } + else + { + m_bIsSashVertical = false; + } + m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); + } } + #endregion Public Properties + + #region Public Methods + + public override Sash Copy(Area newParentArea) + { + Sash newSash = new Sash(newParentArea, m_ParentWindow); + AddCounterGroup(); + newSash.SetIdGroup(nCounterGroup); + newSash.SetAreaType(AreaType); + // Imposta la quantità di ante e definisce SashDimension di ogni anta ai valori di default + newSash.SetSashQty(nSashQty); + newSash.SetIsSashVertical(bIsSashVertical); + newSash.SetOrientationSashType(OrientationSashType); + newSash.SetSashBottomRailQty(SashBottomRailQty); + newSash.RefreshHardwareList(); + newSash.RefreshHardwareOptionList(); + newSash.SetSelHardware(SelHardware); + for (int i = 0; i < SashList.Count; i++) + { + //Cancello SashDimension di default e aggiungo la copia + newSash.SashList.RemoveAt(i); + SashDimension newSashDim = SashList[i].Copy(); + newSash.SashList.Insert(i, newSashDim); + } + foreach (var item in JointList) + { + Joint newJoint = item.Copy(); + newSash.JointList.Add(newJoint); + } + foreach (var item in AreaList) + { + Area newArea = item.Copy(newSash); + newSash.AreaList.Add(newArea); + } + return newSash; + } + + public void RefreshHardwareList() + { + m_HardwareList.Clear(); + string sSashShape = FindSashShape(); + string sOpeningType = ConvertOpeningType(); + var iComp = StringComparison.InvariantCultureIgnoreCase; + var rawList = m_HardwareCompleteList + .Where(x => x.Id == "000000" || + (x.FamilyName.Equals(s_SelFamilyHW, iComp) && x.SashQty == nSashQty + && x.Shape.Equals(sSashShape, iComp) +#if false + && x.OpeningType.Equals(sOpeningType, iComp) +#endif + ) + ) + .ToList(); + if (rawList != null && rawList.Count > 0) + { + m_HardwareList = new ObservableCollection(rawList); + } + else + { + m_HardwareList = new ObservableCollection(); + } + } + + public void Remove() + { + ParentArea.AreaList.Remove(this); + Fill newFill = Fill.CreateFill(ParentArea, FillTypes.GLASS); + newFill.SetAreaType(AreaTypes.FILL); + ParentArea.AreaList.Add(newFill); + m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); + } + + #endregion Public Methods + + #region Internal Methods + internal static Sash CreateSash(Area Area) { Sash newSash = new Sash(Area, Area.ParentWindow); @@ -1220,9 +1891,34 @@ namespace WebWindowTest newSash.SetFirstHardware(); return newSash; } - private string FindSashShape() + + internal OpeningSides GetOpeningSide(Openings OpeningType) { - return "Rectangular"; + switch (OpeningType) + { + case Openings.TURNONLY_LEFT: + case Openings.TILTTURN_LEFT: + case Openings.TILTONLY_TOP: + case Openings.COMPLANARSLIDE_LEFT: + case Openings.LIFTSLIDE_LEFT: + { + return OpeningSides.LEFT; + } + + case Openings.TURNONLY_RIGHT: + case Openings.TILTTURN_RIGHT: + case Openings.TILTONLY_BOTTOM: + case Openings.COMPLANARSLIDE_RIGHT: + case Openings.LIFTSLIDE_RIGHT: + { + return OpeningSides.RIGHT; + } + + default: + { + return OpeningSides.NULL; + } + } } internal OpeningTypes GetOpeningType(Openings OpeningType) @@ -1276,11 +1972,155 @@ namespace WebWindowTest } } + internal void RefreshHardwareOptionList() + { + m_HwdOptionList.Clear(); + } + + internal override JsonArea Serialize() + { + if (nCounterGroup < IdGroup) + Area.nCounterGroup = IdGroup; + JsonSash JsonSash = new JsonSash(m_bIsSashVertical, m_SashType, m_bSashBottomRail, m_nSashBottomRailQty, m_SelHardware.Id, IdGroup); + foreach (var SashDimension in SashList) + JsonSash.SashList.Add(SashDimension.Serialize()); + foreach (var Joint in JointList) + JsonSash.JointList.Add(Joint.Serialize()); + foreach (var Area in AreaList) + JsonSash.AreaList.Add(Area.Serialize()); + return JsonSash; + } + + internal void SetFirstHardware() + { + if (m_HardwareList.Count > 0) + { + m_SelHardware = m_HardwareList[0]; + } + } + + internal void SetIsMeasureGlass(bool IsMeasureGlass) + { + m_bIsMeasureGlass = IsMeasureGlass; + } + + internal void SetIsSashVertical(bool IsSashVertical) + { + m_bIsSashVertical = IsSashVertical; + if (IsSashVertical) + { + m_SelOrientationSashType = OrientationSash.VERTICAL; + } + else + { + m_SelOrientationSashType = OrientationSash.HORIZONTAL; + } + } + + internal void SetOrientationSashType(OrientationSash value) + { + m_SelOrientationSashType = value; + } + + internal void SetSashBottomRail(bool bBottomRail) + { + m_bSashBottomRail = bBottomRail; + } + + internal void SetSashBottomRailQty(int nBottomRailQty) + { + m_nSashBottomRailQty = nBottomRailQty; + } + + internal void SetSashQty(int Qty) + { + if (Qty >= 0 && Qty <= 4) + { + if (Qty > m_SashList.Count) + { + // recupero larghezza ultimo + double dLastDimension = 100; + double dNewDimension = 100; + if (m_SashList.Count > 0) + { + dLastDimension = m_SashList[m_SashList.Count - 1].dDimension; + dNewDimension = dLastDimension / (Qty + 1 - nSashQty); + m_SashList[m_SashList.Count - 1].dDimension = dNewDimension; + } + else + dNewDimension = dLastDimension / (Qty + 1 - nSashQty); + // aggiungo area Sash di default + for (var SplitIndex = m_SashList.Count; SplitIndex <= Qty - 1; SplitIndex++) + SashList.Add(new SashDimension(dNewDimension, true, this, SplitIndex + 1)); + } + else if (Qty < m_SashList.Count) + { + for (var SplitIndex = m_SashList.Count - 1; SplitIndex >= Qty; SplitIndex += -1) + SashList.RemoveAt(SplitIndex); + } + } + } + + internal void SetSashType(SashTypes SashType) + { + m_SashType = SashType; + } + + internal void SetSelHardware(Hardware value) + { + m_SelHardware = value; + } + + internal void SetSelHardwareFromId(string sId) + { + if (m_HardwareList.Count == 0) + m_SelHardware = m_HardwareCompleteList.FirstOrDefault(x => x.Id == sId) ?? new Hardware("", "", "", Enums.OpeningTypes.Null, "", 0, 0); + else + m_SelHardware = m_HardwareList.FirstOrDefault(x => x.Id == sId) ?? new Hardware("", "", "", Enums.OpeningTypes.Null, "", 0, 0); + if (m_SelHardware == null) + m_SelHardware = m_HardwareList[0]; + } + + #endregion Internal Methods + + #region Private Fields + + private bool m_bIsMeasureGlass; + + private bool m_bIsPercentage = true; + + private bool m_bIsSashVertical; + + private bool m_bSashBottomRail; + + private ObservableCollection m_HardwareList = new ObservableCollection(); + + private ObservableCollection m_HwdOptionList = new ObservableCollection(); + + private ObservableCollection m_JointList = new ObservableCollection(); + + private int m_nSashBottomRailQty; + + private List m_OrientationSashTypeList = new List + { + new IdNameStruct((int)OrientationSash.VERTICAL, "Vertical"), + new IdNameStruct((int)OrientationSash.HORIZONTAL, "Horizontal"), + }; + + private ObservableCollection m_SashList = new ObservableCollection(); + private SashTypes m_SashType; + private Hardware m_SelHardware; + private OrientationSash m_SelOrientationSashType; + + #endregion Private Fields + + #region Private Methods + private string ConvertOpeningType() { - if(m_SashList.Count > 1) + if (m_SashList.Count > 1) { - for(int i = 0; i < m_SashList.Count; i++) + for (int i = 0; i < m_SashList.Count; i++) { if (m_SashList[i].bHasHandle) { @@ -1289,7 +2129,6 @@ namespace WebWindowTest else return "ANTA_RIBALTA"; } - } return ""; } @@ -1332,122 +2171,350 @@ namespace WebWindowTest return ""; } - public void RefreshHardwareList() + private string FindSashShape() { - m_HardwareList.Clear(); - string sSashShape = FindSashShape(); - string sOpeningType = ConvertOpeningType(); - var iComp = StringComparison.InvariantCultureIgnoreCase; - var rawList = m_HardwareCompleteList - .Where(x => x.Id == "000000" || - (x.FamilyName.Equals(s_SelFamilyHW, iComp) && x.SashQty == nSashQty && x.Shape.Equals(sSashShape, iComp) && x.OpeningType.Equals(sOpeningType, iComp)) - ) - .ToList(); - if (rawList != null && rawList.Count > 0) + return "Rectangular"; + } + + #endregion Private Methods + } + + public class SashDimension + { + #region Public Constructors + + public SashDimension(double dDimension, bool bIsRelative, Sash Parent, int nSashId) + { + m_dDimension = dDimension; + m_bIsRelative = bIsRelative; + m_Parent = Parent; + m_nSashId = nSashId; + // assengno maniglia + if (Parent.SashList.Count == 0 || !Parent.SashList.Any(x => x.bHasHandle)) + m_bHasHandle = true; + // assegno tipo di anta + if (Parent.SashList.Count == 0) + SetOpeningType(Openings.TILTTURN_LEFT); + else if (Parent.SashList.Count == 1) { - m_HardwareList = new ObservableCollection(rawList); + switch (Parent.SashList[0].OpeningType) + { + case Openings.TURNONLY_LEFT: + { + SetOpeningType(Openings.TURNONLY_RIGHT); + break; + } + + case Openings.TURNONLY_RIGHT: + { + SetOpeningType(Openings.TURNONLY_LEFT); + break; + } + + case Openings.TILTTURN_LEFT: + { + SetOpeningType(Openings.TURNONLY_RIGHT); + break; + } + + case Openings.TILTTURN_RIGHT: + { + SetOpeningType(Openings.TURNONLY_LEFT); + break; + } + + case Openings.TILTONLY_TOP: + { + SetOpeningType(Openings.TILTONLY_BOTTOM); + break; + } + + case Openings.TILTONLY_BOTTOM: + { + SetOpeningType(Openings.TILTONLY_TOP); + break; + } + + case Openings.COMPLANARSLIDE_LEFT: + { + SetOpeningType(Openings.COMPLANARSLIDE_RIGHT); + break; + } + + case Openings.COMPLANARSLIDE_RIGHT: + { + SetOpeningType(Openings.COMPLANARSLIDE_LEFT); + break; + } + + case Openings.LIFTSLIDE_LEFT: + { + SetOpeningType(Openings.LIFTSLIDE_RIGHT); + break; + } + + case Openings.LIFTSLIDE_RIGHT: + { + SetOpeningType(Openings.LIFTSLIDE_LEFT); + break; + } + } } else + SetOpeningType(Parent.SashList[Parent.SashList.Count - 1].OpeningType); + } + + #endregion Public Constructors + + #region Public Properties + + public bool bHasHandle + { + get { - m_HardwareList = new ObservableCollection(); + return m_bHasHandle; + } + set + { + m_bHasHandle = value; + m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized()); } } - internal void RefreshHardwareOptionList() + public bool bIsRelative { - m_HwdOptionList.Clear(); + get + { + return m_bIsRelative; + } } - internal OpeningSides GetOpeningSide(Openings OpeningType) + public double dDimension { - switch (OpeningType) + get { - case Openings.TURNONLY_LEFT: - case Openings.TILTTURN_LEFT: - case Openings.TILTONLY_TOP: - case Openings.COMPLANARSLIDE_LEFT: - case Openings.LIFTSLIDE_LEFT: + return m_dDimension; + } + set + { + // Controllo che il valore inserito sia compreso tra 0 e 100 + if (value > 0 && value < 100) + { + // se sono in percentuale + if (m_bIsRelative) { - return OpeningSides.LEFT; - } - - case Openings.TURNONLY_RIGHT: - case Openings.TILTTURN_RIGHT: - case Openings.TILTONLY_BOTTOM: - case Openings.COMPLANARSLIDE_RIGHT: - case Openings.LIFTSLIDE_RIGHT: - { - return OpeningSides.RIGHT; - } - - default: - { - return OpeningSides.NULL; + // verifico se ci sono assoluti + List RelativeDimList = m_Parent.SashList.Where(x => x.bIsRelative).ToList(); + if (RelativeDimList.Count > 0) + { + if (m_Parent.bIsPercentage) + { + int nIndex = RelativeDimList.IndexOf(this); + // se diminuisce dimensione + if (value < m_dDimension) + { + if (nIndex < RelativeDimList.Count - 1) + RelativeDimList[nIndex + 1].SetDimension(RelativeDimList[nIndex + 1].dDimension + (m_dDimension - value)); + else if (RelativeDimList.Count > 1) + RelativeDimList[nIndex - 1].SetDimension(RelativeDimList[nIndex - 1].dDimension + (m_dDimension - value)); + else + { + m_dDimension = 100; + return; + } + } + // se aumenta dimensione + else + { + double dRes = value; + // se non ultima anta + if (nIndex < RelativeDimList.Count - 1) + { + for (var nInd = 0; nInd <= nIndex - 1; nInd++) + dRes += RelativeDimList[nInd].dDimension; + dRes = (100 - dRes) / (RelativeDimList.Count - nIndex - 1); + for (var Ind = nIndex + 1; Ind <= RelativeDimList.Count - 1; Ind++) + RelativeDimList[Ind].SetDimension(dRes); + } + // se ultima anta + else if (RelativeDimList.Count > 1) + { + if (RelativeDimList.Count > 2) + { + for (var Ind = 0; Ind <= nIndex - 2; Ind++) + dRes += RelativeDimList[Ind].dDimension; + } + + //for (var Ind = nIndex + 1; Ind <= RelativeDimList.Count - 1; Ind++) + // dRes += RelativeDimList[Ind].dDimension; + dRes = (100 - dRes); + RelativeDimList[nIndex - 1].SetDimension(dRes); + //for (var nInd = 0; nInd <= nIndex - 1; nInd++) + // RelativeDimList[nInd].SetDimension(dRes); + } + else + { + m_dDimension = 100; + return; + } + } + } + } } + m_dDimension = value; + m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized()); + } } } - public override Sash Copy(Area newParentArea) + public int nSashId { - Sash newSash = new Sash(newParentArea, m_ParentWindow); - AddCounterGroup(); - newSash.SetIdGroup(nCounterGroup); - newSash.SetAreaType(AreaType); - // Imposta la quantità di ante e definisce SashDimension di ogni anta ai valori di default - newSash.SetSashQty(nSashQty); - newSash.SetIsSashVertical(bIsSashVertical); - newSash.SetOrientationSashType(OrientationSashType); - newSash.SetSashBottomRailQty(SashBottomRailQty); - newSash.RefreshHardwareList(); - newSash.RefreshHardwareOptionList(); - newSash.SetSelHardware(SelHardware); - for (int i = 0; i OpeningTypeList { - if (nCounterGroup < IdGroup) - Area.nCounterGroup = IdGroup; - JsonSash JsonSash = new JsonSash(m_bIsSashVertical, m_SashType, m_bSashBottomRail, m_nSashBottomRailQty, m_SelHardware.Id, IdGroup); - foreach (var SashDimension in SashList) - JsonSash.SashList.Add(SashDimension.Serialize()); - foreach (var Joint in JointList) - JsonSash.JointList.Add(Joint.Serialize()); - foreach (var Area in AreaList) - JsonSash.AreaList.Add(Area.Serialize()); - return JsonSash; + get + { + return m_OpeningTypeList; + } } + + public Openings SelOpeningType + { + get + { + return m_SelOpeningType; + } + set + { + m_SelOpeningType = value; + m_Parent.RefreshHardwareList(); + m_Parent.RefreshHardwareOptionList(); + m_Parent.SetFirstHardware(); + } + } + + public int SelOpeningTypeIndex + { + get + { + return IdNameStruct.IndFromId((int)m_SelOpeningType, m_OpeningTypeList); + } + set + { + m_SelOpeningType = (Openings)IdNameStruct.IdFromInd(value, m_OpeningTypeList); + m_Parent.RefreshHardwareList(); + m_Parent.RefreshHardwareOptionList(); + m_Parent.SetFirstHardware(); + m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized()); + } + } + + #endregion Public Properties + + #region Public Methods + + public SashDimension Copy() + { + SashDimension newSashDim = new SashDimension(dDimension, bIsRelative, m_Parent, m_nSashId); + newSashDim.SetOpeningType(SelOpeningType); + newSashDim.SetHasHandle(bHasHandle); + return newSashDim; + } + + #endregion Public Methods + + #region Internal Methods + + internal JsonSashDimension Serialize() + { + JsonSashDimension JsonSashDimension = new JsonSashDimension(OpeningType, m_bHasHandle, m_dDimension, m_nSashId); + return JsonSashDimension; + } + + internal void SetDimension(double dValue) + { + m_dDimension = dValue; + } + + internal void SetHasHandle(bool value) + { + m_bHasHandle = value; + } + + internal void SetOpeningType(Openings value) + { + m_SelOpeningType = value; + } + + #endregion Internal Methods + + #region Private Fields + + private bool m_bHasHandle; + + private bool m_bIsRelative = false; + + private double m_dDimension; + + private int m_nSashId; + + private List m_OpeningTypeList = new List + { + new IdNameStruct((int)Openings.TURNONLY_LEFT, ">"), + new IdNameStruct((int)Openings.TURNONLY_RIGHT, "<"), + new IdNameStruct((int)Openings.TILTTURN_LEFT, ">*"), + new IdNameStruct((int)Openings.TILTTURN_RIGHT, "<*"), + new IdNameStruct((int)Openings.TILTONLY_TOP, "˄"), + new IdNameStruct((int)Openings.TILTONLY_BOTTOM, "˅"), + new IdNameStruct((int)Openings.PIVOT, "◊"), + new IdNameStruct((int)Openings.FIXED, "X"), + new IdNameStruct((int)Openings.COMPLANARSLIDE_LEFT, "-→"), + new IdNameStruct((int)Openings.COMPLANARSLIDE_RIGHT, "←-"), + new IdNameStruct((int)Openings.LIFTSLIDE_LEFT, "┌→"), + new IdNameStruct((int)Openings.LIFTSLIDE_RIGHT, "←┐") + }; + + // reference + private Sash m_Parent; + + private Openings m_SelOpeningType; + + #endregion Private Fields } public class Split : Area { - private bool m_bSplitStartVert = true; + #region Public Constructors + + public Split(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) + { + } + + #endregion Public Constructors + + #region Public Properties + + public bool bIsPercentage + { + get + { + return m_bIsPercentage; + } + } + public bool bSplitStartVert { get @@ -1460,10 +2527,93 @@ namespace WebWindowTest m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); } } - internal void SetSplitStartVert(bool SplitStartVert) + + public int nSplitQtyHoriz { - bSplitStartVert = SplitStartVert; + get + { + return m_SplitHorizList.Count > 0 ? m_SplitHorizList.Count - 1 : 0; + } + set + { + if (value == 0) + { + for (var SplitIndex = m_SplitHorizList.Count - 1; SplitIndex >= value; SplitIndex += -1) + m_SplitHorizList.RemoveAt(SplitIndex); + if (nSplitQtyVert == 0) + { + ParentArea.AreaList.Remove(this); + Fill newFill = Fill.CreateFill(ParentArea, FillTypes.GLASS); + newFill.SetAreaType(AreaTypes.FILL); + ParentArea.AreaList.Add(newFill); + } + else + SetSplitShape(SplitShapes.VERTICAL); + } + else + { + // Ricalcolo dimensioni aggiungendo split + if (value > m_SplitHorizList.Count - 1) + { + // recupero larghezza ultimo + double dLastDimension = 100; + double dNewDimension = 100; + if (m_SplitHorizList.Count > 0) + { + dLastDimension = m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension; + dNewDimension = dLastDimension / (value + 1 - nSplitQtyHoriz); + m_SplitHorizList[m_SplitHorizList.Count - 1].SetDimension(dNewDimension); + } + else + dNewDimension = dLastDimension / (value + 1 - nSplitQtyHoriz); + // aggiungo area Split di default + for (var SplitIndex = m_SplitHorizList.Count; SplitIndex <= value; SplitIndex++) + m_SplitHorizList.Add(new SplitDimension(dNewDimension, true, this, false)); + } + // Ricalcolo dimensioni rimuovendo split + else + { + double dLastDimension = 0; + for (var SplitIndex = m_SplitHorizList.Count - 1; SplitIndex >= value + 1; SplitIndex += -1) + { + dLastDimension += m_SplitHorizList[SplitIndex].dDimension; + m_SplitHorizList.RemoveAt(SplitIndex); + } + dLastDimension += m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension; + m_SplitHorizList[m_SplitHorizList.Count - 1].SetDimension(dLastDimension); + } + // Controllo quanti split verticali ci sono + int nVert = m_SplitVertList.Count > 0 ? m_SplitVertList.Count : 1; + // Se aggiungo split devo aggiungere vetro nell'area splitted aggiunta + for (var SplitIndex = AreaList.Count; SplitIndex <= (m_SplitHorizList.Count * nVert) - 1; SplitIndex++) + { + AreaList.Add(Splitted.CreateSplitted(this)); + Fill newFill = Fill.CreateFill(AreaList[SplitIndex], FillTypes.GLASS); + newFill.SetAreaType(AreaTypes.FILL); + AreaList[AreaList.Count - 1].AreaList.Add(newFill); + } + // Se ho più di uno split, elimino l'ultimo + if (AreaList.Count > 2) + { + int nAreaList = AreaList.Count - 1; + for (var SplitIndex = (m_SplitHorizList.Count * nVert); SplitIndex <= nAreaList; SplitIndex++) + { + AreaList.Remove(AreaList[AreaList.Count - 1]); + } + } + // Se elimino l'unico split presente + else + { + Splitted s = (Splitted)AreaList[0]; + s.SetParentArea(ParentArea); + ParentArea.AreaList.Add(s); + ParentArea.AreaList.Remove(this); + } + } + m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); + } } + public int nSplitQtyVert { get @@ -1554,159 +2704,7 @@ namespace WebWindowTest m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); } } - internal void SetSplitQtyVert(int QtyVert, bool NotifyProperty = false) - { - if (QtyVert > m_SplitVertList.Count) - { - // recupero larghezza ultimo - double dLastDimension = 100; - double dNewDimension = 100; - if (m_SplitVertList.Count > 0) - { - dLastDimension = m_SplitVertList[m_SplitVertList.Count - 1].dDimension; - dNewDimension = dLastDimension / (QtyVert + 1 - nSplitQtyVert); - m_SplitVertList[m_SplitVertList.Count - 1].dDimension = dNewDimension; - } - else - dNewDimension = dLastDimension / (QtyVert + 1 - nSplitQtyVert); - // aggiungo area Split di default - for (var SplitIndex = m_SplitVertList.Count; SplitIndex <= QtyVert; SplitIndex++) - m_SplitVertList.Add(new SplitDimension(dNewDimension, true, this, true)); - } - else if (QtyVert < m_SplitVertList.Count) - { - for (var SplitIndex = m_SplitVertList.Count - 1; SplitIndex >= QtyVert; SplitIndex += -1) - m_SplitVertList.RemoveAt(SplitIndex); - } - } - public int nSplitQtyHoriz - { - get - { - return m_SplitHorizList.Count > 0 ? m_SplitHorizList.Count - 1 : 0; - } - set - { - if (value == 0) - { - for (var SplitIndex = m_SplitHorizList.Count - 1; SplitIndex >= value; SplitIndex += -1) - m_SplitHorizList.RemoveAt(SplitIndex); - if (nSplitQtyVert == 0) - { - ParentArea.AreaList.Remove(this); - Fill newFill = Fill.CreateFill(ParentArea, FillTypes.GLASS); - newFill.SetAreaType(AreaTypes.FILL); - ParentArea.AreaList.Add(newFill); - } - else - SetSplitShape(SplitShapes.VERTICAL); - } - else - { - // Ricalcolo dimensioni aggiungendo split - if (value > m_SplitHorizList.Count - 1) - { - // recupero larghezza ultimo - double dLastDimension = 100; - double dNewDimension = 100; - if (m_SplitHorizList.Count > 0) - { - dLastDimension = m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension; - dNewDimension = dLastDimension / (value + 1 - nSplitQtyHoriz); - m_SplitHorizList[m_SplitHorizList.Count - 1].SetDimension(dNewDimension); - } - else - dNewDimension = dLastDimension / (value + 1 - nSplitQtyHoriz); - // aggiungo area Split di default - for (var SplitIndex = m_SplitHorizList.Count; SplitIndex <= value; SplitIndex++) - m_SplitHorizList.Add(new SplitDimension(dNewDimension, true, this, false)); - } - // Ricalcolo dimensioni rimuovendo split - else - { - double dLastDimension = 0; - for (var SplitIndex = m_SplitHorizList.Count - 1; SplitIndex >= value + 1; SplitIndex += -1) - { - dLastDimension += m_SplitHorizList[SplitIndex].dDimension; - m_SplitHorizList.RemoveAt(SplitIndex); - } - dLastDimension += m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension; - m_SplitHorizList[m_SplitHorizList.Count - 1].SetDimension(dLastDimension); - } - // Controllo quanti split verticali ci sono - int nVert = m_SplitVertList.Count > 0 ? m_SplitVertList.Count : 1; - // Se aggiungo split devo aggiungere vetro nell'area splitted aggiunta - for (var SplitIndex = AreaList.Count; SplitIndex <= (m_SplitHorizList.Count * nVert) - 1; SplitIndex++) - { - AreaList.Add(Splitted.CreateSplitted(this)); - Fill newFill = Fill.CreateFill(AreaList[SplitIndex], FillTypes.GLASS); - newFill.SetAreaType(AreaTypes.FILL); - AreaList[AreaList.Count - 1].AreaList.Add(newFill); - } - // Se ho più di uno split, elimino l'ultimo - if (AreaList.Count > 2) - { - int nAreaList = AreaList.Count - 1; - for (var SplitIndex = (m_SplitHorizList.Count * nVert); SplitIndex <= nAreaList; SplitIndex++) - { - AreaList.Remove(AreaList[AreaList.Count - 1]); - } - } - // Se elimino l'unico split presente - else - { - Splitted s = (Splitted)AreaList[0]; - s.SetParentArea(ParentArea); - ParentArea.AreaList.Add(s); - ParentArea.AreaList.Remove(this); - } - } - m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); - } - } - internal void SetSplitQtyHoriz(int QtyHoriz, bool NotifyProperty = false) - { - if (QtyHoriz > m_SplitHorizList.Count) - { - // recupero larghezza ultimo - double dLastDimension = 100; - double dNewDimension = 100; - if (m_SplitHorizList.Count > 0) - { - dLastDimension = m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension; - dNewDimension = dLastDimension / (QtyHoriz + 1 - nSplitQtyHoriz); - m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension = dNewDimension; - } - else - dNewDimension = dLastDimension / (QtyHoriz + 1 - nSplitQtyHoriz); - // aggiungo area Split di default - for (var SplitIndex = m_SplitHorizList.Count; SplitIndex <= QtyHoriz; SplitIndex++) - m_SplitHorizList.Add(new SplitDimension(dNewDimension, true, this, false)); - } - else if (QtyHoriz < m_SplitHorizList.Count) - { - for (var SplitIndex = m_SplitHorizList.Count - 1; SplitIndex >= QtyHoriz; SplitIndex += -1) - m_SplitHorizList.RemoveAt(SplitIndex); - } - } - - private ObservableCollection m_SplitShapeList = new ObservableCollection - { - new IdNameStruct((int)SplitShapes.VERTICAL, "Vertical"), - new IdNameStruct((int)SplitShapes.HORIZONTAL, "Horizontal"), - new IdNameStruct((int)SplitShapes.GRID, "Grid"), - new IdNameStruct((int)SplitShapes.CUSTOM, "Custom") - }; - public ObservableCollection SplitShapeList - { - get - { - return m_SplitShapeList; - } - } - - private SplitShapes m_SelSplitShape; public int SelSplitShapeIndex { get @@ -1752,54 +2750,7 @@ namespace WebWindowTest m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); } } - internal void SetSplitShape(SplitShapes Value, bool NotifyProperty = false) - { - m_SelSplitShape = Value; - } - internal SplitShapes SelSplitShape - { - get - { - return m_SelSplitShape; - } - } - private bool m_bIsPercentage = true; - public bool bIsPercentage - { - get - { - return m_bIsPercentage; - } - } - - private ObservableCollection m_SplitPositionList = new ObservableCollection(); - public ObservableCollection SplitPositionList - { - get - { - return m_SplitPositionList; - } - set - { - m_SplitPositionList = value; - } - } - - private ObservableCollection m_SplitVertList = new ObservableCollection(); - public ObservableCollection SplitVertList - { - get - { - return m_SplitVertList; - } - set - { - m_SplitVertList = value; - } - } - - private ObservableCollection m_SplitHorizList = new ObservableCollection(); public ObservableCollection SplitHorizList { get @@ -1812,20 +2763,42 @@ namespace WebWindowTest } } - public Split(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) + public ObservableCollection SplitPositionList { + get + { + return m_SplitPositionList; + } + set + { + m_SplitPositionList = value; + } } - internal static Split CreateSplit(Area Area, SplitShapes SplitShape) + public ObservableCollection SplitShapeList { - Split Split = new Split(Area, Area.ParentWindow); - AddCounterGroup(); - Split.SetIdGroup(nCounterGroup); - Split.SetAreaType(AreaTypes.SPLIT); - Split.SetSplitShape(SplitShape, true); - return Split; + get + { + return m_SplitShapeList; + } } + public ObservableCollection SplitVertList + { + get + { + return m_SplitVertList; + } + set + { + m_SplitVertList = value; + } + } + + #endregion Public Properties + + #region Public Methods + public override Split Copy(Area newParentArea) { Split newSplit = new Split(newParentArea, ParentWindow); @@ -1836,7 +2809,7 @@ namespace WebWindowTest newSplit.SetSplitQtyHoriz(nSplitQtyHoriz); newSplit.SetSplitShape(SelSplitShape, true); newSplit.SetAreaType(AreaType); - foreach(var item in AreaList) + foreach (var item in AreaList) { Area a = item.Copy(newSplit); newSplit.AreaList.Add(a); @@ -1853,6 +2826,32 @@ namespace WebWindowTest m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); } + #endregion Public Methods + + #region Internal Properties + + internal SplitShapes SelSplitShape + { + get + { + return m_SelSplitShape; + } + } + + #endregion Internal Properties + + #region Internal Methods + + internal static Split CreateSplit(Area Area, SplitShapes SplitShape) + { + Split Split = new Split(Area, Area.ParentWindow); + AddCounterGroup(); + Split.SetIdGroup(nCounterGroup); + Split.SetAreaType(AreaTypes.SPLIT); + Split.SetSplitShape(SplitShape, true); + return Split; + } + internal override JsonArea Serialize() { if (nCounterGroup < IdGroup) @@ -1869,719 +2868,110 @@ namespace WebWindowTest JsonSplit.AreaList.Add(Area.Serialize()); return JsonSplit; } - } - public class Splitted : Area - { - public Splitted(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) + internal void SetSplitQtyHoriz(int QtyHoriz, bool NotifyProperty = false) { - } - - internal static Splitted CreateSplitted(Area ParentArea) - { - Splitted Splitted = new Splitted(ParentArea, ParentArea.ParentWindow); - AddCounterGroup(); - Splitted.SetIdGroup(nCounterGroup); - Splitted.SetAreaType(AreaTypes.SPLITTED); - return Splitted; - } - - public override Splitted Copy(Area newParentArea) - { - Splitted newSplitted = new Splitted(newParentArea, ParentWindow); - AddCounterGroup(); - newSplitted.SetIdGroup(nCounterGroup); - newSplitted.SetAreaType(AreaType); - foreach (var item in AreaList) + if (QtyHoriz > m_SplitHorizList.Count) { - Area a = item.Copy(newSplitted); - newSplitted.AreaList.Add(a); + // recupero larghezza ultimo + double dLastDimension = 100; + double dNewDimension = 100; + if (m_SplitHorizList.Count > 0) + { + dLastDimension = m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension; + dNewDimension = dLastDimension / (QtyHoriz + 1 - nSplitQtyHoriz); + m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension = dNewDimension; + } + else + dNewDimension = dLastDimension / (QtyHoriz + 1 - nSplitQtyHoriz); + // aggiungo area Split di default + for (var SplitIndex = m_SplitHorizList.Count; SplitIndex <= QtyHoriz; SplitIndex++) + m_SplitHorizList.Add(new SplitDimension(dNewDimension, true, this, false)); + } + else if (QtyHoriz < m_SplitHorizList.Count) + { + for (var SplitIndex = m_SplitHorizList.Count - 1; SplitIndex >= QtyHoriz; SplitIndex += -1) + m_SplitHorizList.RemoveAt(SplitIndex); } - return newSplitted; } - internal override JsonArea Serialize() + internal void SetSplitQtyVert(int QtyVert, bool NotifyProperty = false) { - if (nCounterGroup < IdGroup) - Area.nCounterGroup = IdGroup; - JsonSplitted JsonSplitted = new JsonSplitted(IdGroup); - foreach (var Area in AreaList) - JsonSplitted.AreaList.Add(Area.Serialize()); - return JsonSplitted; + if (QtyVert > m_SplitVertList.Count) + { + // recupero larghezza ultimo + double dLastDimension = 100; + double dNewDimension = 100; + if (m_SplitVertList.Count > 0) + { + dLastDimension = m_SplitVertList[m_SplitVertList.Count - 1].dDimension; + dNewDimension = dLastDimension / (QtyVert + 1 - nSplitQtyVert); + m_SplitVertList[m_SplitVertList.Count - 1].dDimension = dNewDimension; + } + else + dNewDimension = dLastDimension / (QtyVert + 1 - nSplitQtyVert); + // aggiungo area Split di default + for (var SplitIndex = m_SplitVertList.Count; SplitIndex <= QtyVert; SplitIndex++) + m_SplitVertList.Add(new SplitDimension(dNewDimension, true, this, true)); + } + else if (QtyVert < m_SplitVertList.Count) + { + for (var SplitIndex = m_SplitVertList.Count - 1; SplitIndex >= QtyVert; SplitIndex += -1) + m_SplitVertList.RemoveAt(SplitIndex); + } } - } - public class Fill : Area - { - private List m_FillTypeList = new List + internal void SetSplitShape(SplitShapes Value, bool NotifyProperty = false) { - new IdNameStruct((int)FillTypes.GLASS, "Glass"), - new IdNameStruct((int)FillTypes.WOOD, "Wood") + m_SelSplitShape = Value; + } + + internal void SetSplitStartVert(bool SplitStartVert) + { + bSplitStartVert = SplitStartVert; + } + + #endregion Internal Methods + + #region Private Fields + + private bool m_bIsPercentage = true; + private bool m_bSplitStartVert = true; + private SplitShapes m_SelSplitShape; + + private ObservableCollection m_SplitHorizList = new ObservableCollection(); + + private ObservableCollection m_SplitPositionList = new ObservableCollection(); + + private ObservableCollection m_SplitShapeList = new ObservableCollection + { + new IdNameStruct((int)SplitShapes.VERTICAL, "Vertical"), + new IdNameStruct((int)SplitShapes.HORIZONTAL, "Horizontal"), + new IdNameStruct((int)SplitShapes.GRID, "Grid"), + new IdNameStruct((int)SplitShapes.CUSTOM, "Custom") }; - public List FillTypeList - { - get - { - return m_FillTypeList; - } - } - private FillTypes m_SelFillType; - public FillTypes SelFillType - { - get - { - return m_SelFillType; - } - set - { - m_SelFillType = value; - } - } - public FillTypes FillType - { - get - { - return (FillTypes)m_SelFillType; - } - } - internal void SetFillType(FillTypes value) - { - m_SelFillType = value; - m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); - } - public int SelFillTypeIndex - { - get - { - return IdNameStruct.IndFromId((int)m_SelFillType, m_FillTypeList); - } - set - { - m_SelFillType = (FillTypes)IdNameStruct.IdFromInd(value, m_FillTypeList); - m_ParentWindow.OnUpdatePreview(m_ParentWindow.sSerialized()); - } - } + private ObservableCollection m_SplitVertList = new ObservableCollection(); - public Fill(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) - { - } - - internal static Fill CreateFill(Area AreaParent, FillTypes FillType) - { - Fill Fill = new Fill(AreaParent, AreaParent.ParentWindow); - AddCounterGroup(); - Fill.SetIdGroup(nCounterGroup); - Fill.SetAreaType(AreaTypes.FILL); - Fill.SetFillType(FillType); - return Fill; - } - - public override Fill Copy(Area newParentArea) - { - Fill newFill = new Fill(newParentArea, m_ParentWindow); - AddCounterGroup(); - newFill.SetIdGroup(nCounterGroup); - newFill.SetFillType(SelFillType); - newFill.SetAreaType(AreaType); - return newFill; - } - - internal override JsonArea Serialize() - { - if (nCounterGroup < IdGroup) - Area.nCounterGroup = IdGroup; - JsonFill JsonFill = new JsonFill(FillType, IdGroup); - foreach (var Area in AreaList) - JsonFill.AreaList.Add(Area.Serialize()); - return JsonFill; - } - } - - public class Joint - { - protected Area m_ParentArea; - public Area ParentArea - { - get - { - return m_ParentArea; - } - } - - private int m_nIndex; - public int nIndex - { - get - { - return m_nIndex; - } - } - - private List m_JointTypeList = new List - { - new IdNameStruct((int)Joints.ANGLED, "Angled"), - new IdNameStruct((int)Joints.FULL_H, "Full H"), - new IdNameStruct((int)Joints.FULL_V, "Full V") - }; - public List JointTypeList - { - get - { - return m_JointTypeList; - } - } - - private Joints m_SelJointType; - public int SelJointTypeIndex - { - get - { - return IdNameStruct.IndFromId((int)m_SelJointType, m_JointTypeList); - } - set - { - m_SelJointType = (Joints)IdNameStruct.IdFromInd(value, m_JointTypeList); - m_ParentArea.ParentWindow.OnUpdatePreview(m_ParentArea.ParentWindow.sSerialized()); - } - } - public Joints SelJointType - { - get - { - return m_SelJointType; - } - set - { - m_SelJointType = value; - } - } - internal void SetSelJointType(Joints value) - { - m_SelJointType = value; - //NotifyPropertyChanged(nameof(SelJointTypeIndex)); - } - - public Joint Copy() - { - Joint newJoint = new Joint(ParentArea,nIndex, SelJointType); - return newJoint; - } - - public Joint(Area ParentArea, int nIndex, Joints SelJointType) - { - m_ParentArea = ParentArea; - m_nIndex = nIndex; - m_SelJointType = SelJointType; - } - - internal JsonJoint Serialize() - { - JsonJoint JsonJoint = new JsonJoint(m_nIndex, m_SelJointType); - return JsonJoint; - } - } - - public partial class ParametriOpzioni - { - public enum HDWOPTIONTYPES : int - { - TEXT = 1, - LENGHT = 2, - COMBO = 3 - } - - protected HDWOPTIONTYPES m_Type; - public HDWOPTIONTYPES Type - { - get - { - return m_Type; - } - } - - private string m_sName; - public string sName - { - get - { - return m_sName; - } - } - - private string m_sDescription; - public string sDescription - { - get - { - return m_sDescription; - } - } - - private Visibility m_OptVisibility; - public Visibility OptVisibility - { - get - { - return m_OptVisibility; - } - } - - public ParametriOpzioni(ParametriOpzioniParametri HdwOptionParam) - { - m_sName = HdwOptionParam.NomeParametro; - m_sDescription = HdwOptionParam.DescrizioneParametro; - m_OptVisibility = Visibility.VISIBLE; - // If(HdwOptionParam.Visible.ToLower = "true", Visibility.Visible, Visibility.Collapsed) - } - } - - public class AGBOptionCombo : ParametriOpzioni - { - private List m_ValueList = new List(); - public List ValueList - { - get - { - return m_ValueList; - } - } - - private AGBOptionParameter m_sValue; - public AGBOptionParameter sValue - { - get - { - return m_sValue; - } - set - { - m_sValue = value; - } - } - - public AGBOptionCombo(ParametriOpzioniParametri HdwOptionParam) : base(HdwOptionParam) - { - m_Type = HDWOPTIONTYPES.COMBO; - foreach (var Value in HdwOptionParam.Opzioni) - m_ValueList.Add(new AGBOptionParameter(Value.Valore, Value.DescrizioneOpzione)); - m_sValue = m_ValueList.FirstOrDefault(x => x.sValue == HdwOptionParam.ValoreCorrente)?? new AGBOptionParameter("", ""); - } - } - - public class AGBOptionParameter - { - private string m_sValue; - public string sValue - { - get - { - return m_sValue; - } - } - - private string m_sDescription; - public string sDescription - { - get - { - return m_sDescription; - } - } - - public AGBOptionParameter(string sValue, string sDescription) - { - m_sValue = sValue; - m_sDescription = sDescription; - } - } - - public class AGBOptionText : ParametriOpzioni - { - private string m_sValue; - public string sValue - { - get - { - return m_sValue; - } - set - { - m_sValue = value; - } - } - - public AGBOptionText(ParametriOpzioniParametri HdwOptionParam) : base(HdwOptionParam) - { - m_Type = HDWOPTIONTYPES.TEXT; - m_sValue = HdwOptionParam.ValoreCorrente; - } - } - - public class FrameDimension - { - // valore massimo e minimo della dimensione del frame - int MaxDim = 4000; - int MinDim = 600; - - protected Frame m_ParentFrame; - public Frame ParentFrame - { - get - { - return m_ParentFrame; - } - } - - private bool m_bIsLen = false; - - private int m_nIndex; - public int nIndex - { - get - { - return m_nIndex; - } - } - - private string m_sName; - public string sName - { - get - { - return m_sName; - } - } - - private double m_dValue; - public double dValue - { - get - { - return m_dValue; - } - set - { - m_dValue = value; - if (value > MaxDim) - { - m_dValue = MaxDim; - } - else if (value < MinDim) - { - m_dValue = MinDim; - } - m_ParentFrame.ParentWindow.OnUpdatePreview(m_ParentFrame.ParentWindow.sSerialized()); - } - } - - public FrameDimension(Frame ParentFrame, int nIndex, string sName, double dValue, bool bIsLen) - { - m_ParentFrame = ParentFrame; - m_nIndex = nIndex; - m_sName = sName; - m_dValue = dValue; - m_bIsLen = bIsLen; - } - - internal JsonFrameDimension Serialize() - { - JsonFrameDimension JsonFrameDimension = new JsonFrameDimension(m_nIndex, m_sName, m_dValue); - return JsonFrameDimension; - } - } - - public class SashDimension - { - // reference - private Sash m_Parent; - - private int m_nSashId; - public int nSashId - { - get - { - return m_nSashId; - } - } - - private bool m_bIsRelative = false; - public bool bIsRelative - { - get - { - return m_bIsRelative; - } - } - - private List m_OpeningTypeList = new List - { - new IdNameStruct((int)Openings.TURNONLY_LEFT, ">"), - new IdNameStruct((int)Openings.TURNONLY_RIGHT, "<"), - new IdNameStruct((int)Openings.TILTTURN_LEFT, ">*"), - new IdNameStruct((int)Openings.TILTTURN_RIGHT, "<*"), - new IdNameStruct((int)Openings.TILTONLY_TOP, "˄"), - new IdNameStruct((int)Openings.TILTONLY_BOTTOM, "˅"), - new IdNameStruct((int)Openings.PIVOT, "◊"), - new IdNameStruct((int)Openings.FIXED, "X"), - new IdNameStruct((int)Openings.COMPLANARSLIDE_LEFT, "-→"), - new IdNameStruct((int)Openings.COMPLANARSLIDE_RIGHT, "←-"), - new IdNameStruct((int)Openings.LIFTSLIDE_LEFT, "┌→"), - new IdNameStruct((int)Openings.LIFTSLIDE_RIGHT, "←┐") - }; - public List OpeningTypeList - { - get - { - return m_OpeningTypeList; - } - } - - private Openings m_SelOpeningType; - public Openings SelOpeningType - { - get - { - return m_SelOpeningType; - } - set - { - m_SelOpeningType = value; - m_Parent.RefreshHardwareList(); - m_Parent.RefreshHardwareOptionList(); - m_Parent.SetFirstHardware(); - } - } - public Openings OpeningType - { - get - { - return (Openings)m_SelOpeningType; - } - } - internal void SetOpeningType(Openings value) - { - m_SelOpeningType = value; - } - public int SelOpeningTypeIndex - { - get - { - return IdNameStruct.IndFromId((int)m_SelOpeningType, m_OpeningTypeList); - } - set - { - m_SelOpeningType = (Openings)IdNameStruct.IdFromInd(value, m_OpeningTypeList); - m_Parent.RefreshHardwareList(); - m_Parent.RefreshHardwareOptionList(); - m_Parent.SetFirstHardware(); - m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized()); - } - } - - private bool m_bHasHandle; - public bool bHasHandle - { - get - { - return m_bHasHandle; - } - set - { - m_bHasHandle = value; - m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized()); - } - } - internal void SetHasHandle(bool value) - { - m_bHasHandle = value; - } - - private double m_dDimension; - public double dDimension - { - get - { - return m_dDimension; - } - set - { - // Controllo che il valore inserito sia compreso tra 0 e 100 - if (value > 0 && value < 100) - { - // se sono in percentuale - if (m_bIsRelative) - { - // verifico se ci sono assoluti - List RelativeDimList = m_Parent.SashList.Where(x => x.bIsRelative).ToList(); - if (RelativeDimList.Count > 0) - { - if (m_Parent.bIsPercentage) - { - int nIndex = RelativeDimList.IndexOf(this); - // se diminuisce dimensione - if (value < m_dDimension) - { - if (nIndex < RelativeDimList.Count - 1) - RelativeDimList[nIndex + 1].SetDimension(RelativeDimList[nIndex + 1].dDimension + (m_dDimension - value)); - else if (RelativeDimList.Count > 1) - RelativeDimList[nIndex - 1].SetDimension(RelativeDimList[nIndex - 1].dDimension + (m_dDimension - value)); - else - { - m_dDimension = 100; - return; - } - } - // se aumenta dimensione - else - { - double dRes = value; - // se non ultima anta - if (nIndex < RelativeDimList.Count - 1) - { - for (var nInd = 0; nInd <= nIndex - 1; nInd++) - dRes += RelativeDimList[nInd].dDimension; - dRes = (100 - dRes) / (RelativeDimList.Count - nIndex - 1); - for (var Ind = nIndex + 1; Ind <= RelativeDimList.Count - 1; Ind++) - RelativeDimList[Ind].SetDimension(dRes); - } - // se ultima anta - else if (RelativeDimList.Count > 1) - { - if (RelativeDimList.Count > 2) - { - for (var Ind = 0; Ind <= nIndex - 2; Ind++) - dRes += RelativeDimList[Ind].dDimension; - } - - //for (var Ind = nIndex + 1; Ind <= RelativeDimList.Count - 1; Ind++) - // dRes += RelativeDimList[Ind].dDimension; - dRes = (100 - dRes); - RelativeDimList[nIndex - 1].SetDimension(dRes); - //for (var nInd = 0; nInd <= nIndex - 1; nInd++) - // RelativeDimList[nInd].SetDimension(dRes); - } - else - { - m_dDimension = 100; - return; - } - } - } - } - } - m_dDimension = value; - m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized()); - } - } - } - internal void SetDimension(double dValue) - { - m_dDimension = dValue; - } - - public SashDimension Copy() - { - SashDimension newSashDim = new SashDimension(dDimension, bIsRelative, m_Parent, m_nSashId); - newSashDim.SetOpeningType(SelOpeningType); - newSashDim.SetHasHandle(bHasHandle); - return newSashDim; - } - - public SashDimension(double dDimension, bool bIsRelative, Sash Parent, int nSashId) - { - m_dDimension = dDimension; - m_bIsRelative = bIsRelative; - m_Parent = Parent; - m_nSashId = nSashId; - // assengno maniglia - if (Parent.SashList.Count == 0 || !Parent.SashList.Any(x => x.bHasHandle)) - m_bHasHandle = true; - // assegno tipo di anta - if (Parent.SashList.Count == 0) - SetOpeningType(Openings.TILTTURN_LEFT); - else if (Parent.SashList.Count == 1) - { - switch (Parent.SashList[0].OpeningType) - { - case Openings.TURNONLY_LEFT: - { - SetOpeningType(Openings.TURNONLY_RIGHT); - break; - } - - case Openings.TURNONLY_RIGHT: - { - SetOpeningType(Openings.TURNONLY_LEFT); - break; - } - - case Openings.TILTTURN_LEFT: - { - SetOpeningType(Openings.TURNONLY_RIGHT); - break; - } - - case Openings.TILTTURN_RIGHT: - { - SetOpeningType(Openings.TURNONLY_LEFT); - break; - } - - case Openings.TILTONLY_TOP: - { - SetOpeningType(Openings.TILTONLY_BOTTOM); - break; - } - - case Openings.TILTONLY_BOTTOM: - { - SetOpeningType(Openings.TILTONLY_TOP); - break; - } - - case Openings.COMPLANARSLIDE_LEFT: - { - SetOpeningType(Openings.COMPLANARSLIDE_RIGHT); - break; - } - - case Openings.COMPLANARSLIDE_RIGHT: - { - SetOpeningType(Openings.COMPLANARSLIDE_LEFT); - break; - } - - case Openings.LIFTSLIDE_LEFT: - { - SetOpeningType(Openings.LIFTSLIDE_RIGHT); - break; - } - - case Openings.LIFTSLIDE_RIGHT: - { - SetOpeningType(Openings.LIFTSLIDE_LEFT); - break; - } - } - } - else - SetOpeningType(Parent.SashList[Parent.SashList.Count - 1].OpeningType); - } - - internal JsonSashDimension Serialize() - { - JsonSashDimension JsonSashDimension = new JsonSashDimension(OpeningType, m_bHasHandle, m_dDimension, m_nSashId); - return JsonSashDimension; - } + #endregion Private Fields } public class SplitDimension { - // reference - private Split m_Parent; + #region Public Constructors + + public SplitDimension(double dDimension, bool bIsRelative, Split Parent, bool IsVertList) + { + m_dDimension = dDimension; + m_bIsRelative = bIsRelative; + m_Parent = Parent; + m_bIsVertListDim = IsVertList; + } + + #endregion Public Constructors + + #region Public Properties - private bool m_bIsRelative = false; public bool bIsRelative { get @@ -2589,12 +2979,7 @@ namespace WebWindowTest return m_bIsRelative; } } - internal void SetIsRelative(bool value) - { - m_bIsRelative = value; - } - private bool m_bIsVertListDim = false; public bool bIsVertListDim { get @@ -2602,13 +2987,7 @@ namespace WebWindowTest return m_bIsVertListDim; } } - internal void SetIsVertListDim(bool value) - { - m_bIsVertListDim = value; - } - - private double m_dDimension; public double dDimension { get @@ -2626,7 +3005,7 @@ namespace WebWindowTest List RelativeDimList = new List(); if (bIsVertListDim) RelativeDimList = m_Parent.SplitVertList.Where(x => x.bIsRelative).ToList(); - else + else RelativeDimList = m_Parent.SplitHorizList.Where(x => x.bIsRelative).ToList(); // verifico se ci sono assoluti //List RelativeDimList = m_Parent.SplitPositionList.Where(x => x.bIsRelative).ToList(); @@ -2671,7 +3050,7 @@ namespace WebWindowTest dRes += RelativeDimList[Ind].dDimension; } dRes = (100 - dRes); - if(dRes != 0) + if (dRes != 0) RelativeDimList[nIndex - 1].SetDimension(dRes); else return; @@ -2690,206 +3069,223 @@ namespace WebWindowTest } m_dDimension = value; m_Parent.ParentWindow.OnUpdatePreview(m_Parent.ParentWindow.sSerialized()); - } - + } } } - internal void SetDimension(double dValue) - { - m_dDimension = dValue; - } + + #endregion Public Properties + + #region Public Methods public SplitDimension Copy() { SplitDimension newSplitDim = new SplitDimension(dDimension, bIsRelative, m_Parent, bIsVertListDim); return newSplitDim; } - public SplitDimension(double dDimension, bool bIsRelative, Split Parent, bool IsVertList) - { - m_dDimension = dDimension; - m_bIsRelative = bIsRelative; - m_Parent = Parent; - m_bIsVertListDim = IsVertList; - } + + #endregion Public Methods + + #region Internal Methods internal JsonSplitDimension Serialize() { JsonSplitDimension JsonSplitDimension = new JsonSplitDimension(m_bIsRelative, m_dDimension); return JsonSplitDimension; } + + internal void SetDimension(double dValue) + { + m_dDimension = dValue; + } + + internal void SetIsRelative(bool value) + { + m_bIsRelative = value; + } + + internal void SetIsVertListDim(bool value) + { + m_bIsVertListDim = value; + } + + #endregion Internal Methods + + #region Private Fields + + private bool m_bIsRelative = false; + + private bool m_bIsVertListDim = false; + + private double m_dDimension; + + // reference + private Split m_Parent; + + #endregion Private Fields } - public struct IdNameStruct + public class Splitted : Area { - private int m_Id; + #region Public Constructors - private string m_Name; - - public int Id + public Splitted(Area ParentArea, Window ParentWindow) : base(ParentArea, ParentWindow) { - get + } + + #endregion Public Constructors + + #region Public Methods + + public override Splitted Copy(Area newParentArea) + { + Splitted newSplitted = new Splitted(newParentArea, ParentWindow); + AddCounterGroup(); + newSplitted.SetIdGroup(nCounterGroup); + newSplitted.SetAreaType(AreaType); + foreach (var item in AreaList) { - return m_Id; - } - set - { - m_Id = value; + Area a = item.Copy(newSplitted); + newSplitted.AreaList.Add(a); } + return newSplitted; } - public string Name + #endregion Public Methods + + #region Internal Methods + + internal static Splitted CreateSplitted(Area ParentArea) { - get - { - return m_Name; - } - set - { - m_Name = value; - } + Splitted Splitted = new Splitted(ParentArea, ParentArea.ParentWindow); + AddCounterGroup(); + Splitted.SetIdGroup(nCounterGroup); + Splitted.SetAreaType(AreaTypes.SPLITTED); + return Splitted; } - public IdNameStruct(int Id, string Name) + internal override JsonArea Serialize() { - this = default(IdNameStruct); - m_Id = Id; - m_Name = Name; + if (nCounterGroup < IdGroup) + Area.nCounterGroup = IdGroup; + JsonSplitted JsonSplitted = new JsonSplitted(IdGroup); + foreach (var Area in AreaList) + JsonSplitted.AreaList.Add(Area.Serialize()); + return JsonSplitted; } - public override string ToString() - { - return Name; - } - - public static int IndFromId(int Id, ObservableCollection List) - { - checked - { - int num = List.Count - 1; - for (int i = 0; i <= num; i++) - { - if (List[i].Id == Id) - { - return i; - } - } - - return 0; - } - } - - public static int IndFromId(int Id, List List) - { - checked - { - int num = List.Count - 1; - for (int i = 0; i <= num; i++) - { - if (List[i].Id == Id) - { - return i; - } - } - - return 0; - } - } - - public static int IdFromInd(int Ind, ObservableCollection List) - { - return List[Ind].Id; - } - - public static int IdFromInd(int Ind, List List) - { - return List[Ind].Id; - } - - public static int IndFromId(int Id, ObservableCollection List) - { - checked - { - int num = List.Count - 1; - for (int i = 0; i <= num; i++) - { - if (List[i] is IdNameStruct && ((IdNameStruct)List[i]).Id == Id) - { - return i; - } - } - - return 0; - } - } - - public static int IndFromId(int Id, List List) - { - checked - { - int num = List.Count - 1; - for (int i = 0; i <= num; i++) - { - if (List[i] is IdNameStruct && ((IdNameStruct)List[i]).Id == Id) - { - return i; - } - } - - return 0; - } - } - - public static int IdFromInd(int Ind, ObservableCollection List) - { - if (List[Ind] is IdNameStruct) - { - return ((IdNameStruct)List[Ind]).Id; - } - - return 0; - } - - public static int IdFromInd(int Ind, List List) - { - if (List[Ind] is IdNameStruct) - { - return ((IdNameStruct)List[Ind]).Id; - } - - return 0; - } - - public static int IdFromName(string Name, ObservableCollection List) - { - checked - { - int num = List.Count - 1; - for (int i = 0; i <= num; i++) - { - if (string.Compare(((IdNameStruct)List[i]).Name, Name, false) == 0) - { - return ((IdNameStruct)List[i]).Id; - } - } - return 0; - } - } - - public static int IdFromName(string Name, List List) - { - checked - { - int num = List.Count - 1; - for (int i = 0; i <= num; i++) - { - if (string.Compare(((IdNameStruct)List[i]).Name, Name, false) == 0) - { - return ((IdNameStruct)List[i]).Id; - } - } - return 0; - } - } + #endregion Internal Methods } -} + public class Window + { + #region Public Events + + public event EventHandler OnPreview = delegate { }; + + #endregion Public Events + + #region Public Properties + + public ObservableCollection AreaList + { + get + { + return m_AreaList; + } + set + { + m_AreaList = value; + } + } + + public string sColorMaterial + { + get + { + return m_sColorMaterial; + } + set + { + m_sColorMaterial = value; + OnUpdatePreview(sSerialized()); + } + } + + public string sGlass + { + get + { + return m_sGlass; + } + set + { + m_sGlass = value; + OnUpdatePreview(sSerialized()); + } + } + + public string sMaterial + { + get + { + return m_sMaterial; + } + set + { + m_sMaterial = value; + OnUpdatePreview(sSerialized()); + } + } + + public string sProfilePath + { + get + { + return m_sProfilePath; + } + set + { + m_sProfilePath = value; + } + } + + #endregion Public Properties + + #region Internal Methods + + internal void OnUpdatePreview(string sJwd) + { + OnPreviewEventArgs e = new OnPreviewEventArgs(sJwd); + EventHandler handler = OnPreview; + if (handler != null) + { + handler(this, e); + } + } + + internal JsonWindow Serialize() + { + JsonWindow JsonWindow = new JsonWindow(sProfilePath, sMaterial, sColorMaterial, sGlass); + foreach (var Area in AreaList) + JsonWindow.AreaList.Add(Area.Serialize()); + return JsonWindow; + } + + internal string sSerialized() + { + return JsonConvert.SerializeObject(Serialize(), Formatting.Indented); + } + + #endregion Internal Methods + + #region Private Fields + + private ObservableCollection m_AreaList = new ObservableCollection(); + private string m_sColorMaterial; + private string m_sGlass; + private string m_sMaterial; + private string m_sProfilePath; + + #endregion Private Fields + } +} \ No newline at end of file