wip en active, hacer lista con las cues activas?

This commit is contained in:
snt 2024-06-21 20:39:07 +02:00
parent 86e866c996
commit 0795157d5f
7 changed files with 67 additions and 25 deletions

View file

@ -145,7 +145,8 @@ void CueTrackListWidget::createNewCueTrack()
CueTrack *t = new CueTrack; CueTrack *t = new CueTrack;
cueTrackLoadDefaults(t); cueTrackLoadDefaults(t);
EditCueTrackWidget dialog(t, this); EditCueTrackWidget dialog(t, this);
if (dialog.exec() == QDialog::Accepted) if (dialog.exec() == QDialog::Accepted) {
t->active = false;
addCueTrack(t); addCueTrack(t);
if (m_size == 1) if (m_size == 1)
{ {
@ -153,6 +154,10 @@ void CueTrackListWidget::createNewCueTrack()
emit changeSelectedIndex(0); emit changeSelectedIndex(0);
} else } else
redrawCueTrackList(); redrawCueTrackList();
if (lastUserCueNumber < t->userNumber)
lastUserCueNumber = t->userNumber + 10;
} else
delete (t);
} }
void CueTrackListWidget::editCueTrack() void CueTrackListWidget::editCueTrack()
@ -164,6 +169,8 @@ void CueTrackListWidget::editCueTrack()
redrawCueTrackList(); redrawCueTrackList();
emit changeSelectedIndex(selectedIndex); emit changeSelectedIndex(selectedIndex);
} }
if (lastUserCueNumber < current->userNumber)
lastUserCueNumber = current->userNumber + 10;
} }
void CueTrackListWidget::deleteCueTrack() void CueTrackListWidget::deleteCueTrack()
@ -223,7 +230,7 @@ void CueTrackListWidget::redrawCueTrackList()
int selected = cueTracks.at(selectedIndex)->userNumber; int selected = cueTracks.at(selectedIndex)->userNumber;
clearTableWidget(); clearTableWidget();
tableWidget->setColumnCount(7); tableWidget->setColumnCount(7);
QStringList headers = {"Active", "Number","Audio Channel", "Name", "Volume", "Status", "File"}; QStringList headers = {"Active", "Number","Channel", "Name", "Volume", "Status", "File"};
tableWidget->setHorizontalHeaderLabels(headers); tableWidget->setHorizontalHeaderLabels(headers);
sortCueTrackList(); sortCueTrackList();
selectedIndex = 0; selectedIndex = 0;
@ -309,7 +316,12 @@ void CueTrackListWidget::loadCueTrackList(std::string filename)
t->waitOut = xmlReader.text().toInt(); t->waitOut = xmlReader.text().toInt();
} }
else if (elementName == "stopAtEnd") { else if (elementName == "stopAtEnd") {
t->stopAtEnd = xmlReader.text().toString().toLower() == "true"; QString tmp = xmlReader.text().toString().toLower();
if (tmp.compare("true"))
t->stopAtEnd = true;
else {
t->stopAtEnd = false;
}
} }
else if (elementName == "name") { else if (elementName == "name") {
t->name = xmlReader.text().toString().toStdString(); t->name = xmlReader.text().toString().toStdString();
@ -329,9 +341,7 @@ void CueTrackListWidget::loadCueTrackList(std::string filename)
else if (elementName == "audioLayer") { else if (elementName == "audioLayer") {
t->audioLayer = xmlReader.text().toInt(); t->audioLayer = xmlReader.text().toInt();
} }
else if (elementName == "active") { t->active = false;
t->active = xmlReader.text().toString().toLower() == "true";
}
} }
} }
xmlReader.readNext(); xmlReader.readNext();
@ -393,9 +403,6 @@ std::string CueTrackListWidget::cueTrackToXml(const CueTrack& cueTrack)
xml += " <entryPoint>" + std::to_string(cueTrack.entryPoint) + "</entryPoint>\n"; xml += " <entryPoint>" + std::to_string(cueTrack.entryPoint) + "</entryPoint>\n";
xml += " <exitPoint>" + std::to_string(cueTrack.exitPoint) + "</exitPoint>\n"; xml += " <exitPoint>" + std::to_string(cueTrack.exitPoint) + "</exitPoint>\n";
xml += " <audioLayer>" + std::to_string(cueTrack.audioLayer) + "</audioLayer>\n"; xml += " <audioLayer>" + std::to_string(cueTrack.audioLayer) + "</audioLayer>\n";
xml += " <active>";
xml += (cueTrack.active ? "true" : "false");
xml += "</active>\n";
xml += " </CueTrack>\n"; xml += " </CueTrack>\n";
return xml; return xml;
} }
@ -528,3 +535,17 @@ void CueTrackListWidget::clearTableWidget()
tableWidget->clear(); tableWidget->clear();
tableWidget->setRowCount(0); tableWidget->setRowCount(0);
} }
void CueTrackListWidget::cueTrackAtEnd(int layer)
{
for (int i = 0; i < m_size; i++)
{
CueTrack * cur = cueTracks.at(i);
if (cur->audioLayer == layer)
{
cur->active = false;
}
layer--;
}
redrawCueTrackList();
}

