1 /* 2 This file is part of the kolab resource - the implementation of the 3 Kolab storage format. See www.kolab.org for documentation on this. 4 5 SPDX-FileCopyrightText: 2004 Bo Thorsen <bo@sonofthor.dk> 6 7 SPDX-License-Identifier: LGPL-2.0-or-later 8 */ 9 10 #pragma once 11 12 #include <KCalendarCore/Incidence> 13 14 #include <QColor> 15 #include <QDateTime> 16 #include <QTimeZone> 17 #include <qdom.h> 18 19 namespace KContacts 20 { 21 class Addressee; 22 class ContactGroup; 23 } 24 25 namespace KolabV2 26 { 27 class KolabBase 28 { 29 public: 30 struct Email { 31 public: 32 Email(const QString &name = QString(), const QString &email = QString()) displayNameEmail33 : displayName(name) 34 , smtpAddress(email) 35 { 36 } 37 38 QString displayName; 39 QString smtpAddress; 40 }; 41 42 enum Sensitivity { 43 Public = 0, 44 Private = 1, 45 Confidential = 2, 46 }; 47 48 explicit KolabBase(const QString &time_zone = QString()); 49 virtual ~KolabBase(); 50 51 // Return a string identifying this type 52 virtual QString type() const = 0; 53 54 virtual void setUid(const QString &uid); 55 virtual QString uid() const; 56 57 virtual void setBody(const QString &body); 58 virtual QString body() const; 59 60 virtual void setCategories(const QString &categories); 61 virtual QString categories() const; 62 63 virtual void setCreationDate(const QDateTime &date); 64 virtual QDateTime creationDate() const; 65 66 virtual void setLastModified(const QDateTime &date); 67 virtual QDateTime lastModified() const; 68 69 virtual void setSensitivity(Sensitivity sensitivity); 70 virtual Sensitivity sensitivity() const; 71 72 virtual void setPilotSyncId(unsigned long id); 73 virtual bool hasPilotSyncId() const; 74 virtual unsigned long pilotSyncId() const; 75 76 virtual void setPilotSyncStatus(int status); 77 virtual bool hasPilotSyncStatus() const; 78 virtual int pilotSyncStatus() const; 79 80 // String - Date conversion methods 81 static QString dateTimeToString(const QDateTime &time); 82 static QString dateToString(QDate date); 83 static QDateTime stringToDateTime(const QString &time); 84 static QDate stringToDate(const QString &date); 85 86 // String - Sensitivity conversion methods 87 static QString sensitivityToString(Sensitivity); 88 static Sensitivity stringToSensitivity(const QString &); 89 90 // String - Color conversion methods 91 static QString colorToString(const QColor &); 92 static QColor stringToColor(const QString &); 93 94 // Load this object by reading the XML file 95 bool load(const QString &xml); 96 static QDomDocument loadDocument(const QString &xmlData); 97 98 // Load this QDomDocument 99 virtual bool loadXML(const QDomDocument &xml) = 0; 100 101 // Serialize this object to an XML string 102 virtual QString saveXML() const = 0; 103 104 protected: 105 /// Read all known fields from this ical incidence 106 void setFields(const KCalendarCore::Incidence::Ptr &); 107 108 /// Save all known fields into this ical incidence 109 void saveTo(const KCalendarCore::Incidence::Ptr &) const; 110 111 /// Read all known fields from this contact 112 void setFields(const KContacts::Addressee *); 113 114 /// Save all known fields into this contact 115 void saveTo(KContacts::Addressee *) const; 116 117 /// Read all known fields from this contact group 118 void setFields(const KContacts::ContactGroup *); 119 120 /// Save all known fields into this contact group 121 void saveTo(KContacts::ContactGroup *) const; 122 123 // This just makes the initial dom tree with version and doctype 124 static QDomDocument domTree(); 125 126 bool loadEmailAttribute(QDomElement &element, Email &email); 127 128 void saveEmailAttribute(QDomElement &element, const Email &email, const QString &tagName = QStringLiteral("email")) const; 129 130 // Load the attributes of this class 131 virtual bool loadAttribute(QDomElement &); 132 133 // Save the attributes of this class 134 virtual bool saveAttributes(QDomElement &) const; 135 136 // Return the product ID 137 virtual QString productID() const = 0; 138 139 // Write a string tag 140 static void writeString(QDomElement &, const QString &, const QString &); 141 142 QDateTime localToUTC(const QDateTime &time) const; 143 QDateTime utcToLocal(const QDateTime &time) const; 144 145 QString mUid; 146 QString mBody; 147 QString mCategories; 148 QDateTime mCreationDate; 149 QDateTime mLastModified; 150 Sensitivity mSensitivity; 151 QTimeZone mTimeZone; 152 153 // KPilot synchronization stuff 154 bool mHasPilotSyncId, mHasPilotSyncStatus; 155 unsigned long mPilotSyncId; 156 int mPilotSyncStatus; 157 }; 158 } 159 160