Skip to content

Commit f1a15e3

Browse files
committedJul 6, 2016
[oracle] Fix missing items in oracle connections in browser
On behalf of Faunalia, sponsored by ENEL
1 parent a31a1d3 commit f1a15e3

File tree

3 files changed

+27
-7
lines changed

3 files changed

+27
-7
lines changed
 

‎src/core/qgsdataitem.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,8 @@ void QgsDataItem::setState( State state )
668668
mPopulated = state == Populated;
669669

670670
emit stateChanged( this, oldState );
671+
if ( state == Populated )
672+
emitDataChanged();
671673
}
672674

673675
// ---------------------------------------------------------------------

‎src/providers/oracle/qgsoracledataitems.cpp

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ QGISEXTERN bool deleteLayer( const QString& uri, QString& errCause );
3030
// ---------------------------------------------------------------------------
3131
QgsOracleConnectionItem::QgsOracleConnectionItem( QgsDataItem* parent, QString name, QString path )
3232
: QgsDataCollectionItem( parent, name, path )
33-
, mColumnTypeThread( 0 )
33+
, mColumnTypeThread( nullptr )
3434
{
3535
mIconName = "mIconConnect.png";
3636
}
@@ -47,14 +47,12 @@ void QgsOracleConnectionItem::stop()
4747
mColumnTypeThread->stop();
4848
mColumnTypeThread->wait();
4949
delete mColumnTypeThread;
50-
mColumnTypeThread = 0;
50+
mColumnTypeThread = nullptr;
5151
}
5252
}
5353

5454
void QgsOracleConnectionItem::refresh()
5555
{
56-
QApplication::setOverrideCursor( Qt::WaitCursor );
57-
5856
stop();
5957

6058
Q_FOREACH ( QgsDataItem *child, mChildren )
@@ -66,17 +64,28 @@ void QgsOracleConnectionItem::refresh()
6664
{
6765
addChildItem( item, true );
6866
}
67+
}
6968

70-
QApplication::restoreOverrideCursor();
69+
void QgsOracleConnectionItem::setAllAsPopulated()
70+
{
71+
Q_FOREACH ( QgsDataItem *child, mChildren )
72+
{
73+
child->setState( Populated );
74+
}
75+
setState( Populated );
7176
}
7277

7378
QVector<QgsDataItem*> QgsOracleConnectionItem::createChildren()
7479
{
80+
setState( Populating );
7581

7682
mOwnerMap.clear();
7783

7884
stop();
7985

86+
if ( deferredDelete() )
87+
return QVector<QgsDataItem*>();
88+
8089
if ( !mColumnTypeThread )
8190
{
8291
mColumnTypeThread = new QgsOracleColumnTypeThread( mName,
@@ -98,21 +107,26 @@ QVector<QgsDataItem*> QgsOracleConnectionItem::createChildren()
98107
}
99108

100109
if ( mColumnTypeThread )
110+
{
101111
mColumnTypeThread->start();
112+
}
113+
else
114+
{
115+
setAllAsPopulated();
116+
}
102117

103118
return QVector<QgsDataItem*>();
104119
}
105120

106121
void QgsOracleConnectionItem::threadStarted()
107122
{
108123
QgsDebugMsgLevel( "Entering.", 3 );
109-
qApp->setOverrideCursor( Qt::BusyCursor );
110124
}
111125

112126
void QgsOracleConnectionItem::threadFinished()
113127
{
114128
QgsDebugMsgLevel( "Entering.", 3 );
115-
qApp->restoreOverrideCursor();
129+
setAllAsPopulated();
116130
}
117131

118132
void QgsOracleConnectionItem::setLayerType( QgsOracleLayerProperty layerProperty )
@@ -132,6 +146,7 @@ void QgsOracleConnectionItem::setLayerType( QgsOracleLayerProperty layerProperty
132146
if ( !ownerItem )
133147
{
134148
ownerItem = new QgsOracleOwnerItem( this, layerProperty.ownerName, mPath + "/" + layerProperty.ownerName );
149+
ownerItem->setState( Populating );
135150
QgsDebugMsgLevel( "add owner item: " + layerProperty.ownerName, 3 );
136151
addChildItem( ownerItem, true );
137152
mOwnerMap[ layerProperty.ownerName ] = ownerItem;
@@ -370,6 +385,8 @@ QgsOracleOwnerItem::QgsOracleOwnerItem( QgsDataItem* parent, QString name, QStri
370385
: QgsDataCollectionItem( parent, name, path )
371386
{
372387
mIconName = "mIconDbOwner.png";
388+
//not fertile, since children are created by QgsOracleConnectionItem
389+
mCapabilities &= ~( Fertile );
373390
}
374391

375392
QVector<QgsDataItem*> QgsOracleOwnerItem::createChildren()

‎src/providers/oracle/qgsoracledataitems.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ class QgsOracleConnectionItem : public QgsDataCollectionItem
8585
void stop();
8686
QMap<QString, QgsOracleOwnerItem * > mOwnerMap;
8787
QgsOracleColumnTypeThread *mColumnTypeThread;
88+
void setAllAsPopulated();
8889
};
8990

9091
class QgsOracleOwnerItem : public QgsDataCollectionItem

0 commit comments

Comments
 (0)
Please sign in to comment.