diff --git a/Apps/System/systemapp.c b/Apps/System/systemapp.c index a012790f..7b4200ae 100644 --- a/Apps/System/systemapp.c +++ b/Apps/System/systemapp.c @@ -14,10 +14,16 @@ #include "node_list.h" extern void flash_dump(void); +extern const char git_version[]; static Window *s_main_window; static Menu *s_menu; +static Window *s_about_window; +static Layer *s_aboutCanvas_layer; +static ScrollLayer *s_about_scroll; +static void about_update_proc(Layer *layer, GContext *nGContext); + StatusBarLayer *status_bar; typedef struct { @@ -59,6 +65,12 @@ static MenuItems* notification_item_selected(const MenuItem *item) return NULL; } +static MenuItems* about_item_selected(const MenuItem *item) +{ + window_stack_push(s_about_window, false); + return NULL; +} + static MenuItems* watch_list_item_selected(const MenuItem *item) { MenuItems *items = menu_items_create(16); // loop through all apps @@ -104,7 +116,7 @@ static void systemapp_window_load(Window *window) menu_items_add(items, MenuItem("Settings", "Config", RESOURCE_ID_SPANNER, settings_item_selected)); menu_items_add(items, MenuItem("Tests", NULL, RESOURCE_ID_CLOCK, run_test_item_selected)); menu_items_add(items, MenuItem("Notifications", NULL, RESOURCE_ID_SPEECH_BUBBLE, notification_item_selected)); - menu_items_add(items, MenuItem("RebbleOS", "... v0.0.0.2", RESOURCE_ID_SPEECH_BUBBLE, NULL)); + menu_items_add(items, MenuItem("RebbleOS", "... v0.0.0.2", RESOURCE_ID_SPEECH_BUBBLE, about_item_selected)); menu_set_items(s_menu, items); #ifdef PBL_RECT @@ -121,6 +133,74 @@ static void systemapp_window_unload(Window *window) menu_destroy(s_menu); } +static void window_exit_handler(ClickRecognizerRef recognizer, void *context) +{ + window_stack_pop(true); +} + +static void about_window_load(Window *window) +{ + Layer *window_layer = window_get_root_layer(s_about_window); + GRect bounds = layer_get_bounds(window_layer); + + status_bar = status_bar_layer_create(); + status_bar_layer_set_separator_mode(status_bar, StatusBarLayerSeparatorModeDotted); + + #ifdef PBL_BW + status_bar_layer_set_colors(status_bar, GColorBlack, GColorWhite); + #else + status_bar_layer_set_colors(status_bar, GColorRed, GColorWhite); + #endif + + + status_bar_layer_set_text(status_bar, "About RebbleOS"); + + s_about_scroll = scroll_layer_create(bounds); + scroll_layer_set_click_config_onto_window(s_about_scroll, window); + + s_aboutCanvas_layer = layer_create(bounds); + layer_set_update_proc(s_aboutCanvas_layer, about_update_proc); + scroll_layer_add_child(s_about_scroll, s_aboutCanvas_layer); + layer_mark_dirty(s_aboutCanvas_layer); + + layer_add_child(window_layer, scroll_layer_get_layer(s_about_scroll)); + layer_add_child(window_layer, status_bar_layer_get_layer(status_bar)); +} + +static void about_update_proc(Layer *layer, GContext *nGContext) +{ + GRect bounds = layer_get_unobstructed_bounds(layer); + graphics_context_set_text_color(nGContext, GColorBlack); + + window_single_click_subscribe(BUTTON_ID_BACK, window_exit_handler); + + graphics_draw_text(nGContext, "Version:", fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD), GRect((bounds.size.w/2)-70, (bounds.size.h/2)-10, 140, 20), + GTextOverflowModeTrailingEllipsis, GTextAlignmentCenter, 0); + + graphics_draw_text(nGContext, git_version, fonts_get_system_font(FONT_KEY_GOTHIC_18), GRect((bounds.size.w/2)-70, (bounds.size.h/2)+5, 140, 20), + GTextOverflowModeTrailingEllipsis, GTextAlignmentCenter, 0); + + graphics_draw_text(nGContext, "Join us!", fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD), GRect((bounds.size.w/2)-70, (bounds.size.h/2)+20, 140, 20), + GTextOverflowModeTrailingEllipsis, GTextAlignmentCenter, 0); + + graphics_draw_text(nGContext, "discord.gg/aRUAYFN", fonts_get_system_font(FONT_KEY_GOTHIC_18), GRect((bounds.size.w/2)-70, (bounds.size.h/2)+35, 140, 20), + GTextOverflowModeTrailingEllipsis, GTextAlignmentCenter, 0); + + #ifdef PBL_BW + graphics_draw_bitmap_in_rect(nGContext, gbitmap_create_with_resource(RESOURCE_ID_REBBLE_LOGO_BW), GRect((bounds.size.w/2)-17, (bounds.size.h/2)-63, 34, 53)); + //TODO: Get black and white rocket bitmap for Classic + //graphics_draw_bitmap_in_rect(nGContext, gbitmap_create_with_resource(RESOURCE_ID_TO_MOON_BW), GRect((bounds.size.w/2)-8, (bounds.size.h/2)+60, 19, 19)); + #else + graphics_draw_bitmap_in_rect(nGContext, gbitmap_create_with_resource(RESOURCE_ID_REBBLE_LOGO_DARK), GRect((bounds.size.w/2)-17, (bounds.size.h/2)-63, 34, 53)); + graphics_draw_bitmap_in_rect(nGContext, gbitmap_create_with_resource(RESOURCE_ID_TO_MOON), GRect((bounds.size.w/2)-8, (bounds.size.h/2)+60, 19, 19)); + #endif +} + +static void about_window_unload(Window *window) +{ + scroll_layer_destroy(s_about_scroll); +} + void systemapp_init(void) { s_main_window = window_create(); @@ -130,12 +210,20 @@ void systemapp_init(void) .unload = systemapp_window_unload, }); + s_about_window = window_create(); + + window_set_window_handlers(s_about_window, (WindowHandlers) { + .load = about_window_load, + .unload = about_window_unload, + }); + window_stack_push(s_main_window, true); } void systemapp_deinit(void) { window_destroy(s_main_window); + window_destroy(s_about_window); } void systemapp_main(void) diff --git a/Config/FreeRTOSConfig.h b/Config/FreeRTOSConfig.h old mode 100755 new mode 100644 diff --git a/Config/stm32f4xx_conf.h b/Config/stm32f4xx_conf.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/croutine.c b/FreeRTOS/croutine.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/event_groups.c b/FreeRTOS/event_groups.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/FreeRTOS.h b/FreeRTOS/include/FreeRTOS.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/StackMacros.h b/FreeRTOS/include/StackMacros.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/croutine.h b/FreeRTOS/include/croutine.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/deprecated_definitions.h b/FreeRTOS/include/deprecated_definitions.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/event_groups.h b/FreeRTOS/include/event_groups.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/list.h b/FreeRTOS/include/list.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/mpu_wrappers.h b/FreeRTOS/include/mpu_wrappers.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/portable.h b/FreeRTOS/include/portable.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/projdefs.h b/FreeRTOS/include/projdefs.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/queue.h b/FreeRTOS/include/queue.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/semphr.h b/FreeRTOS/include/semphr.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/task.h b/FreeRTOS/include/task.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/include/timers.h b/FreeRTOS/include/timers.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/list.c b/FreeRTOS/list.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/portable/GCC/ARM_CM4F/port.c b/FreeRTOS/portable/GCC/ARM_CM4F/port.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/portable/GCC/ARM_CM4F/portmacro.h b/FreeRTOS/portable/GCC/ARM_CM4F/portmacro.h old mode 100755 new mode 100644 diff --git a/FreeRTOS/portable/MemMang/heap_1.c b/FreeRTOS/portable/MemMang/heap_1.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/portable/MemMang/heap_2.c b/FreeRTOS/portable/MemMang/heap_2.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/portable/MemMang/heap_3.c b/FreeRTOS/portable/MemMang/heap_3.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/portable/MemMang/heap_4.c b/FreeRTOS/portable/MemMang/heap_4.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/portable/MemMang/heap_5.c b/FreeRTOS/portable/MemMang/heap_5.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/queue.c b/FreeRTOS/queue.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/readme.txt b/FreeRTOS/readme.txt old mode 100755 new mode 100644 diff --git a/FreeRTOS/tasks.c b/FreeRTOS/tasks.c old mode 100755 new mode 100644 diff --git a/FreeRTOS/timers.c b/FreeRTOS/timers.c old mode 100755 new mode 100644 diff --git a/Platform/CMSIS/Include/arm_common_tables.h b/Platform/CMSIS/Include/arm_common_tables.h old mode 100755 new mode 100644 diff --git a/Platform/CMSIS/Include/arm_math.h b/Platform/CMSIS/Include/arm_math.h old mode 100755 new mode 100644 diff --git a/Platform/CMSIS/Include/core_cm4.h b/Platform/CMSIS/Include/core_cm4.h old mode 100755 new mode 100644 diff --git a/Platform/CMSIS/Include/core_cm4_simd.h b/Platform/CMSIS/Include/core_cm4_simd.h old mode 100755 new mode 100644 diff --git a/Platform/CMSIS/Include/core_cmFunc.h b/Platform/CMSIS/Include/core_cmFunc.h old mode 100755 new mode 100644 diff --git a/Platform/CMSIS/Include/core_cmInstr.h b/Platform/CMSIS/Include/core_cmInstr.h old mode 100755 new mode 100644 diff --git a/Resources/custom_system_resources.pbpack b/Resources/custom_system_resources.pbpack new file mode 100644 index 00000000..2c819577 Binary files /dev/null and b/Resources/custom_system_resources.pbpack differ diff --git a/Utilities/stm32_crc.py b/Utilities/stm32_crc.py old mode 100644 new mode 100755 diff --git a/docs/debian_build.md b/docs/debian_build.md index ed144608..60e24bb0 100644 --- a/docs/debian_build.md +++ b/docs/debian_build.md @@ -18,7 +18,7 @@ directory for the SDK using the following. ```sh mkdir ~/pebble-dev/ cd ~/pebble-dev/ - wget https://s3.amazonaws.com/assets.getpebble.com/pebble-tool/pebble-sdk-4.5-linux64.tar.bz2 + wget https://developer.rebble.io/s3.amazonaws.com/assets.getpebble.com/pebble-tool/pebble-sdk-4.5-linux64.tar.bz2 tar -jxf pebble-sdk-4.5-linux64.tar.bz2 echo 'export PATH=~/pebble-dev/pebble-sdk-4.5-linux64/bin:$PATH' >> ~/.bash_profile . ~/.bash_profile diff --git a/rwatch/pebble_defines.h b/rwatch/pebble_defines.h old mode 100755 new mode 100644