Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsvectordataprovidertemporalcapabilities.h 3 : : --------------- 4 : : begin : March 2020 5 : : copyright : (C) 2020 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #ifndef QGSVECTORDATAPROVIDERTEMPORALCAPABILITIES_H 19 : : #define QGSVECTORDATAPROVIDERTEMPORALCAPABILITIES_H 20 : : 21 : : #include "qgis_core.h" 22 : : #include "qgis_sip.h" 23 : : #include "qgsrange.h" 24 : : #include "qgsdataprovidertemporalcapabilities.h" 25 : : 26 : : /** 27 : : * \class QgsVectorDataProviderTemporalCapabilities 28 : : * \ingroup core 29 : : * \brief Implementation of data provider temporal properties for QgsVectorDataProviders. 30 : : * 31 : : * Data provider temporal capabilities reflect the temporal capabilities of a QgsDataProvider. 32 : : * Unlike QgsMapLayerTemporalProperties, these settings are not user-configurable, 33 : : * and should only be set by the QgsDataProvider itself. 34 : : * 35 : : * \since QGIS 3.14 36 : : */ 37 : 124 : class CORE_EXPORT QgsVectorDataProviderTemporalCapabilities : public QgsDataProviderTemporalCapabilities 38 : : { 39 : : public: 40 : : 41 : : /** 42 : : * Provider temporal handling mode 43 : : **/ 44 : : enum TemporalMode 45 : : { 46 : : ProviderHasFixedTemporalRange = 0, //!< Entire dataset from provider has a fixed start and end datetime. 47 : : ProviderStoresFeatureDateTimeInstantInField, //!< Dataset has feature datetime instants stored in a single field 48 : : ProviderStoresFeatureDateTimeStartAndEndInSeparateFields, //!< Dataset stores feature start and end datetimes in separate fields 49 : : }; 50 : : 51 : : /** 52 : : * Constructor for QgsVectorDataProviderTemporalCapabilities. 53 : : * 54 : : * The \a enabled argument specifies whether the data provider has temporal capabilities. 55 : : */ 56 : : QgsVectorDataProviderTemporalCapabilities( bool enabled = false ); 57 : : 58 : : /** 59 : : * Returns the temporal properties mode. 60 : : * 61 : : *\see setMode() 62 : : **/ 63 : : TemporalMode mode() const; 64 : : 65 : : /** 66 : : * Sets the temporal properties \a mode. 67 : : * 68 : : *\see mode() 69 : : **/ 70 : : void setMode( TemporalMode mode ); 71 : : 72 : : /** 73 : : * Sets the datetime \a range extent from which temporal data is available from the provider. 74 : : * 75 : : * \see availableTemporalRange() 76 : : */ 77 : : void setAvailableTemporalRange( const QgsDateTimeRange &range ); 78 : : 79 : : /** 80 : : * Returns the datetime range extent from which temporal data is available from the provider. 81 : : * 82 : : * \see setAvailableTemporalRange() 83 : : */ 84 : : const QgsDateTimeRange &availableTemporalRange() const; 85 : : 86 : : /** 87 : : * Returns the name of the start datetime field, which contains the start time for the feature's time spans. 88 : : * 89 : : * If mode() is ProviderStoresFeatureDateTimeInstantInField, then this field stores both the start AND end times. 90 : : * 91 : : * \see setStartField() 92 : : * \see endField() 93 : : */ 94 : : QString startField() const; 95 : : 96 : : /** 97 : : * Sets the name of the start datetime \a field, which stores the start time for the feature's time spans. 98 : : * 99 : : * If mode() is ModeFeatureDateTimeInstantFromField, then this field stores both the start AND end times. 100 : : * 101 : : * \see startField() 102 : : * \see setEndField() 103 : : */ 104 : : void setStartField( const QString &field ); 105 : : 106 : : /** 107 : : * Returns the name of the end datetime field, which stores the end time for the feature's time spans. 108 : : * 109 : : * \see setEndField() 110 : : * \see startField() 111 : : */ 112 : : QString endField() const; 113 : : 114 : : /** 115 : : * Sets the name of the end datetime \a field, which stores the end time for the feature's time spans. 116 : : * 117 : : * \see endField() 118 : : * \see setStartField() 119 : : */ 120 : : void setEndField( const QString &field ); 121 : : 122 : : private: 123 : : 124 : : /** 125 : : * Represents available data provider datetime range. 126 : : * 127 : : * This is for determining the providers lower and upper datetime bounds, 128 : : * any updates on the mRange should get out the range bound defined 129 : : * by this member. 130 : : * 131 : : */ 132 : : QgsDateTimeRange mAvailableTemporalRange; 133 : : 134 : : TemporalMode mMode = ProviderHasFixedTemporalRange; 135 : : 136 : : QString mStartField; 137 : : QString mEndField; 138 : : 139 : : }; 140 : : 141 : : #endif // QGSVECTORDATAPROVIDERTEMPORALCAPABILITIES_H