22
22
#include " qgsapplication.h"
23
23
#include " qgsmessageoutput.h"
24
24
#include " qgsvectorlayer.h"
25
+ #include " qgsproxyprogresstask.h"
25
26
26
27
#include < QMessageBox>
27
28
#include < QProgressDialog>
@@ -93,6 +94,8 @@ QVector<QgsDataItem *> QgsOracleConnectionItem::createChildren()
93
94
QgsOracleConn::restrictToSchema ( mName ),
94
95
/* useEstimatedMetadata */ true ,
95
96
QgsOracleConn::allowGeometrylessTables ( mName ) );
97
+ mColumnTypeTask = new QgsProxyProgressTask ( tr ( " Scanning tables for %1" ).arg ( mName ) );
98
+ QgsApplication::taskManager ()->addTask ( mColumnTypeTask );
96
99
97
100
connect ( mColumnTypeThread , &QgsOracleColumnTypeThread::setLayerType,
98
101
this , &QgsOracleConnectionItem::setLayerType );
@@ -101,8 +104,11 @@ QVector<QgsDataItem *> QgsOracleConnectionItem::createChildren()
101
104
102
105
if ( QgsOracleRootItem::sMainWindow )
103
106
{
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
+ } );
106
112
connect ( mColumnTypeThread , SIGNAL ( progressMessage ( QString ) ),
107
113
QgsOracleRootItem::sMainWindow , SLOT ( showStatusMessage ( QString ) ) );
108
114
}
@@ -127,6 +133,9 @@ void QgsOracleConnectionItem::threadStarted()
127
133
128
134
void QgsOracleConnectionItem::threadFinished ()
129
135
{
136
+ mColumnTypeTask ->finalize ( true );
137
+ mColumnTypeTask = nullptr ;
138
+
130
139
QgsDebugMsgLevel ( QStringLiteral ( " Entering." ), 3 );
131
140
setAllAsPopulated ();
132
141
}
0 commit comments