Hide bitwidth on displays too small to show it properly
This commit is contained in:
33
src/c/main.c
33
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;
|
||||
|
||||
Reference in New Issue
Block a user