Merge branch 'develop'

This commit is contained in:
Annamaria Sassi
2026-02-17 14:33:46 +01:00
5 changed files with 206 additions and 107 deletions
-12
View File
@@ -290,18 +290,6 @@ namespace WebWindowComplex.Models
}
else
{
//Frame? f = node.ParentWindow.AreaList.First();
//double dimAvail = 0;
//if (nameDim.Equals("Width"))
// dimAvail = dim - f.ElementDimensionList.ElementAt(1).dDimension
// - f.ElementDimensionList.Last().dDimension
// + f.ElementDimensionList.ElementAt(1).dOverlap
// + f.ElementDimensionList.Last().dOverlap;
//else
// dimAvail = dim - f.ElementDimensionList.First().dDimension
// - f.ElementDimensionList.ElementAt(f.ElementDimensionList.Count - 2).dDimension
// + f.ElementDimensionList.First().dOverlap
// + f.ElementDimensionList.ElementAt(f.ElementDimensionList.Count - 2).dOverlap;
SearchAreaList(node.AreaList.ElementAt(i), dim, nameDim);
}
}
+50 -10
View File
@@ -34,7 +34,7 @@ namespace WebWindowComplex.Models
{
if(dDimension != value)
{
if(m_ParentArea is Split)
if (m_ParentArea is Split)
{
if (value > m_dMax)
value = m_dMax;
@@ -43,21 +43,61 @@ namespace WebWindowComplex.Models
Split s = (Split)m_ParentArea;
SplitElementDimension splitElem = (SplitElementDimension)this;
List<SplitDimension> elemList = new List<SplitDimension>();
Frame? frame = s.ParentWindow.AreaList.First();
double dimTot = 0;
if (s.ElemDimVertList.Contains(splitElem))
elemList = s.SplitVertList;
else if (s.ElemDimHorizList.Contains(splitElem))
elemList = s.SplitHorizList;
if (value > m_dDimension)
{
double diff = (value - m_dDimension)/2;
elemList.ElementAt(m_nIndex - 1).SetDimension(elemList.ElementAt(m_nIndex - 1).dDimension - diff);
elemList.ElementAt(m_nIndex ).SetDimension(elemList.ElementAt(m_nIndex).dDimension - diff);
}
else
if(elemList.ElementAt(m_nIndex).MeasureType is MeasureTypes.ABSOLUTE ||
elemList.ElementAt(m_nIndex - 1).MeasureType is MeasureTypes.ABSOLUTE)
{
if (value > m_dDimension)
{
dimTot = dimTot - (value - m_dDimension);
}
else
{
dimTot = dimTot + (m_dDimension - value);
}
double diff = (m_dDimension - value)/2;
elemList.ElementAt(m_nIndex - 1).SetDimension(elemList.ElementAt(m_nIndex - 1).dDimension + diff);
elemList.ElementAt(m_nIndex).SetDimension(elemList.ElementAt(m_nIndex).dDimension + diff);
if(elemList.ElementAt(m_nIndex - 1).MeasureType is MeasureTypes.ABSOLUTE)
elemList.ElementAt(m_nIndex - 1).SetDimension(elemList.ElementAt(m_nIndex - 1).dDimension + diff);
if(elemList.ElementAt(m_nIndex).MeasureType is MeasureTypes.ABSOLUTE)
elemList.ElementAt(m_nIndex).SetDimension(elemList.ElementAt(m_nIndex).dDimension + diff);
}
}
else if(m_ParentArea is Sash && (m_nIndex == 2 || m_nIndex == 4))
{
if (value > m_dMax)
value = m_dMax;
else if (value < m_dMin)
value = m_dMin;
Sash s = (Sash)m_ParentArea;
if (s.bIsDimensionLight)
{
int indSash = -1;
for(int i = 0; i < s.SashList.Count; i++)
{
if (s.SashList.ElementAt(i).ElementDimensionList.Contains(this))
{
indSash = i;
break;
}
}
if(s.SashList.ElementAt(indSash).MeasureType is MeasureTypes.ABSOLUTE)
{
if (value > m_dDimension)
{
double diff = (value - m_dDimension);
s.SashList.ElementAt(indSash).SetDimension(s.SashList.ElementAt(indSash).dDimension - diff);
}
else
{
double diff = m_dDimension - value;
s.SashList.ElementAt(indSash).SetDimension(s.SashList.ElementAt(indSash).dDimension + diff);
}
}
}
}
if (value > m_dMax)
+134 -83
View File
@@ -1,6 +1,8 @@
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -85,103 +87,137 @@ namespace WebWindowComplex.Models
}
else
{
double heightTot = CalculateHeightArea(ParentWindow.AreaList.First(), HeightFrame());
// Ricalcolo dimensioni aggiungendo split
if (value > m_SplitHorizList.Count - 1)
Frame? frame = ParentWindow.AreaList.FirstOrDefault();
if(frame != null)
{
// recupero larghezza ultimo
double dLastDimension = heightTot;
double dNewDimension = heightTot;
if (m_SplitHorizList.Count > 0)
double heightTot = CalculateHeightArea(frame, frame.AvailHeightArea());
// Ricalcolo dimensioni aggiungendo split
if (value > m_SplitHorizList.Count - 1)
{
dLastDimension = m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension;
dNewDimension = (dLastDimension - m_ElemDimHorizList.Last().dDimension) / (value + 1 - nSplitQtyHoriz);
if (m_SplitHorizList[m_SplitHorizList.Count - 1].MeasureType.Equals(MeasureTypes.PROPORTIONAL))
dNewDimension = 1;
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, m_SplitHorizList[m_SplitHorizList.Count - 1].MeasureType, true, this, false));
if (!m_bSplitStartVert)
{
//Aggiungo un elemento alla sottoarea principale
ElemDimHorizList.Add(new SplitElementDimension(this, ElemDimHorizList.Max(x => x.nIndex) + 1, 78, 0));
if(nSplitQtyVert > 0)
// recupero larghezza ultimo
double dLastDimension = heightTot;
double dNewDimension = heightTot;
if (m_SplitHorizList.Count > 0)
{
dLastDimension = m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension;
if(m_SplitHorizList.Last().MeasureType is MeasureTypes.ABSOLUTE)
dNewDimension = (dLastDimension - m_ElemDimHorizList.Last().dDimension) / (value + 1 - nSplitQtyHoriz);
else
dNewDimension = dLastDimension / (value + 1 - nSplitQtyHoriz);
if (m_SplitHorizList[m_SplitHorizList.Count - 1].MeasureType.Equals(MeasureTypes.PROPORTIONAL))
dNewDimension = 1;
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, m_SplitHorizList[m_SplitHorizList.Count - 1].MeasureType, true, this, false));
if (!m_bSplitStartVert)
{
//Aggiungo un elemento alla sottoarea principale
ElemDimHorizList.Add(new SplitElementDimension(this, ElemDimHorizList.Max(x => x.nIndex) + 1, 78, 0));
if(nSplitQtyVert > 0)
{
// Aggiungo a tutte le sottoaree degli element
int subArea = ElemDimVertList.Max(x => x.nSubArea) + 1;
for (int i = 1; i <= ElemDimVertList.Max(x => x.nIndex); i++)
ElemDimVertList.Add(new SplitElementDimension(this, i, 78, subArea));
}
}
else
{
// Aggiungo a tutte le sottoaree degli element
int subArea = ElemDimVertList.Max(x => x.nSubArea) + 1;
for (int i = 1; i <= ElemDimVertList.Max(x => x.nIndex); i++)
ElemDimVertList.Add(new SplitElementDimension(this, i, 78, subArea));
for (int i = 1; i <= ElemDimHorizList.Max(x => x.nSubArea); i++)
{
int index = ElemDimHorizList.Where(x => x.nSubArea == i).Max(x => x.nIndex);
ElemDimHorizList.Insert(index * i + (i - 1), new SplitElementDimension(this, index + 1, 78, i));
}
}
}
// Ricalcolo dimensioni rimuovendo split
else
{
// Aggiungo a tutte le sottoaree degli element
for (int i = 1; i <= ElemDimHorizList.Max(x => x.nSubArea); i++)
int countProportional = m_SplitHorizList.Count(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL));
if (m_SplitHorizList.Last().MeasureType.Equals(MeasureTypes.PROPORTIONAL) && countProportional - 1 == 1)
{
int index = ElemDimHorizList.Where(x => x.nSubArea == i).Max(x => x.nIndex);
ElemDimHorizList.Insert(index * i + (i - 1), new SplitElementDimension(this, index + 1, 78, i));
m_SplitHorizList.RemoveAt(m_SplitVertList.Count() - 1);
m_SplitHorizList.Where(x => x.MeasureType.Equals(MeasureTypes.PROPORTIONAL)).FirstOrDefault()?.SetDimension(1);
}
else
{
double dLastDimension = 0;
for (var SplitIndex = m_SplitHorizList.Count - 1; SplitIndex >= value + 1; SplitIndex += -1)
{
dLastDimension += m_SplitHorizList[SplitIndex].dDimension;
if (m_SplitHorizList.Last().MeasureType.Equals(MeasureTypes.ABSOLUTE))
dLastDimension += m_ElemDimHorizList[SplitIndex - 1].dDimension;
m_SplitHorizList.RemoveAt(SplitIndex);
}
dLastDimension += m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension;
m_SplitHorizList[m_SplitHorizList.Count - 1].SetDimension(dLastDimension);
}
if (m_bSplitStartVert)
{
// Rimuovo da tutte le sottoaree degli element l'ultimo elemento
for (int subArea = 1; subArea <= ElemDimHorizList.Max(x => x.nSubArea); subArea++)
{
SplitElementDimension removeElem = ElemDimHorizList.Where(x => x.nSubArea == subArea).OrderByDescending(x => x.nIndex).FirstOrDefault();
ElemDimHorizList.Remove(removeElem);
}
}
else
{
int deleteSubArea = ElemDimHorizList.Count + 1;
ElemDimHorizList.RemoveAt(ElemDimHorizList.Count - 1);
if(nSplitQtyVert > 0)
ElemDimVertList.RemoveAll(x => x.nSubArea == deleteSubArea);
}
}
}
// Ricalcolo dimensioni rimuovendo split
else
{
double dLastDimension = 0;
for (var SplitIndex = m_SplitHorizList.Count - 1; SplitIndex >= value + 1; SplitIndex += -1)
// 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++)
{
dLastDimension += m_SplitHorizList[SplitIndex].dDimension + m_ElemDimHorizList[SplitIndex - 1].dDimension;
m_SplitHorizList.RemoveAt(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);
}
dLastDimension += m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension;
m_SplitHorizList[m_SplitHorizList.Count - 1].SetDimension(dLastDimension);
if (m_bSplitStartVert)
// Se ho più di uno split, elimino l'ultimo
if (AreaList.Count > 2)
{
// Rimuovo da tutte le sottoaree degli element l'ultimo elemento
for (int subArea = 1; subArea <= ElemDimHorizList.Max(x => x.nSubArea); subArea++)
int nAreaList = AreaList.Count - 1;
for (var SplitIndex = (m_SplitHorizList.Count * nVert); SplitIndex <= nAreaList; SplitIndex++)
{
SplitElementDimension removeElem = ElemDimHorizList.Where(x => x.nSubArea == subArea).OrderByDescending(x => x.nIndex).FirstOrDefault();
ElemDimHorizList.Remove(removeElem);
AreaList.Remove(AreaList[AreaList.Count - 1]);
}
}
// Se elimino l'unico split presente
else
{
int deleteSubArea = ElemDimHorizList.Count + 1;
ElemDimHorizList.RemoveAt(ElemDimHorizList.Count - 1);
if(nSplitQtyVert > 0)
ElemDimVertList.RemoveAll(x => x.nSubArea == deleteSubArea);
Splitted s = (Splitted)AreaList[0];
s.SetParentArea(ParentArea);
ParentArea.AreaList.Add(s);
ParentArea.AreaList.Remove(this);
}
}
// 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);
}
}
}
if (SplitHorizList.Count > 0)
{
for (int i = 0; i < AreaList.Count; i++)
{
if (i < SplitHorizList.Count)
AreaList.ElementAt(i).SearchAreaList(AreaList.ElementAt(i), SplitHorizList.ElementAt(i).dDimension, "Width");
}
}
if (SplitVertList.Count > 0)
{
for (int i = 0; i < AreaList.Count; i++)
{
if (i < SplitVertList.Count)
AreaList.ElementAt(i).SearchAreaList(AreaList.ElementAt(i), SplitVertList.ElementAt(i).dDimension, "Height");
}
}
}
@@ -216,7 +252,7 @@ namespace WebWindowComplex.Models
Frame? frame = ParentWindow.AreaList.FirstOrDefault();
if (frame != null)
{
double widthTot = CalculateWidthArea(frame, frame.DimensionList.Where(x => x.sName == "Width").First().dDimension);
double widthTot = CalculateWidthArea(frame, frame.AvailWidthArea());
// Ricalcolo dimensioni aggiungendo split
if (value > m_SplitVertList.Count - 1)
{
@@ -226,7 +262,10 @@ namespace WebWindowComplex.Models
if (m_SplitVertList.Count > 0)
{
dLastDimension = m_SplitVertList[m_SplitVertList.Count - 1].dDimension;
dNewDimension = (dLastDimension - ElemDimVertList.Last().dDimension) / (value + 1 - nSplitQtyVert);
if (m_SplitVertList.Last().MeasureType is MeasureTypes.ABSOLUTE)
dNewDimension = (dLastDimension - ElemDimVertList.Last().dDimension) / (value + 1 - nSplitQtyVert);
else
dNewDimension = dLastDimension / (value + 1 - nSplitQtyVert);
if (m_SplitVertList[m_SplitVertList.Count - 1].MeasureType.Equals(MeasureTypes.PROPORTIONAL))
dNewDimension = 1;
m_SplitVertList[m_SplitVertList.Count - 1].SetDimension(dNewDimension);
@@ -277,7 +316,9 @@ namespace WebWindowComplex.Models
double dLastDimension = 0;
for (var SplitIndex = m_SplitVertList.Count - 1; SplitIndex >= value + 1; SplitIndex += -1)
{
dLastDimension += m_SplitVertList[SplitIndex].dDimension + ElemDimVertList[SplitIndex - 1].dDimension;
dLastDimension += m_SplitVertList[SplitIndex].dDimension;
if(m_SplitVertList.Last().MeasureType.Equals(MeasureTypes.ABSOLUTE))
dLastDimension += ElemDimVertList[SplitIndex - 1].dDimension;
m_SplitVertList.RemoveAt(SplitIndex);
}
dLastDimension += m_SplitVertList[m_SplitVertList.Count - 1].dDimension;
@@ -684,27 +725,37 @@ namespace WebWindowComplex.Models
internal double HeightFrame()
{
double dim = 0;
switch (ParentWindow.AreaList.First().SelShapeIndex)
{
case (int)Shapes.RECTANGLE:
case (int)Shapes.TRIANGLE:
case (int)Shapes.ARC_FULL:
{
return ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Height").First().dDimension;
dim = ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Height").First().dDimension;
break;
}
case (int)Shapes.RIGHTCHAMFER:
{
return ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Left Height").First().dDimension;
dim = ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Left Height").First().dDimension;
break;
}
case (int)Shapes.LEFTCHAMFER:
{
return ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Right Height").First().dDimension;
dim = ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Right Height").First().dDimension;
break;
}
default:
{
return ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Full Height").First().dDimension;
dim = ParentWindow.AreaList.FirstOrDefault()!.DimensionList.Where(x => x.sName == "Full Height").First().dDimension;
break;
}
}
foreach(var elem in ElemDimHorizList)
{
dim = dim - elem.dDimension;
}
return dim;
}
#endregion Internal Methods
+11 -1
View File
@@ -6,7 +6,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>3.1.2.1710</Version>
<Version>3.1.2.1713</Version>
<Authors>Annamaria Sassi</Authors>
<Company>Egalware</Company>
<Description>Componente gestione Configurazioni avanzate Window per LUX</Description>
@@ -161,6 +161,16 @@
@@ -6,7 +6,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>3.1.2.1710</Version>
<Version>3.1.2.1713</Version>
<Authors>Annamaria Sassi</Authors>
<Company>Egalware</Company>
<Description>Componente gestione JWD per LUX</Description>
@@ -145,6 +145,16 @@