Gestiti elementi degli split
This commit is contained in:
@@ -30,6 +30,32 @@ namespace WebWindowComplex.Models
|
||||
set
|
||||
{
|
||||
m_bSplitStartVert = value;
|
||||
m_ElemDimVertList.Clear();
|
||||
m_ElemDimHorizList.Clear();
|
||||
if (value)
|
||||
{
|
||||
for (int i = 0; i < nSplitQtyVert; i++)
|
||||
{
|
||||
m_ElemDimVertList.Add(new SplitElementDimension(this, i + 1, 78, 0));
|
||||
}
|
||||
for (int subArea = 0; subArea < m_SplitVertList.Count; subArea++)
|
||||
{
|
||||
for (int index = 0; index < nSplitQtyHoriz; index++)
|
||||
m_ElemDimHorizList.Add(new SplitElementDimension(this, index + 1, 78, subArea + 1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < nSplitQtyHoriz; i++)
|
||||
{
|
||||
m_ElemDimHorizList.Add(new SplitElementDimension(this, i + 1, 78, 0));
|
||||
}
|
||||
for (int subArea = 0; subArea < m_SplitHorizList.Count; subArea++)
|
||||
{
|
||||
for (int index = 0; index < nSplitQtyVert; index++)
|
||||
m_ElemDimVertList.Add(new SplitElementDimension(this, index + 1, 78, subArea + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +105,27 @@ namespace WebWindowComplex.Models
|
||||
// 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));
|
||||
ElemDimHorizList.Add(new ElementDimension(this, ElemDimHorizList.Count, 78));
|
||||
//ElemDimHorizList.Add(new SplitElementDimension(this, ElemDimHorizList.Count, 78));
|
||||
if (!m_bSplitStartVert)
|
||||
{
|
||||
//Aggiungo un elemento alla sottoarea principale
|
||||
ElemDimHorizList.Add(new SplitElementDimension(this, ElemDimHorizList.Max(x => x.nIndex) + 1, 78, 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
|
||||
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
|
||||
@@ -92,7 +138,21 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
dLastDimension += m_SplitHorizList[m_SplitHorizList.Count - 1].dDimension;
|
||||
m_SplitHorizList[m_SplitHorizList.Count - 1].SetDimension(dLastDimension);
|
||||
ElemDimHorizList.RemoveAt(ElemDimHorizList.Count-1);
|
||||
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);
|
||||
ElemDimVertList.RemoveAll(x => x.nSubArea == deleteSubArea);
|
||||
}
|
||||
}
|
||||
// Controllo quanti split verticali ci sono
|
||||
int nVert = m_SplitVertList.Count > 0 ? m_SplitVertList.Count : 1;
|
||||
@@ -174,6 +234,26 @@ namespace WebWindowComplex.Models
|
||||
// aggiungo area Split di default
|
||||
for (var SplitIndex = m_SplitVertList.Count; SplitIndex <= value; SplitIndex++)
|
||||
m_SplitVertList.Add(new SplitDimension(dNewDimension, m_SplitVertList[m_SplitVertList.Count - 1].MeasureType, true, this, true));
|
||||
if (m_bSplitStartVert)
|
||||
{
|
||||
//Aggiungo un elemento alla sottoarea principale
|
||||
ElemDimVertList.Add(new SplitElementDimension(this, ElemDimVertList.Max(x => x.nIndex) + 1, 78, 0));
|
||||
// Aggiungo a tutte le sottoaree degli element
|
||||
int subArea = ElemDimHorizList.Max(x => x.nSubArea) + 1;
|
||||
for (int i = 1; i <= ElemDimHorizList.Max(x => x.nIndex); i++)
|
||||
{
|
||||
ElemDimHorizList.Add(new SplitElementDimension(this, i, 78, subArea));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Aggiungo a tutte le sottoaree un elemento
|
||||
for (int i = 1; i <= ElemDimVertList.Max(x => x.nSubArea); i++)
|
||||
{
|
||||
int index = ElemDimVertList.Where(x => x.nSubArea == i).Max(x => x.nIndex);
|
||||
ElemDimVertList.Insert(index * i + (i - 1), new SplitElementDimension(this, index + 1, 78, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (value == 0)
|
||||
{
|
||||
@@ -200,8 +280,21 @@ namespace WebWindowComplex.Models
|
||||
dLastDimension += m_SplitVertList[m_SplitVertList.Count - 1].dDimension;
|
||||
m_SplitVertList[m_SplitVertList.Count - 1].SetDimension(dLastDimension);
|
||||
}
|
||||
ElemDimVertList.RemoveAt(ElemDimVertList.Count - 1);
|
||||
|
||||
if (m_bSplitStartVert)
|
||||
{
|
||||
int deleteSubArea = ElemDimVertList.Count + 1;
|
||||
ElemDimVertList.RemoveAt(ElemDimVertList.Count - 1);
|
||||
ElemDimHorizList.RemoveAll(x=>x.nSubArea == deleteSubArea);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Rimuovo da tutte le sottoaree degli element l'ultimo elemento
|
||||
for (int subArea = 1; subArea <= ElemDimVertList.Max(x => x.nSubArea); subArea++)
|
||||
{
|
||||
SplitElementDimension removeElem = ElemDimVertList.Where(x => x.nSubArea == subArea).OrderByDescending(x => x.nIndex).FirstOrDefault();
|
||||
ElemDimVertList.Remove(removeElem);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Controllo quanti split orizzontali ci sono
|
||||
int nHoriz = m_SplitHorizList.Count > 0 ? m_SplitHorizList.Count : 1;
|
||||
@@ -263,25 +356,25 @@ namespace WebWindowComplex.Models
|
||||
SplitShapes OldSelShapeSplit = m_SelSplitShape;
|
||||
m_SelSplitShape = (SplitShapes)value;
|
||||
// Azzero quantità orizzontale e verticale
|
||||
SetSplitQtyVert(0);
|
||||
SetSplitQtyHoriz(0);
|
||||
SetSplitQtyVert(0, 0);
|
||||
SetSplitQtyHoriz(0,0);
|
||||
if (m_SelSplitShape == SplitShapes.VERTICAL)
|
||||
{
|
||||
// Inserisco valori di default
|
||||
SetSplitQtyVert(1);
|
||||
SetSplitQtyVert(1, 0);
|
||||
SetSplitStartVert(true);
|
||||
}
|
||||
else if (m_SelSplitShape == SplitShapes.HORIZONTAL)
|
||||
{
|
||||
// Inserisco valori di default
|
||||
SetSplitQtyHoriz(1);
|
||||
SetSplitQtyHoriz(1,0);
|
||||
SetSplitStartVert(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Inserisco valori di default
|
||||
SetSplitQtyVert(1);
|
||||
SetSplitQtyHoriz(1);
|
||||
SetSplitQtyVert(1, 1);
|
||||
SetSplitQtyHoriz(1, 1);
|
||||
SetSplitStartVert(true);
|
||||
}
|
||||
if(OldSelShapeSplit == SplitShapes.GRID || m_SelSplitShape == SplitShapes.GRID)
|
||||
@@ -313,7 +406,7 @@ namespace WebWindowComplex.Models
|
||||
m_SplitHorizList = value;
|
||||
}
|
||||
}
|
||||
public List<ElementDimension> ElemDimHorizList
|
||||
public List<SplitElementDimension> ElemDimHorizList
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -325,7 +418,7 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
}
|
||||
|
||||
public List<ElementDimension> ElemDimVertList
|
||||
public List<SplitElementDimension> ElemDimVertList
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -392,12 +485,12 @@ namespace WebWindowComplex.Models
|
||||
newSplit.SetAreaType(AreaType);
|
||||
foreach (var item in ElemDimHorizList)
|
||||
{
|
||||
ElementDimension newElementDimension = item.Copy();
|
||||
SplitElementDimension newElementDimension = item.Copy();
|
||||
newSplit.ElemDimHorizList.Add(newElementDimension);
|
||||
}
|
||||
foreach (var item in ElemDimVertList)
|
||||
{
|
||||
ElementDimension newElementDimension = item.Copy();
|
||||
SplitElementDimension newElementDimension = item.Copy();
|
||||
newSplit.ElemDimVertList.Add(newElementDimension);
|
||||
}
|
||||
foreach (var item in AreaList)
|
||||
@@ -492,7 +585,7 @@ namespace WebWindowComplex.Models
|
||||
return JsonSplit;
|
||||
}
|
||||
|
||||
internal void SetSplitQtyHoriz(int QtyHoriz)
|
||||
internal void SetSplitQtyHoriz(int QtyHoriz, int QtyVert)
|
||||
{
|
||||
if (QtyHoriz > m_SplitHorizList.Count)
|
||||
{
|
||||
@@ -520,14 +613,25 @@ namespace WebWindowComplex.Models
|
||||
{
|
||||
ElemDimHorizList.Clear();
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < QtyHoriz; i++)
|
||||
ElemDimHorizList.Add(new ElementDimension(this, i + 1, 78));
|
||||
if (bSplitStartVert)
|
||||
{
|
||||
for(int subArea = 0; subArea < QtyVert; subArea++)
|
||||
{
|
||||
for (int i = 0; i < QtyHoriz; i++)
|
||||
ElemDimHorizList.Add(new SplitElementDimension(this, i + 1, 78, subArea+1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < QtyHoriz; i++)
|
||||
ElemDimHorizList.Add(new SplitElementDimension(this, i + 1, 78, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal void SetSplitQtyVert(int QtyVert)
|
||||
internal void SetSplitQtyVert(int QtyVert, int QtyHoriz)
|
||||
{
|
||||
if (QtyVert > m_SplitVertList.Count)
|
||||
{
|
||||
@@ -557,8 +661,19 @@ namespace WebWindowComplex.Models
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < QtyVert; i++)
|
||||
ElemDimVertList.Add(new ElementDimension(this, i + 1, 78));
|
||||
if (bSplitStartVert)
|
||||
{
|
||||
for (int i = 0; i < QtyVert; i++)
|
||||
ElemDimVertList.Add(new SplitElementDimension(this, i + 1, 78, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int subArea = 0; subArea< QtyHoriz; subArea++)
|
||||
{
|
||||
for (int i = 0; i < QtyVert; i++)
|
||||
ElemDimVertList.Add(new SplitElementDimension(this, i+1, 78, subArea + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -606,8 +721,8 @@ namespace WebWindowComplex.Models
|
||||
private SplitShapes m_SelSplitShape;
|
||||
|
||||
private List<SplitDimension> m_SplitHorizList = new List<SplitDimension>();
|
||||
private List<ElementDimension> m_ElemDimHorizList = new List<ElementDimension>();
|
||||
private List<ElementDimension> m_ElemDimVertList = new List<ElementDimension>();
|
||||
private List<SplitElementDimension> m_ElemDimHorizList = new List<SplitElementDimension>();
|
||||
private List<SplitElementDimension> m_ElemDimVertList = new List<SplitElementDimension>();
|
||||
private List<SplitDimension> m_SplitPositionList = new List<SplitDimension>();
|
||||
|
||||
private List<IdNameStruct> m_SplitShapeList = new List<IdNameStruct>
|
||||
|
||||
Reference in New Issue
Block a user