synchronize playing status to play/pause button
This commit is contained in:
parent
7fbe0814d5
commit
e706579675
@ -62,36 +62,47 @@ int DroneController::getDuration() const {
|
||||
|
||||
|
||||
void DroneController::step() {
|
||||
qDebug() << "frame " << frame << "/" << duration
|
||||
<< " (" << (double) frame / duration * 100 << "%)";
|
||||
qDebug("frame %d (%d%%)", frame, (int) ((double) frame / duration * 100));
|
||||
emit frameChanged(frame);
|
||||
if (frame == duration) {
|
||||
pause();
|
||||
} else {
|
||||
frame++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DroneController::play() {
|
||||
if (!paused) return;
|
||||
paused = false;
|
||||
timer.start(1000. / framerate);
|
||||
qDebug() << "playing";
|
||||
emit playing();
|
||||
}
|
||||
|
||||
|
||||
void DroneController::pause() {
|
||||
if (paused) return;
|
||||
paused = true;
|
||||
timer.stop();
|
||||
qDebug() << "pausing";
|
||||
emit pausing();
|
||||
}
|
||||
|
||||
|
||||
void DroneController::suspend() {
|
||||
bool old_paused = paused;
|
||||
if (!paused) {
|
||||
pause();
|
||||
paused = old_paused;
|
||||
paused = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DroneController::resume() {
|
||||
if (!paused) play();
|
||||
if (!paused) {
|
||||
paused = true;
|
||||
play();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -41,6 +41,8 @@ public:
|
||||
|
||||
signals:
|
||||
void frameChanged(int frame);
|
||||
void playing();
|
||||
void pausing();
|
||||
|
||||
private slots:
|
||||
void step();
|
||||
|
@ -55,6 +55,8 @@ void MainWindow::open(const QString &path) {
|
||||
if (dc) delete dc;
|
||||
dc = new DroneController(json_doc.object());
|
||||
playpause_action->setEnabled(true);
|
||||
connect(dc, &DroneController::playing, this, &MainWindow::play);
|
||||
connect(dc, &DroneController::pausing, this, &MainWindow::pause);
|
||||
slider->setMinimum(0);
|
||||
slider->setMaximum(dc->getDuration());
|
||||
connect(slider, &QSlider::sliderPressed, dc, &DroneController::suspend);
|
||||
|
Loading…
Reference in New Issue
Block a user