#include "../../neat_bar/src/c/neat_bar.h" #include #define COUNT_PKEY 1 #define REPEAT_INTERVAL 50 static Window *s_window; static TextLayer *s_text_layer; static GBitmap *s_action_icon_plus; static GBitmap *s_action_icon_minus; static GBitmap *s_action_icon_reset; static NeatBarLayer *s_neat_bar_layer; static StatusBarLayer *s_status_bar_layer; static int s_count; void update() { static char buffer[10]; snprintf(buffer, sizeof(buffer), "%i", s_count); text_layer_set_text(s_text_layer, buffer); } void increment() { s_count++; } void decrement() { s_count--; } void reset() { s_count = 0; } #if PBL_TOUCH static void touch_handler(const TouchEvent *event, void *context) { if (event->type == TouchEvent_Touchdown) { increment(); update(); } } #endif void select_click_handler(ClickRecognizerRef recognizer, void *context) { increment(); update(); } void down_click_handler(ClickRecognizerRef recognizer, void *context) { decrement(); update(); } void up_click_handler(ClickRecognizerRef recognizer, void *context) { reset(); update(); } void click_config_provider(void *context) { window_single_repeating_click_subscribe(BUTTON_ID_SELECT, REPEAT_INTERVAL, (ClickHandler)select_click_handler); window_single_repeating_click_subscribe(BUTTON_ID_UP, REPEAT_INTERVAL, (ClickHandler)up_click_handler); window_single_repeating_click_subscribe(BUTTON_ID_DOWN, REPEAT_INTERVAL, (ClickHandler)down_click_handler); } void window_load(Window *window) { Layer *window_layer = window_get_root_layer(window); s_neat_bar_layer = neat_bar_layer_create(); neat_bar_layer_set_click_config_provider(s_neat_bar_layer, click_config_provider); neat_bar_layer_set_icon(s_neat_bar_layer, BUTTON_ID_UP, s_action_icon_reset); neat_bar_layer_set_icon(s_neat_bar_layer, BUTTON_ID_SELECT, s_action_icon_plus); neat_bar_layer_set_icon(s_neat_bar_layer, BUTTON_ID_DOWN, s_action_icon_minus); #if PBL_RECT neat_bar_layer_set_icons_x_offset(s_neat_bar_layer, 0); neat_bar_layer_set_rect_bar_corner_radius(s_neat_bar_layer, 3); #if PBL_DISPLAY_HEIGHT >= 228 neat_bar_layer_set_bar_width(s_neat_bar_layer, ACTION_BAR_WIDTH - 6); neat_bar_layer_set_bar_height(s_neat_bar_layer, PBL_DISPLAY_HEIGHT - 28); neat_bar_layer_set_bar_y_offset(s_neat_bar_layer, 24); neat_bar_layer_set_icons_y_offset(s_neat_bar_layer, 10); #else neat_bar_layer_set_bar_width(s_neat_bar_layer, ACTION_BAR_WIDTH - 10); neat_bar_layer_set_bar_height(s_neat_bar_layer, PBL_DISPLAY_HEIGHT - 22); neat_bar_layer_set_bar_y_offset(s_neat_bar_layer, 19); neat_bar_layer_set_icons_y_offset(s_neat_bar_layer, 8); neat_bar_layer_set_icons_spread(s_neat_bar_layer, 48); neat_bar_layer_set_animations_move_distance(s_neat_bar_layer, 2); #endif #endif neat_bar_layer_add_to_window(s_neat_bar_layer, window); #if PBL_DISPLAY_HEIGHT >= 260 && PBL_ROUND #define W_OFFSET 20 // TODO #define Y_OFFSET 19 // TODO #elif PBL_DISPLAY_HEIGHT >= 228 && PBL_RECT #define W_OFFSET 28 #define Y_OFFSET 17 #elif PBL_DISPLAY_HEIGHT >= 180 && PBL_ROUND #define W_OFFSET 40 #define Y_OFFSET 27 #else // 144x168 #define W_OFFSET 20 #define Y_OFFSET 19 #endif s_text_layer = text_layer_create(GRect(0, PBL_DISPLAY_HEIGHT / 2 - Y_OFFSET, PBL_DISPLAY_WIDTH - W_OFFSET, PBL_DISPLAY_HEIGHT)); text_layer_set_font(s_text_layer, fonts_get_system_font(FONT_KEY_BITHAM_42_BOLD)); text_layer_set_background_color(s_text_layer, GColorClear); update(); text_layer_set_text_alignment(s_text_layer, GTextAlignmentCenter); layer_add_child(window_layer, text_layer_get_layer(s_text_layer)); s_status_bar_layer = status_bar_layer_create(); layer_add_child(window_layer, status_bar_layer_get_layer(s_status_bar_layer)); } void window_unload(Window *window) { status_bar_layer_destroy(s_status_bar_layer); text_layer_destroy(s_text_layer); neat_bar_layer_destroy(s_neat_bar_layer); } void init() { s_action_icon_plus = gbitmap_create_with_resource(RESOURCE_ID_PLUS); s_action_icon_minus = gbitmap_create_with_resource(RESOURCE_ID_MINUS); s_action_icon_reset = gbitmap_create_with_resource(RESOURCE_ID_RESET); s_window = window_create(); window_set_window_handlers(s_window, (WindowHandlers){ .load = window_load, .unload = window_unload, }); s_count = persist_exists(COUNT_PKEY) ? persist_read_int(COUNT_PKEY) : 0; window_stack_push(s_window, true); #if PBL_TOUCH touch_service_subscribe(touch_handler, NULL); #endif } void deinit() { #if PBL_TOUCH touch_service_unsubscribe(); #endif persist_write_int(COUNT_PKEY, s_count); window_destroy(s_window); gbitmap_destroy(s_action_icon_plus); gbitmap_destroy(s_action_icon_minus); gbitmap_destroy(s_action_icon_reset); } int main() { init(); app_event_loop(); deinit(); }