UI behaviour is configurable

Parameter EncoderClickIsConfirm switches between two UI behaviours:
=0 (or missing): Default behaviour: click is Up, DblClick is down
<>0: Fast mode: click is confirm, DblClick is up
pull/155/head
fp64lib 3 years ago
parent 8e2d07b8e3
commit 521ea767a0
  1. 6
      src/config.cpp
  2. 2
      src/config.h
  3. 3
      src/minidexed.ini
  4. 46
      src/uimenu.cpp
  5. 4
      src/uimenu.h
  6. 18
      src/userinterface.cpp

@ -84,6 +84,7 @@ void CConfig::Load (void)
m_nEncoderPinClock = m_Properties.GetNumber ("EncoderPinClock", 5);
m_nEncoderPinData = m_Properties.GetNumber ("EncoderPinData", 6);
m_nEncoderPinSwitch = m_Properties.GetNumber ("EncoderPinSwitch", 26);
m_bEncoderClickIsConfirm = m_Properties.GetNumber ("EncoderClickIsConfirm", 0) != 0;
m_bMIDIDumpEnabled = m_Properties.GetNumber ("MIDIDumpEnabled", 0) != 0;
m_bProfileEnabled = m_Properties.GetNumber ("ProfileEnabled", 0) != 0;
@ -194,6 +195,11 @@ unsigned CConfig::GetEncoderPinSwitch (void) const
return m_nEncoderPinSwitch;
}
bool CConfig::GetEncoderClickIsConfirm (void) const
{
return m_bEncoderClickIsConfirm;
}
bool CConfig::GetMIDIDumpEnabled (void) const
{
return m_bMIDIDumpEnabled;

@ -93,6 +93,7 @@ public:
unsigned GetEncoderPinClock (void) const;
unsigned GetEncoderPinData (void) const;
unsigned GetEncoderPinSwitch (void) const;
bool GetEncoderClickIsConfirm (void) const;
// Debug
bool GetMIDIDumpEnabled (void) const;
@ -125,6 +126,7 @@ private:
unsigned m_nEncoderPinClock;
unsigned m_nEncoderPinData;
unsigned m_nEncoderPinSwitch;
bool m_bEncoderClickIsConfirm;
bool m_bMIDIDumpEnabled;
bool m_bProfileEnabled;

@ -14,7 +14,7 @@ ChannelsSwapped=0
# MIDI
MIDIBaudRate=31250
#MIDIThru=umidi1,ttyS1
MIDIRXProgramChange=1
MIDIRXProgramChange=0
# HD44780 LCD
LCDEnabled=1
@ -31,6 +31,7 @@ EncoderEnabled=1
EncoderPinClock=5
EncoderPinData=6
EncoderPinSwitch=26
EncoderClickIsConfirm=0
# Debug
MIDIDumpEnabled=0

@ -254,9 +254,10 @@ const char CUIMenu::s_NoteName[100][4] =
};
static const unsigned NoteC3 = 27;
CUIMenu::CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed)
CUIMenu::CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed, CConfig *pConfig)
: m_pUI (pUI),
m_pMiniDexed (pMiniDexed),
m_pConfig (pConfig),
m_pParentMenu (s_MenuRoot),
m_pCurrentMenu (s_MainMenu),
m_nCurrentMenuItem (0),
@ -395,8 +396,11 @@ void CUIMenu::EditGlobalParameter (CUIMenu *pUIMenu, TMenuEvent Event)
break;
case MenuEventSelect:
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
if( pUIMenu->m_pConfig->GetEncoderClickIsConfirm() )
{
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
}
return;
default:
@ -450,8 +454,11 @@ void CUIMenu::EditVoiceBankNumber (CUIMenu *pUIMenu, TMenuEvent Event)
return;
case MenuEventSelect:
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
if( pUIMenu->m_pConfig->GetEncoderClickIsConfirm() )
{
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
}
return;
default:
@ -503,8 +510,11 @@ void CUIMenu::EditProgramNumber (CUIMenu *pUIMenu, TMenuEvent Event)
return;
case MenuEventSelect:
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
if( pUIMenu->m_pConfig->GetEncoderClickIsConfirm() )
{
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
}
return;
default:
@ -560,8 +570,11 @@ void CUIMenu::EditTGParameter (CUIMenu *pUIMenu, TMenuEvent Event)
return;
case MenuEventSelect:
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
if( pUIMenu->m_pConfig->GetEncoderClickIsConfirm() )
{
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
}
return;
default:
@ -616,6 +629,14 @@ void CUIMenu::EditVoiceParameter (CUIMenu *pUIMenu, TMenuEvent Event)
pUIMenu->TGShortcutHandler (Event);
return;
case MenuEventSelect:
if( pUIMenu->m_pConfig->GetEncoderClickIsConfirm() )
{
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
}
return;
default:
return;
}
@ -670,8 +691,11 @@ void CUIMenu::EditOPParameter (CUIMenu *pUIMenu, TMenuEvent Event)
return;
case MenuEventSelect:
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
if( pUIMenu->m_pConfig->GetEncoderClickIsConfirm() )
{
// when a parameter is selected --> accept change and return one level up
pUIMenu->EventHandler( CUIMenu::MenuEventBack );
}
return;
default:

