data/DavPushSettings.cpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "DavPushSettings.h" | ||
| 2 | |||
| 3 | #include "CalendarModels.h" | ||
| 4 | |||
| 5 | #include <QSettings> | ||
| 6 | #include <QUrl> | ||
| 7 | |||
| 8 | namespace DavPushSettings { | ||
| 9 | namespace { | ||
| 10 | const QString kGroup = QStringLiteral("davpush/"); | ||
| 11 | |||
| 12 | 722 | QString policyKey(const QString &accountId, const QString &path) { | |
| 13 | // QSettings keys must not contain '/' in a single segment: hex-encode | ||
| 14 | // the selection key so paths stay unambiguous. | ||
| 15 |
1/1✓ Branch 9 → 10 taken 722 times.
|
1444 | return kGroup + QStringLiteral("policy/") + |
| 16 |
5/5✓ Branch 2 → 3 taken 722 times.
✓ Branch 3 → 4 taken 722 times.
✓ Branch 4 → 5 taken 722 times.
✓ Branch 5 → 6 taken 722 times.
✓ Branch 10 → 11 taken 722 times.
|
2166 | QString::fromLatin1(calendarSelectionKey(accountId, path).toUtf8().toHex()); |
| 17 | } | ||
| 18 | } // namespace | ||
| 19 | |||
| 20 | 3235 | bool enabled() { | |
| 21 |
4/4✓ Branch 2 → 3 taken 3235 times.
✓ Branch 7 → 8 taken 3235 times.
✓ Branch 9 → 10 taken 3235 times.
✓ Branch 10 → 11 taken 3235 times.
|
6470 | return QSettings().value(kGroup + QStringLiteral("enabled"), true).toBool(); |
| 22 | } | ||
| 23 | |||
| 24 | 11 | void setEnabled(bool on) { | |
| 25 |
3/3✓ Branch 2 → 3 taken 11 times.
✓ Branch 7 → 8 taken 11 times.
✓ Branch 9 → 10 taken 11 times.
|
22 | QSettings().setValue(kGroup + QStringLiteral("enabled"), on); |
| 26 | 11 | } | |
| 27 | |||
| 28 | 2219 | bool useSystemService() { | |
| 29 |
4/4✓ Branch 2 → 3 taken 2219 times.
✓ Branch 7 → 8 taken 2219 times.
✓ Branch 9 → 10 taken 2219 times.
✓ Branch 10 → 11 taken 2219 times.
|
4438 | return QSettings().value(kGroup + QStringLiteral("useSystemService"), true).toBool(); |
| 30 | } | ||
| 31 | |||
| 32 | 7 | void setUseSystemService(bool use) { | |
| 33 |
3/3✓ Branch 2 → 3 taken 7 times.
✓ Branch 7 → 8 taken 7 times.
✓ Branch 9 → 10 taken 7 times.
|
14 | QSettings().setValue(kGroup + QStringLiteral("useSystemService"), use); |
| 34 | 7 | } | |
| 35 | |||
| 36 | 2388 | Receiver receiver() { | |
| 37 |
1/1✓ Branch 2 → 3 taken 2388 times.
|
2388 | QSettings settings; |
| 38 | 2388 | Receiver r; | |
| 39 |
3/3✓ Branch 6 → 7 taken 2388 times.
✓ Branch 8 → 9 taken 2388 times.
✓ Branch 9 → 10 taken 2388 times.
|
2388 | r.provider = settings.value(kGroup + QStringLiteral("receiver/provider")).toString(); |
| 40 |
4/4✓ Branch 19 → 20 taken 2388 times.
✓ Branch 21 → 22 taken 2388 times.
✓ Branch 22 → 23 taken 2388 times.
✓ Branch 23 → 24 taken 2388 times.
|
2388 | r.server = normaliseServer(settings.value(kGroup + QStringLiteral("receiver/server")).toString()); |
| 41 |
3/3✓ Branch 35 → 36 taken 2388 times.
✓ Branch 37 → 38 taken 2388 times.
✓ Branch 38 → 39 taken 2388 times.
|
4776 | r.publicService = settings.value(kGroup + QStringLiteral("receiver/public"), false).toBool(); |
| 42 |
3/3✓ Branch 48 → 49 taken 2388 times.
✓ Branch 50 → 51 taken 2388 times.
✓ Branch 51 → 52 taken 2388 times.
|
4776 | r.hasToken = settings.value(kGroup + QStringLiteral("receiver/hasToken"), false).toBool(); |
| 43 |
5/6✓ Branch 59 → 60 taken 363 times.
✓ Branch 59 → 62 taken 2025 times.
✗ Branch 61 → 62 not taken.
✓ Branch 61 → 63 taken 363 times.
✓ Branch 64 → 65 taken 2025 times.
✓ Branch 64 → 66 taken 363 times.
|
2388 | if (r.provider != QLatin1String("ntfy") || r.server.isEmpty()) return {}; |
| 44 | 363 | return r; | |
| 45 | 2388 | } | |
| 46 | |||
| 47 | 2443 | QString normaliseServer(const QString &text) { | |
| 48 |
2/2✓ Branch 2 → 3 taken 2443 times.
✓ Branch 3 → 4 taken 2443 times.
|
2443 | const QUrl url(text.trimmed(), QUrl::StrictMode); |
| 49 |
6/9✓ Branch 7 → 8 taken 417 times.
✓ Branch 10 → 11 taken 415 times.
✓ Branch 10 → 23 taken 2 times.
✓ Branch 14 → 15 taken 415 times.
✗ Branch 14 → 23 not taken.
✓ Branch 31 → 32 taken 2029 times.
✓ Branch 31 → 33 taken 414 times.
✗ Branch 70 → 71 not taken.
✗ Branch 70 → 72 not taken.
|
3275 | if (!url.isValid() || url.scheme().compare(QLatin1String("https"), Qt::CaseInsensitive) != 0 || |
| 50 |
17/23✓ Branch 5 → 6 taken 2443 times.
✓ Branch 6 → 7 taken 417 times.
✓ Branch 6 → 23 taken 2026 times.
✓ Branch 12 → 13 taken 415 times.
✓ Branch 16 → 17 taken 415 times.
✓ Branch 18 → 19 taken 414 times.
✓ Branch 18 → 23 taken 1 time.
✓ Branch 19 → 20 taken 414 times.
✓ Branch 20 → 21 taken 414 times.
✗ Branch 20 → 23 not taken.
✓ Branch 21 → 22 taken 414 times.
✗ Branch 22 → 23 not taken.
✓ Branch 22 → 24 taken 414 times.
✓ Branch 25 → 26 taken 415 times.
✓ Branch 25 → 27 taken 2028 times.
✓ Branch 27 → 28 taken 415 times.
✓ Branch 27 → 29 taken 2028 times.
✓ Branch 29 → 30 taken 417 times.
✓ Branch 29 → 31 taken 2026 times.
✗ Branch 59 → 60 not taken.
✗ Branch 59 → 61 not taken.
✗ Branch 64 → 65 not taken.
✗ Branch 64 → 66 not taken.
|
3275 | url.host().isEmpty() || !url.userInfo().isEmpty() || url.hasQuery() || url.hasFragment()) |
| 51 | 2029 | return {}; | |
| 52 |
1/1✓ Branch 33 → 34 taken 414 times.
|
414 | QUrl origin; |
| 53 |
1/1✓ Branch 37 → 38 taken 414 times.
|
414 | origin.setScheme(QStringLiteral("https")); |
| 54 |
3/3✓ Branch 41 → 42 taken 414 times.
✓ Branch 42 → 43 taken 414 times.
✓ Branch 43 → 44 taken 414 times.
|
414 | origin.setHost(url.host().toLower()); |
| 55 |
5/5✓ Branch 46 → 47 taken 414 times.
✓ Branch 47 → 48 taken 4 times.
✓ Branch 47 → 50 taken 410 times.
✓ Branch 48 → 49 taken 4 times.
✓ Branch 49 → 50 taken 4 times.
|
414 | if (url.port(443) != 443) origin.setPort(url.port()); |
| 56 |
1/1✓ Branch 51 → 52 taken 414 times.
|
414 | return origin.toString(); |
| 57 | 2443 | } | |
| 58 | |||
| 59 | 53 | bool setReceiver(const Receiver &r, QString *error) { | |
| 60 |
1/1✓ Branch 2 → 3 taken 53 times.
|
53 | const QString server = normaliseServer(r.server); |
| 61 |
6/6✓ Branch 5 → 6 taken 52 times.
✓ Branch 5 → 8 taken 1 time.
✓ Branch 7 → 8 taken 3 times.
✓ Branch 7 → 9 taken 49 times.
✓ Branch 10 → 11 taken 4 times.
✓ Branch 10 → 20 taken 49 times.
|
53 | if (r.provider != QLatin1String("ntfy") || server.isEmpty()) { |
| 62 |
2/2✓ Branch 11 → 12 taken 2 times.
✓ Branch 11 → 19 taken 2 times.
|
6 | if (error) *error = QStringLiteral("Enter the address of an HTTPS push service, e.g. https://ntfy.example.org."); |
| 63 | 4 | return false; | |
| 64 | } | ||
| 65 |
1/1✓ Branch 20 → 21 taken 49 times.
|
49 | QSettings settings; |
| 66 |
2/2✓ Branch 25 → 26 taken 49 times.
✓ Branch 27 → 28 taken 49 times.
|
98 | settings.setValue(kGroup + QStringLiteral("receiver/provider"), r.provider); |
| 67 |
2/2✓ Branch 36 → 37 taken 49 times.
✓ Branch 38 → 39 taken 49 times.
|
98 | settings.setValue(kGroup + QStringLiteral("receiver/server"), server); |
| 68 |
2/2✓ Branch 47 → 48 taken 49 times.
✓ Branch 49 → 50 taken 49 times.
|
98 | settings.setValue(kGroup + QStringLiteral("receiver/public"), r.publicService); |
| 69 |
2/2✓ Branch 58 → 59 taken 49 times.
✓ Branch 60 → 61 taken 49 times.
|
98 | settings.setValue(kGroup + QStringLiteral("receiver/hasToken"), r.hasToken); |
| 70 | 49 | return true; | |
| 71 | 53 | } | |
| 72 | |||
| 73 | 7 | void clearReceiver() { | |
| 74 |
3/3✓ Branch 2 → 3 taken 7 times.
✓ Branch 6 → 7 taken 7 times.
✓ Branch 8 → 9 taken 7 times.
|
14 | QSettings().remove(kGroup + QStringLiteral("receiver")); |
| 75 | 7 | } | |
| 76 | |||
| 77 | 711 | DavPushPolicy policy(const QString &accountId, const QString &path) { | |
| 78 |
4/4✓ Branch 3 → 4 taken 711 times.
✓ Branch 4 → 5 taken 711 times.
✓ Branch 6 → 7 taken 711 times.
✓ Branch 7 → 8 taken 711 times.
|
1422 | return QSettings().value(policyKey(accountId, path)).toString() == QLatin1String("interval") |
| 79 |
2/2✓ Branch 9 → 10 taken 22 times.
✓ Branch 9 → 11 taken 689 times.
|
711 | ? DavPushPolicy::IntervalOnly |
| 80 | 1422 | : DavPushPolicy::Automatic; | |
| 81 | } | ||
| 82 | |||
| 83 | 11 | void setPolicy(const QString &accountId, const QString &path, DavPushPolicy value) { | |
| 84 |
1/1✓ Branch 2 → 3 taken 11 times.
|
11 | QSettings settings; |
| 85 |
4/4✓ Branch 3 → 4 taken 8 times.
✓ Branch 3 → 16 taken 3 times.
✓ Branch 8 → 9 taken 8 times.
✓ Branch 10 → 11 taken 8 times.
|
19 | if (value == DavPushPolicy::IntervalOnly) settings.setValue(policyKey(accountId, path), QStringLiteral("interval")); |
| 86 |
2/2✓ Branch 16 → 17 taken 3 times.
✓ Branch 18 → 19 taken 3 times.
|
3 | else settings.remove(policyKey(accountId, path)); |
| 87 | 11 | } | |
| 88 | |||
| 89 | 2 | void forgetAccount(const QString &accountId) { | |
| 90 |
1/1✓ Branch 2 → 3 taken 2 times.
|
2 | QSettings settings; |
| 91 |
2/2✓ Branch 6 → 7 taken 2 times.
✓ Branch 8 → 9 taken 2 times.
|
2 | settings.beginGroup(kGroup + QStringLiteral("policy")); |
| 92 | const QString prefix = QString::fromLatin1( | ||
| 93 |
6/6✓ Branch 15 → 16 taken 2 times.
✓ Branch 16 → 17 taken 2 times.
✓ Branch 17 → 18 taken 2 times.
✓ Branch 18 → 19 taken 2 times.
✓ Branch 19 → 20 taken 2 times.
✓ Branch 20 → 21 taken 2 times.
|
2 | (QString::number(accountId.size()) + QLatin1Char(':') + accountId).toUtf8().toHex()); |
| 94 |
5/5✓ Branch 26 → 27 taken 2 times.
✓ Branch 27 → 28 taken 2 times.
✓ Branch 28 → 29 taken 2 times.
✓ Branch 38 → 30 taken 2 times.
✓ Branch 38 → 39 taken 2 times.
|
4 | for (const QString &key : settings.childKeys()) |
| 95 |
4/4✓ Branch 31 → 32 taken 2 times.
✓ Branch 32 → 33 taken 1 time.
✓ Branch 32 → 36 taken 1 time.
✓ Branch 34 → 35 taken 1 time.
|
4 | if (key.startsWith(prefix)) settings.remove(key); |
| 96 |
1/1✓ Branch 40 → 41 taken 2 times.
|
2 | settings.endGroup(); |
| 97 | 2 | } | |
| 98 | |||
| 99 | 2027 | bool backgroundSyncEnabled() { | |
| 100 |
3/3✓ Branch 2 → 3 taken 2027 times.
✓ Branch 8 → 9 taken 2027 times.
✓ Branch 9 → 10 taken 2027 times.
|
4054 | return QSettings().value(QStringLiteral("caldav/syncIntervalMin"), 15).toInt() > 0; |
| 101 | } | ||
| 102 | |||
| 103 | } // namespace DavPushSettings | ||
| 104 |