presentation/CalendarBirthdayLayer.cpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "CalendarBirthdayLayer.h" | ||
| 2 | |||
| 3 | #include "data/ContactModels.h" | ||
| 4 | #include "data/ContactQueries.h" | ||
| 5 | #include "data/ContactStore.h" | ||
| 6 | #include "ui/ThemeManager.h" | ||
| 7 | |||
| 8 | #include <QCoreApplication> | ||
| 9 | #include <QSqlQuery> | ||
| 10 | #include <QTimeZone> | ||
| 11 | |||
| 12 | namespace CalendarBirthdayLayer { | ||
| 13 | |||
| 14 | 1315 | QVector<CalendarOccurrence> occurrences(const QString &contactsDatabase, const QDate &start, const QDate &end) { | |
| 15 | 1315 | QVector<CalendarOccurrence> result; | |
| 16 |
1/1✓ Branch 2 → 3 taken 1315 times.
|
1315 | ContactStore store; |
| 17 |
6/7✓ Branch 4 → 5 taken 2 times.
✓ Branch 4 → 7 taken 1313 times.
✓ Branch 5 → 6 taken 2 times.
✗ Branch 6 → 7 not taken.
✓ Branch 6 → 8 taken 2 times.
✓ Branch 9 → 10 taken 1313 times.
✓ Branch 9 → 11 taken 2 times.
|
1315 | if (contactsDatabase.isEmpty() || !store.open(contactsDatabase)) |
| 18 | 1313 | return result; | |
| 19 |
2/2✓ Branch 11 → 12 taken 2 times.
✓ Branch 12 → 13 taken 2 times.
|
2 | QSqlQuery q(store.database()); |
| 20 |
2/3✓ Branch 17 → 18 taken 2 times.
✗ Branch 20 → 21 not taken.
✓ Branch 20 → 22 taken 2 times.
|
2 | if (!q.exec(QStringLiteral("SELECT c.book_id, c.uid, c.display_name, c.birthday FROM cards c " |
| 21 | "JOIN address_books b ON b.id = c.book_id " | ||
| 22 | "WHERE c.birthday <> '' AND c.kind <> 'group' AND b.show_in_all = 1"))) | ||
| 23 | ✗ | return result; | |
| 24 |
1/1✓ Branch 22 → 23 taken 2 times.
|
2 | const QString calendarName = QCoreApplication::translate("CalendarBirthdayLayer", "Birthdays"); |
| 25 |
3/3✓ Branch 128 → 129 taken 6 times.
✓ Branch 129 → 24 taken 4 times.
✓ Branch 129 → 130 taken 2 times.
|
6 | while (q.next()) { |
| 26 |
3/3✓ Branch 24 → 25 taken 4 times.
✓ Branch 25 → 26 taken 4 times.
✓ Branch 26 → 27 taken 4 times.
|
4 | const PartialDate birthday = PartialDate::fromIso(q.value(3).toString()); |
| 27 |
1/2✗ Branch 30 → 31 not taken.
✓ Branch 30 → 32 taken 4 times.
|
4 | if (!birthday.isValid()) |
| 28 | ✗ | continue; | |
| 29 |
2/2✓ Branch 32 → 33 taken 4 times.
✓ Branch 33 → 34 taken 4 times.
|
4 | const QString name = q.value(2).toString(); |
| 30 |
4/4✓ Branch 35 → 36 taken 4 times.
✓ Branch 124 → 125 taken 8 times.
✓ Branch 125 → 37 taken 4 times.
✓ Branch 125 → 126 taken 4 times.
|
8 | for (int year = start.year(); year <= end.year(); ++year) { |
| 31 | 4 | int day = birthday.day; | |
| 32 |
8/9✓ Branch 37 → 38 taken 2 times.
✓ Branch 37 → 42 taken 2 times.
✓ Branch 38 → 39 taken 2 times.
✗ Branch 38 → 42 not taken.
✓ Branch 39 → 40 taken 2 times.
✓ Branch 40 → 41 taken 1 time.
✓ Branch 40 → 42 taken 1 time.
✓ Branch 43 → 44 taken 1 time.
✓ Branch 43 → 45 taken 3 times.
|
4 | if (birthday.month == 2 && day == 29 && !QDate::isLeapYear(year)) |
| 33 | 1 | day = 28; | |
| 34 |
1/1✓ Branch 45 → 46 taken 4 times.
|
4 | const QDate date(year, birthday.month, day); |
| 35 |
11/13✓ Branch 46 → 47 taken 4 times.
✓ Branch 47 → 48 taken 4 times.
✗ Branch 47 → 57 not taken.
✓ Branch 50 → 51 taken 3 times.
✓ Branch 50 → 57 taken 1 time.
✓ Branch 53 → 54 taken 3 times.
✗ Branch 53 → 57 not taken.
✓ Branch 55 → 56 taken 2 times.
✓ Branch 55 → 58 taken 1 time.
✓ Branch 56 → 57 taken 1 time.
✓ Branch 56 → 58 taken 1 time.
✓ Branch 59 → 60 taken 2 times.
✓ Branch 59 → 61 taken 2 times.
|
4 | if (!date.isValid() || date < start || date > end || (birthday.hasYear() && year < birthday.year)) |
| 36 | 2 | continue; | |
| 37 |
1/1✓ Branch 61 → 62 taken 2 times.
|
2 | CalendarOccurrence occurrence; |
| 38 |
6/6✓ Branch 62 → 63 taken 2 times.
✓ Branch 63 → 64 taken 2 times.
✓ Branch 64 → 65 taken 2 times.
✓ Branch 65 → 66 taken 2 times.
✓ Branch 66 → 67 taken 2 times.
✓ Branch 70 → 71 taken 2 times.
|
4 | occurrence.uid = QStringLiteral("birthday:") + ContactQueries::cardKey(q.value(0).toLongLong(), q.value(1).toString()); |
| 39 |
1/1✓ Branch 80 → 81 taken 2 times.
|
2 | occurrence.calendarPath = QLatin1String(CalendarPath); |
| 40 | 2 | occurrence.calendarName = calendarName; | |
| 41 |
1/1✓ Branch 82 → 83 taken 2 times.
|
2 | occurrence.color = ThemeManager::birthdayLayerColor(); |
| 42 |
10/16✓ Branch 86 → 87 taken 1 time.
✓ Branch 86 → 94 taken 1 time.
✓ Branch 91 → 92 taken 1 time.
✓ Branch 93 → 95 taken 1 time.
✓ Branch 97 → 98 taken 1 time.
✓ Branch 97 → 99 taken 1 time.
✓ Branch 99 → 100 taken 1 time.
✓ Branch 99 → 101 taken 1 time.
✓ Branch 101 → 102 taken 1 time.
✓ Branch 101 → 103 taken 1 time.
✗ Branch 175 → 176 not taken.
✗ Branch 175 → 177 not taken.
✗ Branch 180 → 181 not taken.
✗ Branch 180 → 182 not taken.
✗ Branch 184 → 185 not taken.
✗ Branch 184 → 186 not taken.
|
3 | occurrence.summary = birthday.hasYear() ? QStringLiteral("%1 (%2)").arg(name).arg(year - birthday.year) : name; |
| 43 | 2 | occurrence.readOnly = true; | |
| 44 | 2 | occurrence.allDay = true; | |
| 45 | 2 | occurrence.recurring = true; | |
| 46 |
2/2✓ Branch 103 → 104 taken 2 times.
✓ Branch 104 → 105 taken 2 times.
|
2 | occurrence.start = QDateTime(date, QTime(0, 0)); |
| 47 |
3/3✓ Branch 107 → 108 taken 2 times.
✓ Branch 108 → 109 taken 2 times.
✓ Branch 109 → 110 taken 2 times.
|
2 | occurrence.end = QDateTime(date.addDays(1), QTime(0, 0)); |
| 48 | 2 | occurrence.firstDay = occurrence.lastDay = date; | |
| 49 |
3/3✓ Branch 113 → 114 taken 2 times.
✓ Branch 114 → 115 taken 2 times.
✓ Branch 115 → 116 taken 2 times.
|
2 | occurrence.startIso = QDateTime(date, QTime(0, 0), QTimeZone::UTC).toString(Qt::ISODate); |
| 50 |
1/1✓ Branch 120 → 121 taken 2 times.
|
2 | result.append(occurrence); |
| 51 | 2 | } | |
| 52 | 4 | } | |
| 53 | 2 | return result; | |
| 54 | 1315 | } | |
| 55 | |||
| 56 | } // namespace CalendarBirthdayLayer | ||
| 57 |