View file

@ -31,6 +31,8 @@ public slots:
void clearCueTrackList(); void clearCueTrackList();
void setLastUserCueNumber(size_t n) { lastUserCueNumber = n; } void setLastUserCueNumber(size_t n) { lastUserCueNumber = n; }
size_t getLastUserCueNumber() { return lastUserCueNumber; } size_t getLastUserCueNumber() { return lastUserCueNumber; }
void cueTrackAtEnd(int layer);
void redrawCueTrackList();
private: private:
std::vector<CueTrack *> cueTracks; std::vector<CueTrack *> cueTracks;
@ -39,7 +41,7 @@ private:
int m_size = 0; int m_size = 0;
int size() { return m_size; } int size() { return m_size; }
int selectedIndex = 0; int selectedIndex = 0;
size_t lastUserCueNumber = 0; int lastUserCueNumber = 0;
private slots: private slots:
void addCueTrack(CueTrack* cue); void addCueTrack(CueTrack* cue);
@ -52,7 +54,6 @@ private slots:
void cueTrackLoadDefaults(CueTrack * t); void cueTrackLoadDefaults(CueTrack * t);
void copyCueTrack(CueTrack *src, CueTrack *dst); void copyCueTrack(CueTrack *src, CueTrack *dst);
void sortCueTrackList(); void sortCueTrackList();
void redrawCueTrackList();
void clearTableWidget(); void clearTableWidget();
std::string cueTrackToXml(const CueTrack& cueTrack); std::string cueTrackToXml(const CueTrack& cueTrack);

View file

