QGIS API Documentation 3.30.0-'s-Hertogenbosch (f186b8efe0)
qgsdataprovider.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsdataprovider.cpp - DataProvider Interface
3 --------------------------------------
4 Date : May 2016
5 Copyright : (C) 2016 by Matthias Kuhn
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#include <QMutexLocker>
17#include "qgsdataprovider.h"
19#include "qgsthreadingutils.h"
20
21#define SUBLAYER_SEPARATOR QStringLiteral( "!!::!!" )
22
23QgsDataProvider::QgsDataProvider( const QString &uri, const QgsDataProvider::ProviderOptions &providerOptions,
24 QgsDataProvider::ReadFlags flags )
25 : mDataSourceURI( uri ),
26 mOptions( providerOptions )
27{
29}
30
31Qgis::DataProviderFlags QgsDataProvider::flags() const
32{
34
35 return Qgis::DataProviderFlags();
36}
37
39{
41
42 return nullptr;
43}
44
46{
48
49 return nullptr;
50}
51
53{
54 // Because QgsVirtualLayerTask is not thread safe:
56
57 reloadProviderData();
58 emit dataChanged();
59}
60
62{
64
65 mProviderProperties.insert( property, value );
66}
67
68void QgsDataProvider::setProviderProperty( int property, const QVariant &value )
69{
71
72 mProviderProperties.insert( property, value );
73}
74
75QVariant QgsDataProvider::providerProperty( QgsDataProvider::ProviderProperty property, const QVariant &defaultValue ) const
76{
78
79 return mProviderProperties.value( property, defaultValue );
80}
81
82QVariant QgsDataProvider::providerProperty( int property, const QVariant &defaultValue = QVariant() ) const
83{
85
86 return mProviderProperties.value( property, defaultValue );
87}
88
89void QgsDataProvider::setListening( bool isListening )
90{
92
93 Q_UNUSED( isListening )
94}
95
97{
99
100 return context.lastRenderingTimeMs <= context.maxRenderingTimeMs;
101}
102
104{
106
107 const QMutexLocker locker( &mOptionsMutex );
108 return mOptions.transformContext;
109}
110
112{
114
115 const QMutexLocker locker( &mOptionsMutex );
116 mOptions.transformContext = value;
117}
118
120{
121 return SUBLAYER_SEPARATOR;
122}
Contains information about the context in which a coordinate transform is executed.
Base class for handling properties relating to a data provider's temporal capabilities.
QgsCoordinateTransformContext transformContext() const
Returns data provider coordinate transform context.
virtual void setListening(bool isListening)
Set whether the provider will listen to datasource notifications If set, the provider will issue noti...
virtual Qgis::DataProviderFlags flags() const
Returns the generic data provider flags.
void setProviderProperty(ProviderProperty property, const QVariant &value)
Allows setting arbitrary properties on the provider.
void dataChanged()
Emitted whenever a change is made to the data provider which may have caused changes in the provider'...
ProviderProperty
Properties are used to pass custom configuration options into data providers.
QgsDataProvider(const QString &uri=QString(), const QgsDataProvider::ProviderOptions &providerOptions=QgsDataProvider::ProviderOptions(), QgsDataProvider::ReadFlags flags=QgsDataProvider::ReadFlags())
Create a new dataprovider with the specified in the uri.
virtual QgsDataProviderTemporalCapabilities * temporalCapabilities()
Returns the provider's temporal capabilities.
QgsDataProvider::ReadFlags mReadFlags
Read flags. It's up to the subclass to respect these when needed.
static QString sublayerSeparator()
String sequence used for separating components of sublayers strings.
QVariant providerProperty(ProviderProperty property, const QVariant &defaultValue=QVariant()) const
Gets the current value of a certain provider property.
virtual bool renderInPreview(const QgsDataProvider::PreviewContext &context)
Returns whether the layer must be rendered in preview jobs.
virtual void reloadData()
Reloads the data from the source for providers with data caches to synchronize, changes in the data s...
virtual void setTransformContext(const QgsCoordinateTransformContext &transformContext)
Sets data coordinate transform context to transformContext.
#define SUBLAYER_SEPARATOR
#define QGIS_PROTECT_QOBJECT_THREAD_ACCESS_NON_FATAL
#define QGIS_PROTECT_QOBJECT_THREAD_ACCESS
Stores settings related to the context in which a preview job runs.
double maxRenderingTimeMs
Default maximum allowable render time, in ms.
double lastRenderingTimeMs
Previous rendering time for the layer, in ms.
Setting options for creating vector data providers.
QgsCoordinateTransformContext transformContext
Coordinate transform context.