QGIS API Documentation
4.3.0-Master (9dce731a7a1)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
core
providers
qgsprovidersublayertask.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsprovidersublayertask.cpp
3
----------------------
4
begin : June 2021
5
copyright : (C) 2021 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
#include "
qgsprovidersublayertask.h
"
19
20
#include "
qgsfeedback.h
"
21
#include "
qgsprovidermetadata.h
"
22
#include "
qgsproviderregistry.h
"
23
#include "
qgsprovidersublayerdetails.h
"
24
#include "
qgsreadwritelocker.h
"
25
26
#include "moc_qgsprovidersublayertask.cpp"
27
28
QgsProviderSublayerTask::QgsProviderSublayerTask
(
const
QString &uri,
bool
includeSystemTables )
29
:
QgsTask
( tr(
"Retrieving layers"
),
QgsTask
::
CanCancel
|
QgsTask
::
CancelWithoutPrompt
|
QgsTask
::
Silent
)
30
, mUri( uri )
31
, mIncludeSystemTables( includeSystemTables )
32
{}
33
34
QgsProviderSublayerTask::QgsProviderSublayerTask
(
const
QString &uri,
const
QString &providerKey,
bool
includeSystemTables )
35
:
QgsTask
( tr(
"Retrieving layers"
),
QgsTask
::
CanCancel
|
QgsTask
::
CancelWithoutPrompt
|
QgsTask
::
Silent
)
36
, mUri( uri )
37
, mProviderKey( providerKey )
38
, mIncludeSystemTables( includeSystemTables )
39
{}
40
41
QList<QgsProviderSublayerDetails>
QgsProviderSublayerTask::results
()
const
42
{
43
const
QgsReadWriteLocker
locker( mLock,
QgsReadWriteLocker::Read
);
44
return
mResults;
45
}
46
47
QgsProviderSublayerTask::~QgsProviderSublayerTask
() =
default
;
48
49
bool
QgsProviderSublayerTask::run
()
50
{
51
mFeedback = std::make_unique< QgsFeedback >();
52
53
Qgis::SublayerQueryFlags
flags
=
Qgis::SublayerQueryFlag::ResolveGeometryType
|
Qgis::SublayerQueryFlag::CountFeatures
|
Qgis::SublayerQueryFlag::OpenLayersToResolveDescriptions
;
54
if
( mIncludeSystemTables )
55
flags
|=
Qgis::SublayerQueryFlag::IncludeSystemTables
;
56
57
QList<QgsProviderSublayerDetails> res;
58
if
( mProviderKey.isEmpty() )
59
res =
QgsProviderRegistry::instance
()->
querySublayers
( mUri,
flags
, mFeedback.get() );
60
else
61
{
62
QgsProviderMetadata
*provider =
QgsProviderRegistry::instance
()->
providerMetadata
( mProviderKey );
63
if
( provider )
64
res = provider->
querySublayers
( mUri,
flags
, mFeedback.get() );
65
}
66
67
const
QgsReadWriteLocker
locker( mLock,
QgsReadWriteLocker::Write
);
68
mResults = res;
69
70
return
true
;
71
}
72
73
void
QgsProviderSublayerTask::cancel
()
74
{
75
if
( mFeedback )
76
mFeedback->cancel();
77
78
QgsTask::cancel
();
79
}
Qgis::SublayerQueryFlag::IncludeSystemTables
@ IncludeSystemTables
Include system or internal tables (these are not included by default).
Definition
qgis.h:1564
Qgis::SublayerQueryFlag::OpenLayersToResolveDescriptions
@ OpenLayersToResolveDescriptions
Attempt to open layers in order to resolve layer descriptions. May be slow and should never be done i...
Definition
qgis.h:1565
Qgis::SublayerQueryFlag::CountFeatures
@ CountFeatures
Count features in vector sublayers.
Definition
qgis.h:1563
Qgis::SublayerQueryFlag::ResolveGeometryType
@ ResolveGeometryType
Attempt to resolve the geometry type for vector sublayers.
Definition
qgis.h:1562
Qgis::SublayerQueryFlags
QFlags< SublayerQueryFlag > SublayerQueryFlags
Sublayer query flags.
Definition
qgis.h:1568
QgsProviderMetadata
Holds data provider key, description, and associated shared library file or function pointer informat...
Definition
qgsprovidermetadata.h:234
QgsProviderMetadata::querySublayers
virtual QList< QgsProviderSublayerDetails > querySublayers(const QString &uri, Qgis::SublayerQueryFlags flags=Qgis::SublayerQueryFlags(), QgsFeedback *feedback=nullptr) const
Queries the specified uri and returns a list of any valid sublayers found in the dataset which can be...
Definition
qgsprovidermetadata.cpp:131
QgsProviderRegistry::querySublayers
QList< QgsProviderSublayerDetails > querySublayers(const QString &uri, Qgis::SublayerQueryFlags flags=Qgis::SublayerQueryFlags(), QgsFeedback *feedback=nullptr) const
Queries the specified uri and returns a list of any valid sublayers found in the dataset which can be...
Definition
qgsproviderregistry.cpp:1132
QgsProviderRegistry::instance
static QgsProviderRegistry * instance(const QString &pluginPath=QString())
Means of accessing canonical single instance.
Definition
qgsproviderregistry.cpp:86
QgsProviderRegistry::providerMetadata
QgsProviderMetadata * providerMetadata(const QString &providerKey) const
Returns metadata of the provider or nullptr if not found.
Definition
qgsproviderregistry.cpp:1047
QgsProviderSublayerTask::results
QList< QgsProviderSublayerDetails > results() const
Returns the sublayer details as calculated by the task.
Definition
qgsprovidersublayertask.cpp:41
QgsProviderSublayerTask::cancel
void cancel() override
Notifies the task that it should terminate.
Definition
qgsprovidersublayertask.cpp:73
QgsProviderSublayerTask::QgsProviderSublayerTask
QgsProviderSublayerTask(const QString &uri, bool includeSystemTables=false)
Constructor for QgsProviderSublayerTask, which retrieves sublayer details for the specified uri.
Definition
qgsprovidersublayertask.cpp:28
QgsProviderSublayerTask::~QgsProviderSublayerTask
~QgsProviderSublayerTask() override
QgsProviderSublayerTask::run
bool run() override
Performs the task's operation.
Definition
qgsprovidersublayertask.cpp:49
QgsReadWriteLocker
A convenience class that simplifies locking and unlocking QReadWriteLocks.
Definition
qgsreadwritelocker.h:41
QgsReadWriteLocker::Write
@ Write
Lock for write.
Definition
qgsreadwritelocker.h:49
QgsReadWriteLocker::Read
@ Read
Lock for read.
Definition
qgsreadwritelocker.h:48
QgsTask::flags
Flags flags() const
Returns the flags associated with the task.
Definition
qgstaskmanager.h:93
QgsTask::cancel
virtual void cancel()
Notifies the task that it should terminate.
Definition
qgstaskmanager.cpp:98
QgsTask::QgsTask
QgsTask(const QString &description=QString(), QgsTask::Flags flags=AllFlags)
Constructor for QgsTask.
Definition
qgstaskmanager.cpp:36
QgsTask::CanCancel
@ CanCancel
Task can be canceled.
Definition
qgstaskmanager.h:73
QgsTask::CancelWithoutPrompt
@ CancelWithoutPrompt
Task can be canceled without any users prompts, e.g. when closing a project or QGIS.
Definition
qgstaskmanager.h:74
QgsTask::Silent
@ Silent
Don't show task updates (such as completion/failure messages) as operating-system level notifications...
Definition
qgstaskmanager.h:76
qgsfeedback.h
qgsprovidermetadata.h
qgsproviderregistry.h
qgsprovidersublayerdetails.h
qgsprovidersublayertask.h
qgsreadwritelocker.h
Generated on
for QGIS API Documentation by
1.17.0