Add Stopwatch application
It can be started, stopped, and cleared. It also continues to run if you leave the screen.
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
#include "Application/Screens/MenuScreen.h"
|
||||
#include "Application/Screens/SetTimeScreen.h"
|
||||
#include "Application/Screens/SetDateScreen.h"
|
||||
#include "Application/Screens/StopwatchScreen.h"
|
||||
|
||||
#include "Bsp/macros.h"
|
||||
|
||||
@@ -51,29 +52,43 @@ static BSP::ButtonManager g_btn_manager(g_sched, 2, 1, 0, Time::millis(1));
|
||||
static ScreenManager g_screen_manager(g_sched, g_display, g_btn_manager);
|
||||
static SetTimeScreen g_set_time_screen(g_display, g_screen_manager);
|
||||
static SetTimeScreen g_set_date_screen(g_display, g_screen_manager);
|
||||
static StopwatchScreen g_stopwatch_screen(g_display, g_screen_manager);
|
||||
|
||||
static MenuScreen g_enable_debug(g_display,
|
||||
g_screen_manager,
|
||||
"SW Update",
|
||||
std::initializer_list<MenuScreenItem>({MenuScreenItem("Enable", []() { BSP::LowPower::enable_debug(); }),
|
||||
MenuScreenItem("Disable", []() { BSP::LowPower::disable_debug();
|
||||
})}));
|
||||
MenuScreenItem("Disable", []() { BSP::LowPower::disable_debug();}
|
||||
)}));
|
||||
// static DebugScreen g_debug_screen(g_display, g_screen_manager);
|
||||
|
||||
static MenuScreen g_set_face_screen(g_display,
|
||||
g_screen_manager,
|
||||
"Face",
|
||||
std::initializer_list<MenuScreenItem>());
|
||||
|
||||
static MenuScreen g_settings_menu_screen(g_display,
|
||||
g_screen_manager,
|
||||
"Settings",
|
||||
std::initializer_list<MenuScreenItem>({MenuScreenItem("Set Time", g_set_time_screen),
|
||||
MenuScreenItem("Set Date", g_set_date_screen),
|
||||
MenuScreenItem("Set Face", g_set_date_screen),
|
||||
MenuScreenItem("Set Face", g_set_face_screen),
|
||||
MenuScreenItem("SW Update", g_enable_debug)}));
|
||||
|
||||
static MenuScreen g_apps_menu_screen(g_display,
|
||||
g_screen_manager,
|
||||
"Apps",
|
||||
std::initializer_list<MenuScreenItem>({MenuScreenItem("Stopwatch", g_stopwatch_screen)}));
|
||||
|
||||
|
||||
static MenuScreen g_main_menu_screen(g_display,
|
||||
g_screen_manager,
|
||||
"Main Menu",
|
||||
std::initializer_list<MenuScreenItem>({MenuScreenItem("Apps", g_settings_menu_screen),
|
||||
std::initializer_list<MenuScreenItem>({MenuScreenItem("Apps", g_apps_menu_screen),
|
||||
MenuScreenItem("Settings", g_settings_menu_screen)}));
|
||||
|
||||
static AnalogTimeScreen g_display_time_screen(g_display, g_screen_manager, g_main_menu_screen);
|
||||
static AnalogTimeScreen g_analog_time_screen(g_display, g_screen_manager, g_main_menu_screen);
|
||||
static BigDigitalTimeScreen g_digital_time_screen(g_display, g_screen_manager, g_main_menu_screen);
|
||||
|
||||
extern "C" void __cxa_pure_virtual() { while(1) {} }
|
||||
|
||||
@@ -206,7 +221,12 @@ static void _init(void)
|
||||
g_btn_manager.init();
|
||||
g_display.init();
|
||||
g_screen_manager.init();
|
||||
g_screen_manager.set_root_screen(g_display_time_screen);
|
||||
g_screen_manager.set_root_screen(g_analog_time_screen);
|
||||
|
||||
g_set_face_screen.add_item(MenuScreenItem("Analog",
|
||||
[]() { g_screen_manager.set_root_screen(g_analog_time_screen); }));
|
||||
g_set_face_screen.add_item(MenuScreenItem("Digital",
|
||||
[]() { g_screen_manager.set_root_screen(g_digital_time_screen); }));
|
||||
|
||||
// Enqueue each of the tasks
|
||||
BSP::Schedule::NextTime asap = BSP::Schedule::NextTime::asap();
|
||||
|
||||
Reference in New Issue
Block a user