From 5a7a82736febc489a258d9c53c342f9452781714 Mon Sep 17 00:00:00 2001 From: snt Date: Sat, 4 May 2024 16:45:05 +0200 Subject: [PATCH] working UI controls --- src/audiolayerwidget.cpp | 25 +++++++++++++------------ src/audiolayerwidget.h | 6 +++--- src/audiowidget.cpp | 29 ++++++++++------------------- src/audiowidget.h | 16 ++++++---------- src/libremediaserver-audio-gui.cpp | 2 +- src/libremediaserver-audio.cpp | 22 ++++++++++++++++++++++ src/libremediaserver-audio.h | 2 ++ src/medialibrary.h | 6 ------ src/slidergroup.cpp | 2 -- src/slidergroup.h | 2 +- 10 files changed, 58 insertions(+), 54 deletions(-) diff --git a/src/audiolayerwidget.cpp b/src/audiolayerwidget.cpp index 23dcb9a..2dd1d94 100644 --- a/src/audiolayerwidget.cpp +++ b/src/audiolayerwidget.cpp @@ -24,7 +24,6 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer): "color: white;" "background-color: black;" ); - playback->addWidget(m_fileValue); playback->setSpacing(0); playback->setContentsMargins(0, 0, 0, 0); @@ -33,7 +32,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer): m_suspendResumeButton = new QPushButton(this); m_suspendResumeButton->setText(StatusStr[Status::Iddle]); //m_suspendResumeButton->setMaximumWidth(180); - //connect(m_suspendResumeButton, SIGNAL(clicked()), SLOT(toggleSuspendResume())); + connect(m_suspendResumeButton, SIGNAL(clicked()), SLOT(toggleSuspendResume())); layout->addWidget(m_suspendResumeButton); m_progress = new QProgressBar(this); @@ -47,19 +46,21 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer): m_progressTime = new QTimeEdit; m_progressTime->setToolTip("Current Time"); m_progressTime->setObjectName("Current Time"); - m_progressTime->setDisplayFormat("h:mm:ss:zzz"); + m_progressTime->setDisplayFormat("mm:ss:zz"); m_progressTime->setReadOnly(true); m_progressTime->setButtonSymbols(QAbstractSpinBox::NoButtons); - //m_progressTime->setMaximumWidth(80); + m_progressTime->setMaximumWidth(75); m_progressTime->setFocusPolicy(Qt::NoFocus); + m_progressTime->setAlignment(Qt::AlignHCenter); m_totalTimeValue = new QTimeEdit; m_totalTimeValue->setObjectName("Track Length"); m_totalTimeValue->setToolTip("Track Length"); - m_totalTimeValue->setDisplayFormat("h:mm:ss:zzz"); + m_totalTimeValue->setDisplayFormat("mm:ss:zz"); m_totalTimeValue->setReadOnly(true); m_totalTimeValue->setButtonSymbols(QAbstractSpinBox::NoButtons); - //m_totalTimeValue->setMaximumWidth(80); + m_totalTimeValue->setMaximumWidth(75); m_totalTimeValue->setFocusPolicy(Qt::NoFocus); + m_totalTimeValue->setAlignment(Qt::AlignHCenter); QHBoxLayout *status = new QHBoxLayout; status->addWidget(m_progressTime); status->addWidget(m_totalTimeValue); @@ -67,15 +68,15 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer): QHBoxLayout *volumeBox = new QHBoxLayout; m_volume = new SliderGroup("Vol", 0 , 100, 2, NULL); volumeBox->addWidget(m_volume); - connect(m_volume, SIGNAL(valueChanged(float)), this, SLOT(volumeChanged(float))); + connect(m_volume, SIGNAL(valueChanged(int)), this, SLOT(volumeChanged(int))); m_pan = new SliderGroup("Pan", 0 , 255, 0, NULL); volumeBox->addWidget(m_pan); - connect(m_pan, SIGNAL(valueChanged(float)), this, SLOT(panChanged(float))); + connect(m_pan, SIGNAL(valueChanged(int)), this, SLOT(panChanged(int))); m_pitch = new SliderGroup("Pitch", 0 , 255, 0, NULL); volumeBox->addWidget(m_pitch); volumeBox->setSpacing(0); volumeBox->setContentsMargins(0, 0, 0, 0); - connect(m_pitch, SIGNAL(valueChanged(float)), this, SLOT(pitchChanged(float))); + connect(m_pitch, SIGNAL(valueChanged(int)), this, SLOT(pitchChanged(int))); layout->addLayout(volumeBox); layout->setAlignment(Qt::AlignHCenter); layout->setSpacing(0); @@ -89,17 +90,17 @@ AudioLayerWidget::~AudioLayerWidget() } // From UI. -void AudioLayerWidget::volumeChanged(float value) +void AudioLayerWidget::volumeChanged(int value) { emit(uiSliderChanged(m_layer, Slider::Volume, value)); } -void AudioLayerWidget::panChanged(float value) +void AudioLayerWidget::panChanged(int value) { emit(uiSliderChanged(m_layer, Slider::Pan, value)); } -void AudioLayerWidget::pitchChanged(float value) +void AudioLayerWidget::pitchChanged(int value) { emit(uiSliderChanged(m_layer, Slider::Pitch, value)); } diff --git a/src/audiolayerwidget.h b/src/audiolayerwidget.h index df5853a..4f89d17 100644 --- a/src/audiolayerwidget.h +++ b/src/audiolayerwidget.h @@ -39,9 +39,9 @@ private: public slots: void toggleSuspendResume(); - void volumeChanged(float vol); - void panChanged(float pan); - void pitchChanged(float pitch); + void volumeChanged(int vol); + void panChanged(int pan); + void pitchChanged(int pitch); void fileLoaded(QString file); void durationChanged(float dur); void refreshUi(float progress); diff --git a/src/audiowidget.cpp b/src/audiowidget.cpp index 316e43a..58ca7fd 100644 --- a/src/audiowidget.cpp +++ b/src/audiowidget.cpp @@ -1,17 +1,18 @@ #include "audiowidget.h" -AudioWidget::AudioWidget() : - m_layout(new QHBoxLayout()) +AudioWidget::AudioWidget(QWidget *parent) : + QWidget(parent) + , m_layout(new QHBoxLayout()) { for (int i= 0; i < Settings::getInstance()->getLayersNumber(); i++ ) { AudioLayerWidget *alw = new AudioLayerWidget(this, i); m_layout->insertWidget(i, alw); - connect(alw, SIGNAL(uiSliderChanged(int, Slider, int)), this, SLOT(uiSliderAction(int, Slider, int))); - connect(alw, SIGNAL(uiPlaybackChanged(int, Status)), this, SLOT(uiChangePlaybackStatus(int, Status))); + connect(alw, SIGNAL(uiSliderChanged(int, Slider, int)), this, SIGNAL(uiSliderChanged(int, Slider, int))); + connect(alw, SIGNAL(uiPlaybackChanged(int, Status)), this, SIGNAL(uiPlaybackChanged(int, Status))); } m_layout->setSpacing(0); - m_layout->setContentsMargins(0, 0, 0, 0); + m_layout->setContentsMargins(1, 1, 1, 1); setLayout(m_layout); } @@ -49,22 +50,12 @@ void AudioWidget::cursorChanged(int layer, float cursor) AudioLayerWidget *alw = dynamic_cast(item->widget()); alw->refreshUi(cursor); } - -void AudioWidget::uiSliderAction(int layer, Slider s, int value) +/* +void AudioWidget::uiSliderAction(int layer, Slider s, float value) { - switch (s){ - case Slider::Volume: - emit uiVolChanged(layer, value); - break; - case Slider::Pan: - emit uiPanChanged(layer, value); - break; - case Slider::Pitch: - emit uiPitchChanged(layer, value); - break; - } + emit uiSliderChanged(layer, s, value); } void AudioWidget::uiChangePlaybackStatus(int layer, Status s) { emit uiPlaybackChanged(layer, s); -} +}*/ diff --git a/src/audiowidget.h b/src/audiowidget.h index 3314127..ff3adea 100644 --- a/src/audiowidget.h +++ b/src/audiowidget.h @@ -13,7 +13,7 @@ class AudioWidget : public QWidget Q_OBJECT public: - AudioWidget(); + AudioWidget(QWidget *parent = nullptr); void mediaLoaded(int layer, QString media, float duration); void volChanged(int layer, float vol); void panChanged(int layer, int pan); @@ -21,18 +21,14 @@ public: void playbackChanged(int layer, Status status); void cursorChanged(int layer, float cursor); QHBoxLayout *m_layout; - +/* public slots: - void uiSliderAction(int layer, Slider s, int value); + void uiSliderAction(int layer, Slider s, float value); void uiChangePlaybackStatus(int layer, Status s); - +*/ signals: - void uiMediaLoaded(int layer, QString media ); - void uiVolChanged(int layer, float vol); - void uiPanChanged(int layer, int pan); - void uiPitchChanged(int layer, int pitch); - void uiPlaybackChanged(int layer, Status status); - void uiEntryPointChanged(int layer, int cursor); + void uiPlaybackChanged(int layer, Status s); + void uiSliderChanged(int layer, Slider s, int vol); }; #endif // AUDIOWIDGET_H diff --git a/src/libremediaserver-audio-gui.cpp b/src/libremediaserver-audio-gui.cpp index 5c366ac..2d92918 100644 --- a/src/libremediaserver-audio-gui.cpp +++ b/src/libremediaserver-audio-gui.cpp @@ -26,7 +26,7 @@ libreMediaServerAudioUi::libreMediaServerAudioUi(QWidget *parent) { ui.setupUi(this); this->setWindowTitle(VERSION); - m_aw = new AudioWidget; + m_aw = new AudioWidget(this); setCentralWidget(m_aw); m_dmxWidget = new dmxWidget(this); QDockWidget *topWidget = new QDockWidget(tr("Master"), this); diff --git a/src/libremediaserver-audio.cpp b/src/libremediaserver-audio.cpp index d049c44..deb1a7d 100644 --- a/src/libremediaserver-audio.cpp +++ b/src/libremediaserver-audio.cpp @@ -134,6 +134,28 @@ void libreMediaServerAudio::setUi(libreMediaServerAudioUi *lmsUi) { m_lmsUi = lmsUi; connect(m_ola, SIGNAL(universeReceived(int)), m_lmsUi->m_dmxWidget, SLOT(updateWatchDMX(int))); + connect(m_lmsUi->m_aw, SIGNAL(uiSliderChanged(int, Slider, int)), this, SLOT(uiSliderChanged(int, Slider, int))); + connect(m_lmsUi->m_aw, SIGNAL(uiPlaybackChanged(int, Status)), this, SLOT(uiPlaybackChanged(int, Status))); }; +void libreMediaServerAudio::uiSliderChanged(int layer, Slider s, int value) +{ + switch (s){ + case Slider::Volume: + m_mae.volChanged(layer, float((value / 100.0f))); + break; + case Slider::Pan: + m_mae.panChanged(layer, value); + break; + case Slider::Pitch: + m_mae.pitchChanged(layer, value); + break; + } +} + +void libreMediaServerAudio::uiPlaybackChanged(int layer, Status s) +{ + m_mae.playbackChanged(layer, s); +} + #endif diff --git a/src/libremediaserver-audio.h b/src/libremediaserver-audio.h index 923a42b..9c8f152 100644 --- a/src/libremediaserver-audio.h +++ b/src/libremediaserver-audio.h @@ -54,6 +54,8 @@ private slots: void dmxInput(int layer, int channel, int value); #ifndef NOGUI void refreshUi(); + void uiSliderChanged(int layer, Slider s, int value); + void uiPlaybackChanged(int layer, Status s); #endif }; diff --git a/src/medialibrary.h b/src/medialibrary.h index 5a0b55b..8c2eb07 100644 --- a/src/medialibrary.h +++ b/src/medialibrary.h @@ -27,12 +27,6 @@ class MediaLibrary : public QObject public: MediaLibrary(QObject *parent = 0); - /** - * @brief request a new file from the media library - * @param int folder - the folder required - * @param int layer - file required - * @return QString the file required with full path - */ QString requestNewFile(int folder, int layer); void initMediaLibrary(); diff --git a/src/slidergroup.cpp b/src/slidergroup.cpp index 4bef674..e58588e 100644 --- a/src/slidergroup.cpp +++ b/src/slidergroup.cpp @@ -52,8 +52,6 @@ SliderGroup::SliderGroup(QString name, void SliderGroup::sliderValueChanged(int value) { valueBox->setValue(value); - if (valueBox->decimals() > 1) - value /= 100.0f; emit valueChanged(value); }; diff --git a/src/slidergroup.h b/src/slidergroup.h index 1d8cc8c..f597a5b 100644 --- a/src/slidergroup.h +++ b/src/slidergroup.h @@ -18,7 +18,7 @@ public: QWidget *parent = nullptr); signals: - void valueChanged(float value); + void valueChanged(int value); public slots: void setValue(float value);