Allow making selections in menus
This commit is contained in:
+1
-1
@@ -68,7 +68,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"characterRegex": "[type:θ=]",
|
||||
"characterRegex": "[type:θ=EquilarIsocSn¯¹0123456789]",
|
||||
"file": "mansalva_regular.ttf",
|
||||
"name": "FONT_MANSALVA_REGULAR_22",
|
||||
"type": "font"
|
||||
|
||||
+70
-32
@@ -29,6 +29,10 @@ static Layer *s_drop_bg_type_layer;
|
||||
static Layer *s_drop_bg_function_layer;
|
||||
static Layer *s_drop_bg_over_layer;
|
||||
static Layer *s_drop_bg_under_layer;
|
||||
static TextLayer *s_drop_txt_type_layer;
|
||||
static TextLayer *s_drop_txt_function_layer;
|
||||
static TextLayer *s_drop_txt_over_layer;
|
||||
static TextLayer *s_drop_txt_under_layer;
|
||||
static Layer *s_division_layer;
|
||||
static Layer *s_alarm_highlight_layer;
|
||||
static MenuLayer *s_drop_menu_layer;
|
||||
@@ -71,6 +75,12 @@ static const char *s_sin;
|
||||
static const char *s_cos;
|
||||
static const char *s_tan;
|
||||
|
||||
// alarm drop menu options
|
||||
static const char *s_options_type[3] = {"equilateral", "isosceles", "scalene"};
|
||||
static const char *s_options_function[3];
|
||||
static char *s_options_over[3];
|
||||
static char *s_options_under[3];
|
||||
|
||||
/////////////////////////////////
|
||||
|
||||
static void glance_reload_callback(AppGlanceReloadSession *session, size_t limit, void *target) {
|
||||
@@ -373,47 +383,34 @@ static uint16_t menu_get_num_rows(MenuLayer *menu_layer, uint16_t section_index,
|
||||
static void menu_draw_row(GContext *ctx, const Layer *cell_layer, MenuIndex *cell_index, void *context) {
|
||||
switch (s_highlight_pos) {
|
||||
case 0:
|
||||
switch (cell_index->row) {
|
||||
case 0:
|
||||
menu_cell_basic_draw(ctx, cell_layer, "Equilateral", NULL, NULL);
|
||||
break;
|
||||
case 1:
|
||||
menu_cell_basic_draw(ctx, cell_layer, "Isosceles", NULL, NULL);
|
||||
break;
|
||||
case 2:
|
||||
menu_cell_basic_draw(ctx, cell_layer, "Scalene", NULL, NULL);
|
||||
}
|
||||
menu_cell_basic_draw(ctx, cell_layer, s_options_type[cell_index->row], NULL, NULL);
|
||||
break;
|
||||
case 1:
|
||||
switch (cell_index->row) {
|
||||
case 0:
|
||||
menu_cell_basic_draw(ctx, cell_layer, s_sin, NULL, NULL);
|
||||
break;
|
||||
case 1:
|
||||
menu_cell_basic_draw(ctx, cell_layer, s_cos, NULL, NULL);
|
||||
break;
|
||||
case 2:
|
||||
menu_cell_basic_draw(ctx, cell_layer, s_tan, NULL, NULL);
|
||||
}
|
||||
menu_cell_basic_draw(ctx, cell_layer, s_options_function[cell_index->row], NULL, NULL);
|
||||
break;
|
||||
case 2:
|
||||
__attribute__((fallthrough));
|
||||
menu_cell_basic_draw(ctx, cell_layer, s_options_over[cell_index->row], NULL, NULL);
|
||||
break;
|
||||
case 3:
|
||||
switch (cell_index->row) {
|
||||
case 0:
|
||||
menu_cell_basic_draw(ctx, cell_layer, "1", NULL, NULL);
|
||||
break;
|
||||
case 1:
|
||||
menu_cell_basic_draw(ctx, cell_layer, "2", NULL, NULL);
|
||||
break;
|
||||
case 2:
|
||||
menu_cell_basic_draw(ctx, cell_layer, "3", NULL, NULL);
|
||||
}
|
||||
menu_cell_basic_draw(ctx, cell_layer, s_options_under[cell_index->row], NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void menu_select(MenuLayer *menu_layer, MenuIndex *cell_index, void *context) {
|
||||
// TODO
|
||||
switch (s_highlight_pos) {
|
||||
case 0:
|
||||
text_layer_set_text(s_drop_txt_type_layer, s_options_type[cell_index->row]);
|
||||
break;
|
||||
case 1:
|
||||
text_layer_set_text(s_drop_txt_function_layer, s_options_function[cell_index->row]);
|
||||
break;
|
||||
case 2:
|
||||
text_layer_set_text(s_drop_txt_over_layer, s_options_over[cell_index->row]);
|
||||
break;
|
||||
case 3:
|
||||
text_layer_set_text(s_drop_txt_under_layer, s_options_under[cell_index->row]);
|
||||
}
|
||||
window_stack_remove(s_drop_window, true);
|
||||
}
|
||||
|
||||
// when the user presses select, call this to load a menu;
|
||||
@@ -447,6 +444,17 @@ static void alarm_window_load() {
|
||||
s_cos = s_cos_arr[rand() % 2];
|
||||
s_tan = s_tan_arr[rand() % 2];
|
||||
|
||||
// set up menu options
|
||||
s_options_function[0] = s_sin;
|
||||
s_options_function[1] = s_cos;
|
||||
s_options_function[2] = s_tan;
|
||||
s_options_over[0] = "1"; // TODO
|
||||
s_options_over[1] = "2"; // TODO
|
||||
s_options_over[2] = "3"; // TODO
|
||||
s_options_under[0] = "1"; // TODO
|
||||
s_options_under[1] = "2"; // TODO
|
||||
s_options_under[2] = "3"; // TODO
|
||||
|
||||
// drop window
|
||||
s_drop_window = window_create(); // TODO destroy on window unload?
|
||||
window_set_window_handlers(
|
||||
@@ -493,6 +501,32 @@ static void alarm_window_load() {
|
||||
layer_set_update_proc(s_drop_bg_under_layer, drop_layer_update_proc);
|
||||
layer_add_child(window_layer, s_drop_bg_under_layer);
|
||||
|
||||
// drop text (blank by default)
|
||||
//// type
|
||||
s_drop_txt_type_layer = text_layer_create(GRect(s_drop_type_grect.origin.x, s_drop_type_grect.origin.y - 3, s_drop_type_grect.size.w, s_drop_type_grect.size.h));
|
||||
text_layer_set_background_color(s_drop_txt_type_layer, GColorClear);
|
||||
text_layer_set_font(s_drop_txt_type_layer, s_font_mansalva_small);
|
||||
text_layer_set_text_alignment(s_drop_txt_type_layer, GTextAlignmentCenter);
|
||||
layer_add_child(window_layer, text_layer_get_layer(s_drop_txt_type_layer));
|
||||
//// function
|
||||
s_drop_txt_function_layer = text_layer_create(GRect(s_drop_function_grect.origin.x, s_drop_function_grect.origin.y - 3, s_drop_function_grect.size.w, s_drop_function_grect.size.h));
|
||||
text_layer_set_background_color(s_drop_txt_function_layer, GColorClear);
|
||||
text_layer_set_font(s_drop_txt_function_layer, s_font_mansalva_small);
|
||||
text_layer_set_text_alignment(s_drop_txt_function_layer, GTextAlignmentCenter);
|
||||
layer_add_child(window_layer, text_layer_get_layer(s_drop_txt_function_layer));
|
||||
//// over
|
||||
s_drop_txt_over_layer = text_layer_create(GRect(s_drop_over_grect.origin.x, s_drop_over_grect.origin.y - 3, s_drop_over_grect.size.w, s_drop_over_grect.size.h));
|
||||
text_layer_set_background_color(s_drop_txt_over_layer, GColorClear);
|
||||
text_layer_set_font(s_drop_txt_over_layer, s_font_mansalva_small);
|
||||
text_layer_set_text_alignment(s_drop_txt_over_layer, GTextAlignmentCenter);
|
||||
layer_add_child(window_layer, text_layer_get_layer(s_drop_txt_over_layer));
|
||||
//// under
|
||||
s_drop_txt_under_layer = text_layer_create(GRect(s_drop_under_grect.origin.x, s_drop_under_grect.origin.y - 3, s_drop_under_grect.size.w, s_drop_under_grect.size.h));
|
||||
text_layer_set_background_color(s_drop_txt_under_layer, GColorClear);
|
||||
text_layer_set_font(s_drop_txt_under_layer, s_font_mansalva_small);
|
||||
text_layer_set_text_alignment(s_drop_txt_under_layer, GTextAlignmentCenter);
|
||||
layer_add_child(window_layer, text_layer_get_layer(s_drop_txt_under_layer));
|
||||
|
||||
// parenthesis text
|
||||
s_font_mansalva_big = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_MANSALVA_REGULAR_50));
|
||||
s_parenthesis_txt_layer = text_layer_create(GRect(s_drop_function_grect.origin.x + s_drop_function_grect.size.w + 2, s_bottom_bar_grect.origin.y - PBL_IF_ROUND_ELSE(12, 5), 200, 60));
|
||||
@@ -520,6 +554,10 @@ static void alarm_window_unload() {
|
||||
layer_destroy(s_alarm_highlight_layer);
|
||||
layer_destroy(s_division_layer);
|
||||
text_layer_destroy(s_parenthesis_txt_layer);
|
||||
text_layer_destroy(s_drop_txt_under_layer);
|
||||
text_layer_destroy(s_drop_txt_over_layer);
|
||||
text_layer_destroy(s_drop_txt_function_layer);
|
||||
text_layer_destroy(s_drop_txt_type_layer);
|
||||
layer_destroy(s_drop_bg_under_layer);
|
||||
layer_destroy(s_drop_bg_over_layer);
|
||||
layer_destroy(s_drop_bg_function_layer);
|
||||
|
||||
Reference in New Issue
Block a user