Reorganized the UI/xml part to better handle next steps
This commit is contained in:
+11
-11
@@ -21,26 +21,26 @@ lms_SOURCES = \
|
||||
$(srcdir)/metadata/AvFormat.cpp \
|
||||
$(srcdir)/metadata/TagLibParser.cpp \
|
||||
$(srcdir)/scanner/MediaScanner.cpp \
|
||||
$(srcdir)/ui/ArtistView.cpp \
|
||||
$(srcdir)/ui/ArtistsView.cpp \
|
||||
$(srcdir)/ui/Explore.cpp \
|
||||
$(srcdir)/ui/Filters.cpp \
|
||||
$(srcdir)/ui/explore/ArtistView.cpp \
|
||||
$(srcdir)/ui/explore/ArtistsView.cpp \
|
||||
$(srcdir)/ui/explore/Explore.cpp \
|
||||
$(srcdir)/ui/explore/Filters.cpp \
|
||||
$(srcdir)/ui/explore/ReleasesView.cpp \
|
||||
$(srcdir)/ui/explore/ReleaseView.cpp \
|
||||
$(srcdir)/ui/explore/TracksView.cpp \
|
||||
$(srcdir)/ui/Auth.cpp \
|
||||
$(srcdir)/ui/HomeView.cpp \
|
||||
$(srcdir)/ui/LmsApplication.cpp \
|
||||
$(srcdir)/ui/Auth.cpp \
|
||||
$(srcdir)/ui/MediaPlayer.cpp \
|
||||
$(srcdir)/ui/PlayQueueView.cpp \
|
||||
$(srcdir)/ui/ReleasesView.cpp \
|
||||
$(srcdir)/ui/ReleaseView.cpp \
|
||||
$(srcdir)/ui/TracksView.cpp \
|
||||
$(srcdir)/ui/common/Validators.cpp \
|
||||
$(srcdir)/ui/admin/DatabaseSettingsView.cpp \
|
||||
$(srcdir)/ui/admin/AdminWizardView.cpp \
|
||||
$(srcdir)/ui/common/InputRange.cpp \
|
||||
$(srcdir)/ui/common/LineEdit.cpp \
|
||||
$(srcdir)/ui/common/Validators.cpp \
|
||||
$(srcdir)/ui/resource/AvConvTranscodeStreamResource.cpp \
|
||||
$(srcdir)/ui/resource/ImageResource.cpp \
|
||||
$(srcdir)/ui/resource/TranscodeResource.cpp \
|
||||
$(srcdir)/ui/settings/DatabaseSettingsView.cpp \
|
||||
$(srcdir)/ui/settings/AdminWizardView.cpp \
|
||||
$(srcdir)/utils/Config.cpp \
|
||||
$(srcdir)/utils/Logger.cpp \
|
||||
$(srcdir)/utils/Path.cpp \
|
||||
|
||||
+2
-2
@@ -38,7 +38,7 @@ Auth::Auth(Wt::WContainerWidget *parent)
|
||||
|
||||
_model->addPasswordAuth(&Database::Handler::getPasswordService());
|
||||
|
||||
setTemplateText(Wt::WString::tr("template-login"));
|
||||
setTemplateText(Wt::WString::tr("Lms.Auth.template"));
|
||||
addFunction("tr", &WTemplate::Functions::tr);
|
||||
addFunction("id", &WTemplate::Functions::id);
|
||||
|
||||
@@ -55,7 +55,7 @@ Auth::Auth(Wt::WContainerWidget *parent)
|
||||
auto rememberMe = new Wt::WCheckBox();
|
||||
setFormWidget(Wt::Auth::AuthModel::RememberMeField, rememberMe);
|
||||
|
||||
auto loginBtn = new Wt::WPushButton(Wt::WString::tr("msg-login"));
|
||||
auto loginBtn = new Wt::WPushButton(Wt::WString::tr("Lms.login"));
|
||||
bindWidget("login-btn", loginBtn);
|
||||
loginBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ namespace UserInterface {
|
||||
Home::Home(Wt::WContainerWidget *parent)
|
||||
: Wt::WContainerWidget(parent)
|
||||
{
|
||||
auto t = new Wt::WTemplate(Wt::WString::tr("template-home"), this);
|
||||
auto t = new Wt::WTemplate(Wt::WString::tr("Lms.Home.template"), this);
|
||||
t->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
|
||||
}
|
||||
|
||||
+36
-22
@@ -31,13 +31,13 @@
|
||||
#include "utils/Logger.hpp"
|
||||
#include "utils/Utils.hpp"
|
||||
|
||||
#include "Explore.hpp"
|
||||
#include "explore/Explore.hpp"
|
||||
#include "HomeView.hpp"
|
||||
#include "MediaPlayer.hpp"
|
||||
#include "PlayQueueView.hpp"
|
||||
|
||||
#include "settings/DatabaseSettingsView.hpp"
|
||||
#include "settings/AdminWizardView.hpp"
|
||||
#include "admin/DatabaseSettingsView.hpp"
|
||||
#include "admin/AdminWizardView.hpp"
|
||||
|
||||
#include "LmsApplication.hpp"
|
||||
|
||||
@@ -81,16 +81,18 @@ LmsApplication::LmsApplication(const Wt::WEnvironment& env, Wt::Dbo::SqlConnecti
|
||||
useStyleSheet("resources/font-awesome/css/font-awesome.min.css");
|
||||
|
||||
// Add a resource bundle
|
||||
messageResourceBundle().use(appRoot() + "admin-database");
|
||||
messageResourceBundle().use(appRoot() + "admin-wizard");
|
||||
messageResourceBundle().use(appRoot() + "artist");
|
||||
messageResourceBundle().use(appRoot() + "artists");
|
||||
messageResourceBundle().use(appRoot() + "home");
|
||||
messageResourceBundle().use(appRoot() + "explore");
|
||||
messageResourceBundle().use(appRoot() + "login");
|
||||
messageResourceBundle().use(appRoot() + "mediaplayer");
|
||||
messageResourceBundle().use(appRoot() + "messages");
|
||||
messageResourceBundle().use(appRoot() + "playqueue");
|
||||
messageResourceBundle().use(appRoot() + "release");
|
||||
messageResourceBundle().use(appRoot() + "releases");
|
||||
messageResourceBundle().use(appRoot() + "settings-database");
|
||||
messageResourceBundle().use(appRoot() + "settings-admin-wizard");
|
||||
messageResourceBundle().use(appRoot() + "tracks");
|
||||
messageResourceBundle().use(appRoot() + "templates");
|
||||
|
||||
@@ -183,7 +185,7 @@ enum IdxRoot
|
||||
IdxHome = 0,
|
||||
IdxExplore,
|
||||
IdxPlayQueue,
|
||||
IdxSettingsDatabase,
|
||||
IdxAdminDatabase,
|
||||
};
|
||||
|
||||
static void
|
||||
@@ -198,7 +200,7 @@ handlePathChange(Wt::WStackedWidget* stack)
|
||||
{ "/release", IdxExplore },
|
||||
{ "/tracks", IdxExplore },
|
||||
{ "/playqueue", IdxPlayQueue },
|
||||
{ "/settings/database", IdxSettingsDatabase },
|
||||
{ "/admin/database", IdxAdminDatabase },
|
||||
};
|
||||
|
||||
LMS_LOG(UI, DEBUG) << "Internal path changed to '" << wApp->internalPath() << "'";
|
||||
@@ -231,9 +233,9 @@ LmsApplication::handleAuthEvent(void)
|
||||
_imageResource = new ImageResource(_db, root());
|
||||
_transcodeResource = new TranscodeResource(_db, root());
|
||||
|
||||
setConfirmCloseMessage(Wt::WString::tr("msg-quit-confirm"));
|
||||
setConfirmCloseMessage(Wt::WString::tr("Lms.quit-confirm"));
|
||||
|
||||
auto main = new Wt::WTemplate(Wt::WString::tr("template-main"), root());
|
||||
auto main = new Wt::WTemplate(Wt::WString::tr("Lms.template"), root());
|
||||
|
||||
// Navbar
|
||||
auto navbar = new Wt::WNavigationBar();
|
||||
@@ -244,42 +246,54 @@ LmsApplication::handleAuthEvent(void)
|
||||
|
||||
auto menu = new Wt::WMenu();
|
||||
{
|
||||
auto menuItem = menu->insertItem(0, Wt::WString::tr("msg-artists"));
|
||||
auto menuItem = menu->insertItem(0, Wt::WString::tr("Lms.Explore.artists"));
|
||||
menuItem->setLink(Wt::WLink(Wt::WLink::InternalPath, "/artists"));
|
||||
menuItem->setSelectable(false);
|
||||
}
|
||||
{
|
||||
auto menuItem = menu->insertItem(1, Wt::WString::tr("msg-releases"));
|
||||
auto menuItem = menu->insertItem(1, Wt::WString::tr("Lms.Explore.releases"));
|
||||
menuItem->setLink(Wt::WLink(Wt::WLink::InternalPath, "/releases"));
|
||||
menuItem->setSelectable(false);
|
||||
}
|
||||
{
|
||||
auto menuItem = menu->insertItem(2, Wt::WString::tr("msg-tracks"));
|
||||
auto menuItem = menu->insertItem(2, Wt::WString::tr("Lms.Explore.tracks"));
|
||||
menuItem->setLink(Wt::WLink(Wt::WLink::InternalPath, "/tracks"));
|
||||
menuItem->setSelectable(false);
|
||||
}
|
||||
{
|
||||
auto menuItem = menu->insertItem(3, Wt::WString::tr("msg-playqueue"));
|
||||
auto menuItem = menu->insertItem(3, Wt::WString::tr("Lms.playqueue"));
|
||||
menuItem->setLink(Wt::WLink(Wt::WLink::InternalPath, "/playqueue"));
|
||||
menuItem->setSelectable(false);
|
||||
}
|
||||
navbar->addMenu(menu);
|
||||
|
||||
auto rightMenu = new Wt::WMenu();
|
||||
std::size_t itemCounter = 0;
|
||||
|
||||
{
|
||||
auto menuItem = rightMenu->insertItem(0, Wt::WString::tr("msg-settings"));
|
||||
menuItem->setSelectable(false);
|
||||
Wt::Dbo::Transaction transaction (DboSession());
|
||||
|
||||
Wt::WPopupMenu *settings = new Wt::WPopupMenu();
|
||||
auto dbSettings = settings->insertItem(0, Wt::WString::tr("msg-settings-database"));
|
||||
dbSettings->setLink(Wt::WLink(Wt::WLink::InternalPath, "/settings/database"));
|
||||
dbSettings->setSelectable(false);
|
||||
if (CurrentUser()->isAdmin())
|
||||
{
|
||||
auto menuItem = rightMenu->insertItem(itemCounter++, Wt::WString::tr("Lms.administration"));
|
||||
menuItem->setSelectable(false);
|
||||
|
||||
menuItem->setMenu(settings);
|
||||
Wt::WPopupMenu *admin = new Wt::WPopupMenu();
|
||||
auto dbSettings = admin->insertItem(0, Wt::WString::tr("Lms.Admin.Database.database"));
|
||||
dbSettings->setLink(Wt::WLink(Wt::WLink::InternalPath, "/admin/database"));
|
||||
dbSettings->setSelectable(false);
|
||||
|
||||
menuItem->setMenu(admin);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
auto menuItem = rightMenu->insertItem(1, Wt::WString::tr("msg-logout"));
|
||||
auto menuItem = rightMenu->insertItem(itemCounter++, Wt::WString::tr("Lms.settings"));
|
||||
menuItem->setLink(Wt::WLink(Wt::WLink::InternalPath, "/settings"));
|
||||
menuItem->setSelectable(false);
|
||||
}
|
||||
{
|
||||
auto menuItem = rightMenu->insertItem(itemCounter++, Wt::WString::tr("Lms.logout"));
|
||||
menuItem->setSelectable(true);
|
||||
menuItem->triggered().connect(std::bind([=]
|
||||
{
|
||||
@@ -326,7 +340,7 @@ LmsApplication::handleAuthEvent(void)
|
||||
{
|
||||
Wt::WServer::instance()->post(sessionId, [=]
|
||||
{
|
||||
notify(Wt::WString::tr("msg-notify-scan-complete")
|
||||
notify(Wt::WString::tr("Lms.Admin.Database.scan-complete")
|
||||
.arg(stats.nbFiles())
|
||||
.arg(stats.additions)
|
||||
.arg(stats.deletions)
|
||||
|
||||
@@ -121,7 +121,7 @@ AdminWizardView::AdminWizardView(Wt::WContainerWidget *parent)
|
||||
{
|
||||
auto model = new AdminWizardModel(this);
|
||||
|
||||
setTemplateText(Wt::WString::tr("template-settings-admin-wizard"));
|
||||
setTemplateText(Wt::WString::tr("Lms.AdminWizard.template"));
|
||||
addFunction("tr", &WTemplate::Functions::tr);
|
||||
addFunction("id", &WTemplate::Functions::id);
|
||||
|
||||
@@ -139,7 +139,7 @@ AdminWizardView::AdminWizardView(Wt::WContainerWidget *parent)
|
||||
setFormWidget(AdminWizardModel::PasswordConfirmField, passwordConfirmEdit);
|
||||
passwordConfirmEdit->setEchoMode(Wt::WLineEdit::Password);
|
||||
|
||||
auto saveButton = new Wt::WPushButton(Wt::WString::tr("msg-create"));
|
||||
auto saveButton = new Wt::WPushButton(Wt::WString::tr("Lms.create"));
|
||||
bindWidget("create-btn", saveButton);
|
||||
saveButton->clicked().connect(std::bind([=]
|
||||
{
|
||||
@@ -148,7 +148,7 @@ AdminWizardView::AdminWizardView(Wt::WContainerWidget *parent)
|
||||
if (model->validate())
|
||||
{
|
||||
model->saveData();
|
||||
LmsApp->notify(Wt::WString::tr("msg-settings-first-connection-done"));
|
||||
LmsApp->notify(Wt::WString::tr("Lms.AdminWizard.done"));
|
||||
saveButton->setEnabled(false);
|
||||
}
|
||||
|
||||
@@ -181,16 +181,16 @@ class DatabaseSettingsModel : public Wt::WFormModel
|
||||
|
||||
_updatePeriodModel = new Wt::WStringListModel(this);
|
||||
|
||||
_updatePeriodModel->addString(Wt::WString::tr("msg-update-period-never"));
|
||||
_updatePeriodModel->addString(Wt::WString::tr("Lms.Admin.Database.never"));
|
||||
_updatePeriodModel->setData(0, 0, Scanner::UpdatePeriod::Never, Wt::UserRole);
|
||||
|
||||
_updatePeriodModel->addString(Wt::WString::tr("msg-update-period-daily"));
|
||||
_updatePeriodModel->addString(Wt::WString::tr("Lms.Admin.Database.daily"));
|
||||
_updatePeriodModel->setData(1, 0, Scanner::UpdatePeriod::Daily, Wt::UserRole);
|
||||
|
||||
_updatePeriodModel->addString(Wt::WString::tr("msg-update-period-weekly"));
|
||||
_updatePeriodModel->addString(Wt::WString::tr("Lms.Admin.Database.weekly"));
|
||||
_updatePeriodModel->setData(2, 0, Scanner::UpdatePeriod::Weekly, Wt::UserRole);
|
||||
|
||||
_updatePeriodModel->addString(Wt::WString::tr("msg-update-period-monthly"));
|
||||
_updatePeriodModel->addString(Wt::WString::tr("Lms.Admin.Database.monthly"));
|
||||
_updatePeriodModel->setData(3, 0, Scanner::UpdatePeriod::Monthly, Wt::UserRole);
|
||||
|
||||
_updateStartTimeModel = new Wt::WStringListModel(this);
|
||||
@@ -229,7 +229,7 @@ DatabaseSettingsView::DatabaseSettingsView(Wt::WContainerWidget *parent)
|
||||
{
|
||||
auto model = new DatabaseSettingsModel(this);
|
||||
|
||||
setTemplateText(tr("template-settings-database"));
|
||||
setTemplateText(tr("Lms.Admin.Database.template"));
|
||||
addFunction("tr", &WTemplate::Functions::tr);
|
||||
addFunction("id", &WTemplate::Functions::id);
|
||||
|
||||
@@ -249,13 +249,13 @@ DatabaseSettingsView::DatabaseSettingsView(Wt::WContainerWidget *parent)
|
||||
|
||||
// Buttons
|
||||
|
||||
Wt::WPushButton *saveBtn = new Wt::WPushButton(Wt::WString::tr("msg-btn-apply"));
|
||||
Wt::WPushButton *saveBtn = new Wt::WPushButton(Wt::WString::tr("Lms.apply"));
|
||||
bindWidget("apply-btn", saveBtn);
|
||||
|
||||
Wt::WPushButton *discardBtn = new Wt::WPushButton(Wt::WString::tr("msg-btn-discard"));
|
||||
Wt::WPushButton *discardBtn = new Wt::WPushButton(Wt::WString::tr("Lms.discard"));
|
||||
bindWidget("discard-btn", discardBtn);
|
||||
|
||||
Wt::WPushButton *immScanBtn = new Wt::WPushButton(Wt::WString::tr("msg-btn-immediate-scan"));
|
||||
Wt::WPushButton *immScanBtn = new Wt::WPushButton(Wt::WString::tr("Lms.Admin.Database.immediate-scan"));
|
||||
bindWidget("immediate-scan-btn", immScanBtn);
|
||||
|
||||
saveBtn->clicked().connect(std::bind([=] ()
|
||||
@@ -267,7 +267,7 @@ DatabaseSettingsView::DatabaseSettingsView(Wt::WContainerWidget *parent)
|
||||
model->saveData();
|
||||
|
||||
LmsApp->getMediaScanner().reschedule();
|
||||
LmsApp->notify(Wt::WString::tr("msg-notify-settings-saved"));
|
||||
LmsApp->notify(Wt::WString::tr("Lms.Admin.Database.settings-saved"));
|
||||
}
|
||||
|
||||
// Udate the view: Delete any validation message in the view, etc.
|
||||
@@ -284,7 +284,7 @@ DatabaseSettingsView::DatabaseSettingsView(Wt::WContainerWidget *parent)
|
||||
immScanBtn->clicked().connect(std::bind([=] ()
|
||||
{
|
||||
LmsApp->getMediaScanner().scheduleImmediateScan();
|
||||
LmsApp->notify(Wt::WString::tr("msg-notify-scan-launched"));
|
||||
LmsApp->notify(Wt::WString::tr("Lms.Admin.Database.scan-launched"));
|
||||
}));
|
||||
|
||||
updateView(model);
|
||||
@@ -60,7 +60,7 @@ DirectoryValidator::validate(const Wt::WString& input) const
|
||||
else if (res)
|
||||
return Wt::WValidator::Result(Wt::WValidator::Valid);
|
||||
else
|
||||
return Wt::WValidator::Result(Wt::WValidator::Invalid, Wt::WString::tr("msg-error-not-a-directory"));
|
||||
return Wt::WValidator::Result(Wt::WValidator::Invalid, Wt::WString::tr("Lms.not-a-directory"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ Artist::refresh()
|
||||
return;
|
||||
}
|
||||
|
||||
auto t = new Wt::WTemplate(Wt::WString::tr("template-artist"), this);
|
||||
auto t = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Artist.template"), this);
|
||||
t->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
|
||||
auto clusterContainers = new Wt::WContainerWidget();
|
||||
@@ -82,7 +82,7 @@ Artist::refresh()
|
||||
|
||||
for (auto cluster : clusters)
|
||||
{
|
||||
auto entry = new Wt::WTemplate(Wt::WString::tr("template-artist-cluster-entry"), clusterContainers);
|
||||
auto entry = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Artist.template.cluster-entry"), clusterContainers);
|
||||
|
||||
entry->bindString("name", Wt::WString::fromUTF8(cluster->getName()), Wt::PlainText);
|
||||
}
|
||||
@@ -90,7 +90,7 @@ Artist::refresh()
|
||||
|
||||
t->bindString("name", Wt::WString::fromUTF8(artist->getName()), Wt::PlainText);
|
||||
{
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("btn-artist-play-btn"), Wt::XHTMLText);
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Artist.play"), Wt::XHTMLText);
|
||||
t->bindWidget("play-btn", playBtn);
|
||||
|
||||
playBtn->clicked().connect(std::bind([=]
|
||||
@@ -100,7 +100,7 @@ Artist::refresh()
|
||||
}
|
||||
|
||||
{
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("btn-artist-add-btn"), Wt::XHTMLText);
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Artist.add"), Wt::XHTMLText);
|
||||
t->bindWidget("add-btn", addBtn);
|
||||
|
||||
addBtn->clicked().connect(std::bind([=]
|
||||
@@ -117,7 +117,7 @@ Artist::refresh()
|
||||
{
|
||||
auto releaseId = release.id();
|
||||
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("template-artist-entry"), releasesContainer);
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Artist.template.entry"), releasesContainer);
|
||||
entry->addFunction("tr", Wt::WTemplate::Functions::tr);
|
||||
|
||||
{
|
||||
@@ -153,14 +153,14 @@ Artist::refresh()
|
||||
}
|
||||
}
|
||||
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("btn-artist-play-btn"), Wt::XHTMLText);
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Artist.play"), Wt::XHTMLText);
|
||||
entry->bindWidget("play-btn", playBtn);
|
||||
playBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
releasePlay.emit(releaseId);
|
||||
}));
|
||||
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("btn-artist-add-btn"), Wt::XHTMLText);
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Artist.add"), Wt::XHTMLText);
|
||||
entry->bindWidget("add-btn", addBtn);
|
||||
addBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
@@ -39,18 +39,18 @@ Artists::Artists(Filters* filters, Wt::WContainerWidget* parent)
|
||||
: Wt::WContainerWidget(parent),
|
||||
_filters(filters)
|
||||
{
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("template-artists"), this);
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Artists.template"), this);
|
||||
container->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
|
||||
_search = new Wt::WLineEdit();
|
||||
container->bindWidget("search", _search);
|
||||
_search->setPlaceholderText(Wt::WString::tr("msg-search-placeholder"));
|
||||
_search->setPlaceholderText(Wt::WString::tr("Lms.Explore.search-placeholder"));
|
||||
_search->textInput().connect(this, &Artists::refresh);
|
||||
|
||||
_artistsContainer = new Wt::WContainerWidget();
|
||||
container->bindWidget("artists", _artistsContainer);
|
||||
|
||||
_showMore = new Wt::WTemplate(Wt::WString::tr("template-show-more"));
|
||||
_showMore = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.template.show-more"));
|
||||
_showMore->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
container->bindWidget("show-more", _showMore);
|
||||
|
||||
@@ -88,7 +88,7 @@ Artists::addSome()
|
||||
|
||||
for (auto artist : artists)
|
||||
{
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("template-artists-entry"), _artistsContainer);
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Artists.template.entry"), _artistsContainer);
|
||||
|
||||
entry->bindInt("nb-release", artist->getReleases(clusterIds).size());
|
||||
|
||||
@@ -73,7 +73,7 @@ handlePathChange(Wt::WStackedWidget* stack)
|
||||
Explore::Explore(Wt::WContainerWidget* parent)
|
||||
: Wt::WContainerWidget(parent)
|
||||
{
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("template-explore"), this);
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.template"), this);
|
||||
|
||||
_filters = new Filters();
|
||||
container->bindWidget("filters", _filters);
|
||||
@@ -31,9 +31,9 @@ namespace UserInterface {
|
||||
void
|
||||
Filters::showDialog()
|
||||
{
|
||||
auto dialog = new Wt::WDialog("Go to cell");
|
||||
auto dialog = new Wt::WDialog(Wt::WString::tr("Lms.Explore.add-filter"));
|
||||
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("template-filter-add"));
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.template.add-filter"));
|
||||
container->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
|
||||
dialog->contents()->addWidget(container);
|
||||
@@ -44,12 +44,12 @@ Filters::showDialog()
|
||||
auto valueCombo = new Wt::WComboBox();
|
||||
container->bindWidget("value", valueCombo);
|
||||
|
||||
auto addBtn = new Wt::WPushButton(Wt::WString::tr("msg-add"));
|
||||
container->bindWidget("add", addBtn);
|
||||
auto addBtn = new Wt::WPushButton(Wt::WString::tr("Lms.add"));
|
||||
container->bindWidget("add-btn", addBtn);
|
||||
addBtn->clicked().connect(dialog, &Wt::WDialog::accept);
|
||||
|
||||
auto cancelBtn = new Wt::WPushButton(Wt::WString::tr("msg-cancel"));
|
||||
container->bindWidget("cancel", cancelBtn);
|
||||
auto cancelBtn = new Wt::WPushButton(Wt::WString::tr("Lms.cancel"));
|
||||
container->bindWidget("cancel-btn", cancelBtn);
|
||||
cancelBtn->clicked().connect(dialog, &Wt::WDialog::reject);
|
||||
|
||||
// Populate data
|
||||
@@ -140,10 +140,10 @@ Filters::showDialog()
|
||||
Filters::Filters(Wt::WContainerWidget *parent)
|
||||
: Wt::WContainerWidget(parent)
|
||||
{
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("template-filters"), this);
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.template.filters"), this);
|
||||
|
||||
// Filters
|
||||
Wt::WPushButton *addFilterBtn = new Wt::WPushButton(Wt::WText::tr("msg-filter-add"));
|
||||
Wt::WPushButton *addFilterBtn = new Wt::WPushButton(Wt::WText::tr("Lms.Explore.add-filter"));
|
||||
container->bindWidget("add-filter", addFilterBtn);
|
||||
|
||||
_filters = new Wt::WContainerWidget();
|
||||
@@ -72,7 +72,7 @@ Release::refresh()
|
||||
return;
|
||||
}
|
||||
|
||||
auto t = new Wt::WTemplate(Wt::WString::tr("template-release"), this);
|
||||
auto t = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Release.template"), this);
|
||||
t->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
|
||||
t->bindString("name", Wt::WString::fromUTF8(release->getName()), Wt::PlainText);
|
||||
@@ -95,7 +95,7 @@ Release::refresh()
|
||||
auto artists = release->getArtists();
|
||||
if (artists.size() > 1)
|
||||
{
|
||||
t->bindString("artist-name", Wt::WString::tr("msg-various-artists"));
|
||||
t->bindString("artist-name", Wt::WString::tr("Lms.Explore.various-artists"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -118,14 +118,14 @@ Release::refresh()
|
||||
|
||||
for (auto cluster : clusters)
|
||||
{
|
||||
auto entry = new Wt::WTemplate(Wt::WString::tr("template-release-cluster-entry"), clusterContainers);
|
||||
auto entry = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Release.template.cluster-entry"), clusterContainers);
|
||||
|
||||
entry->bindString("name", Wt::WString::fromUTF8(cluster->getName()), Wt::PlainText);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("btn-release-play-btn"), Wt::XHTMLText);
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Release.play"), Wt::XHTMLText);
|
||||
t->bindWidget("play-btn", playBtn);
|
||||
playBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
@@ -134,7 +134,7 @@ Release::refresh()
|
||||
}
|
||||
|
||||
{
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("btn-release-add-btn"), Wt::XHTMLText);
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Release.add"), Wt::XHTMLText);
|
||||
t->bindWidget("add-btn", addBtn);
|
||||
addBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
@@ -154,7 +154,7 @@ Release::refresh()
|
||||
{
|
||||
auto trackId = track.id();
|
||||
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("template-release-entry"), tracksContainer);
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Release.template.entry"), tracksContainer);
|
||||
|
||||
entry->bindString("name", Wt::WString::fromUTF8(track->getName()), Wt::PlainText);
|
||||
|
||||
@@ -182,14 +182,14 @@ Release::refresh()
|
||||
entry->bindInt("disc-number", *discNumber);
|
||||
}
|
||||
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("btn-release-play-btn"), Wt::XHTMLText);
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Release.play"), Wt::XHTMLText);
|
||||
entry->bindWidget("play-btn", playBtn);
|
||||
playBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
trackPlay.emit(trackId);
|
||||
}));
|
||||
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("btn-release-add-btn"), Wt::XHTMLText);
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Release.add"), Wt::XHTMLText);
|
||||
entry->bindWidget("add-btn", addBtn);
|
||||
addBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
@@ -40,18 +40,18 @@ Releases::Releases(Filters* filters, Wt::WContainerWidget* parent)
|
||||
: Wt::WContainerWidget(parent),
|
||||
_filters(filters)
|
||||
{
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("template-releases"), this);
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Releases.template"), this);
|
||||
container->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
|
||||
_search = new Wt::WLineEdit();
|
||||
container->bindWidget("search", _search);
|
||||
_search->setPlaceholderText(Wt::WString::tr("msg-search-placeholder"));
|
||||
_search->setPlaceholderText(Wt::WString::tr("Lms.Explore.search-placeholder"));
|
||||
_search->textInput().connect(this, &Releases::refresh);
|
||||
|
||||
_releasesContainer = new Wt::WContainerWidget();
|
||||
container->bindWidget("releases", _releasesContainer);
|
||||
|
||||
_showMore = new Wt::WTemplate(Wt::WString::tr("template-show-more"));
|
||||
_showMore = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.show-more"));
|
||||
_showMore->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
container->bindWidget("show-more", _showMore);
|
||||
|
||||
@@ -88,7 +88,7 @@ Releases::addSome()
|
||||
{
|
||||
auto releaseId = release.id();
|
||||
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("template-releases-entry"), _releasesContainer);
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Releases.template.entry"), _releasesContainer);
|
||||
entry->addFunction("tr", Wt::WTemplate::Functions::tr);
|
||||
|
||||
Wt::WAnchor* coverAnchor = LmsApplication::createReleaseAnchor(releaseId);
|
||||
@@ -109,7 +109,7 @@ Releases::addSome()
|
||||
auto artists = release->getArtists();
|
||||
if (artists.size() > 1)
|
||||
{
|
||||
entry->bindString("artist-name", Wt::WString::tr("msg-various-artists"));
|
||||
entry->bindString("artist-name", Wt::WString::tr("Lms.Explore.various-artists"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -119,14 +119,14 @@ Releases::addSome()
|
||||
entry->bindWidget("artist-name", artistAnchor);
|
||||
}
|
||||
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("btn-releases-play-btn"), Wt::XHTMLText);
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Releases.play"), Wt::XHTMLText);
|
||||
entry->bindWidget("play-btn", playBtn);
|
||||
playBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
releasePlay.emit(releaseId);
|
||||
}));
|
||||
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("btn-releases-add-btn"), Wt::XHTMLText);
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Releases.add"), Wt::XHTMLText);
|
||||
entry->bindWidget("add-btn", addBtn);
|
||||
addBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
@@ -134,8 +134,6 @@ Releases::addSome()
|
||||
}));
|
||||
}
|
||||
|
||||
std::cerr << "if-show-more = " << moreResults << "\n";
|
||||
|
||||
_showMore->setHidden(!moreResults);
|
||||
}
|
||||
|
||||
@@ -39,15 +39,15 @@ Tracks::Tracks(Filters* filters, Wt::WContainerWidget* parent)
|
||||
: Wt::WContainerWidget(parent),
|
||||
_filters(filters)
|
||||
{
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("template-tracks"), this);
|
||||
auto container = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Tracks.template"), this);
|
||||
container->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
|
||||
_search = new Wt::WLineEdit();
|
||||
container->bindWidget("search", _search);
|
||||
_search->setPlaceholderText(Wt::WString::tr("msg-search-placeholder"));
|
||||
_search->setPlaceholderText(Wt::WString::tr("Lms.Explore.search-placeholder"));
|
||||
_search->textInput().connect(this, &Tracks::refresh);
|
||||
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("btn-tracks-play-btn"), Wt::XHTMLText);
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Tracks.play"), Wt::XHTMLText);
|
||||
container->bindWidget("play-btn", playBtn);
|
||||
playBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
@@ -55,7 +55,7 @@ Tracks::Tracks(Filters* filters, Wt::WContainerWidget* parent)
|
||||
tracksPlay.emit(getTracks());
|
||||
}));
|
||||
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("btn-tracks-add-btn"), Wt::XHTMLText);
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Tracks.add"), Wt::XHTMLText);
|
||||
container->bindWidget("add-btn", addBtn);
|
||||
addBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
@@ -66,7 +66,7 @@ Tracks::Tracks(Filters* filters, Wt::WContainerWidget* parent)
|
||||
_tracksContainer = new Wt::WContainerWidget();
|
||||
container->bindWidget("tracks", _tracksContainer);
|
||||
|
||||
_showMore = new Wt::WTemplate(Wt::WString::tr("template-show-more"));
|
||||
_showMore = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.template.show-more"));
|
||||
_showMore->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||
container->bindWidget("show-more", _showMore);
|
||||
|
||||
@@ -116,7 +116,7 @@ Tracks::addSome()
|
||||
for (auto track : tracks)
|
||||
{
|
||||
auto trackId = track.id();
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("template-tracks-entry"), _tracksContainer);
|
||||
Wt::WTemplate* entry = new Wt::WTemplate(Wt::WString::tr("Lms.Explore.Tracks.template.entry"), _tracksContainer);
|
||||
|
||||
entry->bindString("name", Wt::WString::fromUTF8(track->getName()), Wt::PlainText);
|
||||
|
||||
@@ -146,14 +146,14 @@ Tracks::addSome()
|
||||
cover->setWidth(64);
|
||||
entry->bindWidget("cover", cover);
|
||||
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("btn-tracks-play-btn"), Wt::XHTMLText);
|
||||
auto playBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Tracks.play"), Wt::XHTMLText);
|
||||
entry->bindWidget("play-btn", playBtn);
|
||||
playBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
trackPlay.emit(trackId);
|
||||
}));
|
||||
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("btn-tracks-add-btn"), Wt::XHTMLText);
|
||||
auto addBtn = new Wt::WText(Wt::WString::tr("Lms.Explore.Tracks.add"), Wt::XHTMLText);
|
||||
entry->bindWidget("add-btn", addBtn);
|
||||
addBtn->clicked().connect(std::bind([=]
|
||||
{
|
||||
Reference in New Issue
Block a user