Made the clear button work in the play queue, added a track number infox

This commit is contained in:
emeric
2018-03-17 18:46:19 +01:00
parent 7b0231da10
commit 1d6a2bde4a
4 changed files with 36 additions and 12 deletions
+1
View File
@@ -55,6 +55,7 @@
<!--Playque--> <!--Playque-->
<message id="Lms.PlayQueue.playqueue">Play Queue</message> <message id="Lms.PlayQueue.playqueue">Play Queue</message>
<message id="Lms.PlayQueue.nb-tracks">{1} tracks</message>
<!--Settings--> <!--Settings-->
<message id="Lms.Settings.account">Account</message> <message id="Lms.Settings.account">Account</message>
+2 -1
View File
@@ -17,7 +17,8 @@
<message id="Lms.PlayQueue.template"> <message id="Lms.PlayQueue.template">
<div class="page-header"> <div class="page-header">
<h2>${tr:Lms.PlayQueue.playqueue}</h2> <h2>${tr:Lms.PlayQueue.playqueue}</h2>
${save-btn} ${load-btn} ${clear-btn} <small>${nb-tracks}</small>
${save-btn} ${load-btn} ${clear-btn}
</div> </div>
${entries} ${entries}
${show-more} ${show-more}
+30 -10
View File
@@ -44,6 +44,19 @@ PlayQueue::PlayQueue(Wt::WContainerWidget* parent)
auto clearBtn = new Wt::WText(Wt::WString::tr("Lms.PlayQueue.clear"), Wt::XHTMLText); auto clearBtn = new Wt::WText(Wt::WString::tr("Lms.PlayQueue.clear"), Wt::XHTMLText);
container->bindWidget("clear-btn", clearBtn); 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(); _entriesContainer = new Wt::WContainerWidget();
container->bindWidget("entries", _entriesContainer); container->bindWidget("entries", _entriesContainer);
@@ -53,6 +66,9 @@ PlayQueue::PlayQueue(Wt::WContainerWidget* parent)
_showMore->setHidden(true); _showMore->setHidden(true);
container->bindWidget("show-more", _showMore); container->bindWidget("show-more", _showMore);
_nbTracks = new Wt::WText();
container->bindWidget("nb-tracks", _nbTracks);
{ {
Wt::Dbo::Transaction transaction (DboSession()); Wt::Dbo::Transaction transaction (DboSession());
@@ -66,8 +82,17 @@ PlayQueue::PlayQueue(Wt::WContainerWidget* parent)
addSome(); 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 void
@@ -83,6 +108,7 @@ PlayQueue::addTracks(const std::vector<Database::Track::pointer>& tracks)
for (auto track : tracks) for (auto track : tracks)
Database::PlaylistEntry::create(DboSession(), track, playlist); Database::PlaylistEntry::create(DboSession(), track, playlist);
updateInfo();
addSome(); addSome();
} }
@@ -94,8 +120,7 @@ PlayQueue::playTracks(const std::vector<Database::Track::pointer>& tracks)
Wt::Dbo::Transaction transaction(DboSession()); Wt::Dbo::Transaction transaction(DboSession());
auto playqueue = Database::Playlist::get(DboSession(), currentPlayQueueName, CurrentUser()); auto playqueue = Database::Playlist::get(DboSession(), currentPlayQueueName, CurrentUser());
if (playqueue) playqueue.modify()->clear();
playqueue.modify()->clear();
_entriesContainer->clear(); _entriesContainer->clear();
@@ -105,13 +130,6 @@ PlayQueue::playTracks(const std::vector<Database::Track::pointer>& tracks)
} }
void
PlayQueue::refresh()
{
_entriesContainer->clear();
addSome();
}
void void
PlayQueue::addSome() PlayQueue::addSome()
{ {
@@ -166,6 +184,8 @@ PlayQueue::addSome()
} }
_entriesContainer->removeWidget(entry); _entriesContainer->removeWidget(entry);
updateInfo();
})); }));
} }
+3 -1
View File
@@ -21,6 +21,7 @@
#include <Wt/WContainerWidget> #include <Wt/WContainerWidget>
#include <Wt/WTemplate> #include <Wt/WTemplate>
#include <Wt/WText>
#include "database/Types.hpp" #include "database/Types.hpp"
@@ -35,11 +36,12 @@ class PlayQueue : public Wt::WContainerWidget
void playTracks(const std::vector<Database::Track::pointer>& tracks); void playTracks(const std::vector<Database::Track::pointer>& tracks);
private: private:
void refresh();
void addSome(); void addSome();
void updateInfo();
Wt::WContainerWidget* _entriesContainer; Wt::WContainerWidget* _entriesContainer;
Wt::WTemplate* _showMore; Wt::WTemplate* _showMore;
Wt::WText* _nbTracks;
}; };
} // namespace UserInterface } // namespace UserInterface