File indexing completed on 2024-05-12 04:42:42
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KPUBLICTRANSPORT_INDIVIDUALTRANSPORT_H 0008 #define KPUBLICTRANSPORT_INDIVIDUALTRANSPORT_H 0009 0010 #include "kpublictransport_export.h" 0011 #include "datatypes.h" 0012 0013 namespace KPublicTransport { 0014 0015 class IndividualTransportPrivate; 0016 0017 /** Individual transport mode details for a journey section, and for specifying journey requests. */ 0018 class KPUBLICTRANSPORT_EXPORT IndividualTransport 0019 { 0020 KPUBLICTRANSPORT_GADGET(IndividualTransport) 0021 public: 0022 /** Mode of (individual) transportation. */ 0023 enum Mode { 0024 Walk, 0025 Bike, 0026 Car 0027 }; 0028 Q_ENUM(Mode) 0029 KPUBLICTRANSPORT_PROPERTY(Mode, mode, setMode) 0030 0031 public: 0032 /** Qualifier on how the mode of transport is used. */ 0033 enum Qualifier { 0034 None, ///< not applicable, or bike is taken on public transport legs. 0035 Park, ///< for access legs, vehicle is parked before taking public transport. 0036 Rent, ///< use a rental vehicle 0037 Dropoff, ///< for access legs: vehicle is not taken onto public transport but also doesn't need parking 0038 Pickup, ///< for egress legs: vehicle is available at the last public transport leg 0039 }; 0040 Q_ENUM(Qualifier) 0041 KPUBLICTRANSPORT_PROPERTY(Qualifier, qualifier, setQualifier) 0042 0043 public: 0044 IndividualTransport(Mode mode, Qualifier qualifier = None); 0045 0046 bool operator==(const IndividualTransport &other) const; 0047 bool operator!=(const IndividualTransport &other) const; 0048 0049 /** Serializes one object to JSON. */ 0050 static QJsonObject toJson(const IndividualTransport &it); 0051 /** Serializes a vector of objects to JSON. */ 0052 static QJsonArray toJson(const std::vector<IndividualTransport> &its); 0053 /** Deserialize an object from JSON. */ 0054 static IndividualTransport fromJson(const QJsonObject &obj); 0055 /** Deserialize a list of journey from JSON. */ 0056 static std::vector<IndividualTransport> fromJson(const QJsonArray &array); 0057 0058 /** @internal for QML bindings only */ 0059 static std::vector<IndividualTransport> fromVariant(const QVariantList &v); 0060 }; 0061 0062 } 0063 0064 Q_DECLARE_METATYPE(KPublicTransport::IndividualTransport) 0065 0066 #endif // KPUBLICTRANSPORT_INDIVIDUALTRANSPORT_H