private void btnNextPage_Click(object sender, EventArgs e) { 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.UpdateReminder(reminders[i]); } else //hide all remaining controls that can't be filled with reminders, since there are no reminders left { for (int ii = reminderItemCounter; ii < 7; ii++) { pnlReminders.Controls[ii].Visible = false; } } 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 btnPreviousPage_Click(object sender, EventArgs e) { 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.UpdateReminder(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; } }