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.