Пример #1
0
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;
   }
Пример #2
0
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));
}
Пример #3
0
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() << "---------------------------------------------------------------";
}
Пример #4
0
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();
}