- Gestito salvataggio e chiusura componente con salvataggio jwd

- Correzioni valori nulli
- Aggiunta funzione per calcolare altezza sashGroup
This commit is contained in:
Annamaria Sassi
2026-03-03 19:02:42 +01:00
parent 224bac0947
commit ada0fc2ce5
18 changed files with 319 additions and 299 deletions
+57 -71
View File
@@ -281,28 +281,22 @@ namespace WebWindowComplex.Models
{
MeasureTypes newType = (MeasureTypes)value;
List<SplitDimension> splitList = new List<SplitDimension>();
List<SplitElementDimension> splitElemList = new List<SplitElementDimension>();
if(m_Parent.ParentWindow.AreaList.FirstOrDefault() != null)
{
Frame frame = m_Parent.ParentWindow.AreaList.FirstOrDefault()!;
double tot = 0;
double dimSplitGroup = 0;
if (bIsVertListDim)
{
splitList = m_Parent.SplitVertList;
//tot = CalculateWidthSplitGroup(frame, frame.DimensionList.Where(x => x.sName == "Width").First().dDimension, new AreaFound(-1, false)).m_Dimension;
tot = CalculateWidthSplitGroup(frame, frame.AvailWidthArea(), new AreaFound(-1, false)).m_Dimension;
foreach (var item in m_Parent.ElemDimVertList)
{
tot = tot - item.dDimension;
}
splitElemList = m_Parent.ElemDimVertList;
dimSplitGroup = CalculateWidthSplitGroup(frame, frame.AvailWidthArea(), new AreaFound(-1, false)).m_Dimension;
}
else
{
splitList = m_Parent.SplitHorizList;
tot = (CalculateHeightSplitGroup(frame, frame.AvailHeightArea(), new AreaFound(-1, false))).m_Dimension;
foreach (var item in m_Parent.ElemDimHorizList)
{
tot = tot - item.dDimension;
}
splitElemList = m_Parent.ElemDimHorizList;
dimSplitGroup = (CalculateHeightSplitGroup(frame, frame.AvailHeightArea(), new AreaFound(-1, false))).m_Dimension;
}
AreaDimension ad = new AreaDimension(dDimension, SelMeasureType, Parent);
List<AreaDimension> adList = new List<AreaDimension>();
@@ -310,7 +304,11 @@ namespace WebWindowComplex.Models
{
adList.Add(new AreaDimension(it.dDimension, it.SelMeasureType, it.Parent));
}
m_dDimension = ad.ConvertDimension(adList, m_SelMeasureType, newType, tot, splitList.IndexOf(this));
foreach (var item in splitElemList)
{
dimSplitGroup = dimSplitGroup - item.dDimension;
}
m_dDimension = ad.ConvertDimension(adList, m_SelMeasureType, newType, dimSplitGroup, splitList.IndexOf(this));
m_SelMeasureType = (MeasureTypes)value;
}
}
@@ -510,32 +508,31 @@ namespace WebWindowComplex.Models
break;
}
}
if (split.ParentArea is Frame frame && split.AreaList.ElementAt(i).AreaList.First() is Sash sash)
{
dim = dim + sash.SashList.First().ElementDimensionList.First().dOverlap
+ sash.SashList.First().ElementDimensionList.ElementAt(sash.SashList.First().ElementDimensionList.Count - 2).dOverlap;
}
//if (split.ParentArea is Frame frame && split.AreaList.ElementAt(i).AreaList.First() is Sash sash)
//{
// dim = dim + sash.SashList.First().ElementDimensionList.First().dOverlap
// + sash.SashList.First().ElementDimensionList.ElementAt(sash.SashList.First().ElementDimensionList.Count - 2).dOverlap;
//}
res = CalculateHeightSplitGroup(item, dim, res);
if (res.m_Dimension != -1 && res.m_Found)
return res;
}
else
{
res = CalculateHeightSplitGroup(item, height, res);
double dim = height;
//if (split.ParentArea is Frame frame && split.AreaList.ElementAt(i).AreaList.First() is Sash sash)
//{
// dim = dim + sash.SashList.First().ElementDimensionList.First().dOverlap
// + sash.SashList.First().ElementDimensionList.ElementAt(sash.SashList.First().ElementDimensionList.Count - 2).dOverlap;
//}
res = CalculateHeightSplitGroup(item, dim, res);
if (res.m_Dimension != -1 && res.m_Found)
return res;
}
}
else if (area is Sash sash)
{
double overlap = 0;
double bottomRail = 0;
//if (sash.ParentArea is Split)
// overlap = sash.SashList.First().ElementDimensionList.First().dOverlap
// + sash.SashList.First().ElementDimensionList.ElementAt(sash.SashList.First().ElementDimensionList.Count - 2).dOverlap;
//if (sash.ParentArea.ParentArea is Split)
// overlap = sash.SashList.First().ElementDimensionList.First().dOverlap
// + sash.SashList.First().ElementDimensionList.ElementAt(sash.SashList.First().ElementDimensionList.Count - 2).dOverlap;
if(sash.SashBottomRailQty > 0)
{
foreach (var bottom in sash.BottomRailElemDimList)
@@ -549,6 +546,21 @@ namespace WebWindowComplex.Models
if (res.m_Dimension != -1 && res.m_Found)
return res;
}
else if (area is Splitted splitted)
{
double dim = height;
if (splitted.ParentArea is Split sp && splitted.AreaList.First() is Sash sh)
{
if (sp.SplitHorizList.Count > 0)
{
dim = dim + sh.SashList.First().ElementDimensionList.First().dOverlap
+ sh.SashList.First().ElementDimensionList.ElementAt(sh.SashList.First().ElementDimensionList.Count - 2).dOverlap;
}
}
res = CalculateHeightSplitGroup(item, dim, res);
if (res.m_Dimension != -1 && res.m_Found)
return res;
}
else
{
res = CalculateHeightSplitGroup(item, height, res);
@@ -585,61 +597,35 @@ namespace WebWindowComplex.Models
if (m_SelMeasureType != (MeasureTypes)value)
{
MeasureTypes newType = (MeasureTypes)value;
if(m_Parent.ParentWindow.AreaList.FirstOrDefault() != null)
List<SplitDimension> splitList = new List<SplitDimension>();
List<SplitElementDimension> splitElemList = new List<SplitElementDimension>();
if (m_Parent.ParentWindow.AreaList.FirstOrDefault() != null)
{
Frame frame = m_Parent.ParentWindow.AreaList.FirstOrDefault()!;
double dimSplitGroup = 0;
if (bIsVertListDim)
{
dimSplitGroup = (CalculateWidthSplitGroup(frame, frame.AvailWidthArea(), new AreaFound(-1, false))).m_Dimension;
foreach (var item in m_Parent.ElemDimVertList)
{
dimSplitGroup = dimSplitGroup - item.dDimension;
}
AreaDimension ad = new AreaDimension(dDimension, SelMeasureType, Parent);
List<AreaDimension> newDimensions = new List<AreaDimension>();
foreach (var item in m_Parent.SplitVertList)
{
newDimensions.Add(new AreaDimension(item.dDimension, item.SelMeasureType, item.Parent));
}
m_dDimension = ad.ConvertDimension(newDimensions, m_SelMeasureType, newType, dimSplitGroup, m_Parent.SplitVertList.IndexOf(this));
//if (newType is MeasureTypes.PROPORTIONAL)
//{
// for (int i = 0; i < m_Parent.SplitVertList.Count; i++)
// {
// m_Parent.SplitVertList.ElementAt(i).SetDimension(newDimensions.ElementAt(i).dDimension);
// }
//}
splitList = m_Parent.SplitVertList;
splitElemList = m_Parent.ElemDimVertList;
dimSplitGroup = CalculateWidthSplitGroup(frame, frame.AvailWidthArea(), new AreaFound(-1, false)).m_Dimension;
}
else
{
splitList = m_Parent.SplitHorizList;
splitElemList = m_Parent.ElemDimHorizList;
dimSplitGroup = (CalculateHeightSplitGroup(frame, frame.AvailHeightArea(), new AreaFound(-1, false))).m_Dimension;
List<SplitElementDimension> elemList = new List<SplitElementDimension>();
if (Parent.bSplitStartVert)
{
elemList = m_Parent.ElemDimHorizList.Where(x => x.nSubArea == 1).ToList();
}
else
elemList = m_Parent.ElemDimHorizList;
foreach (var item in elemList)
{
dimSplitGroup = dimSplitGroup - item.dDimension;
}
AreaDimension ad = new AreaDimension(dDimension, SelMeasureType, Parent);
List<AreaDimension> newDimensions = new List<AreaDimension>();
foreach (var item in m_Parent.SplitHorizList)
{
newDimensions.Add(new AreaDimension(item.dDimension, item.SelMeasureType, item.Parent));
}
m_dDimension = ad.ConvertDimension(newDimensions, m_SelMeasureType, newType, dimSplitGroup, m_Parent.SplitHorizList.IndexOf(this));
//if(newType is MeasureTypes.PROPORTIONAL)
//{
// for(int i = 0; i < m_Parent.SplitHorizList.Count; i++)
// {
// m_Parent.SplitHorizList.ElementAt(i).SetDimension(newDimensions.ElementAt(i).dDimension);
// }
//}
}
AreaDimension ad = new AreaDimension(dDimension, SelMeasureType, Parent);
List<AreaDimension> adList = new List<AreaDimension>();
foreach (var it in splitList)
{
adList.Add(new AreaDimension(it.dDimension, it.SelMeasureType, it.Parent));
}
foreach (var item in splitElemList)
{
dimSplitGroup = dimSplitGroup - item.dDimension;
}
m_dDimension = ad.ConvertDimension(adList, m_SelMeasureType, newType, dimSplitGroup, splitList.IndexOf(this));
m_SelMeasureType = (MeasureTypes)value;
}
}