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 }