File indexing completed on 2024-10-06 12:17:04
0001 /* 0002 This file is part of the KContacts framework. 0003 SPDX-FileCopyrightText: 2001 Cornelius Schumacher <schumacher@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef KCONTACTS_TIMEZONE_H 0009 #define KCONTACTS_TIMEZONE_H 0010 0011 #include "kcontacts_export.h" 0012 #include <QSharedDataPointer> 0013 #include <QString> 0014 0015 namespace KContacts 0016 { 0017 /** 0018 * @short Time zone information. 0019 * 0020 * This class stores information about a time zone. 0021 */ 0022 class KCONTACTS_EXPORT TimeZone 0023 { 0024 friend KCONTACTS_EXPORT QDataStream &operator<<(QDataStream &, const TimeZone &); 0025 friend KCONTACTS_EXPORT QDataStream &operator>>(QDataStream &, TimeZone &); 0026 0027 public: 0028 /** 0029 * Construct invalid time zone. 0030 */ 0031 TimeZone(); 0032 0033 /** 0034 * Construct time zone. 0035 * 0036 * @param offset Offset in minutes relative to UTC. 0037 */ 0038 TimeZone(int offset); 0039 0040 /** 0041 * Copy constructor. 0042 */ 0043 TimeZone(const TimeZone &other); 0044 0045 /** 0046 * Destroys the time zone. 0047 */ 0048 ~TimeZone(); 0049 0050 /** 0051 * Set time zone offset relative to UTC. 0052 * 0053 * @param offset Offset in minutes. 0054 */ 0055 void setOffset(int offset); 0056 0057 /** 0058 * Return offset in minutes relative to UTC. 0059 */ 0060 Q_REQUIRED_RESULT int offset() const; 0061 0062 /** 0063 * Return, if this time zone object is valid. 0064 */ 0065 Q_REQUIRED_RESULT bool isValid() const; 0066 0067 Q_REQUIRED_RESULT bool operator==(const TimeZone &other) const; 0068 Q_REQUIRED_RESULT bool operator!=(const TimeZone &other) const; 0069 TimeZone &operator=(const TimeZone &other); 0070 0071 /** 0072 * Return string representation of time zone offset. 0073 */ 0074 Q_REQUIRED_RESULT QString toString() const; 0075 0076 private: 0077 class Private; 0078 QSharedDataPointer<Private> d; 0079 }; 0080 0081 /** 0082 * Serializes the @p timezone object into the @p stream. 0083 */ 0084 KCONTACTS_EXPORT QDataStream &operator<<(QDataStream &stream, const TimeZone &timeZone); 0085 0086 /** 0087 * Initializes the @p timezone object from the @p stream. 0088 */ 0089 KCONTACTS_EXPORT QDataStream &operator>>(QDataStream &stream, TimeZone &timeZone); 0090 } 0091 Q_DECLARE_TYPEINFO(KContacts::TimeZone, Q_MOVABLE_TYPE); 0092 0093 #endif