wip en active, hacer lista con las cues activas?
This commit is contained in:
parent
86e866c996
commit
0795157d5f
7 changed files with 67 additions and 25 deletions
|
@ -145,15 +145,20 @@ 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)
|
||||||
{
|
{
|
||||||
updateSelectedCueTrack(true);
|
updateSelectedCueTrack(true);
|
||||||
emit changeSelectedIndex(0);
|
emit changeSelectedIndex(0);
|
||||||
|
} else
|
||||||
|
redrawCueTrackList();
|
||||||
|
if (lastUserCueNumber < t->userNumber)
|
||||||
|
lastUserCueNumber = t->userNumber + 10;
|
||||||
} else
|
} else
|
||||||
redrawCueTrackList();
|
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();
|
||||||
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Add table
Reference in a new issue