private void btnNextPage_Click(object sender, EventArgs e) { BLIO.Log("btnNextPage_Click"); List <Reminder> reminders = BLReminder.GetReminders().OrderBy(r => Convert.ToDateTime(r.Date.Split(',')[0])).Where(r => r.Enabled == 1).Where(r => r.Hide == 0).ToList(); reminders.AddRange(BLReminder.GetReminders().OrderBy(r => Convert.ToDateTime(r.Date.Split(',')[0])).Where(r => r.Enabled == 0).Where(r => r.Hide == 0)); //^ All reminders in one list with the disabled ones at the end of the list if ((pageNumber * 7) + 1 > reminders.Count) { return; //No reminders left } int reminderItemCounter = 0; for (int i = pageNumber * 7; i < (pageNumber * 7) + 7; i++) { if (reminders.Count - 1 >= i) //Safely within index numbers { //Get the user control item from the panel. There's 7 user controls in the panel, so we have another counter for those UCReminderItem itm = (UCReminderItem)pnlReminders.Controls[reminderItemCounter]; itm.Visible = true; //Update the reminder object inside the user control, that's waay faster than removing and re-drawing a new control. itm.Reminder = reminders[i]; } else //Fill all remaining controls that can't be filled with reminders with "empty", since there are no reminders left { for (int ii = reminderItemCounter; ii < 7; ii++) { ((UCReminderItem)pnlReminders.Controls[ii]).Reminder = null; } } reminderItemCounter++; } pageNumber++; if ((pageNumber * 7) + 1 > reminders.Count) { btnNextPage.Iconimage = Properties.Resources.NextGray1; } else { btnNextPage.Iconimage = Properties.Resources.NextWhite; } if (pageNumber > 1) { btnPreviousPage.Iconimage = Properties.Resources.PreviousWhite; } Form1.Instance.UpdatePageNumber(pageNumber); }
private void AddRemindersToPanel() { Point loc = new Point(10, 10); UCReminderItem itm = null; foreach (Reminder rem in BLReminder.GetReminders()) { if (itm != null) { loc = new Point(loc.X, (itm.Location.Y + itm.Height) + 10); } itm = new UCReminderItem(rem); itm.Location = loc; pnlReminders.Controls.Add(itm); } }
private void btnPreviousPage_Click(object sender, EventArgs e) { BLIO.Log("btnPreviousPage_Click"); if (pageNumber <= 1) //Can't go to the previous page if we're on the first one { return; } List <Reminder> reminders = BLReminder.GetReminders().OrderBy(r => Convert.ToDateTime(r.Date.Split(',')[0])).Where(r => r.Enabled == 1).Where(r => r.Hide == 0).ToList(); reminders.AddRange(BLReminder.GetReminders().OrderBy(r => Convert.ToDateTime(r.Date.Split(',')[0])).Where(r => r.Enabled == 0).Where(r => r.Hide == 0)); //^ All reminders in one list with the disabled ones at the end of the list int reminderItemCounter = 0; for (int i = (pageNumber - 2) * 7; i < ((pageNumber - 2) * 7) + 7; i++) { if (reminders.Count - 1 >= i) //Safely within index numbers { //Get the user control item from the panel. There's 7 user controls in the panel, so we have another counter for those UCReminderItem itm = (UCReminderItem)pnlReminders.Controls[reminderItemCounter]; itm.Visible = true; //Update the reminder object inside the user control, that's waay faster than removing and re-drawing a new control. itm.Reminder = reminders[i]; } reminderItemCounter++; if (reminderItemCounter == 7) { break; } } pageNumber--; Form1.Instance.UpdatePageNumber(pageNumber); SetPageButtonIcons(reminders); }
//Display changes on the current page. (For example a deleted or enabled/disabled reminder) public void UpdateCurrentPage() { List <Reminder> reminders = BLReminder.GetReminders().OrderBy(r => Convert.ToDateTime(r.Date.Split(',')[0])).Where(r => r.Enabled == 1).Where(r => r.Hide == 0).ToList(); reminders.AddRange(BLReminder.GetReminders().OrderBy(r => Convert.ToDateTime(r.Date.Split(',')[0])).Where(r => r.Enabled == 0).Where(r => r.Hide == 0)); //^ All reminders in one list with the disabled ones at the end of the list startMethod: if ((pageNumber * 7) + 1 > reminders.Count) { btnNextPage.Iconimage = Properties.Resources.NextGray1; } else { btnNextPage.Iconimage = Properties.Resources.NextWhite; } int reminderItemCounter = 0; for (int i = (pageNumber - 1) * 7; i < ((pageNumber) * 7); i++) { if (reminders.Count - 1 >= i) //Safely within index numbers { if (reminderItemCounter >= pnlReminders.Controls.Count) { return; } //Get the user control item from the panel. There's 7 user controls in the panel, so we have another counter for those UCReminderItem itm = (UCReminderItem)pnlReminders.Controls[reminderItemCounter]; itm.Visible = true; //Update the reminder object inside the user control, that's waay faster than removing and re-drawing a new control. itm.UpdateReminder(reminders[i]); } else { //User deleted a reminder, which was the last one out of the list from that page. Navigate to the previous page. if (i % 7 == 0 && pageNumber > 1) { pageNumber--; goto startMethod; } for (int ii = i; ii < 7; ii++) { if (ii >= pnlReminders.Controls.Count) { break; } UCReminderItem itm = (UCReminderItem)pnlReminders.Controls[ii]; itm.Visible = false; } break; } reminderItemCounter++; if (reminderItemCounter == 7) { break; } } if (reminders.Count <= 7) { Form1.Instance.UpdatePageNumber(-1); } else { Form1.Instance.UpdatePageNumber(pageNumber); } if (GetInstance() != null) { GetInstance().tmrCheckReminder.Start(); } //Change background if there are no reminders left if (BLReminder.GetReminders().Where(r => r.Hide == 0).ToList().Count == 0) { pnlReminders.BackgroundImage = Properties.Resources.NoReminders2; } else { pnlReminders.BackgroundImage = Properties.Resources.RemindMeGradient; } }
//Display changes on the current page. (For example a deleted or enabled/disabled reminder) public void UpdateCurrentPage() { BLIO.Log("Starting UpdateCurrentPage()..."); List <Reminder> reminders = BLReminder.GetReminders().OrderBy(r => Convert.ToDateTime(r.Date.Split(',')[0])).Where(r => r.Enabled == 1).Where(r => r.Hide == 0).ToList(); reminders.AddRange(BLReminder.GetReminders().OrderBy(r => Convert.ToDateTime(r.Date.Split(',')[0])).Where(r => r.Enabled == 0).Where(r => r.Hide == 0)); //^ All reminders in one list with the disabled ones at the end of the list BLIO.Log(reminders.Count + " reminders loaded"); startMethod: if ((pageNumber * 7) + 1 > reminders.Count) { btnNextPage.Iconimage = Properties.Resources.NextGray1; } else { btnNextPage.Iconimage = Properties.Resources.NextWhite; } int reminderItemCounter = 0; for (int i = (pageNumber - 1) * 7; i < ((pageNumber) * 7); i++) { if (reminders.Count - 1 >= i) //Safely within index numbers { if (reminderItemCounter >= pnlReminders.Controls.Count) { return; } //Get the user control item from the panel. There's 7 user controls in the panel, so we have another counter for those UCReminderItem itm = (UCReminderItem)pnlReminders.Controls[reminderItemCounter]; //Update the reminder object inside the user control, that's waay faster than removing and re-drawing a new control. itm.Reminder = reminders[i]; } else { //User deleted a reminder, which was the last one out of the list from that page. Navigate to the previous page. if (i % 7 == 0 && pageNumber > 1) { BLIO.Log("navigating to the previous page after deletion of an reminder..."); pageNumber--; goto startMethod; } for (int ii = i; ii < 7; ii++) { if (ii >= pnlReminders.Controls.Count) { break; } UCReminderItem itm = (UCReminderItem)pnlReminders.Controls[ii]; itm.Reminder = null; } //This happens when an reminder has been deleted, and there are less than 7 reminders on that page. Empty out the remaining reminder items. while (reminderItemCounter <= 6) { BLIO.Log("Detected the deletion of an reminder on the current page."); //Get the user control item from the panel. There's 7 user controls in the panel, so we have another counter for those UCReminderItem itm = (UCReminderItem)pnlReminders.Controls[reminderItemCounter]; if (itm.Reminder != null) { BLIO.Log("Emptying ReminderItem with ID " + itm.Reminder.Id); } //Update the reminder object inside the user control, that's waay faster than removing and re-drawing a new control. itm.Reminder = null; reminderItemCounter++; } break; } reminderItemCounter++; if (reminderItemCounter == 7) { break; } } if (reminders.Count <= 7) { Form1.Instance.UpdatePageNumber(-1); } else { Form1.Instance.UpdatePageNumber(pageNumber); } if (Instance != null) { Instance.tmrCheckReminder.Start(); } BLIO.Log("UpdateCurrentPage() completed."); }