Cleaned old code. Changed the GUI refresh. Now there is a global receive

dmx instead one by layer
This commit is contained in:
santi 2014-08-13 22:51:25 +02:00
parent 90f3b093c0
commit d7db568784
10 changed files with 78 additions and 67 deletions

View file

@ -7,14 +7,14 @@
#include <QFile>
#include <QTime>
#include <time.h> // nanosleep y la chapuza de liberar el buffer
//#include <time.h> // nanosleep y la chapuza de liberar el buffer
AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
QGroupBox(parent)
, m_suspendResumeButton(0)
, m_watchDMX(new QTimer(this))
, m_progressCounter(new QTime(0,0,0,1))
, m_progressMs(0)
// , m_progressCounter(new QTime(0,0,0,1))
// , m_progressMs(0)
, m_currentMedia(" ")
, m_running(false)
{
@ -26,9 +26,9 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
m_statusLabel = new QLabel;
m_statusLabel->setText(STATUS_LABEL);
m_statusValue = new QLabel;
m_receiveDMX = new QCheckBox("Receiving DMX", this);
m_receiveDMX->setChecked(false);
status->addWidget(m_receiveDMX);
// m_receiveDMX = new QCheckBox("Receiving DMX", this);
// m_receiveDMX->setChecked(false);
// status->addWidget(m_receiveDMX);
status->addWidget(m_statusLabel);
status->addWidget(m_statusValue);
layout->addLayout(status);
@ -37,7 +37,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
m_folderLabel = new QLabel;
m_folderLabel->setText(FOLDER_LABEL);
m_folderValue = new QLabel;
m_folderValue->setMaximumWidth(250);
m_folderValue->setMaximumWidth(200);
folderLoaded->addWidget(m_folderLabel);
folderLoaded->addWidget(m_folderValue);
layout->addLayout(folderLoaded);
@ -46,7 +46,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
m_fileLabel = new QLabel;
m_fileLabel->setText(FILE_LABEL);
m_fileValue = new QLabel;
m_fileValue->setMaximumWidth(250);
m_fileValue->setMaximumWidth(200);
fileLoaded->addWidget(m_fileLabel);
fileLoaded->addWidget(m_fileValue);
layout->addLayout(fileLoaded);
@ -102,7 +102,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
connect(m_watchDMX, SIGNAL(timeout()),
this, SLOT(watchDMXExpired()));
m_watchDMX->start(123);
m_watchDMX->start(243);
}
AudioLayerWidget::~AudioLayerWidget()
@ -141,7 +141,7 @@ void AudioLayerWidget::loadMedia(QString file)
}
m_music.setAttenuation(0);
m_progressCounter->restart();
// m_progressCounter->restart();
durationChanged(m_music.getDuration().asMilliseconds());
fileLoaded(file);
@ -160,15 +160,15 @@ void AudioLayerWidget::fileLoaded(QString file)
m_folderValue->setText(list.at(size - 2));
m_fileValue->setText(list.at(size - 1));
}
m_progressMs = 0;
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
// m_progressMs = 0;
// m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
}
/*
void AudioLayerWidget::notified()
{
}
*/
// duration in miliseconds
void AudioLayerWidget::durationChanged(qint64 dur)
{
@ -179,13 +179,13 @@ void AudioLayerWidget::durationChanged(qint64 dur)
void AudioLayerWidget::play()
{
m_music.play();
m_progressCounter->restart();
// m_progressCounter->restart();
}
void AudioLayerWidget::pause()
{
m_music.pause();
m_progressCounter->restart();
// m_progressCounter->restart();
}
void AudioLayerWidget::stop()
@ -194,34 +194,45 @@ void AudioLayerWidget::stop()
}
void AudioLayerWidget::watchDMXExpired() {
m_receiveDMX->setChecked(false);
// m_receiveDMX->setChecked(false);
int progress;
switch (m_music.getStatus()) {
case sf::SoundSource::Playing:
m_progressMs += m_progressCounter->restart();
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
// m_progressMs += m_progressCounter->restart();
progress = m_music.getPlayingOffset().asMilliseconds();
m_progressSlider->setValue(progress);
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(progress));
m_statusValue->setText(PLAY_LABEL);
m_progressSlider->setValue(m_progressMs);
m_suspendResumeButton->setText(tr(PLAY_LABEL));
break;
case sf::SoundSource::Paused:
m_statusValue->setText(PAUSE_LABEL);
m_suspendResumeButton->setText(tr(SUSPEND_LABEL));
break;
case sf::SoundSource::Stopped:
m_progressCounter->restart();
m_progressMs = 0;
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
// m_progressCounter->restart();
// m_progressMs = 0;
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(0));
m_statusValue->setText(STOP_LABEL);
m_progressSlider->setValue(m_progressMs);
m_suspendResumeButton->setText(tr(SUSPEND_LABEL));
m_progressSlider->setValue(0);
break;
}
}
/*
void AudioLayerWidget::updateWatchDMX(bool b)
{
m_receiveDMX->setChecked(b);
// m_receiveDMX->setChecked(b);
}
*/
void AudioLayerWidget::toggleSuspendResume()
{
if (m_music.getStatus() == sf::SoundSource::Playing) {
m_music.pause();
// m_suspendResumeButton->setText(tr(SUSPEND_LABEL));
} else {
m_music.play();
// m_suspendResumeButton->setText(tr(PLAY_LABEL));
}
}

