3030#include < QSettings>
3131
3232QgsBrowserWatcher::QgsBrowserWatcher ( QgsDataItem * item )
33- : mFinished( false )
34- , mItem( item )
33+ : mItem( item )
3534{
36- connect ( &mFutureWatcher , SIGNAL ( finished () ), SLOT ( finished () ) );
3735}
3836
3937QgsBrowserWatcher::~QgsBrowserWatcher ()
4038{
41- mFutureWatcher .cancel ();
42- }
43-
44- void QgsBrowserWatcher::setFuture ( QFuture<QVector <QgsDataItem*> > future )
45- {
46- mFutureWatcher .setFuture ( future );
47- }
48-
49- void QgsBrowserWatcher::finished ()
50- {
51- QgsDebugMsg ( " Entered" );
52- emit finished ( mItem , mFutureWatcher .result () );
53- mFinished = true ;
5439}
5540
5641// sort function for QList<QgsDataItem*>, e.g. sorted/grouped provider listings
@@ -497,7 +482,7 @@ void QgsBrowserModel::fetchMore( const QModelIndex & parent )
497482 QList<QgsDataItem*> itemList;
498483 itemList << item;
499484 QgsBrowserWatcher * watcher = new QgsBrowserWatcher ( item );
500- connect ( watcher, SIGNAL ( finished ( QgsDataItem*, QVector <QgsDataItem*> ) ), SLOT ( childrenCreated ( QgsDataItem*, QVector <QgsDataItem*> ) ) );
485+ connect ( watcher, SIGNAL ( finished () ), SLOT ( childrenCreated () ) );
501486 watcher->setFuture ( QtConcurrent::mapped ( itemList, QgsBrowserModel::createChildren ) );
502487 mWatchers .append ( watcher );
503488 mLoadingMovie .setPaused ( false );
@@ -523,7 +508,7 @@ void QgsBrowserModel::refresh( const QModelIndex& theIndex )
523508 QList<QgsDataItem*> itemList;
524509 itemList << item;
525510 QgsBrowserWatcher * watcher = new QgsBrowserWatcher ( item );
526- connect ( watcher, SIGNAL ( finished ( QgsDataItem*, QVector <QgsDataItem*> ) ), SLOT ( refreshChildrenCreated ( QgsDataItem*, QVector <QgsDataItem*> ) ) );
511+ connect ( watcher, SIGNAL ( finished () ), SLOT ( refreshChildrenCreated () ) );
527512 watcher->setFuture ( QtConcurrent::mapped ( itemList, QgsBrowserModel::createChildren ) );
528513 mWatchers .append ( watcher );
529514 mLoadingMovie .setPaused ( false );
@@ -553,9 +538,14 @@ QVector<QgsDataItem*> QgsBrowserModel::createChildren( QgsDataItem* item )
553538 return children;
554539}
555540
556- void QgsBrowserModel::childrenCreated ( QgsDataItem* item, QVector <QgsDataItem*> children )
541+ void QgsBrowserModel::childrenCreated ()
557542{
558- QgsDebugMsg ( QString ( " children.size() = %1" ).arg ( children.size () ) );
543+ QgsBrowserWatcher *watcher = dynamic_cast <QgsBrowserWatcher *>( sender () );
544+ if ( !watcher )
545+ return ;
546+ QgsDataItem* item = watcher->item ();
547+ QVector <QgsDataItem*> children = watcher->result ();
548+ QgsDebugMsg ( QString ( " path = %1 children.size() = %2" ).arg ( item->path () ).arg ( children.size () ) );
559549 QModelIndex index = findItem ( item );
560550 if ( !index.isValid () ) // check if item still exists
561551 return ;
@@ -564,8 +554,13 @@ void QgsBrowserModel::childrenCreated( QgsDataItem* item, QVector <QgsDataItem*>
564554 emit fetchFinished ( index );
565555}
566556
567- void QgsBrowserModel::refreshChildrenCreated ( QgsDataItem* item, QVector <QgsDataItem*> children )
557+ void QgsBrowserModel::refreshChildrenCreated ()
568558{
559+ QgsBrowserWatcher *watcher = dynamic_cast <QgsBrowserWatcher *>( sender () );
560+ if ( !watcher )
561+ return ;
562+ QgsDataItem* item = watcher->item ();
563+ QVector <QgsDataItem*> children = watcher->result ();
569564 QgsDebugMsg ( QString ( " path = %1 children.size() = %2" ).arg ( item->path () ).arg ( children.size () ) );
570565 QModelIndex index = findItem ( item );
571566 if ( !index.isValid () ) // check if item still exists
0 commit comments