summaryrefslogtreecommitdiff
path: root/src/displayapp/screens/Modal.cpp
diff options
context:
space:
mode:
authorJean-François Milants <jf@codingfield.com>2021-02-14 14:42:42 +0100
committerJean-François Milants <jf@codingfield.com>2021-02-14 14:42:42 +0100
commitf81ff98c308e437139468301ed5198b322c2f4ec (patch)
tree4e2334bc3a8f7f434890a4cb439703b569572c10 /src/displayapp/screens/Modal.cpp
parent01e194426d51ffb1a6e9e3162567f29c2a84154d (diff)
parente62f8734befca5e40496f354aa05ea20602a8bbe (diff)
Merge branch 'develop' of github.com:JF002/Pinetime into develop
Diffstat (limited to 'src/displayapp/screens/Modal.cpp')
-rw-r--r--src/displayapp/screens/Modal.cpp50
1 files changed, 39 insertions, 11 deletions
diff --git a/src/displayapp/screens/Modal.cpp b/src/displayapp/screens/Modal.cpp
index d1a110ea..6d6768dc 100644
--- a/src/displayapp/screens/Modal.cpp
+++ b/src/displayapp/screens/Modal.cpp
@@ -6,10 +6,7 @@ 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) {
-
-
-}
+Modal::Modal(Pinetime::Applications::DisplayApp *app) : Screen(app), alertNotificationService(nullptr) {}
Modal::~Modal() {
lv_obj_clean(lv_scr_act());
@@ -41,13 +38,46 @@ 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) {
- /* A button was clicked */
- lv_mbox_start_auto_close(mbox, 0);
-// Hide();
+ 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::Show(const char* msg) {
+void Modal::NewNotification(Pinetime::Controllers::NotificationManager &notificationManager, 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);
@@ -60,11 +90,9 @@ void Modal::Show(const char* msg) {
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 */
- static const char * btns2[] = {"Ok", ""};
-
/* Create the message box as a child of the modal background */
mbox = lv_mbox_create(obj, nullptr);
- lv_mbox_add_btns(mbox, btns2);
+ 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);