@@ -27,7 +27,7 @@ QgsMeshRendererActiveDatasetWidget::QgsMeshRendererActiveDatasetWidget( QWidget
27
27
{
28
28
setupUi ( this );
29
29
30
- connect ( mTimeComboBox , qgis::overload<int >::of ( &QComboBox::currentIndexChanged ), this , &QgsMeshRendererActiveDatasetWidget::onActiveDatasetChanged );
30
+ connect ( mTimeComboBox , qgis::overload<int >::of ( &QComboBox::currentIndexChanged ), this , &QgsMeshRendererActiveDatasetWidget::onActiveTimeChanged );
31
31
connect ( mDatasetSlider , &QSlider::valueChanged, mTimeComboBox , &QComboBox::setCurrentIndex );
32
32
33
33
connect ( mFirstDatasetButton , &QToolButton::clicked, this , &QgsMeshRendererActiveDatasetWidget::onFirstTimeClicked );
@@ -69,9 +69,10 @@ QgsMeshDatasetIndex QgsMeshRendererActiveDatasetWidget::activeVectorDataset() co
69
69
70
70
void QgsMeshRendererActiveDatasetWidget::setTimeRange ()
71
71
{
72
- int datasetCount = 1 ;
72
+ // figure out which dataset group contains the greatest number of datasets.
73
+ // this group will be used to initialize the time combo box.
74
+ int datasetCount = 0 ;
73
75
int groupWithMaximumDatasets = -1 ;
74
-
75
76
if ( mMeshLayer && mMeshLayer ->dataProvider () )
76
77
{
77
78
for ( int i = 0 ; i < mMeshLayer ->dataProvider ()->datasetGroupCount (); ++i )
@@ -120,8 +121,7 @@ void QgsMeshRendererActiveDatasetWidget::onActiveScalarGroupChanged( int groupIn
120
121
mActiveScalarDatasetGroup = groupIndex;
121
122
122
123
// keep the same timestep if possible
123
- int val = mTimeComboBox ->currentIndex ();
124
- mTimeComboBox ->setCurrentIndex ( val );
124
+ onActiveTimeChanged ( mTimeComboBox ->currentIndex () );
125
125
emit activeScalarGroupChanged ( mActiveScalarDatasetGroup );
126
126
}
127
127
@@ -133,12 +133,11 @@ void QgsMeshRendererActiveDatasetWidget::onActiveVectorGroupChanged( int groupIn
133
133
mActiveVectorDatasetGroup = groupIndex;
134
134
135
135
// keep the same timestep if possible
136
- int val = mTimeComboBox ->currentIndex ();
137
- mTimeComboBox ->setCurrentIndex ( val );
136
+ onActiveTimeChanged ( mTimeComboBox ->currentIndex () );
138
137
emit activeVectorGroupChanged ( mActiveVectorDatasetGroup );
139
138
}
140
139
141
- void QgsMeshRendererActiveDatasetWidget::onActiveDatasetChanged ( int value )
140
+ void QgsMeshRendererActiveDatasetWidget::onActiveTimeChanged ( int value )
142
141
{
143
142
if ( !mMeshLayer || !mMeshLayer ->dataProvider () )
144
143
return ;
@@ -153,7 +152,6 @@ void QgsMeshRendererActiveDatasetWidget::onActiveDatasetChanged( int value )
153
152
{
154
153
mActiveScalarDataset = activeScalarDataset;
155
154
changed = true ;
156
- emit activeScalarDatasetChanged ( mActiveScalarDataset );
157
155
}
158
156
159
157
QgsMeshDatasetIndex activeVectorDataset (
@@ -164,7 +162,6 @@ void QgsMeshRendererActiveDatasetWidget::onActiveDatasetChanged( int value )
164
162
{
165
163
mActiveVectorDataset = activeVectorDataset;
166
164
changed = true ;
167
- emit activeVectorDatasetChanged ( mActiveVectorDataset );
168
165
}
169
166
170
167
if ( changed )
@@ -251,14 +248,9 @@ void QgsMeshRendererActiveDatasetWidget::updateMetadata()
251
248
QString QgsMeshRendererActiveDatasetWidget::timeToString ( double val )
252
249
{
253
250
// time val should be in hours
254
- #if QT_VERSION >= 0x050800
255
- qint64 seconds = static_cast <qint64>( val * 3600.0 );
256
- return QDateTime::fromSecsSinceEpoch ( seconds ).toString ( " hh:mm:ss" );
257
- #else
258
- QDateTime t;
259
- t.setTime_t ( static_cast <uint>( val * 3600.0 ) );
260
- return t.toString ( " hh:mm:ss" );
261
- #endif
251
+ int seconds = static_cast <int >( qgsRound ( val * 3600.0 , 0 ) );
252
+ QTime t = QTime ( 0 , 0 ).addSecs ( seconds );
253
+ return t.toString (); // the format is "HH:mm:ss"
262
254
}
263
255
264
256
QString QgsMeshRendererActiveDatasetWidget::metadata ( QgsMeshDatasetIndex datasetIndex )
0 commit comments