feat(layer): bar layer
This commit is contained in:
parent
9f6f83e296
commit
da3ff8d5e6
6 changed files with 74 additions and 8 deletions
|
|
@ -38,12 +38,12 @@
|
||||||
"spaceOptimization": "memory"
|
"spaceOptimization": "memory"
|
||||||
}, {
|
}, {
|
||||||
"type": "font",
|
"type": "font",
|
||||||
"name": "FONT_TORO_38",
|
"name": "FONT_TORO_36",
|
||||||
"file": "font_toro.ttf",
|
"file": "font_toro.ttf",
|
||||||
"characterRange": "[0-9:]"
|
"characterRange": "[0-9:]"
|
||||||
}, {
|
}, {
|
||||||
"type": "font",
|
"type": "font",
|
||||||
"name": "FONT_KONEKO_TORO_28",
|
"name": "FONT_KONEKO_TORO_24",
|
||||||
"file": "font_koneko_toro.ttf",
|
"file": "font_koneko_toro.ttf",
|
||||||
"characterRange": "[0-9/WTFSMedhuriaton]"
|
"characterRange": "[0-9/WTFSMedhuriaton]"
|
||||||
}]
|
}]
|
||||||
|
|
|
||||||
Binary file not shown.
53
src/c/bar_layer.c
Normal file
53
src/c/bar_layer.c
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
#include "bar_layer.h"
|
||||||
|
|
||||||
|
#include "resources_service.h"
|
||||||
|
|
||||||
|
#define BAR_PAD_W 8
|
||||||
|
|
||||||
|
static Layer *s_bar_layer;
|
||||||
|
|
||||||
|
static void bar_layer_update_proc(Layer *layer, GContext *ctx) {
|
||||||
|
GRect window_rect = layer_get_unobstructed_bounds(layer);
|
||||||
|
|
||||||
|
time_t tmp = time(NULL);
|
||||||
|
struct tm *time = localtime(&tmp);
|
||||||
|
|
||||||
|
static char date_text[6], weekday_text[4];
|
||||||
|
GFont font = resources_service_get_custom_font(CustomFontKonekoToro);
|
||||||
|
|
||||||
|
strftime(date_text, sizeof(date_text), "%m/%d", time);
|
||||||
|
GSize date_text_size = graphics_text_layout_get_content_size(
|
||||||
|
date_text, font, window_rect, GTextOverflowModeFill, GTextAlignmentLeft);
|
||||||
|
GRect date_text_rect = GRect(0, 0, date_text_size.w, date_text_size.h);
|
||||||
|
grect_align(&date_text_rect, &window_rect, GAlignLeft, true);
|
||||||
|
|
||||||
|
strftime(weekday_text, sizeof(weekday_text), "%a", time);
|
||||||
|
GSize weekday_text_size = graphics_text_layout_get_content_size(
|
||||||
|
weekday_text, font, window_rect, GTextOverflowModeFill, GTextAlignmentRight);
|
||||||
|
GRect weekday_text_rect = GRect(0, 0, weekday_text_size.w, weekday_text_size.h);
|
||||||
|
grect_align(&weekday_text_rect, &window_rect, GAlignRight, true);
|
||||||
|
|
||||||
|
graphics_context_set_text_color(ctx, GColorBlack);
|
||||||
|
graphics_draw_text(ctx, date_text, font, date_text_rect, GTextOverflowModeFill,
|
||||||
|
GTextAlignmentLeft, NULL);
|
||||||
|
graphics_draw_text(ctx, weekday_text, font, weekday_text_rect, GTextOverflowModeFill,
|
||||||
|
GTextAlignmentRight, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void bar_layer_init(Window *window) {
|
||||||
|
Layer *window_layer = window_get_root_layer(window);
|
||||||
|
GRect window_rect = layer_get_unobstructed_bounds(window_layer);
|
||||||
|
|
||||||
|
s_bar_layer = layer_create(GRect(BAR_PAD_W, 0, window_rect.size.w - (BAR_PAD_W * 2), 28));
|
||||||
|
layer_set_update_proc(s_bar_layer, bar_layer_update_proc);
|
||||||
|
|
||||||
|
layer_add_child(window_layer, s_bar_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void bar_layer_tick(void) {
|
||||||
|
layer_mark_dirty(s_bar_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void bar_layer_deinit(void) {
|
||||||
|
layer_destroy(s_bar_layer);
|
||||||
|
}
|
||||||
10
src/c/bar_layer.h
Normal file
10
src/c/bar_layer.h
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#ifndef BAR_LAYER_H_
|
||||||
|
#define BAR_LAYER_H_
|
||||||
|
|
||||||
|
#include <pebble.h>
|
||||||
|
|
||||||
|
void bar_layer_init(Window *window);
|
||||||
|
void bar_layer_tick(void);
|
||||||
|
void bar_layer_deinit(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
#include "main_window.h"
|
#include "main_window.h"
|
||||||
|
|
||||||
|
#include "bar_layer.h"
|
||||||
#include "character_layer.h"
|
#include "character_layer.h"
|
||||||
#include "clock_layer.h"
|
#include "clock_layer.h"
|
||||||
|
|
||||||
|
|
@ -7,26 +9,27 @@ static Window *s_main_window;
|
||||||
static void main_window_tick(struct tm *time, TimeUnits units) {
|
static void main_window_tick(struct tm *time, TimeUnits units) {
|
||||||
character_layer_tick();
|
character_layer_tick();
|
||||||
clock_layer_tick();
|
clock_layer_tick();
|
||||||
|
bar_layer_tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void main_window_load(Window *window) {
|
static void main_window_load(Window *window) {
|
||||||
character_layer_init(s_main_window);
|
character_layer_init(s_main_window);
|
||||||
clock_layer_init(s_main_window, GPoint(0, 40));
|
clock_layer_init(s_main_window, GPoint(0, 40));
|
||||||
|
bar_layer_init(s_main_window);
|
||||||
tick_timer_service_subscribe(SECOND_UNIT, main_window_tick);
|
tick_timer_service_subscribe(SECOND_UNIT, main_window_tick);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void main_window_unload(Window *window) {
|
static void main_window_unload(Window *window) {
|
||||||
tick_timer_service_unsubscribe();
|
tick_timer_service_unsubscribe();
|
||||||
clock_layer_deinit();
|
clock_layer_deinit();
|
||||||
|
bar_layer_deinit();
|
||||||
character_layer_deinit();
|
character_layer_deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void main_window_init(void) {
|
void main_window_init(void) {
|
||||||
s_main_window = window_create();
|
s_main_window = window_create();
|
||||||
window_set_window_handlers(s_main_window, (WindowHandlers) {
|
window_set_window_handlers(
|
||||||
.load = main_window_load,
|
s_main_window, (WindowHandlers){.load = main_window_load, .unload = main_window_unload});
|
||||||
.unload = main_window_unload
|
|
||||||
});
|
|
||||||
window_stack_push(s_main_window, true);
|
window_stack_push(s_main_window, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ static ResourcesService *s_resources_service;
|
||||||
void resources_service_init(void) {
|
void resources_service_init(void) {
|
||||||
s_resources_service = malloc(sizeof(ResourcesService));
|
s_resources_service = malloc(sizeof(ResourcesService));
|
||||||
s_resources_service->font_koneko_toro =
|
s_resources_service->font_koneko_toro =
|
||||||
fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_KONEKO_TORO_28));
|
fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_KONEKO_TORO_24));
|
||||||
s_resources_service->font_toro =
|
s_resources_service->font_toro =
|
||||||
fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_TORO_38));
|
fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_TORO_36));
|
||||||
s_resources_service->character_even = gbitmap_create_with_resource(RESOURCE_ID_CHARACTER_EVEN);
|
s_resources_service->character_even = gbitmap_create_with_resource(RESOURCE_ID_CHARACTER_EVEN);
|
||||||
s_resources_service->character_odd = gbitmap_create_with_resource(RESOURCE_ID_CHARACTER_ODD);
|
s_resources_service->character_odd = gbitmap_create_with_resource(RESOURCE_ID_CHARACTER_ODD);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue