// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #pragma once #include "BasePresenter.hpp" #include "application-alarm-clock/models/NewEditAlarmModel.hpp" #include "application-alarm-clock/data/AlarmsData.hpp" namespace app::alarmClock { class AlarmClockEditWindowContract { public: class View { public: virtual ~View() noexcept = default; }; class Presenter : public BasePresenter { public: virtual ~Presenter() noexcept = default; [[nodiscard]] virtual std::shared_ptr getAlarmsItemProvider() const = 0; 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 AlarmClockEditWindowPresenter : public AlarmClockEditWindowContract::Presenter { public: explicit AlarmClockEditWindowPresenter(std::shared_ptr itemProvider); [[nodiscard]] std::shared_ptr getAlarmsItemProvider() const override; void loadData(std::shared_ptr record) override; void saveData(std::shared_ptr record, AlarmAction action) override; void clearData() override; void loadCustomRepeat() override; private: std::shared_ptr alarmFieldsProvider; }; } // namespace app::alarmClock