145 lines
5.8 KiB
C++
145 lines
5.8 KiB
C++
#include "editcuetrackwidget.h"
|
|
#include <QLineEdit>
|
|
#include <QFormLayout>
|
|
#include <QVBoxLayout>
|
|
#include <QFileDialog>
|
|
|
|
EditCueTrackWidget::EditCueTrackWidget(CueTrack *cueTrack, QWidget *parent)
|
|
: QDialog(parent) {
|
|
setupUi();
|
|
connectSignals();
|
|
this->cueTrack = cueTrack;
|
|
loadCueTrack(*cueTrack);
|
|
}
|
|
|
|
void EditCueTrackWidget::setupUi() {
|
|
QFormLayout *layout = new QFormLayout(this);
|
|
|
|
userNumberSpin = new QSpinBox(this);
|
|
userNumberSpin->setRange(0, 9999);
|
|
layout->addRow("User Number", userNumberSpin);
|
|
nameEdit = new QLineEdit(this);
|
|
layout->addRow("Name", nameEdit);
|
|
audioLayerSpin = new QSpinBox(this);
|
|
audioLayerSpin->setRange(0, MAX_LAYERS - 1);
|
|
layout->addRow("Audio Layer", audioLayerSpin);
|
|
filePathEdit = new QLineEdit(this);
|
|
layout->addRow("File Path", filePathEdit);
|
|
browseButton = new QPushButton("Browse...", this);
|
|
layout->addRow(browseButton);
|
|
statusCombo = new QComboBox(this);
|
|
layout->addRow("Status", statusCombo);
|
|
volumeSpin = new QDoubleSpinBox(this);
|
|
volumeSpin->setRange(0, 100.00f);
|
|
layout->addRow("Volume", volumeSpin);
|
|
panSpin = new QDoubleSpinBox(this);
|
|
panSpin->setRange(-1, 1);
|
|
layout->addRow("Pan", panSpin);
|
|
pitchSpin = new QDoubleSpinBox(this);
|
|
pitchSpin->setRange(0, 2);
|
|
layout->addRow("Pitch", pitchSpin);
|
|
bus1Spin = new QDoubleSpinBox(this);
|
|
bus1Spin->setRange(0, 100.00f);
|
|
layout->addRow("Bus 1", bus1Spin);
|
|
bus2Spin = new QDoubleSpinBox(this);
|
|
bus2Spin->setRange(0, 100.00f);
|
|
layout->addRow("Bus 2", bus2Spin);
|
|
fadeInSpin = new QSpinBox(this);
|
|
layout->addRow("Fade In", fadeInSpin);
|
|
fadeOutSpin = new QSpinBox(this);
|
|
fadeOutSpin->setRange(0, 60 * 60 * 24);
|
|
layout->addRow("Fade Out", fadeOutSpin);
|
|
waitInSpin = new QSpinBox(this);
|
|
layout->addRow("Wait In", waitInSpin);
|
|
waitOutSpin = new QSpinBox(this);
|
|
layout->addRow("Wait Out", waitOutSpin);
|
|
stopAtEndCheck = new QCheckBox(this);
|
|
layout->addRow("Stop At End", stopAtEndCheck);
|
|
descriptionEdit = new QLineEdit(this);
|
|
layout->addRow("Description", descriptionEdit);
|
|
entryPointSpin = new QSpinBox(this);
|
|
layout->addRow("Entry Point", entryPointSpin);
|
|
exitPointSpin = new QSpinBox(this);
|
|
layout->addRow("Exit Point", exitPointSpin);
|
|
multiCheck = new QCheckBox(this);
|
|
layout->addRow("Multi Cue", multiCheck);
|
|
statusCombo->addItem(statusToString(Status::Stopped));
|
|
statusCombo->addItem(statusToString(Status::Paused));
|
|
statusCombo->addItem(statusToString(Status::PlayingOnce));
|
|
statusCombo->addItem(statusToString(Status::PlayingLoop));
|
|
statusCombo->addItem(statusToString(Status::Iddle));
|
|
statusCombo->addItem(statusToString(Status::PlayingFolder));
|
|
statusCombo->addItem(statusToString(Status::PlayingFolderLoop));
|
|
statusCombo->addItem(statusToString(Status::PlayingFolderRandom));
|
|
saveButton = new QPushButton("Save", this);
|
|
cancelButton = new QPushButton("Cancel", this);
|
|
layout->addRow(saveButton);
|
|
layout->addRow(cancelButton);
|
|
}
|
|
|
|
void EditCueTrackWidget::loadCueTrack(CueTrack cueTrack) {
|
|
filePathEdit->setText(cueTrack.filePath.data());
|
|
volumeSpin->setValue(cueTrack.volume);
|
|
panSpin->setValue(cueTrack.pan);
|
|
pitchSpin->setValue(cueTrack.pitch);
|
|
bus1Spin->setValue(cueTrack.bus1);
|
|
bus2Spin->setValue(cueTrack.bus2);
|
|
fadeInSpin->setValue(cueTrack.fadeIn);
|
|
fadeOutSpin->setValue(cueTrack.fadeOut);
|
|
waitInSpin->setValue(cueTrack.waitIn);
|
|
waitOutSpin->setValue(cueTrack.waitOut);
|
|
stopAtEndCheck->setChecked(cueTrack.stopAtEnd);
|
|
nameEdit->setText(cueTrack.name.data());
|
|
descriptionEdit->setText(cueTrack.description.data());
|
|
userNumberSpin->setValue(cueTrack.userNumber);
|
|
entryPointSpin->setValue(cueTrack.entryPoint);
|
|
exitPointSpin->setValue(cueTrack.exitPoint);
|
|
audioLayerSpin->setValue(cueTrack.audioLayer);
|
|
QString tmp = statusToString(cueTrack.status);
|
|
statusCombo->setCurrentIndex(statusCombo->findText(tmp));
|
|
multiCheck->setChecked(cueTrack.multi);
|
|
}
|
|
|
|
CueTrack EditCueTrackWidget::saveCueTrack() {
|
|
CueTrack cueTrack;
|
|
cueTrack.userNumber = userNumberSpin->value();
|
|
cueTrack.name.append(nameEdit->text().toUtf8().constData());
|
|
cueTrack.audioLayer = audioLayerSpin->value();
|
|
cueTrack.filePath.append(filePathEdit->text().toUtf8().constData());
|
|
cueTrack.status = static_cast<Status>(statusCombo->currentIndex());
|
|
cueTrack.fadeIn = fadeInSpin->value();
|
|
cueTrack.fadeOut = fadeOutSpin->value();
|
|
cueTrack.waitIn = waitInSpin->value();
|
|
cueTrack.waitOut = waitOutSpin->value();
|
|
cueTrack.stopAtEnd = stopAtEndCheck->isChecked();
|
|
cueTrack.entryPoint = entryPointSpin->value();
|
|
cueTrack.exitPoint = exitPointSpin->value();
|
|
cueTrack.volume = volumeSpin->value();
|
|
cueTrack.bus1 = bus1Spin->value();
|
|
cueTrack.bus2 = bus2Spin->value();
|
|
cueTrack.pan = panSpin->value();
|
|
cueTrack.pitch = pitchSpin->value();
|
|
cueTrack.description.append(descriptionEdit->text().toUtf8().constData());
|
|
cueTrack.multi = multiCheck->isChecked();
|
|
return cueTrack;
|
|
}
|
|
|
|
void EditCueTrackWidget::accept() {
|
|
*cueTrack = saveCueTrack();
|
|
QDialog::accept();
|
|
}
|
|
|
|
void EditCueTrackWidget::connectSignals() {
|
|
connect(saveButton, &QPushButton::clicked, this, &EditCueTrackWidget::accept);
|
|
connect(cancelButton, &QPushButton::clicked, this, &EditCueTrackWidget::reject);
|
|
connect(browseButton, &QPushButton::clicked, this, &EditCueTrackWidget::onBrowseButtonClicked);
|
|
}
|
|
|
|
void EditCueTrackWidget::onBrowseButtonClicked() {
|
|
QString filePath = QFileDialog::getOpenFileName(this, tr("Select File"), Settings::getInstance()->getPathMedia(), tr("Audio Files (*.mp3 *.wav *.flac)"));
|
|
if (!filePath.isEmpty()) {
|
|
filePathEdit->setText(filePath);
|
|
QDir dir;
|
|
Settings::getInstance()->setPathMedia(dir.absoluteFilePath(filePath));
|
|
}
|
|
}
|