File indexing completed on 2024-05-05 05:28:20

0001 /*
0002  * SPDX-FileCopyrightText: 2019 Nicolas Fella <nicolas.fella@gmx.de>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #include "daysofmonthincidencemodel.h"
0008 #include <QDebug>
0009 
0010 QVariant DaysOfMonthIncidenceModel::data(const QModelIndex &index, int role) const
0011 {
0012     if (!m_calendar) {
0013         return DaysOfMonthModel::data(index, role);;
0014     }
0015 
0016     switch (role) {
0017     case IncidenceCount: {
0018         QDate date(DaysOfMonthModel::data(index, YearNumberRole).toInt(), DaysOfMonthModel::data(index, MonthNumberRole).toInt(), DaysOfMonthModel::data(index, DayNumberRole).toInt());
0019 
0020         return m_calendar->todosCount(date) + m_calendar->eventsCount(date);
0021     }
0022     default:
0023         return DaysOfMonthModel::data(index, role);
0024     }
0025 }
0026 
0027 QHash<int, QByteArray> DaysOfMonthIncidenceModel::roleNames() const
0028 {
0029     QHash<int, QByteArray> parentRoles = DaysOfMonthModel::roleNames();
0030     parentRoles[IncidenceCount] = "incidenceCount";
0031     return parentRoles;
0032 }
0033 
0034 LocalCalendar *DaysOfMonthIncidenceModel::calendar() const
0035 {
0036     return m_calendar;
0037 }
0038 
0039 void DaysOfMonthIncidenceModel::setCalendar(LocalCalendar *calendar)
0040 {
0041     if (m_calendar != calendar) {
0042         m_calendar = calendar;
0043         Q_EMIT calendarChanged();
0044         connect(m_calendar, &LocalCalendar::todosChanged, this, [this] {
0045             Q_EMIT dataChanged(index(0, 0), index(rowCount(QModelIndex()) - 1));
0046         });
0047         connect(m_calendar, &LocalCalendar::eventsChanged, this, [this] {
0048             Q_EMIT dataChanged(index(0, 0), index(rowCount(QModelIndex()) - 1));
0049         });
0050     }
0051 }