// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #include "NotificationTilesPresenter.hpp" #include #include using namespace gui; namespace { constexpr auto messagesIcon = "messages_notification_icon_W_G"; constexpr auto callsIcon = "calls_notification_icon_W_G"; constexpr auto tetheringIcon = "tethering_notification_icon_W_G"; constexpr auto alarmIcon = "alarm_notification_icon_W_G"; constexpr auto lockIcon = "lock_notification_icon_W_G"; constexpr auto batteryIcon = "battery_notification_icon_W_G"; auto buildNotificationIcon(const UTF8 &imageName) -> gui::Image * { const auto icon = new gui::Image(imageName); icon->setMinimumWidth(::style::wallpaper::notificationTiles::tileIconHeight); icon->setMargins(gui::Margins(::style::wallpaper::notificationTiles::tileIconMarigin, 0, ::style::wallpaper::notificationTiles::tileIconMarigin, 0)); return icon; } } // namespace NotificationTilesPresenter::NotificationTilesPresenter() {} void NotificationTilesPresenter::attach(HBox *newTilesBox) { tilesBox = newTilesBox; } void NotificationTilesPresenter::updateData(app::manager::actions::NotificationsChangedParams *params, bool callAndSMSVisibility) { if (tilesBox == nullptr) { LOG_ERROR("TilesBox not attached"); return; } tilesBox->erase(); for (const auto ¬ification : params->getNotifications()) { if (typeid(*notification) == typeid(notifications::NotSeenSMSNotification) && callAndSMSVisibility) { tilesBox->addWidget(buildNotificationIcon(messagesIcon)); } else if (typeid(*notification) == typeid(notifications::NotSeenCallNotification) && callAndSMSVisibility) { tilesBox->addWidget(buildNotificationIcon(callsIcon)); } else if (typeid(*notification) == typeid(notifications::TetheringNotification)) { tilesBox->addWidget(buildNotificationIcon(tetheringIcon)); } else if (typeid(*notification) == typeid(notifications::PhoneLockNotification)) { tilesBox->addWidget(buildNotificationIcon(lockIcon)); } else if (typeid(*notification) == typeid(notifications::BatteryTooHotNotification)) { tilesBox->addWidget(buildNotificationIcon(batteryIcon)); } else if (typeid(*notification) == typeid(notifications::AlarmSnoozeNotification)) { tilesBox->addWidget(buildNotificationIcon(alarmIcon)); } } tilesBox->resizeItems(); } bool NotificationTilesPresenter::hasDismissibleNotification() const noexcept { return false; } void NotificationTilesPresenter::dismissAll() {} bool NotificationTilesPresenter::isEmpty() const noexcept { return false; }