void BudgetWindow::RefreshBudgetGrid(void) { fIncomeGrid.MakeEmpty(); fSpendingGrid.MakeEmpty(); CppSQLite3Query query = gDatabase.DBQuery("select category,amount,period from " "budgetlist order by category", "BudgetWindow::RefreshCategories"); while(!query.eof()) { BString cat = DeescapeIllegalCharacters(query.getStringField(0)); Fixed amount; amount.SetPremultiplied(query.getInt64Field(1)); BudgetPeriod period = (BudgetPeriod)query.getIntField(2); ReportGrid *grid = (amount.IsPositive()) ? &fIncomeGrid : &fSpendingGrid; int32 index = grid->CountItems(); grid->AddItem(); grid->SetRowTitle(index, cat.String()); Fixed f(amount.AbsoluteValue()); switch(period) { case BUDGET_QUARTERLY: { f /= 3; Fixed qamt(amount); qamt *= 4; grid->SetValue(12,index,qamt); break; } case BUDGET_ANNUALLY: { f /=12; grid->SetValue(12,index,amount); break; } default: { Fixed mamt(f); mamt *= 12; grid->SetValue(12,index,mamt); break; } } for(int32 i=0; i<12; i++) grid->SetValue(i,index,f); query.nextRow(); } }