mirror of
https://github.com/qgis/QGIS.git
synced 2025-12-10 00:08:20 -05:00
Fix system tables disappear from dialog after task runs
This commit is contained in:
parent
37dc64fdf8
commit
136faab91f
@ -35,7 +35,7 @@ possible, regardless of how expensive this may be.
|
|||||||
%End
|
%End
|
||||||
public:
|
public:
|
||||||
|
|
||||||
QgsProviderSublayerTask( const QString &uri );
|
QgsProviderSublayerTask( const QString &uri, bool includeSystemTables );
|
||||||
%Docstring
|
%Docstring
|
||||||
Constructor for QgsProviderSublayerTask, which retrieves sublayer details for the
|
Constructor for QgsProviderSublayerTask, which retrieves sublayer details for the
|
||||||
specified ``uri``.
|
specified ``uri``.
|
||||||
|
|||||||
@ -163,7 +163,7 @@ QgsProviderSublayersDialog::QgsProviderSublayersDialog( const QString &uri, cons
|
|||||||
if ( QgsProviderUtils::sublayerDetailsAreIncomplete( initialDetails ) )
|
if ( QgsProviderUtils::sublayerDetailsAreIncomplete( initialDetails ) )
|
||||||
{
|
{
|
||||||
// initial details are incomplete, so fire up a task in the background to fully populate the model...
|
// initial details are incomplete, so fire up a task in the background to fully populate the model...
|
||||||
mTask = new QgsProviderSublayerTask( uri );
|
mTask = new QgsProviderSublayerTask( uri, true );
|
||||||
connect( mTask.data(), &QgsProviderSublayerTask::taskCompleted, this, [ = ]
|
connect( mTask.data(), &QgsProviderSublayerTask::taskCompleted, this, [ = ]
|
||||||
{
|
{
|
||||||
QList< QgsProviderSublayerDetails > res = mTask->results();
|
QList< QgsProviderSublayerDetails > res = mTask->results();
|
||||||
|
|||||||
@ -21,9 +21,10 @@
|
|||||||
#include "qgsprovidersublayerdetails.h"
|
#include "qgsprovidersublayerdetails.h"
|
||||||
#include "qgsreadwritelocker.h"
|
#include "qgsreadwritelocker.h"
|
||||||
|
|
||||||
QgsProviderSublayerTask::QgsProviderSublayerTask( const QString &uri )
|
QgsProviderSublayerTask::QgsProviderSublayerTask( const QString &uri, bool includeSystemTables )
|
||||||
: QgsTask( tr( "Retrieving layers" ), QgsTask::CanCancel | QgsTask::CancelWithoutPrompt )
|
: QgsTask( tr( "Retrieving layers" ), QgsTask::CanCancel | QgsTask::CancelWithoutPrompt )
|
||||||
, mUri( uri )
|
, mUri( uri )
|
||||||
|
, mIncludeSystemTables( includeSystemTables )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,7 +40,11 @@ bool QgsProviderSublayerTask::run()
|
|||||||
{
|
{
|
||||||
mFeedback = std::make_unique< QgsFeedback >();
|
mFeedback = std::make_unique< QgsFeedback >();
|
||||||
|
|
||||||
const QList<QgsProviderSublayerDetails> res = QgsProviderRegistry::instance()->querySublayers( mUri, Qgis::SublayerQueryFlag::ResolveGeometryType | Qgis::SublayerQueryFlag::CountFeatures, mFeedback.get() );
|
Qgis::SublayerQueryFlags flags = Qgis::SublayerQueryFlag::ResolveGeometryType | Qgis::SublayerQueryFlag::CountFeatures;
|
||||||
|
if ( mIncludeSystemTables )
|
||||||
|
flags |= Qgis::SublayerQueryFlag::IncludeSystemTables;
|
||||||
|
|
||||||
|
const QList<QgsProviderSublayerDetails> res = QgsProviderRegistry::instance()->querySublayers( mUri, flags, mFeedback.get() );
|
||||||
|
|
||||||
const QgsReadWriteLocker locker( mLock, QgsReadWriteLocker::Write );
|
const QgsReadWriteLocker locker( mLock, QgsReadWriteLocker::Write );
|
||||||
mResults = res;
|
mResults = res;
|
||||||
|
|||||||
@ -53,7 +53,7 @@ class CORE_EXPORT QgsProviderSublayerTask : public QgsTask
|
|||||||
* Constructor for QgsProviderSublayerTask, which retrieves sublayer details for the
|
* Constructor for QgsProviderSublayerTask, which retrieves sublayer details for the
|
||||||
* specified \a uri.
|
* specified \a uri.
|
||||||
*/
|
*/
|
||||||
QgsProviderSublayerTask( const QString &uri );
|
QgsProviderSublayerTask( const QString &uri, bool includeSystemTables );
|
||||||
|
|
||||||
~QgsProviderSublayerTask() override;
|
~QgsProviderSublayerTask() override;
|
||||||
|
|
||||||
@ -72,6 +72,8 @@ class CORE_EXPORT QgsProviderSublayerTask : public QgsTask
|
|||||||
|
|
||||||
QString mUri;
|
QString mUri;
|
||||||
|
|
||||||
|
bool mIncludeSystemTables = false;
|
||||||
|
|
||||||
std::unique_ptr< QgsFeedback > mFeedback;
|
std::unique_ptr< QgsFeedback > mFeedback;
|
||||||
|
|
||||||
QList<QgsProviderSublayerDetails> mResults;
|
QList<QgsProviderSublayerDetails> mResults;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user