File indexing completed on 2024-04-28 05:11:31

0001 /*
0002   SPDX-FileCopyrightText: 2009 Sebastian Sauer <sebsauer@kdab.net>
0003 
0004   SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0005 */
0006 
0007 #include "editorconfig.h"
0008 #include "korganizereditorconfig.h"
0009 
0010 #include <QCoreApplication>
0011 
0012 using namespace IncidenceEditorNG;
0013 
0014 class IncidenceEditorNG::EditorConfigPrivate
0015 {
0016 public:
0017     static EditorConfig *config;
0018     static void cleanup_config()
0019     {
0020         delete config;
0021         config = nullptr;
0022     }
0023 
0024     QHash<KCalendarCore::IncidenceBase::IncidenceType, QStringList> mTemplates;
0025 };
0026 
0027 EditorConfig *EditorConfigPrivate::config = nullptr;
0028 
0029 EditorConfig::EditorConfig()
0030     : d(new EditorConfigPrivate)
0031 {
0032 }
0033 
0034 EditorConfig::~EditorConfig() = default;
0035 
0036 EditorConfig *EditorConfig::instance()
0037 {
0038     if (!EditorConfigPrivate::config) {
0039         // No one called setEditorConfig(), so we default to a KorganizerEditorConfig.
0040         EditorConfig::setEditorConfig(new IncidenceEditorNG::KOrganizerEditorConfig);
0041     }
0042 
0043     return EditorConfigPrivate::config;
0044 }
0045 
0046 void EditorConfig::setEditorConfig(EditorConfig *config)
0047 {
0048     delete EditorConfigPrivate::config;
0049     EditorConfigPrivate::config = config;
0050     qAddPostRoutine(EditorConfigPrivate::cleanup_config);
0051 }
0052 
0053 QString EditorConfig::fullName() const
0054 {
0055     if (EditorConfigPrivate::config != this) {
0056         return EditorConfigPrivate::config->fullName();
0057     }
0058     return {};
0059 }
0060 
0061 QString EditorConfig::email() const
0062 {
0063     if (EditorConfigPrivate::config != this) {
0064         return EditorConfigPrivate::config->email();
0065     }
0066     return {};
0067 }
0068 
0069 bool EditorConfig::thatIsMe(const QString &mail) const
0070 {
0071     if (EditorConfigPrivate::config != this) {
0072         return EditorConfigPrivate::config->thatIsMe(mail);
0073     }
0074     return false;
0075 }
0076 
0077 QStringList EditorConfig::allEmails() const
0078 {
0079     if (EditorConfigPrivate::config != this) {
0080         return EditorConfigPrivate::config->allEmails();
0081     }
0082 
0083     QStringList mails;
0084     const QString m = email();
0085     if (!m.isEmpty()) {
0086         mails << m;
0087     }
0088     return mails;
0089 }
0090 
0091 QList<EditorConfig::Organizer> EditorConfig::allOrganizers() const
0092 {
0093     if (EditorConfigPrivate::config != this) {
0094         return EditorConfigPrivate::config->allOrganizers();
0095     }
0096     return {};
0097 }
0098 
0099 bool EditorConfig::showTimeZoneSelectorInIncidenceEditor() const
0100 {
0101     if (EditorConfigPrivate::config != this) {
0102         return EditorConfigPrivate::config->showTimeZoneSelectorInIncidenceEditor();
0103     }
0104     return true;
0105 }
0106 
0107 QStringList &EditorConfig::templates(KCalendarCore::IncidenceBase::IncidenceType type)
0108 {
0109     return d->mTemplates[type];
0110 }