Do not refresh stats when opening the stat summary field combo box

Without this change, stats are calculated when users simply
open the combo box to select a new field. With large datasets,
it freezes QGIS for a long time, and the combo box end up
never opening.
This commit is contained in:
nirvn 2018-02-05 12:39:00 +07:00 committed by Mathieu Pellerin
parent 7bf0a7f714
commit 3883547da4
2 changed files with 13 additions and 1 deletions

View File

@ -88,7 +88,7 @@ QgsStatisticalSummaryDockWidget::QgsStatisticalSummaryDockWidget( QWidget *paren
mFieldExpressionWidget->setLayer( mLayerComboBox->layer( 0 ) );
connect( mLayerComboBox, &QgsMapLayerComboBox::layerChanged, this, &QgsStatisticalSummaryDockWidget::layerChanged );
connect( mFieldExpressionWidget, static_cast<void ( QgsFieldExpressionWidget::* )( const QString & )>( &QgsFieldExpressionWidget::fieldChanged ), this, &QgsStatisticalSummaryDockWidget::refreshStatistics );
connect( mFieldExpressionWidget, static_cast<void ( QgsFieldExpressionWidget::* )( const QString & )>( &QgsFieldExpressionWidget::fieldChanged ), this, &QgsStatisticalSummaryDockWidget::fieldChanged );
connect( mSelectedOnlyCheckBox, &QAbstractButton::toggled, this, &QgsStatisticalSummaryDockWidget::refreshStatistics );
connect( mButtonRefresh, &QAbstractButton::clicked, this, &QgsStatisticalSummaryDockWidget::refreshStatistics );
connect( QgsProject::instance(), static_cast<void ( QgsProject::* )( const QStringList & )>( &QgsProject::layersWillBeRemoved ), this, &QgsStatisticalSummaryDockWidget::layersRemoved );
@ -101,6 +101,15 @@ QgsStatisticalSummaryDockWidget::QgsStatisticalSummaryDockWidget( QWidget *paren
refreshStatisticsMenu();
}
void QgsStatisticalSummaryDockWidget::fieldChanged()
{
if ( mFieldExpressionWidget->expression() != mExpression )
{
mExpression = mFieldExpressionWidget->expression();
refreshStatistics();
}
}
void QgsStatisticalSummaryDockWidget::refreshStatistics()
{
if ( !mLayer || ( mFieldExpressionWidget->isExpression() && !mFieldExpressionWidget->isValidExpression() ) )

View File

@ -58,6 +58,7 @@ class APP_EXPORT QgsStatisticalSummaryDockWidget : public QgsDockWidget, private
private slots:
void layerChanged( QgsMapLayer *layer );
void fieldChanged();
void statActionTriggered( bool checked );
void layersRemoved( const QStringList &layers );
void layerSelectionChanged();
@ -92,6 +93,8 @@ class APP_EXPORT QgsStatisticalSummaryDockWidget : public QgsDockWidget, private
QMenu *mStatisticsMenu = nullptr;
DataType mFieldType;
DataType mPreviousFieldType;
QString mExpression;
};
#endif // QGSSTATISTICALSUMMARYDOCKWIDGET_H