private void RefreshPage() { if (_skipRefreshing) { return; } //i wonder if i'll ever notice how slow this is.. YearTop localYt; if (_dateSelected > DateTime.Today) { localYt = _year.Copy(); localYt.FastForward(_dateSelected); _fastForwardNoEditing = true; } else { localYt = _year; _fastForwardNoEditing = false; } //using accountsLv here so the order matches up //accountsLv is for name & selection //accountInfoLv is to display any info for each of those accounts accountInfoLv.Items.Clear(); foreach (ListViewItem item in accountsLv.Items) { if (item == null) { continue; } ListViewItem lvi = new ListViewItem(localYt.GetAccount(item.Text).GetBalance(_dateSelected).ToString()); lvi.SubItems.Add(localYt.GetAccount(item.Text).StartingDate.ToShortDateString()); accountInfoLv.Items.Add(lvi); } var softBillUsage = localYt.GetSoftBillUsed(_monthSelected); softBillsLbl.Text = string.Format("Soft Bills Month: {0}", Months[_monthSelected]); //update softbilllbl softBillsLv.Items.Clear(); foreach (var softBill in localYt.GetSoftBillGroup(_monthSelected)) { ListViewItem lvi = new ListViewItem(softBill.Key); lvi.SubItems.Add(softBill.Value.ToString()); lvi.SubItems.Add((softBill.Value - softBillUsage[softBill.Key]).ToString()); lvi.Tag = softBill.Value; softBillsLv.Items.Add(lvi); } transactionsLv.Items.Clear(); List <Transaction> displayTransactions = new List <Transaction>(); var accountNames = localYt.GetAccountsNames(); if (accountNames.Contains(_selectedAccountName)) { IAccountBase selectedAccount = localYt.GetAccount(_selectedAccountName); if (_allDatesTransactions) { displayTransactions = selectedAccount.GetTransactions().ToList(); } else { displayTransactions = selectedAccount.GetTransactions().Where(p => (p.Date.Month == _dateSelected.Month)).ToList(); } foreach (var t in displayTransactions.OrderBy(t => t.Date).ToList()) { ListViewItem lvi = new ListViewItem(t.Description); lvi.SubItems.Add(t.Amount.ToString()); lvi.SubItems.Add(selectedAccount.Name); //subitems 2? lvi.SubItems.Add(t.Date.ToShortDateString()); lvi.Tag = t; if (t.Date < selectedAccount.StartingDate) { lvi.BackColor = Color.LightGray; } transactionsLv.Items.Add(lvi); } } hardBillsLv.Items.Clear(); var hbList = localYt.GetHardBills(); hbList.Sort((pair1, pair2) => pair1.NextBillDue.CompareTo(pair2.NextBillDue)); int count = 0; foreach (var hb in hbList) { ListViewItem lvi = new ListViewItem(hb.Name); lvi.SubItems.Add(hb.Amount.ToString()); lvi.SubItems.Add(hb.NextBillDue.ToShortDateString()); if ((hb.AutoPay == false) && (hb.NextBillDue <= _dateSelected)) { lvi.BackColor = Color.Red; } else if (hb.AutoPay) { lvi.BackColor = Color.LightGreen; } hardBillsLv.Items.Add(lvi); count++; if (count > 5) { break; } } incomeLv.Items.Clear(); var incomeList = localYt.GetIncomeSources(); incomeList.Sort((pair1, pair2) => pair1.NextDeposit.CompareTo(pair2.NextDeposit)); count = 0; foreach (var income in incomeList) { ListViewItem lvi = new ListViewItem(income.Name); lvi.SubItems.Add(income.PaydayAmount.ToString()); lvi.SubItems.Add(income.NextDeposit.ToShortDateString()); incomeLv.Items.Add(lvi); count++; if (count > 5) { break; } } }