diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index 932129cb..1ad2c6cb 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -102,7 +102,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd, spiNorFlash {spiNorFlash}, lvgl {lcd, filesystem}, timer(this, TimerCallback), - popupMessage {Screens::Symbols::lock, 90, 90}, controllers {batteryController, bleController, dateTimeController, diff --git a/src/displayapp/widgets/PopupMessage.cpp b/src/displayapp/widgets/PopupMessage.cpp index 7bfcc97e..ffcecdca 100644 --- a/src/displayapp/widgets/PopupMessage.cpp +++ b/src/displayapp/widgets/PopupMessage.cpp @@ -1,21 +1,40 @@ #include "displayapp/widgets/PopupMessage.h" +#include "displayapp/InfiniTimeTheme.h" #include using namespace Pinetime::Applications::Widgets; -PopupMessage::PopupMessage(const char* msg, int16_t h, int16_t w) : message {msg}, height {h}, width {w} { +PopupMessage::PopupMessage() { } void PopupMessage::Create() { - btnPopup = lv_btn_create(lv_scr_act(), nullptr); - btnPopup->user_data = this; - lv_obj_set_size(btnPopup, height, width); - lv_obj_align(btnPopup, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); - lv_obj_set_style_local_bg_opa(btnPopup, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_60); - lv_obj_set_style_local_text_font(btnPopup, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &lv_font_sys_80); - lv_obj_t* lblMessage = lv_label_create(btnPopup, nullptr); - lv_label_set_text_static(lblMessage, message); - lv_obj_set_hidden(btnPopup, isHidden); + popup = lv_obj_create(lv_scr_act(), nullptr); + lv_obj_set_size(popup, 90, 90); + lv_obj_align(popup, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + lv_obj_set_style_local_bg_color(popup, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, Colors::bg); + lv_obj_set_style_local_bg_opa(popup, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_60); + lv_obj_t* lockBody = lv_obj_create(popup, nullptr); + lv_obj_set_size(lockBody, 55, 50); + lv_obj_align(lockBody, popup, LV_ALIGN_CENTER, 0, 10); + + lv_obj_set_style_local_bg_color(lockBody, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_obj_set_style_local_bg_opa(lockBody, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_0); + lv_obj_set_style_local_border_color(lockBody, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_obj_set_style_local_border_width(lockBody, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, 22); + lv_obj_set_style_local_border_side(lockBody, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_BORDER_SIDE_FULL); + lv_obj_set_style_local_border_opa(lockBody, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_100); + + lv_obj_t* lockTop = lv_obj_create(popup, nullptr); + lv_obj_set_size(lockTop, 30, 35); + lv_obj_align(lockTop, popup, LV_ALIGN_CENTER, 0, -20); + lv_obj_set_style_local_bg_color(lockTop, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_obj_set_style_local_bg_opa(lockTop, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_0); + lv_obj_set_style_local_border_color(lockTop, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_obj_set_style_local_border_width(lockTop, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, 6); + lv_obj_set_style_local_border_side(lockTop, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_BORDER_SIDE_FULL); + lv_obj_set_style_local_border_opa(lockTop, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_100); + + lv_obj_set_hidden(popup, isHidden); } void PopupMessage::SetHidden(bool hidden) { @@ -24,11 +43,11 @@ void PopupMessage::SetHidden(bool hidden) { } isHidden = hidden; // create/delete on demand - if (btnPopup == nullptr && !isHidden) { + if (popup == nullptr && !isHidden) { Create(); - } else if (btnPopup != nullptr) { - lv_obj_del(btnPopup); - btnPopup = nullptr; + } else if (popup != nullptr) { + lv_obj_del(popup); + popup = nullptr; } } diff --git a/src/displayapp/widgets/PopupMessage.h b/src/displayapp/widgets/PopupMessage.h index ca993912..39e16b2c 100644 --- a/src/displayapp/widgets/PopupMessage.h +++ b/src/displayapp/widgets/PopupMessage.h @@ -6,18 +6,14 @@ namespace Pinetime { namespace Widgets { class PopupMessage { public: - // The caller owns the message string, it is not copied. - PopupMessage(const char* msg, int16_t h, int16_t w); + PopupMessage(); void Create(); void SetHidden(bool hidden); bool IsHidden(); private: - const char* message; - lv_obj_t* btnPopup = nullptr; + lv_obj_t* popup = nullptr; bool isHidden = true; - int16_t height; - int16_t width; }; } }