From 546e3f96e0df06953aab27269b2bc36d5a0170de Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Tue, 19 May 2020 18:28:52 +0200 Subject: [PATCH] enable pan if supported by the server (check server version) --- src/audiomixerboard.cpp | 38 +++++++++++++++++++++++++++++--------- src/audiomixerboard.h | 6 +++++- src/clientdlg.cpp | 17 ++++++++--------- src/clientdlg.h | 5 ++++- 4 files changed, 46 insertions(+), 20 deletions(-) diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index f610df81..521a6d17 100644 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -39,7 +39,8 @@ CChannelFader::CChannelFader ( QWidget* pNW, pLevelsBox = new QWidget ( pFrame ); plbrChannelLevel = new CMultiColorLEDBar ( pLevelsBox ); pFader = new QSlider ( Qt::Vertical, pLevelsBox ); - pPan = new QSlider ( Qt::Horizontal, pLevelsBox ); + pPan = new QDial ( pLevelsBox ); + pPanLabel = new QLabel ( tr ( "Pan" ) , pLevelsBox ); pMuteSoloBox = new QWidget ( pFrame ); pcbMute = new QCheckBox ( tr ( "Mute" ), pMuteSoloBox ); @@ -60,14 +61,17 @@ CChannelFader::CChannelFader ( QWidget* pNW, plbrChannelLevel->setContentsMargins ( 0, 3, 2, 3 ); // setup slider - pFader->setPageStep ( 1 ); - pFader->setTickPosition ( QSlider::TicksBothSides ); - pFader->setRange ( 0, AUD_MIX_FADER_MAX ); - pFader->setTickInterval ( AUD_MIX_FADER_MAX / 9 ); + pFader->setPageStep ( 1 ); + pFader->setTickPosition ( QSlider::TicksBothSides ); + pFader->setRange ( 0, AUD_MIX_FADER_MAX ); + pFader->setTickInterval ( AUD_MIX_FADER_MAX / 9 ); + pFader->setMinimumHeight ( 90 ); - // setup panning slider + // setup panning control pPan->setRange ( 0, AUD_MIX_PAN_MAX ); pPan->setValue ( AUD_MIX_PAN_MAX / 2 ); + pPan->setFixedSize ( 55, 55 ); + pPan->setNotchesVisible ( true ); // setup fader tag label (black bold text which is centered) plblLabel->setTextFormat ( Qt::PlainText ); @@ -101,7 +105,8 @@ CChannelFader::CChannelFader ( QWidget* pNW, pMuteSoloGrid->addWidget ( pcbMute, 0, Qt::AlignLeft ); pMuteSoloGrid->addWidget ( pcbSolo, 0, Qt::AlignLeft ); - pMainGrid->addWidget ( pPan, 0, Qt::AlignCenter ); + pMainGrid->addWidget ( pPanLabel, 0, Qt::AlignLeft ); + pMainGrid->addWidget ( pPan, 0, Qt::AlignHCenter ); pMainGrid->addWidget ( pLevelsBox, 0, Qt::AlignHCenter ); pMainGrid->addWidget ( pMuteSoloBox, 0, Qt::AlignHCenter ); pMainGrid->addWidget ( pLabelInstBox ); @@ -186,6 +191,7 @@ void CChannelFader::SetGUIDesign ( const EGUIDesign eNewDesign ) " padding-bottom: -15px; }" "QSlider::handle { image: url(:/png/fader/res/faderhandle.png); }" ); + pPanLabel->setText ( tr ( "PAN" ) ); pcbMute->setText ( tr ( "MUTE" ) ); pcbSolo->setText ( tr ( "SOLO" ) ); plbrChannelLevel->SetLevelMeterType ( CMultiColorLEDBar::MT_LED ); @@ -194,6 +200,7 @@ void CChannelFader::SetGUIDesign ( const EGUIDesign eNewDesign ) default: // reset style sheet and set original paramters pFader->setStyleSheet ( "" ); + pPanLabel->setText ( tr ( "Pan" ) ); pcbMute->setText ( tr ( "Mute" ) ); pcbSolo->setText ( tr ( "Solo" ) ); plbrChannelLevel->SetLevelMeterType ( CMultiColorLEDBar::MT_BAR ); @@ -211,6 +218,12 @@ bool CChannelFader::GetDisplayChannelLevel() return !plbrChannelLevel->isHidden(); } +void CChannelFader::SetDisplayPans ( const bool eNDP ) +{ + pPanLabel->setHidden ( !eNDP ); + pPan->setHidden ( !eNDP ); +} + void CChannelFader::SetupFaderTag ( const ESkillLevel eSkillLevel ) { // setup group box for label/instrument picture: set a thick black border @@ -587,8 +600,6 @@ CAudioMixerBoard::CAudioMixerBoard ( QWidget* parent, Qt::WindowFlags ) : setMinimumWidth ( 200 ); // at least two faders shall be visible setWidget ( pGroupBox ); setWidgetResizable ( true ); // make sure it fills the entire scroll area - setVerticalScrollBarPolicy ( Qt::ScrollBarAlwaysOff ); - setHorizontalScrollBarPolicy ( Qt::ScrollBarAsNeeded ); setFrameShape ( QFrame::NoFrame ); @@ -668,6 +679,14 @@ void CAudioMixerBoard::SetDisplayChannelLevels ( const bool eNDCL ) } } +void CAudioMixerBoard::SetPanIsSupported() +{ + for ( int i = 0; i < MAX_NUM_CHANNELS; i++ ) + { + vecpChanFader[i]->SetDisplayPans ( true ); + } +} + void CAudioMixerBoard::HideAll() { // make all controls invisible @@ -678,6 +697,7 @@ void CAudioMixerBoard::HideAll() vecpChanFader[i]->SetChannelLevel ( 0 ); vecpChanFader[i]->SetDisplayChannelLevel ( false ); + vecpChanFader[i]->SetDisplayPans ( false ); vecpChanFader[i]->Hide(); } diff --git a/src/audiomixerboard.h b/src/audiomixerboard.h index 1af7cc07..93e3180d 100644 --- a/src/audiomixerboard.h +++ b/src/audiomixerboard.h @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include "global.h" @@ -58,6 +59,7 @@ public: void SetGUIDesign ( const EGUIDesign eNewDesign ); void SetDisplayChannelLevel ( const bool eNDCL ); bool GetDisplayChannelLevel(); + void SetDisplayPans ( const bool eNDP ); void UpdateSoloState ( const bool bNewOtherSoloState ); void SetFaderLevel ( const int iLevel ); @@ -82,7 +84,8 @@ protected: QWidget* pMuteSoloBox; CMultiColorLEDBar* plbrChannelLevel; QSlider* pFader; - QSlider* pPan; + QDial* pPan; + QLabel* pPanLabel; QCheckBox* pcbMute; QCheckBox* pcbSolo; @@ -139,6 +142,7 @@ public: void SetServerName ( const QString& strNewServerName ); void SetGUIDesign ( const EGUIDesign eNewDesign ); void SetDisplayChannelLevels ( const bool eNDCL ); + void SetPanIsSupported(); void SetFaderLevel ( const int iChannelIdx, const int iValue ); diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp index 7025f100..ff592731 100755 --- a/src/clientdlg.cpp +++ b/src/clientdlg.cpp @@ -753,17 +753,16 @@ void CClientDlg::OnCentralServerAddressTypeChanged() } } -void CClientDlg::OnVersionAndOSReceived ( COSUtil::EOpSystemType eOSType, +void CClientDlg::OnVersionAndOSReceived ( COSUtil::EOpSystemType , QString strVersion ) { - - -// TODO the implementation of: check for version number if Pan is supported -> enable Pan controls in mixer board if version is sufficient -// TEST -qDebug() << strVersion; - - - + // check if Pan is supported by the server (minimum version is 3.5.4) +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) + if ( QVersionNumber::compare ( QVersionNumber::fromString ( strVersion ), QVersionNumber ( 3, 5, 4 ) ) >= 0 ) + { + MainMixerBoard->SetPanIsSupported(); + } +#endif } void CClientDlg::OnChatTextReceived ( QString strChatText ) diff --git a/src/clientdlg.h b/src/clientdlg.h index 4f2b56cb..3863b26c 100755 --- a/src/clientdlg.h +++ b/src/clientdlg.h @@ -33,6 +33,9 @@ #include #include #include +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) +# include +#endif #include "global.h" #include "client.h" #include "settings.h" @@ -131,7 +134,7 @@ public slots: const int iValue ) { MainMixerBoard->SetFaderLevel ( iChannelIdx, iValue ); } - void OnVersionAndOSReceived ( COSUtil::EOpSystemType eOSType, + void OnVersionAndOSReceived ( COSUtil::EOpSystemType , QString strVersion ); #ifdef ENABLE_CLIENT_VERSION_AND_OS_DEBUGGING