// 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 #include #include #include #include #include #include #include #include namespace app::alarmClock { class AlarmsInternalListItemProvider : public InternalModel, public gui::ListItemProvider { public: AlarmsInternalListItemProvider() = default; virtual void loadData(std::shared_ptr record) = 0; virtual void saveData(std::shared_ptr record, AlarmAction action) = 0; virtual void clearData() = 0; virtual void loadCustomRepeat() = 0; }; class NewEditAlarmModel : public AlarmsInternalListItemProvider { app::ApplicationCommon *application = nullptr; std::shared_ptr alarmsRepository; std::shared_ptr soundsPlayer = nullptr; std::shared_ptr rRulePresenter; gui::AlarmInternalListItem *repeatOption = nullptr; public: NewEditAlarmModel(app::ApplicationCommon *app, std::shared_ptr player, std::shared_ptr rRulePresenter, std::shared_ptr alarmsRepository); void loadData(std::shared_ptr record) override; void saveData(std::shared_ptr alarm, AlarmAction action) override; void loadCustomRepeat() override; void clearData() override; void createData(); [[nodiscard]] unsigned int getMinimalItemSpaceRequired() const override; [[nodiscard]] unsigned int requestRecordsCount() override; [[nodiscard]] gui::ListItem *getItem(gui::Order order) override; void requestRecords(uint32_t offset, uint32_t limit) override; }; } // namespace app::alarmClock