File indexing completed on 2024-05-05 05:48:31

0001 /*
0002     CT Day Of Week Implementation
0003     --------------------------------------------------------------------
0004     SPDX-FileCopyrightText: 1999 Gary Meyer <gary@meyer.net>
0005     --------------------------------------------------------------------
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "ctdow.h"
0010 #include <KLocalizedString>
0011 
0012 QList<QString> CTDayOfWeek::shortName;
0013 
0014 QList<QString> CTDayOfWeek::longName;
0015 
0016 CTDayOfWeek::CTDayOfWeek(const QString &tokStr)
0017     : CTUnit(CTDayOfWeek::MINIMUM, CTDayOfWeek::MAXIMUM, tokStr)
0018 {
0019     // Compensate for cron supporting Sunday as both 0 and 7.
0020 
0021     if (isEnabled(0)) {
0022         setEnabled(0, false);
0023         setEnabled(7, true);
0024     }
0025 }
0026 
0027 void CTDayOfWeek::initialize(const QString &tokStr)
0028 {
0029     CTUnit::initialize(tokStr);
0030 
0031     // Compensate for cron supporting Sunday as both 0 and 7.
0032 
0033     if (isEnabled(0)) {
0034         setEnabled(0, false);
0035         setEnabled(7, true);
0036         apply();
0037     }
0038 }
0039 
0040 QString CTDayOfWeek::describe() const
0041 {
0042     initializeNames();
0043     if (enabledCount() == CTDayOfWeek::MAXIMUM) {
0044         return i18n("every day ");
0045     } else {
0046         return CTUnit::genericDescribe(shortName);
0047     }
0048 }
0049 
0050 QString CTDayOfWeek::getName(const int ndx, const bool format)
0051 {
0052     initializeNames();
0053     return (format == shortFormat) ? shortName.at(ndx) : longName.at(ndx);
0054 }
0055 
0056 void CTDayOfWeek::initializeNames()
0057 {
0058     if (shortName.isEmpty()) {
0059         shortName << QLatin1String("") << i18n("Mon") << i18n("Tue") << i18n("Wed") << i18n("Thu") << i18n("Fri") << i18n("Sat") << i18n("Sun");
0060 
0061         longName << QLatin1String("") << i18n("Monday") << i18n("Tuesday") << i18n("Wednesday") << i18n("Thursday") << i18n("Friday") << i18n("Saturday")
0062                  << i18n("Sunday");
0063     }
0064 }