From bee2d7a33cc4f99ac2a154a3427600e173666839 Mon Sep 17 00:00:00 2001 From: Natalie Clarius Date: Fri, 28 Oct 2022 22:48:03 +0200 Subject: [PATCH] runners/datetime: show difference to local time --- runners/datetime/datetimerunner.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/runners/datetime/datetimerunner.cpp b/runners/datetime/datetimerunner.cpp index 6ab0777a4..09f3d5009 100644 --- a/runners/datetime/datetimerunner.cpp +++ b/runners/datetime/datetimerunner.cpp @@ -2,6 +2,7 @@ * SPDX-FileCopyrightText: 2006 Aaron Seigo * SPDX-FileCopyrightText: 2010 Marco Martin * SPDX-FileCopyrightText: 2015 Vishesh Handa + * SPDX-FileCopyrightText: 2022 Natalie Clarius * * SPDX-License-Identifier: LGPL-2.0-only */ @@ -14,6 +15,8 @@ #include +#include + static const QString dateWord = i18nc("Note this is a KRunner keyword", "date"); static const QString timeWord = i18nc("Note this is a KRunner keyword", "time"); @@ -63,8 +66,18 @@ void DateTimeRunner::match(RunnerContext &context) #endif const auto times = datetime(tz); for (auto it = times.constBegin(), itEnd = times.constEnd(); it != itEnd; ++it) { + const QString timeZone = it.key(); const QString time = QLocale().toString(*it, QLocale::ShortFormat); - addMatch(QStringLiteral("%1 - %2").arg(it.key(), time), time, context, QStringLiteral("clock")); + + const int timeDiffInSeconds = QDateTime::currentDateTime().secsTo(QDateTime(it.value().date(), it.value().time())); + const int timeDiffHours = round((double)abs(timeDiffInSeconds) / 3600); + const int timeDiffMinutes = round((double)(abs(timeDiffInSeconds) % 3600) / 60); + const QString timeDiff = (timeDiffHours ? QString("%1 h ").arg(timeDiffHours) : QString()) + + (timeDiffMinutes ? QString("%1 min ").arg(timeDiffMinutes) : QString()) + + ((timeDiffInSeconds > 0 ? i18nc("time zone difference", "later") + : timeDiffInSeconds < 0 ? i18nc("time zone difference", "earlier") + : i18nc("no time zone difference", "same time"))); + addMatch(QStringLiteral("%1 - %2 (%3)").arg(timeZone, time, timeDiff), time, context, QStringLiteral("clock")); } } } -- GitLab