File indexing completed on 2024-04-28 04:42:41

0001 /*
0002  * SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
0003  * SPDX-License-Identifier: LGPL-2.0-or-later
0004  */
0005 
0006 #ifndef KWEATHERCORE_CAPREFERENCE_H
0007 #define KWEATHERCORE_CAPREFERENCE_H
0008 
0009 #include <kweathercore/kweathercore_export.h>
0010 
0011 #include <QMetaType>
0012 #include <QSharedDataPointer>
0013 
0014 namespace KWeatherCore
0015 {
0016 
0017 class CAPReferencePrivate;
0018 
0019 /** A reference to a previous CAP alert message.
0020  *  @see https://docs.oasis-open.org/emergency/cap/v1.2/CAP-v1.2.html ยง3.2.1
0021  */
0022 class KWEATHERCORE_EXPORT CAPReference
0023 {
0024     Q_GADGET
0025     Q_PROPERTY(QString sender READ sender)
0026     Q_PROPERTY(QString identifier READ identifier)
0027     Q_PROPERTY(QDateTime sent READ sent)
0028 
0029 public:
0030     explicit CAPReference();
0031     explicit CAPReference(const QString &sender, const QString &identifier, const QDateTime &sent);
0032     CAPReference(const CAPReference &);
0033     CAPReference(CAPReference &&);
0034     ~CAPReference();
0035     CAPReference &operator=(const CAPReference &);
0036     CAPReference &operator=(CAPReference &&);
0037 
0038     bool operator==(const CAPReference &other) const;
0039 
0040     QString sender() const;
0041     QString identifier() const;
0042     QDateTime sent() const;
0043 
0044 private:
0045     QSharedDataPointer<CAPReferencePrivate> d;
0046 };
0047 
0048 }
0049 
0050 Q_DECLARE_METATYPE(KWeatherCore::CAPReference)
0051 
0052 #endif // KWEATHERCORE_CAPREFERENCE_H