Skip to content

Commit 48bf627

Browse files
committed
Use proxy task for oracle browser table scanning
1 parent 485803d commit 48bf627

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/providers/oracle/qgsoracledataitems.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "qgsapplication.h"
2323
#include "qgsmessageoutput.h"
2424
#include "qgsvectorlayer.h"
25+
#include "qgsproxyprogresstask.h"
2526

2627
#include <QMessageBox>
2728
#include <QProgressDialog>
@@ -93,6 +94,8 @@ QVector<QgsDataItem *> QgsOracleConnectionItem::createChildren()
9394
QgsOracleConn::restrictToSchema( mName ),
9495
/* useEstimatedMetadata */ true,
9596
QgsOracleConn::allowGeometrylessTables( mName ) );
97+
mColumnTypeTask = new QgsProxyProgressTask( tr( "Scanning tables for %1" ).arg( mName ) );
98+
QgsApplication::taskManager()->addTask( mColumnTypeTask );
9699

97100
connect( mColumnTypeThread, &QgsOracleColumnTypeThread::setLayerType,
98101
this, &QgsOracleConnectionItem::setLayerType );
@@ -101,8 +104,11 @@ QVector<QgsDataItem *> QgsOracleConnectionItem::createChildren()
101104

102105
if ( QgsOracleRootItem::sMainWindow )
103106
{
104-
connect( mColumnTypeThread, SIGNAL( progress( int, int ) ),
105-
QgsOracleRootItem::sMainWindow, SLOT( showProgress( int, int ) ) );
107+
connect( mColumnTypeThread, &QgsOracleColumnTypeThread::progress,
108+
mColumnTypeTask, [ = ]( int i, int n )
109+
{
110+
mColumnTypeTask->setProxyProgress( 100.0 * static_cast< double >( i ) / n );
111+
} );
106112
connect( mColumnTypeThread, SIGNAL( progressMessage( QString ) ),
107113
QgsOracleRootItem::sMainWindow, SLOT( showStatusMessage( QString ) ) );
108114
}
@@ -127,6 +133,9 @@ void QgsOracleConnectionItem::threadStarted()
127133

128134
void QgsOracleConnectionItem::threadFinished()
129135
{
136+
mColumnTypeTask->finalize( true );
137+
mColumnTypeTask = nullptr;
138+
130139
QgsDebugMsgLevel( QStringLiteral( "Entering." ), 3 );
131140
setAllAsPopulated();
132141
}

src/providers/oracle/qgsoracledataitems.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class QgsOracleRootItem;
3131
class QgsOracleConnectionItem;
3232
class QgsOracleOwnerItem;
3333
class QgsOracleLayerItem;
34+
class QgsProxyProgressTask;
3435

3536
class QgsOracleRootItem : public QgsDataCollectionItem
3637
{
@@ -86,6 +87,7 @@ class QgsOracleConnectionItem : public QgsDataCollectionItem
8687
void stop();
8788
QMap<QString, QgsOracleOwnerItem * > mOwnerMap;
8889
QgsOracleColumnTypeThread *mColumnTypeThread = nullptr;
90+
QgsProxyProgressTask *mColumnTypeTask = nullptr;
8991
void setAllAsPopulated();
9092
};
9193

0 commit comments

Comments
 (0)