Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[temporal] On project load, restore the user-set temporal controller …
…extent
  • Loading branch information
nirvn authored and nyalldawson committed May 14, 2020
1 parent 838faf8 commit 31a6467
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 5 deletions.
43 changes: 38 additions & 5 deletions src/gui/qgstemporalcontrollerwidget.cpp
Expand Up @@ -47,8 +47,8 @@ QgsTemporalControllerWidget::QgsTemporalControllerWidget( QWidget *parent )
mStopButton->setChecked( state == QgsTemporalNavigationObject::Idle );
} );

connect( mStartDateTime, &QDateTimeEdit::dateTimeChanged, this, &QgsTemporalControllerWidget::updateTemporalExtent );
connect( mEndDateTime, &QDateTimeEdit::dateTimeChanged, this, &QgsTemporalControllerWidget::updateTemporalExtent );
connect( mStartDateTime, &QDateTimeEdit::dateTimeChanged, this, &QgsTemporalControllerWidget::startEndDateTime_changed );
connect( mEndDateTime, &QDateTimeEdit::dateTimeChanged, this, &QgsTemporalControllerWidget::startEndDateTime_changed );
connect( mSpinBox, qgis::overload<double>::of( &QDoubleSpinBox::valueChanged ), this, &QgsTemporalControllerWidget::updateFrameDuration );
connect( mTimeStepsComboBox, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, &QgsTemporalControllerWidget::updateFrameDuration );
connect( mSlider, &QSlider::valueChanged, this, &QgsTemporalControllerWidget::timeSlider_valueChanged );
Expand All @@ -58,7 +58,7 @@ QgsTemporalControllerWidget::QgsTemporalControllerWidget( QWidget *parent )
connect( mNavigationObject, &QgsTemporalNavigationObject::updateTemporalRange, this, &QgsTemporalControllerWidget::updateSlider );

connect( mSettings, &QPushButton::clicked, this, &QgsTemporalControllerWidget::settings_clicked );
connect( mSetToProjectTimeButton, &QPushButton::clicked, this, &QgsTemporalControllerWidget::setDatesToProjectTime );
connect( mSetToProjectTimeButton, &QPushButton::clicked, this, &QgsTemporalControllerWidget::mSetToProjectTimeButton_clicked );

QgsDateTimeRange range;

Expand Down Expand Up @@ -148,6 +148,19 @@ void QgsTemporalControllerWidget::setWidgetStateFromProject()
mTimeStepsComboBox->setCurrentIndex( mTimeStepsComboBox->findData( QgsProject::instance()->timeSettings()->timeStepUnit() ) );
mSpinBox->setValue( QgsProject::instance()->timeSettings()->timeStep() );
mBlockSettingUpdates--;

const QString startString = QgsProject::instance()->readEntry( QStringLiteral( "TemporalControllerWidget" ), QStringLiteral( "/StartDateTime" ) );
const QString endString = QgsProject::instance()->readEntry( QStringLiteral( "TemporalControllerWidget" ), QStringLiteral( "/EndDateTime" ) );
if ( !startString.isEmpty() && !endString.isEmpty() )
{
whileBlocking( mStartDateTime )->setDateTime( QDateTime::fromString( startString, Qt::ISODate ) );
whileBlocking( mEndDateTime )->setDateTime( QDateTime::fromString( endString, Qt::ISODate ) );
}
else
{
setDatesToProjectTime();
}
updateTemporalExtent();
updateFrameDuration();

mNavigationObject->setFramesPerSecond( QgsProject::instance()->timeSettings()->framesPerSecond() );
Expand Down Expand Up @@ -238,6 +251,26 @@ void QgsTemporalControllerWidget::timeSlider_valueChanged( int value )
mNavigationObject->setCurrentFrameNumber( value );
}

void QgsTemporalControllerWidget::startEndDateTime_changed()
{
updateTemporalExtent();

QgsProject::instance()->writeEntry( QStringLiteral( "TemporalControllerWidget" ),
QStringLiteral( "/StartDateTime" ), mStartDateTime->dateTime().toTimeSpec( Qt::OffsetFromUTC ).toString( Qt::ISODate ) );
QgsProject::instance()->writeEntry( QStringLiteral( "TemporalControllerWidget" ),
QStringLiteral( "/EndDateTime" ), mEndDateTime->dateTime().toTimeSpec( Qt::OffsetFromUTC ).toString( Qt::ISODate ) );
}

void QgsTemporalControllerWidget::mSetToProjectTimeButton_clicked()
{
setDatesToProjectTime();

QgsProject::instance()->writeEntry( QStringLiteral( "TemporalControllerWidget" ),
QStringLiteral( "/StartDateTime" ), mStartDateTime->dateTime().toTimeSpec( Qt::OffsetFromUTC ).toString( Qt::ISODate ) );
QgsProject::instance()->writeEntry( QStringLiteral( "TemporalControllerWidget" ),
QStringLiteral( "/EndDateTime" ), mEndDateTime->dateTime().toTimeSpec( Qt::OffsetFromUTC ).toString( Qt::ISODate ) );
}

void QgsTemporalControllerWidget::setDatesToProjectTime()
{
QgsDateTimeRange range;
Expand All @@ -254,8 +287,8 @@ void QgsTemporalControllerWidget::setDatesToProjectTime()

if ( range.begin().isValid() && range.end().isValid() )
{
mStartDateTime->setDateTime( range.begin() );
mEndDateTime->setDateTime( range.end() );
whileBlocking( mStartDateTime )->setDateTime( range.begin() );
whileBlocking( mEndDateTime )->setDateTime( range.end() );
updateTemporalExtent();
}
}
Expand Down
3 changes: 3 additions & 0 deletions src/gui/qgstemporalcontrollerwidget.h
Expand Up @@ -112,6 +112,9 @@ class GUI_EXPORT QgsTemporalControllerWidget : public QgsPanelWidget, private Ui

void onLayersAdded();
void onProjectCleared();

void startEndDateTime_changed();
void mSetToProjectTimeButton_clicked();
};

#endif // QGSTEMPORALCONTROLLERWIDGET_H

0 comments on commit 31a6467

Please sign in to comment.