File indexing completed on 2025-02-16 04:49:10

0001 /*
0002  * SPDX-FileCopyrightText: 2015 Daniel Vrátil <dvratil@redhat.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005  *
0006  */
0007 
0008 #include "datetimefilters.h"
0009 #include "../incidenceformatter.h"
0010 #include <KTextTemplate/SafeString>
0011 
0012 KDateFilter::KDateFilter()
0013     : KTextTemplate::Filter()
0014 {
0015 }
0016 
0017 KDateFilter::~KDateFilter()
0018 {
0019 }
0020 
0021 QVariant KDateFilter::doFilter(const QVariant &input, const QVariant &argument, bool autoescape) const
0022 {
0023     Q_UNUSED(autoescape)
0024 
0025     QDate date;
0026     if (input.userType() == QMetaType::QDate) {
0027         date = input.toDate();
0028     } else if (input.userType() == QMetaType::QDateTime) {
0029         date = input.toDateTime().date();
0030     } else {
0031         return QString();
0032     }
0033     const bool shortFmt = (argument.value<KTextTemplate::SafeString>().get().compare(QLatin1StringView("short"), Qt::CaseInsensitive) == 0);
0034     return KTextTemplate::SafeString(KCalUtils::IncidenceFormatter::dateToString(date, shortFmt));
0035 }
0036 
0037 bool KDateFilter::isSafe() const
0038 {
0039     return true;
0040 }
0041 
0042 KTimeFilter::KTimeFilter()
0043     : KTextTemplate::Filter()
0044 {
0045 }
0046 
0047 KTimeFilter::~KTimeFilter()
0048 {
0049 }
0050 
0051 QVariant KTimeFilter::doFilter(const QVariant &input, const QVariant &argument, bool autoescape) const
0052 {
0053     Q_UNUSED(autoescape)
0054 
0055     QTime time;
0056     if (input.userType() == QMetaType::QTime) {
0057         time = input.toTime();
0058     } else if (input.userType() == QMetaType::QDateTime) {
0059         time = input.toDateTime().time();
0060     } else {
0061         return QString();
0062     }
0063 
0064     const bool shortFmt = (argument.value<KTextTemplate::SafeString>().get().compare(QLatin1StringView("short"), Qt::CaseInsensitive) == 0);
0065     return KTextTemplate::SafeString(KCalUtils::IncidenceFormatter::timeToString(time, shortFmt));
0066 }
0067 
0068 bool KTimeFilter::isSafe() const
0069 {
0070     return true;
0071 }
0072 
0073 KDateTimeFilter::KDateTimeFilter()
0074     : KTextTemplate::Filter()
0075 {
0076 }
0077 
0078 KDateTimeFilter::~KDateTimeFilter()
0079 {
0080 }
0081 
0082 QVariant KDateTimeFilter::doFilter(const QVariant &input, const QVariant &argument, bool autoescape) const
0083 {
0084     Q_UNUSED(autoescape)
0085     if (input.userType() != QMetaType::QDateTime) {
0086         return QString();
0087     }
0088     const QDateTime dt = input.toDateTime();
0089     const QStringList arguments = argument.value<KTextTemplate::SafeString>().get().split(QLatin1Char(','));
0090     const bool shortFmt = arguments.contains(QLatin1StringView("short"), Qt::CaseInsensitive);
0091     const bool dateOnly = arguments.contains(QLatin1StringView("dateonly"), Qt::CaseInsensitive);
0092     return KTextTemplate::SafeString(KCalUtils::IncidenceFormatter::dateTimeToString(dt, dateOnly, shortFmt));
0093 }
0094 
0095 bool KDateTimeFilter::isSafe() const
0096 {
0097     return true;
0098 }