multi-cue, nuevo campo en cuetrack para lanzar la siguiente cue de forma

inmediata, sin esperar a los tiempos de la cue actual.
Cambiado el visor de cue a QWidgetList, ahora muestra la última cue
reproducida en cada capa.
This commit is contained in:
snt 2024-07-01 18:31:47 +02:00
parent 307d9c4d43
commit 14a51c88e9
18 changed files with 1244 additions and 390 deletions

View file

@ -1,14 +1,107 @@
#include <QFileInfo>
#include "cuetrackwidget.h"
#include "ui_cuetrackwidget.h"
CuetrackWidget::CuetrackWidget(QWidget *parent) :
CueTrackWidget::CueTrackWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::CuetrackWidget)
ui(new Ui::CueTrackWidget)
{
ui->setupUi(this);
tlFade.setFrameRange(0, 100);
tlWaitIn.setFrameRange(0, 100);
tlWaitOut.setFrameRange(0, 100);
connect(&tlFade, &QTimeLine::frameChanged, ui->cueProgressBar, &QProgressBar::setValue);
connect(&tlWaitIn, &QTimeLine::frameChanged, ui->cueProgressBar, &QProgressBar::setValue);
connect(&tlWaitOut, &QTimeLine::frameChanged, ui->cueProgressBar, &QProgressBar::setValue);
connect(&tlFade, SIGNAL(finished()), this, SLOT(fadeSlot()));
connect(&tlWaitIn, SIGNAL(finished()), this, SLOT(waitInSlot()));
connect(&tlWaitOut, SIGNAL(finished()), this, SLOT(waitOutSlot()));
}
CuetrackWidget::~CuetrackWidget()
CueTrackWidget::~CueTrackWidget()
{
delete ui;
}
void CueTrackWidget::loadCueTrack(CueTrack* track)
{
ui->cueName->setText(track->name.data());
ui->cueNumber->display(track->userNumber);
ui->vol->display(track->volume);
ui->pan->display(track->pan);
ui->pitch->display(track->pitch);
ui->bus1->display(track->bus1);
ui->bus2->display(track->bus2);
ui->fade->setValue(track->fadeOut);
ui->waitIn->setValue(track->waitIn);
ui->waitOut->setValue(track->waitOut);
ui->halt->setChecked(track->stopAtEnd);
QFileInfo fileInfo(track->filePath.data());
fileInfo.fileName().truncate(64);
ui->mediaFileName->setText(fileInfo.fileName());
ui->mediaEndTimeEdit->setTime(QTime::fromMSecsSinceStartOfDay(track->duration));
ui->status->setText(statusToString(track->status));
ui->audioLayer->display(track->audioLayer);
ui->multi->setChecked(track->multi);
}
void CueTrackWidget::go()
{
tlFade.stop();
tlWaitIn.stop();
tlWaitOut.stop();
ui->cueProgressBar->setValue(0);
if (ui->waitIn->value() > 0)
{
tlWaitIn.setDuration(ui->waitIn->value() * 1000);
tlWaitIn.start();
ui->cueProgressBar->setStyleSheet("QProgressBar::chunk { background-color: #FF0000; }");
} else {
waitInSlot();
}
}
void CueTrackWidget::waitInSlot()
{
emit goAction(ui->audioLayer->intValue());
tlFade.setDuration(ui->fade->value() * 1000);
tlFade.start();
ui->cueProgressBar->setStyleSheet("QProgressBar::chunk { background-color: #00FF00; }");
}
void CueTrackWidget::fadeSlot()
{
if (ui->waitOut->value() > 0) {
tlWaitOut.setDuration(ui->waitOut->value() * 1000);
tlWaitOut.start();
ui->cueProgressBar->setStyleSheet("QProgressBar::chunk { background-color: #FF0000; }");
} else {
waitOutSlot();
}
}
void CueTrackWidget::waitOutSlot()
{
ui->cueProgressBar->setStyleSheet("QProgressBar::chunk { background-color: #0000FF; }");
emit cueFinished(ui->audioLayer->intValue());
}
void CueTrackWidget::refreshCurrentTime(int time)
{
QTime t;
t.fromMSecsSinceStartOfDay(time);
ui->mediaCurrentTimeEdit->setTime(t);
ui->mediaProgressBar->setValue(time);
}
void CueTrackWidget::setNextCue()
{
ui->cueProgressBar->setDisabled(true);
ui->cueProgressBar->hide();
ui->mediaProgressBar->setDisabled(true);
ui->mediaProgressBar->hide();
ui->mediaCurrentTimeEdit->setDisabled(true);
ui->mediaCurrentTimeEdit->hide();
}