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;
cueTrackLoadDefaults(t);
EditCueTrackWidget dialog(t, this);
if (dialog.exec() == QDialog::Accepted)
if (dialog.exec() == QDialog::Accepted) {
t->active = false;
addCueTrack(t);
if (m_size == 1)
{
@ -153,7 +154,11 @@ void CueTrackListWidget::createNewCueTrack()
emit changeSelectedIndex(0);
} else
redrawCueTrackList();
}
if (lastUserCueNumber < t->userNumber)
lastUserCueNumber = t->userNumber + 10;
} else
delete (t);
}
void CueTrackListWidget::editCueTrack()
{
@ -164,6 +169,8 @@ void CueTrackListWidget::editCueTrack()
redrawCueTrackList();
emit changeSelectedIndex(selectedIndex);
}
if (lastUserCueNumber < current->userNumber)
lastUserCueNumber = current->userNumber + 10;
}
void CueTrackListWidget::deleteCueTrack()
@ -223,7 +230,7 @@ void CueTrackListWidget::redrawCueTrackList()
int selected = cueTracks.at(selectedIndex)->userNumber;
clearTableWidget();
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);
sortCueTrackList();
selectedIndex = 0;
@ -309,7 +316,12 @@ void CueTrackListWidget::loadCueTrackList(std::string filename)
t->waitOut = xmlReader.text().toInt();
}
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") {
t->name = xmlReader.text().toString().toStdString();
@ -329,9 +341,7 @@ void CueTrackListWidget::loadCueTrackList(std::string filename)
else if (elementName == "audioLayer") {
t->audioLayer = xmlReader.text().toInt();
}
else if (elementName == "active") {
t->active = xmlReader.text().toString().toLower() == "true";
}
t->active = false;
}
}
xmlReader.readNext();
@ -393,9 +403,6 @@ std::string CueTrackListWidget::cueTrackToXml(const CueTrack& cueTrack)
xml += " <entryPoint>" + std::to_string(cueTrack.entryPoint) + "</entryPoint>\n";
xml += " <exitPoint>" + std::to_string(cueTrack.exitPoint) + "</exitPoint>\n";
xml += " <audioLayer>" + std::to_string(cueTrack.audioLayer) + "</audioLayer>\n";
xml += " <active>";
xml += (cueTrack.active ? "true" : "false");
xml += "</active>\n";
xml += " </CueTrack>\n";
return xml;
}
@ -528,3 +535,17 @@ void CueTrackListWidget::clearTableWidget()
tableWidget->clear();
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 setLastUserCueNumber(size_t n) { lastUserCueNumber = n; }
size_t getLastUserCueNumber() { return lastUserCueNumber; }
void cueTrackAtEnd(int layer);
void redrawCueTrackList();
private:
std::vector<CueTrack *> cueTracks;
@ -39,7 +41,7 @@ private:
int m_size = 0;
int size() { return m_size; }
int selectedIndex = 0;
size_t lastUserCueNumber = 0;
int lastUserCueNumber = 0;
private slots:
void addCueTrack(CueTrack* cue);
@ -52,7 +54,6 @@ private slots:
void cueTrackLoadDefaults(CueTrack * t);
void copyCueTrack(CueTrack *src, CueTrack *dst);
void sortCueTrackList();
void redrawCueTrackList();
void clearTableWidget();
std::string cueTrackToXml(const CueTrack& cueTrack);

View file

@ -65,7 +65,7 @@ constexpr const char* statusToString(Status e) noexcept
#include <QString>
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("Play 1")) return PlayingOnce;
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
if (m_ui) {
m_lmsUi->m_aw->filterParamChanged(layer, channel, value);
m_played.clear();
m_played.append(m_ola->getValue(layer, DMX_FILE));
}
#endif
}
@ -175,11 +173,13 @@ void libreMediaServerAudio::refreshUi() {
if (m_currentStatus[i] == Status::PlayingOnce) {
m_currentStatus[i] = Status::Stopped;
m_lmsUi->m_aw->playbackChanged(i, Status::Stopped);
m_lmsUi->m_showPlayer->cueTrackAtEnd(i);
}
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);
last++;
if (last < m_mediaLibrary->getMediaFolderCount(folder)) {
this->loadMedia(i, folder, last);
m_mae.playbackChanged(i, Status::PlayingFolder);
@ -187,6 +187,7 @@ void libreMediaServerAudio::refreshUi() {
else {
m_currentStatus[i] = Status::Stopped;
m_lmsUi->m_aw->playbackChanged(i, Status::Stopped);
m_lmsUi->m_showPlayer->cueTrackAtEnd(i);
}
}
else if (m_currentStatus[i] == Status::PlayingFolderLoop) {

View file

@ -44,6 +44,18 @@ void ShowPlayer::go()
emit uiLoadMedia(current->audioLayer, current->filePath.data());
updateTrackStateInEngine(current);
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++;
}
@ -78,3 +90,8 @@ void ShowPlayer::saveCueTrackList()
return;
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);
~ShowPlayer();
public slots:
void cueTrackAtEnd(int layer);
private:
Ui::ShowPlayer *ui;
Status currentStatus = Status::Iddle;
@ -31,9 +34,8 @@ private:
int layersUsed[MAX_LAYERS];
int lastIndex = 0;
void updateTrackStateInEngine(CueTrack *track);
private slots:
void updateTrackStateInEngine(CueTrack *track);
void onAddTrack();
void go();
void changeSelectedIndex(int i);

View file

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