@ -65,7 +65,7 @@ constexpr const char* statusToString(Status e) noexcept
#include <QString> #include <QString>
static Status stringToStatus(QString *statusStr) { static Status stringToStatus(QString *statusStr) {
if (!statusStr->compare("Stopped")) return Stopped; if (!statusStr->compare("Stop")) return Stopped;
else if (!statusStr->compare("Paused") ) return Paused; else if (!statusStr->compare("Paused") ) return Paused;
else if (!statusStr->compare("Play 1")) return PlayingOnce; else if (!statusStr->compare("Play 1")) return PlayingOnce;
else if (!statusStr->compare("Play Loop")) return PlayingLoop; else if (!statusStr->compare("Play Loop")) return PlayingLoop;

View file

@ -139,8 +139,6 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
#ifndef NOGUI #ifndef NOGUI
if (m_ui) { if (m_ui) {
m_lmsUi->m_aw->filterParamChanged(layer, channel, value); m_lmsUi->m_aw->filterParamChanged(layer, channel, value);
m_played.clear();
m_played.append(m_ola->getValue(layer, DMX_FILE));
} }
#endif #endif
} }
@ -175,11 +173,13 @@ void libreMediaServerAudio::refreshUi() {
if (m_currentStatus[i] == Status::PlayingOnce) { if (m_currentStatus[i] == Status::PlayingOnce) {
m_currentStatus[i] = Status::Stopped; m_currentStatus[i] = Status::Stopped;
m_lmsUi->m_aw->playbackChanged(i, Status::Stopped); m_lmsUi->m_aw->playbackChanged(i, Status::Stopped);
m_lmsUi->m_showPlayer->cueTrackAtEnd(i);
} }
if (m_currentStatus[i] == Status::PlayingFolder) { if (m_currentStatus[i] == Status::PlayingFolder) {
uint last = m_played.last(); uint last = 0;
if (!m_played.isEmpty())
last = m_played.last() + 1;
int folder = m_ola->getValue(i, DMX_FOLDER); int folder = m_ola->getValue(i, DMX_FOLDER);
last++;
if (last < m_mediaLibrary->getMediaFolderCount(folder)) { if (last < m_mediaLibrary->getMediaFolderCount(folder)) {
this->loadMedia(i, folder, last); this->loadMedia(i, folder, last);
m_mae.playbackChanged(i, Status::PlayingFolder); m_mae.playbackChanged(i, Status::PlayingFolder);
@ -187,6 +187,7 @@ void libreMediaServerAudio::refreshUi() {
else { else {
m_currentStatus[i] = Status::Stopped; m_currentStatus[i] = Status::Stopped;
m_lmsUi->m_aw->playbackChanged(i, Status::Stopped); m_lmsUi->m_aw->playbackChanged(i, Status::Stopped);
m_lmsUi->m_showPlayer->cueTrackAtEnd(i);
} }
} }
else if (m_currentStatus[i] == Status::PlayingFolderLoop) { else if (m_currentStatus[i] == Status::PlayingFolderLoop) {

View file

@ -44,6 +44,18 @@ void ShowPlayer::go()
emit uiLoadMedia(current->audioLayer, current->filePath.data()); emit uiLoadMedia(current->audioLayer, current->filePath.data());
updateTrackStateInEngine(current); updateTrackStateInEngine(current);
emit uiPlaybackChanged(current->audioLayer, current->status); emit uiPlaybackChanged(current->audioLayer, current->status);
switch (current->status) {
case Status::PlayingOnce:
case Status::PlayingLoop:
case Status::PlayingFolder:
case Status::PlayingFolderLoop:
case Status::PlayingFolderRandom:
current->active = true;
break;
default:
current->active = false;
}
ui->cueListWidget->redrawCueTrackList();
filesLoaded++; filesLoaded++;
} }
@ -78,3 +90,8 @@ void ShowPlayer::saveCueTrackList()
return; return;
ui->cueListWidget->saveCueTrackList(fileName.toStdString()); ui->cueListWidget->saveCueTrackList(fileName.toStdString());
} }
void ShowPlayer::cueTrackAtEnd(int layer)
{
ui->cueListWidget->cueTrackAtEnd(layer);
}

View file

@ -24,6 +24,9 @@ public:
explicit ShowPlayer(QWidget *parent = nullptr); explicit ShowPlayer(QWidget *parent = nullptr);
~ShowPlayer(); ~ShowPlayer();
public slots:
void cueTrackAtEnd(int layer);
private: private:
Ui::ShowPlayer *ui; Ui::ShowPlayer *ui;
Status currentStatus = Status::Iddle; Status currentStatus = Status::Iddle;
@ -31,9 +34,8 @@ private:
int layersUsed[MAX_LAYERS]; int layersUsed[MAX_LAYERS];
int lastIndex = 0; int lastIndex = 0;
void updateTrackStateInEngine(CueTrack *track);
private slots: private slots:
void updateTrackStateInEngine(CueTrack *track);
void onAddTrack(); void onAddTrack();
void go(); void go();
void changeSelectedIndex(int i); void changeSelectedIndex(int i);

View file

@ -134,7 +134,7 @@
<number>0</number> <number>0</number>
</property> </property>
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum> <enum>QLayout::SetDefaultConstraint</enum>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>100</number> <number>100</number>