diff --git a/docs/lms-audio.xlm b/docs/lms-audio.xlm
deleted file mode 100644
index b2ea7ed..0000000
--- a/docs/lms-audio.xlm
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/docs/lms-audio.xml b/docs/lms-audio.xml
new file mode 100644
index 0000000..6d15b0d
--- /dev/null
+++ b/docs/lms-audio.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/docs/roadmap.txt b/docs/roadmap.txt
index 9e4f017..a92bd03 100644
--- a/docs/roadmap.txt
+++ b/docs/roadmap.txt
@@ -42,3 +42,8 @@ v 0.3.0
- ampliar writer para recibir un número n de entradas y escribirlas cada una en un buffer
- aislar miniaudio del callback dmx tal como hemos hecho con la Ui, al menos las operaciones lentas como cargar medios.
- en load media usar un fence para actualizar mediaLoaded.
+- Video
+
+v 0.2.1 showplayer
+
+
diff --git a/lms-resources.qrc b/lms-resources.qrc
index 21a0629..a8112f0 100644
--- a/lms-resources.qrc
+++ b/lms-resources.qrc
@@ -10,6 +10,7 @@
resources/save_button.png
resources/icon.png
resources/panic_button.jpg
- resources/go_button.jpeg
+ resources/go_button.jpeg
+ resources/restore_button.jpg
diff --git a/resources/icon.png b/resources/icon.png
new file mode 100644
index 0000000..f9be058
Binary files /dev/null and b/resources/icon.png differ
diff --git a/resources/panic_button.jpg b/resources/panic_button.jpg
new file mode 100644
index 0000000..1e5e62d
Binary files /dev/null and b/resources/panic_button.jpg differ
diff --git a/resources/restore_button.jpg b/resources/restore_button.jpg
new file mode 100644
index 0000000..5de74ed
Binary files /dev/null and b/resources/restore_button.jpg differ
diff --git a/src/cuetrackwidget.ui b/src/cuetrackwidget.ui
index 314782b..675d225 100644
--- a/src/cuetrackwidget.ui
+++ b/src/cuetrackwidget.ui
@@ -708,8 +708,23 @@
+ -
+
+
+
+ 10
+
+
+
+ MultiCue
+
+
+ Qt::AlignCenter
+
+
+
-
-
+
0
@@ -727,7 +742,7 @@
<html><head/><body><p>PLay next cue at same time this cue, do not wait to finish the cue.</p></body></html>
- Qt::RightToLeft
+ Qt::LeftToRight
@@ -744,21 +759,6 @@
- -
-
-
-
- 10
-
-
-
- MultiCue
-
-
- Qt::AlignCenter
-
-
-
diff --git a/src/defines.h b/src/defines.h
index 1844856..c530664 100644
--- a/src/defines.h
+++ b/src/defines.h
@@ -4,7 +4,7 @@
#define VERSION "LibreMediaServerAudio v0.2.0 Antigona"
#define COPYRIGHT "(C) 2014-2024 Santi Noreña "
#define LICENSE "GPL3 Licensed. See LICENSE.txt."
-#define DEFAULT_FILE "lms-audio.xlm"
+#define DEFAULT_FILE "lms-audio.xml"
#define MAX_LAYERS 4
#define MAX_AUDIODEVICES 8
#define FORMAT ma_format_f32 /* Must always be f32. */
diff --git a/src/libremediaserver-audio.cpp b/src/libremediaserver-audio.cpp
index c2bd32b..6c287ff 100644
--- a/src/libremediaserver-audio.cpp
+++ b/src/libremediaserver-audio.cpp
@@ -24,7 +24,7 @@
libreMediaServerAudio::libreMediaServerAudio()
{
m_settings = Settings::getInstance(this);
- m_settings->readFile();
+ //m_settings->readFile();
m_ui = m_settings->getShowUi();
m_layersQty = m_settings->getLayersNumber();
for (uint i = 0; i < m_layersQty; i++) {
@@ -74,7 +74,7 @@ libreMediaServerAudio::~libreMediaServerAudio()
Settings::getInstance()->setValue("showPlayerSize", m_lmsUi->m_showPlayer->size());
Settings::getInstance()->setValue("showPlayerGeometry", m_lmsUi->m_showPlayer->saveGeometry());
Settings::getInstance()->endGroup();
- m_settings->settingsSaver();
+ //m_settings->settingsSaver();
if (m_settings->getShowPlayerActive())
m_lmsUi->m_showPlayer->saveCueTrackList("lastshow.xml");
delete m_lmsUi;
@@ -356,6 +356,7 @@ void libreMediaServerAudio::uiSliderChanged(int layer, Slider s, int value)
m_updateUi[layer][2] = value;
break;
case Slider::Bypass:
+ // ToDo: sigsev when no dmx, resolve this whitout dmxSettings, is it needed=
m_mae.setBypass(m_dmxSettings.at(layer).audioDevice, layer, value);
break;
case Slider::Bus1:
diff --git a/src/settings.cpp b/src/settings.cpp
index fc17589..f900740 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -19,7 +19,31 @@ Settings::Settings(QObject *parent) :
m_audioDeviceQty = 0;
for (uint i = 0; i < MAX_AUDIODEVICES; i++)
m_audioDeviceId[i] = -1;
- settingsLoader();
+ if (QFile::exists(fileName()))
+ settingsLoader();
+ else if (QFile::exists(DEFAULT_FILE))
+ readFromFile(DEFAULT_FILE);
+ else {
+ qDebug() << "Can not read initial settings, making some standard";
+ setValue("lmsAudio/ui", 1);
+ setValue("lmsAudio/dmxActive", 0);
+ setValue("lmsAudio/showPlayerActive", 1);
+ setValue("lmsAudio/layersNumber", 2);
+ setValue("lmsAudio/path", "../media/");
+ setValue("audioDevice/devicesNumber", 2);
+ setValue("audioDevice/id0", 4);
+ setValue("audioDevice/id1", 3);
+ setValue("layers/layer0/dmx", 1);
+ setValue("layers/layer0/universe", 1);
+ setValue("layers/layer0/id", 0);
+ setValue("layers/layer0/audioDevice", 0);
+ setValue("layers/layer1/dmx", 26);
+ setValue("layers/layer1/universe", 1);
+ setValue("layers/layer1/id", 1);
+ setValue("layers/layer1/audioDevice", 0);
+ sync();
+ settingsLoader();
+ }
}
Settings::~Settings() {
@@ -99,9 +123,8 @@ void Settings::readFromFile(QString file) {
QMessageBox::critical(NULL,"Load XML File Problem",
QString("Couldn't open %1 to load settings").arg(file),
QMessageBox::Ok);
- // Instead exit give the oportunity to load another file or define the settings
- qCritical("Load XML File Problem");
- exit(1);
+ qCritical("Load XML File Problem");
+ return;
}
QXmlStreamReader* xmlReader = new QXmlStreamReader(xmlFile);
while(!xmlReader->atEnd() && !xmlReader->hasError()) {
diff --git a/src/showplayer.cpp b/src/showplayer.cpp
index 9ac3f5a..613017b 100644
--- a/src/showplayer.cpp
+++ b/src/showplayer.cpp
@@ -13,7 +13,12 @@ ShowPlayer::ShowPlayer(QWidget *parent) :
connect(ui->LoadCueList, SIGNAL(clicked()), this, SLOT(loadCueTrackList()));
connect(ui->goButton, SIGNAL(clicked()), this, SLOT(go()));
connect(ui->cueListWidget, SIGNAL(changeSelectedIndex(int)), this, SLOT(updateIndex(int)));
- currentStatus = Status::Iddle;
+ connect(ui->panicButton, SIGNAL(clicked()), this, SLOT(panicButtonClicked()));
+ connect(ui->restoreButton, SIGNAL(clicked()), this, SLOT(restoreButtonClicked()));
+ connect(ui->CopyCue, SIGNAL(clicked()), ui->cueListWidget, SLOT(copyCueTrack()));
+ connect(ui->PasteCue, SIGNAL(clicked()), ui->cueListWidget, SLOT(pasteCueTrack()));
+ connect(ui->CutCue, SIGNAL(clicked()), ui->cueListWidget, SLOT(cutCueTrack()));
+ currentStatus = Status::Iddle;
for(int i = 0; i < MAX_LAYERS; i++) {
layersUsed[i] = -1;
cueTrackWidgetPlaying[i] = nullptr;
@@ -120,12 +125,12 @@ void ShowPlayer::cueTrackAtEnd(int layer)
void ShowPlayer::cueFinished(int c)
{
- if (!current[c])
- return;
- if (!current[c]->stopAtEnd)
+ if (!current[c])
+ return;
+ if (!current[c]->stopAtEnd)
this->go();
- if (current[c]->status == Status::Stopped || current[c]->status == Status::Paused)
- cueTrackAtEnd(c);
+ if (current[c]->status == Status::Stopped || current[c]->status == Status::Paused)
+ cueTrackAtEnd(c);
}
CueTrackWidget *ShowPlayer::addCueTrackWidget(CueTrack* track) {
@@ -178,4 +183,28 @@ void ShowPlayer::loadCueTrackList(QString path) {
void ShowPlayer::saveCueTrackList(QString path) {
ui->cueListWidget->saveCueTrackList(path.toStdString());
-}
\ No newline at end of file
+}
+
+void ShowPlayer::panicButtonClicked() {
+ for (int i = 0; i < MAX_LAYERS; i++) {
+ if (layersUsed[i] != -1) {
+ CueTrack* track = current[i];
+ if (track && track->active) {
+ emit uiSliderChanged(track->audioLayer, Slider::Volume, 0);
+ emit uiPlaybackChanged(track->audioLayer, Status::Paused);
+ }
+ }
+ }
+}
+
+void ShowPlayer::restoreButtonClicked() {
+ for (int i = 0; i < MAX_LAYERS; i++) {
+ if (layersUsed[i] != -1) {
+ CueTrack* track = current[i];
+ if (track) {
+ emit uiSliderChangedFaded(track->audioLayer, Slider::Volume, track->volume * 655.35, track->fadeIn, track->fadeOut);
+ emit uiPlaybackChanged(track->audioLayer, track->status);
+ }
+ }
+ }
+}
diff --git a/src/showplayer.h b/src/showplayer.h
index 4054904..6f82b4a 100644
--- a/src/showplayer.h
+++ b/src/showplayer.h
@@ -40,6 +40,7 @@ private:
CueTrack *prevCue[MAX_LAYERS];
CueTrackWidget *cueTrackWidgetPlaying[MAX_LAYERS];
CueTrackWidget *addCueTrackWidget(CueTrack *track);
+ std::map> prePanicState;
private slots:
void updateTrackStateInEngine(CueTrack *track);
@@ -53,6 +54,8 @@ private slots:
void goAction(int channel);
void updateIndex(int index);
void fade(Slider s, int start, CueTrack *track);
+ void panicButtonClicked();
+ void restoreButtonClicked();
signals:
void uiPlaybackChanged(int layer, Status s);
diff --git a/src/showplayer.ui b/src/showplayer.ui
index 42c4603..8eef3ec 100644
--- a/src/showplayer.ui
+++ b/src/showplayer.ui
@@ -286,6 +286,9 @@
Qt::ClickFocus
+
+ Panic!
+
...
@@ -295,7 +298,7 @@
- 96
+ 120
120
@@ -303,6 +306,24 @@
P
+
+
+ Restore
+
+
+
+
+
+
+ :/buttons/resources/restore_button.jpg:/buttons/resources/restore_button.jpg
+
+
+
+ 120
+ 120
+
+
+