changed week view

This commit is contained in:
Christian Fiedler
2013-10-07 14:16:43 +02:00
parent 13a0cb2cd4
commit 98ea0fcfd5

View File

@@ -40,7 +40,8 @@ namespace CampusAppWP8.Pages.TimeTable
public DateTime DateTo { get; set; }
public char WeekChar { get; set; }
public int WeekNumber { get; set; }
public List<List<AppointmentModel>>[] Stacks { get; set; }
//public List<List<AppointmentModel>>[] Stacks { get; set; }
public List<List<AppointmentModel>> Stacks { get; set; }
}
private static readonly int PIVOT_PAGES = 3;
@@ -59,6 +60,7 @@ namespace CampusAppWP8.Pages.TimeTable
for (int i = 0; i < PIVOT_PAGES; i++)
{
/*
this.itemPages[i].Stacks = new List<List<AppointmentModel>>[5]
{
new List<List<AppointmentModel>>(),
@@ -67,7 +69,8 @@ namespace CampusAppWP8.Pages.TimeTable
new List<List<AppointmentModel>>(),
new List<List<AppointmentModel>>()
};
*/
this.itemPages[i].Stacks = new List<List<AppointmentModel>>();
this.CreatePage(i, firstDay);
firstDay = firstDay.AddDays(7);
}
@@ -192,7 +195,6 @@ namespace CampusAppWP8.Pages.TimeTable
private void OnPivotSelectionChanged(object sender, SelectionChangedEventArgs e)
{
int delta = this.ThePivot.SelectedIndex - this.lastSelectedIndex;
if (delta < -1) delta = 1;
@@ -253,14 +255,19 @@ namespace CampusAppWP8.Pages.TimeTable
int index = (indexVal >> 12) & 0xFFF;
int listIndex = (indexVal) & 0xFFF;
AppointmentModel tempModel = this.itemPages[index].Stacks[dayIndex][listIndex].First();
this.itemPages[index].Stacks[dayIndex][listIndex].Remove(tempModel);
this.itemPages[index].Stacks[dayIndex][listIndex].Add(tempModel);
for (int i = 0; i < this.itemPages[index].Stacks[dayIndex][listIndex].Count(); i++)
//AppointmentModel tempModel = this.itemPages[index].Stacks[dayIndex][listIndex].First();
//this.itemPages[index].Stacks[dayIndex][listIndex].Remove(tempModel);
//this.itemPages[index].Stacks[dayIndex][listIndex].Add(tempModel);
AppointmentModel tempModel = this.itemPages[index].Stacks[listIndex].First();
this.itemPages[index].Stacks[listIndex].Remove(tempModel);
this.itemPages[index].Stacks[listIndex].Add(tempModel);
//for (int i = 0; i < this.itemPages[index].Stacks[dayIndex][listIndex].Count(); i++)
for (int i = 0; i < this.itemPages[index].Stacks[listIndex].Count(); i++)
{
tempModel = this.itemPages[index].Stacks[dayIndex][listIndex][i];
//tempModel = this.itemPages[index].Stacks[dayIndex][listIndex][i];
tempModel = this.itemPages[index].Stacks[listIndex][i];
this.RemoveContentUIElement(index, tempModel);
for (int day = 0; day < 5; day++)
@@ -269,11 +276,13 @@ namespace CampusAppWP8.Pages.TimeTable
{
if (i > 0)
{
this.DrawAppointment(this.itemPages[index].Stacks[dayIndex][listIndex][i], index, day, 0.5, i, this.itemPages[index].Stacks[dayIndex][listIndex].Count - 1 - i);
//this.DrawAppointment(this.itemPages[index].Stacks[dayIndex][listIndex][i], index, day, 0.5, i, this.itemPages[index].Stacks[dayIndex][listIndex].Count - 1 - i);
this.DrawAppointment(this.itemPages[index].Stacks[listIndex][i], index, day, 0.5, i, this.itemPages[index].Stacks[listIndex].Count - 1 - i);
}
else
{
this.DrawAppointment(this.itemPages[index].Stacks[dayIndex][listIndex][i], index, day, 1.0, i, this.itemPages[index].Stacks[dayIndex][listIndex].Count - 1 - i);
//this.DrawAppointment(this.itemPages[index].Stacks[dayIndex][listIndex][i], index, day, 1.0, i, this.itemPages[index].Stacks[dayIndex][listIndex].Count - 1 - i);
this.DrawAppointment(this.itemPages[index].Stacks[listIndex][i], index, day, 1.0, i, this.itemPages[index].Stacks[listIndex].Count - 1 - i);
}
}
}
@@ -281,6 +290,7 @@ namespace CampusAppWP8.Pages.TimeTable
this.RemoveContentUIElement(index, sender as Canvas);
/*
Canvas[] tempCan = this.GetModelCanvasFromContent(index, this.itemPages[index].Stacks[dayIndex][listIndex][0]);
// FIXME: tempCan[0] -> to correct tempCan
@@ -291,6 +301,22 @@ namespace CampusAppWP8.Pages.TimeTable
this.itemPages[index].Stacks[dayIndex][listIndex].Count(),
tempCan[0].Width + tempCan[0].Margin.Left,
tempCan[0].Margin.Top);
*/
for (int day = 0; day < 5; day++)
{
if (this.itemPages[index].Stacks[listIndex][0].IsDate(this.itemPages[index].DateFrom.Date.AddDays(day)) > -1)
{
Canvas[] tempCan = this.GetModelCanvasFromContent(index, this.itemPages[index].Stacks[listIndex][0]);
this.DrawMultiBubble(
index,
day,
listIndex,
this.itemPages[index].Stacks[listIndex].Count(),
tempCan[0].Width + tempCan[0].Margin.Left,
tempCan[0].Margin.Top);
}
}
}
private void OnListChanged(object sender, NotifyCollectionChangedEventArgs e)
@@ -352,22 +378,27 @@ namespace CampusAppWP8.Pages.TimeTable
// Items
List<AppointmentModel>[] tempList = new List<AppointmentModel>[5];
// List<AppointmentModel>[] tempList = new List<AppointmentModel>[5];
List<AppointmentModel> tempList = new List<AppointmentModel>();
/*
for(int i = 0; i < 5; i++)
{
this.itemPages[index].Stacks[i].Clear();
}
/**/
this.itemPages[index].Stacks.Clear();
this.itemPages[index].Content.Children.Clear();
/*
for(int i = 0; i < 5; i++)
{
tempList[i] = new List<AppointmentModel>();
}
*/
for (int i = 0; i < TimeTable.AppointmentsModel.Appointments.Count(); i++)
{
/*
for (int k = 0; k < 5; k++)
{
if (TimeTable.AppointmentsModel.Appointments[i].IsDate(this.itemPages[index].DateFrom.Date.AddDays(k)) > -1)
@@ -375,8 +406,104 @@ namespace CampusAppWP8.Pages.TimeTable
tempList[k].Add(TimeTable.AppointmentsModel.Appointments[i]);
}
}
*/
if (TimeTable.AppointmentsModel.Appointments[i].IsDate(this.itemPages[index].DateFrom.Date, 4) > -1)
{
tempList.Add(TimeTable.AppointmentsModel.Appointments[i]);
}
}
// -------------------------------------------------------
for (int i = 0; i < tempList.Count(); i++)
{
int[] intersectIndex = tempList[i].IntersectArray(tempList.ToArray());
if (intersectIndex.Count() == 0)
{
for (int day = 0; day < 5; day++)
{
if (tempList[i].IsDate(this.itemPages[index].DateFrom.Date.AddDays(day)) > -1)
{
this.DrawAppointment(tempList[i], index, day);
}
}
}
else if (intersectIndex.Count() == 1)
{
int addIndex = -1;
for (int k = 0; k < this.itemPages[index].Stacks.Count(); k++)
{
//if (this.itemPages[index].Stacks[day][k].IndexOf(tempList[day][intersectIndex[0]]) > -1)
if(this.itemPages[index].Stacks[k].IndexOf(tempList[intersectIndex[0]]) > -1)
{
addIndex = k;
}
}
if (addIndex >= 0)
{
//this.itemPages[index].Stacks[day][addIndex].Add(tempList[day][i]);
this.itemPages[index].Stacks[addIndex].Add(tempList[i]);
}
else
{
List<AppointmentModel> newList = new List<AppointmentModel>();
//newList.Add(tempList[day][i]);
//this.itemPages[index].Stacks[day].Add(newList);
newList.Add(tempList[i]);
this.itemPages[index].Stacks.Add(newList);
}
}
else
{
List<List<AppointmentModel>> intersectLists = new List<List<AppointmentModel>>();
for (int k = 0; k < intersectIndex.Count(); k++)
{
//for (int m = 0; m < this.itemPages[index].Stacks[day].Count(); m++)
for(int m = 0; m < this.itemPages[index].Stacks.Count(); m++)
{
//if (this.itemPages[index].Stacks[day][m].IndexOf(tempList[day][intersectIndex[k]]) > -1)
if(this.itemPages[index].Stacks[m].IndexOf(tempList[intersectIndex[k]]) > -1)
{
//if (intersectLists.IndexOf(this.itemPages[index].Stacks[day][m]) < 0)
if(intersectLists.IndexOf(this.itemPages[index].Stacks[m]) < 0)
{
//intersectLists.Add(this.itemPages[index].Stacks[day][m]);
intersectLists.Add(this.itemPages[index].Stacks[m]);
}
}
}
}
if (intersectLists.Count() == 0)
{
List<AppointmentModel> newList = new List<AppointmentModel>();
//newList.Add(tempList[day][i]);
//this.itemPages[index].Stacks[day].Add(newList);
newList.Add(tempList[i]);
this.itemPages[index].Stacks.Add(newList);
}
else if (intersectLists.Count() == 1)
{
//intersectLists[0].Add(tempList[day][i]);
intersectLists[0].Add(tempList[i]);
}
else
{
for (int k = 1; k < intersectLists.Count(); k++)
{
intersectLists[0].AddRange(intersectLists[k].ToArray());
//this.itemPages[index].Stacks[day].Remove(intersectLists[k]);
this.itemPages[index].Stacks.Remove(intersectLists[k]);
}
//intersectLists[0].Add(tempList[day][i]);
intersectLists[0].Add(tempList[i]);
}
}
}
/*
for (int day = 0; day < 5; day++)
{
for (int i = 0; i < tempList[day].Count(); i++)
@@ -451,24 +578,34 @@ namespace CampusAppWP8.Pages.TimeTable
}
}
}
*/
// stack draw
for (int day = 0; day < 5; day++)
//for (int day = 0; day < 5; day++)
{
for (int i = 0; i < this.itemPages[index].Stacks[day].Count(); i++)
//for (int i = 0; i < this.itemPages[index].Stacks[day].Count(); i++)
for(int i = 0; i < this.itemPages[index].Stacks.Count(); i++)
{
for (int k = 0; k < this.itemPages[index].Stacks[day][i].Count(); k++)
//for (int k = 0; k < this.itemPages[index].Stacks[day][i].Count(); k++)
for(int k = 0; k < this.itemPages[index].Stacks[i].Count(); k++)
{
if (k > 0)
{
this.DrawAppointment(this.itemPages[index].Stacks[day][i][k], index, day, 0.5, k, this.itemPages[index].Stacks[day][i].Count() - 1 - k);
//this.DrawAppointment(this.itemPages[index].Stacks[day][i][k], index, day, 0.5, k, this.itemPages[index].Stacks[day][i].Count() - 1 - k);
for (int day = 0; day < 5; day++)
{
this.DrawAppointment(this.itemPages[index].Stacks[i][k], index, day, 0.5, k, this.itemPages[index].Stacks[i].Count() - 1 - k);
}
}
else
{
this.DrawAppointment(this.itemPages[index].Stacks[day][i][k], index, day, 1.0, k, this.itemPages[index].Stacks[day][i].Count() - 1 - k);
//this.DrawAppointment(this.itemPages[index].Stacks[day][i][k], index, day, 1.0, k, this.itemPages[index].Stacks[day][i].Count() - 1 - k);
for (int day = 0; day < 5; day++)
{
this.DrawAppointment(this.itemPages[index].Stacks[i][k], index, day, 1.0, k, this.itemPages[index].Stacks[i].Count() - 1 - k);
}
}
}
/*
Canvas[] tempCan = this.GetModelCanvasFromContent(index, this.itemPages[index].Stacks[day][i][0]);
// FIXME: tempCan[0] ->
this.DrawMultiBubble(
@@ -478,6 +615,21 @@ namespace CampusAppWP8.Pages.TimeTable
this.itemPages[index].Stacks[day][i].Count(),
tempCan[0].Width + tempCan[0].Margin.Left,
tempCan[0].Margin.Top);
*/
for (int day = 0; day < 5; day++)
{
if (this.itemPages[index].Stacks[i][0].IsDate(this.itemPages[index].DateFrom.Date.AddDays(day)) > -1)
{
Canvas[] tempCan = this.GetModelCanvasFromContent(index, this.itemPages[index].Stacks[i][0]);
this.DrawMultiBubble(
index,
day,
i,
this.itemPages[index].Stacks[i].Count(),
tempCan[0].Width + tempCan[0].Margin.Left,
tempCan[0].Margin.Top);
}
}
}
}
}
@@ -578,6 +730,9 @@ namespace CampusAppWP8.Pages.TimeTable
{
Canvas can = new Canvas();
can.Width = WEEK_TABLE_CELL_HEIGHT * 2;
can.Height = WEEK_TABLE_CELL_HEIGHT * 2;
Rectangle rect = new Rectangle();
rect.Width = WEEK_TABLE_CELL_HEIGHT / 2;
rect.Height = WEEK_TABLE_CELL_HEIGHT / 2;
@@ -598,11 +753,17 @@ namespace CampusAppWP8.Pages.TimeTable
block.Padding = new Thickness(WEEK_TABLE_CELL_HEIGHT / 6.5, 0, 0, 0);
can.Children.Add(rect);
rect.SetValue(Canvas.TopProperty, WEEK_TABLE_CELL_HEIGHT / 2);
rect.SetValue(Canvas.LeftProperty, WEEK_TABLE_CELL_HEIGHT / 2);
can.Children.Add(block);
block.SetValue(Canvas.TopProperty, WEEK_TABLE_CELL_HEIGHT / 2);
block.SetValue(Canvas.LeftProperty, WEEK_TABLE_CELL_HEIGHT / 2);
can.Tap += new EventHandler<System.Windows.Input.GestureEventArgs>(this.OnMultiBubbleClick);
can.Tag = ((dayIndex & 0xF) << 24) | ((index & 0xFFF) << 12) | (listIndex & 0xFFF);
can.SetValue(Canvas.LeftProperty, xOffset - rect.Width);
can.SetValue(Canvas.TopProperty, yOffset);
can.SetValue(Canvas.LeftProperty, xOffset - rect.Width - (WEEK_TABLE_CELL_HEIGHT / 2));
can.SetValue(Canvas.TopProperty, yOffset - (WEEK_TABLE_CELL_HEIGHT / 2));
can.SetValue(Canvas.ZIndexProperty, WEEK_TABLE_ZINDEX_MAX + 1);
this.itemPages[index].Content.Children.Add(can);