@@ -30,11 +30,11 @@ QgsTemporalControllerWidget::QgsTemporalControllerWidget( QWidget *parent )
30
30
31
31
mNavigationObject = new QgsTemporalNavigationObject ( this );
32
32
33
- connect ( mForwardButton , &QPushButton::clicked, mNavigationObject , &QgsTemporalNavigationObject::playForward );
34
- connect ( mBackButton , &QPushButton::clicked, mNavigationObject , &QgsTemporalNavigationObject::playBackward );
33
+ connect ( mForwardButton , &QPushButton::clicked, this , &QgsTemporalControllerWidget::togglePlayForward );
34
+ connect ( mBackButton , &QPushButton::clicked, this , &QgsTemporalControllerWidget::togglePlayBackward );
35
+ connect ( mStopButton , &QPushButton::clicked, this , &QgsTemporalControllerWidget::togglePause );
35
36
connect ( mNextButton , &QPushButton::clicked, mNavigationObject , &QgsTemporalNavigationObject::next );
36
37
connect ( mPreviousButton , &QPushButton::clicked, mNavigationObject , &QgsTemporalNavigationObject::previous );
37
- connect ( mStopButton , &QPushButton::clicked, mNavigationObject , &QgsTemporalNavigationObject::pause );
38
38
connect ( mFastForwardButton , &QPushButton::clicked, mNavigationObject , &QgsTemporalNavigationObject::skipToEnd );
39
39
connect ( mRewindButton , &QPushButton::clicked, mNavigationObject , &QgsTemporalNavigationObject::rewindToStart );
40
40
connect ( mLoopingCheckBox , &QCheckBox::toggled, this , [ = ]( bool state ) { mNavigationObject ->setLooping ( state ); } );
@@ -136,6 +136,77 @@ QgsTemporalControllerWidget::QgsTemporalControllerWidget( QWidget *parent )
136
136
connect ( QgsProject::instance (), &QgsProject::cleared, this , &QgsTemporalControllerWidget::onProjectCleared );
137
137
}
138
138
139
+ void QgsTemporalControllerWidget::keyPressEvent ( QKeyEvent *e )
140
+ {
141
+ if ( mSlider ->hasFocus () && e->key () == Qt::Key_Space )
142
+ {
143
+ togglePause ();
144
+ }
145
+ QWidget::keyPressEvent ( e );
146
+ }
147
+
148
+ void QgsTemporalControllerWidget::togglePlayForward ()
149
+ {
150
+ mPlayingForward = true ;
151
+
152
+ if ( mNavigationObject ->animationState () != QgsTemporalNavigationObject::Forward )
153
+ {
154
+ mStopButton ->setChecked ( false );
155
+ mBackButton ->setChecked ( false );
156
+ mForwardButton ->setChecked ( true );
157
+ mNavigationObject ->playForward ();
158
+ }
159
+ else
160
+ {
161
+ mBackButton ->setChecked ( true );
162
+ mForwardButton ->setChecked ( false );
163
+ mNavigationObject ->pause ();
164
+ }
165
+ }
166
+
167
+ void QgsTemporalControllerWidget::togglePlayBackward ()
168
+ {
169
+ mPlayingForward = false ;
170
+
171
+ if ( mNavigationObject ->animationState () != QgsTemporalNavigationObject::Reverse )
172
+ {
173
+ mStopButton ->setChecked ( false );
174
+ mBackButton ->setChecked ( true );
175
+ mForwardButton ->setChecked ( false );
176
+ mNavigationObject ->playBackward ();
177
+ }
178
+ else
179
+ {
180
+ mBackButton ->setChecked ( true );
181
+ mBackButton ->setChecked ( false );
182
+ mNavigationObject ->pause ();
183
+ }
184
+ }
185
+
186
+ void QgsTemporalControllerWidget::togglePause ()
187
+ {
188
+ if ( mNavigationObject ->animationState () != QgsTemporalNavigationObject::Idle )
189
+ {
190
+ mStopButton ->setChecked ( true );
191
+ mBackButton ->setChecked ( false );
192
+ mForwardButton ->setChecked ( false );
193
+ mNavigationObject ->pause ();
194
+ }
195
+ else
196
+ {
197
+ mBackButton ->setChecked ( mPlayingForward ? false : true );
198
+ mForwardButton ->setChecked ( mPlayingForward ? false : true );
199
+ if ( mPlayingForward )
200
+ {
201
+ mNavigationObject ->playForward ();
202
+ }
203
+ else
204
+ {
205
+ mNavigationObject ->playBackward ();
206
+ }
207
+ }
208
+ }
209
+
139
210
void QgsTemporalControllerWidget::updateTemporalExtent ()
140
211
{
141
212
QgsDateTimeRange temporalExtent = QgsDateTimeRange ( mStartDateTime ->dateTime (),
0 commit comments