Skip to content

Commit 6e9e0e8

Browse files
committed
Use proxy progress task for Oracle db table scan
1 parent aa62f3a commit 6e9e0e8

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

src/providers/oracle/qgsoraclesourceselect.cpp

+12-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ email : jef at norbit dot de
2929
#include "qgsvectorlayer.h"
3030
#include "qgsoraclecolumntypethread.h"
3131
#include "qgssettings.h"
32+
#include "qgsproxyprogresstask.h"
3233

3334
#include <QFileDialog>
3435
#include <QInputDialog>
@@ -516,15 +517,20 @@ void QgsOracleSourceSelect::on_btnConnect_clicked()
516517
QgsOracleConn::restrictToSchema( cmbConnections->currentText() ),
517518
uri.useEstimatedMetadata(),
518519
cbxAllowGeometrylessTables->isChecked() );
520+
mColumnTypeTask = new QgsProxyProgressTask( tr( "Scanning tables for %1" ).arg( cmbConnections->currentText() ) );
521+
QgsApplication::taskManager()->addTask( mColumnTypeTask );
519522

520523
connect( mColumnTypeThread, &QgsOracleColumnTypeThread::setLayerType,
521524
this, &QgsOracleSourceSelect::setLayerType );
522525
connect( mColumnTypeThread, &QThread::finished,
523526
this, &QgsOracleSourceSelect::columnThreadFinished );
524527
connect( mColumnTypeThread, &QgsOracleColumnTypeThread::progress,
525-
this, &QgsOracleSourceSelect::progress );
528+
mColumnTypeTask, [ = ]( int i, int n )
529+
{
530+
mColumnTypeTask->setProxyProgress( 100.0 * static_cast< double >( i ) / n );
531+
} );
526532
connect( mColumnTypeThread, &QgsOracleColumnTypeThread::progressMessage,
527-
this, &QgsOracleSourceSelect::progressMessage );
533+
this, &QgsAbstractDataSourceWidget::progressMessage );
528534

529535
btnConnect->setText( tr( "Stop" ) );
530536
mColumnTypeThread->start();
@@ -565,6 +571,10 @@ void QgsOracleSourceSelect::columnThreadFinished()
565571

566572
delete mColumnTypeThread;
567573
mColumnTypeThread = nullptr;
574+
575+
mColumnTypeTask->finalize( true );
576+
mColumnTypeTask = nullptr;
577+
568578
btnConnect->setText( tr( "Connect" ) );
569579

570580
finishList();

src/providers/oracle/qgsoraclesourceselect.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class QStringList;
3636
class QgsOracleColumnTypeThread;
3737
class QgisApp;
3838
class QgsOracleSourceSelect;
39+
class QgsProxyProgressTask;
3940

4041
class QgsOracleSourceSelectDelegate : public QItemDelegate
4142
{
@@ -98,8 +99,6 @@ class QgsOracleSourceSelect : public QgsAbstractDataSourceWidget, private Ui::Qg
9899

99100
signals:
100101
void addDatabaseLayers( QStringList const &layerPathList, QString const &providerKey );
101-
void progress( int, int );
102-
void progressMessage( QString );
103102

104103
public slots:
105104
//! Determines the tables the user selected and closes the dialog
@@ -158,6 +157,7 @@ class QgsOracleSourceSelect : public QgsAbstractDataSourceWidget, private Ui::Qg
158157
QStringList mColumnLabels;
159158
// Our thread for doing long running queries
160159
QgsOracleColumnTypeThread *mColumnTypeThread = nullptr;
160+
QgsProxyProgressTask *mColumnTypeTask = nullptr;
161161
QgsDataSourceUri mConnInfo;
162162
QStringList mSelectedTables;
163163
// Storage for the range of layer type icons

0 commit comments

Comments
 (0)