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 + + +