Skip to content

Commit 6aa84c9

Browse files
committed
QgsBrowserWatcher made QFutureWatcher descendant
1 parent 3a2e7a2 commit 6aa84c9

File tree

2 files changed

+19
-31
lines changed

2 files changed

+19
-31
lines changed

src/core/qgsbrowsermodel.cpp

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,27 +30,12 @@
3030
#include <QSettings>
3131

3232
QgsBrowserWatcher::QgsBrowserWatcher( QgsDataItem * item )
33-
: mFinished( false )
34-
, mItem( item )
33+
: mItem( item )
3534
{
36-
connect( &mFutureWatcher, SIGNAL( finished() ), SLOT( finished() ) );
3735
}
3836

3937
QgsBrowserWatcher::~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

src/core/qgsbrowsermodel.h

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,21 @@
2424

2525
#include "qgsdataitem.h"
2626

27-
class CORE_EXPORT QgsBrowserWatcher : public QObject
27+
class CORE_EXPORT QgsBrowserWatcher : public QFutureWatcher<QVector <QgsDataItem*> >
2828
{
2929
Q_OBJECT
3030

3131
public:
3232
QgsBrowserWatcher( QgsDataItem * item );
3333
~QgsBrowserWatcher();
3434

35-
void setFuture( QFuture<QVector <QgsDataItem*> > future );
36-
bool isFinished() { return mFinished; }
3735
QgsDataItem* item() const { return mItem; }
3836

3937
signals:
4038
void finished( QgsDataItem* item, QVector <QgsDataItem*> items );
4139

42-
public slots:
43-
void finished();
44-
4540
private:
46-
bool mFinished;
4741
QgsDataItem *mItem;
48-
QFutureWatcher<QVector <QgsDataItem*> > mFutureWatcher;
4942
};
5043

5144
class CORE_EXPORT QgsBrowserModel : public QAbstractItemModel
@@ -139,8 +132,8 @@ class CORE_EXPORT QgsBrowserModel : public QAbstractItemModel
139132
void removeFavourite( const QModelIndex &index );
140133

141134
void updateProjectHome();
142-
void childrenCreated( QgsDataItem* item, QVector <QgsDataItem*> items );
143-
void refreshChildrenCreated( QgsDataItem* item, QVector <QgsDataItem*> items );
135+
void childrenCreated();
136+
void refreshChildrenCreated();
144137
void loadingFrameChanged();
145138

146139
protected:

0 commit comments

Comments
 (0)