Changeset View
Changeset View
Standalone View
Standalone View
src/presentation/artifactfilterproxymodel.cpp
Show First 20 Lines • Show All 102 Lines • ▼ Show 20 Line(s) | 90 | { | |||
---|---|---|---|---|---|
103 | for (int childRow = 0; childRow < sourceModel()->rowCount(index); childRow++) { | 103 | for (int childRow = 0; childRow < sourceModel()->rowCount(index); childRow++) { | ||
104 | if (filterAcceptsRow(childRow, index)) | 104 | if (filterAcceptsRow(childRow, index)) | ||
105 | return true; | 105 | return true; | ||
106 | } | 106 | } | ||
107 | 107 | | |||
108 | return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent); | 108 | return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent); | ||
109 | } | 109 | } | ||
110 | 110 | | |||
111 | static QDate validDt(const QDate &date = QDate()) | 111 | static QDate validDate(const QDate &date = QDate()) | ||
112 | { | 112 | { | ||
113 | if (date.isValid()) | 113 | if (date.isValid()) | ||
114 | return date; | 114 | return date; | ||
115 | 115 | | |||
116 | return QDate(10000, 12, 31); | 116 | return QDate(80000, 12, 31); | ||
117 | } | 117 | } | ||
118 | 118 | | |||
119 | bool ArtifactFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const | 119 | bool ArtifactFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const | ||
120 | { | 120 | { | ||
121 | if (m_sortType != DateSort) | 121 | if (m_sortType != DateSort) | ||
122 | return QSortFilterProxyModel::lessThan(left, right); | 122 | return QSortFilterProxyModel::lessThan(left, right); | ||
123 | 123 | | |||
124 | const auto leftArtifact = left.data(QueryTreeModelBase::ObjectRole).value<Domain::Artifact::Ptr>(); | 124 | const auto leftArtifact = left.data(QueryTreeModelBase::ObjectRole).value<Domain::Artifact::Ptr>(); | ||
125 | const auto rightArtifact = right.data(QueryTreeModelBase::ObjectRole).value<Domain::Artifact::Ptr>(); | 125 | const auto rightArtifact = right.data(QueryTreeModelBase::ObjectRole).value<Domain::Artifact::Ptr>(); | ||
126 | 126 | | |||
127 | const auto leftTask = leftArtifact.objectCast<Domain::Task>(); | 127 | const auto leftTask = leftArtifact.objectCast<Domain::Task>(); | ||
128 | const auto rightTask = rightArtifact.objectCast<Domain::Task>(); | 128 | const auto rightTask = rightArtifact.objectCast<Domain::Task>(); | ||
129 | 129 | | |||
130 | // The addDays(1) is so that we sort non-tasks (e.g. notes) at the end | 130 | // The addDays(1) is so that we sort non-tasks (e.g. notes) at the end | ||
131 | 131 | | |||
132 | const QDate leftDue = leftTask ? validDt(leftTask->dueDate()) : validDt().addDays(1); | 132 | const QDate leftDue = leftTask ? validDate(leftTask->dueDate()) : validDate().addDays(1); | ||
133 | const QDate rightDue = rightTask ? validDt(rightTask->dueDate()) : validDt().addDays(1); | 133 | const QDate rightDue = rightTask ? validDate(rightTask->dueDate()) : validDate().addDays(1); | ||
134 | 134 | | |||
135 | const QDate leftStart = leftTask ? validDt(leftTask->startDate()) : validDt().addDays(1); | 135 | const QDate leftStart = leftTask ? validDate(leftTask->startDate()) : validDate().addDays(1); | ||
136 | const QDate rightStart = rightTask ? validDt(rightTask->startDate()) : validDt().addDays(1); | 136 | const QDate rightStart = rightTask ? validDate(rightTask->startDate()) : validDate().addDays(1); | ||
137 | 137 | | |||
138 | return leftDue < rightDue | 138 | return leftDue < rightDue | ||
139 | || leftStart < rightStart; | 139 | || leftStart < rightStart; | ||
140 | } | 140 | } |