Still converting to bootstrap 5. Converted some dropdowns + some nav menus
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
|
||||
#include "ArtistsView.hpp"
|
||||
|
||||
#include <Wt/WMenu.h>
|
||||
#include <Wt/WPushButton.h>
|
||||
|
||||
#include "services/database/Artist.hpp"
|
||||
#include "services/database/Session.hpp"
|
||||
@@ -45,25 +45,30 @@ Artists::Artists(Filters& filters)
|
||||
{
|
||||
addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
|
||||
auto bindMenuItem {[this](const std::string& var, const Wt::WString& title, ArtistCollector::Mode mode)
|
||||
{
|
||||
auto* menu {bindNew<Wt::WMenu>("mode")};
|
||||
|
||||
auto addItem = [this](Wt::WMenu& menu,const Wt::WString& str, ArtistCollector::Mode mode)
|
||||
auto *menuItem {bindNew<Wt::WPushButton>(var, title)};
|
||||
menuItem->clicked().connect([=]
|
||||
{
|
||||
auto* item {menu.addItem(str)};
|
||||
item->clicked().connect([this, mode] { refreshView(mode); });
|
||||
refreshView(mode);
|
||||
_currentActiveItem->removeStyleClass("active");
|
||||
menuItem->addStyleClass("active");
|
||||
_currentActiveItem = menuItem;
|
||||
});
|
||||
|
||||
if (mode == _defaultMode)
|
||||
item->renderSelected(true);
|
||||
};
|
||||
if (mode == _defaultMode)
|
||||
{
|
||||
_currentActiveItem = menuItem;
|
||||
_currentActiveItem->addStyleClass("active");
|
||||
}
|
||||
}};
|
||||
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.random"), ArtistCollector::Mode::Random);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.starred"), ArtistCollector::Mode::Starred);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.recently-played"), ArtistCollector::Mode::RecentlyPlayed);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.most-played"), ArtistCollector::Mode::MostPlayed);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.recently-added"), ArtistCollector::Mode::RecentlyAdded);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.all"), ArtistCollector::Mode::All);
|
||||
}
|
||||
bindMenuItem("random", Wt::WString::tr("Lms.Explore.random"), ArtistCollector::Mode::Random);
|
||||
bindMenuItem("starred", Wt::WString::tr("Lms.Explore.starred"), ArtistCollector::Mode::Starred);
|
||||
bindMenuItem("recently-played", Wt::WString::tr("Lms.Explore.recently-played"), ArtistCollector::Mode::RecentlyPlayed);
|
||||
bindMenuItem("most-played", Wt::WString::tr("Lms.Explore.most-played"), ArtistCollector::Mode::MostPlayed);
|
||||
bindMenuItem("recently-added", Wt::WString::tr("Lms.Explore.recently-added"), ArtistCollector::Mode::RecentlyAdded);
|
||||
bindMenuItem("all", Wt::WString::tr("Lms.Explore.all"), ArtistCollector::Mode::All);
|
||||
|
||||
_linkType = bindNew<Wt::WComboBox>("link-type");
|
||||
_linkType->setModel(std::make_shared<ArtistLinkModel>());
|
||||
|
||||
@@ -48,6 +48,7 @@ namespace UserInterface
|
||||
static constexpr std::size_t _batchSize {30};
|
||||
static constexpr std::size_t _maxCount {256};
|
||||
|
||||
Wt::WWidget* _currentActiveItem {};
|
||||
InfiniteScrollingContainer* _container {};
|
||||
ArtistCollector _artistCollector;
|
||||
Wt::WComboBox* _linkType {};
|
||||
|
||||
@@ -19,14 +19,13 @@
|
||||
|
||||
#include "ReleasesView.hpp"
|
||||
|
||||
#include <Wt/WMenu.h>
|
||||
#include <Wt/WPopupMenu.h>
|
||||
#include <Wt/WPushButton.h>
|
||||
#include <Wt/WText.h>
|
||||
|
||||
#include "services/database/Release.hpp"
|
||||
#include "services/database/Session.hpp"
|
||||
|
||||
#include "common/InfiniteScrollingContainer.hpp"
|
||||
#include "common/Template.hpp"
|
||||
#include "ReleaseListHelpers.hpp"
|
||||
#include "Filters.hpp"
|
||||
#include "LmsApplication.hpp"
|
||||
@@ -36,10 +35,11 @@ using namespace Database;
|
||||
namespace UserInterface {
|
||||
|
||||
Releases::Releases(Filters& filters)
|
||||
: Wt::WTemplate {Wt::WString::tr("Lms.Explore.Releases.template")}
|
||||
: Template {Wt::WString::tr("Lms.Explore.Releases.template")}
|
||||
, _releaseCollector {filters, _defaultMode, _maxCount}
|
||||
{
|
||||
addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
addFunction("id", &Wt::WTemplate::Functions::id);
|
||||
|
||||
auto bindMenuItem {[this](const std::string& var, const Wt::WString& title, ReleaseCollector::Mode mode)
|
||||
{
|
||||
@@ -71,24 +71,18 @@ Releases::Releases(Filters& filters)
|
||||
{
|
||||
releasesAction.emit(PlayQueueAction::Play, getAllReleases());
|
||||
});
|
||||
Wt::WPushButton* moreBtn {bindNew<Wt::WPushButton>("more-btn", Wt::WString::tr("Lms.Explore.template.more-btn"), Wt::TextFormat::XHTML)};
|
||||
moreBtn->clicked().connect([=]
|
||||
{
|
||||
Wt::WPopupMenu* popup {LmsApp->createPopupMenu()};
|
||||
|
||||
popup->addItem(Wt::WString::tr("Lms.Explore.play-shuffled"))
|
||||
->triggered().connect([this]
|
||||
{
|
||||
releasesAction.emit(PlayQueueAction::PlayShuffled, getAllReleases());
|
||||
});
|
||||
popup->addItem(Wt::WString::tr("Lms.Explore.play-last"))
|
||||
->triggered().connect([this]
|
||||
{
|
||||
releasesAction.emit(PlayQueueAction::PlayLast, getAllReleases());
|
||||
});
|
||||
|
||||
popup->popup(moreBtn);
|
||||
});
|
||||
bindNew<Wt::WPushButton>("more-btn", Wt::WString::tr("Lms.Explore.template.more-btn"), Wt::TextFormat::XHTML);
|
||||
bindNew<Wt::WPushButton>("play-shuffled", Wt::WString::tr("Lms.Explore.play-shuffled"), Wt::TextFormat::Plain)
|
||||
->clicked().connect([=]
|
||||
{
|
||||
releasesAction.emit(PlayQueueAction::PlayShuffled, getAllReleases());
|
||||
});
|
||||
bindNew<Wt::WPushButton>("play-last", Wt::WString::tr("Lms.Explore.play-last"), Wt::TextFormat::Plain)
|
||||
->clicked().connect([=]
|
||||
{
|
||||
releasesAction.emit(PlayQueueAction::PlayLast, getAllReleases());
|
||||
});
|
||||
|
||||
_container = bindNew<InfiniteScrollingContainer>("releases", Wt::WString::tr("Lms.Explore.Releases.template.container"));
|
||||
_container->onRequestElements.connect([this]
|
||||
|
||||
@@ -19,12 +19,11 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
#include <Wt/WContainerWidget.h>
|
||||
#include <Wt/WTemplate.h>
|
||||
|
||||
#include "services/database/Types.hpp"
|
||||
|
||||
#include "common/Template.hpp"
|
||||
#include "PlayQueueAction.hpp"
|
||||
#include "ReleaseCollector.hpp"
|
||||
|
||||
@@ -33,7 +32,7 @@ namespace UserInterface
|
||||
class Filters;
|
||||
class InfiniteScrollingContainer;
|
||||
|
||||
class Releases : public Wt::WTemplate
|
||||
class Releases : public Template
|
||||
{
|
||||
public:
|
||||
Releases(Filters& filters);
|
||||
|
||||
@@ -19,9 +19,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <vector>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <Wt/WContainerWidget.h>
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "services/database/Object.hpp"
|
||||
#include "services/database/TrackId.hpp"
|
||||
#include "DatabaseCollectorBase.hpp"
|
||||
|
||||
@@ -19,10 +19,7 @@
|
||||
|
||||
#include "TracksView.hpp"
|
||||
|
||||
#include <Wt/WMenu.h>
|
||||
#include <Wt/WPopupMenu.h>
|
||||
#include <Wt/WPushButton.h>
|
||||
#include <Wt/WText.h>
|
||||
|
||||
#include "services/database/Session.hpp"
|
||||
#include "services/database/Track.hpp"
|
||||
@@ -38,55 +35,54 @@ using namespace Database;
|
||||
namespace UserInterface {
|
||||
|
||||
Tracks::Tracks(Filters& filters)
|
||||
: Wt::WTemplate {Wt::WString::tr("Lms.Explore.Tracks.template")},
|
||||
: Template {Wt::WString::tr("Lms.Explore.Tracks.template")},
|
||||
_trackCollector {filters, _defaultMode, _maxCount}
|
||||
{
|
||||
addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
addFunction("id", &Wt::WTemplate::Functions::id);
|
||||
|
||||
auto bindMenuItem {[this](const std::string& var, const Wt::WString& title, TrackCollector::Mode mode)
|
||||
{
|
||||
auto* menu {bindNew<Wt::WMenu>("mode")};
|
||||
|
||||
auto addItem = [this](Wt::WMenu& menu,const Wt::WString& str, TrackCollector::Mode mode)
|
||||
auto *menuItem {bindNew<Wt::WPushButton>(var, title)};
|
||||
menuItem->clicked().connect([=]
|
||||
{
|
||||
auto* item {menu.addItem(str)};
|
||||
item->clicked().connect([this, mode] { refreshView(mode); });
|
||||
refreshView(mode);
|
||||
_currentActiveItem->removeStyleClass("active");
|
||||
menuItem->addStyleClass("active");
|
||||
_currentActiveItem = menuItem;
|
||||
});
|
||||
|
||||
if (mode == _defaultMode)
|
||||
item->renderSelected(true);
|
||||
};
|
||||
if (mode == _defaultMode)
|
||||
{
|
||||
_currentActiveItem = menuItem;
|
||||
_currentActiveItem->addStyleClass("active");
|
||||
}
|
||||
}};
|
||||
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.random"), TrackCollector::Mode::Random);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.starred"), TrackCollector::Mode::Starred);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.recently-played"), TrackCollector::Mode::RecentlyPlayed);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.most-played"), TrackCollector::Mode::MostPlayed);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.recently-added"), TrackCollector::Mode::RecentlyAdded);
|
||||
addItem(*menu, Wt::WString::tr("Lms.Explore.all"), TrackCollector::Mode::All);
|
||||
}
|
||||
bindMenuItem("random", Wt::WString::tr("Lms.Explore.random"), TrackCollector::Mode::Random);
|
||||
bindMenuItem("starred", Wt::WString::tr("Lms.Explore.starred"), TrackCollector::Mode::Starred);
|
||||
bindMenuItem("recently-played", Wt::WString::tr("Lms.Explore.recently-played"), TrackCollector::Mode::RecentlyPlayed);
|
||||
bindMenuItem("most-played", Wt::WString::tr("Lms.Explore.most-played"), TrackCollector::Mode::MostPlayed);
|
||||
bindMenuItem("recently-added", Wt::WString::tr("Lms.Explore.recently-added"), TrackCollector::Mode::RecentlyAdded);
|
||||
bindMenuItem("all", Wt::WString::tr("Lms.Explore.all"), TrackCollector::Mode::All);
|
||||
|
||||
Wt::WPushButton* playBtn {bindNew<Wt::WPushButton>("play-btn", Wt::WString::tr("Lms.Explore.template.play-btn"), Wt::TextFormat::XHTML)};
|
||||
playBtn->clicked().connect([=]
|
||||
{
|
||||
tracksAction.emit(PlayQueueAction::Play, getAllTracks());
|
||||
});
|
||||
bindNew<Wt::WPushButton>("play-btn", Wt::WString::tr("Lms.Explore.template.play-btn"), Wt::TextFormat::XHTML)
|
||||
->clicked().connect([=]
|
||||
{
|
||||
tracksAction.emit(PlayQueueAction::Play, getAllTracks());
|
||||
});
|
||||
|
||||
Wt::WPushButton* moreBtn {bindNew<Wt::WPushButton>("more-btn", Wt::WString::tr("Lms.Explore.template.more-btn"), Wt::TextFormat::XHTML)};
|
||||
moreBtn->clicked().connect([=]
|
||||
{
|
||||
Wt::WPopupMenu* popup {LmsApp->createPopupMenu()};
|
||||
|
||||
popup->addItem(Wt::WString::tr("Lms.Explore.play-shuffled"))
|
||||
->triggered().connect(this, [this]
|
||||
{
|
||||
tracksAction.emit(PlayQueueAction::PlayShuffled, getAllTracks());
|
||||
});
|
||||
popup->addItem(Wt::WString::tr("Lms.Explore.play-last"))
|
||||
->triggered().connect(this, [this]
|
||||
{
|
||||
tracksAction.emit(PlayQueueAction::PlayLast, getAllTracks());
|
||||
});
|
||||
|
||||
popup->popup(moreBtn);
|
||||
});
|
||||
bindNew<Wt::WPushButton>("more-btn", Wt::WString::tr("Lms.Explore.template.more-btn"), Wt::TextFormat::XHTML);
|
||||
bindNew<Wt::WPushButton>("play-shuffled", Wt::WString::tr("Lms.Explore.play-shuffled"), Wt::TextFormat::Plain)
|
||||
->clicked().connect([=]
|
||||
{
|
||||
tracksAction.emit(PlayQueueAction::PlayShuffled, getAllTracks());
|
||||
});
|
||||
bindNew<Wt::WPushButton>("play-last", Wt::WString::tr("Lms.Explore.play-last"), Wt::TextFormat::Plain)
|
||||
->clicked().connect([=]
|
||||
{
|
||||
tracksAction.emit(PlayQueueAction::PlayLast, getAllTracks());
|
||||
});
|
||||
|
||||
_container = bindNew<InfiniteScrollingContainer>("tracks");
|
||||
_container->onRequestElements.connect([this]
|
||||
|
||||
@@ -19,22 +19,18 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
#include <Wt/WContainerWidget.h>
|
||||
#include <Wt/WTemplate.h>
|
||||
|
||||
#include "services/database/Types.hpp"
|
||||
|
||||
#include "common/Template.hpp"
|
||||
#include "PlayQueueAction.hpp"
|
||||
#include "TrackCollector.hpp"
|
||||
|
||||
namespace UserInterface
|
||||
{
|
||||
|
||||
class Filters;
|
||||
class InfiniteScrollingContainer;
|
||||
|
||||
class Tracks : public Wt::WTemplate
|
||||
class Tracks : public Template
|
||||
{
|
||||
public:
|
||||
Tracks(Filters& filters);
|
||||
@@ -52,9 +48,9 @@ namespace UserInterface
|
||||
static constexpr std::size_t _batchSize {6};
|
||||
static constexpr std::size_t _maxCount {160};
|
||||
|
||||
Wt::WWidget* _currentActiveItem {};
|
||||
InfiniteScrollingContainer* _container {};
|
||||
TrackCollector _trackCollector;
|
||||
};
|
||||
|
||||
} // namespace UserInterface
|
||||
|
||||
|
||||
Reference in New Issue
Block a user