Merge branch 'LVGL7' of https://github.com/joaquimorg/Pinetime into joaquimorg-LVGL7
# Conflicts: # src/CMakeLists.txt # src/displayapp/DisplayApp.cpp # src/displayapp/screens/Modal.cpp # src/displayapp/screens/Modal.h # src/displayapp/screens/Notifications.cpp # src/displayapp/screens/Tile.h
This commit is contained in:
commit
f864330d35
33 changed files with 1179 additions and 1351 deletions
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "src/libs/lvgl"]
|
||||
path = src/libs/lvgl
|
||||
url = https://github.com/joaquimorg/lvgl.git
|
|
@ -19,7 +19,7 @@ The goal of this project is to design an open-source firmware for the Pinetime s
|
|||
- Code written in **modern C++**;
|
||||
- Build system based on **CMake**;
|
||||
- Based on **[FreeRTOS 10.0.0](https://freertos.org)** real-time OS.
|
||||
- Using **[LittleVGL/LVGL 6.1.2](https://lvgl.io/)** as UI library...
|
||||
- Using **[LittleVGL/LVGL 7](https://lvgl.io/)** as UI library...
|
||||
- ... and **[NimBLE 1.3.0](https://github.com/apache/mynewt-nimble)** as BLE stack.
|
||||
|
||||
## Overview
|
||||
|
|
|
@ -168,132 +168,180 @@ set(NIMBLE_SRC
|
|||
set(LVGL_SRC
|
||||
libs/lv_conf.h
|
||||
libs/lvgl/lvgl.h
|
||||
libs/lvgl/src/lv_core/lv_obj.c
|
||||
libs/lvgl/src/lv_core/lv_obj.h
|
||||
libs/lvgl/src/lv_core/lv_group.c
|
||||
libs/lvgl/src/lv_core/lv_group.h
|
||||
libs/lvgl/src/lv_core/lv_disp.c
|
||||
|
||||
libs/lvgl/src/lvgl.h
|
||||
libs/lvgl/src/lv_api_map.h
|
||||
libs/lvgl/src/lv_conf_internal.h
|
||||
libs/lvgl/src/lv_core/lv_disp.h
|
||||
libs/lvgl/src/lv_core/lv_debug.h
|
||||
libs/lvgl/src/lv_core/lv_debug.c
|
||||
libs/lvgl/src/lv_core/lv_indev.c
|
||||
libs/lvgl/src/lv_core/lv_group.h
|
||||
libs/lvgl/src/lv_core/lv_indev.h
|
||||
libs/lvgl/src/lv_core/lv_refr.c
|
||||
libs/lvgl/src/lv_core/lv_obj.h
|
||||
libs/lvgl/src/lv_core/lv_obj_style_dec.h
|
||||
libs/lvgl/src/lv_core/lv_refr.h
|
||||
libs/lvgl/src/lv_core/lv_style.c
|
||||
libs/lvgl/src/lv_core/lv_style.h
|
||||
libs/lvgl/src/lv_misc/lv_anim.c
|
||||
libs/lvgl/src/lv_misc/lv_anim.h
|
||||
libs/lvgl/src/lv_misc/lv_async.h
|
||||
libs/lvgl/src/lv_misc/lv_async.c
|
||||
libs/lvgl/src/lv_misc/lv_fs.c
|
||||
libs/lvgl/src/lv_misc/lv_fs.h
|
||||
libs/lvgl/src/lv_misc/lv_task.c
|
||||
libs/lvgl/src/lv_misc/lv_task.h
|
||||
libs/lvgl/src/lv_misc/lv_area.c
|
||||
libs/lvgl/src/lv_misc/lv_area.h
|
||||
libs/lvgl/src/lv_misc/lv_bidi.c
|
||||
libs/lvgl/src/lv_misc/lv_bidi.h
|
||||
libs/lvgl/src/lv_misc/lv_circ.c
|
||||
libs/lvgl/src/lv_misc/lv_circ.h
|
||||
libs/lvgl/src/lv_misc/lv_color.c
|
||||
libs/lvgl/src/lv_misc/lv_color.h
|
||||
libs/lvgl/src/lv_misc/lv_fs.c
|
||||
libs/lvgl/src/lv_misc/lv_fs.h
|
||||
libs/lvgl/src/lv_misc/lv_gc.c
|
||||
libs/lvgl/src/lv_misc/lv_gc.h
|
||||
libs/lvgl/src/lv_misc/lv_ll.c
|
||||
libs/lvgl/src/lv_misc/lv_ll.h
|
||||
libs/lvgl/src/lv_misc/lv_log.c
|
||||
libs/lvgl/src/lv_misc/lv_log.h
|
||||
libs/lvgl/src/lv_misc/lv_math.c
|
||||
libs/lvgl/src/lv_misc/lv_math.h
|
||||
libs/lvgl/src/lv_misc/lv_mem.c
|
||||
libs/lvgl/src/lv_misc/lv_mem.h
|
||||
libs/lvgl/src/lv_misc/lv_printf.c
|
||||
libs/lvgl/src/lv_misc/lv_printf.h
|
||||
libs/lvgl/src/lv_misc/lv_task.c
|
||||
libs/lvgl/src/lv_misc/lv_task.h
|
||||
libs/lvgl/src/lv_misc/lv_templ.c
|
||||
libs/lvgl/src/lv_misc/lv_templ.h
|
||||
libs/lvgl/src/lv_misc/lv_txt.c
|
||||
libs/lvgl/src/lv_misc/lv_txt.h
|
||||
libs/lvgl/src/lv_misc/lv_types.h
|
||||
libs/lvgl/src/lv_misc/lv_utils.c
|
||||
libs/lvgl/src/lv_misc/lv_utils.h
|
||||
libs/lvgl/src/lv_draw/lv_draw.c
|
||||
libs/lvgl/src/lv_draw/lv_draw.h
|
||||
libs/lvgl/src/lv_draw/lv_draw_arc.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_arc.h
|
||||
libs/lvgl/src/lv_draw/lv_draw_basic.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_basic.h
|
||||
libs/lvgl/src/lv_draw/lv_draw_img.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_blend.h
|
||||
libs/lvgl/src/lv_draw/lv_draw_img.h
|
||||
libs/lvgl/src/lv_draw/lv_draw_label.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_label.h
|
||||
libs/lvgl/src/lv_draw/lv_draw_line.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_line.h
|
||||
libs/lvgl/src/lv_draw/lv_draw_rect.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_mask.h
|
||||
libs/lvgl/src/lv_draw/lv_draw_rect.h
|
||||
libs/lvgl/src/lv_draw/lv_draw_triangle.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_triangle.h
|
||||
libs/lvgl/src/lv_draw/lv_img_cache.c
|
||||
libs/lvgl/src/lv_draw/lv_img_buf.h
|
||||
libs/lvgl/src/lv_draw/lv_img_cache.h
|
||||
libs/lvgl/src/lv_draw/lv_img_decoder.c
|
||||
libs/lvgl/src/lv_draw/lv_img_decoder.h
|
||||
libs/lvgl/src/lv_hal/lv_hal.h
|
||||
libs/lvgl/src/lv_hal/lv_hal_disp.c
|
||||
libs/lvgl/src/lv_hal/lv_hal_disp.h
|
||||
libs/lvgl/src/lv_hal/lv_hal_indev.c
|
||||
libs/lvgl/src/lv_hal/lv_hal_indev.h
|
||||
libs/lvgl/src/lv_hal/lv_hal_tick.c
|
||||
libs/lvgl/src/lv_hal/lv_hal_tick.h
|
||||
libs/lvgl/src/lv_font/lv_font.c
|
||||
libs/lvgl/src/lv_font/lv_font.h
|
||||
libs/lvgl/src/lv_font/lv_font_fmt_txt.c
|
||||
libs/lvgl/src/lv_font/lv_font_fmt_txt.h
|
||||
libs/lvgl/src/lv_font/lv_font_loader.h
|
||||
libs/lvgl/src/lv_font/lv_symbol_def.h
|
||||
libs/lvgl/src/lv_themes/lv_theme.c
|
||||
libs/lvgl/src/lv_hal/lv_hal.h
|
||||
libs/lvgl/src/lv_hal/lv_hal_disp.h
|
||||
libs/lvgl/src/lv_hal/lv_hal_indev.h
|
||||
libs/lvgl/src/lv_hal/lv_hal_tick.h
|
||||
libs/lvgl/src/lv_misc/lv_anim.h
|
||||
libs/lvgl/src/lv_misc/lv_area.h
|
||||
libs/lvgl/src/lv_misc/lv_async.h
|
||||
libs/lvgl/src/lv_misc/lv_bidi.h
|
||||
libs/lvgl/src/lv_misc/lv_color.h
|
||||
libs/lvgl/src/lv_misc/lv_debug.h
|
||||
libs/lvgl/src/lv_misc/lv_fs.h
|
||||
libs/lvgl/src/lv_misc/lv_gc.h
|
||||
libs/lvgl/src/lv_misc/lv_ll.h
|
||||
libs/lvgl/src/lv_misc/lv_log.h
|
||||
libs/lvgl/src/lv_misc/lv_math.h
|
||||
libs/lvgl/src/lv_misc/lv_mem.h
|
||||
libs/lvgl/src/lv_misc/lv_printf.h
|
||||
libs/lvgl/src/lv_misc/lv_task.h
|
||||
libs/lvgl/src/lv_misc/lv_templ.h
|
||||
libs/lvgl/src/lv_misc/lv_txt.h
|
||||
libs/lvgl/src/lv_misc/lv_txt_ap.h
|
||||
libs/lvgl/src/lv_misc/lv_types.h
|
||||
libs/lvgl/src/lv_misc/lv_utils.h
|
||||
libs/lvgl/src/lv_themes/lv_theme.h
|
||||
libs/lvgl/src/lv_objx/lv_btn.h
|
||||
libs/lvgl/src/lv_objx/lv_btn.c
|
||||
libs/lvgl/src/lv_objx/lv_cont.h
|
||||
libs/lvgl/src/lv_objx/lv_cont.c
|
||||
libs/lvgl/src/lv_objx/lv_label.h
|
||||
libs/lvgl/src/lv_objx/lv_label.c
|
||||
libs/lvgl/src/lv_objx/lv_table.c
|
||||
libs/lvgl/src/lv_themes/lv_theme_empty.h
|
||||
libs/lvgl/src/lv_themes/lv_theme_material.h
|
||||
#libs/lvgl/src/lv_themes/lv_theme_mono.h
|
||||
#libs/lvgl/src/lv_themes/lv_theme_template.h
|
||||
libs/lvgl/src/lv_widgets/lv_arc.h
|
||||
libs/lvgl/src/lv_widgets/lv_bar.h
|
||||
libs/lvgl/src/lv_widgets/lv_btn.h
|
||||
libs/lvgl/src/lv_widgets/lv_btnmatrix.h
|
||||
libs/lvgl/src/lv_widgets/lv_calendar.h
|
||||
libs/lvgl/src/lv_widgets/lv_canvas.h
|
||||
libs/lvgl/src/lv_widgets/lv_chart.h
|
||||
libs/lvgl/src/lv_widgets/lv_checkbox.h
|
||||
libs/lvgl/src/lv_widgets/lv_cont.h
|
||||
libs/lvgl/src/lv_widgets/lv_cpicker.h
|
||||
libs/lvgl/src/lv_widgets/lv_dropdown.h
|
||||
libs/lvgl/src/lv_widgets/lv_img.h
|
||||
libs/lvgl/src/lv_widgets/lv_imgbtn.h
|
||||
libs/lvgl/src/lv_widgets/lv_keyboard.h
|
||||
libs/lvgl/src/lv_widgets/lv_label.h
|
||||
libs/lvgl/src/lv_widgets/lv_led.h
|
||||
libs/lvgl/src/lv_widgets/lv_line.h
|
||||
libs/lvgl/src/lv_widgets/lv_linemeter.h
|
||||
libs/lvgl/src/lv_widgets/lv_list.h
|
||||
libs/lvgl/src/lv_widgets/lv_msgbox.h
|
||||
libs/lvgl/src/lv_widgets/lv_objmask.h
|
||||
libs/lvgl/src/lv_widgets/lv_objx_templ.h
|
||||
libs/lvgl/src/lv_widgets/lv_page.h
|
||||
libs/lvgl/src/lv_widgets/lv_roller.h
|
||||
libs/lvgl/src/lv_widgets/lv_slider.h
|
||||
libs/lvgl/src/lv_widgets/lv_spinbox.h
|
||||
libs/lvgl/src/lv_widgets/lv_spinner.h
|
||||
libs/lvgl/src/lv_widgets/lv_switch.h
|
||||
libs/lvgl/src/lv_widgets/lv_table.h
|
||||
libs/lvgl/src/lv_widgets/lv_tabview.h
|
||||
libs/lvgl/src/lv_widgets/lv_textarea.h
|
||||
libs/lvgl/src/lv_widgets/lv_tileview.h
|
||||
libs/lvgl/src/lv_widgets/lv_win.h
|
||||
libs/lvgl/src/lv_core/lv_disp.c
|
||||
libs/lvgl/src/lv_core/lv_group.c
|
||||
libs/lvgl/src/lv_core/lv_indev.c
|
||||
libs/lvgl/src/lv_core/lv_obj.c
|
||||
libs/lvgl/src/lv_core/lv_refr.c
|
||||
libs/lvgl/src/lv_core/lv_style.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_arc.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_blend.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_img.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_label.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_line.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_mask.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_rect.c
|
||||
libs/lvgl/src/lv_draw/lv_draw_triangle.c
|
||||
libs/lvgl/src/lv_draw/lv_img_buf.c
|
||||
libs/lvgl/src/lv_draw/lv_img_cache.c
|
||||
libs/lvgl/src/lv_draw/lv_img_decoder.c
|
||||
libs/lvgl/src/lv_font/lv_font.c
|
||||
#libs/lvgl/src/lv_font/lv_font_dejavu_16_persian_hebrew.c
|
||||
libs/lvgl/src/lv_font/lv_font_fmt_txt.c
|
||||
libs/lvgl/src/lv_font/lv_font_loader.c
|
||||
# LVGL Fonts
|
||||
libs/lvgl/src/lv_font/lv_font_montserrat_14.c
|
||||
libs/lvgl/src/lv_font/lv_font_montserrat_18.c
|
||||
libs/lvgl/src/lv_font/lv_font_montserrat_22.c
|
||||
libs/lvgl/src/lv_font/lv_font_montserrat_28.c
|
||||
#
|
||||
libs/lvgl/src/lv_hal/lv_hal_disp.c
|
||||
libs/lvgl/src/lv_hal/lv_hal_indev.c
|
||||
libs/lvgl/src/lv_hal/lv_hal_tick.c
|
||||
libs/lvgl/src/lv_misc/lv_anim.c
|
||||
libs/lvgl/src/lv_misc/lv_area.c
|
||||
libs/lvgl/src/lv_misc/lv_async.c
|
||||
libs/lvgl/src/lv_misc/lv_bidi.c
|
||||
libs/lvgl/src/lv_misc/lv_color.c
|
||||
libs/lvgl/src/lv_misc/lv_debug.c
|
||||
libs/lvgl/src/lv_misc/lv_fs.c
|
||||
libs/lvgl/src/lv_misc/lv_gc.c
|
||||
libs/lvgl/src/lv_misc/lv_ll.c
|
||||
libs/lvgl/src/lv_misc/lv_log.c
|
||||
libs/lvgl/src/lv_misc/lv_math.c
|
||||
libs/lvgl/src/lv_misc/lv_mem.c
|
||||
libs/lvgl/src/lv_misc/lv_printf.c
|
||||
libs/lvgl/src/lv_misc/lv_task.c
|
||||
libs/lvgl/src/lv_misc/lv_templ.c
|
||||
libs/lvgl/src/lv_misc/lv_txt.c
|
||||
libs/lvgl/src/lv_misc/lv_txt_ap.c
|
||||
libs/lvgl/src/lv_misc/lv_utils.c
|
||||
libs/lvgl/src/lv_themes/lv_theme.c
|
||||
libs/lvgl/src/lv_themes/lv_theme.h
|
||||
libs/lvgl/src/lv_themes/lv_theme_night.h
|
||||
libs/lvgl/src/lv_themes/lv_theme_night.c
|
||||
libs/lvgl/src/lv_objx/lv_list.c
|
||||
libs/lvgl/src/lv_objx/lv_list.h
|
||||
libs/lvgl/src/lv_objx/lv_tileview.c
|
||||
libs/lvgl/src/lv_objx/lv_tileview.h
|
||||
libs/lvgl/src/lv_objx/lv_tabview.c
|
||||
libs/lvgl/src/lv_objx/lv_tabview.h
|
||||
libs/lvgl/src/lv_objx/lv_btnm.c
|
||||
libs/lvgl/src/lv_objx/lv_btnm.h
|
||||
libs/lvgl/src/lv_objx/lv_page.c
|
||||
libs/lvgl/src/lv_objx/lv_page.h
|
||||
libs/lvgl/src/lv_objx/lv_img.c
|
||||
libs/lvgl/src/lv_objx/lv_img.h
|
||||
libs/lvgl/src/lv_objx/lv_lmeter.c
|
||||
libs/lvgl/src/lv_objx/lv_lmeter.h
|
||||
libs/lvgl/src/lv_objx/lv_arc.c
|
||||
libs/lvgl/src/lv_objx/lv_arc.h
|
||||
libs/lvgl/src/lv_objx/lv_gauge.c
|
||||
libs/lvgl/src/lv_objx/lv_gauge.h
|
||||
libs/lvgl/src/lv_objx/lv_mbox.c
|
||||
libs/lvgl/src/lv_objx/lv_mbox.h
|
||||
libs/lvgl/src/lv_objx/lv_bar.c
|
||||
libs/lvgl/src/lv_objx/lv_bar.h
|
||||
libs/lvgl/src/lv_objx/lv_slider.h
|
||||
libs/lvgl/src/lv_objx/lv_slider.c
|
||||
libs/lvgl/src/lv_objx/lv_ddlist.c
|
||||
libs/lvgl/src/lv_objx/lv_ddlist.h
|
||||
libs/lvgl/src/lv_objx/lv_line.c
|
||||
libs/lvgl/src/lv_objx/lv_line.h
|
||||
libs/lvgl/src/lv_themes/lv_theme_empty.c
|
||||
libs/lvgl/src/lv_themes/lv_theme_material.c
|
||||
#libs/lvgl/src/lv_themes/lv_theme_mono.c
|
||||
#libs/lvgl/src/lv_themes/lv_theme_template.c
|
||||
libs/lvgl/src/lv_widgets/lv_arc.c
|
||||
libs/lvgl/src/lv_widgets/lv_bar.c
|
||||
libs/lvgl/src/lv_widgets/lv_btn.c
|
||||
libs/lvgl/src/lv_widgets/lv_btnmatrix.c
|
||||
libs/lvgl/src/lv_widgets/lv_calendar.c
|
||||
libs/lvgl/src/lv_widgets/lv_canvas.c
|
||||
libs/lvgl/src/lv_widgets/lv_chart.c
|
||||
libs/lvgl/src/lv_widgets/lv_checkbox.c
|
||||
libs/lvgl/src/lv_widgets/lv_cont.c
|
||||
libs/lvgl/src/lv_widgets/lv_cpicker.c
|
||||
libs/lvgl/src/lv_widgets/lv_dropdown.c
|
||||
libs/lvgl/src/lv_widgets/lv_img.c
|
||||
libs/lvgl/src/lv_widgets/lv_imgbtn.c
|
||||
libs/lvgl/src/lv_widgets/lv_keyboard.c
|
||||
libs/lvgl/src/lv_widgets/lv_label.c
|
||||
libs/lvgl/src/lv_widgets/lv_led.c
|
||||
libs/lvgl/src/lv_widgets/lv_line.c
|
||||
libs/lvgl/src/lv_widgets/lv_linemeter.c
|
||||
libs/lvgl/src/lv_widgets/lv_list.c
|
||||
libs/lvgl/src/lv_widgets/lv_msgbox.c
|
||||
libs/lvgl/src/lv_widgets/lv_objmask.c
|
||||
libs/lvgl/src/lv_widgets/lv_objx_templ.c
|
||||
libs/lvgl/src/lv_widgets/lv_page.c
|
||||
libs/lvgl/src/lv_widgets/lv_roller.c
|
||||
libs/lvgl/src/lv_widgets/lv_slider.c
|
||||
libs/lvgl/src/lv_widgets/lv_spinbox.c
|
||||
libs/lvgl/src/lv_widgets/lv_spinner.c
|
||||
libs/lvgl/src/lv_widgets/lv_switch.c
|
||||
libs/lvgl/src/lv_widgets/lv_table.c
|
||||
libs/lvgl/src/lv_widgets/lv_tabview.c
|
||||
libs/lvgl/src/lv_widgets/lv_textarea.c
|
||||
libs/lvgl/src/lv_widgets/lv_tileview.c
|
||||
libs/lvgl/src/lv_widgets/lv_win.c
|
||||
)
|
||||
|
||||
list(APPEND IMAGE_FILES
|
||||
|
@ -424,10 +472,8 @@ list(APPEND SOURCE_FILES
|
|||
displayapp/screens/Clock.cpp
|
||||
displayapp/screens/Tile.cpp
|
||||
displayapp/screens/Meter.cpp
|
||||
displayapp/screens/Gauge.cpp
|
||||
displayapp/screens/InfiniPaint.cpp
|
||||
displayapp/screens/Paddle.cpp
|
||||
displayapp/screens/DropDownDemo.cpp
|
||||
displayapp/screens/BatteryIcon.cpp
|
||||
displayapp/screens/BleIcon.cpp
|
||||
displayapp/screens/NotificationIcon.cpp
|
||||
|
@ -479,6 +525,7 @@ list(APPEND SOURCE_FILES
|
|||
displayapp/LittleVgl.cpp
|
||||
displayapp/fonts/jetbrains_mono_extrabold_compressed.c
|
||||
displayapp/fonts/jetbrains_mono_bold_20.c
|
||||
displayapp/lv_pinetime_theme.c
|
||||
|
||||
systemtask/SystemTask.cpp
|
||||
drivers/TwiMaster.cpp
|
||||
|
@ -518,7 +565,6 @@ set(INCLUDE_FILES
|
|||
displayapp/screens/Clock.h
|
||||
displayapp/screens/Tile.h
|
||||
displayapp/screens/Meter.h
|
||||
displayapp/screens/Gauge.h
|
||||
displayapp/screens/InfiniPaint.h
|
||||
displayapp/screens/Paddle.h
|
||||
displayapp/screens/DropDownDemo.h
|
||||
|
@ -571,6 +617,7 @@ set(INCLUDE_FILES
|
|||
libs/date/includes/date/ptz.h
|
||||
libs/date/includes/date/tz_private.h
|
||||
displayapp/LittleVgl.h
|
||||
displayapp/lv_pinetime_theme.h
|
||||
systemtask/SystemTask.h
|
||||
systemtask/SystemMonitor.h
|
||||
displayapp/screens/Symbols.h
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
namespace Pinetime {
|
||||
namespace Applications {
|
||||
enum class Apps {None, Launcher, Clock, SysInfo, Meter, Gauge, Brightness, Music, FirmwareValidation, Paint, Paddle, Notifications, Twos, HeartRate, Navigation};
|
||||
enum class Apps {None, Launcher, Clock, SysInfo, Meter, Brightness, Music, FirmwareValidation, Paint, Paddle, Notifications, Twos, HeartRate, Navigation};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
#include "displayapp/screens/Clock.h"
|
||||
#include "displayapp/screens/FirmwareUpdate.h"
|
||||
#include "displayapp/screens/FirmwareValidation.h"
|
||||
#include "displayapp/screens/Gauge.h"
|
||||
#include "displayapp/screens/InfiniPaint.h"
|
||||
#include "displayapp/screens/Paddle.h"
|
||||
#include "displayapp/screens/Meter.h"
|
||||
|
@ -200,11 +199,9 @@ void DisplayApp::RunningState() {
|
|||
currentScreen.reset(new Screens::Clock(this, dateTimeController, batteryController, bleController, notificationManager, heartRateController));
|
||||
onClockApp = true;
|
||||
break;
|
||||
// case Apps::Test: currentScreen.reset(new Screens::Message(this)); break;
|
||||
case Apps::SysInfo: currentScreen.reset(new Screens::SystemInfo(this, dateTimeController, batteryController, brightnessController, bleController, watchdog)); break;
|
||||
case Apps::Meter: currentScreen.reset(new Screens::Meter(this)); break;
|
||||
case Apps::Twos: currentScreen.reset(new Screens::Twos(this)); break;
|
||||
case Apps::Gauge: currentScreen.reset(new Screens::Gauge(this)); break;
|
||||
case Apps::Paint: currentScreen.reset(new Screens::InfiniPaint(this, lvgl)); break;
|
||||
case Apps::Paddle: currentScreen.reset(new Screens::Paddle(this, lvgl)); break;
|
||||
case Apps::Brightness : currentScreen.reset(new Screens::Brightness(this, brightnessController)); break;
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "TouchEvents.h"
|
||||
#include "components/brightness/BrightnessController.h"
|
||||
#include "components/firmwarevalidator/FirmwareValidator.h"
|
||||
#include "displayapp/screens/Modal.h"
|
||||
#include "displayapp/screens/Screen.h"
|
||||
|
||||
namespace Pinetime {
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "LittleVgl.h"
|
||||
#include "lv_pinetime_theme.h"
|
||||
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
|
@ -8,11 +9,6 @@
|
|||
|
||||
using namespace Pinetime::Components;
|
||||
|
||||
extern "C" {
|
||||
LV_FONT_DECLARE(jetbrains_mono_extrabold_compressed)
|
||||
LV_FONT_DECLARE(jetbrains_mono_bold_20)
|
||||
}
|
||||
|
||||
lv_style_t* LabelBigStyle = nullptr;
|
||||
|
||||
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p) {
|
||||
|
@ -210,620 +206,15 @@ bool LittleVgl::GetTouchPadInfo(lv_indev_data_t *ptr) {
|
|||
}
|
||||
|
||||
void LittleVgl::InitTheme() {
|
||||
uint16_t i;
|
||||
lv_style_t ** style_p = (lv_style_t **)&theme.style;
|
||||
for(i = 0; i < LV_THEME_STYLE_COUNT; i++) {
|
||||
*style_p = &def;
|
||||
style_p++;
|
||||
}
|
||||
|
||||
InitBaseTheme();
|
||||
InitThemeContainer();
|
||||
InitThemeButton();
|
||||
InitThemeLabel();
|
||||
InitThemeLine();
|
||||
InitThemeLed();
|
||||
InitThemeImage();
|
||||
InitThemeBar();
|
||||
InitThemeSlider();
|
||||
InitThemeSwitch();
|
||||
InitThemeMeter();
|
||||
InitThemeGauge();
|
||||
InitThemeArc();
|
||||
InitThemePreload();
|
||||
InitThemeChart();
|
||||
InitThemeCalendar();
|
||||
InitThemeCheckBox();
|
||||
InitThemeButtonMatrix();
|
||||
InitThemeKnob();
|
||||
InitThemeMessageBox();
|
||||
InitThemePage();
|
||||
InitThemeTextArea();
|
||||
InitThemeSpinBox();
|
||||
InitThemeList();
|
||||
InitThemeDropDownList();
|
||||
InitThemeRoller();
|
||||
InitThemeTabView();
|
||||
InitThemeTileView();
|
||||
InitThemeTable();
|
||||
InitThemeWindow();
|
||||
lv_theme_t * th = lv_pinetime_theme_init(
|
||||
LV_COLOR_WHITE, LV_COLOR_SILVER,
|
||||
0,
|
||||
&jetbrains_mono_bold_20,
|
||||
&jetbrains_mono_bold_20,
|
||||
&jetbrains_mono_bold_20,
|
||||
&jetbrains_mono_bold_20);
|
||||
|
||||
lv_theme_set_act(th);
|
||||
|
||||
lv_theme_set_current(&theme);
|
||||
}
|
||||
|
||||
void LittleVgl::InitBaseTheme() {
|
||||
if(font == nullptr) font = &jetbrains_mono_bold_20;
|
||||
lv_style_copy(&def, &lv_style_plain); /*Initialize the default style*/
|
||||
def.text.font = font;
|
||||
|
||||
lv_style_copy(&bg, &lv_style_plain);
|
||||
bg.body.main_color = LV_COLOR_BLACK;
|
||||
bg.body.grad_color = LV_COLOR_BLACK;
|
||||
bg.text.color = LV_COLOR_WHITE;
|
||||
bg.text.font = font;
|
||||
bg.image.color = LV_COLOR_WHITE;
|
||||
|
||||
lv_style_copy(&scr, &bg);
|
||||
scr.body.padding.bottom = 0;
|
||||
scr.body.padding.top = 0;
|
||||
scr.body.padding.left = 0;
|
||||
scr.body.padding.right = 0;
|
||||
|
||||
lv_style_copy(&sb, &def);
|
||||
sb.body.main_color = lv_color_hsv_to_rgb(hue, 30, 60);
|
||||
sb.body.grad_color = lv_color_hsv_to_rgb(hue, 30, 60);
|
||||
sb.body.border.width = 0;
|
||||
sb.body.padding.inner = LV_DPI / 20;
|
||||
sb.body.padding.left = 0;
|
||||
sb.body.padding.right = 0;
|
||||
sb.body.padding.top = 0;
|
||||
sb.body.padding.bottom = 0;
|
||||
sb.body.radius = LV_DPI / 30;
|
||||
sb.body.opa = LV_OPA_COVER;
|
||||
|
||||
lv_style_copy(&panel, &bg);
|
||||
panel.body.main_color = lv_color_hsv_to_rgb(hue, 11, 18);
|
||||
panel.body.grad_color = lv_color_hsv_to_rgb(hue, 11, 18);
|
||||
panel.body.radius = LV_DPI / 20;
|
||||
panel.body.border.color = lv_color_hsv_to_rgb(hue, 10, 25);
|
||||
panel.body.border.width = 1;
|
||||
panel.body.border.opa = LV_OPA_COVER;
|
||||
panel.body.padding.left = LV_DPI / 10;
|
||||
panel.body.padding.right = LV_DPI / 10;
|
||||
panel.body.padding.top = LV_DPI / 10;
|
||||
panel.body.padding.bottom = LV_DPI / 10;
|
||||
panel.line.color = lv_color_hsv_to_rgb(hue, 20, 40);
|
||||
panel.line.width = 1;
|
||||
|
||||
theme.style.scr = &scr;
|
||||
theme.style.bg = &bg;
|
||||
theme.style.panel = &def;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeContainer() {
|
||||
theme.style.cont = &panel;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeButton() {
|
||||
|
||||
|
||||
lv_style_copy(&btn_rel, &def);
|
||||
btn_rel.body.main_color = lv_color_hsv_to_rgb(hue, 10, 40);
|
||||
btn_rel.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
btn_rel.body.border.color = lv_color_hex3(0x111);
|
||||
btn_rel.body.border.width = 1;
|
||||
btn_rel.body.border.opa = LV_OPA_70;
|
||||
btn_rel.body.padding.left = LV_DPI / 4;
|
||||
btn_rel.body.padding.right = LV_DPI / 4;
|
||||
btn_rel.body.padding.top = LV_DPI / 8;
|
||||
btn_rel.body.padding.bottom = LV_DPI / 8;
|
||||
btn_rel.body.shadow.type = LV_SHADOW_BOTTOM;
|
||||
btn_rel.body.shadow.color = lv_color_hex3(0x111);
|
||||
btn_rel.body.shadow.width = LV_DPI / 30;
|
||||
btn_rel.text.color = lv_color_hex3(0xeee);
|
||||
btn_rel.image.color = lv_color_hex3(0xeee);
|
||||
|
||||
lv_style_copy(&btn_pr, &btn_rel);
|
||||
btn_pr.body.main_color = lv_color_hsv_to_rgb(hue, 10, 30);
|
||||
btn_pr.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 10);
|
||||
|
||||
lv_style_copy(&btn_tgl_rel, &btn_rel);
|
||||
btn_tgl_rel.body.main_color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
btn_tgl_rel.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 40);
|
||||
btn_tgl_rel.body.shadow.width = LV_DPI / 40;
|
||||
btn_tgl_rel.text.color = lv_color_hex3(0xddd);
|
||||
btn_tgl_rel.image.color = lv_color_hex3(0xddd);
|
||||
|
||||
lv_style_copy(&btn_tgl_pr, &btn_rel);
|
||||
btn_tgl_pr.body.main_color = lv_color_hsv_to_rgb(hue, 10, 10);
|
||||
btn_tgl_pr.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 30);
|
||||
btn_tgl_pr.body.shadow.width = LV_DPI / 30;
|
||||
btn_tgl_pr.text.color = lv_color_hex3(0xddd);
|
||||
btn_tgl_pr.image.color = lv_color_hex3(0xddd);
|
||||
|
||||
lv_style_copy(&btn_ina, &btn_rel);
|
||||
btn_ina.body.main_color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
btn_ina.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
btn_ina.body.shadow.width = 0;
|
||||
btn_ina.text.color = lv_color_hex3(0xaaa);
|
||||
btn_ina.image.color = lv_color_hex3(0xaaa);
|
||||
|
||||
theme.style.btn.rel = &btn_rel;
|
||||
theme.style.btn.pr = &btn_pr;
|
||||
theme.style.btn.tgl_rel = &btn_tgl_rel;
|
||||
theme.style.btn.tgl_pr = &btn_tgl_pr;
|
||||
theme.style.btn.ina = &btn_ina;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeLabel() {
|
||||
lv_style_copy(&prim, &bg);
|
||||
prim.text.color = lv_color_hsv_to_rgb(hue, 5, 95);
|
||||
|
||||
lv_style_copy(&labelBigStyle, &prim);
|
||||
labelBigStyle.text.font = &jetbrains_mono_extrabold_compressed;
|
||||
LabelBigStyle = &(this->labelBigStyle);
|
||||
|
||||
lv_style_copy(&sec, &bg);
|
||||
sec.text.color = lv_color_hsv_to_rgb(hue, 15, 65);
|
||||
|
||||
lv_style_copy(&hint, &bg);
|
||||
hint.text.color = lv_color_hsv_to_rgb(hue, 20, 55);
|
||||
|
||||
theme.style.label.prim = &prim;
|
||||
theme.style.label.sec = &sec;
|
||||
theme.style.label.hint = &hint;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeLine() {
|
||||
theme.style.line.decor = &def;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeLed() {
|
||||
lv_style_copy(&led, &def);
|
||||
led.body.shadow.width = LV_DPI / 10;
|
||||
led.body.radius = LV_RADIUS_CIRCLE;
|
||||
led.body.border.width = LV_DPI / 30;
|
||||
led.body.border.opa = LV_OPA_30;
|
||||
led.body.main_color = lv_color_hsv_to_rgb(hue, 100, 100);
|
||||
led.body.grad_color = lv_color_hsv_to_rgb(hue, 100, 40);
|
||||
led.body.border.color = lv_color_hsv_to_rgb(hue, 60, 60);
|
||||
led.body.shadow.color = lv_color_hsv_to_rgb(hue, 100, 100);
|
||||
|
||||
theme.style.led = &led;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeImage() {
|
||||
theme.style.img.light = &def;
|
||||
theme.style.img.dark = &def;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeBar() {
|
||||
lv_style_copy(&bar_bg, &panel);
|
||||
bar_bg.body.padding.left = LV_DPI / 16;
|
||||
bar_bg.body.padding.right = LV_DPI / 16;
|
||||
bar_bg.body.padding.top = LV_DPI / 16;
|
||||
bar_bg.body.padding.bottom = LV_DPI / 16;
|
||||
bar_bg.body.radius = LV_RADIUS_CIRCLE;
|
||||
|
||||
lv_style_copy(&bar_indic, &def);
|
||||
bar_indic.body.main_color = lv_color_hsv_to_rgb(hue, 80, 70);
|
||||
bar_indic.body.grad_color = lv_color_hsv_to_rgb(hue, 80, 70);
|
||||
bar_indic.body.border.color = lv_color_hsv_to_rgb(hue, 20, 15);
|
||||
bar_indic.body.border.width = 1;
|
||||
bar_indic.body.border.opa = LV_OPA_COVER;
|
||||
bar_indic.body.radius = LV_RADIUS_CIRCLE;
|
||||
bar_indic.body.padding.left = 0;
|
||||
bar_indic.body.padding.right = 0;
|
||||
bar_indic.body.padding.top = 0;
|
||||
bar_indic.body.padding.bottom = 0;
|
||||
|
||||
theme.style.bar.bg = &bar_bg;
|
||||
theme.style.bar.indic = &bar_indic;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeSlider() {
|
||||
lv_style_copy(&slider_knob, theme.style.btn.rel);
|
||||
slider_knob.body.radius = LV_RADIUS_CIRCLE;
|
||||
|
||||
theme.style.slider.bg = theme.style.bar.bg;
|
||||
theme.style.slider.indic = theme.style.bar.indic;
|
||||
theme.style.slider.knob = &slider_knob;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeSwitch() {
|
||||
theme.style.sw.bg = theme.style.bar.bg;
|
||||
theme.style.sw.indic = theme.style.bar.indic;
|
||||
theme.style.sw.knob_off = theme.style.slider.knob;
|
||||
theme.style.sw.knob_on = theme.style.slider.knob;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeMeter() {
|
||||
static lv_style_t lmeter_bg;
|
||||
lv_style_copy(&lmeter_bg, &def);
|
||||
lmeter_bg.body.main_color = lv_color_hsv_to_rgb(hue, 10, 70);
|
||||
lmeter_bg.body.grad_color = lv_color_hsv_to_rgb(hue, 95, 90);
|
||||
lmeter_bg.body.padding.left = LV_DPI / 10; /*Scale line length*/
|
||||
lmeter_bg.body.padding.inner = LV_DPI / 10; /*Text padding*/
|
||||
lmeter_bg.body.border.color = lv_color_hex3(0x333);
|
||||
lmeter_bg.line.color = lv_color_hex3(0x555);
|
||||
lmeter_bg.line.width = 1;
|
||||
lmeter_bg.text.color = lv_color_hex3(0xddd);
|
||||
|
||||
theme.style.lmeter = &lmeter_bg;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeGauge() {
|
||||
static lv_style_t gauge_bg;
|
||||
lv_style_copy(&gauge_bg, &def);
|
||||
gauge_bg.body.main_color = lv_color_hsv_to_rgb(hue, 10, 70);
|
||||
gauge_bg.body.grad_color = gauge_bg.body.main_color;
|
||||
gauge_bg.line.color = lv_color_hsv_to_rgb(hue, 80, 75);
|
||||
gauge_bg.line.width = 1;
|
||||
gauge_bg.text.color = lv_color_hex3(0xddd);
|
||||
|
||||
theme.style.gauge = &gauge_bg;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeArc() {
|
||||
lv_style_copy(&arc, &def);
|
||||
arc.line.width = 8;
|
||||
arc.line.color = lv_color_hsv_to_rgb(hue, 80, 70);
|
||||
arc.line.rounded = 1;
|
||||
|
||||
/*For preloader*/
|
||||
arc.body.border.width = 7;
|
||||
arc.body.border.color = lv_color_hsv_to_rgb(hue, 11, 48);
|
||||
arc.body.padding.left = 1;
|
||||
arc.body.padding.right = 1;
|
||||
arc.body.padding.top = 1;
|
||||
arc.body.padding.bottom = 1;
|
||||
|
||||
theme.style.arc = &arc;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemePreload() {
|
||||
// theme.style.preload = theme.style.arc;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeChart() {
|
||||
theme.style.chart = &panel;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeCalendar() {
|
||||
|
||||
lv_style_copy(&cal_bg, &bg);
|
||||
cal_bg.body.main_color = lv_color_hsv_to_rgb(hue, 10, 40);
|
||||
cal_bg.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 40);
|
||||
cal_bg.body.border.color = lv_color_hex3(0x333);
|
||||
cal_bg.body.border.width = 1;
|
||||
cal_bg.body.radius = LV_DPI / 20;
|
||||
cal_bg.body.padding.left = LV_DPI / 10;
|
||||
cal_bg.body.padding.right = LV_DPI / 10;
|
||||
cal_bg.body.padding.top = LV_DPI / 10;
|
||||
cal_bg.body.padding.bottom = LV_DPI / 10;
|
||||
|
||||
|
||||
lv_style_copy(&cal_header, &bg);
|
||||
cal_header.body.main_color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
cal_header.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
cal_header.body.radius = 0;
|
||||
cal_header.body.border.width = 1;
|
||||
cal_header.body.border.color = lv_color_hex3(0x333);
|
||||
cal_header.body.padding.left = LV_DPI / 10;
|
||||
cal_header.body.padding.right = LV_DPI / 10;
|
||||
cal_header.body.padding.top = LV_DPI / 10;
|
||||
cal_header.body.padding.bottom = LV_DPI / 10;
|
||||
|
||||
|
||||
lv_style_copy(&week_box, &panel);
|
||||
week_box.body.main_color = lv_color_hsv_to_rgb(hue, 30, 45);
|
||||
week_box.body.grad_color = lv_color_hsv_to_rgb(hue, 30, 45);
|
||||
week_box.body.radius = LV_DPI / 20;
|
||||
week_box.body.border.width = 1;
|
||||
week_box.body.padding.left = LV_DPI / 20;
|
||||
week_box.body.padding.right = LV_DPI / 20;
|
||||
week_box.body.padding.top = LV_DPI / 25;
|
||||
week_box.body.padding.bottom = LV_DPI / 25;
|
||||
|
||||
lv_style_copy(&today_box, &week_box);
|
||||
today_box.body.main_color = lv_color_hsv_to_rgb(hue, 80, 70);
|
||||
today_box.body.grad_color = lv_color_hsv_to_rgb(hue, 80, 70);
|
||||
today_box.body.radius = LV_DPI / 20;
|
||||
today_box.body.padding.left = LV_DPI / 14;
|
||||
today_box.body.padding.right = LV_DPI / 14;
|
||||
today_box.body.padding.top = LV_DPI / 14;
|
||||
today_box.body.padding.bottom = LV_DPI / 14;
|
||||
|
||||
lv_style_copy(&highlighted_days, &bg);
|
||||
highlighted_days.text.color = lv_color_hsv_to_rgb(hue, 40, 80);
|
||||
|
||||
lv_style_copy(&ina_days, &bg);
|
||||
ina_days.text.color = lv_color_hsv_to_rgb(hue, 0, 60);
|
||||
|
||||
theme.style.calendar.bg = &cal_bg;
|
||||
theme.style.calendar.header = &cal_header;
|
||||
theme.style.calendar.week_box = &week_box;
|
||||
theme.style.calendar.today_box = &today_box;
|
||||
theme.style.calendar.highlighted_days = &highlighted_days;
|
||||
theme.style.calendar.day_names = &cal_bg;
|
||||
theme.style.calendar.inactive_days = &ina_days;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeCheckBox() {
|
||||
|
||||
lv_style_copy(&rel, &def);
|
||||
rel.body.radius = LV_DPI / 20;
|
||||
rel.body.main_color = lv_color_hsv_to_rgb(hue, 10, 95);
|
||||
rel.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 95);
|
||||
rel.body.border.color = lv_color_hsv_to_rgb(hue, 10, 50);
|
||||
rel.body.border.width = 2;
|
||||
;
|
||||
|
||||
lv_style_copy(&pr, &rel);
|
||||
pr.body.main_color = lv_color_hsv_to_rgb(hue, 10, 80);
|
||||
pr.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 80);
|
||||
pr.body.border.color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
pr.body.border.width = 1;
|
||||
;
|
||||
|
||||
lv_style_copy(&tgl_rel, &rel);
|
||||
tgl_rel.body.main_color = lv_color_hsv_to_rgb(hue, 80, 90);
|
||||
tgl_rel.body.grad_color = lv_color_hsv_to_rgb(hue, 80, 90);
|
||||
tgl_rel.body.border.color = lv_color_hsv_to_rgb(hue, 80, 50);
|
||||
|
||||
lv_style_copy(&tgl_pr, &tgl_rel);
|
||||
tgl_pr.body.main_color = lv_color_hsv_to_rgb(hue, 80, 70);
|
||||
tgl_pr.body.grad_color = lv_color_hsv_to_rgb(hue, 80, 70);
|
||||
tgl_pr.body.border.color = lv_color_hsv_to_rgb(hue, 80, 30);
|
||||
tgl_pr.body.border.width = 1;
|
||||
;
|
||||
|
||||
lv_style_copy(&ina, &rel);
|
||||
ina.body.main_color = lv_color_hex3(0x777);
|
||||
ina.body.grad_color = lv_color_hex3(0x777);
|
||||
ina.body.border.width = 0;
|
||||
|
||||
theme.style.cb.bg = &lv_style_transp;
|
||||
theme.style.cb.box.rel = &rel;
|
||||
theme.style.cb.box.pr = ≺
|
||||
theme.style.cb.box.tgl_rel = &tgl_rel;
|
||||
theme.style.cb.box.tgl_pr = &tgl_pr;
|
||||
theme.style.cb.box.ina = &def;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeButtonMatrix() {
|
||||
|
||||
lv_style_copy(&btnm_bg, theme.style.btn.rel);
|
||||
btnm_bg.body.padding.left = 2;
|
||||
btnm_bg.body.padding.right = 2;
|
||||
btnm_bg.body.padding.top = 2;
|
||||
btnm_bg.body.padding.bottom = 2;
|
||||
btnm_bg.body.padding.inner = 0;
|
||||
btnm_bg.body.border.width = 1;
|
||||
|
||||
lv_style_copy(&btnm_rel, theme.style.btn.rel);
|
||||
btnm_rel.body.border.part = LV_BORDER_FULL | LV_BORDER_INTERNAL;
|
||||
btnm_rel.body.border.width = 1;
|
||||
btnm_rel.body.radius = 2;
|
||||
|
||||
lv_style_copy(&btnm_pr, theme.style.btn.pr);
|
||||
btnm_pr.body.border.part = btnm_rel.body.border.part;
|
||||
btnm_pr.body.border.width = btnm_rel.body.border.width;
|
||||
btnm_pr.body.radius = btnm_rel.body.radius;
|
||||
|
||||
lv_style_copy(&btnm_tgl_rel, theme.style.btn.tgl_rel);
|
||||
btnm_tgl_rel.body.border.part = btnm_rel.body.border.part;
|
||||
btnm_tgl_rel.body.border.width = btnm_rel.body.border.width;
|
||||
btnm_tgl_rel.body.radius = btnm_rel.body.radius;
|
||||
|
||||
lv_style_copy(&btnm_tgl_pr, theme.style.btn.pr);
|
||||
btnm_tgl_pr.body.border.part = btnm_rel.body.border.part;
|
||||
btnm_tgl_pr.body.border.width = btnm_rel.body.border.width;
|
||||
btnm_tgl_pr.body.radius = btnm_rel.body.radius;
|
||||
|
||||
lv_style_copy(&btnm_ina, theme.style.btn.ina);
|
||||
btnm_ina.body.border.part = btnm_rel.body.border.part;
|
||||
btnm_ina.body.border.width = btnm_rel.body.border.width;
|
||||
btnm_ina.body.radius = btnm_rel.body.radius;
|
||||
|
||||
theme.style.btnm.bg = &btnm_bg;
|
||||
theme.style.btnm.btn.rel = &btnm_rel;
|
||||
theme.style.btnm.btn.pr = &btnm_pr;
|
||||
theme.style.btnm.btn.tgl_rel = &btnm_tgl_rel;
|
||||
theme.style.btnm.btn.tgl_pr = &btnm_tgl_pr;
|
||||
theme.style.btnm.btn.ina = &btnm_ina;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeKnob() {
|
||||
theme.style.kb.bg = &bg;
|
||||
theme.style.kb.btn.rel = theme.style.btn.rel;
|
||||
theme.style.kb.btn.pr = theme.style.btn.pr;
|
||||
theme.style.kb.btn.tgl_rel = theme.style.btn.tgl_rel;
|
||||
theme.style.kb.btn.tgl_pr = theme.style.btn.tgl_pr;
|
||||
theme.style.kb.btn.ina = theme.style.btn.ina;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeMessageBox() {
|
||||
lv_style_copy(&mbox_bg, &bg);
|
||||
mbox_bg.body.main_color = lv_color_hsv_to_rgb(hue, 30, 30);
|
||||
mbox_bg.body.grad_color = lv_color_hsv_to_rgb(hue, 30, 30);
|
||||
mbox_bg.body.border.color = lv_color_hsv_to_rgb(hue, 11, 20);
|
||||
mbox_bg.body.border.width = 1;
|
||||
mbox_bg.body.shadow.width = LV_DPI / 10;
|
||||
mbox_bg.body.shadow.color = lv_color_hex3(0x222);
|
||||
mbox_bg.body.radius = LV_DPI / 20;
|
||||
theme.style.mbox.bg = &mbox_bg;
|
||||
theme.style.mbox.btn.bg = &lv_style_transp;
|
||||
theme.style.mbox.btn.rel = theme.style.btn.rel;
|
||||
theme.style.mbox.btn.pr = theme.style.btn.pr;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemePage() {
|
||||
lv_style_copy(&page_scrl, &bg);
|
||||
page_scrl.body.main_color = lv_color_hsv_to_rgb(hue, 10, 40);
|
||||
page_scrl.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 40);
|
||||
page_scrl.body.border.color = lv_color_hex3(0x333);
|
||||
page_scrl.body.border.width = 1;
|
||||
page_scrl.body.radius = LV_DPI / 20;
|
||||
|
||||
theme.style.page.bg = &panel;
|
||||
theme.style.page.scrl = &page_scrl;
|
||||
theme.style.page.sb = &sb;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeTextArea() {
|
||||
theme.style.ta.area = &panel;
|
||||
theme.style.ta.oneline = &panel;
|
||||
theme.style.ta.cursor = NULL;
|
||||
theme.style.ta.sb = &def;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeSpinBox() {
|
||||
theme.style.spinbox.bg = &panel;
|
||||
theme.style.spinbox.cursor = theme.style.ta.cursor;
|
||||
theme.style.spinbox.sb = theme.style.ta.sb;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeList() {
|
||||
|
||||
lv_style_copy(&list_bg, &panel);
|
||||
list_bg.body.padding.top = 0;
|
||||
list_bg.body.padding.bottom = 0;
|
||||
list_bg.body.padding.left = 0;
|
||||
list_bg.body.padding.right = 0;
|
||||
list_bg.body.padding.inner = 0;
|
||||
|
||||
lv_style_copy(&list_btn_rel, &bg);
|
||||
list_btn_rel.body.opa = LV_OPA_TRANSP;
|
||||
list_btn_rel.body.border.part = LV_BORDER_BOTTOM;
|
||||
list_btn_rel.body.border.color = lv_color_hsv_to_rgb(hue, 10, 5);
|
||||
list_btn_rel.body.border.width = 1;
|
||||
list_btn_rel.body.radius = LV_DPI / 10;
|
||||
list_btn_rel.text.color = lv_color_hsv_to_rgb(hue, 5, 80);
|
||||
list_btn_rel.image.color = lv_color_hsv_to_rgb(hue, 5, 80);
|
||||
list_btn_rel.body.padding.top = LV_DPI / 6;
|
||||
list_btn_rel.body.padding.bottom = LV_DPI / 6;
|
||||
list_btn_rel.body.padding.left = LV_DPI / 8;
|
||||
list_btn_rel.body.padding.right = LV_DPI / 8;
|
||||
|
||||
lv_style_copy(&list_btn_pr, theme.style.btn.pr);
|
||||
list_btn_pr.body.main_color = lv_color_hsv_to_rgb(hue, 10, 5);
|
||||
list_btn_pr.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 5);
|
||||
list_btn_pr.body.border.color = lv_color_hsv_to_rgb(hue, 10, 5);
|
||||
list_btn_pr.body.border.width = 0;
|
||||
list_btn_pr.body.padding.top = LV_DPI / 6;
|
||||
list_btn_pr.body.padding.bottom = LV_DPI / 6;
|
||||
list_btn_pr.body.padding.left = LV_DPI / 8;
|
||||
list_btn_pr.body.padding.right = LV_DPI / 8;
|
||||
list_btn_pr.text.color = lv_color_hsv_to_rgb(hue, 5, 80);
|
||||
list_btn_pr.image.color = lv_color_hsv_to_rgb(hue, 5, 80);
|
||||
|
||||
lv_style_copy(&list_btn_tgl_rel, &list_btn_rel);
|
||||
list_btn_tgl_rel.body.opa = LV_OPA_COVER;
|
||||
list_btn_tgl_rel.body.main_color = lv_color_hsv_to_rgb(hue, 80, 70);
|
||||
list_btn_tgl_rel.body.grad_color = lv_color_hsv_to_rgb(hue, 80, 70);
|
||||
list_btn_tgl_rel.body.border.color = lv_color_hsv_to_rgb(hue, 60, 40);
|
||||
list_btn_tgl_rel.body.radius = list_bg.body.radius;
|
||||
|
||||
lv_style_copy(&list_btn_tgl_pr, &list_btn_tgl_rel);
|
||||
list_btn_tgl_pr.body.main_color = lv_color_hsv_to_rgb(hue, 80, 60);
|
||||
list_btn_tgl_pr.body.grad_color = lv_color_hsv_to_rgb(hue, 80, 60);
|
||||
|
||||
theme.style.list.sb = &sb;
|
||||
theme.style.list.bg = &list_bg;
|
||||
theme.style.list.scrl = &lv_style_transp_tight;
|
||||
theme.style.list.btn.rel = &list_btn_rel;
|
||||
theme.style.list.btn.pr = &list_btn_pr;
|
||||
theme.style.list.btn.tgl_rel = &list_btn_tgl_rel;
|
||||
theme.style.list.btn.tgl_pr = &list_btn_tgl_pr;
|
||||
theme.style.list.btn.ina = &def;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeDropDownList() {
|
||||
lv_style_copy(&ddlist_bg, theme.style.btn.rel);
|
||||
ddlist_bg.text.line_space = LV_DPI / 8;
|
||||
ddlist_bg.body.padding.top = LV_DPI / 8;
|
||||
ddlist_bg.body.padding.bottom = LV_DPI / 8;
|
||||
ddlist_bg.body.padding.left = LV_DPI / 8;
|
||||
ddlist_bg.body.padding.right = LV_DPI / 8;
|
||||
ddlist_bg.body.radius = LV_DPI / 30;
|
||||
|
||||
lv_style_copy(&ddlist_sel, theme.style.btn.rel);
|
||||
ddlist_sel.body.main_color = lv_color_hsv_to_rgb(hue, 20, 50);
|
||||
ddlist_sel.body.grad_color = lv_color_hsv_to_rgb(hue, 20, 50);
|
||||
ddlist_sel.body.radius = 0;
|
||||
|
||||
theme.style.ddlist.bg = &ddlist_bg;
|
||||
theme.style.ddlist.sel = &ddlist_sel;
|
||||
theme.style.ddlist.sb = &def;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeRoller() {
|
||||
lv_style_t roller_bg;
|
||||
|
||||
lv_style_copy(&roller_bg, theme.style.ddlist.bg);
|
||||
roller_bg.body.main_color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
roller_bg.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 40);
|
||||
roller_bg.text.color = lv_color_hsv_to_rgb(hue, 5, 70);
|
||||
roller_bg.text.opa = LV_OPA_60;
|
||||
|
||||
theme.style.roller.bg = &roller_bg;
|
||||
theme.style.roller.sel = theme.style.ddlist.sel;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeTabView() {
|
||||
theme.style.tabview.bg = &bg;
|
||||
theme.style.tabview.indic = &lv_style_transp;
|
||||
theme.style.tabview.btn.bg = &lv_style_transp;
|
||||
theme.style.tabview.btn.rel = theme.style.btn.rel;
|
||||
theme.style.tabview.btn.pr = theme.style.btn.pr;
|
||||
theme.style.tabview.btn.tgl_rel = theme.style.btn.tgl_rel;
|
||||
theme.style.tabview.btn.tgl_pr = theme.style.btn.tgl_pr;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeTileView() {
|
||||
theme.style.tileview.bg = &lv_style_transp_tight;
|
||||
theme.style.tileview.scrl = &lv_style_transp_tight;
|
||||
theme.style.tileview.sb = theme.style.page.sb;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeTable() {
|
||||
lv_style_copy(&cell, &panel);
|
||||
cell.body.radius = 0;
|
||||
cell.body.border.width = 1;
|
||||
cell.body.padding.left = LV_DPI / 12;
|
||||
cell.body.padding.right = LV_DPI / 12;
|
||||
cell.body.padding.top = LV_DPI / 12;
|
||||
cell.body.padding.bottom = LV_DPI / 12;
|
||||
|
||||
theme.style.table.bg = &lv_style_transp_tight;
|
||||
theme.style.table.cell = &cell;
|
||||
}
|
||||
|
||||
void LittleVgl::InitThemeWindow() {
|
||||
// lv_style_copy(&win_bg, &bg);
|
||||
// win_bg.body.border.color = lv_color_hex3(0x333);
|
||||
// win_bg.body.border.width = 1;
|
||||
//
|
||||
// lv_style_copy(&win_header, &win_bg);
|
||||
// win_header.body.main_color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
// win_header.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 20);
|
||||
// win_header.body.radius = 0;
|
||||
// win_header.body.padding.left = 0;
|
||||
// win_header.body.padding.right = 0;
|
||||
// win_header.body.padding.top = 0;
|
||||
// win_header.body.padding.bottom = 0;
|
||||
//
|
||||
// lv_style_copy(&win_btn_pr, &def);
|
||||
// win_btn_pr.body.main_color = lv_color_hsv_to_rgb(hue, 10, 10);
|
||||
// win_btn_pr.body.grad_color = lv_color_hsv_to_rgb(hue, 10, 10);
|
||||
// win_btn_pr.text.color = lv_color_hex3(0xaaa);
|
||||
// win_btn_pr.image.color = lv_color_hex3(0xaaa);
|
||||
//
|
||||
// theme.style.win.bg = &win_bg;
|
||||
// theme.style.win.sb = &sb;
|
||||
// theme.style.win.header = &win_header;
|
||||
// theme.style.win.content = &lv_style_transp;
|
||||
// theme.style.win.btn.rel = &lv_style_transp;
|
||||
// theme.style.win.btn.pr = &win_btn_pr;
|
||||
}
|
||||
|
|
|
@ -28,36 +28,7 @@ namespace Pinetime {
|
|||
void InitDisplay();
|
||||
void InitTouchpad();
|
||||
void InitTheme();
|
||||
void InitBaseTheme();
|
||||
void InitThemeContainer();
|
||||
void InitThemeButton();
|
||||
void InitThemeLabel();
|
||||
void InitThemeLine();
|
||||
void InitThemeLed();
|
||||
void InitThemeImage();
|
||||
void InitThemeBar();
|
||||
void InitThemeSlider();
|
||||
void InitThemeSwitch();
|
||||
void InitThemeMeter();
|
||||
void InitThemeGauge();
|
||||
void InitThemeArc();
|
||||
void InitThemePreload();
|
||||
void InitThemeChart();
|
||||
void InitThemeCalendar();
|
||||
void InitThemeCheckBox();
|
||||
void InitThemeButtonMatrix();
|
||||
void InitThemeKnob();
|
||||
void InitThemeMessageBox();
|
||||
void InitThemePage();
|
||||
void InitThemeTextArea();
|
||||
void InitThemeSpinBox();
|
||||
void InitThemeList();
|
||||
void InitThemeDropDownList();
|
||||
void InitThemeRoller();
|
||||
void InitThemeTabView();
|
||||
void InitThemeTileView();
|
||||
void InitThemeTable();
|
||||
void InitThemeWindow();
|
||||
|
||||
|
||||
Pinetime::Drivers::St7789& lcd;
|
||||
Pinetime::Drivers::Cst816S& touchPanel;
|
||||
|
@ -70,35 +41,6 @@ namespace Pinetime {
|
|||
lv_disp_drv_t disp_drv;
|
||||
lv_point_t previousClick;
|
||||
|
||||
lv_style_t def;
|
||||
lv_style_t scr, bg, sb, panel;
|
||||
lv_font_t * font = nullptr;
|
||||
uint16_t hue = 10;
|
||||
lv_theme_t theme;
|
||||
lv_style_t btn_rel, btn_pr, btn_tgl_rel, btn_tgl_pr, btn_ina;
|
||||
lv_style_t labelBigStyle;
|
||||
lv_style_t prim, sec, hint;
|
||||
lv_style_t led;
|
||||
lv_style_t bar_bg, bar_indic;
|
||||
lv_style_t slider_knob;
|
||||
lv_style_t arc;
|
||||
lv_style_t cal_bg;
|
||||
lv_style_t cal_header;
|
||||
lv_style_t week_box;
|
||||
lv_style_t today_box;
|
||||
lv_style_t highlighted_days;
|
||||
lv_style_t ina_days;
|
||||
lv_style_t rel, pr, tgl_rel, tgl_pr, ina;
|
||||
lv_style_t btnm_bg, btnm_rel, btnm_pr, btnm_tgl_rel, btnm_tgl_pr, btnm_ina;
|
||||
lv_style_t mbox_bg;
|
||||
lv_style_t page_scrl;
|
||||
lv_style_t list_bg, list_btn_rel, list_btn_pr, list_btn_tgl_rel, list_btn_tgl_pr;
|
||||
lv_style_t ddlist_bg, ddlist_sel;
|
||||
lv_style_t cell;
|
||||
lv_style_t win_bg;
|
||||
lv_style_t win_header;
|
||||
lv_style_t win_btn_pr;
|
||||
|
||||
bool firstTouch = true;
|
||||
static constexpr uint8_t nbWriteLines = 4;
|
||||
static constexpr uint16_t totalNbLines = 320;
|
||||
|
|
482
src/displayapp/lv_pinetime_theme.c
Normal file
482
src/displayapp/lv_pinetime_theme.c
Normal file
|
@ -0,0 +1,482 @@
|
|||
/**
|
||||
* @file lv_pinetime_theme.c
|
||||
*
|
||||
*/
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "lv_pinetime_theme.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
static void theme_apply(lv_obj_t * obj, lv_theme_style_t name);
|
||||
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
static lv_theme_t theme;
|
||||
|
||||
static lv_style_t style_pad;
|
||||
static lv_style_t style_circle;
|
||||
|
||||
static lv_style_t style_bg;
|
||||
static lv_style_t style_box;
|
||||
static lv_style_t style_box_border;
|
||||
static lv_style_t style_btn;
|
||||
static lv_style_t style_btn_border;
|
||||
static lv_style_t style_title;
|
||||
static lv_style_t style_label_white;
|
||||
static lv_style_t style_back;
|
||||
static lv_style_t style_icon;
|
||||
static lv_style_t style_bar_indic;
|
||||
static lv_style_t style_slider_knob;
|
||||
static lv_style_t style_scrollbar;
|
||||
static lv_style_t style_list_btn;
|
||||
static lv_style_t style_ddlist_list;
|
||||
static lv_style_t style_ddlist_selected;
|
||||
static lv_style_t style_sw_bg;
|
||||
static lv_style_t style_sw_indic;
|
||||
static lv_style_t style_sw_knob;
|
||||
static lv_style_t style_arc_bg;
|
||||
static lv_style_t style_arc_indic;
|
||||
static lv_style_t style_table_cell;
|
||||
static lv_style_t style_pad_small;
|
||||
static lv_style_t style_bg_grad;
|
||||
static lv_style_t style_lmeter;
|
||||
|
||||
static bool inited;
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
|
||||
static void style_init_reset(lv_style_t * style)
|
||||
{
|
||||
if(inited) lv_style_reset(style);
|
||||
else lv_style_init(style);
|
||||
}
|
||||
|
||||
|
||||
static void basic_init(void)
|
||||
{
|
||||
|
||||
style_init_reset(&style_pad);
|
||||
lv_style_set_pad_top(&style_pad, LV_STATE_DEFAULT, LV_VER_RES / 30);
|
||||
lv_style_set_pad_bottom(&style_pad, LV_STATE_DEFAULT, LV_VER_RES / 30);
|
||||
lv_style_set_pad_left(&style_pad, LV_STATE_DEFAULT, LV_VER_RES / 40);
|
||||
lv_style_set_pad_right(&style_pad, LV_STATE_DEFAULT, LV_VER_RES / 40);
|
||||
|
||||
style_init_reset(&style_circle);
|
||||
lv_style_set_radius(&style_circle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
|
||||
style_init_reset(&style_bg);
|
||||
lv_style_set_bg_opa(&style_bg, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_bg, LV_STATE_DEFAULT, LV_COLOR_BLACK);
|
||||
lv_style_set_text_font(&style_bg, LV_STATE_DEFAULT, theme.font_normal);
|
||||
|
||||
style_init_reset(&style_box);
|
||||
lv_style_set_bg_opa(&style_box, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_radius(&style_box, LV_STATE_DEFAULT, 10);
|
||||
lv_style_set_value_color(&style_box, LV_STATE_DEFAULT, LV_PINETIME_BLUE);
|
||||
lv_style_set_value_font(&style_box, LV_STATE_DEFAULT, theme.font_normal);
|
||||
|
||||
style_init_reset(&style_box_border);
|
||||
lv_style_set_bg_opa(&style_box_border, LV_STATE_DEFAULT, LV_OPA_TRANSP);
|
||||
lv_style_set_border_width(&style_box_border, LV_STATE_DEFAULT, 2);
|
||||
lv_style_set_border_color(&style_box_border, LV_STATE_DEFAULT, LV_PINETIME_GRAY);
|
||||
lv_style_set_text_color(&style_box, LV_STATE_DEFAULT, LV_PINETIME_BLUE);
|
||||
|
||||
|
||||
style_init_reset(&style_title);
|
||||
lv_style_set_text_color(&style_title, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
lv_style_set_text_font(&style_title, LV_STATE_DEFAULT, theme.font_subtitle);
|
||||
|
||||
style_init_reset(&style_label_white);
|
||||
lv_style_set_text_color(&style_label_white, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
|
||||
style_init_reset(&style_btn);
|
||||
lv_style_set_radius(&style_btn, LV_STATE_DEFAULT, 10);
|
||||
lv_style_set_bg_opa(&style_btn, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_btn, LV_STATE_DEFAULT, LV_PINETIME_GRAY);
|
||||
lv_style_set_text_color(&style_btn, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
lv_style_set_value_color(&style_btn, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
lv_style_set_pad_top(&style_btn, LV_STATE_DEFAULT, LV_VER_RES / 40);
|
||||
lv_style_set_pad_bottom(&style_btn, LV_STATE_DEFAULT, LV_VER_RES / 40);
|
||||
|
||||
lv_style_set_pad_left(&style_btn, LV_STATE_DEFAULT, LV_DPX(15));
|
||||
lv_style_set_pad_right(&style_btn, LV_STATE_DEFAULT, LV_DPX(15));
|
||||
lv_style_set_pad_top(&style_btn, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
lv_style_set_pad_bottom(&style_btn, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
lv_style_set_pad_inner(&style_btn, LV_STATE_DEFAULT, LV_DPX(5));
|
||||
lv_style_set_outline_width(&style_btn, LV_STATE_DEFAULT, LV_DPX(2));
|
||||
|
||||
|
||||
style_init_reset(&style_btn_border);
|
||||
lv_style_set_radius(&style_btn_border, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_border_color(&style_btn_border, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
lv_style_set_border_width(&style_btn_border, LV_STATE_DEFAULT, 2);
|
||||
lv_style_set_bg_opa(&style_btn_border, LV_STATE_DEFAULT, LV_OPA_TRANSP);
|
||||
lv_style_set_bg_color(&style_btn_border, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
lv_style_set_text_color(&style_btn_border, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
lv_style_set_value_color(&style_btn_border, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
lv_style_set_transition_prop_3(&style_btn_border, LV_STATE_DEFAULT, LV_STYLE_BG_OPA);
|
||||
|
||||
style_init_reset(&style_icon);
|
||||
lv_style_set_text_color(&style_icon, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
|
||||
style_init_reset(&style_back);
|
||||
lv_style_set_value_color(&style_back, LV_STATE_DEFAULT, LV_PINETIME_GRAY);
|
||||
lv_style_set_value_str(&style_back, LV_STATE_DEFAULT, LV_SYMBOL_LEFT);
|
||||
lv_style_set_value_font(&style_back, LV_STATE_DEFAULT, theme.font_subtitle);
|
||||
|
||||
style_init_reset(&style_bar_indic);
|
||||
lv_style_set_bg_opa(&style_bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_radius(&style_bar_indic, LV_STATE_DEFAULT, 10);
|
||||
|
||||
style_init_reset(&style_scrollbar);
|
||||
lv_style_set_bg_opa(&style_scrollbar, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_radius(&style_scrollbar, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_bg_color(&style_scrollbar, LV_STATE_DEFAULT, LV_PINETIME_LIGHT_GRAY);
|
||||
lv_style_set_size(&style_scrollbar, LV_STATE_DEFAULT, LV_HOR_RES / 80);
|
||||
lv_style_set_pad_right(&style_scrollbar, LV_STATE_DEFAULT, LV_HOR_RES / 60);
|
||||
|
||||
style_init_reset(&style_list_btn);
|
||||
lv_style_set_bg_opa(&style_list_btn, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_list_btn, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
lv_style_set_bg_color(&style_list_btn, LV_STATE_CHECKED, LV_PINETIME_GRAY);
|
||||
lv_style_set_bg_color(&style_list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_darken(LV_PINETIME_GRAY, LV_OPA_20));
|
||||
lv_style_set_text_color(&style_list_btn, LV_STATE_DEFAULT, LV_PINETIME_BLUE);
|
||||
lv_style_set_text_color(&style_list_btn, LV_STATE_CHECKED, LV_PINETIME_WHITE);
|
||||
lv_style_set_text_color(&style_list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, LV_PINETIME_WHITE);
|
||||
lv_style_set_image_recolor(&style_list_btn, LV_STATE_DEFAULT, LV_PINETIME_BLUE);
|
||||
lv_style_set_image_recolor(&style_list_btn, LV_STATE_CHECKED, LV_PINETIME_WHITE);
|
||||
lv_style_set_image_recolor(&style_list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, LV_PINETIME_WHITE);
|
||||
lv_style_set_pad_left(&style_list_btn, LV_STATE_DEFAULT, LV_HOR_RES / 25);
|
||||
lv_style_set_pad_right(&style_list_btn, LV_STATE_DEFAULT, LV_HOR_RES / 25);
|
||||
lv_style_set_pad_top(&style_list_btn, LV_STATE_DEFAULT, LV_HOR_RES / 100);
|
||||
lv_style_set_pad_bottom(&style_list_btn, LV_STATE_DEFAULT, LV_HOR_RES / 100);
|
||||
lv_style_set_pad_inner(&style_list_btn, LV_STATE_DEFAULT, LV_HOR_RES / 50);
|
||||
|
||||
style_init_reset(&style_ddlist_list);
|
||||
lv_style_set_text_line_space(&style_ddlist_list, LV_STATE_DEFAULT, LV_VER_RES / 25);
|
||||
lv_style_set_shadow_width(&style_ddlist_list, LV_STATE_DEFAULT, LV_VER_RES / 20);
|
||||
lv_style_set_shadow_color(&style_ddlist_list, LV_STATE_DEFAULT, LV_PINETIME_GRAY);
|
||||
|
||||
style_init_reset(&style_ddlist_selected);
|
||||
lv_style_set_bg_opa(&style_ddlist_selected, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_ddlist_selected, LV_STATE_DEFAULT, LV_PINETIME_BLUE);
|
||||
|
||||
style_init_reset(&style_sw_bg);
|
||||
lv_style_set_bg_opa(&style_sw_bg, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_sw_bg, LV_STATE_DEFAULT, LV_PINETIME_LIGHT_GRAY);
|
||||
lv_style_set_radius(&style_sw_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_value_color(&style_sw_bg, LV_STATE_DEFAULT, LV_PINETIME_BLUE);
|
||||
|
||||
style_init_reset(&style_sw_indic);
|
||||
lv_style_set_bg_opa(&style_sw_indic, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_sw_indic, LV_STATE_DEFAULT, LV_PINETIME_GREEN);
|
||||
|
||||
style_init_reset(&style_sw_knob);
|
||||
lv_style_set_bg_opa(&style_sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_sw_knob, LV_STATE_DEFAULT, LV_PINETIME_WHITE);
|
||||
lv_style_set_radius(&style_sw_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_pad_top(&style_sw_knob, LV_STATE_DEFAULT, - 4);
|
||||
lv_style_set_pad_bottom(&style_sw_knob, LV_STATE_DEFAULT, - 4);
|
||||
lv_style_set_pad_left(&style_sw_knob, LV_STATE_DEFAULT, - 4);
|
||||
lv_style_set_pad_right(&style_sw_knob, LV_STATE_DEFAULT, - 4);
|
||||
|
||||
style_init_reset(&style_slider_knob);
|
||||
lv_style_set_bg_opa(&style_slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_slider_knob, LV_STATE_DEFAULT, LV_COLOR_RED);
|
||||
lv_style_set_border_color(&style_slider_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE);
|
||||
lv_style_set_border_width(&style_slider_knob, LV_STATE_DEFAULT, 6);
|
||||
lv_style_set_radius(&style_slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_pad_top(&style_slider_knob, LV_STATE_DEFAULT, 10);
|
||||
lv_style_set_pad_bottom(&style_slider_knob, LV_STATE_DEFAULT, 10);
|
||||
lv_style_set_pad_left(&style_slider_knob, LV_STATE_DEFAULT, 10);
|
||||
lv_style_set_pad_right(&style_slider_knob, LV_STATE_DEFAULT, 10);
|
||||
lv_style_set_pad_top(&style_slider_knob, LV_STATE_PRESSED, 14);
|
||||
lv_style_set_pad_bottom(&style_slider_knob, LV_STATE_PRESSED, 14);
|
||||
lv_style_set_pad_left(&style_slider_knob, LV_STATE_PRESSED, 14);
|
||||
lv_style_set_pad_right(&style_slider_knob, LV_STATE_PRESSED, 14);
|
||||
|
||||
style_init_reset(&style_arc_indic);
|
||||
lv_style_set_line_color(&style_arc_indic, LV_STATE_DEFAULT, LV_PINETIME_BLUE);
|
||||
lv_style_set_line_width(&style_arc_indic, LV_STATE_DEFAULT, LV_DPX(25));
|
||||
lv_style_set_line_rounded(&style_arc_indic, LV_STATE_DEFAULT, true);
|
||||
|
||||
style_init_reset(&style_arc_bg);
|
||||
lv_style_set_line_color(&style_arc_bg, LV_STATE_DEFAULT, LV_PINETIME_GRAY);
|
||||
lv_style_set_line_width(&style_arc_bg, LV_STATE_DEFAULT, LV_DPX(25));
|
||||
lv_style_set_line_rounded(&style_arc_bg, LV_STATE_DEFAULT, true);
|
||||
|
||||
style_init_reset(&style_table_cell);
|
||||
lv_style_set_border_color(&style_table_cell, LV_STATE_DEFAULT, LV_PINETIME_GRAY);
|
||||
lv_style_set_border_width(&style_table_cell, LV_STATE_DEFAULT, 1);
|
||||
lv_style_set_border_side(&style_table_cell, LV_STATE_DEFAULT, LV_BORDER_SIDE_FULL);
|
||||
lv_style_set_pad_left(&style_table_cell, LV_STATE_DEFAULT, 12);
|
||||
lv_style_set_pad_right(&style_table_cell, LV_STATE_DEFAULT, 12);
|
||||
lv_style_set_pad_top(&style_table_cell, LV_STATE_DEFAULT, 12);
|
||||
lv_style_set_pad_bottom(&style_table_cell, LV_STATE_DEFAULT, 12);
|
||||
|
||||
style_init_reset(&style_pad_small);
|
||||
lv_style_int_t pad_small_value = 10;
|
||||
lv_style_set_pad_left(&style_pad_small, LV_STATE_DEFAULT, pad_small_value);
|
||||
lv_style_set_pad_right(&style_pad_small, LV_STATE_DEFAULT, pad_small_value);
|
||||
lv_style_set_pad_top(&style_pad_small, LV_STATE_DEFAULT, pad_small_value);
|
||||
lv_style_set_pad_bottom(&style_pad_small, LV_STATE_DEFAULT, pad_small_value);
|
||||
lv_style_set_pad_inner(&style_pad_small, LV_STATE_DEFAULT, pad_small_value);
|
||||
|
||||
style_init_reset(&style_bg_grad);
|
||||
lv_style_set_bg_color(&style_bg_grad, LV_STATE_DEFAULT, lv_color_hsv_to_rgb(10, 10, 40));
|
||||
lv_style_set_bg_grad_color(&style_bg_grad, LV_STATE_DEFAULT, lv_color_hsv_to_rgb(10, 10, 20));
|
||||
lv_style_set_bg_grad_dir(&style_bg_grad, LV_STATE_DEFAULT, LV_GRAD_DIR_VER);
|
||||
|
||||
style_init_reset(&style_lmeter);
|
||||
lv_style_set_radius(&style_lmeter, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_pad_left(&style_lmeter, LV_STATE_DEFAULT, LV_DPX(20));
|
||||
lv_style_set_pad_right(&style_lmeter, LV_STATE_DEFAULT, LV_DPX(20));
|
||||
lv_style_set_pad_top(&style_lmeter, LV_STATE_DEFAULT, LV_DPX(20));
|
||||
lv_style_set_pad_inner(&style_lmeter, LV_STATE_DEFAULT, LV_DPX(30));
|
||||
lv_style_set_scale_width(&style_lmeter, LV_STATE_DEFAULT, LV_DPX(25));
|
||||
|
||||
lv_style_set_line_color(&style_lmeter, LV_STATE_DEFAULT, theme.color_primary);
|
||||
lv_style_set_scale_grad_color(&style_lmeter, LV_STATE_DEFAULT, theme.color_primary);
|
||||
lv_style_set_scale_end_color(&style_lmeter, LV_STATE_DEFAULT, lv_color_hex3(0x888));
|
||||
lv_style_set_line_width(&style_lmeter, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
lv_style_set_scale_end_line_width(&style_lmeter, LV_STATE_DEFAULT, LV_DPX(7));
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
/**
|
||||
* Initialize the default
|
||||
* @param color_primary the primary color of the theme
|
||||
* @param color_secondary the secondary color for the theme
|
||||
* @param flags ORed flags starting with `LV_THEME_DEF_FLAG_...`
|
||||
* @param font_small pointer to a small font
|
||||
* @param font_normal pointer to a normal font
|
||||
* @param font_subtitle pointer to a large font
|
||||
* @param font_title pointer to a extra large font
|
||||
* @return a pointer to reference this theme later
|
||||
*/
|
||||
lv_theme_t * lv_pinetime_theme_init(lv_color_t color_primary, lv_color_t color_secondary, uint32_t flags,
|
||||
const lv_font_t * font_small, const lv_font_t * font_normal, const lv_font_t * font_subtitle,
|
||||
const lv_font_t * font_title)
|
||||
{
|
||||
theme.color_primary = color_primary;
|
||||
theme.color_secondary = color_secondary;
|
||||
theme.font_small = font_small;
|
||||
theme.font_normal = font_normal;
|
||||
theme.font_subtitle = font_subtitle;
|
||||
theme.font_title = font_title;
|
||||
theme.flags = flags;
|
||||
|
||||
basic_init();
|
||||
|
||||
theme.apply_xcb = theme_apply;
|
||||
|
||||
inited = true;
|
||||
|
||||
return &theme;
|
||||
}
|
||||
|
||||
|
||||
static void theme_apply(lv_obj_t * obj, lv_theme_style_t name)
|
||||
{
|
||||
lv_style_list_t * list;
|
||||
|
||||
/*To avoid warnings*/
|
||||
uint32_t name_int = (uint32_t) name;
|
||||
switch(name_int) {
|
||||
case LV_THEME_NONE:
|
||||
break;
|
||||
|
||||
case LV_THEME_SCR:
|
||||
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
|
||||
list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &style_bg);
|
||||
break;
|
||||
|
||||
case LV_THEME_OBJ:
|
||||
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
|
||||
list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &style_box);
|
||||
break;
|
||||
|
||||
case LV_THEME_CONT:
|
||||
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
|
||||
list = lv_obj_get_style_list(obj, LV_CONT_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &style_box);
|
||||
break;
|
||||
|
||||
case LV_THEME_BTN:
|
||||
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
|
||||
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &style_btn);
|
||||
_lv_style_list_add_style(list, &style_bg_grad);
|
||||
break;
|
||||
|
||||
case LV_THEME_BTNMATRIX:
|
||||
list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG);
|
||||
_lv_style_list_add_style(list, &style_bg);
|
||||
_lv_style_list_add_style(list, &style_pad_small);
|
||||
|
||||
list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BTN);
|
||||
_lv_style_list_add_style(list, &style_btn);
|
||||
_lv_style_list_add_style(list, &style_bg_grad);
|
||||
//_lv_style_list_add_style(list, &styles->bg_click);
|
||||
break;
|
||||
|
||||
case LV_THEME_BAR:
|
||||
lv_obj_clean_style_list(obj, LV_BAR_PART_BG);
|
||||
list = lv_obj_get_style_list(obj, LV_BAR_PART_BG);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_BAR_PART_INDIC);
|
||||
list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC);
|
||||
_lv_style_list_add_style(list, &style_bar_indic);
|
||||
break;
|
||||
|
||||
case LV_THEME_IMAGE:
|
||||
lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN);
|
||||
list = lv_obj_get_style_list(obj, LV_IMG_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &style_icon);
|
||||
break;
|
||||
|
||||
case LV_THEME_LABEL:
|
||||
lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN);
|
||||
list = lv_obj_get_style_list(obj, LV_LABEL_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &style_label_white);
|
||||
break;
|
||||
|
||||
case LV_THEME_SLIDER:
|
||||
lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG);
|
||||
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG);
|
||||
_lv_style_list_add_style(list, &style_sw_bg);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_SLIDER_PART_INDIC);
|
||||
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_SLIDER_PART_KNOB);
|
||||
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB);
|
||||
_lv_style_list_add_style(list, &style_slider_knob);
|
||||
break;
|
||||
|
||||
case LV_THEME_LIST:
|
||||
lv_obj_clean_style_list(obj, LV_LIST_PART_BG);
|
||||
list = lv_obj_get_style_list(obj, LV_LIST_PART_BG);
|
||||
_lv_style_list_add_style(list, &style_box);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLABLE);
|
||||
list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLABLE);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLBAR);
|
||||
list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLBAR);
|
||||
_lv_style_list_add_style(list, &style_scrollbar);
|
||||
break;
|
||||
|
||||
case LV_THEME_LIST_BTN:
|
||||
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
|
||||
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &style_list_btn);
|
||||
break;
|
||||
|
||||
|
||||
case LV_THEME_ARC:
|
||||
lv_obj_clean_style_list(obj, LV_ARC_PART_BG);
|
||||
list = lv_obj_get_style_list(obj, LV_ARC_PART_BG);
|
||||
_lv_style_list_add_style(list, &style_arc_bg);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_ARC_PART_INDIC);
|
||||
list = lv_obj_get_style_list(obj, LV_ARC_PART_INDIC);
|
||||
_lv_style_list_add_style(list, &style_arc_indic);
|
||||
break;
|
||||
|
||||
|
||||
case LV_THEME_SWITCH:
|
||||
lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG);
|
||||
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG);
|
||||
_lv_style_list_add_style(list, &style_sw_bg);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_SWITCH_PART_INDIC);
|
||||
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC);
|
||||
_lv_style_list_add_style(list, &style_sw_indic);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_SWITCH_PART_KNOB);
|
||||
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB);
|
||||
_lv_style_list_add_style(list, &style_sw_knob);
|
||||
break;
|
||||
|
||||
case LV_THEME_DROPDOWN:
|
||||
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN);
|
||||
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &style_btn);
|
||||
_lv_style_list_add_style(list, &style_pad);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST);
|
||||
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST);
|
||||
_lv_style_list_add_style(list, &style_box);
|
||||
_lv_style_list_add_style(list, &style_ddlist_list);
|
||||
_lv_style_list_add_style(list, &style_pad);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED);
|
||||
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED);
|
||||
_lv_style_list_add_style(list, &style_ddlist_selected);
|
||||
|
||||
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR);
|
||||
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR);
|
||||
_lv_style_list_add_style(list, &style_scrollbar);
|
||||
break;
|
||||
|
||||
case LV_THEME_TABLE:
|
||||
list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG);
|
||||
_lv_style_list_add_style(list, &style_bg);
|
||||
|
||||
int idx = 1; /* start value should be 1, not zero, since cell styles
|
||||
start at 1 due to presence of LV_TABLE_PART_BG=0
|
||||
in the enum (lv_table.h) */
|
||||
/* declaring idx outside loop to work with older compilers */
|
||||
for(; idx <= LV_TABLE_CELL_STYLE_CNT; idx ++) {
|
||||
list = lv_obj_get_style_list(obj, idx);
|
||||
_lv_style_list_add_style(list, &style_table_cell);
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_THEME_LINEMETER:
|
||||
list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &style_bg);
|
||||
_lv_style_list_add_style(list, &style_lmeter);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
lv_obj_refresh_style(obj, LV_OBJ_PART_ALL, LV_STYLE_PROP_ALL);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
62
src/displayapp/lv_pinetime_theme.h
Normal file
62
src/displayapp/lv_pinetime_theme.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* @file lv_pinetime_theme.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LV_PINETIME_THEME_H
|
||||
#define LV_PINETIME_THEME_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <lvgl/lvgl.h>
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
/*Colors*/
|
||||
#define LV_PINETIME_WHITE lv_color_hex(0xffffff)
|
||||
#define LV_PINETIME_LIGHT lv_color_hex(0xf3f8fe)
|
||||
#define LV_PINETIME_GRAY lv_color_hex(0x8a8a8a)
|
||||
#define LV_PINETIME_LIGHT_GRAY lv_color_hex(0xc4c4c4)
|
||||
#define LV_PINETIME_BLUE lv_color_hex(0x2f3243) //006fb6
|
||||
#define LV_PINETIME_GREEN lv_color_hex(0x4cb242)
|
||||
#define LV_PINETIME_RED lv_color_hex(0xd51732)
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
|
||||
/**
|
||||
* Initialize the default
|
||||
* @param color_primary the primary color of the theme
|
||||
* @param color_secondary the secondary color for the theme
|
||||
* @param flags ORed flags starting with `LV_THEME_DEF_FLAG_...`
|
||||
* @param font_small pointer to a small font
|
||||
* @param font_normal pointer to a normal font
|
||||
* @param font_subtitle pointer to a large font
|
||||
* @param font_title pointer to a extra large font
|
||||
* @return a pointer to reference this theme later
|
||||
*/
|
||||
lv_theme_t * lv_pinetime_theme_init(lv_color_t color_primary, lv_color_t color_secondary, uint32_t flags,
|
||||
const lv_font_t * font_small, const lv_font_t * font_normal, const lv_font_t * font_subtitle,
|
||||
const lv_font_t * font_title);
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
|
@ -71,7 +71,7 @@ std::unique_ptr<Screen> ApplicationList::CreateScreen2() {
|
|||
std::unique_ptr<Screen> ApplicationList::CreateScreen3() {
|
||||
std::array<Screens::Tile::Applications, 6> applications {
|
||||
{{"A", Apps::Meter},
|
||||
{"B", Apps::Gauge},
|
||||
{"B", Apps::Navigation},
|
||||
{"C", Apps::Clock},
|
||||
{"D", Apps::Music},
|
||||
{"E", Apps::SysInfo},
|
||||
|
|
|
@ -22,7 +22,7 @@ Brightness::Brightness(Pinetime::Applications::DisplayApp *app, Controllers::Bri
|
|||
slider_label = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_label_set_text(slider_label, LevelToString(brightness.Level()));
|
||||
lv_obj_set_auto_realign(slider_label, true);
|
||||
lv_obj_align(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
|
||||
lv_obj_align(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 30);
|
||||
}
|
||||
|
||||
Brightness::~Brightness() {
|
||||
|
@ -75,6 +75,9 @@ bool Brightness::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
|
|||
switch(event) {
|
||||
case TouchEvents::SwipeLeft:
|
||||
brightness.Lower();
|
||||
if ( brightness.Level() == Pinetime::Controllers::BrightnessController::Levels::Off) {
|
||||
brightness.Set(Controllers::BrightnessController::Levels::Low);
|
||||
}
|
||||
SetValue();
|
||||
return true;
|
||||
case TouchEvents::SwipeRight:
|
||||
|
|
|
@ -14,9 +14,6 @@
|
|||
#include "../DisplayApp.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
extern lv_style_t* LabelBigStyle;
|
||||
|
||||
static void event_handler(lv_obj_t * obj, lv_event_t event) {
|
||||
Clock* screen = static_cast<Clock *>(obj->user_data);
|
||||
|
@ -59,7 +56,9 @@ Clock::Clock(DisplayApp* app,
|
|||
lv_obj_align(label_date, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 60);
|
||||
|
||||
label_time = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_label_set_style(label_time, LV_LABEL_STYLE_MAIN, LabelBigStyle);
|
||||
|
||||
lv_obj_set_style_local_text_font(label_time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_extrabold_compressed);
|
||||
|
||||
lv_obj_align(label_time, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 0);
|
||||
|
||||
backgroundLabel = lv_label_create(lv_scr_act(), nullptr);
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
#include "../DisplayApp.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
DropDownDemo::DropDownDemo(Pinetime::Applications::DisplayApp *app) : Screen(app) {
|
||||
// Create the dropdown object, with many item, and fix its height
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
#include "../DisplayApp.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
|
||||
FirmwareUpdate::FirmwareUpdate(Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::Ble& bleController) :
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
#include "../DisplayApp.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
namespace {
|
||||
static void ButtonEventHandler(lv_obj_t * obj, lv_event_t event)
|
||||
|
|
|
@ -1,57 +0,0 @@
|
|||
#include "Gauge.h"
|
||||
#include "../DisplayApp.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
|
||||
Gauge::Gauge(Pinetime::Applications::DisplayApp *app) : Screen(app) {
|
||||
/*Create a style*/
|
||||
lv_style_copy(&style, &lv_style_pretty_color);
|
||||
style.body.main_color = LV_COLOR_CYAN; /*Line color at the beginning*/
|
||||
style.body.grad_color = LV_COLOR_RED; /*Line color at the end*/
|
||||
style.body.padding.left = 10; /*Scale line length*/
|
||||
style.body.padding.inner = 8 ; /*Scale label padding*/
|
||||
style.body.border.color = lv_color_hex3(0x333); /*Needle middle circle color*/
|
||||
style.line.width = 3;
|
||||
style.text.color = LV_COLOR_WHITE;
|
||||
style.line.color = LV_COLOR_RED; /*Line color after the critical value*/
|
||||
|
||||
|
||||
/*Describe the color for the needles*/
|
||||
|
||||
needle_colors[0] = LV_COLOR_ORANGE;
|
||||
|
||||
/*Create a gauge*/
|
||||
gauge1 = lv_gauge_create(lv_scr_act(), nullptr);
|
||||
lv_gauge_set_style(gauge1, LV_GAUGE_STYLE_MAIN, &style);
|
||||
lv_gauge_set_needle_count(gauge1, 1, needle_colors);
|
||||
lv_obj_set_size(gauge1, 180, 180);
|
||||
lv_obj_align(gauge1, nullptr, LV_ALIGN_CENTER, 0, 0);
|
||||
lv_gauge_set_scale(gauge1, 360, 60, 0);
|
||||
lv_gauge_set_range(gauge1, 0, 59);
|
||||
|
||||
/*Set the values*/
|
||||
lv_gauge_set_value(gauge1, 0, value);
|
||||
}
|
||||
|
||||
Gauge::~Gauge() {
|
||||
|
||||
|
||||
lv_obj_clean(lv_scr_act());
|
||||
}
|
||||
|
||||
bool Gauge::Refresh() {
|
||||
// lv_lmeter_set_value(lmeter, value++); /*Set the current value*/
|
||||
// if(value>=60) value = 0;
|
||||
|
||||
lv_gauge_set_value(gauge1, 0, value++);
|
||||
if(value == 59) value = 0;
|
||||
return running;
|
||||
}
|
||||
|
||||
bool Gauge::OnButtonPushed() {
|
||||
running = false;
|
||||
return true;
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include "Screen.h"
|
||||
#include <lvgl/lvgl.h>
|
||||
|
||||
namespace Pinetime {
|
||||
namespace Applications {
|
||||
namespace Screens {
|
||||
|
||||
class Gauge : public Screen{
|
||||
public:
|
||||
Gauge(DisplayApp* app);
|
||||
~Gauge() override;
|
||||
|
||||
bool Refresh() override;
|
||||
bool OnButtonPushed() override;
|
||||
|
||||
private:
|
||||
lv_style_t style;
|
||||
lv_color_t needle_colors[3];
|
||||
lv_obj_t * gauge1;
|
||||
|
||||
uint32_t value=30;
|
||||
bool running = true;
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,8 +5,6 @@
|
|||
#include "../DisplayApp.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
namespace {
|
||||
const char *ToString(Pinetime::Controllers::HeartRateController::States s) {
|
||||
|
@ -30,28 +28,22 @@ namespace {
|
|||
}
|
||||
|
||||
HeartRate::HeartRate(Pinetime::Applications::DisplayApp *app, Controllers::HeartRateController& heartRateController) : Screen(app), heartRateController{heartRateController} {
|
||||
label_bpm = lv_label_create(lv_scr_act(), NULL);
|
||||
|
||||
labelStyle = const_cast<lv_style_t *>(lv_label_get_style(label_bpm, LV_LABEL_STYLE_MAIN));
|
||||
labelStyle->text.font = &jetbrains_mono_bold_20;
|
||||
|
||||
lv_style_copy(&labelBigStyle, labelStyle);
|
||||
labelBigStyle.text.font = &jetbrains_mono_extrabold_compressed;
|
||||
|
||||
lv_label_set_style(label_bpm, LV_LABEL_STYLE_MAIN, labelStyle);
|
||||
|
||||
|
||||
label_hr = lv_label_create(lv_scr_act(), NULL);
|
||||
lv_label_set_style(label_hr, LV_LABEL_STYLE_MAIN, &labelBigStyle);
|
||||
|
||||
lv_obj_set_style_local_text_font(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_extrabold_compressed);
|
||||
|
||||
lv_obj_align(label_hr, lv_scr_act(), LV_ALIGN_CENTER, -70, -40);
|
||||
lv_label_set_text(label_hr, "000");
|
||||
|
||||
label_bpm = lv_label_create(lv_scr_act(), NULL);
|
||||
lv_label_set_text(label_bpm, "Heart rate BPM");
|
||||
lv_obj_align(label_bpm, label_hr, LV_ALIGN_OUT_TOP_MID, 0, -20);
|
||||
|
||||
|
||||
label_status = lv_label_create(lv_scr_act(), NULL);
|
||||
lv_label_set_text(label_status, ToString(Pinetime::Controllers::HeartRateController::States::NotEnoughData));
|
||||
lv_label_set_style(label_status, LV_LABEL_STYLE_MAIN, labelStyle);
|
||||
|
||||
lv_obj_align(label_status, label_hr, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
|
||||
|
||||
btn_startStop = lv_btn_create(lv_scr_act(), NULL);
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
#include "../LittleVgl.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
InfiniPaint::InfiniPaint(Pinetime::Applications::DisplayApp* app, Pinetime::Components::LittleVgl& lvgl) : Screen(app), lvgl{lvgl} {
|
||||
app->SetTouchMode(DisplayApp::TouchModes::Polling);
|
||||
|
|
|
@ -3,27 +3,23 @@
|
|||
#include "../DisplayApp.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
|
||||
Meter::Meter(Pinetime::Applications::DisplayApp *app) : Screen(app) {
|
||||
|
||||
lv_style_copy(&style_lmeter, &lv_style_pretty_color);
|
||||
style_lmeter.line.width = 2;
|
||||
style_lmeter.line.color = LV_COLOR_SILVER;
|
||||
style_lmeter.body.main_color = lv_color_make(255,0,0);
|
||||
style_lmeter.body.grad_color = lv_color_make(160,0,0);
|
||||
style_lmeter.body.padding.left = 16; /*Line length*/
|
||||
|
||||
/*Create a line meter */
|
||||
lmeter = lv_lmeter_create(lv_scr_act(), nullptr);
|
||||
lv_lmeter_set_range(lmeter, 0, 60); /*Set the range*/
|
||||
lv_lmeter_set_value(lmeter, value); /*Set the current value*/
|
||||
lv_lmeter_set_angle_offset(lmeter, 180);
|
||||
lv_lmeter_set_scale(lmeter, 360, 60); /*Set the angle and number of lines*/
|
||||
lv_lmeter_set_style(lmeter, LV_LMETER_STYLE_MAIN, &style_lmeter); /*Apply the new style*/
|
||||
lv_obj_set_size(lmeter, 150, 150);
|
||||
lmeter = lv_linemeter_create(lv_scr_act(), nullptr);
|
||||
lv_linemeter_set_range(lmeter, 0, 60); /*Set the range*/
|
||||
lv_linemeter_set_value(lmeter, value); /*Set the current value*/
|
||||
lv_linemeter_set_angle_offset(lmeter, 180);
|
||||
lv_linemeter_set_scale(lmeter, 360, 60); /*Set the angle and number of lines*/
|
||||
|
||||
lv_obj_set_style_local_scale_end_color(lmeter, LV_LINEMETER_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(255,0,0));
|
||||
lv_obj_set_style_local_scale_grad_color(lmeter, LV_LINEMETER_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(160,0,0));
|
||||
lv_obj_set_style_local_line_width(lmeter, LV_LINEMETER_PART_MAIN, LV_STATE_DEFAULT, 2);
|
||||
lv_obj_set_style_local_line_color(lmeter, LV_LINEMETER_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_SILVER);
|
||||
|
||||
lv_obj_set_size(lmeter, 200, 200);
|
||||
lv_obj_align(lmeter, nullptr, LV_ALIGN_CENTER, 0, 0);
|
||||
|
||||
}
|
||||
|
@ -35,7 +31,7 @@ Meter::~Meter() {
|
|||
}
|
||||
|
||||
bool Meter::Refresh() {
|
||||
lv_lmeter_set_value(lmeter, value++); /*Set the current value*/
|
||||
lv_linemeter_set_value(lmeter, value++); /*Set the current value*/
|
||||
if(value>=60) value = 0;
|
||||
|
||||
return running;
|
||||
|
|
|
@ -1,109 +0,0 @@
|
|||
#include "Modal.h"
|
||||
#include <lvgl/lvgl.h>
|
||||
#include "../DisplayApp.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
Modal::Modal(Pinetime::Applications::DisplayApp *app) : Screen(app), alertNotificationService(nullptr) {}
|
||||
|
||||
Modal::~Modal() {
|
||||
lv_obj_clean(lv_scr_act());
|
||||
}
|
||||
|
||||
bool Modal::Refresh() {
|
||||
|
||||
return running;
|
||||
}
|
||||
|
||||
bool Modal::OnButtonPushed() {
|
||||
running = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void Modal::Hide() {
|
||||
/* Delete the parent modal background */
|
||||
lv_obj_del_async(lv_obj_get_parent(mbox));
|
||||
mbox = NULL; /* happens before object is actually deleted! */
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
void Modal::mbox_event_cb(lv_obj_t *obj, lv_event_t evt) {
|
||||
auto* m = static_cast<Modal *>(obj->user_data);
|
||||
m->OnEvent(obj, evt);
|
||||
}
|
||||
|
||||
void Modal::OnEvent(lv_obj_t *event_obj, lv_event_t evt) {
|
||||
if(evt == LV_EVENT_DELETE && event_obj == mbox) {
|
||||
Hide();
|
||||
} else if(evt == LV_EVENT_VALUE_CHANGED) {
|
||||
if(event_obj == mbox) {
|
||||
if(strcmp(lv_mbox_get_active_btn_text(event_obj), this->positiveButton.c_str()) == 0) {
|
||||
if(alertNotificationService != nullptr) {
|
||||
alertNotificationService->event(Pinetime::Controllers::AlertNotificationService::EVENT_ANSWER_CALL);
|
||||
}
|
||||
} else {
|
||||
if(alertNotificationService != nullptr) {
|
||||
alertNotificationService->event(Pinetime::Controllers::AlertNotificationService::EVENT_HANG_UP_CALL);
|
||||
}
|
||||
}
|
||||
lv_mbox_start_auto_close(mbox, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Modal::NewNotification(Pinetime::Controllers::NotificationManager ¬ificationManager, Pinetime::Controllers::AlertNotificationService* alertService) {
|
||||
alertNotificationService = alertService;
|
||||
auto notification = notificationManager.GetLastNotification();
|
||||
std::string msg;
|
||||
if(notification.valid) {
|
||||
switch(notification.category) {
|
||||
case Pinetime::Controllers::NotificationManager::Categories::IncomingCall:
|
||||
this->positiveButton = "Answer";
|
||||
this->negativeButton = "Hang up";
|
||||
msg += "Incoming call from:\n";
|
||||
msg += notification.message.data();
|
||||
break;
|
||||
default:
|
||||
this->positiveButton = "Ok";
|
||||
this->negativeButton = "Cancel";
|
||||
msg = notification.message.data();
|
||||
break;
|
||||
}
|
||||
|
||||
static const char *btns[] = {this->positiveButton.c_str(), this->negativeButton.c_str(), ""};
|
||||
this->Show(msg.c_str(), btns);
|
||||
}
|
||||
}
|
||||
|
||||
void Modal::Show(const char* msg, const char *btns[]) {
|
||||
if(isVisible) return;
|
||||
isVisible = true;
|
||||
lv_style_copy(&modal_style, &lv_style_plain_color);
|
||||
modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK;
|
||||
modal_style.body.opa = LV_OPA_50;
|
||||
|
||||
obj = lv_obj_create(lv_scr_act(), nullptr);
|
||||
lv_obj_set_style(obj, &modal_style);
|
||||
lv_obj_set_pos(obj, 0, 0);
|
||||
lv_obj_set_size(obj, LV_HOR_RES, LV_VER_RES);
|
||||
lv_obj_set_opa_scale_enable(obj, true); /* Enable opacity scaling for the animation */
|
||||
|
||||
/* Create the message box as a child of the modal background */
|
||||
mbox = lv_mbox_create(obj, nullptr);
|
||||
lv_mbox_add_btns(mbox, btns);
|
||||
lv_mbox_set_text(mbox, msg);
|
||||
lv_obj_align(mbox, nullptr, LV_ALIGN_CENTER, 0, 0);
|
||||
lv_obj_set_event_cb(mbox, Modal::mbox_event_cb);
|
||||
|
||||
mbox->user_data = this;
|
||||
|
||||
/* Fade the message box in with an animation */
|
||||
lv_anim_t a;
|
||||
lv_anim_init(&a);
|
||||
lv_anim_set_time(&a, 500, 0);
|
||||
lv_anim_set_values(&a, LV_OPA_TRANSP, LV_OPA_COVER);
|
||||
lv_anim_set_exec_cb(&a, obj, (lv_anim_exec_xcb_t)lv_obj_set_opa_scale);
|
||||
lv_anim_create(&a);
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "Screen.h"
|
||||
#include <lvgl/src/lv_core/lv_style.h>
|
||||
#include <lvgl/src/lv_core/lv_obj.h>
|
||||
#include <components/ble/NotificationManager.h>
|
||||
#include <components/ble/AlertNotificationService.h>
|
||||
|
||||
namespace Pinetime {
|
||||
namespace Applications {
|
||||
namespace Screens {
|
||||
|
||||
class Modal : public Screen{
|
||||
public:
|
||||
Modal(DisplayApp* app);
|
||||
~Modal() override;
|
||||
|
||||
|
||||
void NewNotification(Pinetime::Controllers::NotificationManager ¬ificationManager, Pinetime::Controllers::AlertNotificationService* alertService);
|
||||
void Show(const char* msg, const char *btns[]);
|
||||
void Hide();
|
||||
|
||||
bool Refresh() override;
|
||||
bool OnButtonPushed() override;
|
||||
|
||||
static void mbox_event_cb(lv_obj_t *obj, lv_event_t evt);
|
||||
private:
|
||||
void OnEvent(lv_obj_t *event_obj, lv_event_t evt);
|
||||
|
||||
Pinetime::Controllers::AlertNotificationService* alertNotificationService = nullptr;
|
||||
|
||||
std::string positiveButton;
|
||||
std::string negativeButton;
|
||||
|
||||
lv_style_t modal_style;
|
||||
lv_obj_t *obj;
|
||||
lv_obj_t *mbox;
|
||||
lv_obj_t *info;
|
||||
bool running = true;
|
||||
bool isVisible = false;
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
static void event_handler(lv_obj_t *obj, lv_event_t event) {
|
||||
Music *screen = static_cast<Music *>(obj->user_data);
|
||||
screen->OnObjectEvent(obj, event);
|
||||
|
|
|
@ -22,9 +22,6 @@
|
|||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
/**
|
||||
* Set the pixel array to display by the image
|
||||
* This just calls lv_img_set_src but adds type safety
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "Notifications.h"
|
||||
#include <displayapp/DisplayApp.h>
|
||||
#include "components/ble/MusicService.h"
|
||||
#include "components/ble/AlertNotificationService.h"
|
||||
#include "Symbols.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
|
@ -35,14 +36,13 @@ Notifications::Notifications(DisplayApp *app,
|
|||
}
|
||||
|
||||
if(mode == Modes::Preview) {
|
||||
static lv_style_t style_line;
|
||||
lv_style_copy(&style_line, &lv_style_plain);
|
||||
style_line.line.color = LV_COLOR_WHITE;
|
||||
style_line.line.width = 3;
|
||||
style_line.line.rounded = 0;
|
||||
|
||||
timeoutLine = lv_line_create(lv_scr_act(), nullptr);
|
||||
lv_line_set_style(timeoutLine, LV_LINE_STYLE_MAIN, &style_line);
|
||||
|
||||
lv_obj_set_style_local_line_width(timeoutLine, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, 3);
|
||||
lv_obj_set_style_local_line_color(timeoutLine, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
|
||||
lv_obj_set_style_local_line_rounded(timeoutLine, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, true);
|
||||
|
||||
lv_line_set_points(timeoutLine, timeoutLinePoints, 2);
|
||||
timeoutTickCountStart = xTaskGetTickCount();
|
||||
timeoutTickCountEnd = timeoutTickCountStart + (5*1024);
|
||||
|
@ -134,13 +134,13 @@ bool Notifications::OnButtonPushed() {
|
|||
}
|
||||
|
||||
namespace {
|
||||
static void AcceptIncomingCallEventHandler(lv_obj_t *obj, lv_event_t event) {
|
||||
auto* item = static_cast<Notifications::NotificationItem *>(obj->user_data);
|
||||
static void AcceptIncomingCallEventHandler(lv_obj_t* obj, lv_event_t event) {
|
||||
auto* item = static_cast<Notifications::NotificationItem*>(obj->user_data);
|
||||
item->OnAcceptIncomingCall(event);
|
||||
}
|
||||
|
||||
static void MuteIncomingCallEventHandler(lv_obj_t *obj, lv_event_t event) {
|
||||
auto* item = static_cast<Notifications::NotificationItem *>(obj->user_data);
|
||||
static void MuteIncomingCallEventHandler(lv_obj_t* obj, lv_event_t event) {
|
||||
auto* item = static_cast<Notifications::NotificationItem*>(obj->user_data);
|
||||
item->OnMuteIncomingCall(event);
|
||||
}
|
||||
|
||||
|
@ -150,128 +150,101 @@ namespace {
|
|||
}
|
||||
}
|
||||
|
||||
Notifications::NotificationItem::NotificationItem(const char *title,
|
||||
const char *msg,
|
||||
uint8_t notifNr,
|
||||
Controllers::NotificationManager::Categories category,
|
||||
uint8_t notifNb,
|
||||
Modes mode,
|
||||
Pinetime::Controllers::AlertNotificationService& alertNotificationService)
|
||||
: notifNr{notifNr}, notifNb{notifNb}, mode{mode}, alertNotificationService{alertNotificationService} {
|
||||
container1 = lv_cont_create(lv_scr_act(), nullptr);
|
||||
static lv_style_t contStyle;
|
||||
lv_style_copy(&contStyle, lv_cont_get_style(container1, LV_CONT_STYLE_MAIN));
|
||||
contStyle.body.padding.inner = 20;
|
||||
lv_cont_set_style(container1, LV_CONT_STYLE_MAIN, &contStyle);
|
||||
lv_obj_set_width(container1, LV_HOR_RES);
|
||||
lv_obj_set_height(container1, LV_VER_RES);
|
||||
lv_obj_set_pos(container1, 0, 0);
|
||||
lv_cont_set_layout(container1, LV_LAYOUT_OFF);
|
||||
lv_cont_set_fit2(container1, LV_FIT_FLOOD, LV_FIT_FLOOD);
|
||||
Notifications::NotificationItem::NotificationItem(const char *title,
|
||||
const char *msg,
|
||||
uint8_t notifNr,
|
||||
Controllers::NotificationManager::Categories category,
|
||||
uint8_t notifNb,
|
||||
Modes mode,
|
||||
Pinetime::Controllers::AlertNotificationService& alertNotificationService)
|
||||
: notifNr{notifNr}, notifNb{notifNb}, mode{mode}, alertNotificationService{alertNotificationService} {
|
||||
|
||||
t1 = lv_label_create(container1, nullptr);
|
||||
static lv_style_t titleStyle;
|
||||
static lv_style_t textStyle;
|
||||
static lv_style_t bottomStyle;
|
||||
lv_style_copy(&titleStyle, lv_label_get_style(t1, LV_LABEL_STYLE_MAIN));
|
||||
lv_style_copy(&textStyle, lv_label_get_style(t1, LV_LABEL_STYLE_MAIN));
|
||||
lv_style_copy(&bottomStyle, lv_label_get_style(t1, LV_LABEL_STYLE_MAIN));
|
||||
titleStyle.body.padding.inner = 5;
|
||||
titleStyle.body.grad_color = LV_COLOR_GRAY;
|
||||
titleStyle.body.main_color = LV_COLOR_GRAY;
|
||||
titleStyle.body.radius = 20;
|
||||
textStyle.body.border.part = LV_BORDER_NONE;
|
||||
textStyle.body.padding.inner = 5;
|
||||
lv_obj_t* container1 = lv_cont_create(lv_scr_act(), NULL);
|
||||
|
||||
bottomStyle.body.main_color = LV_COLOR_GREEN;
|
||||
bottomStyle.body.grad_color = LV_COLOR_GREEN;
|
||||
bottomStyle.body.border.part = LV_BORDER_TOP;
|
||||
bottomStyle.body.border.color = LV_COLOR_RED;
|
||||
lv_obj_set_style_local_bg_color(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x222222));
|
||||
lv_obj_set_style_local_pad_all(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 10);
|
||||
lv_obj_set_style_local_pad_inner(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 5);
|
||||
lv_obj_set_style_local_border_width(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0);
|
||||
|
||||
lv_label_set_style(t1, LV_LABEL_STYLE_MAIN, &titleStyle);
|
||||
lv_label_set_long_mode(t1, LV_LABEL_LONG_BREAK);
|
||||
lv_label_set_body_draw(t1, true);
|
||||
lv_obj_set_width(t1, LV_HOR_RES - (titleStyle.body.padding.left + titleStyle.body.padding.right));
|
||||
lv_label_set_text(t1, title);
|
||||
static constexpr int16_t offscreenOffset = -20 ;
|
||||
lv_obj_set_pos(t1, titleStyle.body.padding.left, offscreenOffset);
|
||||
lv_obj_set_pos(container1, 0, 50);
|
||||
lv_obj_set_width(container1, 240);
|
||||
lv_obj_set_height(container1, 190);
|
||||
|
||||
auto titleHeight = lv_obj_get_height(t1);
|
||||
lv_cont_set_layout(container1, LV_LAYOUT_COLUMN_LEFT);
|
||||
|
||||
lv_obj_t* alert_count = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_label_set_text_fmt(alert_count, "%i/%i", notifNr, notifNb);
|
||||
lv_obj_align(alert_count, NULL, LV_ALIGN_IN_TOP_RIGHT, 0, 16);
|
||||
|
||||
lv_obj_t* alert_type = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_obj_set_style_local_text_color(alert_type, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x888888));
|
||||
lv_label_set_text(alert_type, title);
|
||||
lv_obj_align(alert_type, NULL, LV_ALIGN_IN_TOP_LEFT, 0, -4);
|
||||
|
||||
/////////
|
||||
switch(category) {
|
||||
default: {
|
||||
l1 = lv_label_create(container1, nullptr);
|
||||
lv_label_set_style(l1, LV_LABEL_STYLE_MAIN, &textStyle);
|
||||
lv_obj_set_pos(l1, textStyle.body.padding.left,
|
||||
titleHeight + offscreenOffset + textStyle.body.padding.bottom +
|
||||
textStyle.body.padding.top);
|
||||
|
||||
lv_label_set_long_mode(l1, LV_LABEL_LONG_BREAK);
|
||||
lv_label_set_body_draw(l1, true);
|
||||
lv_obj_set_width(l1, LV_HOR_RES - (textStyle.body.padding.left + textStyle.body.padding.right));
|
||||
lv_label_set_text(l1, msg);
|
||||
lv_obj_t* alert_subject = lv_label_create(container1, nullptr);
|
||||
lv_obj_set_style_local_text_color(alert_subject, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE);
|
||||
lv_label_set_long_mode(alert_subject, LV_LABEL_LONG_BREAK);
|
||||
lv_obj_set_width(alert_subject, LV_HOR_RES - 20);
|
||||
lv_label_set_text(alert_subject, msg);
|
||||
}
|
||||
break;
|
||||
case Controllers::NotificationManager::Categories::IncomingCall: {
|
||||
l1 = lv_label_create(container1, nullptr);
|
||||
lv_label_set_style(l1, LV_LABEL_STYLE_MAIN, &textStyle);
|
||||
lv_obj_set_pos(l1, textStyle.body.padding.left,
|
||||
titleHeight + offscreenOffset + textStyle.body.padding.bottom +
|
||||
textStyle.body.padding.top);
|
||||
lv_obj_t* alert_subject = lv_label_create(container1, nullptr);
|
||||
lv_obj_set_style_local_text_color(alert_subject, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE);
|
||||
lv_label_set_long_mode(alert_subject, LV_LABEL_LONG_BREAK);
|
||||
lv_obj_set_width(alert_subject, LV_HOR_RES - 20);
|
||||
lv_label_set_text(alert_subject, "Incoming call from");
|
||||
|
||||
lv_label_set_long_mode(l1, LV_LABEL_LONG_BREAK);
|
||||
lv_label_set_body_draw(l1, true);
|
||||
lv_obj_set_width(l1, LV_HOR_RES - (textStyle.body.padding.left + textStyle.body.padding.right));
|
||||
lv_label_set_text(l1, "Incoming call from ");
|
||||
auto l1Height = lv_obj_get_height(l1);
|
||||
lv_obj_t* alert_caller = lv_label_create(container1, nullptr);
|
||||
lv_obj_align(alert_caller, alert_subject, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 0);
|
||||
lv_label_set_long_mode(alert_caller, LV_LABEL_LONG_BREAK);
|
||||
lv_obj_set_width(alert_caller, LV_HOR_RES - 20);
|
||||
lv_label_set_text(alert_caller, msg);
|
||||
|
||||
l2 = lv_label_create(container1, nullptr);
|
||||
lv_label_set_style(l2, LV_LABEL_STYLE_MAIN, &textStyle);
|
||||
lv_obj_set_pos(l2, textStyle.body.padding.left,
|
||||
titleHeight + l1Height + offscreenOffset + (textStyle.body.padding.bottom*2) +
|
||||
(textStyle.body.padding.top*2));
|
||||
lv_label_set_long_mode(l2, LV_LABEL_LONG_BREAK);
|
||||
lv_label_set_body_draw(l2, true);
|
||||
lv_obj_set_width(l2, LV_HOR_RES - (textStyle.body.padding.left + textStyle.body.padding.right));
|
||||
lv_label_set_text(l2, msg);
|
||||
lv_obj_t* callBtnContainer = lv_cont_create(container1, NULL);
|
||||
lv_obj_set_width(callBtnContainer, 240);
|
||||
lv_obj_set_height(callBtnContainer, 90);
|
||||
lv_cont_set_layout(callBtnContainer, LV_LAYOUT_ROW_MID);
|
||||
|
||||
bt_accept = lv_btn_create(container1, nullptr);
|
||||
lv_obj_set_style_local_bg_color(callBtnContainer, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x222222));
|
||||
lv_obj_set_style_local_pad_all(callBtnContainer, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0);
|
||||
lv_obj_set_style_local_margin_top(callBtnContainer, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 40);
|
||||
lv_obj_set_style_local_margin_left(callBtnContainer, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, -8);
|
||||
lv_obj_set_style_local_pad_inner(callBtnContainer, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 5);
|
||||
lv_obj_set_style_local_border_width(callBtnContainer, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0);
|
||||
|
||||
bt_accept = lv_btn_create(callBtnContainer, nullptr);
|
||||
bt_accept->user_data = this;
|
||||
lv_obj_set_event_cb(bt_accept, AcceptIncomingCallEventHandler);
|
||||
lv_obj_set_size(bt_accept, LV_HOR_RES / 3, 80);
|
||||
lv_obj_align(bt_accept, lv_scr_act(), LV_ALIGN_IN_BOTTOM_LEFT, 0, -20);
|
||||
lv_obj_set_size(bt_accept, (LV_HOR_RES / 3) - 5, 80);
|
||||
label_accept = lv_label_create(bt_accept, nullptr);
|
||||
lv_label_set_text(label_accept, Symbols::phone);
|
||||
|
||||
bt_reject = lv_btn_create(container1, nullptr);
|
||||
bt_reject = lv_btn_create(callBtnContainer, nullptr);
|
||||
bt_reject->user_data = this;
|
||||
lv_obj_set_event_cb(bt_reject, RejectIncomingCallEventHandler);
|
||||
lv_obj_set_size(bt_reject, LV_HOR_RES / 3, 80);
|
||||
lv_obj_align(bt_reject, lv_scr_act(), LV_ALIGN_IN_BOTTOM_RIGHT, 0, -20);
|
||||
lv_obj_set_size(bt_reject, (LV_HOR_RES / 3) - 5, 80);
|
||||
label_reject = lv_label_create(bt_reject, nullptr);
|
||||
lv_label_set_text(label_reject, Symbols::phoneSlash);
|
||||
|
||||
bt_mute = lv_btn_create(container1, nullptr);
|
||||
bt_mute = lv_btn_create(callBtnContainer, nullptr);
|
||||
bt_mute->user_data = this;
|
||||
lv_obj_set_event_cb(bt_mute, MuteIncomingCallEventHandler);
|
||||
lv_obj_set_size(bt_mute, LV_HOR_RES / 3, 80);
|
||||
lv_obj_align(bt_mute, lv_scr_act(), LV_ALIGN_IN_BOTTOM_MID, 0, -20);
|
||||
lv_obj_set_size(bt_mute, (LV_HOR_RES / 3) - 5, 80);
|
||||
label_mute = lv_label_create(bt_mute, nullptr);
|
||||
lv_label_set_text(label_mute, Symbols::volumMute);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(mode == Modes::Normal) {
|
||||
if(notifNr < notifNb) {
|
||||
bottomPlaceholder = lv_label_create(container1, nullptr);
|
||||
lv_label_set_style(bottomPlaceholder, LV_LABEL_STYLE_MAIN, &titleStyle);
|
||||
lv_label_set_long_mode(bottomPlaceholder, LV_LABEL_LONG_BREAK);
|
||||
lv_label_set_body_draw(bottomPlaceholder, true);
|
||||
lv_obj_set_width(bottomPlaceholder, LV_HOR_RES - (titleStyle.body.padding.left + titleStyle.body.padding.right));
|
||||
lv_label_set_text(bottomPlaceholder, " ");
|
||||
lv_obj_set_pos(bottomPlaceholder, titleStyle.body.padding.left, LV_VER_RES - 5);
|
||||
}
|
||||
}
|
||||
lv_obj_t* backgroundLabel = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP);
|
||||
lv_obj_set_size(backgroundLabel, 240, 240);
|
||||
lv_obj_set_pos(backgroundLabel, 0, 0);
|
||||
lv_label_set_text(backgroundLabel, "");
|
||||
}
|
||||
|
||||
void Notifications::NotificationItem::OnAcceptIncomingCall(lv_event_t event) {
|
||||
|
|
|
@ -68,7 +68,7 @@ namespace Pinetime {
|
|||
Controllers::NotificationManager::Notification::Id currentId;
|
||||
bool validDisplay = false;
|
||||
|
||||
lv_point_t timeoutLinePoints[2] { {0, 237}, {239, 237} };
|
||||
lv_point_t timeoutLinePoints[2] { {0, 1}, {239, 1} };
|
||||
lv_obj_t* timeoutLine;
|
||||
uint32_t timeoutTickCountStart;
|
||||
uint32_t timeoutTickCountEnd;
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
#include "../LittleVgl.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
extern lv_font_t jetbrains_mono_extrabold_compressed;
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
namespace{
|
||||
const uint8_t paddle_map[] = {
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
static void event_handler(lv_obj_t * obj, lv_event_t event) {
|
||||
Tile* screen = static_cast<Tile *>(obj->user_data);
|
||||
uint32_t* eventDataPtr = (uint32_t*) lv_event_get_data();
|
||||
|
@ -23,8 +21,8 @@ Tile::Tile(DisplayApp* app, std::array<Applications, 6>& applications) : Screen(
|
|||
}
|
||||
}
|
||||
|
||||
btnm1 = lv_btnm_create(lv_scr_act(), nullptr);
|
||||
lv_btnm_set_map(btnm1, btnm_map1);
|
||||
btnm1 = lv_btnmatrix_create(lv_scr_act(), nullptr);
|
||||
lv_btnmatrix_set_map(btnm1, btnm_map1);
|
||||
lv_obj_set_size(btnm1, LV_HOR_RES, LV_VER_RES);
|
||||
|
||||
btnm1->user_data = this;
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
#include <lvgl/lvgl.h>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include "Modal.h"
|
||||
#include "Screen.h"
|
||||
#include "../Apps.h"
|
||||
|
||||
|
|
|
@ -8,43 +8,50 @@
|
|||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
|
||||
extern lv_font_t jetbrains_mono_bold_20;
|
||||
|
||||
Twos::Twos(Pinetime::Applications::DisplayApp *app) : Screen(app) {
|
||||
|
||||
// create styles to apply to different valued tiles
|
||||
static lv_style_t style_cell1;
|
||||
lv_style_copy(&style_cell1, &lv_style_plain);
|
||||
style_cell1.body.border.width = 1;
|
||||
style_cell1.text.font = &jetbrains_mono_bold_20;
|
||||
style_cell1.body.padding.top = 16;
|
||||
style_cell1.body.padding.bottom = 16;
|
||||
style_cell1.body.main_color = LV_COLOR_MAKE(214, 197, 165);
|
||||
style_cell1.body.grad_color = LV_COLOR_MAKE(214, 197, 165);
|
||||
style_cell1.text.color = LV_COLOR_BLACK;
|
||||
lv_style_init(&style_cell1);
|
||||
lv_style_init(&style_cell2);
|
||||
lv_style_init(&style_cell3);
|
||||
lv_style_init(&style_cell4);
|
||||
lv_style_init(&style_cell5);
|
||||
|
||||
static lv_style_t style_cell2;
|
||||
lv_style_copy(&style_cell2, &style_cell1);
|
||||
style_cell2.body.main_color = LV_COLOR_MAKE(209, 146, 92);
|
||||
style_cell2.body.grad_color = LV_COLOR_MAKE(209, 146, 92);
|
||||
style_cell2.text.color = LV_COLOR_WHITE;
|
||||
lv_style_set_border_color(&style_cell1, LV_STATE_DEFAULT, lv_color_hex(0xbbada0));
|
||||
lv_style_set_border_width(&style_cell1, LV_STATE_DEFAULT, 3);
|
||||
lv_style_set_bg_opa(&style_cell1, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_cell1, LV_STATE_DEFAULT, lv_color_hex(0xcdc0b4));
|
||||
|
||||
static lv_style_t style_cell3;
|
||||
lv_style_copy(&style_cell3, &style_cell2);
|
||||
style_cell3.body.main_color = LV_COLOR_MAKE(246, 94, 59);
|
||||
style_cell3.body.grad_color = LV_COLOR_MAKE(246, 94, 59);
|
||||
lv_style_set_border_color(&style_cell2, LV_STATE_DEFAULT, lv_color_hex(0xbbada0));
|
||||
lv_style_set_border_width(&style_cell2, LV_STATE_DEFAULT, 3);
|
||||
lv_style_set_bg_opa(&style_cell2, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_cell2, LV_STATE_DEFAULT, lv_color_hex(0xefdfc6));
|
||||
|
||||
static lv_style_t style_cell4;
|
||||
lv_style_copy(&style_cell4, &style_cell3);
|
||||
style_cell4.body.main_color = LV_COLOR_MAKE(212, 170, 28);
|
||||
style_cell4.body.grad_color = LV_COLOR_MAKE(212, 170, 28);
|
||||
lv_style_set_border_color(&style_cell3, LV_STATE_DEFAULT, lv_color_hex(0xbbada0));
|
||||
lv_style_set_border_width(&style_cell3, LV_STATE_DEFAULT, 3);
|
||||
lv_style_set_bg_opa(&style_cell3, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_cell3, LV_STATE_DEFAULT, lv_color_hex(0xef9263));
|
||||
|
||||
lv_style_set_border_color(&style_cell4, LV_STATE_DEFAULT, lv_color_hex(0xbbada0));
|
||||
lv_style_set_border_width(&style_cell4, LV_STATE_DEFAULT, 3);
|
||||
lv_style_set_bg_opa(&style_cell4, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_cell4, LV_STATE_DEFAULT, lv_color_hex(0xf76142));
|
||||
//lv_style_set_text_color(&style_cell4, LV_STATE_DEFAULT, LV_COLOR_WHITE);
|
||||
|
||||
lv_style_set_border_color(&style_cell5, LV_STATE_DEFAULT, lv_color_hex(0xbbada0));
|
||||
lv_style_set_border_width(&style_cell5, LV_STATE_DEFAULT, 3);
|
||||
lv_style_set_bg_opa(&style_cell5, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&style_cell5, LV_STATE_DEFAULT, lv_color_hex(0x007dc5));
|
||||
//lv_style_set_text_color(&style_cell5, LV_STATE_DEFAULT, LV_COLOR_WHITE);
|
||||
|
||||
// format grid display
|
||||
gridDisplay = lv_table_create(lv_scr_act(), nullptr);
|
||||
lv_table_set_style(gridDisplay, LV_TABLE_STYLE_CELL1, &style_cell1);
|
||||
lv_table_set_style(gridDisplay, LV_TABLE_STYLE_CELL2, &style_cell2);
|
||||
lv_table_set_style(gridDisplay, LV_TABLE_STYLE_CELL3, &style_cell3);
|
||||
lv_table_set_style(gridDisplay, LV_TABLE_STYLE_CELL4, &style_cell4);
|
||||
|
||||
gridDisplay = lv_table_create(lv_scr_act(), nullptr);
|
||||
lv_obj_add_style(gridDisplay, LV_TABLE_PART_CELL1, &style_cell1);
|
||||
lv_obj_add_style(gridDisplay, LV_TABLE_PART_CELL2, &style_cell2);
|
||||
lv_obj_add_style(gridDisplay, LV_TABLE_PART_CELL3, &style_cell3);
|
||||
lv_obj_add_style(gridDisplay, LV_TABLE_PART_CELL4, &style_cell4);
|
||||
lv_obj_add_style(gridDisplay, LV_TABLE_PART_CELL4 + 1, &style_cell5);
|
||||
lv_table_set_col_cnt(gridDisplay, 4);
|
||||
lv_table_set_row_cnt(gridDisplay, 4);
|
||||
lv_table_set_col_width(gridDisplay, 0, LV_HOR_RES/4);
|
||||
|
@ -53,11 +60,13 @@ Twos::Twos(Pinetime::Applications::DisplayApp *app) : Screen(app) {
|
|||
lv_table_set_col_width(gridDisplay, 3, LV_HOR_RES/4);
|
||||
lv_obj_align(gridDisplay, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
|
||||
|
||||
lv_obj_clean_style_list(gridDisplay, LV_TABLE_PART_BG);
|
||||
|
||||
// initialize grid
|
||||
for(int row = 0; row < 4; row++) {
|
||||
for(int col = 0; col < 4; col++) {
|
||||
grid[row][col].value = 0;
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 2);
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 1);
|
||||
lv_table_set_cell_align(gridDisplay, row, col, LV_LABEL_ALIGN_CENTER);
|
||||
}
|
||||
}
|
||||
|
@ -68,11 +77,23 @@ Twos::Twos(Pinetime::Applications::DisplayApp *app) : Screen(app) {
|
|||
scoreText = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_obj_set_width(scoreText, LV_HOR_RES);
|
||||
lv_label_set_align(scoreText, LV_ALIGN_IN_LEFT_MID);
|
||||
lv_obj_align(scoreText, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 0);
|
||||
lv_label_set_text(scoreText, ("Score: " + std::to_string(score)).c_str());
|
||||
lv_obj_align(scoreText, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 10);
|
||||
lv_label_set_recolor(scoreText, true);
|
||||
lv_label_set_text_fmt(scoreText, "Score #FFFF00 %i#", score);
|
||||
|
||||
lv_obj_t * backgroundLabel = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP);
|
||||
lv_obj_set_size(backgroundLabel, 240, 240);
|
||||
lv_obj_set_pos(backgroundLabel, 0, 0);
|
||||
lv_label_set_text(backgroundLabel, "");
|
||||
}
|
||||
|
||||
Twos::~Twos() {
|
||||
lv_style_reset(&style_cell1);
|
||||
lv_style_reset(&style_cell2);
|
||||
lv_style_reset(&style_cell3);
|
||||
lv_style_reset(&style_cell4);
|
||||
lv_style_reset(&style_cell5);
|
||||
lv_obj_clean(lv_scr_act());
|
||||
}
|
||||
|
||||
|
@ -117,7 +138,7 @@ bool Twos::tryMerge(Tile grid[][4], int &newRow, int &newCol, int oldRow, int ol
|
|||
unsigned int newVal = grid[oldRow][oldCol].value *= 2;
|
||||
grid[newRow][newCol].value = newVal;
|
||||
score += newVal;
|
||||
lv_label_set_text(scoreText, ("Score: " + std::to_string(score)).c_str());
|
||||
lv_label_set_text_fmt(scoreText, "Score #FFFF00 %i#", score);
|
||||
grid[oldRow][oldCol].value = 0;
|
||||
grid[newRow][newCol].merged = true;
|
||||
return true;
|
||||
|
@ -250,20 +271,22 @@ void Twos::updateGridDisplay(Tile grid[][4]) {
|
|||
}
|
||||
switch (grid[row][col].value) {
|
||||
case 0:
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 1);
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 1);
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 2);
|
||||
break;
|
||||
case 8:
|
||||
case 16:
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 2);
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 3);
|
||||
break;
|
||||
case 32:
|
||||
case 64:
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 3);
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 4);
|
||||
break;
|
||||
default:
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 4);
|
||||
lv_table_set_cell_type(gridDisplay, row, col, 5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,13 @@ namespace Pinetime {
|
|||
bool OnTouchEvent(TouchEvents event) override;
|
||||
|
||||
private:
|
||||
|
||||
lv_style_t style_cell1;
|
||||
lv_style_t style_cell2;
|
||||
lv_style_t style_cell3;
|
||||
lv_style_t style_cell4;
|
||||
lv_style_t style_cell5;
|
||||
|
||||
bool running = true;
|
||||
lv_obj_t *scoreText;
|
||||
lv_obj_t *gridDisplay;
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
/**
|
||||
* @file lv_conf.h
|
||||
*
|
||||
* Configuration file for v7.7.0-dev
|
||||
*/
|
||||
|
||||
#if 1 /*Set it to "1" to enable content*/
|
||||
|
||||
#ifndef LV_CONF_H
|
||||
#define LV_CONF_H
|
||||
/* clang-format off */
|
||||
|
@ -21,7 +19,7 @@
|
|||
|
||||
/* Color depth:
|
||||
* - 1: 1 byte per pixel
|
||||
* - 8: RGB233
|
||||
* - 8: RGB332
|
||||
* - 16: RGB565
|
||||
* - 32: ARGB8888
|
||||
*/
|
||||
|
@ -37,10 +35,7 @@
|
|||
#define LV_COLOR_SCREEN_TRANSP 0
|
||||
|
||||
/*Images pixels with this color will not be drawn (with chroma keying)*/
|
||||
#define LV_COLOR_TRANSP LV_COLOR_MAKE(0x6c, 0xFc, 0x6a)/*LV_COLOR_LIME*/ /*LV_COLOR_LIME: pure green*/
|
||||
|
||||
/* Enable chroma keying for indexed images. */
|
||||
#define LV_INDEXED_CHROMA 1
|
||||
#define LV_COLOR_TRANSP LV_COLOR_MAKE(0x6c, 0xFc, 0x6a) /*LV_COLOR_LIME: pure green*/
|
||||
|
||||
/* Enable anti-aliasing (lines, and radiuses will be smoothed) */
|
||||
#define LV_ANTIALIAS 1
|
||||
|
@ -54,6 +49,17 @@
|
|||
* (Not so important, you can adjust it to modify default sizes and spaces)*/
|
||||
#define LV_DPI 100 /*[px]*/
|
||||
|
||||
/* The the real width of the display changes some default values:
|
||||
* default object sizes, layout of examples, etc.
|
||||
* According to the width of the display (hor. res. / dpi)
|
||||
* the displays fall in 4 categories.
|
||||
* The 4th is extra large which has no upper limit so not listed here
|
||||
* The upper limit of the categories are set below in 0.1 inch unit.
|
||||
*/
|
||||
#define LV_DISP_SMALL_LIMIT 30
|
||||
#define LV_DISP_MEDIUM_LIMIT 50
|
||||
#define LV_DISP_LARGE_LIMIT 70
|
||||
|
||||
/* Type of coordinates. Should be `int16_t` (or `int32_t` for extreme cases) */
|
||||
typedef int16_t lv_coord_t;
|
||||
|
||||
|
@ -68,30 +74,34 @@ typedef int16_t lv_coord_t;
|
|||
#define LV_MEM_CUSTOM 0
|
||||
#if LV_MEM_CUSTOM == 0
|
||||
/* Size of the memory used by `lv_mem_alloc` in bytes (>= 2kB)*/
|
||||
# define LV_MEM_SIZE (4U * 1024U)
|
||||
#define LV_MEM_SIZE (12U * 1024U)
|
||||
|
||||
/* Complier prefix for a big array declaration */
|
||||
# define LV_MEM_ATTR
|
||||
#define LV_MEM_ATTR
|
||||
|
||||
/* Set an address for the memory pool instead of allocating it as an array.
|
||||
* Can be in external SRAM too. */
|
||||
# define LV_MEM_ADR 0
|
||||
#define LV_MEM_ADR 0
|
||||
|
||||
/* Automatically defrag. on free. Defrag. means joining the adjacent free cells. */
|
||||
# define LV_MEM_AUTO_DEFRAG 1
|
||||
#define LV_MEM_AUTO_DEFRAG 1
|
||||
#else /*LV_MEM_CUSTOM*/
|
||||
# define LV_MEM_CUSTOM_INCLUDE <stdlib.h> /*Header for the dynamic memory function*/
|
||||
# define LV_MEM_CUSTOM_ALLOC malloc /*Wrapper to malloc*/
|
||||
# define LV_MEM_CUSTOM_FREE free /*Wrapper to free*/
|
||||
#define LV_MEM_CUSTOM_INCLUDE <stdlib.h> /*Header for the dynamic memory function*/
|
||||
#define LV_MEM_CUSTOM_ALLOC malloc /*Wrapper to malloc*/
|
||||
#define LV_MEM_CUSTOM_FREE free /*Wrapper to free*/
|
||||
#endif /*LV_MEM_CUSTOM*/
|
||||
|
||||
/* Use the standard memcpy and memset instead of LVGL's own functions.
|
||||
* The standard functions might or might not be faster depending on their implementation. */
|
||||
#define LV_MEMCPY_MEMSET_STD 1
|
||||
|
||||
/* Garbage Collector settings
|
||||
* Used if lvgl is binded to higher level language and the memory is managed by that language */
|
||||
#define LV_ENABLE_GC 0
|
||||
#if LV_ENABLE_GC != 0
|
||||
# define LV_GC_INCLUDE "gc.h" /*Include Garbage Collector related things*/
|
||||
# define LV_MEM_CUSTOM_REALLOC your_realloc /*Wrapper to realloc*/
|
||||
# define LV_MEM_CUSTOM_GET_SIZE your_mem_get_size /*Wrapper to lv_mem_get_size*/
|
||||
#define LV_GC_INCLUDE "gc.h" /*Include Garbage Collector related things*/
|
||||
#define LV_MEM_CUSTOM_REALLOC your_realloc /*Wrapper to realloc*/
|
||||
#define LV_MEM_CUSTOM_GET_SIZE your_mem_get_size /*Wrapper to lv_mem_get_size*/
|
||||
#endif /* LV_ENABLE_GC */
|
||||
|
||||
/*=======================
|
||||
|
@ -118,32 +128,82 @@ typedef int16_t lv_coord_t;
|
|||
* Time between `LV_EVENT_LONG_PRESSED_REPEAT */
|
||||
#define LV_INDEV_DEF_LONG_PRESS_REP_TIME 100
|
||||
|
||||
|
||||
/* Gesture threshold in pixels */
|
||||
#define LV_INDEV_DEF_GESTURE_LIMIT 50
|
||||
|
||||
/* Gesture min velocity at release before swipe (pixels)*/
|
||||
#define LV_INDEV_DEF_GESTURE_MIN_VELOCITY 3
|
||||
|
||||
/*==================
|
||||
* Feature usage
|
||||
*==================*/
|
||||
|
||||
/*1: Enable the Animations */
|
||||
#define LV_USE_ANIMATION 1
|
||||
#define LV_USE_ANIMATION 0
|
||||
#if LV_USE_ANIMATION
|
||||
|
||||
/*Declare the type of the user data of animations (can be e.g. `void *`, `int`, `struct`)*/
|
||||
typedef void * lv_anim_user_data_t;
|
||||
typedef void* lv_anim_user_data_t;
|
||||
|
||||
#endif
|
||||
|
||||
/* 1: Enable shadow drawing*/
|
||||
/* 1: Enable shadow drawing on rectangles*/
|
||||
#define LV_USE_SHADOW 0
|
||||
#if LV_USE_SHADOW
|
||||
/* Allow buffering some shadow calculation
|
||||
* LV_SHADOW_CACHE_SIZE is the max. shadow size to buffer,
|
||||
* where shadow size is `shadow_width + radius`
|
||||
* Caching has LV_SHADOW_CACHE_SIZE^2 RAM cost*/
|
||||
#define LV_SHADOW_CACHE_SIZE 0
|
||||
#endif
|
||||
|
||||
/*1: enable outline drawing on rectangles*/
|
||||
#define LV_USE_OUTLINE 0
|
||||
|
||||
/*1: enable pattern drawing on rectangles*/
|
||||
#define LV_USE_PATTERN 0
|
||||
|
||||
/*1: enable value string drawing on rectangles*/
|
||||
#define LV_USE_VALUE_STR 1
|
||||
|
||||
/* 1: Use other blend modes than normal (`LV_BLEND_MODE_...`)*/
|
||||
#define LV_USE_BLEND_MODES 0
|
||||
|
||||
/* 1: Use the `opa_scale` style property to set the opacity of an object and its children at once*/
|
||||
#define LV_USE_OPA_SCALE 0
|
||||
|
||||
/* 1: Use image zoom and rotation*/
|
||||
#define LV_USE_IMG_TRANSFORM 0
|
||||
|
||||
/* 1: Enable object groups (for keyboard/encoder navigation) */
|
||||
#define LV_USE_GROUP 0
|
||||
#define LV_USE_GROUP 1
|
||||
#if LV_USE_GROUP
|
||||
typedef void * lv_group_user_data_t;
|
||||
typedef void* lv_group_user_data_t;
|
||||
#endif /*LV_USE_GROUP*/
|
||||
|
||||
/* 1: Enable GPU interface*/
|
||||
#define LV_USE_GPU 0
|
||||
#define LV_USE_GPU 0 /*Only enables `gpu_fill_cb` and `gpu_blend_cb` in the disp. drv- */
|
||||
#define LV_USE_GPU_STM32_DMA2D 0
|
||||
/*If enabling LV_USE_GPU_STM32_DMA2D, LV_GPU_DMA2D_CMSIS_INCLUDE must be defined to include path of CMSIS header of target processor
|
||||
e.g. "stm32f769xx.h" or "stm32f429xx.h" */
|
||||
#define LV_GPU_DMA2D_CMSIS_INCLUDE
|
||||
|
||||
/*1: Use PXP for CPU off-load on NXP RTxxx platforms */
|
||||
#define LV_USE_GPU_NXP_PXP 0
|
||||
|
||||
/*1: Add default bare metal and FreeRTOS interrupt handling routines for PXP (lv_gpu_nxp_pxp_osa.c)
|
||||
* and call lv_gpu_nxp_pxp_init() automatically during lv_init(). Note that symbol FSL_RTOS_FREE_RTOS
|
||||
* has to be defined in order to use FreeRTOS OSA, otherwise bare-metal implementation is selected.
|
||||
*0: lv_gpu_nxp_pxp_init() has to be called manually before lv_init()
|
||||
* */
|
||||
#define LV_USE_GPU_NXP_PXP_AUTO_INIT 0
|
||||
|
||||
/*1: Use VG-Lite for CPU offload on NXP RTxxx platforms */
|
||||
#define LV_USE_GPU_NXP_VG_LITE 0
|
||||
|
||||
/* 1: Enable file system (might be required for images */
|
||||
// TODO: Enable FS
|
||||
#define LV_USE_FILESYSTEM 0
|
||||
#if LV_USE_FILESYSTEM
|
||||
/*Declare the type of the user data of file system drivers (can be e.g. `void *`, `int`, `struct`)*/
|
||||
|
@ -153,6 +213,13 @@ typedef void * lv_fs_drv_user_data_t;
|
|||
/*1: Add a `user_data` to drivers and objects*/
|
||||
#define LV_USE_USER_DATA 1
|
||||
|
||||
/*1: Show CPU usage and FPS count in the right bottom corner*/
|
||||
#define LV_USE_PERF_MONITOR 0
|
||||
|
||||
/*1: Use the functions and types from the older API if possible */
|
||||
#define LV_USE_API_EXTENSION_V6 0
|
||||
#define LV_USE_API_EXTENSION_V7 1
|
||||
|
||||
/*========================
|
||||
* Image decoder and cache
|
||||
*========================*/
|
||||
|
@ -161,7 +228,7 @@ typedef void * lv_fs_drv_user_data_t;
|
|||
#define LV_IMG_CF_INDEXED 1
|
||||
|
||||
/* 1: Enable alpha indexed images */
|
||||
#define LV_IMG_CF_ALPHA 1
|
||||
#define LV_IMG_CF_ALPHA 0
|
||||
|
||||
/* Default image cache size. Image caching keeps the images opened.
|
||||
* If only the built-in image formats are used there is no real advantage of caching.
|
||||
|
@ -172,26 +239,42 @@ typedef void * lv_fs_drv_user_data_t;
|
|||
#define LV_IMG_CACHE_DEF_SIZE 1
|
||||
|
||||
/*Declare the type of the user data of image decoder (can be e.g. `void *`, `int`, `struct`)*/
|
||||
typedef void * lv_img_decoder_user_data_t;
|
||||
typedef void* lv_img_decoder_user_data_t;
|
||||
|
||||
/*=====================
|
||||
* Compiler settings
|
||||
*====================*/
|
||||
|
||||
/* For big endian systems set to 1 */
|
||||
#define LV_BIG_ENDIAN_SYSTEM 0
|
||||
|
||||
/* Define a custom attribute to `lv_tick_inc` function */
|
||||
#define LV_ATTRIBUTE_TICK_INC
|
||||
|
||||
/* Define a custom attribute to `lv_task_handler` function */
|
||||
#define LV_ATTRIBUTE_TASK_HANDLER
|
||||
|
||||
/* Define a custom attribute to `lv_disp_flush_ready` function */
|
||||
#define LV_ATTRIBUTE_FLUSH_READY
|
||||
|
||||
/* Required alignment size for buffers */
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN_SIZE
|
||||
|
||||
/* With size optimization (-Os) the compiler might not align data to
|
||||
* 4 or 8 byte boundary. This alignment will be explicitly applied where needed.
|
||||
* E.g. __attribute__((aligned(4))) */
|
||||
* 4 or 8 byte boundary. Some HW may need even 32 or 64 bytes.
|
||||
* This alignment will be explicitly applied where needed.
|
||||
* LV_ATTRIBUTE_MEM_ALIGN_SIZE should be used to specify required align size.
|
||||
* E.g. __attribute__((aligned(LV_ATTRIBUTE_MEM_ALIGN_SIZE))) */
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
||||
|
||||
/* Attribute to mark large constant arrays for example
|
||||
* font's bitmaps */
|
||||
#define LV_ATTRIBUTE_LARGE_CONST
|
||||
|
||||
/* Prefix performance critical functions to place them into a faster memory (e.g RAM)
|
||||
* Uses 15-20 kB extra memory */
|
||||
//#define LV_ATTRIBUTE_FAST_MEM
|
||||
|
||||
/* Export integer constant to binding.
|
||||
* This macro is used with constants in the form of LV_<CONST> that
|
||||
* should also appear on lvgl binding API such as Micropython
|
||||
|
@ -200,6 +283,10 @@ typedef void * lv_img_decoder_user_data_t;
|
|||
*/
|
||||
#define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning
|
||||
|
||||
/* Prefix variables that are used in GPU accelerated operations, often these need to be
|
||||
* placed in RAM sections that are DMA accessible */
|
||||
// #define LV_ATTRIBUTE_DMA
|
||||
|
||||
/*===================
|
||||
* HAL settings
|
||||
*==================*/
|
||||
|
@ -208,12 +295,12 @@ typedef void * lv_img_decoder_user_data_t;
|
|||
* It removes the need to manually update the tick with `lv_tick_inc`) */
|
||||
#define LV_TICK_CUSTOM 0
|
||||
#if LV_TICK_CUSTOM == 1
|
||||
#define LV_TICK_CUSTOM_INCLUDE "something.h" /*Header for the sys time function*/
|
||||
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current systime in ms*/
|
||||
#define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/
|
||||
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/
|
||||
#endif /*LV_TICK_CUSTOM*/
|
||||
|
||||
typedef void * lv_disp_drv_user_data_t; /*Type of user data in the display driver*/
|
||||
typedef void * lv_indev_drv_user_data_t; /*Type of user data in the input device driver*/
|
||||
typedef void* lv_disp_drv_user_data_t; /*Type of user data in the display driver*/
|
||||
typedef void* lv_indev_drv_user_data_t; /*Type of user data in the input device driver*/
|
||||
|
||||
/*================
|
||||
* Log settings
|
||||
|
@ -229,11 +316,11 @@ typedef void * lv_indev_drv_user_data_t; /*Type of user data in the i
|
|||
* LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail
|
||||
* LV_LOG_LEVEL_NONE Do not log anything
|
||||
*/
|
||||
# define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
|
||||
#define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
|
||||
|
||||
/* 1: Print the log with 'printf';
|
||||
* 0: user need to register a callback with `lv_log_register_print_cb`*/
|
||||
# define LV_LOG_PRINTF 0
|
||||
#define LV_LOG_PRINTF 0
|
||||
#endif /*LV_USE_LOG*/
|
||||
|
||||
/*=================
|
||||
|
@ -258,6 +345,9 @@ typedef void * lv_indev_drv_user_data_t; /*Type of user data in the i
|
|||
/*Checks is the memory is successfully allocated or no. (Quite fast)*/
|
||||
#define LV_USE_ASSERT_MEM 1
|
||||
|
||||
/*Check the integrity of `lv_mem` after critical operations. (Slow)*/
|
||||
#define LV_USE_ASSERT_MEM_INTEGRITY 0
|
||||
|
||||
/* Check the strings.
|
||||
* Search for NULL, very long strings, invalid characters, and unnatural repetitions. (Slow)
|
||||
* If disabled `LV_USE_ASSERT_NULL` will be performed instead (if it's enabled) */
|
||||
|
@ -268,44 +358,49 @@ typedef void * lv_indev_drv_user_data_t; /*Type of user data in the i
|
|||
#define LV_USE_ASSERT_OBJ 0
|
||||
|
||||
/*Check if the styles are properly initialized. (Fast)*/
|
||||
#define LV_USE_ASSERT_STYLE 1
|
||||
#define LV_USE_ASSERT_STYLE 0
|
||||
|
||||
#endif /*LV_USE_DEBUG*/
|
||||
|
||||
/*================
|
||||
* THEME USAGE
|
||||
*================*/
|
||||
#define LV_THEME_LIVE_UPDATE 0 /*1: Allow theme switching at run time. Uses 8..10 kB of RAM*/
|
||||
|
||||
#define LV_USE_THEME_TEMPL 0 /*Just for test*/
|
||||
#define LV_USE_THEME_DEFAULT 1 /*Built mainly from the built-in styles. Consumes very few RAM*/
|
||||
#define LV_USE_THEME_ALIEN 0 /*Dark futuristic theme*/
|
||||
#define LV_USE_THEME_NIGHT 1 /*Dark elegant theme*/
|
||||
#define LV_USE_THEME_MONO 0 /*Mono color theme for monochrome displays*/
|
||||
#define LV_USE_THEME_MATERIAL 0 /*Flat theme with bold colors and light shadows*/
|
||||
#define LV_USE_THEME_ZEN 0 /*Peaceful, mainly light theme */
|
||||
#define LV_USE_THEME_NEMO 0 /*Water-like theme based on the movie "Finding Nemo"*/
|
||||
|
||||
/*==================
|
||||
* FONT USAGE
|
||||
*===================*/
|
||||
|
||||
/* The built-in fonts contains the ASCII range and some Symbols with 4 bit-per-pixel.
|
||||
* The symbols are available via `LV_SYMBOL_...` defines
|
||||
* More info about fonts: https://docs.littlevgl.com/#Fonts
|
||||
* To create a new font go to: https://littlevgl.com/ttf-font-to-c-array
|
||||
* More info about fonts: https://docs.lvgl.io/v7/en/html/overview/font.html
|
||||
* To create a new font go to: https://lvgl.com/ttf-font-to-c-array
|
||||
*/
|
||||
|
||||
/* Robot fonts with bpp = 4
|
||||
* https://fonts.google.com/specimen/Roboto */
|
||||
#define LV_FONT_ROBOTO_12 0
|
||||
#define LV_FONT_ROBOTO_16 0
|
||||
#define LV_FONT_ROBOTO_22 0
|
||||
#define LV_FONT_ROBOTO_28 0
|
||||
/* Montserrat fonts with bpp = 4
|
||||
* https://fonts.google.com/specimen/Montserrat */
|
||||
#define LV_FONT_MONTSERRAT_8 0
|
||||
#define LV_FONT_MONTSERRAT_10 0
|
||||
#define LV_FONT_MONTSERRAT_12 0
|
||||
#define LV_FONT_MONTSERRAT_14 0
|
||||
#define LV_FONT_MONTSERRAT_16 0
|
||||
#define LV_FONT_MONTSERRAT_18 0
|
||||
#define LV_FONT_MONTSERRAT_20 0
|
||||
#define LV_FONT_MONTSERRAT_22 0
|
||||
#define LV_FONT_MONTSERRAT_24 0
|
||||
#define LV_FONT_MONTSERRAT_26 0
|
||||
#define LV_FONT_MONTSERRAT_28 0
|
||||
#define LV_FONT_MONTSERRAT_30 0
|
||||
#define LV_FONT_MONTSERRAT_32 0
|
||||
#define LV_FONT_MONTSERRAT_34 0
|
||||
#define LV_FONT_MONTSERRAT_36 0
|
||||
#define LV_FONT_MONTSERRAT_38 0
|
||||
#define LV_FONT_MONTSERRAT_40 0
|
||||
#define LV_FONT_MONTSERRAT_42 0
|
||||
#define LV_FONT_MONTSERRAT_44 0
|
||||
#define LV_FONT_MONTSERRAT_46 0
|
||||
#define LV_FONT_MONTSERRAT_48 0
|
||||
|
||||
/* Demonstrate special features */
|
||||
#define LV_FONT_ROBOTO_12_SUBPX 1
|
||||
#define LV_FONT_ROBOTO_28_COMPRESSED 1 /*bpp = 3*/
|
||||
#define LV_FONT_MONTSERRAT_12_SUBPX 0
|
||||
#define LV_FONT_MONTSERRAT_28_COMPRESSED 0 /*bpp = 3*/
|
||||
#define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0 /*Hebrew, Arabic, PErisan letters and all their forms*/
|
||||
#define LV_FONT_SIMSUN_16_CJK 0 /*1000 most common CJK radicals*/
|
||||
|
||||
/*Pixel perfect monospace font
|
||||
* http://pelulamu.net/unscii/ */
|
||||
|
@ -314,27 +409,75 @@ typedef void * lv_indev_drv_user_data_t; /*Type of user data in the i
|
|||
/* Optionally declare your custom fonts here.
|
||||
* You can use these fonts as default font too
|
||||
* and they will be available globally. E.g.
|
||||
* #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) \LV_SUBPX_BGR
|
||||
* #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) \
|
||||
* LV_FONT_DECLARE(my_font_2)
|
||||
*/
|
||||
#define LV_FONT_CUSTOM_DECLARE
|
||||
|
||||
/*Always set a default font from the built-in fonts*/
|
||||
#define LV_FONT_DEFAULT NULL; // The default font is specified in the custom theme.
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(jetbrains_mono_bold_20) \
|
||||
LV_FONT_DECLARE(jetbrains_mono_extrabold_compressed)
|
||||
|
||||
/* Enable it if you have fonts with a lot of characters.
|
||||
* The limit depends on the font size, font face and bpp
|
||||
* but with > 10,000 characters if you see issues probably you need to enable it.*/
|
||||
#define LV_FONT_FMT_TXT_LARGE 0
|
||||
|
||||
/* Enables/disables support for compressed fonts. If it's disabled, compressed
|
||||
* glyphs cannot be processed by the library and won't be rendered.
|
||||
*/
|
||||
#define LV_USE_FONT_COMPRESSED 0
|
||||
|
||||
/* Enable subpixel rendering */
|
||||
#define LV_USE_FONT_SUBPX 0
|
||||
#if LV_USE_FONT_SUBPX
|
||||
/* Set the pixel order of the display.
|
||||
* Important only if "subpx fonts" are used.
|
||||
* With "normal" font it doesn't matter.
|
||||
*/
|
||||
#define LV_FONT_SUBPX_BGR 0
|
||||
#endif
|
||||
|
||||
/*Declare the type of the user data of fonts (can be e.g. `void *`, `int`, `struct`)*/
|
||||
typedef void * lv_font_user_data_t;
|
||||
typedef void* lv_font_user_data_t;
|
||||
|
||||
/*================
|
||||
* THEME USAGE
|
||||
*================*/
|
||||
|
||||
/*Always enable at least on theme*/
|
||||
|
||||
/* No theme, you can apply your styles as you need
|
||||
* No flags. Set LV_THEME_DEFAULT_FLAG 0 */
|
||||
#define LV_USE_THEME_EMPTY 1
|
||||
|
||||
/*Simple to the create your theme based on it
|
||||
* No flags. Set LV_THEME_DEFAULT_FLAG 0 */
|
||||
#define LV_USE_THEME_TEMPLATE 0
|
||||
|
||||
/* A fast and impressive theme.
|
||||
* Flags:
|
||||
* LV_THEME_MATERIAL_FLAG_LIGHT: light theme
|
||||
* LV_THEME_MATERIAL_FLAG_DARK: dark theme
|
||||
* LV_THEME_MATERIAL_FLAG_NO_TRANSITION: disable transitions (state change animations)
|
||||
* LV_THEME_MATERIAL_FLAG_NO_FOCUS: disable indication of focused state)
|
||||
* */
|
||||
#define LV_USE_THEME_MATERIAL 0
|
||||
|
||||
/* Mono-color theme for monochrome displays.
|
||||
* If LV_THEME_DEFAULT_COLOR_PRIMARY is LV_COLOR_BLACK the
|
||||
* texts and borders will be black and the background will be
|
||||
* white. Else the colors are inverted.
|
||||
* No flags. Set LV_THEME_DEFAULT_FLAG 0 */
|
||||
#define LV_USE_THEME_MONO 0
|
||||
|
||||
#define LV_THEME_DEFAULT_INCLUDE <stdint.h> /*Include a header for the init. function*/
|
||||
#define LV_THEME_DEFAULT_INIT lv_theme_empty_init//lv_theme_material_init
|
||||
#define LV_THEME_DEFAULT_COLOR_PRIMARY lv_color_hex(0xffffff)
|
||||
#define LV_THEME_DEFAULT_COLOR_SECONDARY lv_color_hex(0xaaaaaa)
|
||||
#define LV_THEME_DEFAULT_FLAG 0//LV_THEME_MATERIAL_FLAG_DARK
|
||||
#define LV_THEME_DEFAULT_FONT_SMALL &jetbrains_mono_bold_20
|
||||
#define LV_THEME_DEFAULT_FONT_NORMAL &jetbrains_mono_bold_20
|
||||
#define LV_THEME_DEFAULT_FONT_SUBTITLE &jetbrains_mono_bold_20
|
||||
#define LV_THEME_DEFAULT_FONT_TITLE &jetbrains_mono_bold_20
|
||||
|
||||
/*=================
|
||||
* Text settings
|
||||
|
@ -347,7 +490,7 @@ typedef void * lv_font_user_data_t;
|
|||
* */
|
||||
#define LV_TXT_ENC LV_TXT_ENC_UTF8
|
||||
|
||||
/*Can break (wrap) texts on these chars*/
|
||||
/*Can break (wrap) texts on these chars*/
|
||||
#define LV_TXT_BREAK_CHARS " ,.;:-_"
|
||||
|
||||
/* If a word is at least this long, will break wherever "prettiest"
|
||||
|
@ -378,22 +521,38 @@ typedef void * lv_font_user_data_t;
|
|||
#define LV_BIDI_BASE_DIR_DEF LV_BIDI_DIR_AUTO
|
||||
#endif
|
||||
|
||||
/* Enable Arabic/Persian processing
|
||||
* In these languages characters should be replaced with
|
||||
* an other form based on their position in the text */
|
||||
#define LV_USE_ARABIC_PERSIAN_CHARS 0
|
||||
|
||||
/*Change the built in (v)snprintf functions*/
|
||||
#define LV_SPRINTF_CUSTOM 0
|
||||
#if LV_SPRINTF_CUSTOM
|
||||
# define LV_SPRINTF_INCLUDE <stdio.h>
|
||||
# define lv_snprintf snprintf
|
||||
# define lv_vsnprintf vsnprintf
|
||||
#define LV_SPRINTF_INCLUDE <stdio.h>
|
||||
#define lv_snprintf snprintf
|
||||
#define lv_vsnprintf vsnprintf
|
||||
#else /*!LV_SPRINTF_CUSTOM*/
|
||||
#define LV_SPRINTF_DISABLE_FLOAT 1
|
||||
#endif /*LV_SPRINTF_CUSTOM*/
|
||||
|
||||
/*===================
|
||||
* LV_OBJ SETTINGS
|
||||
*==================*/
|
||||
|
||||
#if LV_USE_USER_DATA
|
||||
/*Declare the type of the user data of object (can be e.g. `void *`, `int`, `struct`)*/
|
||||
typedef void * lv_obj_user_data_t;
|
||||
typedef void* lv_obj_user_data_t;
|
||||
/*Provide a function to free user data*/
|
||||
#define LV_USE_USER_DATA_FREE 0
|
||||
#if LV_USE_USER_DATA_FREE
|
||||
#define LV_USER_DATA_FREE_INCLUDE "something.h" /*Header for user data free function*/
|
||||
/* Function prototype : void user_data_free(lv_obj_t * obj); */
|
||||
#define LV_USER_DATA_FREE (user_data_free) /*Invoking for user data free function*/
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*1: enable `lv_obj_realaign()` based on `lv_obj_align()` parameters*/
|
||||
/*1: enable `lv_obj_realign()` based on `lv_obj_align()` parameters*/
|
||||
#define LV_USE_OBJ_REALIGN 1
|
||||
|
||||
/* Enable to make the object clickable on a larger area.
|
||||
|
@ -401,13 +560,13 @@ typedef void * lv_obj_user_data_t;
|
|||
* LV_EXT_CLICK_AREA_TINY: The extra area can be adjusted horizontally and vertically (0..255 px)
|
||||
* LV_EXT_CLICK_AREA_FULL: The extra area can be adjusted in all 4 directions (-32k..+32k px)
|
||||
*/
|
||||
#define LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_OFF
|
||||
#define LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_TINY
|
||||
|
||||
/*==================
|
||||
* LV OBJ X USAGE
|
||||
*================*/
|
||||
/*
|
||||
* Documentation of the object types: https://docs.littlevgl.com/#Object-types
|
||||
* Documentation of the object types: https://docs.lvgl.com/#Object-types
|
||||
*/
|
||||
|
||||
/*Arc (dependencies: -)*/
|
||||
|
@ -418,43 +577,42 @@ typedef void * lv_obj_user_data_t;
|
|||
|
||||
/*Button (dependencies: lv_cont*/
|
||||
#define LV_USE_BTN 1
|
||||
#if LV_USE_BTN != 0
|
||||
/*Enable button-state animations - draw a circle on click (dependencies: LV_USE_ANIMATION)*/
|
||||
# define LV_BTN_INK_EFFECT 0
|
||||
#endif
|
||||
|
||||
/*Button matrix (dependencies: -)*/
|
||||
#define LV_USE_BTNM 1
|
||||
#define LV_USE_BTNMATRIX 1
|
||||
|
||||
/*Calendar (dependencies: -)*/
|
||||
#define LV_USE_CALENDAR 1
|
||||
#if LV_USE_CALENDAR
|
||||
#define LV_CALENDAR_WEEK_STARTS_MONDAY 0
|
||||
#endif
|
||||
|
||||
/*Canvas (dependencies: lv_img)*/
|
||||
#define LV_USE_CANVAS 1
|
||||
|
||||
/*Check box (dependencies: lv_btn, lv_label)*/
|
||||
#define LV_USE_CB 1
|
||||
#define LV_USE_CHECKBOX 1
|
||||
|
||||
/*Chart (dependencies: -)*/
|
||||
#define LV_USE_CHART 1
|
||||
#if LV_USE_CHART
|
||||
# define LV_CHART_AXIS_TICK_LABEL_MAX_LEN 20
|
||||
#define LV_CHART_AXIS_TICK_LABEL_MAX_LEN 256
|
||||
#endif
|
||||
|
||||
/*Container (dependencies: -*/
|
||||
#define LV_USE_CONT 1
|
||||
|
||||
/*Color picker (dependencies: -*/
|
||||
#define LV_USE_CPICKER 1
|
||||
#define LV_USE_CPICKER 0
|
||||
|
||||
/*Drop down list (dependencies: lv_page, lv_label, lv_symbol_def.h)*/
|
||||
#define LV_USE_DDLIST 1
|
||||
#if LV_USE_DDLIST != 0
|
||||
#define LV_USE_DROPDOWN 1
|
||||
#if LV_USE_DROPDOWN != 0
|
||||
/*Open and close default animation time [ms] (0: no animation)*/
|
||||
# define LV_DDLIST_DEF_ANIM_TIME 200
|
||||
#define LV_DROPDOWN_DEF_ANIM_TIME 200
|
||||
#endif
|
||||
|
||||
/*Gauge (dependencies:lv_bar, lv_lmeter)*/
|
||||
/*Gauge (dependencies:lv_bar, lv_linemeter)*/
|
||||
#define LV_USE_GAUGE 1
|
||||
|
||||
/*Image (dependencies: lv_label*/
|
||||
|
@ -464,30 +622,34 @@ typedef void * lv_obj_user_data_t;
|
|||
#define LV_USE_IMGBTN 1
|
||||
#if LV_USE_IMGBTN
|
||||
/*1: The imgbtn requires left, mid and right parts and the width can be set freely*/
|
||||
# define LV_IMGBTN_TILED 0
|
||||
#define LV_IMGBTN_TILED 0
|
||||
#endif
|
||||
|
||||
/*Keyboard (dependencies: lv_btnm)*/
|
||||
#define LV_USE_KB 1
|
||||
#define LV_USE_KEYBOARD 0
|
||||
|
||||
/*Label (dependencies: -*/
|
||||
#define LV_USE_LABEL 1
|
||||
#if LV_USE_LABEL != 0
|
||||
/*Hor, or ver. scroll speed [px/sec] in 'LV_LABEL_LONG_ROLL/ROLL_CIRC' mode*/
|
||||
# define LV_LABEL_DEF_SCROLL_SPEED 25
|
||||
#define LV_LABEL_DEF_SCROLL_SPEED 25
|
||||
|
||||
/* Waiting period at beginning/end of animation cycle */
|
||||
# define LV_LABEL_WAIT_CHAR_COUNT 3
|
||||
#define LV_LABEL_WAIT_CHAR_COUNT 3
|
||||
|
||||
/*Enable selecting text of the label */
|
||||
# define LV_LABEL_TEXT_SEL 0
|
||||
#define LV_LABEL_TEXT_SEL 0
|
||||
|
||||
/*Store extra some info in labels (12 bytes) to speed up drawing of very long texts*/
|
||||
# define LV_LABEL_LONG_TXT_HINT 0
|
||||
#define LV_LABEL_LONG_TXT_HINT 0
|
||||
#endif
|
||||
|
||||
/*LED (dependencies: -)*/
|
||||
#define LV_USE_LED 1
|
||||
#define LV_USE_LED 0
|
||||
#if LV_USE_LED
|
||||
#define LV_LED_BRIGHT_MIN 120 /*Minimal brightness*/
|
||||
#define LV_LED_BRIGHT_MAX 255 /*Maximal brightness*/
|
||||
#endif
|
||||
|
||||
/*Line (dependencies: -*/
|
||||
#define LV_USE_LINE 1
|
||||
|
@ -496,38 +658,50 @@ typedef void * lv_obj_user_data_t;
|
|||
#define LV_USE_LIST 1
|
||||
#if LV_USE_LIST != 0
|
||||
/*Default animation time of focusing to a list element [ms] (0: no animation) */
|
||||
# define LV_LIST_DEF_ANIM_TIME 100
|
||||
#define LV_LIST_DEF_ANIM_TIME 100
|
||||
#endif
|
||||
|
||||
/*Line meter (dependencies: *;)*/
|
||||
#define LV_USE_LMETER 1
|
||||
#define LV_USE_LINEMETER 1
|
||||
#if LV_USE_LINEMETER
|
||||
/* Draw line more precisely at cost of performance.
|
||||
* Useful if there are lot of lines any minor are visible
|
||||
* 0: No extra precision
|
||||
* 1: Some extra precision
|
||||
* 2: Best precision
|
||||
*/
|
||||
#define LV_LINEMETER_PRECISE 0
|
||||
#endif
|
||||
|
||||
/*Mask (dependencies: -)*/
|
||||
#define LV_USE_OBJMASK 1
|
||||
|
||||
/*Message box (dependencies: lv_rect, lv_btnm, lv_label)*/
|
||||
#define LV_USE_MBOX 1
|
||||
#define LV_USE_MSGBOX 1
|
||||
|
||||
/*Page (dependencies: lv_cont)*/
|
||||
#define LV_USE_PAGE 1
|
||||
#if LV_USE_PAGE != 0
|
||||
/*Focus default animation time [ms] (0: no animation)*/
|
||||
# define LV_PAGE_DEF_ANIM_TIME 400
|
||||
#define LV_PAGE_DEF_ANIM_TIME 400
|
||||
#endif
|
||||
|
||||
/*Preload (dependencies: lv_arc, lv_anim)*/
|
||||
#define LV_USE_PRELOAD 0
|
||||
#if LV_USE_PRELOAD != 0
|
||||
# define LV_PRELOAD_DEF_ARC_LENGTH 60 /*[deg]*/
|
||||
# define LV_PRELOAD_DEF_SPIN_TIME 1000 /*[ms]*/
|
||||
# define LV_PRELOAD_DEF_ANIM LV_PRELOAD_TYPE_SPINNING_ARC
|
||||
#define LV_USE_SPINNER 0
|
||||
#if LV_USE_SPINNER != 0
|
||||
#define LV_SPINNER_DEF_ARC_LENGTH 60 /*[deg]*/
|
||||
#define LV_SPINNER_DEF_SPIN_TIME 1000 /*[ms]*/
|
||||
#define LV_SPINNER_DEF_ANIM LV_SPINNER_TYPE_SPINNING_ARC
|
||||
#endif
|
||||
|
||||
/*Roller (dependencies: lv_ddlist)*/
|
||||
#define LV_USE_ROLLER 1
|
||||
#if LV_USE_ROLLER != 0
|
||||
/*Focus animation time [ms] (0: no animation)*/
|
||||
# define LV_ROLLER_DEF_ANIM_TIME 200
|
||||
#define LV_ROLLER_DEF_ANIM_TIME 200
|
||||
|
||||
/*Number of extra "pages" when the roller is infinite*/
|
||||
# define LV_ROLLER_INF_PAGES 7
|
||||
#define LV_ROLLER_INF_PAGES 7
|
||||
#endif
|
||||
|
||||
/*Slider (dependencies: lv_bar)*/
|
||||
|
@ -537,33 +711,35 @@ typedef void * lv_obj_user_data_t;
|
|||
#define LV_USE_SPINBOX 1
|
||||
|
||||
/*Switch (dependencies: lv_slider)*/
|
||||
#define LV_USE_SW 1
|
||||
#define LV_USE_SWITCH 1
|
||||
|
||||
/*Text area (dependencies: lv_label, lv_page)*/
|
||||
#define LV_USE_TA 1
|
||||
#if LV_USE_TA != 0
|
||||
# define LV_TA_DEF_CURSOR_BLINK_TIME 400 /*ms*/
|
||||
# define LV_TA_DEF_PWD_SHOW_TIME 1500 /*ms*/
|
||||
#define LV_USE_TEXTAREA 1
|
||||
#if LV_USE_TEXTAREA != 0
|
||||
#define LV_TEXTAREA_DEF_CURSOR_BLINK_TIME 400 /*ms*/
|
||||
#define LV_TEXTAREA_DEF_PWD_SHOW_TIME 1500 /*ms*/
|
||||
#endif
|
||||
|
||||
/*Table (dependencies: lv_label)*/
|
||||
#define LV_USE_TABLE 1
|
||||
#if LV_USE_TABLE
|
||||
# define LV_TABLE_COL_MAX 12
|
||||
#define LV_TABLE_COL_MAX 12
|
||||
#define LV_TABLE_CELL_STYLE_CNT 5
|
||||
#endif
|
||||
|
||||
|
||||
/*Tab (dependencies: lv_page, lv_btnm)*/
|
||||
#define LV_USE_TABVIEW 1
|
||||
# if LV_USE_TABVIEW != 0
|
||||
/*Time of slide animation [ms] (0: no animation)*/
|
||||
# define LV_TABVIEW_DEF_ANIM_TIME 300
|
||||
#define LV_TABVIEW_DEF_ANIM_TIME 300
|
||||
#endif
|
||||
|
||||
/*Tileview (dependencies: lv_page) */
|
||||
#define LV_USE_TILEVIEW 1
|
||||
#if LV_USE_TILEVIEW
|
||||
/*Time of slide animation [ms] (0: no animation)*/
|
||||
# define LV_TILEVIEW_DEF_ANIM_TIME 300
|
||||
#define LV_TILEVIEW_DEF_ANIM_TIME 300
|
||||
#endif
|
||||
|
||||
/*Window (dependencies: lv_cont, lv_btn, lv_label, lv_img, lv_page)*/
|
||||
|
@ -574,14 +750,9 @@ typedef void * lv_obj_user_data_t;
|
|||
*==================*/
|
||||
|
||||
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS) /* Disable warnings for Visual Studio*/
|
||||
# define _CRT_SECURE_NO_WARNINGS
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
/*--END OF LV_CONF_H--*/
|
||||
|
||||
/*Be sure every define has a default value*/
|
||||
#include "lvgl/src/lv_conf_checker.h"
|
||||
|
||||
#endif /*LV_CONF_H*/
|
||||
|
||||
#endif /*End of "Content enable"*/
|
||||
#endif /*LV_CONF_H*/
|
Loading…
Reference in a new issue