Currency RoutineAllocator::allocate(DateRange const& period, Currency available) { DateRange range; if (m_history.isEmpty()) { range = DateRange(); } else { Q_ASSERT(m_history.lastKey() < period.startDate()); range = DateRange(m_history.firstKey(), period.startDate().addDays(-1)); } DateRange firstDay(range.startDate(), range.startDate()); foreach (Currency const& total, m_historyTotals) { Currency amount = total.amortize(range, firstDay) * period.days(); m_allocation -= amount; available += amount; }
void ExtDatePicker::dateChangedSlot(const ExtDate &date) { kdDebug(298) << "ExtDatePicker::dateChangedSlot: date changed (" << date.year() << "/" << date.month() << "/" << date.day() << ")." << endl; //must remain commented unless ExtDate gets added to kdelibs // const ExtCalendarSystem * calendar = KGlobal::locale()->calendar(); // line->setText(KGlobal::locale()->formatDate(date, true)); line->setText( date.toString( KGlobal::locale()->dateFormatShort() ) ); selectMonth->setText(d->calendar->monthName(date, false)); fillWeeksCombo(date); // calculate the item num in the week combo box; normalize selected day so as if 1.1. is the first day of the week ExtDate firstDay(date.year(), 1, 1); d->selectWeek->setCurrentItem((d->calendar->dayOfYear(date) + d->calendar->dayOfWeek(firstDay) - 2) / 7/*calendar->daysInWeek()*/); selectYear->setText(d->calendar->yearString(date, false)); emit(dateChanged(date)); }
void Calendar::updateData() { if (m_days == 0 || m_weeks == 0) { return; } m_dayList.clear(); m_weekList = QJsonArray(); int totalDays = m_days * m_weeks; int daysBeforeCurrentMonth = 0; int daysAfterCurrentMonth = 0; QDate firstDay(m_displayedDate.year(), m_displayedDate.month(), 1); // If the first day is the same as the starting day then we add a complete row before it. if (m_firstDayOfWeek < firstDay.dayOfWeek()) { daysBeforeCurrentMonth = firstDay.dayOfWeek() - m_firstDayOfWeek; } else { daysBeforeCurrentMonth = days() - (m_firstDayOfWeek - firstDay.dayOfWeek()); } int daysThusFar = daysBeforeCurrentMonth + m_displayedDate.daysInMonth(); if (daysThusFar < totalDays) { daysAfterCurrentMonth = totalDays - daysThusFar; } if (daysBeforeCurrentMonth > 0) { QDate previousMonth = m_displayedDate.addMonths(-1); //QDate previousMonth(m_displayedDate.year(), m_displayedDate.month() - 1, 1); for (int i = 0; i < daysBeforeCurrentMonth; i++) { DayData day; day.isCurrent = false; day.dayNumber = previousMonth.daysInMonth() - (daysBeforeCurrentMonth - (i + 1)); day.monthNumber = previousMonth.month(); day.yearNumber = previousMonth.year(); // day.containsEventItems = false; m_dayList << day; } } for (int i = 0; i < m_displayedDate.daysInMonth(); i++) { DayData day; day.isCurrent = true; day.dayNumber = i + 1; // +1 to go form 0 based index to 1 based calendar dates // day.containsEventItems = m_dayHelper->containsEventItems(i + 1); day.monthNumber = m_displayedDate.month(); day.yearNumber = m_displayedDate.year(); m_dayList << day; } if (daysAfterCurrentMonth > 0) { for (int i = 0; i < daysAfterCurrentMonth; i++) { DayData day; day.isCurrent = false; day.dayNumber = i + 1; // +1 to go form 0 based index to 1 based calendar dates // day.containsEventItems = false; day.monthNumber = m_displayedDate.addMonths(1).month(); day.yearNumber = m_displayedDate.addMonths(1).year(); m_dayList << day; } } const int numOfDaysInCalendar = m_dayList.count(); // Week numbers are always counted from Mondays // so find which index is Monday int mondayOffset = 0; if (!m_dayList.isEmpty()) { const DayData &data = m_dayList.at(0); QDate firstDay(data.yearNumber, data.monthNumber, data.dayNumber); // If the first day is not already Monday, get offset for Monday if (firstDay.dayOfWeek() != 1) { mondayOffset = 8 - firstDay.dayOfWeek(); } } // Fill weeksModel with the week numbers for (int i = mondayOffset; i < numOfDaysInCalendar; i += 7) { const DayData &data = m_dayList.at(i); m_weekList.append(QDate(data.yearNumber, data.monthNumber, data.dayNumber).weekNumber()); } emit weeksModelChanged(); m_daysModel->update(); // qDebug() << "---------------------------------------------------------------"; // qDebug() << "Date obj: " << m_displayedDate; // qDebug() << "Month: " << m_displayedDate.month(); // qDebug() << "m_days: " << m_days; // qDebug() << "m_weeks: " << m_weeks; // qDebug() << "Days before this month: " << daysBeforeCurrentMonth; // qDebug() << "Days after this month: " << daysAfterCurrentMonth; // qDebug() << "Days in current month: " << m_displayedDate.daysInMonth(); // qDebug() << "m_dayList size: " << m_dayList.count(); // qDebug() << "---------------------------------------------------------------"; }
void Calendar::updateData() { if (m_weeks == 0) { return; } m_dayList.clear(); m_weekList.clear(); int totalDays = 7 * m_weeks; int daysBeforeCurrentMonth = 0; int daysAfterCurrentMonth = 0; QDate firstDay(m_startDate.year(), m_startDate.month(), 1); daysBeforeCurrentMonth = firstDay.dayOfWeek(); int daysThusFar = daysBeforeCurrentMonth + m_startDate.daysInMonth(); if (daysThusFar < totalDays) { daysAfterCurrentMonth = totalDays - daysThusFar; } if (daysBeforeCurrentMonth > 0) { QDate previousMonth = m_startDate.addMonths(-1); for (int i = 0; i < daysBeforeCurrentMonth; ++i) { DayData day; day.isCurrentMonth = false; day.isNextMonth = false; day.isPreviousMonth = true; day.dayNumber = previousMonth.daysInMonth() - (daysBeforeCurrentMonth - (i + 1)); day.monthNumber = previousMonth.month(); day.yearNumber = previousMonth.year(); day.containsEventItems = false; m_dayList << day; } } for (int i = 0; i < m_startDate.daysInMonth(); ++i) { DayData day; day.isCurrentMonth = true; day.isNextMonth = false; day.isPreviousMonth = false; day.dayNumber = i + 1; day.monthNumber = m_startDate.month(); day.yearNumber = m_startDate.year(); day.containsEventItems = false; m_dayList << day; } if (daysAfterCurrentMonth > 0) { for (int i = 0; i < daysAfterCurrentMonth; ++i) { DayData day; day.isCurrentMonth = false; day.isNextMonth = true; day.isPreviousMonth = false; day.dayNumber = i + 1; day.monthNumber = m_startDate.addMonths(1).month(); day.yearNumber = m_startDate.addMonths(1).year(); day.containsEventItems = false; m_dayList << day; } } const int numOfDaysInCalendar = m_dayList.count(); for (int i = 0; i < numOfDaysInCalendar; i += 7) { const DayData& data = m_dayList.at(i); m_weekList << QDate(data.yearNumber, data.monthNumber, data.dayNumber).weekNumber(); } m_model->update(); }