Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplified click behaviour #155

Closed
wants to merge 7 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 2 additions & 0 deletions src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ class CConfig // Configuration for MiniDexed
unsigned GetEncoderPinClock (void) const;
unsigned GetEncoderPinData (void) const;
unsigned GetEncoderPinSwitch (void) const;
bool GetEncoderClickIsConfirm (void) const;

// Debug
bool GetMIDIDumpEnabled (void) const;
Expand Down Expand Up @@ -125,6 +126,7 @@ class CConfig // Configuration for MiniDexed
unsigned m_nEncoderPinClock;
unsigned m_nEncoderPinData;
unsigned m_nEncoderPinSwitch;
bool m_bEncoderClickIsConfirm;

bool m_bMIDIDumpEnabled;
bool m_bProfileEnabled;
Expand Down
1 change: 1 addition & 0 deletions src/minidexed.ini
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ EncoderEnabled=1
EncoderPinClock=5
EncoderPinData=6
EncoderPinSwitch=26
EncoderClickIsConfirm=0

# Debug
MIDIDumpEnabled=0
Expand Down
51 changes: 50 additions & 1 deletion src/uimenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -393,6 +394,14 @@ void CUIMenu::EditGlobalParameter (CUIMenu *pUIMenu, TMenuEvent Event)
}
pUIMenu->m_pMiniDexed->SetParameter (Param, nValue);
break;

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;
Expand Down Expand Up @@ -444,6 +453,14 @@ void CUIMenu::EditVoiceBankNumber (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;
}
Expand Down Expand Up @@ -492,6 +509,14 @@ void CUIMenu::EditProgramNumber (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;
}
Expand Down Expand Up @@ -544,6 +569,14 @@ void CUIMenu::EditTGParameter (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;
}
Expand Down Expand Up @@ -596,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;
}
Expand Down Expand Up @@ -649,6 +690,14 @@ void CUIMenu::EditOPParameter (CUIMenu *pUIMenu, TMenuEvent Event)
pUIMenu->OPShortcutHandler (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;
}
Expand Down
4 changes: 3 additions & 1 deletion src/uimenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

class CMiniDexed;
class CUserInterface;
class CConfig;

class CUIMenu
{
Expand All @@ -49,7 +50,7 @@ class CUIMenu
};

public:
CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed);
CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed, CConfig *pConfig);

void EventHandler (TMenuEvent Event);

Expand Down Expand Up @@ -110,6 +111,7 @@ class CUIMenu
private:
CUserInterface *m_pUI;
CMiniDexed *m_pMiniDexed;
CConfig *m_pConfig;

const TMenuItem *m_pParentMenu;
const TMenuItem *m_pCurrentMenu;
Expand Down
16 changes: 13 additions & 3 deletions src/userinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
}

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -197,11 +199,19 @@ void CUserInterface::EncoderEventHandler (CKY040::TEvent Event)
break;

case CKY040::EventSwitchClick:
m_Menu.EventHandler (CUIMenu::MenuEventBack);
// 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);
// 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:
Expand Down