Files
MuditaOS/module-apps/apps-common/models/SongsModelInterface.hpp
Maciej Janicki 706a25df1d [BH-1125] Add file indexer
Add file indexer
2021-12-06 09:46:13 +01:00

51 lines
2.8 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 "SongContext.hpp"
#include <string>
#include <ListItemProvider.hpp>
#include <apps-common/ApplicationCommon.hpp>
#include <apps-common/DatabaseModel.hpp>
#include <module-db/Interface/MultimediaFilesRecord.hpp>
namespace app::music
{
class SongsListItemProvider : public app::DatabaseModel<db::multimedia_files::MultimediaFilesRecord>,
public gui::ListItemProvider
{
public:
using OnShortReleaseCallback = std::function<bool(const std::string &fileName)>;
using OnLongPressCallback = std::function<void()>;
using OnSetNavBarTemporaryCallback = std::function<void(const UTF8 &)>;
using OnRestoreNavBarTemporaryCallback = std::function<void()>;
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<audio::Token> getCurrentFileToken() const noexcept = 0;
virtual std::optional<db::multimedia_files::MultimediaFilesRecord> 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