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