@ -28,6 +28,7 @@
class CMiniDexed;
class CUserInterface;
class CConfig;
class CUIMenu
{
@ -49,7 +50,7 @@ public:
};
public:
CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed);
CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed, CConfig *pConfig);
void EventHandler (TMenuEvent Event);
@ -110,6 +111,7 @@ private:
private:
CUserInterface *m_pUI;
CMiniDexed *m_pMiniDexed;
CConfig *m_pConfig;
const TMenuItem *m_pParentMenu;
const TMenuItem *m_pCurrentMenu;

@ -35,7 +35,7 @@ CUserInterface::CUserInterface (CMiniDexed *pMiniDexed, CGPIOManager *pGPIOManag
m_pLCDBuffered (0),
m_pRotaryEncoder (0),
m_bSwitchPressed (false),
m_Menu (this, pMiniDexed)
m_Menu (this, pMiniDexed, pConfig)
{
}
@ -91,6 +91,8 @@ bool CUserInterface::Initialize (void)
m_pRotaryEncoder->RegisterEventHandler (EncoderEventStub, this);
LOGDBG ("Rotary encoder initialized");
if( m_pConfig->GetEncoderClickIsConfirm() )
LOGDBG ("Encoder click is Confirm, dbl click is up");
}
m_Menu.EventHandler (CUIMenu::MenuEventUpdate);
@ -197,13 +199,19 @@ void CUserInterface::EncoderEventHandler (CKY040::TEvent Event)
break;
case CKY040::EventSwitchClick:
// m_Menu.EventHandler (CUIMenu::MenuEventBack);
m_Menu.EventHandler (CUIMenu::MenuEventSelect);
// Click = Select / Confirm (option) or Back / Up (Default)
if( m_pConfig->GetEncoderClickIsConfirm() )
m_Menu.EventHandler (CUIMenu::MenuEventSelect);
else
m_Menu.EventHandler (CUIMenu::MenuEventBack);
break;
case CKY040::EventSwitchDoubleClick:
// m_Menu.EventHandler (CUIMenu::MenuEventSelect);
m_Menu.EventHandler (CUIMenu::MenuEventBack);
// Double Click = Back / Up (option) or Select (Default)
if( m_pConfig->GetEncoderClickIsConfirm() )
m_Menu.EventHandler (CUIMenu::MenuEventBack);
else
m_Menu.EventHandler (CUIMenu::MenuEventSelect);
break;
case CKY040::EventSwitchTripleClick:

Loading…
Cancel
Save