1/****************************************************************************
2**
3** Copyright (C) 2015 The Qt Company Ltd.
4** Contact: http://www.qt.io/licensing/
5**
6** This file is part of the QtVersitOrganizer module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL21$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see http://www.qt.io/terms-conditions. For further
15** information use the contact form at http://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 2.1 or version 3 as published by the Free
20** Software Foundation and appearing in the file LICENSE.LGPLv21 and
21** LICENSE.LGPLv3 included in the packaging of this file. Please review the
22** following information to ensure the GNU Lesser General Public License
23** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
24** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25**
26** As a special exception, The Qt Company gives you certain additional
27** rights. These rights are described in The Qt Company LGPL Exception
28** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29**
30** $QT_END_LICENSE$
31**
32****************************************************************************/
33
34#ifndef QVERSITTIMEZONEHANDLER_H
35#define QVERSITTIMEZONEHANDLER_H
36
37#include <QtCore/qobject.h>
38#include <QtCore/qdatetime.h>
39
40#include <QtVersitOrganizer/qversitorganizerglobal.h>
41
42QT_BEGIN_NAMESPACE_VERSITORGANIZER
43
44class Q_VERSIT_ORGANIZER_EXPORT QVersitTimeZoneHandler
45{
46public:
47 virtual ~QVersitTimeZoneHandler() {}
48
49 /*!
50 \fn QDateTime QVersitTimeZoneHandler::convertTimeZoneToUtc(const QDateTime& datetime, const QString& timeZoneName);
51 Converts \a datetime to the local time for the time zone identified by \a timeZoneName. The UTC
52 offset of the time zone should be calculated taking into account the daylight savings rules that
53 might apply at \a datetime.
54
55 \a datetime must be specified with Qt::UTC. The returned QDateTime will be specified with
56 Qt::LocalTime. Note that unlike the usual semantic of Qt::LocalTime, it does not represent a time
57 in the system's local time zone.
58
59 An invalid QDateTime is returned on failure (eg. if \a timeZoneName is unknown).
60 */
61 virtual QDateTime convertTimeZoneToUtc(const QDateTime& datetime, const QString& timeZoneName) = 0;
62
63 /*!
64 \fn QDateTime QVersitTimeZoneHandler::convertUtcToTimeZone(const QDateTime& datetime, const QString& timeZoneName);
65 Converts \a datetime to UTC, treating \a datetime as if it were a local time for a time zone
66 identified by \a timeZoneName. The UTC offset of the time zone should be calculated taking into
67 account the daylight savings rules that might apply at \a datetime.
68
69 \a datetime must be specified with Qt::LocalTime. Note that unlike the usual semantic of
70 Qt::LocalTime, \a datetime does not represent a time in the system's local time zone.
71 The returned QDateTime will be specified with Qt::UTC.
72
73 An invalid QDateTime is returned on failure (eg. if \a timeZoneName is unknown).
74 */
75 virtual QDateTime convertUtcToTimeZone(const QDateTime& datetime, const QString& timeZoneName) = 0;
76};
77
78QT_END_NAMESPACE_VERSITORGANIZER
79
80#define QT_VERSIT_TIMEZONE_HANDLER_INTERFACE "org.qt-project.Qt.QVersitTimeZoneHandler"
81QT_BEGIN_NAMESPACE
82Q_DECLARE_INTERFACE(QtVersitOrganizer::QVersitTimeZoneHandler, QT_VERSIT_TIMEZONE_HANDLER_INTERFACE)
83QT_END_NAMESPACE
84#endif
85

source code of qtpim/src/versitorganizer/qversittimezonehandler.h