~aleteoryx/muditaos

b4875c8a852e33bdd175d236f6557ae29f8c4a82 — Jakub Pyszczak 5 years ago 0db73fa
[EGD-5983] Remove volume label from music app

Removed volume label from application music player.
Volume level should be shown using new popup system.
Introduced minor fixes in music player.
M module-apps/application-music-player/ApplicationMusicPlayer.cpp => module-apps/application-music-player/ApplicationMusicPlayer.cpp +7 -10
@@ 17,7 17,7 @@ namespace app
    ApplicationMusicPlayer::ApplicationMusicPlayer(std::string name,
                                                   std::string parent,
                                                   StartInBackground startInBackground)
        : Application(name, parent, startInBackground, 4096)
        : Application(std::move(name), std::move(parent), startInBackground, 4096)
    {
        LOG_INFO("ApplicationMusicPlayer::create");
        connect(typeid(AudioStartPlaybackResponse), [&](sys::Message *msg) {


@@ 26,18 26,14 @@ namespace app
        });
    }

    ApplicationMusicPlayer::~ApplicationMusicPlayer()
    {
        LOG_INFO("ApplicationMusicPlayer::destroy");
    }

    void ApplicationMusicPlayer::handlePlayResponse(sys::Message *msg)
    {
        auto startResponse = static_cast<AudioStartPlaybackResponse *>(msg);
        currentFileToken   = startResponse->token;
    }

    sys::MessagePointer ApplicationMusicPlayer::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp)
    sys::MessagePointer ApplicationMusicPlayer::DataReceivedHandler(sys::DataMessage *msgl,
                                                                    [[maybe_unused]] sys::ResponseMessage *resp)
    {
        return Application::DataReceivedHandler(msgl);
    }


