diff --git a/approot/messages.xml b/approot/messages.xml index a8fdd8e5..27112c53 100644 --- a/approot/messages.xml +++ b/approot/messages.xml @@ -55,6 +55,7 @@ Play Queue +{1} tracks Account diff --git a/approot/playqueue.xml b/approot/playqueue.xml index 496a2468..7c08fed1 100644 --- a/approot/playqueue.xml +++ b/approot/playqueue.xml @@ -17,7 +17,8 @@ ${entries} ${show-more} diff --git a/src/ui/PlayQueueView.cpp b/src/ui/PlayQueueView.cpp index 9991b056..27926ec0 100644 --- a/src/ui/PlayQueueView.cpp +++ b/src/ui/PlayQueueView.cpp @@ -44,6 +44,19 @@ PlayQueue::PlayQueue(Wt::WContainerWidget* parent) auto clearBtn = new Wt::WText(Wt::WString::tr("Lms.PlayQueue.clear"), Wt::XHTMLText); container->bindWidget("clear-btn", clearBtn); + clearBtn->clicked().connect(std::bind([=] + { + { + Wt::Dbo::Transaction transaction(DboSession()); + + auto playlist = Database::Playlist::get(DboSession(), currentPlayQueueName, CurrentUser()); + playlist.modify()->clear(); + _showMore->setHidden(true); + } + + _entriesContainer->clear(); + updateInfo(); + })); _entriesContainer = new Wt::WContainerWidget(); container->bindWidget("entries", _entriesContainer); @@ -53,6 +66,9 @@ PlayQueue::PlayQueue(Wt::WContainerWidget* parent) _showMore->setHidden(true); container->bindWidget("show-more", _showMore); + _nbTracks = new Wt::WText(); + container->bindWidget("nb-tracks", _nbTracks); + { Wt::Dbo::Transaction transaction (DboSession()); @@ -66,8 +82,17 @@ PlayQueue::PlayQueue(Wt::WContainerWidget* parent) addSome(); })); - refresh(); + updateInfo(); + addSome(); +} +void +PlayQueue::updateInfo() +{ + Wt::Dbo::Transaction transaction(DboSession()); + + auto playlist = Database::Playlist::get(DboSession(), currentPlayQueueName, CurrentUser()); + _nbTracks->setText(Wt::WString::tr("Lms.PlayQueue.nb-tracks").arg(playlist->getCount())); } void @@ -83,6 +108,7 @@ PlayQueue::addTracks(const std::vector& tracks) for (auto track : tracks) Database::PlaylistEntry::create(DboSession(), track, playlist); + updateInfo(); addSome(); } @@ -94,8 +120,7 @@ PlayQueue::playTracks(const std::vector& tracks) Wt::Dbo::Transaction transaction(DboSession()); auto playqueue = Database::Playlist::get(DboSession(), currentPlayQueueName, CurrentUser()); - if (playqueue) - playqueue.modify()->clear(); + playqueue.modify()->clear(); _entriesContainer->clear(); @@ -105,13 +130,6 @@ PlayQueue::playTracks(const std::vector& tracks) } -void -PlayQueue::refresh() -{ - _entriesContainer->clear(); - addSome(); -} - void PlayQueue::addSome() { @@ -166,6 +184,8 @@ PlayQueue::addSome() } _entriesContainer->removeWidget(entry); + + updateInfo(); })); } diff --git a/src/ui/PlayQueueView.hpp b/src/ui/PlayQueueView.hpp index 9f8e932a..6975a0df 100644 --- a/src/ui/PlayQueueView.hpp +++ b/src/ui/PlayQueueView.hpp @@ -21,6 +21,7 @@ #include #include +#include #include "database/Types.hpp" @@ -35,11 +36,12 @@ class PlayQueue : public Wt::WContainerWidget void playTracks(const std::vector& tracks); private: - void refresh(); void addSome(); + void updateInfo(); Wt::WContainerWidget* _entriesContainer; Wt::WTemplate* _showMore; + Wt::WText* _nbTracks; }; } // namespace UserInterface