mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
Some ByteInput optimizations
This commit is contained in:
@@ -121,30 +121,12 @@ static char byte_input_get_nibble_text(uint8_t byte, bool high_nibble) {
|
||||
}
|
||||
byte = byte & 0x0F;
|
||||
|
||||
switch(byte & 0x0F) {
|
||||
case 0x0:
|
||||
case 0x1:
|
||||
case 0x2:
|
||||
case 0x3:
|
||||
case 0x4:
|
||||
case 0x5:
|
||||
case 0x6:
|
||||
case 0x7:
|
||||
case 0x8:
|
||||
case 0x9:
|
||||
if(byte <= 0x9) {
|
||||
byte = byte + '0';
|
||||
break;
|
||||
case 0xA:
|
||||
case 0xB:
|
||||
case 0xC:
|
||||
case 0xD:
|
||||
case 0xE:
|
||||
case 0xF:
|
||||
} else if(byte <= 0xF) {
|
||||
byte = byte - 0xA + 'A';
|
||||
break;
|
||||
default:
|
||||
} else {
|
||||
byte = '!';
|
||||
break;
|
||||
}
|
||||
|
||||
return byte;
|
||||
@@ -356,30 +338,12 @@ static void byte_input_draw_input_selected(Canvas* canvas, ByteInputModel* model
|
||||
* @param high_nibble set high nibble
|
||||
*/
|
||||
static void byte_input_set_nibble(uint8_t* data, uint8_t position, char value, bool high_nibble) {
|
||||
switch(value) {
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
if(value >= '0' && value <= '9') {
|
||||
value = value - '0';
|
||||
break;
|
||||
case 'A':
|
||||
case 'B':
|
||||
case 'C':
|
||||
case 'D':
|
||||
case 'E':
|
||||
case 'F':
|
||||
} else if(value >= 'A' && value <= 'F') {
|
||||
value = value - 'A' + 10;
|
||||
break;
|
||||
default:
|
||||
} else {
|
||||
value = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if(high_nibble) {
|
||||
@@ -654,39 +618,22 @@ static void byte_input_view_draw_callback(Canvas* canvas, void* _model) {
|
||||
const ByteInputKey* keys = byte_input_get_row(row);
|
||||
|
||||
for(size_t column = 0; column < column_count; column++) {
|
||||
bool selected = model->selected_row == row && model->selected_column == column;
|
||||
const Icon* icon = NULL;
|
||||
if(keys[column].value == enter_symbol) {
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
if(model->selected_row == row && model->selected_column == column) {
|
||||
canvas_draw_icon(
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x,
|
||||
keyboard_origin_y + keys[column].y,
|
||||
&I_KeySaveSelected_22x11);
|
||||
} else {
|
||||
canvas_draw_icon(
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x,
|
||||
keyboard_origin_y + keys[column].y,
|
||||
&I_KeySave_22x11);
|
||||
}
|
||||
icon = selected ? &I_KeySaveSelected_22x11 : &I_KeySave_22x11;
|
||||
} else if(keys[column].value == backspace_symbol) {
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
if(model->selected_row == row && model->selected_column == column) {
|
||||
canvas_draw_icon(
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x,
|
||||
keyboard_origin_y + keys[column].y,
|
||||
&I_KeyBackspaceSelected_17x11);
|
||||
} else {
|
||||
canvas_draw_icon(
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x,
|
||||
keyboard_origin_y + keys[column].y,
|
||||
&I_KeyBackspace_17x11);
|
||||
}
|
||||
icon = selected ? &I_KeyBackspaceSelected_17x11 : &I_KeyBackspace_17x11;
|
||||
}
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
if(icon != NULL) {
|
||||
canvas_draw_icon(
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x,
|
||||
keyboard_origin_y + keys[column].y,
|
||||
icon);
|
||||
} else {
|
||||
if(model->selected_row == row && model->selected_column == column) {
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
if(selected) {
|
||||
elements_slightly_rounded_box(
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x - 3,
|
||||
@@ -697,15 +644,12 @@ static void byte_input_view_draw_callback(Canvas* canvas, void* _model) {
|
||||
} else if(
|
||||
model->selected_row == -1 && row == 0 &&
|
||||
model->selected_column == column) {
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
elements_slightly_rounded_frame(
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x - 3,
|
||||
keyboard_origin_y + keys[column].y - 10,
|
||||
11,
|
||||
13);
|
||||
} else {
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
}
|
||||
|
||||
canvas_draw_glyph(
|
||||
@@ -732,64 +676,52 @@ static bool byte_input_view_input_callback(InputEvent* event, void* context) {
|
||||
furi_assert(byte_input);
|
||||
bool consumed = false;
|
||||
|
||||
if(event->type == InputTypeShort || event->type == InputTypeRepeat) {
|
||||
switch(event->key) {
|
||||
case InputKeyLeft:
|
||||
with_view_model(
|
||||
byte_input->view, ByteInputModel * model, { byte_input_handle_left(model); }, true);
|
||||
consumed = true;
|
||||
break;
|
||||
case InputKeyRight:
|
||||
with_view_model(
|
||||
byte_input->view,
|
||||
ByteInputModel * model,
|
||||
{ byte_input_handle_right(model); },
|
||||
true);
|
||||
consumed = true;
|
||||
break;
|
||||
case InputKeyUp:
|
||||
with_view_model(
|
||||
byte_input->view, ByteInputModel * model, { byte_input_handle_up(model); }, true);
|
||||
consumed = true;
|
||||
break;
|
||||
case InputKeyDown:
|
||||
with_view_model(
|
||||
byte_input->view, ByteInputModel * model, { byte_input_handle_down(model); }, true);
|
||||
consumed = true;
|
||||
break;
|
||||
case InputKeyOk:
|
||||
with_view_model(
|
||||
byte_input->view, ByteInputModel * model, { byte_input_handle_ok(model); }, true);
|
||||
consumed = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
with_view_model(
|
||||
byte_input->view,
|
||||
ByteInputModel * model,
|
||||
{
|
||||
if(event->type == InputTypeShort || event->type == InputTypeRepeat) {
|
||||
switch(event->key) {
|
||||
case InputKeyLeft:
|
||||
byte_input_handle_left(model);
|
||||
consumed = true;
|
||||
break;
|
||||
case InputKeyRight:
|
||||
byte_input_handle_right(model);
|
||||
consumed = true;
|
||||
break;
|
||||
case InputKeyUp:
|
||||
byte_input_handle_up(model);
|
||||
consumed = true;
|
||||
break;
|
||||
case InputKeyDown:
|
||||
byte_input_handle_down(model);
|
||||
consumed = true;
|
||||
break;
|
||||
case InputKeyOk:
|
||||
byte_input_handle_ok(model);
|
||||
consumed = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(event->type == InputTypeShort && event->key == InputKeyBack) {
|
||||
// Back to keyboard
|
||||
with_view_model(
|
||||
byte_input->view,
|
||||
ByteInputModel * model,
|
||||
{
|
||||
if(event->type == InputTypeShort && event->key == InputKeyBack) {
|
||||
// Back to keyboard
|
||||
if(model->selected_row == -2) {
|
||||
model->selected_row += 1;
|
||||
consumed = true;
|
||||
};
|
||||
},
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
if((event->type == InputTypeLong || event->type == InputTypeRepeat) &&
|
||||
event->key == InputKeyBack) {
|
||||
with_view_model(
|
||||
byte_input->view,
|
||||
ByteInputModel * model,
|
||||
{ byte_input_clear_selected_byte(model); },
|
||||
true);
|
||||
consumed = true;
|
||||
}
|
||||
if((event->type == InputTypeLong || event->type == InputTypeRepeat) &&
|
||||
event->key == InputKeyBack) {
|
||||
byte_input_clear_selected_byte(model);
|
||||
consumed = true;
|
||||
}
|
||||
},
|
||||
true);
|
||||
|
||||
return consumed;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user