diff --git a/log.h b/log.h index 8f67d18..3557063 100644 --- a/log.h +++ b/log.h @@ -27,8 +27,10 @@ typedef enum { /* Errors only */ UL_LOG_LEVEL_ERROR = 0, + /* Warnings and errors */ + UL_LOG_LEVEL_WARNING = 1, /* Include non-errors in log */ - UL_LOG_LEVEL_VERBOSE = 1 + UL_LOG_LEVEL_VERBOSE = 2 } ul_log_level; /** diff --git a/main.c b/main.c index ca01eee..2cc1e8f 100644 --- a/main.c +++ b/main.c @@ -235,6 +235,7 @@ static void layout_dropdown_value_changed_cb(lv_event_t *event) { static void shutdown_btn_clicked_cb(lv_event_t *event) { static const char *btns[] = { "Yes", "No", "" }; lv_obj_t *mbox = lv_msgbox_create(NULL, NULL, "Shutdown device?", btns, false); + lv_obj_set_width(mbox, 400); lv_obj_add_event_cb(mbox, shutdown_mbox_value_changed_cb, LV_EVENT_VALUE_CHANGED, NULL); lv_obj_center(mbox); } diff --git a/themes.c b/themes.c index 31f6dfc..70b90ba 100644 --- a/themes.c +++ b/themes.c @@ -310,22 +310,309 @@ static const ul_theme ul_themes_breezy_dark = { } }; +/* pmOS light */ +static const ul_theme ul_themes_pmos_light = { + .name = "pmos-light", + .window = { + .bg_color = 0xffffff + }, + .header = { + .bg_color = 0xffffff, + .border_width = 8, + .border_color = 0x009900, + .pad = 30, + .gap = 20 + }, + .keyboard = { + .bg_color = 0xffffff, + .border_width = 8, + .border_color = 0x009900, + .pad = 30, + .gap = 10, + .keys = { + .border_width = 2, + .corner_radius = 5, + .key_char = { + .normal = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x009900 + }, + .pressed = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x009900 + } + }, + .key_non_char = { + .normal = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x009900 + }, + .pressed = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x009900 + } + }, + .key_mod_act = { + .normal = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x009900 + }, + .pressed = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x009900 + } + }, + .key_mod_inact = { + .normal = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x009900 + }, + .pressed = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x009900 + } + } + } + }, + .button = { + .border_width = 0, + .corner_radius = 0, + .pad = 8, + .normal = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x000000 + }, + .pressed = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x000000 + } + }, + .textarea = { + .fg_color = 0x000000, + .bg_color = 0xb1b1b1, + .border_width = 0, + .border_color = 0xb1b1b1, + .corner_radius = 0, + .pad = 8, + .placeholder_color = 0x000000, + .cursor = { + .width = 2, + .color = 0x000000, + .period = 700 + } + }, + .dropdown = { + .box = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_width = 0, + .border_color = 0xffffff, + .corner_radius = 0, + .pad = 10 + }, + .list = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .selection_fg_color = 0xffffff, + .selection_bg_color = 0x009900, + .border_width = 0, + .border_color = 0xffffff, + .corner_radius = 0, + .pad = 0 + } + }, + .label = { + .fg_color = 0x000000 + }, + .msgbox = { + .fg_color = 0x000000, + .bg_color = 0xb1b1b1, + .border_width = 0, + .border_color = 0xb1b1b1, + .corner_radius = 0, + .pad = 20, + .buttons = { + .pad = 20, + .gap = 10 + }, + .dimming = { + .color = 0x232629, + .opacity = 178 + } + } +}; + +/* pmOS dark */ +static const ul_theme ul_themes_pmos_dark = { + .name = "pmos-dark", + .window = { + .bg_color = 0x000000 + }, + .header = { + .bg_color = 0x000000, + .border_width = 8, + .border_color = 0x009900, + .pad = 30, + .gap = 20 + }, + .keyboard = { + .bg_color = 0x000000, + .border_width = 8, + .border_color = 0x009900, + .pad = 30, + .gap = 10, + .keys = { + .border_width = 2, + .corner_radius = 5, + .key_char = { + .normal = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x009900 + }, + .pressed = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x009900 + } + }, + .key_non_char = { + .normal = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x009900 + }, + .pressed = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x009900 + } + }, + .key_mod_act = { + .normal = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x009900 + }, + .pressed = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x009900 + } + }, + .key_mod_inact = { + .normal = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x009900 + }, + .pressed = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x009900 + } + } + } + }, + .button = { + .border_width = 0, + .corner_radius = 0, + .pad = 8, + .normal = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_color = 0x000000 + }, + .pressed = { + .fg_color = 0x000000, + .bg_color = 0xffffff, + .border_color = 0x000000 + } + }, + .textarea = { + .fg_color = 0xffffff, + .bg_color = 0x616161, + .border_width = 0, + .border_color = 0x616161, + .corner_radius = 0, + .pad = 8, + .placeholder_color = 0xffffff, + .cursor = { + .width = 2, + .color = 0x000000, + .period = 700 + } + }, + .dropdown = { + .box = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .border_width = 0, + .border_color = 0x000000, + .corner_radius = 0, + .pad = 10 + }, + .list = { + .fg_color = 0xffffff, + .bg_color = 0x000000, + .selection_fg_color = 0xffffff, + .selection_bg_color = 0x009900, + .border_width = 0, + .border_color = 0x000000, + .corner_radius = 0, + .pad = 0 + } + }, + .label = { + .fg_color = 0xffffff + }, + .msgbox = { + .fg_color = 0xffffff, + .bg_color = 0x616161, + .border_width = 0, + .border_color = 0x616161, + .corner_radius = 0, + .pad = 20, + .buttons = { + .pad = 20, + .gap = 10 + }, + .dimming = { + .color = 0x232629, + .opacity = 178 + } + } +}; /** * Public interface */ -const int ul_themes_num_themes = 2; +const int ul_themes_num_themes = 4; const ul_theme ul_themes_themes[] = { ul_themes_breezy_light, - ul_themes_breezy_dark + ul_themes_breezy_dark, + ul_themes_pmos_light, + ul_themes_pmos_dark }; ul_themes_theme_id_t ul_themes_find_theme_with_name(const char *name) { for (int i = 0; i < ul_themes_num_themes; ++i) { if (strcmp(ul_themes_themes[i].name, name) == 0) { + ul_log(UL_LOG_LEVEL_VERBOSE, "Found theme: %s\n", name); return i; } } + ul_log(UL_LOG_LEVEL_WARNING, "Theme %s not found\n", name); return UL_THEMES_THEME_NONE; } diff --git a/themes.h b/themes.h index 8f7cf52..1a536fa 100644 --- a/themes.h +++ b/themes.h @@ -22,6 +22,7 @@ #define UL_THEMES_H #include "theme.h" +#include "log.h" /* Theme IDs, values can be used as indexes into the ul_themes_themes array */ typedef enum {