// 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 "AlarmInternalListItem.hpp" #include "application-alarm-clock/data/AlarmsData.hpp" #include #include #include #include #include namespace gui { const std::array snoozeOptions = { AlarmSnooze::FiveMinutes, AlarmSnooze::TenMinutes, AlarmSnooze::FifteenMinutes, AlarmSnooze::ThirtyMinutes}; class AlarmOptionsItem : public AlarmInternalListItem { enum class MusicStatus { Stop, Play }; app::ApplicationCommon *application = nullptr; gui::VBox *vBox = nullptr; gui::HBox *hBox = nullptr; gui::Label *optionLabel = nullptr; gui::Label *descriptionLabel = nullptr; gui::Image *leftArrow = nullptr; gui::Image *rightArrow = nullptr; AlarmOptionItemName itemName; std::vector optionsNames; /// pointer to audio operations which allows to make audio preview std::unique_ptr audioOperations; std::vector songsList; MusicStatus musicStatus = MusicStatus::Stop; audio::Token currentlyPreviewedToken; std::string currentlyPreviewedPath; unsigned int actualVectorIndex = 0; uint32_t repeatOptionValue = 0; std::function bottomBarTemporaryMode = nullptr; std::function bottomBarRestoreFromTemporaryMode = nullptr; void prepareOptionsNames(); void applyCallbacks(); std::vector getMusicFilesList(); public: AlarmOptionsItem(app::ApplicationCommon *app, AlarmOptionItemName itemName, std::function bottomBarTemporaryMode = nullptr, std::function bottomBarRestoreFromTemporaryMode = nullptr); protected: bool playAudioPreview(const std::string &path); bool pauseAudioPreview(); bool resumeAudioPreview(); bool stopAudioPreview(); }; } /* namespace gui */