Navigation Menu

Skip to content

Commit

Permalink
introduce private enum to strore field type
Browse files Browse the repository at this point in the history
  • Loading branch information
alexbruy committed May 5, 2017
1 parent c151ad0 commit 68872e5
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 29 deletions.
62 changes: 34 additions & 28 deletions src/app/qgsstatisticalsummarydockwidget.cpp
Expand Up @@ -96,7 +96,7 @@ QgsStatisticalSummaryDockWidget::QgsStatisticalSummaryDockWidget( QWidget *paren
mStatisticsMenu = new QMenu( mOptionsToolButton );
mOptionsToolButton->setMenu( mStatisticsMenu );

mFieldType = QVariant::Int;
mFieldType = DataType::Numeric;
refreshStatisticsMenu();
}

Expand All @@ -114,11 +114,10 @@ void QgsStatisticalSummaryDockWidget::refreshStatistics()
}

// determine field type
mFieldType = QVariant::Double;
mFieldType = DataType::Numeric;
if ( !mFieldExpressionWidget->isExpression() )
{
QString field = mFieldExpressionWidget->currentField();
mFieldType = mLayer->fields().field( mLayer->fields().lookupField( field ) ).type();
mFieldType = fieldType( mFieldExpressionWidget->currentField() );
}

refreshStatisticsMenu();
Expand All @@ -127,18 +126,13 @@ void QgsStatisticalSummaryDockWidget::refreshStatistics()

switch ( mFieldType )
{
case QVariant::Int:
case QVariant::UInt:
case QVariant::Double:
case QVariant::LongLong:
case QVariant::ULongLong:
case DataType::Numeric:
updateNumericStatistics( selectedOnly );
break;
case QVariant::String:
case DataType::String:
updateStringStatistics( selectedOnly );
break;
case QVariant::Date:
case QVariant::DateTime:
case DataType::DateTime:
updateDateTimeStatistics( selectedOnly );
break;
default:
Expand Down Expand Up @@ -275,18 +269,13 @@ void QgsStatisticalSummaryDockWidget::statActionTriggered( bool checked )
QString settingsKey;
switch ( mFieldType )
{
case QVariant::Int:
case QVariant::UInt:
case QVariant::Double:
case QVariant::LongLong:
case QVariant::ULongLong:
case DataType::Numeric:
settingsKey = QStringLiteral( "numeric" );
break;
case QVariant::String:
case DataType::String:
settingsKey = QStringLiteral( "string" );
break;
case QVariant::Date:
case QVariant::DateTime:
case DataType::DateTime:
settingsKey = QStringLiteral( "datetime" );
break;
default:
Expand Down Expand Up @@ -392,11 +381,7 @@ void QgsStatisticalSummaryDockWidget::refreshStatisticsMenu()
QgsSettings settings;
switch ( mFieldType )
{
case QVariant::Int:
case QVariant::UInt:
case QVariant::Double:
case QVariant::LongLong:
case QVariant::ULongLong:
case DataType::Numeric:
{
Q_FOREACH ( QgsStatisticalSummary::Statistic stat, sDisplayStats )
{
Expand All @@ -422,7 +407,7 @@ void QgsStatisticalSummaryDockWidget::refreshStatisticsMenu()

break;
}
case QVariant::String:
case DataType::String:
{
Q_FOREACH ( QgsStringStatisticalSummary::Statistic stat, sDisplayStringStats )
{
Expand All @@ -437,8 +422,7 @@ void QgsStatisticalSummaryDockWidget::refreshStatisticsMenu()
}
break;
}
case QVariant::Date:
case QVariant::DateTime:
case DataType::DateTime:
{
Q_FOREACH ( QgsDateTimeStatisticalSummary::Statistic stat, sDisplayDateTimeStats )
{
Expand All @@ -457,3 +441,25 @@ void QgsStatisticalSummaryDockWidget::refreshStatisticsMenu()
break;
}
}

QgsStatisticalSummaryDockWidget::DataType QgsStatisticalSummaryDockWidget::fieldType( const QString &fieldName )
{
QgsField field = mLayer->fields().field( mLayer->fields().lookupField( fieldName ) );
if ( field.isNumeric() )
{
return DataType::Numeric;
}

switch ( field.type() )
{
case QVariant::String:
return DataType::String;
case QVariant::Date:
case QVariant::DateTime:
return DataType::DateTime;
default:
break;
}

return DataType::Numeric;
}
11 changes: 10 additions & 1 deletion src/app/qgsstatisticalsummarydockwidget.h
Expand Up @@ -62,6 +62,14 @@ class APP_EXPORT QgsStatisticalSummaryDockWidget : public QgsDockWidget, private

private:

//! Enumeration of supported statistics types
enum DataType
{
Numeric, //!< Numeric fields: int, double, etc
String, //!< String fields
DateTime //!< Date and DateTime fields
};

QgsVectorLayer *mLayer = nullptr;

QMap< int, QAction * > mStatsActions;
Expand All @@ -77,9 +85,10 @@ class APP_EXPORT QgsStatisticalSummaryDockWidget : public QgsDockWidget, private
QgsExpressionContext createExpressionContext() const override;

void refreshStatisticsMenu();
DataType fieldType( const QString &fieldName );

QMenu *mStatisticsMenu = nullptr;
QVariant::Type mFieldType;
DataType mFieldType;
};

#endif // QGSSTATISTICALSUMMARYDOCKWIDGET_H

0 comments on commit 68872e5

Please sign in to comment.