diff --git a/approot/messages_zh.xml b/approot/messages_zh.xml index ac634b2d..40f02769 100644 --- a/approot/messages_zh.xml +++ b/approot/messages_zh.xml @@ -165,6 +165,7 @@ + 搜索中... diff --git a/src/lms/ui/explore/Explore.cpp b/src/lms/ui/explore/Explore.cpp index c1b00ddd..c0c2a18e 100644 --- a/src/lms/ui/explore/Explore.cpp +++ b/src/lms/ui/explore/Explore.cpp @@ -52,8 +52,8 @@ handleContentsPathChange(Wt::WStackedWidget* stack) { IdxArtists = 0, IdxArtist, - IdxTracklists, - IdxTracklist, + IdxTrackLists, + IdxTrackList, IdxReleases, IdxRelease, IdxSearch, @@ -64,8 +64,8 @@ handleContentsPathChange(Wt::WStackedWidget* stack) { { "/artists", IdxArtists }, { "/artist", IdxArtist }, - { "/tracklists", IdxTracklists }, - { "/tracklist", IdxTracklist }, + { "/tracklists", IdxTrackLists }, + { "/tracklist", IdxTrackList }, { "/releases", IdxReleases }, { "/release", IdxRelease }, { "/search", IdxSearch }, @@ -103,14 +103,18 @@ Explore::Explore(Filters* filters) artist->tracksAction.connect(this, &Explore::handleTracksAction); contentsStack->addWidget(std::move(artist)); - auto tracklists {std::make_unique(*_filters)}; - tracklists->trackListAction.connect(this, &Explore::handleTrackListAction); - contentsStack->addWidget(std::move(tracklists)); + auto trackLists {std::make_unique(*_filters)}; + TrackLists* trackListsPtr {trackLists.get()}; + trackLists->trackListAction.connect(this, &Explore::handleTrackListAction); + contentsStack->addWidget(std::move(trackLists)); - auto tracklist {std::make_unique(*_filters)}; - tracklist->trackListAction.connect(this, &Explore::handleTrackListAction); - tracklist->tracksAction.connect(this, &Explore::handleTracksAction); - contentsStack->addWidget(std::move(tracklist)); + auto trackList {std::make_unique(*_filters)}; + TrackList* trackListPtr {trackList.get()}; + trackList->trackListAction.connect(this, &Explore::handleTrackListAction); + trackList->tracksAction.connect(this, &Explore::handleTracksAction); + contentsStack->addWidget(std::move(trackList)); + + trackListPtr->trackListDeleted.connect(trackListsPtr, &TrackLists::onTrackListDeleted); auto releases = std::make_unique(*_filters); releases->releasesAction.connect(this, &Explore::handleReleasesAction); diff --git a/src/lms/ui/explore/TrackListView.cpp b/src/lms/ui/explore/TrackListView.cpp index 5ebf7d0b..7926a174 100644 --- a/src/lms/ui/explore/TrackListView.cpp +++ b/src/lms/ui/explore/TrackListView.cpp @@ -133,6 +133,7 @@ namespace UserInterface } clear(); + trackListDeleted.emit(*trackListId); LmsApp->setInternalPath("/tracklists", true); LmsApp->getModalManager().dispose(modalPtr); diff --git a/src/lms/ui/explore/TrackListView.hpp b/src/lms/ui/explore/TrackListView.hpp index fa5e8a9b..a8b2ec5a 100644 --- a/src/lms/ui/explore/TrackListView.hpp +++ b/src/lms/ui/explore/TrackListView.hpp @@ -38,6 +38,8 @@ namespace UserInterface PlayQueueActionTrackListSignal trackListAction; PlayQueueActionTrackSignal tracksAction; + Wt::Signal trackListDeleted; + private: void refreshView(); void addSome(); diff --git a/src/lms/ui/explore/TrackListsView.cpp b/src/lms/ui/explore/TrackListsView.cpp index 5216d194..9a878a8d 100644 --- a/src/lms/ui/explore/TrackListsView.cpp +++ b/src/lms/ui/explore/TrackListsView.cpp @@ -78,10 +78,23 @@ namespace UserInterface refreshView(); } + void + TrackLists::onTrackListDeleted(Database::TrackListId trackListId) + { + auto itTrackList {_trackListWidgets.find(trackListId)}; + if (itTrackList == std::end(_trackListWidgets)) + return; + + _container->remove(*itTrackList->second); + _trackListWidgets.erase(itTrackList); + + } + void TrackLists::refreshView() { _container->clear(); + _trackListWidgets.clear(); addSome(); } @@ -125,6 +138,9 @@ namespace UserInterface WTemplate* entry {_container->addNew