QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgsplaybackcontrollerwidget.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsplaybackcontrollerwidget.cpp
3 --------------------------------------
4 begin : November 2023
5 copyright : (C) 2023 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7***************************************************************************
8* *
9* This program is free software; you can redistribute it and/or modify *
10* it under the terms of the GNU General Public License as published by *
11* the Free Software Foundation; either version 2 of the License, or *
12* (at your option) any later version. *
13* *
14***************************************************************************/
15
17
18#include "moc_qgsplaybackcontrollerwidget.cpp"
19
21 : QWidget { parent }
22{
23 setupUi( this );
24
25 mPauseButton->setChecked( true );
26
27 mForwardButton->setToolTip( tr( "Play" ) );
28 mBackButton->setToolTip( tr( "Reverse" ) );
29 mNextButton->setToolTip( tr( "Go to next frame" ) );
30 mPreviousButton->setToolTip( tr( "Go to previous frame" ) );
31 mPauseButton->setToolTip( tr( "Pause" ) );
32 mRewindButton->setToolTip( tr( "Rewind to start" ) );
33 mFastForwardButton->setToolTip( tr( "Fast forward to end" ) );
34
35 connect( mForwardButton, &QPushButton::clicked, this, &QgsPlaybackControllerWidget::togglePlayForward );
36 connect( mBackButton, &QPushButton::clicked, this, &QgsPlaybackControllerWidget::togglePlayBackward );
37 connect( mPauseButton, &QPushButton::clicked, this, &QgsPlaybackControllerWidget::pause );
38 connect( mNextButton, &QPushButton::clicked, this, &QgsPlaybackControllerWidget::next );
39 connect( mPreviousButton, &QPushButton::clicked, this, &QgsPlaybackControllerWidget::previous );
40 connect( mFastForwardButton, &QPushButton::clicked, this, &QgsPlaybackControllerWidget::skipToEnd );
41 connect( mRewindButton, &QPushButton::clicked, this, &QgsPlaybackControllerWidget::rewindToStart );
42}
43
45{
46 switch ( operation )
47 {
49 return mRewindButton;
51 return mPreviousButton;
53 return mBackButton;
55 return mPauseButton;
57 return mForwardButton;
59 return mNextButton;
61 return mFastForwardButton;
62 }
64}
65
67{
68 if ( state == mAnimationState )
69 return;
70
71 mAnimationState = state;
72 whileBlocking( mForwardButton )->setChecked( mAnimationState == Qgis::AnimationState::Forward );
73 whileBlocking( mBackButton )->setChecked( mAnimationState == Qgis::AnimationState::Reverse );
74 whileBlocking( mPauseButton )->setChecked( mAnimationState == Qgis::AnimationState::Idle );
75
76 switch ( mAnimationState )
77 {
80 break;
83 break;
86 break;
87 }
88}
89
103
104void QgsPlaybackControllerWidget::togglePlayForward()
105{
106 mPlayingForward = true;
107
108 if ( mAnimationState != Qgis::AnimationState::Forward )
109 {
110 mPauseButton->setChecked( false );
111 mBackButton->setChecked( false );
112 mForwardButton->setChecked( true );
113
114 mAnimationState = Qgis::AnimationState::Forward;
116 }
117 else
118 {
119 mPauseButton->setChecked( true );
120 mForwardButton->setChecked( false );
121
122 mAnimationState = Qgis::AnimationState::Idle;
124 }
125}
126
127void QgsPlaybackControllerWidget::togglePlayBackward()
128{
129 mPlayingForward = false;
130
131 if ( mAnimationState != Qgis::AnimationState::Reverse )
132 {
133 mPauseButton->setChecked( false );
134 mBackButton->setChecked( true );
135 mForwardButton->setChecked( false );
136
137 mAnimationState = Qgis::AnimationState::Reverse;
139 }
140 else
141 {
142 mPauseButton->setChecked( true );
143 mBackButton->setChecked( false );
144
145 mAnimationState = Qgis::AnimationState::Idle;
147 }
148}
149
150void QgsPlaybackControllerWidget::pause()
151{
152 if ( mAnimationState != Qgis::AnimationState::Idle )
153 {
154 mPauseButton->setChecked( true );
155 mBackButton->setChecked( false );
156 mForwardButton->setChecked( false );
157
158 mAnimationState = Qgis::AnimationState::Idle;
160 }
161 else
162 {
163 mBackButton->setChecked( !mPlayingForward );
164 mForwardButton->setChecked( mPlayingForward );
165 mAnimationState = mPlayingForward ? Qgis::AnimationState::Forward : Qgis::AnimationState::Reverse;
166 if ( mPlayingForward )
167 {
169 }
170 else
171 {
173 }
174 }
175}
176
177void QgsPlaybackControllerWidget::next()
178{
180}
181
182void QgsPlaybackControllerWidget::previous()
183{
185}
186
187void QgsPlaybackControllerWidget::skipToEnd()
188{
190}
191
192void QgsPlaybackControllerWidget::rewindToStart()
193{
195}
PlaybackOperation
Media playback operations.
Definition qgis.h:2563
@ Pause
Pause playback.
Definition qgis.h:2567
@ PlayReverse
Play in reverse.
Definition qgis.h:2566
@ PlayForward
Play forward.
Definition qgis.h:2568
@ SkipToStart
Jump to start of playback.
Definition qgis.h:2564
@ PreviousFrame
Step to previous frame.
Definition qgis.h:2565
@ SkipToEnd
Jump to end of playback.
Definition qgis.h:2570
@ NextFrame
Step to next frame.
Definition qgis.h:2569
AnimationState
Animation states.
Definition qgis.h:2550
@ Forward
Animation is playing forward.
Definition qgis.h:2551
@ Reverse
Animation is playing in reverse.
Definition qgis.h:2552
@ Idle
Animation is paused.
Definition qgis.h:2553
void operationTriggered(Qgis::PlaybackOperation operation)
Emitted when a playback operation is triggered.
void setState(Qgis::AnimationState state)
Sets the current animation state for the widget.
QgsPlaybackControllerWidget(QWidget *parent=nullptr)
Constructor for QgsPlaybackControllerWidget, with the specified parent widget.
void togglePause()
Toggles the pause state on or off.
QPushButton * button(Qgis::PlaybackOperation operation)
Returns the button associated with the specified playback operation.
#define BUILTIN_UNREACHABLE
Definition qgis.h:7208
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
Definition qgis.h:6511