// 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 "SongContext.hpp" #include #include #include #include #include namespace app::music { class SongsListItemProvider : public app::DatabaseModel, public gui::ListItemProvider { public: using OnShortReleaseCallback = std::function; using OnLongPressCallback = std::function; using OnSetNavBarTemporaryCallback = std::function; using OnRestoreNavBarTemporaryCallback = std::function; explicit SongsListItemProvider(app::ApplicationCommon *app); virtual ~SongsListItemProvider() noexcept = default; virtual void createData(OnShortReleaseCallback shortReleaseCallback, OnLongPressCallback longPressCallback, OnSetNavBarTemporaryCallback navBarTemporaryMode, OnRestoreNavBarTemporaryCallback navBarRestoreFromTemporaryMode) = 0; virtual void clearData() = 0; }; class SongsModelInterface : public SongsListItemProvider { public: explicit SongsModelInterface(app::ApplicationCommon *app); virtual ~SongsModelInterface() noexcept = default; virtual bool isSongPlaying() const noexcept = 0; virtual void setCurrentSongState(SongState songState) noexcept = 0; virtual std::optional getCurrentFileToken() const noexcept = 0; virtual std::optional getActivatedRecord() const noexcept = 0; virtual SongContext getCurrentSongContext() const noexcept = 0; virtual void setCurrentSongContext(SongContext context) = 0; virtual void clearCurrentSongContext() = 0; virtual std::string getNextFilePath(const std::string &filePath) const = 0; virtual std::string getPreviousFilePath(const std::string &filePath) const = 0; virtual void updateRepository(const std::string &filePath) = 0; }; } // namespace app::music