Skip to content

Commit fd934d8

Browse files
committedAug 20, 2018
Use a proxy task when scanning for postgres column types
1 parent cea8b55 commit fd934d8

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed
 

‎src/providers/postgres/qgspgsourceselect.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ email : sherman at mrcc.com
2828
#include "qgsvectorlayer.h"
2929
#include "qgscolumntypethread.h"
3030
#include "qgssettings.h"
31+
#include "qgsproxyprogresstask.h"
3132

3233
#include <QFileDialog>
3334
#include <QInputDialog>
@@ -545,13 +546,18 @@ void QgsPgSourceSelect::btnConnect_clicked()
545546
QApplication::setOverrideCursor( Qt::BusyCursor );
546547

547548
mColumnTypeThread = new QgsGeomColumnTypeThread( cmbConnections->currentText(), mUseEstimatedMetadata, cbxAllowGeometrylessTables->isChecked() );
549+
mColumnTypeTask = new QgsProxyProgressTask( tr( "Scanning tables for %1" ).arg( cmbConnections->currentText() ) );
550+
QgsApplication::taskManager()->addTask( mColumnTypeTask );
548551

549552
connect( mColumnTypeThread, &QgsGeomColumnTypeThread::setLayerType,
550553
this, &QgsPgSourceSelect::setLayerType );
551554
connect( mColumnTypeThread, &QThread::finished,
552555
this, &QgsPgSourceSelect::columnThreadFinished );
553556
connect( mColumnTypeThread, &QgsGeomColumnTypeThread::progress,
554-
this, &QgsPgSourceSelect::progress );
557+
mColumnTypeTask, [ = ]( int i, int n )
558+
{
559+
mColumnTypeTask->setProxyProgress( 100.0 * static_cast< double >( i ) / n );
560+
} );
555561
connect( mColumnTypeThread, &QgsGeomColumnTypeThread::progressMessage,
556562
this, &QgsPgSourceSelect::progressMessage );
557563

@@ -572,6 +578,8 @@ void QgsPgSourceSelect::columnThreadFinished()
572578
delete mColumnTypeThread;
573579
mColumnTypeThread = nullptr;
574580
btnConnect->setText( tr( "Connect" ) );
581+
mColumnTypeTask->finalize( true );
582+
mColumnTypeTask = nullptr;
575583

576584
finishList();
577585
}

‎src/providers/postgres/qgspgsourceselect.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class QStringList;
3636
class QgsGeomColumnTypeThread;
3737
class QgisApp;
3838
class QgsPgSourceSelect;
39+
class QgsProxyProgressTask;
3940

4041
class QgsPgSourceSelectDelegate : public QItemDelegate
4142
{
@@ -138,6 +139,8 @@ class QgsPgSourceSelect : public QgsAbstractDataSourceWidget, private Ui::QgsDbS
138139
QStringList mColumnLabels;
139140
// Our thread for doing long running queries
140141
QgsGeomColumnTypeThread *mColumnTypeThread = nullptr;
142+
QgsProxyProgressTask *mColumnTypeTask = nullptr;
143+
141144
QgsDataSourceUri mDataSrcUri;
142145
QStringList mSelectedTables;
143146
bool mUseEstimatedMetadata = false;

0 commit comments

Comments
 (0)
Please sign in to comment.