#include "editcuetrackwidget.h" #include #include #include #include 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(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)); } }