From 6d02d03cf76ef6d58a9c3ca22a455766ef8135a2 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Sun, 12 Apr 2026 04:31:41 +0000 Subject: [PATCH] Hide bitwidth on displays too small to show it properly --- src/c/main.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/c/main.c b/src/c/main.c index d4c2fa9..e785621 100644 --- a/src/c/main.c +++ b/src/c/main.c @@ -67,7 +67,7 @@ static uint64_t prefix_to_usable_hosts(int prefix) { } static void layout_result_text_layer(void) { - if (!s_cidr_text_layer || !s_mask_text_layer || !s_usable_hosts_text_layer || !s_bitwidth_text_layer) { + if (!s_cidr_text_layer || !s_mask_text_layer || !s_usable_hosts_text_layer) { return; } @@ -80,14 +80,17 @@ static void layout_result_text_layer(void) { GSize cidr_size = text_layer_get_content_size(s_cidr_text_layer); GSize mask_size = text_layer_get_content_size(s_mask_text_layer); GSize usable_size = text_layer_get_content_size(s_usable_hosts_text_layer); - GSize bit_size = text_layer_get_content_size(s_bitwidth_text_layer); + GSize bit_size = s_bitwidth_text_layer ? text_layer_get_content_size(s_bitwidth_text_layer) : GSize(0, 0); int16_t cidr_h = cidr_size.h > 0 ? cidr_size.h : 1; int16_t mask_h = mask_size.h > 0 ? mask_size.h : 1; int16_t usable_h = usable_size.h > 0 ? usable_size.h : 1; int16_t bit_h = bit_size.h > 0 ? bit_size.h : 1; - int16_t total_h = cidr_h + gap + mask_h + gap + usable_h + gap + bit_h; + int16_t total_h = cidr_h + gap + mask_h + gap + usable_h; + if (s_bitwidth_text_layer) { + total_h += gap + bit_h; + } if (total_h > bounds.size.h - 10) { total_h = bounds.size.h - 10; } @@ -98,8 +101,10 @@ static void layout_result_text_layer(void) { layer_set_frame(text_layer_get_layer(s_mask_text_layer), GRect(side_margin, y, width, mask_h)); y += mask_h + gap; layer_set_frame(text_layer_get_layer(s_usable_hosts_text_layer), GRect(side_margin, y, width, usable_h)); - y += usable_h + gap; - layer_set_frame(text_layer_get_layer(s_bitwidth_text_layer), GRect(side_margin, y, width, bit_h)); + if (s_bitwidth_text_layer) { + y += usable_h + gap; + layer_set_frame(text_layer_get_layer(s_bitwidth_text_layer), GRect(side_margin, y, width, bit_h)); + } } static void update_result_text(void) { @@ -123,11 +128,13 @@ static void update_result_text(void) { } s_bitwidth_text[pos] = '\0'; - if (s_cidr_text_layer && s_mask_text_layer && s_usable_hosts_text_layer && s_bitwidth_text_layer) { + if (s_cidr_text_layer && s_mask_text_layer && s_usable_hosts_text_layer) { text_layer_set_text(s_cidr_text_layer, s_cidr_text); text_layer_set_text(s_mask_text_layer, s_mask_text); text_layer_set_text(s_usable_hosts_text_layer, s_usable_hosts_text); - text_layer_set_text(s_bitwidth_text_layer, s_bitwidth_text); + if (s_bitwidth_text_layer) { + text_layer_set_text(s_bitwidth_text_layer, s_bitwidth_text); + } layout_result_text_layer(); } @@ -356,11 +363,14 @@ static void result_window_load(Window *window) { text_layer_set_overflow_mode(s_usable_hosts_text_layer, GTextOverflowModeTrailingEllipsis); text_layer_set_text(s_usable_hosts_text_layer, s_usable_hosts_text); + Layer *window_layer = window_get_root_layer(window); +#if PBL_DISPLAY_WIDTH > 144 s_bitwidth_text_layer = text_layer_create(GRect(0, 0, PBL_DISPLAY_WIDTH, 14)); text_layer_set_background_color(s_bitwidth_text_layer, GColorClear); text_layer_set_text_color(s_bitwidth_text_layer, GColorLightGray); text_layer_set_font(s_bitwidth_text_layer, fonts_get_system_font(FONT_KEY_GOTHIC_09)); text_layer_set_text(s_bitwidth_text_layer, s_bitwidth_text); +#endif #if PBL_ROUND text_layer_set_text_alignment(s_cidr_text_layer, GTextAlignmentCenter); @@ -369,11 +379,12 @@ static void result_window_load(Window *window) { text_layer_set_text_alignment(s_bitwidth_text_layer, GTextAlignmentCenter); #endif - Layer *window_layer = window_get_root_layer(window); layer_add_child(window_layer, text_layer_get_layer(s_cidr_text_layer)); layer_add_child(window_layer, text_layer_get_layer(s_mask_text_layer)); layer_add_child(window_layer, text_layer_get_layer(s_usable_hosts_text_layer)); - layer_add_child(window_layer, text_layer_get_layer(s_bitwidth_text_layer)); + if (s_bitwidth_text_layer) { + layer_add_child(window_layer, text_layer_get_layer(s_bitwidth_text_layer)); + } update_result_text(); } @@ -382,7 +393,9 @@ static void result_window_unload(Window *window) { text_layer_destroy(s_cidr_text_layer); text_layer_destroy(s_mask_text_layer); text_layer_destroy(s_usable_hosts_text_layer); - text_layer_destroy(s_bitwidth_text_layer); + if (s_bitwidth_text_layer) { + text_layer_destroy(s_bitwidth_text_layer); + } s_cidr_text_layer = NULL; s_mask_text_layer = NULL; s_usable_hosts_text_layer = NULL;