Pimcommon

needupdateversionutils.cpp
1/*
2 SPDX-FileCopyrightText: 2023-2025 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5 code based on kdenlive
6*/
7
8#include "needupdateversionutils.h"
9
10#include <KConfigGroup>
11#include <KSharedConfig>
12
13#include <QRegularExpression>
14
15PimCommon::NeedUpdateVersionUtils::ObsoleteVersion PimCommon::NeedUpdateVersionUtils::obsoleteVersionStatus(const QString &str, QDate currentDate)
16{
17 static QRegularExpression regular{QStringLiteral("\\((.*)\\)")};
19 QString captured;
20 if (str.contains(regular, &match)) {
21 captured = match.captured(1);
22 } else {
23 captured = str;
24 }
25 if (!captured.isEmpty()) {
26 const QStringList version = captured.split(QLatin1Char('.'));
27 if (version.size() > 2) {
28 bool ok;
29 int year = version.at(0).toInt(&ok);
30 if (ok) {
31 const int month = version.at(1).toInt(&ok);
32 if (ok) {
33 if (year < 100) {
34 year += 2000;
35 }
36 const QDate releaseDate = QDate(year, month, 1);
37 if (releaseDate.isValid()) {
38 const int days = releaseDate.daysTo(currentDate);
39 if (days > 180) {
40 if (days > 360) {
41 return PimCommon::NeedUpdateVersionUtils::ObsoleteVersion::OlderThan12Months;
42 }
43 return PimCommon::NeedUpdateVersionUtils::ObsoleteVersion::OlderThan6Months;
44 }
45 }
46 }
47 }
48 }
49 } else {
50 return PimCommon::NeedUpdateVersionUtils::ObsoleteVersion::Unknown;
51 }
52 return PimCommon::NeedUpdateVersionUtils::ObsoleteVersion::NotObsoleteYet;
53}
54
55void PimCommon::NeedUpdateVersionUtils::disableCheckVersion()
56{
57 KSharedConfig::Ptr config = KSharedConfig::openConfig();
58 KConfigGroup group(config, QStringLiteral("Check Version"));
59 group.writeEntry("checkerVersionEnabled", false);
60}
61
62bool PimCommon::NeedUpdateVersionUtils::checkVersion()
63{
64#if ENABLE_WARN_OUTDATED == 1
65 KSharedConfig::Ptr config = KSharedConfig::openConfig();
66 KConfigGroup group(config, QStringLiteral("Check Version"));
67 return group.readEntry("checkerVersionEnabled", true);
68#else
69 return false;
70#endif
71}
72
73QDate PimCommon::NeedUpdateVersionUtils::compileDate()
74{
75 return QDate::fromString(QString::fromLatin1(__DATE__), QStringLiteral("MMM dd yyyy"));
76}
static KSharedConfig::Ptr openConfig(const QString &fileName=QString(), OpenFlags mode=FullConfig, QStandardPaths::StandardLocation type=QStandardPaths::GenericConfigLocation)
KCOREADDONS_EXPORT Result match(QStringView pattern, QStringView str)
NETWORKMANAGERQT_EXPORT QString version()
qint64 daysTo(QDate d) const const
QDate fromString(QStringView string, QStringView format, QCalendar cal)
bool isValid(int year, int month, int day)
const QChar at(qsizetype position) const const
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
QString fromLatin1(QByteArrayView str)
bool isEmpty() const const
qsizetype size() const const
QStringList split(QChar sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 24 2025 11:47:24 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.