Skip to content

Commit

Permalink
Notifications app:
Browse files Browse the repository at this point in the history
- Add button to clear all notifications
- Replace text area with label to prevent a focus on the body
- Fix a bug where the last notification out of many can not be removed when the removal starts not at the bottom
- Add "Now" string for notifications with an age of less than 1 minute instead of showing the seconds
- Add notification for WhatsApp

Notification manager:
- Add notification remove channel for ZBUS



Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
  • Loading branch information
Kampi committed Nov 26, 2023
1 parent 9fec3c9 commit a57561d
Show file tree
Hide file tree
Showing 20 changed files with 453 additions and 338 deletions.
26 changes: 23 additions & 3 deletions app/src/applications/notification/notification_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,19 @@
#include <zephyr/logging/log.h>

#include "ui_export/notification_ui.h"
#include "managers/zsw_notification_manager.h"
#include "events/zsw_notification_event.h"
#include "managers/zsw_app_manager.h"
#include "managers/zsw_notification_manager.h"

LOG_MODULE_REGISTER(notification_app, CONFIG_NOTIFICATION_APP_LOG_LEVEL);

static void notification_app_start(lv_obj_t *root, lv_group_t *group);
static void notification_app_stop(void);
static void notification_app_zbus_notification_callback(const struct zbus_channel *chan);
static void notification_app_zbus_notification_remove_callback(const struct zbus_channel *chan);

ZBUS_LISTENER_DEFINE(notification_app_lis, notification_app_zbus_notification_callback);
ZBUS_LISTENER_DEFINE(notification_app_remove_lis, notification_app_zbus_notification_remove_callback);

static lv_group_t *notification_group;

Expand All @@ -26,17 +29,34 @@ static application_t app = {

static void notification_app_zbus_notification_callback(const struct zbus_channel *chan)
{
zsw_not_mngr_notification_t* not;
zsw_not_mngr_notification_t *not;

LOG_DBG("New notification available");

not = zsw_notification_manager_get_newest();
notifications_ui_add_notification(not, notification_group);
}

static void notification_app_zbus_notification_remove_callback(const struct zbus_channel *chan)
{
int msg_len;
char buf[100];
const struct zsw_notification_remove_event *evt = zbus_chan_const_msg(chan);
uint32_t id = evt->notification.id;

LOG_DBG("Remove notification with ID %u", id);
notifications_ui_remove_notification(id);

// TODO: We have to check the type of notification here to figure out the sender (BLE or other sources).
// TODO: Move this to BLE Gadgetbridge
//memset(buf, 0, sizeof(buf));
//msg_len = snprintf(buf, sizeof(buf), "{\"t\":\"notify\", \"id\": %d, \"n\": %s} \n", id, "\"DISMISS\"");
//ble_comm_send(buf, msg_len);
}

static void on_notification_page_notification_close(uint32_t not_id)
{
// TODO send to phone that the notification was read.
// Inform the noti
zsw_notification_manager_remove(not_id);
}

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion app/src/applications/notification/project/notification.sll
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"name":"SquareLine_Project.spj","depth":2,"width":240,"height":240,"rotation":0,"offset_x":0,"offset_y":0,"shape":"CIRCLE","multilang":"DISABLE","description":"","board":"Arduino with TFT_eSPI","board_version":"v1.1.0","editor_version":"1.3.2","image":"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","force_export_images":false,"flat_export":false,"pointfilter":false,"theme_simplified":false,"theme_dark":false,"theme_color1":5,"theme_color2":0,"exportFolderPath":"F:\\Git\\ZSWatch\\app\\src\\applications\\notification\\ui_export","projectExportFolderPath":"F:\\Git\\ZSWatch\\app\\src\\applications\\notification","backup_cnt":109,"autosave_cnt":0,"lvgl_version":"8.3.6","callfuncsexport":"C_FILE","lvgl_include_path":""}
{"name":"SquareLine_Project.spj","depth":2,"width":240,"height":240,"rotation":0,"offset_x":0,"offset_y":0,"shape":"CIRCLE","multilang":"DISABLE","description":"","board":"Arduino with TFT_eSPI","board_version":"v1.1.0","editor_version":"1.3.2","image":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADwAPADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3aiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBk00VtA808iRRICzu7AKo9ST0rl3+JPhGN2RtYUkHB2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AOLoA+eaK+hv+FZ+EP8AoEf+TMv/AMXR/wAKz8If9Aj/AMmZf/i6APnmivob/hWfhD/oEf8AkzL/APF0f8Kz8If9Aj/yZl/+LoA+eaK+hv8AhWfhD/oEf+TMv/xdH/Cs/CH/AECP/JmX/wCLoA+eaK+hv+FZ+EP+gR/5My//ABdH/Cs/CH/QI/8AJmX/AOLoA+eaK+hv+FZ+EP8AoEf+TMv/AMXR/wAKz8If9Aj/AMmZf/i6APnmivob/hWfhD/oEf8AkzL/APF0f8Kz8If9Aj/yZl/+LoA+eaK+hv8AhWfhD/oEf+TMv/xdH/Cs/CH/AECP/JmX/wCLoA+eaK+hv+FZ+EP+gR/5My//ABdH/Cs/CH/QI/8AJmX/AOLoA+ea9j+DFhcQadql9IhWG5eNIiRjds3ZI9vmA/A10qfDbwjG6uujqSDkbp5WH5FsGuohhitoEhgjSKJAFREUBVHoAOlMY+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2Q==","force_export_images":false,"flat_export":false,"pointfilter":false,"theme_simplified":false,"theme_dark":false,"theme_color1":5,"theme_color2":0,"exportFolderPath":"F:\\Git\\ZSWatch\\app\\src\\applications\\notification\\ui_export","projectExportFolderPath":"F:\\Git\\ZSWatch\\app\\src\\applications\\notification","backup_cnt":158,"autosave_cnt":0,"lvgl_version":"8.3.6","callfuncsexport":"C_FILE","lvgl_include_path":""}
Loading

0 comments on commit a57561d

Please sign in to comment.