16#include "moc_qgssensorthingsdataitems.cpp"
30QgsSensorThingsRootItem::QgsSensorThingsRootItem(
QgsDataItem *parent, QString name, QString path )
34 mIconName = QStringLiteral(
"mIconSensorThings.svg" );
38QVector<QgsDataItem *> QgsSensorThingsRootItem::createChildren()
40 QVector<QgsDataItem *> connections;
42 for (
const QString &connName : connectionList )
44 QgsDataItem *conn =
new QgsSensorThingsConnectionItem(
this, connName, mPath +
'/' + connName );
45 connections.append( conn );
54QgsSensorThingsConnectionItem::QgsSensorThingsConnectionItem(
QgsDataItem *parent,
const QString &name,
const QString &path )
58 mIconName = QStringLiteral(
"mIconConnect.svg" );
65bool QgsSensorThingsConnectionItem::equal(
const QgsDataItem *other )
67 const QgsSensorThingsConnectionItem *o = qobject_cast<const QgsSensorThingsConnectionItem *>( other );
68 return ( type() == other->
type() && o && mPath == o->mPath && mName == o->mName );
71QVector<QgsDataItem *> QgsSensorThingsConnectionItem::createChildren()
73 QVector<QgsDataItem *> children;
78 QgsSensorThingsProvider::SENSORTHINGS_PROVIDER_KEY, uri );
93 QVariantMap entityUriParts = connectionUriParts;
98 children.append(
new QgsSensorThingsEntityContainerItem(
this,
101 entityUriParts, entity, mConnName ) );
105 children.append(
new QgsSensorThingsLayerEntityItem(
this,
109 QgsSensorThingsProvider::SENSORTHINGS_PROVIDER_KEY,
122QgsSensorThingsEntityContainerItem::QgsSensorThingsEntityContainerItem(
QgsDataItem *parent,
const QString &name,
const QString &path,
const QVariantMap &entityUriParts,
Qgis::SensorThingsEntity entityType,
const QString &connectionName )
124 , mEntityUriParts( entityUriParts )
125 , mEntityType( entityType )
126 , mConnectionName( connectionName )
132bool QgsSensorThingsEntityContainerItem::equal(
const QgsDataItem *other )
134 const QgsSensorThingsEntityContainerItem *o = qobject_cast<const QgsSensorThingsEntityContainerItem *>( other );
135 return ( type() == other->
type() && o && mPath == o->mPath && mName == o->mName );
138QVector<QgsDataItem *> QgsSensorThingsEntityContainerItem::createChildren()
140 QVector<QgsDataItem *> children;
143 QList< Qgis::WkbType > compatibleTypes;
164 for (
const Qgis::WkbType wkbType : std::as_const( compatibleTypes ) )
166 QVariantMap geometryUriParts = mEntityUriParts;
172 geometryUriParts.insert( QStringLiteral(
"geometryType" ), QStringLiteral(
"point" ) );
173 name = tr(
"Points" );
177 geometryUriParts.insert( QStringLiteral(
"geometryType" ), QStringLiteral(
"multipoint" ) );
178 name = tr(
"MultiPoints" );
182 geometryUriParts.insert( QStringLiteral(
"geometryType" ), QStringLiteral(
"line" ) );
183 name = tr(
"Lines" );
187 geometryUriParts.insert( QStringLiteral(
"geometryType" ), QStringLiteral(
"polygon" ) );
188 name = tr(
"Polygons" );
192 geometryUriParts.remove( QStringLiteral(
"geometryType" ) );
193 name = tr(
"No Geometry" );
199 children.append(
new QgsSensorThingsLayerEntityItem(
this,
203 QgsSensorThingsProvider::SENSORTHINGS_PROVIDER_KEY,
204 layerType, mEntityType, mConnectionName ) );
205 children.last()->setSortKey( sortKey++ );
215QgsSensorThingsLayerEntityItem::QgsSensorThingsLayerEntityItem(
QgsDataItem *parent,
const QString &name,
const QString &path,
218 QgsProviderRegistry::instance()->encodeUri( QgsSensorThingsProvider::SENSORTHINGS_PROVIDER_KEY, uriParts ),
220 , mUriParts( uriParts )
221 , mEntityType( entityType )
222 , mConnectionName( connectionName )
227QString QgsSensorThingsLayerEntityItem::layerName()
const
232 const QString geometryType = mUriParts.value( QStringLiteral(
"geometryType" ) ).toString();
233 QString geometryNamePart;
234 if ( geometryType.compare( QLatin1String(
"point" ), Qt::CaseInsensitive ) == 0 ||
235 geometryType.compare( QLatin1String(
"multipoint" ), Qt::CaseInsensitive ) == 0 )
237 geometryNamePart = tr(
"Points" );
239 else if ( geometryType.compare( QLatin1String(
"line" ), Qt::CaseInsensitive ) == 0 )
241 geometryNamePart = tr(
"Lines" );
243 else if ( geometryType.compare( QLatin1String(
"polygon" ), Qt::CaseInsensitive ) == 0 )
245 geometryNamePart = tr(
"Polygons" );
248 if ( !geometryNamePart.isEmpty() )
250 baseName = QStringLiteral(
"%1 - %2 (%3)" ).arg( mConnectionName,
256 baseName = QStringLiteral(
"%1 - %2" ).arg( mConnectionName,
262 baseName = QStringLiteral(
"%1 - %2" ).arg( mConnectionName,
273QString QgsSensorThingsDataItemProvider::name()
275 return QStringLiteral(
"SensorThings" );
278QString QgsSensorThingsDataItemProvider::dataProviderKey()
const
280 return QStringLiteral(
"sensorthings" );
288QgsDataItem *QgsSensorThingsDataItemProvider::createDataItem(
const QString &path,
QgsDataItem *parentItem )
290 if ( path.isEmpty() )
291 return new QgsSensorThingsRootItem( parentItem, QObject::tr(
"SensorThings" ), QStringLiteral(
"sensorthings:" ) );
@ NetworkSources
Network/internet source.
@ Populated
Children created.
@ Collapse
The collapse/expand status for this items children should be ignored in order to avoid undesired netw...
@ Fast
CreateChildren() is fast enough to be run in main thread when refreshing items, most root items (wms,...
QFlags< DataItemProviderCapability > DataItemProviderCapabilities
Capabilities for data item providers.
SensorThingsEntity
OGC SensorThings API entity types.
@ Sensor
A Sensor is an instrument that observes a property or phenomenon with the goal of producing an estima...
@ MultiDatastream
A MultiDatastream groups a collection of Observations and the Observations in a MultiDatastream have ...
@ ObservedProperty
An ObservedProperty specifies the phenomenon of an Observation.
@ FeatureOfInterest
In the context of the Internet of Things, many Observations’ FeatureOfInterest can be the Location of...
@ Datastream
A Datastream groups a collection of Observations measuring the same ObservedProperty and produced by ...
@ Observation
An Observation is the act of measuring or otherwise determining the value of a property.
@ Location
A Location entity locates the Thing or the Things it associated with. A Thing’s Location entity is de...
@ Thing
A Thing is an object of the physical world (physical things) or the information world (virtual things...
@ HistoricalLocation
A Thing’s HistoricalLocation entity set provides the times of the current (i.e., last known) and prev...
BrowserLayerType
Browser item layer types.
@ Point
Vector point layer.
@ Polygon
Vector polygon layer.
@ TableLayer
Vector non-spatial layer.
WkbType
The WKB type describes the number of dimensions a geometry has.
@ MultiPolygon
MultiPolygon.
@ MultiLineString
MultiLineString.
A Collection that represents a root group of connections from a single data provider.
A Collection: logical collection of layers or subcollections, e.g.
Base class for all items in the model.
Qgis::BrowserItemType type() const
Item that represents a layer that can be opened with one of the providers.
A registry / canonical manager of data providers.
QVariantMap decodeUri(const QString &providerKey, const QString &uri)
Breaks a provider data source URI into its component paths (e.g.
static QgsProviderRegistry * instance(const QString &pluginPath=QString())
Means of accessing canonical single instance.
static QString encodedLayerUri(const Data &data)
Returns connection data encoded as a string containing a URI for a SensorThings vector data provider.
static QStringList connectionList()
Returns a list of the stored connection names.
static Data connection(const QString &name)
Returns connection details for the stored connection with the specified name.
static Qgis::GeometryType geometryTypeForEntity(Qgis::SensorThingsEntity type)
Returns the geometry type for if the specified entity type.
static QString displayString(Qgis::SensorThingsEntity type, bool plural=false)
Converts a Qgis::SensorThingsEntity type to a user-friendly translated string.
static bool entityTypeHasGeometry(Qgis::SensorThingsEntity type)
Returns true if the specified entity type can have geometry attached.
QString qgsEnumValueToKey(const T &value, bool *returnOk=nullptr)
Returns the value for the given key of an enum.
Represents decoded data of a SensorThings connection.