View file

@ -32,7 +32,7 @@ public:
void pause();
void setVol(qreal vol);
void resume();
void updateWatchDMX(bool b);
// void updateWatchDMX(bool b);
public slots:
@ -66,8 +66,8 @@ private:
QCheckBox *m_receiveDMX;
QTimer *m_watchDMX;
QTime *m_progressCounter;
quint64 m_progressMs;
// QTime *m_progressCounter;
// quint64 m_progressMs;
QString m_currentMedia;
@ -76,7 +76,7 @@ private:
sf::Music m_music;
private slots:
void notified();
// void notified();
void fileLoaded(QString file);
void durationChanged(qint64 dur);
void watchDMXExpired();

View file

@ -38,3 +38,4 @@ void AudioMasterWidget::updateWatchDMX()
{
m_receiveDMX->setChecked(true);
}

View file

@ -42,9 +42,9 @@ void AudioWidget::playbackChanged(int layer, Status status)
break;
}
}
/*
void AudioWidget::layerReceived(int layer)
{
QLayoutItem * const item = layout->itemAt(layer);
dynamic_cast<AudioLayerWidget *>(item->widget())->updateWatchDMX(true);
}
}*/

View file

@ -26,7 +26,7 @@ public slots:
void mediaLoaded(int layer, QString media );
void volChanged(int layer, qreal vol);
void playbackChanged(int layer, Status status);
void layerReceived(int layer);
// void layerReceived(int layer);
};
#endif // AUDIOWIDGET_H

View file

@ -18,7 +18,7 @@
*/
#include "libremediaserver-audio.h"
QTextEdit * libreMediaServerAudio::textEdit = 0;
// QTextEdit * libreMediaServerAudio::textEdit = 0;
/**
/ Constructor
@ -33,7 +33,7 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
// Inicia la lectura de dmx a través de ola
ola = new olaThread();
Q_CHECK_PTR(ola);
/*
if (args.contains("-log")) {
// Inicia el widget Terminal
textEdit = new QTextEdit;
@ -44,7 +44,16 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
addDockWidget(Qt::BottomDockWidgetArea, bottomWidget);
connect(ola, SIGNAL(toTerminal(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
}
}*/
/* connect(MediaLibrary::getInstance(), SIGNAL(debug(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
connect(MediaLibrary::getInstance(), SIGNAL(warning(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
*/
this->setWindowTitle(VERSION);
// qDebug() << QDate::currentDate().toString() << " "<< QTime::currentTime().toString();
@ -60,12 +69,6 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
ola->blockSignals(true);
ola->start(QThread::TimeCriticalPriority );
/* connect(MediaLibrary::getInstance(), SIGNAL(debug(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
connect(MediaLibrary::getInstance(), SIGNAL(warning(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
*/
// Inicia el widget Master.
amw = new AudioMasterWidget(this);
QDockWidget *topWidget = new QDockWidget(tr("Master"), this);
@ -85,8 +88,8 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
ola, SLOT( setLayersNumber(int)));
connect(set, SIGNAL( DMXConf(dmxSetting ) ),
ola, SLOT( setDMXConf(dmxSetting) ) );
connect(ola, SIGNAL (layerReceived(int)),
aw, SLOT(layerReceived(int)));
connect(ola, SIGNAL (layerReceived()),
amw, SLOT(updateWatchDMX()));
// Lee la configuración por defecto
set->readDefaultFile();
@ -224,7 +227,7 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
/**
* Send the DMX info to Pure Data in init
*
*/
*
void libreMediaServerAudio::loadbang() {
ola->resendDmx();
}
}*/

