lms-audio/src/cuetrackwidget.cpp
2024-07-09 20:48:20 +02:00

148 lines
4.4 KiB
C++

#include <QFileInfo>
#include "cuetrackwidget.h"
#include "ui_cuetrackwidget.h"
CueTrackWidget::CueTrackWidget(QWidget *parent) :
QWidget(parent),
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()));
connect(ui->playButton, SIGNAL(clicked()), this, SLOT(play()));
connect(ui->stopButton, SIGNAL(clicked()), this, SLOT(stop()));
connect(ui->pauseButton, SIGNAL(clicked()), this, SLOT(pause()));
connect(ui->fadeInButton, SIGNAL(clicked()), this, SLOT(fadeIn()));
connect(ui->fadeOutButton, SIGNAL(clicked()), this, SLOT(fadeOut()));
connect(ui->muteButton, SIGNAL(clicked()), this, SLOT(mute()));
}
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->display(track->fadeIn);
ui->waitIn->display(track->waitIn);
ui->waitOut->display(track->waitOut);
ui->halt->setChecked(track->stopAtEnd);
QFileInfo fileInfo(track->filePath.data());
fileInfo.fileName().truncate(64);
ui->mediaFileName->setText(fileInfo.fileName());
ui->status->setText(statusToString(track->status));
ui->audioLayer->display(track->audioLayer);
ui->multi->setChecked(track->multi);
ui->fadeOut->display(track->fadeOut);
}
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());
if (ui->fade->value() > 0) {
tlFade.setDuration(ui->fade->value() * 1000);
tlFade.start();
ui->cueProgressBar->setStyleSheet("QProgressBar::chunk { background-color: #00FF00; }");
} else {
fadeSlot();
}
}
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::setNextCue()
{
ui->cueProgressBar->setDisabled(true);
ui->cueProgressBar->hide();
ui->audioControlLayout->setEnabled(false);
QList<int> list = { 1, 0 };
ui->cueValues->setSizes(list);
}
void CueTrackWidget::play()
{
QString t = ui->status->text();
emit changeStatus(ui->audioLayer->intValue(), stringToStatus(&t));
}
void CueTrackWidget::stop()
{
emit changeStatus(ui->audioLayer->intValue(), Status::Stopped);
}
void CueTrackWidget::pause()
{
emit changeStatus(ui->audioLayer->intValue(), Status::Paused);
}
void CueTrackWidget::fadeIn()
{
emit changeVol(ui->audioLayer->intValue(), Slider::Volume, ui->vol->value() * 655.35, ui->fade->value() * 1000, ui->fadeOut->value() * 1000);
muted = false;
}
void CueTrackWidget::fadeOut()
{
emit changeVol(ui->audioLayer->intValue(), Slider::Volume, 0, ui->fade->value() * 1000, ui->fadeOut->value() * 1000);
muted = true;
}
void CueTrackWidget::mute()
{
if (muted)
{
emit changeVol(ui->audioLayer->intValue(), Slider::Volume, ui->vol->value() * 655.35, 0, 0);
muted = false;
}
else {
emit changeVol(ui->audioLayer->intValue(), Slider::Volume, 0, 0, 0);
muted = true;
}
}