From 68389457bfdfe19431e102c8f710d29c25ec0ce5 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 4 Jul 2020 11:52:09 +0200 Subject: [PATCH] support sorting by group ID --- src/audiomixerboard.cpp | 14 +++++++++++++- src/clientdlg.cpp | 3 +++ src/clientdlg.h | 1 + src/settings.cpp | 3 ++- src/util.h | 3 ++- 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index adf7031e..39d8691f 100755 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -916,10 +916,22 @@ void CAudioMixerBoard::ChangeFaderOrder ( const bool bDoSort, { PairList << QPair ( vecpChanFader[i]->GetReceivedName().toLower(), i ); } - else // ST_BY_INSTRUMENT + else if ( eChSortType == ST_BY_INSTRUMENT ) { PairList << QPair ( CInstPictures::GetName ( vecpChanFader[i]->GetReceivedInstrument() ), i ); } + else // ST_BY_GROUPID + { + if ( vecpChanFader[i]->GetGroupID() == INVALID_INDEX ) + { + // put channels without a group at the end + PairList << QPair ( "z", i ); // group IDs are numbers, use letter to put it at the end + } + else + { + PairList << QPair ( QString::number ( vecpChanFader[i]->GetGroupID() ), i ); + } + } } // if requested, sort the channels diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp index 3d76b99d..df1d08c6 100755 --- a/src/clientdlg.cpp +++ b/src/clientdlg.cpp @@ -289,6 +289,9 @@ CClientDlg::CClientDlg ( CClient* pNCliP, pEditMenu->addAction ( tr ( "Sort Channel Users by &Instrument" ), this, SLOT ( OnSortChannelsByInstrument() ), QKeySequence ( Qt::CTRL + Qt::Key_I ) ); + pEditMenu->addAction ( tr ( "Sort Channel Users by &Group" ), this, + SLOT ( OnSortChannelsByGroupID() ), QKeySequence ( Qt::CTRL + Qt::Key_G ) ); + // Main menu bar ----------------------------------------------------------- pMenu = new QMenuBar ( this ); diff --git a/src/clientdlg.h b/src/clientdlg.h index 8c490166..79f16f77 100755 --- a/src/clientdlg.h +++ b/src/clientdlg.h @@ -157,6 +157,7 @@ public slots: void OnOpenAnalyzerConsole() { ShowAnalyzerConsole(); } void OnSortChannelsByName() { MainMixerBoard->ChangeFaderOrder ( true, ST_BY_NAME ); } void OnSortChannelsByInstrument() { MainMixerBoard->ChangeFaderOrder ( true, ST_BY_INSTRUMENT ); } + void OnSortChannelsByGroupID() { MainMixerBoard->ChangeFaderOrder ( true, ST_BY_GROUPID ); } void OnSettingsStateChanged ( int value ); void OnChatStateChanged ( int value ); diff --git a/src/settings.cpp b/src/settings.cpp index b11f5d89..21c8b057 100755 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -281,9 +281,10 @@ void CClientSettings::ReadFromXML ( const QDomDocument& IniXMLDocument ) // stored fader group ID for ( iIdx = 0; iIdx < MAX_NUM_STORED_FADER_SETTINGS; iIdx++ ) { + // note that we only apply valid group numbers here if ( GetNumericIniSet ( IniXMLDocument, "client", QString ( "storedgroupid%1" ).arg ( iIdx ), - 0, MAX_NUM_FADER_GROUPS, iValue ) ) + 0, MAX_NUM_FADER_GROUPS - 1, iValue ) ) { pClient->vecStoredFaderGroupID[iIdx] = iValue; } diff --git a/src/util.h b/src/util.h index 4f89dfe0..7fe41410 100755 --- a/src/util.h +++ b/src/util.h @@ -581,7 +581,8 @@ enum ERecorderState enum EChSortType { ST_BY_NAME, - ST_BY_INSTRUMENT + ST_BY_INSTRUMENT, + ST_BY_GROUPID };