[DB] Generalized Genre to Cluster

This commit is contained in:
emeric
2016-04-28 21:51:56 +02:00
parent edfc174771
commit 2975d87889
18 changed files with 175 additions and 267 deletions
+4 -4
View File
@@ -71,9 +71,9 @@ _playQueue(nullptr)
// Filters
Wt::WHBoxLayout *filterLayout = new Wt::WHBoxLayout();
TableFilterGenre *filterGenre = new TableFilterGenre();
filterLayout->addWidget(filterGenre);
_filterChain.addFilter(filterGenre);
TableFilterCluster *filterCluster = new TableFilterCluster();
filterLayout->addWidget(filterCluster);
_filterChain.addFilter(filterCluster);
TableFilterArtist *filterArtist = new TableFilterArtist();
filterLayout->addWidget(filterArtist);
@@ -213,7 +213,7 @@ _playQueue(nullptr)
// Set the selected tracks to the play queue
filterArtist->sigDoubleClicked().connect(boost::bind(&Audio::playSelectedTracks, this, PlayQueueAddAllTracks));
filterRelease->sigDoubleClicked().connect(boost::bind(&Audio::playSelectedTracks, this, PlayQueueAddAllTracks));
filterGenre->sigDoubleClicked().connect(boost::bind(&Audio::playSelectedTracks, this, PlayQueueAddAllTracks));
filterCluster->sigDoubleClicked().connect(boost::bind(&Audio::playSelectedTracks, this, PlayQueueAddAllTracks));
// Play button
// Set the selected tracks to the play queue
+1 -1
View File
@@ -52,7 +52,7 @@ KeywordSearchFilter::getConstraint(Database::SearchFilter& filter)
filter.nameLikeMatch.push_back({
{Database::SearchFilter::Field::Artist, {value}},
{Database::SearchFilter::Field::Release, {value}},
{Database::SearchFilter::Field::Genre, {value}},
{Database::SearchFilter::Field::Cluster, {value}},
{Database::SearchFilter::Field::Track, {value}}
});
}
+14 -13
View File
@@ -30,23 +30,24 @@ namespace Desktop {
using namespace Database;
TableFilterGenre::TableFilterGenre(Wt::WContainerWidget* parent)
TableFilterCluster::TableFilterCluster(Wt::WContainerWidget* parent)
: Wt::WTableView( parent ), Filter()
{
const std::vector<Wt::WString> columnNames = {"Genre", "Tracks"};
const std::vector<Wt::WString> columnNames = {"Type", "Name", "Tracks"};
SearchFilter filter;
Genre::updateUIQueryModel(DboSession(), _queryModel, filter, columnNames);
Cluster::updateUIQueryModel(DboSession(), _queryModel, filter, columnNames);
this->setSelectionMode(Wt::ExtendedSelection);
this->setSortingEnabled(true);
this->setAlternatingRowColors(true);
this->setModel(&_queryModel);
this->setColumnWidth(1, 80);
this->setColumnWidth(1, 120);
this->setColumnWidth(2, 80);
this->selectionChanged().connect(this, &TableFilterGenre::emitUpdate);
this->selectionChanged().connect(this, &TableFilterCluster::emitUpdate);
#if WT_VERSION >= 0X03030400
this->setOverflow(Wt::WContainerWidget::OverflowHidden, Wt::Horizontal);
@@ -74,25 +75,25 @@ TableFilterGenre::TableFilterGenre(Wt::WContainerWidget* parent)
}
void
TableFilterGenre::layoutSizeChanged (int width, int height)
TableFilterCluster::layoutSizeChanged (int width, int height)
{
std::size_t trackColumnSize = this->columnWidth(1).toPixels();
std::size_t otherColumnSizes = this->columnWidth(1).toPixels() + this->columnWidth(2).toPixels();
// Set the remaining size for the name column
this->setColumnWidth(0, width - trackColumnSize - (7 * 2) - 2);
this->setColumnWidth(0, width - otherColumnSizes - (7 * 3) - 2);
}
// Set constraints on this filter
void
TableFilterGenre::refresh(SearchFilter& filter)
TableFilterCluster::refresh(SearchFilter& filter)
{
this->clearSelection();
Genre::updateUIQueryModel(DboSession(), _queryModel, filter);
Cluster::updateUIQueryModel(DboSession(), _queryModel, filter);
}
// Get constraint created by this filter
void
TableFilterGenre::getConstraint(SearchFilter& filter)
TableFilterCluster::getConstraint(SearchFilter& filter)
{
Wt::WModelIndexSet indexSet = this->selectedIndexes();
@@ -102,9 +103,9 @@ TableFilterGenre::getConstraint(SearchFilter& filter)
continue;
// TODO set invisible track id
Database::Genre::id_type id = _queryModel.resultRow( index.row() ).get<0>();
Cluster::id_type id = _queryModel.resultRow( index.row() ).get<0>();
filter.idMatch[Database::SearchFilter::Field::Genre].push_back(id);
filter.idMatch[Database::SearchFilter::Field::Cluster].push_back(id);
}
}
+3 -4
View File
@@ -30,10 +30,10 @@
namespace UserInterface {
namespace Desktop {
class TableFilterGenre : public Wt::WTableView, public Filter
class TableFilterCluster : public Wt::WTableView, public Filter
{
public:
TableFilterGenre(Wt::WContainerWidget* parent = 0);
TableFilterCluster(Wt::WContainerWidget* parent = 0);
// Set constraints on this filter
void refresh(Database::SearchFilter& filter);
@@ -51,8 +51,7 @@ class TableFilterGenre : public Wt::WTableView, public Filter
SigDoubleClicked _sigDoubleClicked;
// Name, track count
Wt::Dbo::QueryModel<Database::Genre::UIQueryResult> _queryModel;
Wt::Dbo::QueryModel<Database::Cluster::UIQueryResult> _queryModel;
};
class TableFilterArtist : public Wt::WTableView, public Filter