View file

@ -26,7 +26,7 @@
#include <QFileDialog>
#include <QTextStream>
#include <QWebView>
#include <QUrl>
//#include <QUrl>
#include <QVBoxLayout>
#include <QTextEdit>
@ -51,7 +51,7 @@ public:
Ui::LibreMediaServerAudio ui;
static QTextEdit *textEdit; // Terminal de feedback
// static QTextEdit *textEdit; // Terminal de feedback
protected:
@ -74,11 +74,7 @@ public slots:
private slots:
/**
* @brief loadbang The audio motor engine is setup. Resend the dmx info to maintain aupdated to the current state
*/
void loadbang();
// void loadbang();
void olasetup();
void dmxInput(int layer, int channel, int value);

View file

@ -19,16 +19,16 @@
*/
#include <QApplication>
#include <QMutex>
#include <QMutexLocker>
//#include <QMutex>
//#include <QMutexLocker>
#include "libremediaserver-audio.h"
// Handler for pipe the stderr to a log file and texEdit
bool initMessageHandler = false;
QFile outFile;
QMutex mutex;
//bool initMessageHandler = false;
//QFile outFile;
//QMutex mutex;
//QMutexLocker mutexLocker(mutex);
/*
void MessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
Q_UNUSED(context);
@ -56,7 +56,7 @@ void MessageHandler(QtMsgType type, const QMessageLogContext &context, const QSt
initMessageHandler = true;
}
QTextStream ts(&outFile);*/
if (libreMediaServerAudio::textEdit == 0)
/* if (libreMediaServerAudio::textEdit == 0)
{
QByteArray localMsg = msg.toLocal8Bit();
switch (type) {
@ -134,7 +134,7 @@ void MessageHandler(QtMsgType type, const QMessageLogContext &context, const QSt
// libreMediaServerAudio::textEdit->append(txt);
}
// mutex.unlock();
}
}*/
int main(int argc, char *argv[])
{
@ -145,7 +145,7 @@ int main(int argc, char *argv[])
{
qInstallMessageHandler(MessageHandler);
}*/
qInstallMessageHandler(MessageHandler);
// qInstallMessageHandler(MessageHandler);
QApplication app(argc, argv);
QStringList args = app.arguments();

View file

@ -88,10 +88,10 @@ void olaThread::NewDmx(const ola::client::DMXMetadata &data,
m_counter++;
gettimeofday(&m_last_data, NULL);
uint universe = data.universe;
emit layerReceived();
for (int i = 0; i < m_layersNumber; i++) { // loop for reading the channels by layer.
if(m_settings.at(i).universe == universe) { // Compare if the layer is from this universe
if ( m_settings.at(i).address > -1 ) { // AND if the DMX address is 0 or greater, process this layer.
emit layerReceived(i);
for (int j = 0; j < LAYER_CHANNELS; j++){
int value = buffer.Get((m_settings.at(i).address) + j); // Get the value for this channel.
if (m_dmx[i][j] != value) { // Compare the new value with the old value.

View file

@ -100,7 +100,7 @@ signals:
void finished(); // Signal for closing. Not used now.
void dmxOutput(int layer, int channel, int value); // Signal when a channel has changed
void toTerminal(QString message);
void layerReceived(int i);
void layerReceived();
};
using namespace ola;