void QgsMeshCalculatorDialog::repopulateTimeCombos() { QgsMeshLayer *layer = meshLayer(); if ( !layer || !layer->dataProvider() ) return; const QgsMeshDataProvider *dp = layer->dataProvider(); // extract all times from all datasets QMap<QString, double> times; for ( int groupIndex = 0; groupIndex < dp->datasetGroupCount(); ++groupIndex ) { for ( int datasetIndex = 0; datasetIndex < dp->datasetCount( groupIndex ); ++datasetIndex ) { const QgsMeshDatasetMetadata meta = dp->datasetMetadata( QgsMeshDatasetIndex( groupIndex, datasetIndex ) ); const double time = meta.time(); const QString timestr = QgsMeshRendererActiveDatasetWidget::formatTime( time ); // the format is "HH:mm:ss" times[timestr] = time; } } // sort by text auto keys = times.keys(); keys.sort(); mStartTimeComboBox->blockSignals( true ); mEndTimeComboBox->blockSignals( true ); mStartTimeComboBox->clear(); mEndTimeComboBox->clear(); // populate combos for ( const QString &key : keys ) { mStartTimeComboBox->addItem( key, times[key] ); mEndTimeComboBox->addItem( key, times[key] ); } mStartTimeComboBox->blockSignals( false ); mEndTimeComboBox->blockSignals( false ); if ( !times.empty() ) { mStartTimeComboBox->setCurrentIndex( 0 ); mEndTimeComboBox->setCurrentIndex( times.size() - 1 ); } }
void QgsMeshRendererActiveDatasetWidget::updateMetadata( QgsMeshDatasetIndex datasetIndex ) { if ( !mMeshLayer || !mMeshLayer->dataProvider() || !datasetIndex.isValid() ) { mActiveDatasetMetadata->setText( tr( "No dataset selected" ) ); } else { QString msg; msg += QStringLiteral( "<table>" ); const QgsMeshDatasetMetadata meta = mMeshLayer->dataProvider()->datasetMetadata( datasetIndex ); msg += QStringLiteral( "<tr><td>%1</td><td>%2</td></tr>" ) .arg( tr( "Is valid" ) ) .arg( meta.isValid() ? tr( "Yes" ) : tr( "No" ) ); msg += QStringLiteral( "<tr><td>%1</td><td>%2</td></tr>" ) .arg( tr( "Time" ) ) .arg( meta.time() ); const QgsMeshDatasetGroupMetadata gmeta = mMeshLayer->dataProvider()->datasetGroupMetadata( datasetIndex ); msg += QStringLiteral( "<tr><td>%1</td><td>%2</td></tr>" ) .arg( tr( "Data Type" ) ) .arg( gmeta.dataType() == QgsMeshDatasetGroupMetadata::DataOnVertices ? tr( "Defined on vertices" ) : tr( "Defined on faces" ) ); msg += QStringLiteral( "<tr><td>%1</td><td>%2</td></tr>" ) .arg( tr( "Is vector" ) ) .arg( gmeta.isVector() ? tr( "Yes" ) : tr( "No" ) ); for ( auto it = gmeta.extraOptions().constBegin(); it != gmeta.extraOptions().constEnd(); ++it ) { msg += QStringLiteral( "<tr><td>%1</td><td>%2</td></tr>" ).arg( it.key() ).arg( it.value() ); } msg += QStringLiteral( "</table>" ); mActiveDatasetMetadata->setText( msg ); } }