@@ 46,8 42,9 @@ namespace app
    sys::ReturnCodes ApplicationMusicPlayer::InitHandler()
    {
        auto ret = Application::InitHandler();
        if (ret != sys::ReturnCodes::Success)
        if (ret != sys::ReturnCodes::Success) {
            return ret;
        }

        createUserInterface();



@@ 83,8 80,8 @@ namespace app
            auto time = utils::time::Scoped("fetch tags time");
            for (const auto &entry : std::filesystem::directory_iterator(musicFolder)) {
                if (!std::filesystem::is_directory(entry)) {
                    const auto filePath = entry.path();
                    auto fileTags       = getFileTags(filePath);
                    const auto &filePath = entry.path();
                    const auto fileTags  = getFileTags(filePath);
                    if (fileTags) {
                        musicFiles.push_back(*fileTags);
                        LOG_DEBUG(" - file %s found", entry.path().c_str());

M module-apps/application-music-player/ApplicationMusicPlayer.hpp => module-apps/application-music-player/ApplicationMusicPlayer.hpp +6 -6
@@ 29,16 29,16 @@ namespace app
        std::optional<audio::Token> currentFileToken;

      public:
        ApplicationMusicPlayer(std::string name                    = name_music_player,
                               std::string parent                  = {},
                               StartInBackground startInBackground = {false});
        virtual ~ApplicationMusicPlayer();
        explicit ApplicationMusicPlayer(std::string name                    = name_music_player,
                                        std::string parent                  = {},
                                        StartInBackground startInBackground = {false});

        sys::MessagePointer DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) override;
        sys::MessagePointer DataReceivedHandler(sys::DataMessage *msgl,
                                                [[maybe_unused]] sys::ResponseMessage *resp) override;
        sys::ReturnCodes InitHandler() override;
        sys::ReturnCodes DeinitHandler() override;

        sys::ReturnCodes SwitchPowerModeHandler(const sys::ServicePowerMode mode) override final
        sys::ReturnCodes SwitchPowerModeHandler(const sys::ServicePowerMode mode) override
        {
            return sys::ReturnCodes::Success;
        }

M module-apps/application-music-player/models/SongsModel.cpp => module-apps/application-music-player/models/SongsModel.cpp +4 -3
@@ 32,10 32,11 @@ auto SongsModel::getItem(gui::Order order) -> gui::ListItem *
    return getRecord(order);
}

void SongsModel::createData(std::vector<audio::Tags> songsList, std::function<bool(const std::string &fileName)> func)
void SongsModel::createData(const std::vector<audio::Tags> &songsList,
                            std::function<bool(const std::string &fileName)> func)
{
    for (auto song : songsList) {
        auto item = new gui::SongItem(song.title, song.artist, utils::time::Duration(song.total_duration_s).str());
    for (const auto &song : songsList) {
        auto item = new gui::SongItem(song.artist, song.title, utils::time::Duration(song.total_duration_s).str());

        item->activatedCallback = [=](gui::Item &) {
            func(song.filePath);

M module-apps/application-music-player/models/SongsModel.hpp => module-apps/application-music-player/models/SongsModel.hpp +2 -2
@@ 15,10 15,10 @@ class SongsModel : public app::InternalModel<gui::ListItem *>, public gui::ListI
    app::Application *application = nullptr;

  public:
    SongsModel(app::Application *app);
    explicit SongsModel(app::Application *app);

    void clearData();
    void createData(std::vector<audio::Tags> songsList, std::function<bool(const std::string &fileName)>);
    void createData(const std::vector<audio::Tags> &songsList, std::function<bool(const std::string &fileName)>);

    [[nodiscard]] auto requestRecordsCount() -> unsigned int override;


M module-apps/application-music-player/widgets/SongItem.cpp => module-apps/application-music-player/widgets/SongItem.cpp +2 -2
@@ 8,7 8,7 @@ namespace gui

    using namespace musicPlayerStyle;

    SongItem::SongItem(std::string songName, std::string authorName, std::string duration)
    SongItem::SongItem(const std::string &authorName, const std::string &songName, const std::string &duration)
    {
        setMinimumSize(songItem::w, songItem::h);
        setMargins(Margins(0, style::margins::small, 0, style::margins::small));


@@ 64,7 64,7 @@ namespace gui
        authorText->setEditMode(EditMode::Browse);
        authorText->setText(authorName);

        dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool {
        dimensionChangedCallback = [&]([[maybe_unused]] gui::Item &item, const BoundingBox &newDim) -> bool {
            vBox->setArea({0, 0, newDim.w, newDim.h});
            return true;
        };

M module-apps/application-music-player/widgets/SongItem.hpp => module-apps/application-music-player/widgets/SongItem.hpp +2 -2
@@ 16,9 16,9 @@ namespace gui
    {

      public:
        SongItem(std::string authorName, std::string songName, std::string duration);
        SongItem(const std::string &authorName, const std::string &songName, const std::string &duration);

        ~SongItem() override = default;
      private:
        VBox *vBox                  = nullptr;
        HBox *firstHBox             = nullptr;
        HBox *secondHBox            = nullptr;

M module-apps/application-music-player/windows/MusicPlayerAllSongsWindow.cpp => module-apps/application-music-player/windows/MusicPlayerAllSongsWindow.cpp +2 -69
@@ 7,8 7,8 @@
#include <Style.hpp>
#include <cassert>
#include <i18n/i18n.hpp>
#include <log/log.hpp>
#include <service-audio/AudioServiceAPI.hpp>
#include <gui/widgets/ListView.hpp>

namespace gui
{


@@ 26,25 26,6 @@ namespace gui
        buildInterface();
    }

    auto MusicPlayerAllSongsWindow::setCurrentVolume(const std::function<void(const audio::Volume &)> &successCallback,
                                                     const std::function<void(const audio::Volume &)> &errCallback)
        -> bool
    {
        audio::Volume volume;
        const auto ret = application->getCurrentVolume(volume);
        if (ret == audio::RetCode::Success) {
            if (successCallback != nullptr) {
                successCallback(volume);
            }
        }
        else {
            if (errCallback != nullptr) {
                errCallback(volume);
            }
        }
        return ret == audio::RetCode::Success;
    }

    void MusicPlayerAllSongsWindow::buildInterface()
    {
        AppWindow::buildInterface();


@@ 62,35 43,6 @@ namespace gui
                                      songsModel,
                                      style::listview::ScrollBarType::Fixed);

        auto successCallback = [this](const audio::Volume &volume) {
            auto volumeText = audio::GetVolumeText(volume);
            soundLabel      = new gui::Label(this,
                                        musicPlayerStyle::volumeLabel::x,
                                        musicPlayerStyle::volumeLabel::y,
                                        musicPlayerStyle::volumeLabel::w,
                                        musicPlayerStyle::volumeLabel::h,
                                        volumeText);
        };
        auto errCallback = [this](const audio::Volume &volume) {
            soundLabel = new gui::Label(this,
                                        musicPlayerStyle::volumeLabel::x,
                                        musicPlayerStyle::volumeLabel::y,
                                        musicPlayerStyle::volumeLabel::w,
                                        musicPlayerStyle::volumeLabel::h,
                                        musicPlayerStyle::volumeLabel::defaultVolumeLabelText);
        };
        setCurrentVolume(successCallback, errCallback);

        soundLabel->setMargins(gui::Margins(musicPlayerStyle::volumeLabel::leftMargin,
                                            musicPlayerStyle::volumeLabel::topMargin,
                                            musicPlayerStyle::volumeLabel::rightMargin,
                                            musicPlayerStyle::volumeLabel::bottomMargin));
        soundLabel->setFilled(false);
        soundLabel->setPenFocusWidth(style::window::default_border_focus_w);
        soundLabel->setPenWidth(style::window::default_border_no_focus_w);
        soundLabel->setFont(style::window::font::medium);
        soundLabel->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Top));

        setFocusItem(songsList);
    }



@@ 99,7 51,7 @@ namespace gui
        erase();
    }

    void MusicPlayerAllSongsWindow::onBeforeShow(ShowMode mode, SwitchData *data)
    void MusicPlayerAllSongsWindow::onBeforeShow([[maybe_unused]] ShowMode mode, [[maybe_unused]] SwitchData *data)
    {
        auto app = dynamic_cast<app::ApplicationMusicPlayer *>(application);
        assert(app);


@@ 108,23 60,4 @@ namespace gui
                               [app](const std::string &fileName) { return app->play(fileName); });
    }

    bool MusicPlayerAllSongsWindow::onDatabaseMessage(sys::Message *msgl)
    {
        return false;
    }

    bool MusicPlayerAllSongsWindow::onInput(const InputEvent &inputEvent)
    {
        auto ret           = AppWindow::onInput(inputEvent);
        const auto keyCode = inputEvent.keyCode;
        if (keyCode == KeyCode::KEY_VOLUP || keyCode == KeyCode::KEY_VOLDN || keyCode == KeyCode::KEY_ENTER) {
            auto successCallback = [this](const audio::Volume &volume) {
                auto volumeText = audio::GetVolumeText(volume);
                soundLabel->setText(volumeText);
            };
            return setCurrentVolume(successCallback, nullptr);
        }
        return ret;
    }

} /* namespace gui */

M module-apps/application-music-player/windows/MusicPlayerAllSongsWindow.hpp => module-apps/application-music-player/windows/MusicPlayerAllSongsWindow.hpp +3 -13
@@ 5,36 5,26 @@

#include "application-music-player/models/SongsModel.hpp"
#include "AppWindow.hpp"
#include "ListView.hpp"
#include <TextFixedSize.hpp>

#include <vector>
#include <string>

namespace gui
{

    class ListView;
    class MusicPlayerAllSongsWindow : public AppWindow
    {
        std::shared_ptr<SongsModel> songsModel = nullptr;

        ListView *songsList = nullptr;
        Label *soundLabel   = nullptr;

        auto setCurrentVolume(const std::function<void(const audio::Volume &)> &successCallback,
                              const std::function<void(const audio::Volume &)> &errCallback = nullptr) -> bool;

      public:
        MusicPlayerAllSongsWindow(app::Application *app);
        explicit MusicPlayerAllSongsWindow(app::Application *app);

        // virtual methods
        void onBeforeShow(ShowMode mode, SwitchData *data) override;
        void onBeforeShow([[maybe_unused]] ShowMode mode, [[maybe_unused]] SwitchData *data) override;

        void rebuild() override;
        void buildInterface() override;
        void destroyInterface() override;
        bool onDatabaseMessage(sys::Message *msg) override;
        bool onInput(const InputEvent &inputEvent) final;
    };

} /* namespace gui */