New UI: filters now operational on all views

This commit is contained in:
emeric
2018-01-31 13:06:59 +01:00
parent 6591006fcc
commit 0da8d83288
12 changed files with 81 additions and 38 deletions
+4 -4
View File
@@ -84,8 +84,8 @@ Artist::refresh()
entry->addFunction("tr", Wt::WTemplate::Functions::tr);
{
Wt::WAnchor *coverAnchor = new Wt::WAnchor(Wt::WLink(Wt::WLink::InternalPath, "/release/" + std::to_string(release.id())));
Wt::WImage *cover = new Wt::WImage(coverAnchor);
Wt::WAnchor* coverAnchor = new Wt::WAnchor(Wt::WLink(Wt::WLink::InternalPath, "/release/" + std::to_string(release.id())));
Wt::WImage* cover = new Wt::WImage(coverAnchor);
cover->setImageLink(SessionImageResource()->getReleaseUrl(release.id(), 128));
// Some images may not be square
cover->setWidth(128);
@@ -93,8 +93,8 @@ Artist::refresh()
}
{
Wt::WAnchor *releaseAnchor = new Wt::WAnchor(Wt::WLink(Wt::WLink::InternalPath, "/release/" + std::to_string(release.id())));
Wt::WText *releaseName = new Wt::WText(releaseAnchor);
Wt::WAnchor* releaseAnchor = new Wt::WAnchor(Wt::WLink(Wt::WLink::InternalPath, "/release/" + std::to_string(release.id())));
Wt::WText* releaseName = new Wt::WText(releaseAnchor);
releaseName->setText(Wt::WString::fromUTF8(release->getName(), Wt::PlainText));
entry->bindWidget("name", releaseAnchor);
}
+3 -3
View File
@@ -83,9 +83,9 @@ Explore::Explore(Wt::WContainerWidget* parent)
stack->addWidget(new Artists(filters));
stack->addWidget(new Artist(filters));
stack->addWidget(new Releases(/*filters*/));
stack->addWidget(new Release(/*filters*/));
stack->addWidget(new Tracks(/*filters*/));
stack->addWidget(new Releases(filters));
stack->addWidget(new Release(filters));
stack->addWidget(new Tracks(filters));
wApp->internalPathChanged().connect(std::bind([=]
{
+5 -5
View File
@@ -33,8 +33,9 @@
namespace UserInterface {
Release::Release(Wt::WContainerWidget* parent)
: Wt::WContainerWidget(parent)
Release::Release(Filters* filters, Wt::WContainerWidget* parent)
: Wt::WContainerWidget(parent),
_filters(filters)
{
wApp->internalPathChanged().connect(std::bind([=]
{
@@ -109,10 +110,9 @@ Release::refresh()
auto tracksContainer = new Wt::WContainerWidget();
t->bindWidget("tracks", tracksContainer);
std::vector<Database::Cluster::id_type> clusterIds; // TODO fill
auto clusterIds = _filters->getClusterIds();
auto tracks = release->getTracks(clusterIds);
// auto tracks = release->getTracks(clusterIds);
auto tracks = release->getTracks();
bool variousArtists = release->hasVariousArtists();
for (auto track : tracks)
+5 -1
View File
@@ -21,15 +21,19 @@
#include <Wt/WContainerWidget>
#include "Filters.hpp"
namespace UserInterface {
class Release : public Wt::WContainerWidget
{
public:
Release(Wt::WContainerWidget* parent = 0);
Release(Filters* filters, Wt::WContainerWidget* parent = 0);
private:
void refresh();
Filters* _filters;
};
} // namespace UserInterface
+8 -7
View File
@@ -36,8 +36,9 @@ namespace UserInterface {
using namespace Database;
Releases::Releases(Wt::WContainerWidget* parent)
: Wt::WContainerWidget(parent)
Releases::Releases(Filters* filters, Wt::WContainerWidget* parent)
: Wt::WContainerWidget(parent),
_filters(filters)
{
auto releases = new Wt::WTemplate(Wt::WString::tr("template-releases"), this);
releases->addFunction("tr", &Wt::WTemplate::Functions::tr);
@@ -63,7 +64,7 @@ Releases::refresh(std::vector<std::string> searchKeywords)
{
_releasesContainer->clear();
std::vector<Cluster::id_type> clusterIds; // TODO fill
auto clusterIds = _filters->getClusterIds();
Wt::Dbo::Transaction transaction(DboSession());
@@ -75,8 +76,8 @@ Releases::refresh(std::vector<std::string> searchKeywords)
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("template-releases-entry"), _releasesContainer);
entry->addFunction("tr", Wt::WTemplate::Functions::tr);
Wt::WAnchor *coverAnchor = new Wt::WAnchor(Wt::WLink(Wt::WLink::InternalPath, "/release/" + std::to_string(release.id())));
Wt::WImage *cover = new Wt::WImage(coverAnchor);
Wt::WAnchor* coverAnchor = new Wt::WAnchor(Wt::WLink(Wt::WLink::InternalPath, "/release/" + std::to_string(release.id())));
Wt::WImage* cover = new Wt::WImage(coverAnchor);
cover->setImageLink(SessionImageResource()->getReleaseUrl(release.id(), 128));
// Some images may not be square
cover->setWidth(128);
@@ -91,8 +92,8 @@ Releases::refresh(std::vector<std::string> searchKeywords)
}
else
{
Wt::WAnchor *artistAnchor = new Wt::WAnchor(Wt::WLink(Wt::WLink::InternalPath, "/artist/" + std::to_string(artists.front().id())));
Wt::WText *artist = new Wt::WText(artistAnchor);
Wt::WAnchor* artistAnchor = new Wt::WAnchor(Wt::WLink(Wt::WLink::InternalPath, "/artist/" + std::to_string(artists.front().id())));
Wt::WText* artist = new Wt::WText(artistAnchor);
artist->setText(Wt::WString::fromUTF8(artists.front()->getName(), Wt::PlainText));
entry->bindWidget("artist-name", artistAnchor);
}
+5 -2
View File
@@ -21,17 +21,20 @@
#include <Wt/WContainerWidget>
#include "Filters.hpp"
namespace UserInterface {
class Releases : public Wt::WContainerWidget
{
public:
Releases(Wt::WContainerWidget* parent = 0);
Releases(Filters* filters, Wt::WContainerWidget* parent = 0);
private:
void refresh(std::vector<std::string> searchKeywords = std::vector<std::string>());
Wt::WContainerWidget *_releasesContainer;
Filters* _filters;
Wt::WContainerWidget* _releasesContainer;
};
} // namespace UserInterface
+4 -3
View File
@@ -35,8 +35,9 @@ namespace UserInterface {
using namespace Database;
Tracks::Tracks(Wt::WContainerWidget* parent)
: Wt::WContainerWidget(parent)
Tracks::Tracks(Filters* filters, Wt::WContainerWidget* parent)
: Wt::WContainerWidget(parent),
_filters(filters)
{
auto tracks = new Wt::WTemplate(Wt::WString::tr("template-tracks"), this);
tracks->addFunction("tr", &Wt::WTemplate::Functions::tr);
@@ -62,7 +63,7 @@ Tracks::refresh(std::vector<std::string> searchKeywords)
{
_tracksContainer->clear();
std::vector<Cluster::id_type> clusterIds; // TODO fill
auto clusterIds = _filters->getClusterIds();
Wt::Dbo::Transaction transaction(DboSession());
+5 -2
View File
@@ -21,17 +21,20 @@
#include <Wt/WContainerWidget>
#include "Filters.hpp"
namespace UserInterface {
class Tracks : public Wt::WContainerWidget
{
public:
Tracks(Wt::WContainerWidget* parent = 0);
Tracks(Filters* filters, Wt::WContainerWidget* parent = 0);
private:
void refresh(std::vector<std::string> searchKeywords = std::vector<std::string>());
Wt::WContainerWidget *_tracksContainer;
Wt::WContainerWidget* _tracksContainer;
Filters* _filters;
};
} // namespace UserInterface