Generalized the concept on NotificationItem rather than Notifictaions

This commit is contained in:
jspkay 2022-11-15 12:39:01 +01:00
parent d084d5c54e
commit a4be638376
2 changed files with 17 additions and 11 deletions

View file

@ -79,12 +79,6 @@ void Notifications::Refresh() {
timeoutLinePoints[1].x = pos; timeoutLinePoints[1].x = pos;
lv_line_set_points(timeoutLine, timeoutLinePoints, 2); lv_line_set_points(timeoutLine, timeoutLinePoints, 2);
} }
if(!this->isTitleScrolling && tick >= timeoutTickCountStart + timeoutStartTitleScrolling){
currentItem->StartTitleScroll();
this->isTitleScrolling = true;
}
} }
if (dismissingNotification) { if (dismissingNotification) {
@ -141,6 +135,7 @@ bool Notifications::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
} }
return false; return false;
} }
switch (event) { switch (event) {
case Pinetime::Applications::TouchEvents::SwipeRight: case Pinetime::Applications::TouchEvents::SwipeRight:
if (validDisplay) { if (validDisplay) {
@ -341,6 +336,15 @@ Notifications::NotificationItem::NotificationItem(const char* title,
lv_obj_set_style_local_bg_color(bt_mute, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, Colors::lightGray); lv_obj_set_style_local_bg_color(bt_mute, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, Colors::lightGray);
} break; } break;
} }
refreshTask = lv_task_create(Notifications::NotificationItem::Refresh, 1000, LV_TASK_PRIO_MID, this);
//lv_task_once(refreshTask); // The documentation says it exists, but I was unable to compile
}
void Notifications::NotificationItem::Refresh(lv_task_t* tsk) {
static_cast<Notifications::NotificationItem*>(tsk->user_data)->StartTitleScroll();
lv_task_del(tsk); // This substitutes the call to lv_task_once
// This method can be updated in the future for implementing other features.
// For now it is executed one single time after 1 second and then deleted.
} }
void Notifications::NotificationItem::OnCallButtonEvent(lv_obj_t* obj, lv_event_t event) { void Notifications::NotificationItem::OnCallButtonEvent(lv_obj_t* obj, lv_event_t event) {
@ -363,6 +367,7 @@ void Notifications::NotificationItem::OnCallButtonEvent(lv_obj_t* obj, lv_event_
Notifications::NotificationItem::~NotificationItem() { Notifications::NotificationItem::~NotificationItem() {
lv_obj_clean(lv_scr_act()); lv_obj_clean(lv_scr_act());
lv_task_del(refreshTask);
} }
void Notifications::NotificationItem::StartTitleScroll(){ void Notifications::NotificationItem::StartTitleScroll(){

View file

@ -47,7 +47,7 @@ namespace Pinetime {
return running; return running;
} }
void OnCallButtonEvent(lv_obj_t*, lv_event_t event); void OnCallButtonEvent(lv_obj_t*, lv_event_t event);
void StartTitleScroll(); static void Refresh(lv_task_t* tsk);
private: private:
lv_obj_t* container; lv_obj_t* container;
@ -58,7 +58,10 @@ namespace Pinetime {
lv_obj_t* label_accept; lv_obj_t* label_accept;
lv_obj_t* label_mute; lv_obj_t* label_mute;
lv_obj_t* label_reject; lv_obj_t* label_reject;
lv_obj_t *alert_type; lv_obj_t* alert_type;
void StartTitleScroll();
lv_task_t* refreshTask;
Pinetime::Controllers::AlertNotificationService& alertNotificationService; Pinetime::Controllers::AlertNotificationService& alertNotificationService;
Pinetime::Controllers::MotorController& motorController; Pinetime::Controllers::MotorController& motorController;
@ -82,9 +85,7 @@ namespace Pinetime {
TickType_t timeoutTickCountStart; TickType_t timeoutTickCountStart;
static const TickType_t timeoutLength = pdMS_TO_TICKS(7000); static const TickType_t timeoutLength = pdMS_TO_TICKS(7000);
static const TickType_t timeoutStartTitleScrolling = pdMS_TO_TICKS(1000);
bool interacted = true; bool interacted = true;
bool isTitleScrolling = false;
bool dismissingNotification = false; bool dismissingNotification = false;