Added the possibility to set the notification's displayed hour format (12H/24H)
This commit is contained in:
parent
6b06e28394
commit
06c02f76ba
@ -16,7 +16,7 @@ void _notification_list_debug(NotificationDataList_t notificationList);
|
|||||||
void _display_message_notification(NotificationScreen_t * const notificationScreen, NotificationData_t *notification);
|
void _display_message_notification(NotificationScreen_t * const notificationScreen, NotificationData_t *notification);
|
||||||
void _notification_popup_destroy(NotificationScreen_t * const notificationScreen);
|
void _notification_popup_destroy(NotificationScreen_t * const notificationScreen);
|
||||||
const char *_notification_type_to_char(NotificationType_e notificationType);
|
const char *_notification_type_to_char(NotificationType_e notificationType);
|
||||||
const char *_notification_timestamp_to_date(time_t timestamp);
|
const char *_notification_timestamp_to_date(time_t timestamp, bool hour_24H_format);
|
||||||
|
|
||||||
static void notification_scrolled_event_cb(lv_event_t *e)
|
static void notification_scrolled_event_cb(lv_event_t *e)
|
||||||
{
|
{
|
||||||
@ -68,6 +68,17 @@ void notification_screen_register_on_state_change_cb(NotificationScreen_t * cons
|
|||||||
notificationScreen->notificationOnStateChangeCb = notificationOnStateChangeCb;
|
notificationScreen->notificationOnStateChangeCb = notificationOnStateChangeCb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void notification_screen_set_displayed_hour_format(NotificationScreen_t * const notificationScreen, bool hour_24H_format)
|
||||||
|
{
|
||||||
|
if(!notificationScreen)
|
||||||
|
{
|
||||||
|
LV_LOG_ERROR("NULL pointer given !");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
notificationScreen->notification_hour_24H_format = hour_24H_format;
|
||||||
|
}
|
||||||
|
|
||||||
void notification_screen_notify(NotificationScreen_t * const notificationScreen, uint32_t handle, time_t dateOfArrival, NotificationType_e notificationType, char * title, char * body)
|
void notification_screen_notify(NotificationScreen_t * const notificationScreen, uint32_t handle, time_t dateOfArrival, NotificationType_e notificationType, char * title, char * body)
|
||||||
{
|
{
|
||||||
if(!notificationScreen)
|
if(!notificationScreen)
|
||||||
@ -324,7 +335,7 @@ void _display_message_notification(NotificationScreen_t * const notificationScre
|
|||||||
lv_obj_set_style_pad_right(notificationScreen->date_label, 10, LV_PART_MAIN);
|
lv_obj_set_style_pad_right(notificationScreen->date_label, 10, LV_PART_MAIN);
|
||||||
lv_obj_set_style_text_color(notificationScreen->date_label, lv_color_white(), LV_PART_MAIN);
|
lv_obj_set_style_text_color(notificationScreen->date_label, lv_color_white(), LV_PART_MAIN);
|
||||||
lv_obj_align(notificationScreen->date_label, LV_ALIGN_TOP_RIGHT, 0, 0);
|
lv_obj_align(notificationScreen->date_label, LV_ALIGN_TOP_RIGHT, 0, 0);
|
||||||
lv_label_set_text_static(notificationScreen->date_label, _notification_timestamp_to_date(notification->dateOfArrival));
|
lv_label_set_text_static(notificationScreen->date_label, _notification_timestamp_to_date(notification->dateOfArrival, notificationScreen->notification_hour_24H_format));
|
||||||
|
|
||||||
//Create the sub-area in the notification
|
//Create the sub-area in the notification
|
||||||
lv_obj_t *sub_area = lv_obj_create(main_notification);
|
lv_obj_t *sub_area = lv_obj_create(main_notification);
|
||||||
@ -359,7 +370,7 @@ void _display_message_notification(NotificationScreen_t * const notificationScre
|
|||||||
//We just have to update the notification content
|
//We just have to update the notification content
|
||||||
lv_label_set_text_static(notificationScreen->type_label, _notification_type_to_char(notification->type));
|
lv_label_set_text_static(notificationScreen->type_label, _notification_type_to_char(notification->type));
|
||||||
lv_label_set_text_static(notificationScreen->title_label, notification->title);
|
lv_label_set_text_static(notificationScreen->title_label, notification->title);
|
||||||
lv_label_set_text_static(notificationScreen->date_label, _notification_timestamp_to_date(notification->dateOfArrival));
|
lv_label_set_text_static(notificationScreen->date_label, _notification_timestamp_to_date(notification->dateOfArrival, notificationScreen->notification_hour_24H_format));
|
||||||
lv_label_set_text_static(notificationScreen->body_label, notification->body);
|
lv_label_set_text_static(notificationScreen->body_label, notification->body);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -392,12 +403,24 @@ const char *_notification_type_to_char(NotificationType_e notificationType)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *_notification_timestamp_to_date(time_t timestamp)
|
const char *_notification_timestamp_to_date(time_t timestamp, bool hour_24H_format)
|
||||||
{
|
{
|
||||||
static char date[9]; //Ex 7:23PM
|
static char date[9]; //Ex 7:23PM
|
||||||
|
|
||||||
struct tm *time = gmtime(×tamp);
|
struct tm *time = gmtime(×tamp);
|
||||||
sprintf(date, "%s%d:%s%d", time->tm_hour < 10 ? "0" : "", time->tm_hour, time->tm_min < 10 ? "0" : "", time->tm_min);
|
if(hour_24H_format)
|
||||||
|
sprintf(date, "%s%d:%s%d", time->tm_hour < 10 ? "0" : "", time->tm_hour, time->tm_min < 10 ? "0" : "", time->tm_min);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Intermediate hour var to set it on a 12H format
|
||||||
|
uint8_t hour = time->tm_hour;
|
||||||
|
if(hour > 12)hour -= 12;
|
||||||
|
|
||||||
|
sprintf(date, "%d:%s%d%s", hour,
|
||||||
|
time->tm_min < 10 ? "0" : "", time->tm_min,
|
||||||
|
time->tm_hour < 13 ? "AM" : "PM");
|
||||||
|
}
|
||||||
|
|
||||||
return date;
|
return date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,13 +57,17 @@ typedef struct NotificationScreen
|
|||||||
NotificationDataList_t notificationList; // Actual notifications
|
NotificationDataList_t notificationList; // Actual notifications
|
||||||
NotificationDataList_t freeNotificationList; // Free notification object pool
|
NotificationDataList_t freeNotificationList; // Free notification object pool
|
||||||
// Miscellaneous
|
// Miscellaneous
|
||||||
bool new_notification_available;
|
bool new_notification_available : 1;
|
||||||
|
bool notification_hour_24H_format : 1;
|
||||||
|
|
||||||
} NotificationScreen_t;
|
} NotificationScreen_t;
|
||||||
|
|
||||||
void notification_screen_init(NotificationScreen_t * const notificationScreen);
|
void notification_screen_init(NotificationScreen_t * const notificationScreen);
|
||||||
|
|
||||||
void notification_screen_register_on_state_change_cb(NotificationScreen_t * const notificationScreen, NotificationOnStateChangeCb_t notificationOnStateChangeCb);
|
void notification_screen_register_on_state_change_cb(NotificationScreen_t * const notificationScreen, NotificationOnStateChangeCb_t notificationOnStateChangeCb);
|
||||||
|
|
||||||
|
void notification_screen_set_displayed_hour_format(NotificationScreen_t * const notificationScreen, bool hour_24H_format);
|
||||||
|
|
||||||
void notification_screen_notify(NotificationScreen_t * const notificationScreen, uint32_t handle, time_t dateOfArrival, NotificationType_e notificationType, char * title, char * body);
|
void notification_screen_notify(NotificationScreen_t * const notificationScreen, uint32_t handle, time_t dateOfArrival, NotificationType_e notificationType, char * title, char * body);
|
||||||
|
|
||||||
bool notification_screen_new_notification_available(NotificationScreen_t * const notificationScreen);
|
bool notification_screen_new_notification_available(NotificationScreen_t * const notificationScreen);
|
||||||
|
Loading…
Reference in New Issue
Block a user