From b078bfd7b8b6d0df2e0af14fa5ad6b97f3dd5d3b Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 13 Jun 2020 08:51:05 +0200 Subject: [PATCH] further preparation for #356 --- src/audiomixerboard.cpp | 17 ++++++++++++++--- src/audiomixerboard.h | 4 +++- src/clientdlg.h | 2 +- src/util.h | 8 ++++++++ 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index 5753cbab..88b198f3 100644 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -768,20 +768,31 @@ void CAudioMixerBoard::HideAll() iMyChannelID = INVALID_INDEX; // use original order of channel (by server ID) - ChangeFaderOrder ( false ); + ChangeFaderOrder ( false, ST_BY_NAME ); // emit status of connected clients emit NumClientsChanged ( 0 ); // -> no clients connected } -void CAudioMixerBoard::ChangeFaderOrder ( const bool bDoSort ) +void CAudioMixerBoard::ChangeFaderOrder ( const bool bDoSort, + const EChSortType eChSortType ) { // create a pair list of lower strings and fader ID for each channel QList > PairList; for ( int i = 0; i < MAX_NUM_CHANNELS; i++ ) { - PairList << QPair ( vecpChanFader[i]->GetReceivedName().toLower(), i ); + if ( eChSortType == ST_BY_NAME ) + { + PairList << QPair ( vecpChanFader[i]->GetReceivedName().toLower(), i ); + } + else // ST_BY_INSTRUMENT + { + // note that the sorting will not be the same as we would use QPair + // but this is not a problem since the order of the instrument IDs are arbitrary + // anyway + PairList << QPair ( QString::number ( vecpChanFader[i]->GetReceivedInstrument() ), i ); + } } // if requested, sort the channels diff --git a/src/audiomixerboard.h b/src/audiomixerboard.h index 09aeffad..a3321a34 100644 --- a/src/audiomixerboard.h +++ b/src/audiomixerboard.h @@ -147,7 +147,6 @@ public: CAudioMixerBoard ( QWidget* parent = nullptr, Qt::WindowFlags f = nullptr ); void HideAll(); - void ChangeFaderOrder ( const bool bDoSort ); void ApplyNewConClientList ( CVector& vecChanInfo ); void SetServerName ( const QString& strNewServerName ); void SetGUIDesign ( const EGUIDesign eNewDesign ); @@ -160,6 +159,9 @@ public: void SetFaderLevel ( const int iChannelIdx, const int iValue ); + void ChangeFaderOrder ( const bool bDoSort, + const EChSortType eChSortType ); + void SetChannelLevels ( const CVector& vecChannelLevel ); // settings diff --git a/src/clientdlg.h b/src/clientdlg.h index 2489ed33..27531c83 100755 --- a/src/clientdlg.h +++ b/src/clientdlg.h @@ -152,7 +152,7 @@ public slots: void OnOpenGeneralSettings() { ShowGeneralSettings(); } void OnOpenChatDialog() { ShowChatWindow(); } void OnOpenAnalyzerConsole() { ShowAnalyzerConsole(); } - void OnSortChannelsByName() { MainMixerBoard->ChangeFaderOrder ( true ); } + void OnSortChannelsByName() { MainMixerBoard->ChangeFaderOrder ( true, ST_BY_NAME ); } void OnSettingsStateChanged ( int value ); void OnChatStateChanged ( int value ); diff --git a/src/util.h b/src/util.h index 935ebd02..6e24312b 100755 --- a/src/util.h +++ b/src/util.h @@ -563,6 +563,14 @@ enum ELicenceType }; +// Channel sort type ----------------------------------------------------------- +enum EChSortType +{ + ST_BY_NAME = 0, + ST_BY_INSTRUMENT = 1 +}; + + // Central server address type ------------------------------------------------- enum ECSAddType {