diff --git a/libremediaserver-audio.pro b/libremediaserver-audio.pro index db78795..41955a6 100644 --- a/libremediaserver-audio.pro +++ b/libremediaserver-audio.pro @@ -26,7 +26,6 @@ HEADERS += src/libremediaserver-audio.h \ src/slidergroup.h SOURCES += src/main.cpp \ src/editcuetrackwidget.cpp \ - src/cuetracklistwidget.cpp \ src/showplayer.cpp \ src/clickabledoublespinbox.cpp \ src/clickablelabel.cpp \ @@ -58,3 +57,6 @@ OTHER_FILES += \ docs/changelog.txt \ docs/lms-audio.xlm \ docs/roadmap.txt + +SOURCES += \ + src/cuetracklistwidget.cpp diff --git a/src/cuetracklistwidget.cpp b/src/cuetracklistwidget.cpp deleted file mode 100644 index 4397239..0000000 --- a/src/cuetracklistwidget.cpp +++ /dev/null @@ -1,530 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "cuetracklistwidget.h" - -CueTrackListWidget::CueTrackListWidget(QWidget *parent) -{ - layout = new QVBoxLayout(this); - tableWidget = new QTableWidget(); - tableWidget->setSortingEnabled(false); - layout->addWidget(tableWidget); - setLayout(layout); - QShortcut *shortcut_up = new QShortcut(QKeySequence("Up"), parent); - QObject::connect(shortcut_up, SIGNAL(activated()), this, SLOT(key_up())); - QShortcut *shortcut_down = new QShortcut(QKeySequence("Down"), parent); - QObject::connect(shortcut_down, SIGNAL(activated()), this, SLOT(key_down())); -} - -void CueTrackListWidget::addCueTrack(CueTrack* cue) { - cueTracks.push_back(cue); - displayCueTrackInTable(cue, -1); - m_size++; -} - -void CueTrackListWidget::removeCueTrack(int index) { - if (index >= m_size) return; - cueTracks.erase(cueTracks.begin() + index); - tableWidget->removeRow(index); - m_size--; -} - -CueTrack* CueTrackListWidget::getTrackAtIndex(int index) { - if (index < m_size) { - return cueTracks.at(index); - } - return nullptr; -} - -CueTrack* CueTrackListWidget::getSelectedTrack() { - CueTrack* track = getTrackAtIndex(selectedIndex); - key_down(); - return track; -} - -void CueTrackListWidget::key_up() { - - if (m_size > 0 && selectedIndex > 0) { - updateSelectedCueTrack(false); - selectedIndex--; - updateSelectedCueTrack(true); - tableWidget->scrollToItem(tableWidget->item(selectedIndex, 0)); - } - emit changeSelectedIndex(selectedIndex); -} - -void CueTrackListWidget::key_down() { - if (selectedIndex < m_size - 1 && m_size > 0) { - updateSelectedCueTrack(false); - selectedIndex++; - updateSelectedCueTrack(true); - tableWidget->scrollToItem(tableWidget->item(selectedIndex, 0)); - } - emit changeSelectedIndex(selectedIndex); -} - -void CueTrackListWidget::displayCueTrackInTable(CueTrack *cueTrack, int index) { - if (tableWidget->columnCount() == 0) { - tableWidget->setColumnCount(7); - QStringList headers = {"Active", "Number","Audio Channel", "Name", "Volume", "Status", "File"}; - tableWidget->setHorizontalHeaderLabels(headers); - } - if (index == -1) - index = tableWidget->rowCount(); - tableWidget->insertRow(index); - - tableWidget->setItem(index, 0, new QTableWidgetItem(cueTrack->active ? "Yes" : "No")); - tableWidget->setItem(index, 1, new QTableWidgetItem(QStringLiteral("%1").arg(cueTrack->userNumber, 3, 10, QLatin1Char('0')))); - tableWidget->setItem(index, 2, new QTableWidgetItem(QString::number(cueTrack->audioLayer))); - tableWidget->setItem(index, 3, new QTableWidgetItem(cueTrack->name.data())); - tableWidget->setItem(index, 4, new QTableWidgetItem(QString::number(cueTrack->volume))); - QString statusStr; - statusStr = statusToString(cueTrack->status); - tableWidget->setItem(index, 5, new QTableWidgetItem(statusStr)); - tableWidget->setItem(index, 6, new QTableWidgetItem(*getFileName(cueTrack->filePath))); -} -//ToDo: make shortcuts in showplayer instead -void CueTrackListWidget::keyPressEvent(QKeyEvent* event) { - if (event->key() == Qt::Key_Delete) { - deleteCueTrack(); - } - if (event->key() == Qt::Key_Insert) { - createNewCueTrack(); - } - if (event->key() == Qt::Key_Return) { - editCueTrack(); - } -} - -void CueTrackListWidget::updateSelectedCueTrack(bool highlightRow) { - if (selectedIndex >= 0 && selectedIndex < tableWidget->rowCount()) { - QBrush backgroundBrush(highlightRow ? QColor(248, 248, 200) : Qt::white); - for (int column = 0; column < tableWidget->columnCount(); ++column) { - QTableWidgetItem *item = tableWidget->item(selectedIndex, column); - if (!item) { - item = new QTableWidgetItem(); - tableWidget->setItem(selectedIndex, column, item); - } - item->setBackground(backgroundBrush); - } - tableWidget->resizeColumnsToContents(); - tableWidget->resizeRowsToContents(); - } -} - -void CueTrackListWidget::cueTrackLoadDefaults(CueTrack * t) -{ - t->active = false; - t->audioLayer = -1; - t->bus1 = 80; - t->bus2 = 80; - t->entryPoint = 0; - t->exitPoint = 255; - t->fadeIn = 3; - t->fadeOut = 3; - t->waitIn = 0; - t->waitOut = 0; - t->pan = 0; - t->pitch = 1; - t->status = Status::PlayingOnce; - t->userNumber = lastUserCueNumber; - lastUserCueNumber++; - t->volume = 80; - t->stopAtEnd = true; - t->filePath = ""; -} - -void CueTrackListWidget::createNewCueTrack() -{ - CueTrack *t = new CueTrack; - cueTrackLoadDefaults(t); - EditCueTrackWidget dialog(t, this); - if (dialog.exec() == QDialog::Accepted) - addCueTrack(t); - if (m_size == 1) - { - updateSelectedCueTrack(true); - emit changeSelectedIndex(0); - } else - redrawCueTrackList(); - } - -void CueTrackListWidget::editCueTrack() -{ - CueTrack *current = getTrackAtIndex(selectedIndex); - EditCueTrackWidget dialog(current, this); - if (dialog.exec() == QDialog::Accepted) { - copyCueTrack(dialog.cueTrack, current); - redrawCueTrackList(); - emit changeSelectedIndex(selectedIndex); - } -} - -void CueTrackListWidget::deleteCueTrack() -{ - removeCueTrack(selectedIndex); - if (selectedIndex >= m_size) - { - selectedIndex = m_size - 1; - emit changeSelectedIndex(selectedIndex); - } - redrawCueTrackList(); -} - -void CueTrackListWidget::copyCueTrack(CueTrack *src, CueTrack *dst) -{ - dst->active = src->active; - dst->audioLayer = src->audioLayer; - dst->bus1 = src->bus1; - dst->bus2 = src->bus2; - dst->entryPoint = src->entryPoint; - dst->exitPoint = src->exitPoint; - dst->fadeIn = src->fadeIn; - dst->fadeOut = src->fadeOut; - dst->waitIn = src->waitIn; - dst->waitOut = src->waitOut; - dst->pan = src->pan; - dst->pitch = src->pitch; - dst->status = src->status; - dst->userNumber = src->userNumber; - dst->volume = src->volume; - dst->stopAtEnd = src->stopAtEnd; - dst->name = src->name; - dst->description = src->description; - dst->filePath = src->filePath; -} - -QString *CueTrackListWidget::getFileName(std::string s) -{ - size_t bar = s.rfind("/"); - std::string tmp = s.substr(bar + 1, strlen(s.data())); - QString *ret = new QString(tmp.data()); - ret->truncate(64); - return ret; -} - -void CueTrackListWidget::sortCueTrackList() -{ - std::sort(cueTracks.begin(), cueTracks.end(), [](CueTrack *a, CueTrack *b) { - return a->userNumber < b->userNumber; - }); -} - -void CueTrackListWidget::redrawCueTrackList() -{ - if (!m_size) - return; - int selected = cueTracks.at(selectedIndex)->userNumber; - clearTableWidget(); - tableWidget->setColumnCount(7); - QStringList headers = {"Active", "Number","Audio Channel", "Name", "Volume", "Status", "File"}; - tableWidget->setHorizontalHeaderLabels(headers); - sortCueTrackList(); - selectedIndex = 0; - for (int i = 0; i < m_size; i++) - { - displayCueTrackInTable(cueTracks.at(i), i); - } - selectedIndex = 0; - while (cueTracks.at(selectedIndex)->userNumber != selected) - { - selectedIndex++; - } - updateSelectedCueTrack(true); - tableWidget->resizeColumnsToContents(); - tableWidget->resizeRowsToContents(); - tableWidget->scrollToItem(tableWidget->item(selectedIndex, 0)); - tableWidget->blockSignals(false); -} - -#include -#include -#include -#include - -void CueTrackListWidget::loadCueTrackList(std::string filename) -{ - QFile file(QString::fromStdString(filename)); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - { - std::cerr << "No se pudo abrir el archivo para lectura" << std::endl; - return; - } - QXmlStreamReader xmlReader(&file); - clearCueTrackList(); - while (!xmlReader.atEnd() && !xmlReader.hasError()) - { - QXmlStreamReader::TokenType token = xmlReader.readNext(); - if (token == QXmlStreamReader::StartElement) - { - if (xmlReader.name() == "CueTrack") - { - CueTrack *t = new CueTrack; - while (!(xmlReader.tokenType() == QXmlStreamReader::EndElement && xmlReader.name() == "CueTrack")) - { - if (xmlReader.tokenType() == QXmlStreamReader::StartElement) - { - QString elementName = xmlReader.name().toString(); - xmlReader.readNext(); - if (xmlReader.tokenType() == QXmlStreamReader::Characters) - { - if (elementName == "filePath") { - t->filePath = xmlReader.text().toString().toStdString(); - } - else if (elementName == "volume") { - t->volume = xmlReader.text().toInt(); - } - else if (elementName == "pan") { - t->pan = xmlReader.text().toInt(); - } - else if (elementName == "pitch") { - t->pitch = xmlReader.text().toInt(); - } - else if (elementName == "bus1") { - t->bus1 = xmlReader.text().toInt(); - } - else if (elementName == "bus2") { - t->bus2 = xmlReader.text().toInt(); - } - else if (elementName == "status") { - QString tmp = xmlReader.text().toString(); - t->status = stringToStatus(&tmp); - } - else if (elementName == "fadeOut") { - t->fadeOut = xmlReader.text().toInt(); - } - else if (elementName == "fadeIn") { - t->fadeIn = xmlReader.text().toInt(); - } - else if (elementName == "waitIn") { - t->waitIn = xmlReader.text().toInt(); - } - else if (elementName == "waitOut") { - t->waitOut = xmlReader.text().toInt(); - } - else if (elementName == "stopAtEnd") { - t->stopAtEnd = xmlReader.text().toString().toLower() == "true"; - } - else if (elementName == "name") { - t->name = xmlReader.text().toString().toStdString(); - } - else if (elementName == "description") { - t->description = xmlReader.text().toString().toStdString(); - } - else if (elementName == "userNumber") { - t->userNumber = xmlReader.text().toInt(); - } - else if (elementName == "entryPoint") { - t->entryPoint = xmlReader.text().toInt(); - } - else if (elementName == "exitPoint") { - t->exitPoint = xmlReader.text().toInt(); - } - else if (elementName == "audioLayer") { - t->audioLayer = xmlReader.text().toInt(); - } - else if (elementName == "active") { - t->active = xmlReader.text().toString().toLower() == "true"; - } - } - } - xmlReader.readNext(); - } - addCueTrack(t); - } - } - } - if (xmlReader.hasError()) - { - std::cerr << "Error al leer el archivo XML: " << xmlReader.errorString().toStdString() << std::endl; - } - file.close(); - redrawCueTrackList(); -} - -#include -#include - -void CueTrackListWidget::saveCueTrackList(std::string filename) -{ - std::ofstream file(filename); - if (!file.is_open()) - { - return; - } - file << "\n"; - file << "\n"; - for (int i = 0; i < m_size; i++) - { - file << cueTrackToXml(*cueTracks.at(i)) << std::endl; - } - file << "\n"; - file.close(); -} - -std::string CueTrackListWidget::cueTrackToXml(const CueTrack& cueTrack) -{ - std::string xml = " \n"; - xml += " " + cueTrack.filePath + "\n"; - xml += " " + std::to_string(cueTrack.volume) + "\n"; - xml += " " + std::to_string(cueTrack.pan) + "\n"; - xml += " " + std::to_string(cueTrack.pitch) + "\n"; - xml += " " + std::to_string(cueTrack.bus1) + "\n"; - xml += " " + std::to_string(cueTrack.bus2) + "\n"; - xml += " "; - xml += statusToString(cueTrack.status); - xml += "\n"; - xml += " " + std::to_string(cueTrack.fadeOut) + "\n"; - xml += " " + std::to_string(cueTrack.fadeIn) + "\n"; - xml += " " + std::to_string(cueTrack.waitIn) + "\n"; - xml += " " + std::to_string(cueTrack.waitOut) + "\n"; - xml += " "; - xml += (cueTrack.stopAtEnd ? "true" : "false"); - xml += "\n"; - xml += " " + cueTrack.name + "\n"; - xml += " " + cueTrack.description + "\n"; - xml += " " + std::to_string(cueTrack.userNumber) + "\n"; - xml += " " + std::to_string(cueTrack.entryPoint) + "\n"; - xml += " " + std::to_string(cueTrack.exitPoint) + "\n"; - xml += " " + std::to_string(cueTrack.audioLayer) + "\n"; - xml += " "; - xml += (cueTrack.active ? "true" : "false"); - xml += "\n"; - xml += " \n"; - return xml; -} - -void CueTrackListWidget::clearCueTrackList() -{ - for (int i = 0; i < m_size; i++) - { - delete cueTracks.at(i); - } - cueTracks.clear(); - m_size = 0; - selectedIndex = 0; -} - -#include -#include - -void saveCueTrackToXml(const CueTrack& cueTrack, const QString& filename) { - QFile file(filename); - if (!file.open(QIODevice::WriteOnly)) { - qInfo() << "Can not open file " << filename << "\n"; - return; - } - - QXmlStreamWriter xmlWriter(&file); - xmlWriter.setAutoFormatting(true); - xmlWriter.writeStartDocument(); - xmlWriter.writeStartElement("CueTrack"); - - xmlWriter.writeTextElement("filePath", QString::fromStdString(cueTrack.filePath)); - xmlWriter.writeTextElement("volume", QString::number(cueTrack.volume)); - xmlWriter.writeTextElement("pan", QString::number(cueTrack.pan)); - xmlWriter.writeTextElement("pitch", QString::number(cueTrack.pitch)); - xmlWriter.writeTextElement("bus1", QString::number(cueTrack.bus1)); - xmlWriter.writeTextElement("bus2", QString::number(cueTrack.bus2)); - xmlWriter.writeTextElement("status", statusToString(cueTrack.status)); - xmlWriter.writeTextElement("fadeOut", QString::number(cueTrack.fadeOut)); - xmlWriter.writeTextElement("fadeIn", QString::number(cueTrack.fadeIn)); - xmlWriter.writeTextElement("waitIn", QString::number(cueTrack.waitIn)); - xmlWriter.writeTextElement("waitOut", QString::number(cueTrack.waitOut)); - xmlWriter.writeTextElement("stopAtEnd", cueTrack.stopAtEnd ? "true" : "false"); - xmlWriter.writeTextElement("name", QString::fromStdString(cueTrack.name)); - xmlWriter.writeTextElement("description", QString::fromStdString(cueTrack.description)); - xmlWriter.writeTextElement("userNumber", QString::number(cueTrack.userNumber)); - xmlWriter.writeTextElement("entryPoint", QString::number(cueTrack.entryPoint)); - xmlWriter.writeTextElement("exitPoint", QString::number(cueTrack.exitPoint)); - xmlWriter.writeTextElement("audioLayer", QString::number(cueTrack.audioLayer)); - xmlWriter.writeTextElement("active", cueTrack.active ? "true" : "false"); - - xmlWriter.writeEndElement(); - xmlWriter.writeEndDocument(); - - file.close(); -} - -#include -#include -#include -#include - -CueTrack loadCueTrackFromXml(const QString& filename) { - QFile file(filename); - if (!file.open(QIODevice::ReadOnly)) { - throw std::runtime_error("No se pudo abrir el archivo"); - } - - QXmlStreamReader xmlReader(&file); - CueTrack cueTrack; - - while (!xmlReader.atEnd() && !xmlReader.hasError()) { - QXmlStreamReader::TokenType token = xmlReader.readNext(); - if (token == QXmlStreamReader::StartElement) { - const QString elementName = xmlReader.name().toString(); - if (elementName == "filePath") { - cueTrack.filePath = xmlReader.readElementText().toStdString(); - } else if (elementName == "volume") { - cueTrack.volume = xmlReader.readElementText().toInt(); - } else if (elementName == "pan") { - cueTrack.pan = xmlReader.readElementText().toInt(); - } else if (elementName == "pitch") { - cueTrack.pitch = xmlReader.readElementText().toInt(); - } else if (elementName == "bus1") { - cueTrack.bus1 = xmlReader.readElementText().toInt(); - } else if (elementName == "bus2") { - cueTrack.bus2 = xmlReader.readElementText().toInt(); - } else if (elementName == "status") { - QString tmp = xmlReader.readElementText(); - cueTrack.status = stringToStatus(&tmp); - } else if (elementName == "fadeOut") { - cueTrack.fadeOut = xmlReader.readElementText().toInt(); - } else if (elementName == "fadeIn") { - cueTrack.fadeIn = xmlReader.readElementText().toInt(); - } else if (elementName == "waitIn") { - cueTrack.waitIn = xmlReader.readElementText().toInt(); - } else if (elementName == "waitOut") { - cueTrack.waitOut = xmlReader.readElementText().toInt(); - } else if (elementName == "stopAtEnd") { - cueTrack.stopAtEnd = xmlReader.readElementText() == "true"; - } else if (elementName == "name") { - cueTrack.name = xmlReader.readElementText().toStdString(); - } else if (elementName == "description") { - cueTrack.description = xmlReader.readElementText().toStdString(); - } else if (elementName == "userNumber") { - cueTrack.userNumber = xmlReader.readElementText().toInt(); - } else if (elementName == "entryPoint") { - cueTrack.entryPoint = xmlReader.readElementText().toInt(); - } else if (elementName == "exitPoint") { - cueTrack.exitPoint = xmlReader.readElementText().toInt(); - } else if (elementName == "audioLayer") { - cueTrack.audioLayer = xmlReader.readElementText().toInt(); - } else if (elementName == "active") { - cueTrack.active = xmlReader.readElementText() == "true"; - } - } - } - if (xmlReader.hasError()) { - throw std::runtime_error("Error al parsear el archivo XML"); - } - file.close(); - return cueTrack; -} - -void CueTrackListWidget::clearTableWidget() -{ - for (int i = 0; i < m_size; i++) - { - tableWidget->removeRow(i); - } - tableWidget->clear(); - tableWidget->setRowCount(0); -} diff --git a/src/cuetracklistwidget.h b/src/cuetracklistwidget.h index fa7b685..af17160 100644 --- a/src/cuetracklistwidget.h +++ b/src/cuetracklistwidget.h @@ -17,20 +17,10 @@ class CueTrackListWidget : public QWidget { public: explicit CueTrackListWidget(QWidget *parent = nullptr); - -public slots: CueTrack* getSelectedTrack(); void createNewCueTrack(); void editCueTrack(); void deleteCueTrack(); - int getSelectedIndex() { return selectedIndex; }; - CueTrack* getTrackAtIndex(int index); - QString *getFileName(std::string s); - void loadCueTrackList(std::string filename); - void saveCueTrackList(std::string filename); - void clearCueTrackList(); - void setLastUserCueNumber(size_t n) { lastUserCueNumber = n; } - size_t getLastUserCueNumber() { return lastUserCueNumber; } private: std::vector cueTracks; @@ -44,20 +34,13 @@ private: private slots: void addCueTrack(CueTrack* cue); void removeCueTrack(int index); + CueTrack* getTrackAtIndex(int index); void key_up(); void key_down(); - void displayCueTrackInTable(CueTrack *cueTrack, int index); + void displayCueTrackInTable(CueTrack *cueTrack); void keyPressEvent(QKeyEvent* event); void updateSelectedCueTrack(bool highlightRow); void cueTrackLoadDefaults(CueTrack * t); void copyCueTrack(CueTrack *src, CueTrack *dst); - void sortCueTrackList(); - void redrawCueTrackList(); - void clearTableWidget(); - std::string cueTrackToXml(const CueTrack& cueTrack); - - -signals: - void changeSelectedIndex(int index); }; #endif diff --git a/src/defines.h b/src/defines.h index 59375fc..1209bcb 100644 --- a/src/defines.h +++ b/src/defines.h @@ -57,7 +57,7 @@ constexpr const char* statusToString(Status e) noexcept case Status::Iddle: return "Iddle"; case Status::PlayingFolder: return "Play Folder"; case Status::PlayingFolderLoop: return "Play Folder Loop"; - case Status::PlayingFolderRandom: return "Play Folder Random"; + case Status::PlayingFolderRandom: return "Playing Folder Random"; default: return "--++--"; } } @@ -65,15 +65,15 @@ constexpr const char* statusToString(Status e) noexcept #include static Status stringToStatus(QString *statusStr) { - if (!statusStr->compare("Stopped")) return Stopped; - else if (!statusStr->compare("Paused") ) return Paused; - else if (!statusStr->compare("Play 1")) return PlayingOnce; - else if (!statusStr->compare("Play Loop")) return PlayingLoop; - else if (!statusStr->compare("Iddle")) return Iddle; - else if (!statusStr->compare("Play Folder")) return PlayingFolder; - else if (!statusStr->compare("Play Folder Loop")) return PlayingFolderLoop; - else if (!statusStr->compare("Play Folder Random")) return PlayingFolderRandom; - else return Iddle; + if (statusStr->compare("Stopped")) return Stopped; + else if (statusStr->compare("Paused")) return Paused; + else if (statusStr->compare("PlayingOnce")) return PlayingOnce; + else if (statusStr->compare("PlayingLoop")) return PlayingLoop; + else if (statusStr->compare("Iddle")) return Iddle; + else if (statusStr->compare("PlayingFolder")) return PlayingFolder; + else if (statusStr->compare("PlayingFolderLoop")) return PlayingFolderLoop; + else if (statusStr->compare("PlayingFolderRandom")) return PlayingFolderRandom; + else return Stopped; // Valor por defecto o manejar como error } struct layerData { diff --git a/src/editcuetrackwidget.cpp b/src/editcuetrackwidget.cpp index f0f6046..54547fb 100644 --- a/src/editcuetrackwidget.cpp +++ b/src/editcuetrackwidget.cpp @@ -13,61 +13,62 @@ EditCueTrackWidget::EditCueTrackWidget(CueTrack *cueTrack, QWidget *parent) } 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); + volumeSpin->setRange(0, 100.01f); panSpin = new QDoubleSpinBox(this); - layout->addRow("Pan", panSpin); pitchSpin = new QDoubleSpinBox(this); - layout->addRow("Pitch", pitchSpin); bus1Spin = new QDoubleSpinBox(this); - bus1Spin->setRange(0, 100.00f); - layout->addRow("Bus 1", bus1Spin); + bus1Spin->setRange(0, 100.01f); bus2Spin = new QDoubleSpinBox(this); - bus2Spin->setRange(0, 100.00f); - layout->addRow("Bus 2", bus2Spin); + bus2Spin->setRange(0, 100.01f); fadeInSpin = new QSpinBox(this); - layout->addRow("Fade In", fadeInSpin); fadeOutSpin = new QSpinBox(this); - 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); - 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)); + exitPointSpin = new QSpinBox(this); + statusCombo->addItem("Stopped"); + statusCombo->addItem("Paused"); + statusCombo->addItem("PlayingOnce"); + statusCombo->addItem("PlayingLoop"); + statusCombo->addItem("Iddle"); + statusCombo->addItem("PlayingFolder"); + statusCombo->addItem("PlayingFolderLoop"); + statusCombo->addItem("PlayingFolderRandom"); + statusCombo->addItem("PlayingFolderRandomLoop"); + + browseButton = new QPushButton("Browse...", this); saveButton = new QPushButton("Save", this); cancelButton = new QPushButton("Cancel", this); + + QFormLayout *layout = new QFormLayout(this); + layout->addRow("User Number", userNumberSpin); + layout->addRow("Name", nameEdit); + layout->addRow("Audio Layer", audioLayerSpin); + layout->addRow("File Path", filePathEdit); + layout->addRow(browseButton); + layout->addRow("Status", statusCombo); + layout->addRow("Fade In", fadeInSpin); + layout->addRow("Fade Out", fadeOutSpin); + layout->addRow("Wait In", waitInSpin); + layout->addRow("Wait Out", waitOutSpin); + layout->addRow("Stop At End", stopAtEndCheck); + layout->addRow("Volume", volumeSpin); + layout->addRow("Bus 1", bus1Spin); + layout->addRow("Bus 2", bus2Spin); + layout->addRow("Pan", panSpin); + layout->addRow("Pitch", pitchSpin); + layout->addRow("Entry Point", entryPointSpin); + layout->addRow("Exit Point", exitPointSpin); + layout->addRow("Description", descriptionEdit); layout->addRow(saveButton); layout->addRow(cancelButton); } @@ -89,9 +90,8 @@ void EditCueTrackWidget::loadCueTrack(CueTrack cueTrack) { userNumberSpin->setValue(cueTrack.userNumber); entryPointSpin->setValue(cueTrack.entryPoint); exitPointSpin->setValue(cueTrack.exitPoint); + statusCombo->setCurrentIndex(statusCombo->findText(statusToString(cueTrack.status))); audioLayerSpin->setValue(cueTrack.audioLayer); - QString tmp = statusToString(cueTrack.status); - statusCombo->setCurrentIndex(statusCombo->findText(tmp)); } CueTrack EditCueTrackWidget::saveCueTrack() { @@ -136,3 +136,4 @@ void EditCueTrackWidget::onBrowseButtonClicked() { Settings::getInstance()->setPathMedia(dir.absoluteFilePath(filePath)); } } + diff --git a/src/libremediaserver-audio.cpp b/src/libremediaserver-audio.cpp index 1a1b6eb..1a40036 100644 --- a/src/libremediaserver-audio.cpp +++ b/src/libremediaserver-audio.cpp @@ -245,26 +245,21 @@ void libreMediaServerAudio::uiSliderChanged(int layer, Slider s, int value) switch (s){ case Slider::Volume: m_mae.volChanged(layer, value); - m_updateUi[layer][0] = value; break; case Slider::Pan: m_mae.panChanged(layer, value); - m_updateUi[layer][1] = value; break; case Slider::Pitch: m_mae.pitchChanged(layer, value); - m_updateUi[layer][2] = value; break; case Slider::Bypass: m_mae.setBypass(m_dmxSettings.at(layer).audioDevice, layer, value); break; case Slider::Bus1: m_mae.filterParamChanged(layer, SEND1, value / 255.0f); - m_lmsUi->m_aw->filterParamChanged(layer, SEND1, value / 255.0f); break; case Slider::Bus2: m_mae.filterParamChanged(layer, SEND2, value / 255.0f); - m_lmsUi->m_aw->filterParamChanged(layer, SEND2, value / 255.0f); break; } } @@ -276,7 +271,6 @@ void libreMediaServerAudio::uiPlaybackChanged(int layer, Status s) result = m_mae.playbackChanged(layer, s); if (result == MA_SUCCESS) { m_currentStatus[layer] = s; - m_lmsUi->m_aw->playbackChanged(layer, s); } else { qWarning() << "ui playback change error " << result << " status " << statusToString(s) << "layer" << layer; } diff --git a/src/showplayer.cpp b/src/showplayer.cpp index 3b877df..c9108f4 100644 --- a/src/showplayer.cpp +++ b/src/showplayer.cpp @@ -6,17 +6,12 @@ ShowPlayer::ShowPlayer(QWidget *parent) : , ui(new Ui::ShowPlayer) { ui->setupUi(this); - connect(ui->NewCue, SIGNAL(clicked()), this, SLOT(onAddTrack())); - connect(ui->EditCue, SIGNAL(clicked()), ui->cueListWidget, SLOT(editCueTrack())); - connect(ui->RemoveCue, SIGNAL(clicked()), ui->cueListWidget, SLOT(deleteCueTrack())); - connect(ui->SaveCueList, SIGNAL(clicked()), this, SLOT(saveCueTrackList())); - connect(ui->LoadCueList, SIGNAL(clicked()), this, SLOT(loadCueTrackList())); + connect(ui->addCueButton, SIGNAL(clicked()), this, SLOT(onAddTrack())); connect(ui->goButton, SIGNAL(clicked()), this, SLOT(go())); filesLoaded = 0; currentStatus = Status::Iddle; for(int i = 0; i < MAX_LAYERS; i++) layersUsed[i] = -1; - connect(ui->cueListWidget, SIGNAL(changeSelectedIndex(int)), this, SLOT(changeSelectedIndex(int))); } ShowPlayer::~ShowPlayer() {} @@ -27,13 +22,11 @@ void ShowPlayer::onAddTrack() { void ShowPlayer::go() { - ui->activeCueNumber->display(lastIndex); CueTrack* current = ui->cueListWidget->getSelectedTrack(); if (!current) return; if (current->audioLayer < 0) return; - ui->activeCueLabel->setText(current->name.data()); for (int i = 0; i < MAX_LAYERS; i++) { if (layersUsed[i] == -1) { layersUsed[i] = current->userNumber; @@ -44,7 +37,7 @@ void ShowPlayer::go() emit uiLoadMedia(current->audioLayer, current->filePath.data()); updateTrackStateInEngine(current); emit uiPlaybackChanged(current->audioLayer, current->status); - filesLoaded++; + filesLoaded++; } void ShowPlayer::updateTrackStateInEngine(CueTrack *track) { @@ -53,28 +46,4 @@ void ShowPlayer::updateTrackStateInEngine(CueTrack *track) { emit uiSliderChanged(track->audioLayer, Slider::Pitch, track->pitch * 128); emit uiSliderChanged(track->audioLayer, Slider::Bus1, track->bus1 * 255 * 2.55); emit uiSliderChanged(track->audioLayer, Slider::Bus2, track->bus2 * 255 * 2.55); -} - -void ShowPlayer::changeSelectedIndex(int i) -{ - CueTrack *t = ui->cueListWidget->getTrackAtIndex(i); - ui->nextCueNumber->display(t->userNumber); - ui->nextCueLabel->setText(t->name.data()); - lastIndex = t->userNumber; -} - -void ShowPlayer::loadCueTrackList() -{ - QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("XML Files (*.xml)")); - if (fileName.isEmpty()) - return; - ui->cueListWidget->loadCueTrackList(fileName.toStdString()); -} - -void ShowPlayer::saveCueTrackList() -{ - QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "", tr("XML Files (*.xml)")); - if (fileName.isEmpty()) - return; - ui->cueListWidget->saveCueTrackList(fileName.toStdString()); -} +}; diff --git a/src/showplayer.h b/src/showplayer.h index 7abec4c..977b0f4 100644 --- a/src/showplayer.h +++ b/src/showplayer.h @@ -29,16 +29,12 @@ private: Status currentStatus = Status::Iddle; size_t filesLoaded = 0; int layersUsed[MAX_LAYERS]; - int lastIndex = 0; void updateTrackStateInEngine(CueTrack *track); private slots: void onAddTrack(); void go(); - void changeSelectedIndex(int i); - void loadCueTrackList(); - void saveCueTrackList(); signals: void uiPlaybackChanged(int layer, Status s); diff --git a/src/showplayer.ui b/src/showplayer.ui index 9f3cd82..26f0c94 100644 --- a/src/showplayer.ui +++ b/src/showplayer.ui @@ -6,8 +6,8 @@ 0 0 - 743 - 671 + 538 + 554 @@ -23,42 +23,18 @@ - + 0 0 - - - 400 - 400 - - - - QFrame::StyledPanel - - - QFrame::Sunken - Qt::Vertical - - 8 - - - QFrame::Box - - - QFrame::Raised - Qt::Horizontal - - 8 - @@ -66,9 +42,6 @@ 0 - - Qt::ClickFocus - GO @@ -78,12 +51,6 @@ - - QLayout::SetMinimumSize - - - 0 - @@ -130,173 +97,28 @@ - - 0 - QLayout::SetMinimumSize - - 100 - - - 100 - - + ... - - - ../resources/load_button.png../resources/load_button.png - - - - 32 - 32 - - - + ... - - - ../resources/save_button.png../resources/save_button.png - - - - 32 - 32 - - - - true - - - false - - + ... - - - ../resources/copy_button.png../resources/copy_button.png - - - - 32 - 32 - - - - - - - - Load Cue List - - - Load Cue List - - - ... - - - - ../resources/cut_button.png../resources/cut_button.png - - - - 32 - 32 - - - - - - - - ... - - - - ../resources/paste_button.png../resources/paste_button.png - - - - 32 - 32 - - - - - - - - Qt::NoFocus - - - ... - - - - ../resources/new_button.png../resources/new_button.png - - - - 32 - 32 - - - - - - - - Qt::NoFocus - - - ... - - - - ../resources/edit_button.png../resources/edit_button.png - - - - 32 - 32 - - - - - - - - Qt::NoFocus - - - ... - - - - ../resources/remove_button.png../resources/remove_button.png - - - - 32 - 32 - - @@ -333,12 +155,6 @@ 1 - - cueListWidget - NewCue - EditCue - RemoveCue -