- Added initial version of Hierarchical Menu
- Beautified the Message Box a bit
This commit is contained in:
@@ -56,18 +56,29 @@ static int16_t _X_Data_Info = 10+25;
|
||||
static int16_t _X_Data_Timestamp = 10+89;
|
||||
static int16_t _X_Data_Timestamp_Text = 10+25;
|
||||
|
||||
static int16_t _Y_Offest_Scroll;
|
||||
static int32_t _Y_Offest_Scroll;
|
||||
static int16_t _Y_Offset_1st_Entry = 20;
|
||||
static int16_t _Y_Offset_Rows = 10;
|
||||
static int16_t _Y_Between_Entries = 38;
|
||||
|
||||
static int16_t _Y_Scroll_Speed = 10;
|
||||
|
||||
// Default configuration
|
||||
static const Encoder_Acceleration_Config _MIDI_Log_Acceleration_Config = {
|
||||
.Base_Step = 10,
|
||||
.Base_Threshold = 5, // Requires more steps to trigger
|
||||
.Level_Step = 3, // Bigger jumps between levels
|
||||
.Max_Level = 3, // Fewer levels
|
||||
.Timeout_ms = 100, // Longer timeout
|
||||
.Multipliers = {1, 2, 3, 5, 7, 10, 13, 16, 20, 25}
|
||||
};
|
||||
|
||||
|
||||
// ============================================================================================
|
||||
// Function Declarations
|
||||
void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
|
||||
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
|
||||
static void Screen_Tick (void);
|
||||
static void Screen_Click (uint button_return_value);
|
||||
static void Screen_Action_CW (Object_ID object_id);
|
||||
@@ -89,7 +100,15 @@ bool Check_Entry_Is_Command(uint entry_id);
|
||||
*******************************************************************/
|
||||
void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Tick = Screen_Tick;
|
||||
Screen_Init(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
_Y_Offest_Scroll = 0;
|
||||
}
|
||||
|
||||
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
|
||||
{
|
||||
_Screen_Last = Screen_Init;
|
||||
_Screen_Tick = Screen_Tick;
|
||||
_Screen_Click = Screen_Click;
|
||||
_Screen_Action_CW = Screen_Action_CW;
|
||||
_Screen_Action_CCW = Screen_Action_CCW;
|
||||
@@ -101,6 +120,10 @@ void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Tra
|
||||
Display_Objects_Clear();
|
||||
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
Font_ID Font_10_0 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_6x12, 0);
|
||||
Font_ID Font_10_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_6x12, 1);
|
||||
|
||||
@@ -110,12 +133,6 @@ void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Tra
|
||||
|
||||
Style_ID Style_Header = Display_Objects_Add_Style(DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_BLACK, 0, 2, PADDING_1(2), STYLE_WIDTH_HEIGHT_RATIO_AUTO);
|
||||
|
||||
//////////////////////////////
|
||||
// Add Display Objects here //
|
||||
//////////////////////////////
|
||||
|
||||
_Y_Offest_Scroll = 0;
|
||||
|
||||
_Object_Text_Top = Display_Objects_Add_Text(CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, 0, NOT_SELECTABLE, "Received MIDI Data", Font_10_0, DISPLAY_COLOR_BLACK, Style_Header, NO_ANIMATION);
|
||||
|
||||
for(int16_t i=0;i<RECEIVED_MIDI_HISTORY_BUFFER_SIZE;i++)
|
||||
@@ -141,6 +158,10 @@ void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Tra
|
||||
|
||||
Update_Object_Coordinates();
|
||||
Display_Select_Object();
|
||||
|
||||
UI_Control_Acceleration_Reset();
|
||||
UI_Control_Acceleration_Init_Custom(&_MIDI_Log_Acceleration_Config);
|
||||
UI_Control_Acceleration_Set_Enabled(true);
|
||||
}
|
||||
|
||||
void Screen_Tick(void)
|
||||
@@ -155,13 +176,15 @@ void Screen_Click(uint button_return_value)
|
||||
|
||||
void Screen_Action_CW(Object_ID object_id)
|
||||
{
|
||||
_Y_Offest_Scroll -= _Y_Scroll_Speed;
|
||||
// _Y_Offest_Scroll -= _Y_Scroll_Speed;
|
||||
UI_Control_Selector_Dec(&_Y_Offest_Scroll, INT16_MIN, INT16_MAX, false);
|
||||
Update_Object_Coordinates();
|
||||
}
|
||||
|
||||
void Screen_Action_CCW(Object_ID object_id)
|
||||
{
|
||||
_Y_Offest_Scroll += _Y_Scroll_Speed;
|
||||
// _Y_Offest_Scroll += _Y_Scroll_Speed;
|
||||
UI_Control_Selector_Inc(&_Y_Offest_Scroll, INT16_MIN, INT16_MAX, false);
|
||||
Update_Object_Coordinates();
|
||||
}
|
||||
|
||||
@@ -182,7 +205,10 @@ void Screen_On_Object_Select(Object_ID object_id)
|
||||
|
||||
void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
{
|
||||
Screen_Setup_Menu_Main(TRANSITION_RIGHT, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 0);
|
||||
UI_Control_Init(); // Reset to default configuration
|
||||
UI_Control_Acceleration_Set_Enabled(false);
|
||||
|
||||
Screen_Setup_Menu_Main(TRANSITION_RIGHT, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 0);
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
@@ -190,22 +216,22 @@ void Screen_On_Object_Deselect(Object_ID object_id)
|
||||
*******************************************************************/
|
||||
void Update_Object_Coordinates(void)
|
||||
{
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Top, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offest_Scroll);
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Top, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, (int16_t)_Y_Offest_Scroll);
|
||||
|
||||
for(uint i=0;i<RECEIVED_MIDI_HISTORY_BUFFER_SIZE;i++)
|
||||
{
|
||||
Object_History_Entry_s *E = &Objects_History[i];
|
||||
|
||||
Display_Objects_Update_Coordinates(E->Object_Number , LEFT_TOP, BOTH_IN_PIXEL, _X_Number , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Data_Hex , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Hex , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Data_Dec , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Dec , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Type_Info , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Info , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries + 1 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Timestamp , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Timestamp_Text , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp_Text , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Number , LEFT_TOP, BOTH_IN_PIXEL, _X_Number , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Data_Hex , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Hex , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Data_Dec , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Dec , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(E->Object_Type_Info , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Info , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries + 1 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Timestamp , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows);
|
||||
Display_Objects_Update_Coordinates(E->Object_Timestamp_Text , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp_Text , _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows);
|
||||
}
|
||||
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Bottom, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + _Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Return, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + _Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries + _Y_Offset_1st_Entry);
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Bottom, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries);
|
||||
Display_Objects_Update_Coordinates(_Object_Text_Return, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + (int16_t)_Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries + _Y_Offset_1st_Entry);
|
||||
}
|
||||
|
||||
void Update_Object_Values(void)
|
||||
|
||||
Reference in New Issue
Block a user