File indexing completed on 2024-04-28 15:19:00

0001 /*
0002   This file is part of the kcalcore library.
0003 
0004   SPDX-FileCopyrightText: 1998 Preston Brown <pbrown@kde.org>
0005   SPDX-FileCopyrightText: 2000-2004 Cornelius Schumacher <schumacher@kde.org>
0006   SPDX-FileCopyrightText: 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
0007   SPDX-FileCopyrightText: 2006 David Jarvie <djarvie@kde.org>
0008 
0009   SPDX-License-Identifier: LGPL-2.0-or-later
0010 */
0011 
0012 #ifndef KCALCORE_CALENDAR_P_H
0013 #define KCALCORE_CALENDAR_P_H
0014 
0015 #include "calendar.h"
0016 #include "calfilter.h"
0017 
0018 namespace KCalendarCore
0019 {
0020 /**
0021   Private class that helps to provide binary compatibility between releases.
0022   @internal
0023 */
0024 //@cond PRIVATE
0025 class Q_DECL_HIDDEN Calendar::Private
0026 {
0027 public:
0028     Private()
0029         : mModified(false)
0030         , mNewObserver(false)
0031         , mObserversEnabled(true)
0032         , mDefaultFilter(new CalFilter)
0033         , batchAddingInProgress(false)
0034         , mDeletionTracking(true)
0035     {
0036         // Setup default filter, which does nothing
0037         mFilter = mDefaultFilter;
0038         mFilter->setEnabled(false);
0039 
0040         mOwner.setName(QStringLiteral("Unknown Name"));
0041         mOwner.setEmail(QStringLiteral("unknown@nowhere"));
0042     }
0043 
0044     ~Private()
0045     {
0046         if (mFilter != mDefaultFilter) {
0047             delete mFilter;
0048         }
0049         delete mDefaultFilter;
0050     }
0051     QTimeZone timeZoneIdSpec(const QByteArray &timeZoneId);
0052 
0053     QString mProductId;
0054     Person mOwner;
0055     QTimeZone mTimeZone;
0056     QVector<QTimeZone> mTimeZones;
0057     bool mModified = false;
0058     bool mNewObserver = false;
0059     bool mObserversEnabled = false;
0060     QList<CalendarObserver *> mObservers;
0061 
0062     CalFilter *mDefaultFilter = nullptr;
0063     CalFilter *mFilter = nullptr;
0064 
0065     // These lists are used to put together related To-dos
0066     QMultiHash<QString, Incidence::Ptr> mOrphans;
0067     QMultiHash<QString, Incidence::Ptr> mOrphanUids;
0068 
0069     // Lists for associating incidences to notebooks
0070     QMultiHash<QString, Incidence::Ptr> mNotebookIncidences;
0071     QHash<QString, QString> mUidToNotebook;
0072     QHash<QString, bool> mNotebooks; // name to visibility
0073     QHash<Incidence::Ptr, bool> mIncidenceVisibility; // incidence -> visibility
0074     QString mDefaultNotebook; // uid of default notebook
0075     QMap<QString, Incidence::List> mIncidenceRelations;
0076     bool batchAddingInProgress = false;
0077     bool mDeletionTracking = false;
0078     bool mIsLoading = false;
0079     QString mId;
0080     QString mName;
0081     QIcon mIcon;
0082     AccessMode mAccessMode = ReadWrite;
0083 };
0084 
0085 }
0086 
0087 #endif