Files
MuditaOS/module-apps/notifications/NotificationsModel.hpp
Michał Kamoń 8078dd240b [EGD-6855] Add no modem notification on tethering
This commit provides the implementation of functionality that blocks
sms/calls notifications on home screen when tethering is active.
Previously, the notifications could be visible if the notifications
were visible prior to tethering activation.

By the design, the functionality should not clear the notifications,
just temporary hide them. That is achieved by implementation ot the
functionality in NotificationModel which is an UI presenter.
2021-06-01 14:25:32 +02:00

44 lines
1.6 KiB
C++

// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include "NotificationListItem.hpp"
#include "NotificationData.hpp"
#include "ListItemProvider.hpp"
#include "Application.hpp"
#include "InternalModel.hpp"
#include <service-appmgr/data/NotificationsChangedActionsParams.hpp>
namespace gui
{
class NotificationsModel : public app::InternalModel<gui::NotificationListItem *>, public gui::ListItemProvider
{
[[nodiscard]] unsigned int requestRecordsCount() final;
[[nodiscard]] unsigned int getMinimalItemHeight() const final;
ListItem *getItem(Order order) final;
void requestRecords(uint32_t offset, uint32_t limit) final;
protected:
bool tetheringOn = false;
[[nodiscard]] virtual auto create(const notifications::NotSeenSMSNotification *notification)
-> NotificationListItem *;
[[nodiscard]] virtual auto create(const notifications::NotSeenCallNotification *notification)
-> NotificationListItem *;
[[nodiscard]] virtual auto create(const notifications::TetheringNotification *notification)
-> NotificationListItem *;
public:
[[nodiscard]] bool isEmpty() const noexcept;
[[nodiscard]] bool hasDismissibleNotification() const noexcept;
[[nodiscard]] bool isTetheringOn() const noexcept;
void updateData(app::manager::actions::NotificationsChangedParams *params);
void dismissAll(const InputEvent &event);
void clearAll();
};
} // namespace gui