@@ -30,7 +30,7 @@ QGISEXTERN bool deleteLayer( const QString& uri, QString& errCause );
30
30
// ---------------------------------------------------------------------------
31
31
QgsOracleConnectionItem::QgsOracleConnectionItem ( QgsDataItem* parent, QString name, QString path )
32
32
: QgsDataCollectionItem( parent, name, path )
33
- , mColumnTypeThread( 0 )
33
+ , mColumnTypeThread( nullptr )
34
34
{
35
35
mIconName = " mIconConnect.png" ;
36
36
}
@@ -47,14 +47,12 @@ void QgsOracleConnectionItem::stop()
47
47
mColumnTypeThread ->stop ();
48
48
mColumnTypeThread ->wait ();
49
49
delete mColumnTypeThread ;
50
- mColumnTypeThread = 0 ;
50
+ mColumnTypeThread = nullptr ;
51
51
}
52
52
}
53
53
54
54
void QgsOracleConnectionItem::refresh ()
55
55
{
56
- QApplication::setOverrideCursor ( Qt::WaitCursor );
57
-
58
56
stop ();
59
57
60
58
Q_FOREACH ( QgsDataItem *child, mChildren )
@@ -66,17 +64,28 @@ void QgsOracleConnectionItem::refresh()
66
64
{
67
65
addChildItem ( item, true );
68
66
}
67
+ }
69
68
70
- QApplication::restoreOverrideCursor ();
69
+ void QgsOracleConnectionItem::setAllAsPopulated ()
70
+ {
71
+ Q_FOREACH ( QgsDataItem *child, mChildren )
72
+ {
73
+ child->setState ( Populated );
74
+ }
75
+ setState ( Populated );
71
76
}
72
77
73
78
QVector<QgsDataItem*> QgsOracleConnectionItem::createChildren ()
74
79
{
80
+ setState ( Populating );
75
81
76
82
mOwnerMap .clear ();
77
83
78
84
stop ();
79
85
86
+ if ( deferredDelete () )
87
+ return QVector<QgsDataItem*>();
88
+
80
89
if ( !mColumnTypeThread )
81
90
{
82
91
mColumnTypeThread = new QgsOracleColumnTypeThread ( mName ,
@@ -98,21 +107,26 @@ QVector<QgsDataItem*> QgsOracleConnectionItem::createChildren()
98
107
}
99
108
100
109
if ( mColumnTypeThread )
110
+ {
101
111
mColumnTypeThread ->start ();
112
+ }
113
+ else
114
+ {
115
+ setAllAsPopulated ();
116
+ }
102
117
103
118
return QVector<QgsDataItem*>();
104
119
}
105
120
106
121
void QgsOracleConnectionItem::threadStarted ()
107
122
{
108
123
QgsDebugMsgLevel ( " Entering." , 3 );
109
- qApp->setOverrideCursor ( Qt::BusyCursor );
110
124
}
111
125
112
126
void QgsOracleConnectionItem::threadFinished ()
113
127
{
114
128
QgsDebugMsgLevel ( " Entering." , 3 );
115
- qApp-> restoreOverrideCursor ();
129
+ setAllAsPopulated ();
116
130
}
117
131
118
132
void QgsOracleConnectionItem::setLayerType ( QgsOracleLayerProperty layerProperty )
@@ -132,6 +146,7 @@ void QgsOracleConnectionItem::setLayerType( QgsOracleLayerProperty layerProperty
132
146
if ( !ownerItem )
133
147
{
134
148
ownerItem = new QgsOracleOwnerItem ( this , layerProperty.ownerName , mPath + " /" + layerProperty.ownerName );
149
+ ownerItem->setState ( Populating );
135
150
QgsDebugMsgLevel ( " add owner item: " + layerProperty.ownerName , 3 );
136
151
addChildItem ( ownerItem, true );
137
152
mOwnerMap [ layerProperty.ownerName ] = ownerItem;
@@ -370,6 +385,8 @@ QgsOracleOwnerItem::QgsOracleOwnerItem( QgsDataItem* parent, QString name, QStri
370
385
: QgsDataCollectionItem( parent, name, path )
371
386
{
372
387
mIconName = " mIconDbOwner.png" ;
388
+ // not fertile, since children are created by QgsOracleConnectionItem
389
+ mCapabilities &= ~( Fertile );
373
390
}
374
391
375
392
QVector<QgsDataItem*> QgsOracleOwnerItem::createChildren ()
0 commit comments