From 5d078ec22267a50aacd6a4bfc209a52bb8ec13b4 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Wed, 8 Aug 2018 08:12:55 +1000 Subject: [PATCH] Progress task on project load --- src/app/qgisapp.cpp | 18 +++++++++++++++++- src/app/qgisapp.h | 4 +++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 8486cd76123..04621818dac 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -257,6 +257,7 @@ Q_GUI_EXPORT extern int qt_defaultDpiX(); #include "qgsprojectstorageregistry.h" #include "qgsproviderregistry.h" #include "qgspythonrunner.h" +#include "qgsproxyprogresstask.h" #include "qgsquerybuilder.h" #include "qgsrastercalcdialog.h" #include "qgsrasterfilewriter.h" @@ -3378,7 +3379,22 @@ void QgisApp::setupConnections() connect( QgsProject::instance(), &QgsProject::oldProjectVersionWarning, this, &QgisApp::oldProjectVersionWarning ); connect( QgsProject::instance(), &QgsProject::layerLoaded, - this, &QgisApp::showProgress ); + this, [this]( int i, int n ) + { + if ( !mProjectLoadingProxyTask ) + { + const QString name = QgsProject::instance()->title().isEmpty() ? QgsProject::instance()->fileName() : QgsProject::instance()->title(); + mProjectLoadingProxyTask = new QgsProxyProgressTask( tr( "Loading “%1”" ).arg( name ) ); + QgsApplication::taskManager()->addTask( mProjectLoadingProxyTask ); + } + + mProjectLoadingProxyTask->setProxyProgress( 100.0 * static_cast< double >( i ) / n ); + if ( i == n ) + { + mProjectLoadingProxyTask->finalize( true ); + mProjectLoadingProxyTask = nullptr; + } + } ); connect( QgsProject::instance(), &QgsProject::loadingLayer, this, &QgisApp::showStatusMessage ); connect( QgsProject::instance(), &QgsProject::loadingLayerMessageReceived, diff --git a/src/app/qgisapp.h b/src/app/qgisapp.h index f8017ce3f5c..d68e61d6eb2 100644 --- a/src/app/qgisapp.h +++ b/src/app/qgisapp.h @@ -133,7 +133,7 @@ class QgsDataSourceManagerDialog; class QgsBrowserModel; class QgsGeoCmsProviderRegistry; class QgsLayoutQptDropHandler; - +class QgsProxyProgressTask; #include #include @@ -2283,6 +2283,8 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow QMap< QString, QString > mProjectPropertiesPagesMap; QMap< QString, QString > mSettingPagesMap; + QgsProxyProgressTask *mProjectLoadingProxyTask = nullptr; + friend class TestQgisAppPython; };