29QgsSensorThingsRootItem::QgsSensorThingsRootItem(
QgsDataItem *parent, QString name, QString path )
33 mIconName = QStringLiteral(
"mIconSensorThings.svg" );
37QVector<QgsDataItem *> QgsSensorThingsRootItem::createChildren()
39 QVector<QgsDataItem *> connections;
41 for (
const QString &connName : connectionList )
43 QgsDataItem *conn =
new QgsSensorThingsConnectionItem(
this, connName, mPath +
'/' + connName );
44 connections.append( conn );
53QgsSensorThingsConnectionItem::QgsSensorThingsConnectionItem(
QgsDataItem *parent,
const QString &name,
const QString &path )
57 mIconName = QStringLiteral(
"mIconConnect.svg" );
64bool QgsSensorThingsConnectionItem::equal(
const QgsDataItem *other )
66 const QgsSensorThingsConnectionItem *o = qobject_cast<const QgsSensorThingsConnectionItem *>( other );
67 return ( type() == other->
type() && o && mPath == o->mPath && mName == o->mName );
70QVector<QgsDataItem *> QgsSensorThingsConnectionItem::createChildren()
72 QVector<QgsDataItem *> children;
77 QgsSensorThingsProvider::SENSORTHINGS_PROVIDER_KEY, uri );
92 QVariantMap entityUriParts = connectionUriParts;
97 children.append(
new QgsSensorThingsEntityContainerItem(
this,
100 entityUriParts, entity, mConnName ) );
104 children.append(
new QgsSensorThingsLayerEntityItem(
this,
108 QgsSensorThingsProvider::SENSORTHINGS_PROVIDER_KEY,
121QgsSensorThingsEntityContainerItem::QgsSensorThingsEntityContainerItem(
QgsDataItem *parent,
const QString &name,
const QString &path,
const QVariantMap &entityUriParts,
Qgis::SensorThingsEntity entityType,
const QString &connectionName )
123 , mEntityUriParts( entityUriParts )
124 , mEntityType( entityType )
125 , mConnectionName( connectionName )
131bool QgsSensorThingsEntityContainerItem::equal(
const QgsDataItem *other )
133 const QgsSensorThingsEntityContainerItem *o = qobject_cast<const QgsSensorThingsEntityContainerItem *>( other );
134 return ( type() == other->
type() && o && mPath == o->mPath && mName == o->mName );
137QVector<QgsDataItem *> QgsSensorThingsEntityContainerItem::createChildren()
139 QVector<QgsDataItem *> children;
142 QList< Qgis::WkbType > compatibleTypes;
163 for (
const Qgis::WkbType wkbType : std::as_const( compatibleTypes ) )
165 QVariantMap geometryUriParts = mEntityUriParts;
171 geometryUriParts.insert( QStringLiteral(
"geometryType" ), QStringLiteral(
"point" ) );
172 name = tr(
"Points" );
176 geometryUriParts.insert( QStringLiteral(
"geometryType" ), QStringLiteral(
"multipoint" ) );
177 name = tr(
"MultiPoints" );
181 geometryUriParts.insert( QStringLiteral(
"geometryType" ), QStringLiteral(
"line" ) );
182 name = tr(
"Lines" );
186 geometryUriParts.insert( QStringLiteral(
"geometryType" ), QStringLiteral(
"polygon" ) );
187 name = tr(
"Polygons" );
191 geometryUriParts.remove( QStringLiteral(
"geometryType" ) );
192 name = tr(
"No Geometry" );
198 children.append(
new QgsSensorThingsLayerEntityItem(
this,
202 QgsSensorThingsProvider::SENSORTHINGS_PROVIDER_KEY,
203 layerType, mEntityType, mConnectionName ) );
204 children.last()->setSortKey( sortKey++ );
214QgsSensorThingsLayerEntityItem::QgsSensorThingsLayerEntityItem(
QgsDataItem *parent,
const QString &name,
const QString &path,
217 QgsProviderRegistry::instance()->encodeUri( QgsSensorThingsProvider::SENSORTHINGS_PROVIDER_KEY, uriParts ),
219 , mUriParts( uriParts )
220 , mEntityType( entityType )
221 , mConnectionName( connectionName )
226QString QgsSensorThingsLayerEntityItem::layerName()
const
231 const QString geometryType = mUriParts.value( QStringLiteral(
"geometryType" ) ).toString();
232 QString geometryNamePart;
233 if ( geometryType.compare( QLatin1String(
"point" ), Qt::CaseInsensitive ) == 0 ||
234 geometryType.compare( QLatin1String(
"multipoint" ), Qt::CaseInsensitive ) == 0 )
236 geometryNamePart = tr(
"Points" );
238 else if ( geometryType.compare( QLatin1String(
"line" ), Qt::CaseInsensitive ) == 0 )
240 geometryNamePart = tr(
"Lines" );
242 else if ( geometryType.compare( QLatin1String(
"polygon" ), Qt::CaseInsensitive ) == 0 )
244 geometryNamePart = tr(
"Polygons" );
247 if ( !geometryNamePart.isEmpty() )
249 baseName = QStringLiteral(
"%1 - %2 (%3)" ).arg( mConnectionName,
255 baseName = QStringLiteral(
"%1 - %2" ).arg( mConnectionName,
261 baseName = QStringLiteral(
"%1 - %2" ).arg( mConnectionName,
272QString QgsSensorThingsDataItemProvider::name()
274 return QStringLiteral(
"SensorThings" );
277QString QgsSensorThingsDataItemProvider::dataProviderKey()
const
279 return QStringLiteral(
"sensorthings" );
287QgsDataItem *QgsSensorThingsDataItemProvider::createDataItem(
const QString &path,
QgsDataItem *parentItem )
289 if ( path.isEmpty() )
290 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.