File indexing completed on 2024-04-21 03:54:18

0001 /*
0002     This file is part of the kholidays library.
0003 
0004     SPDX-FileCopyrightText: 2001 Cornelius Schumacher <schumacher@kde.org>
0005     SPDX-FileCopyrightText: 2004 Allen Winter <winter@kde.org>
0006     SPDX-FileCopyrightText: 2008 David Jarvie <djarvie@kde.org>
0007     SPDX-FileCopyrightText: 2010 John Layt <john@layt.net>
0008 
0009     SPDX-License-Identifier: LGPL-2.0-or-later
0010 */
0011 
0012 #ifndef KHOLIDAYS_HOLIDAY_H
0013 #define KHOLIDAYS_HOLIDAY_H
0014 
0015 #include "kholidays_export.h"
0016 
0017 #include <QList>
0018 #include <QSharedDataPointer>
0019 
0020 class QDate;
0021 class QString;
0022 
0023 namespace KHolidays
0024 {
0025 class HolidayPrivate;
0026 class HolidayRegion;
0027 
0028 /** Represents a holiday event. */
0029 class KHOLIDAYS_EXPORT Holiday
0030 {
0031     friend class HolidayRegion;
0032     friend class HolidayParserDriver;
0033     friend class HolidayParserDriverPlan;
0034     friend class HolidayParserDriverPlanOld;
0035 
0036 public:
0037     /**
0038      * A list of holiday descriptions.
0039      */
0040     typedef QList<Holiday> List;
0041 
0042     /**
0043      * Describes the date type of the holiday.
0044      * If any of the holidays on a date are non-workdays types, then the entire day is non-working.
0045      */
0046     enum DayType {
0047         Workday, ///< The holiday is a workday
0048         NonWorkday, ///< The holiday is a real holiday
0049     };
0050 
0051     /**
0052      * Creates an empty holiday.
0053      */
0054     Holiday();
0055 
0056     /**
0057      * Creates a holiday from an @p other holiday.
0058      */
0059     Holiday(const Holiday &other);
0060 
0061     /**
0062      * Destroys the holiday object.
0063      */
0064     ~Holiday();
0065 
0066     /**
0067      *
0068      */
0069     Holiday &operator=(const Holiday &other);
0070 
0071     /**
0072      *
0073      */
0074     bool operator<(const Holiday &rhs) const;
0075 
0076     /**
0077      *
0078      */
0079     bool operator>(const Holiday &rhs) const;
0080 
0081     /**
0082      * @since 4.6
0083      *
0084      * Returns the observed start date of the holiday.
0085      */
0086     QDate observedStartDate() const;
0087 
0088     /**
0089      * @since 4.6
0090      *
0091      * Returns the observed end date of the holiday.
0092      */
0093     QDate observedEndDate() const;
0094 
0095     /**
0096      * @since 4.6
0097      *
0098      * Returns the duration of the holiday in days.
0099      */
0100     int duration() const;
0101 
0102     /**
0103      * @since 5.0
0104      *
0105      * Returns the name of the Holiday.
0106      *
0107      * @return the name of the Holiday
0108      */
0109     QString name() const;
0110 
0111     /**
0112      * @since 5.0
0113      *
0114      * Returns the description of the Holiday if available
0115      *
0116      * @return the description of the Holiday
0117      */
0118     QString description() const;
0119 
0120     /**
0121      * Returns the day type of the holiday.
0122      */
0123     DayType dayType() const;
0124 
0125     /**
0126      * @since 5.8
0127      *
0128      * Returns a QStringList of categories for the Holiday.
0129      * If the Holiday has no categories then an empty list is returned.
0130      */
0131     QStringList categoryList() const;
0132 
0133 private:
0134     QSharedDataPointer<HolidayPrivate> d;
0135 };
0136 
0137 }
0138 
0139 Q_DECLARE_TYPEINFO(KHolidays::Holiday, Q_RELOCATABLE_TYPE);
0140 
0141 #endif // KHOLIDAYS_HOLIDAY_H