mirror of
https://github.com/clangen/musikcube.git
synced 2025-03-14 13:21:13 +00:00
- Fixed header offset calculation for real this time
- Added an [unknown album] header for search results without an album name
This commit is contained in:
parent
bf1af609b2
commit
e6d296334c
@ -35,6 +35,7 @@
|
||||
#include "pch.hpp"
|
||||
#include "SearchTrackListQuery.h"
|
||||
|
||||
#include <core/i18n/Locale.h>
|
||||
#include <core/library/track/LibraryTrack.h>
|
||||
#include <core/library/LocalLibraryConstants.h>
|
||||
#include <core/db/Statement.h>
|
||||
@ -127,6 +128,10 @@ bool SearchTrackListQuery::OnRun(Connection& db) {
|
||||
DBID id = trackQuery.ColumnInt64(0);
|
||||
std::string album = trackQuery.ColumnText(1);
|
||||
|
||||
if (!album.size()) {
|
||||
album = _TSTR("tracklist_unknown_album");
|
||||
}
|
||||
|
||||
if (album != lastAlbum) {
|
||||
headers->insert(index);
|
||||
lastAlbum = album;
|
||||
|
@ -282,22 +282,18 @@ void TrackListView::HeaderCalculator::Reset() {
|
||||
}
|
||||
|
||||
size_t TrackListView::HeaderCalculator::AdapterToTrackListIndex(size_t index) {
|
||||
return this->ApplyHeaderOffset(index, -1);
|
||||
return this->ApplyHeaderOffset(index, this->absoluteOffsets, -1);
|
||||
}
|
||||
|
||||
size_t TrackListView::HeaderCalculator::TrackListToAdapterIndex(size_t index) {
|
||||
if (!this->rawOffsets || this->rawOffsets->size() == 0) {
|
||||
return index;
|
||||
}
|
||||
|
||||
return this->ApplyHeaderOffset(index, 1);
|
||||
return this->ApplyHeaderOffset(index, this->rawOffsets, 1);
|
||||
}
|
||||
|
||||
size_t TrackListView::HeaderCalculator::ApplyHeaderOffset(size_t index, int delta) {
|
||||
size_t TrackListView::HeaderCalculator::ApplyHeaderOffset(size_t index, Headers offsets, int delta) {
|
||||
size_t result = index;
|
||||
if (this->absoluteOffsets) {
|
||||
for (auto offset : (*this->absoluteOffsets)) {
|
||||
if (result != 0 && offset <= index) {
|
||||
if (offsets) {
|
||||
for (auto offset : (*offsets)) {
|
||||
if (offset <= index) {
|
||||
result += delta;
|
||||
}
|
||||
else {
|
||||
@ -373,6 +369,10 @@ IScrollAdapter::EntryPtr TrackListView::Adapter::GetEntry(cursespp::ScrollableWi
|
||||
|
||||
std::string album = track->GetValue(constants::Track::ALBUM);
|
||||
|
||||
if (!album.size()) {
|
||||
album = _TSTR("tracklist_unknown_album");
|
||||
}
|
||||
|
||||
std::shared_ptr<TrackListEntry> entry(new
|
||||
TrackListEntry(album, trackIndex, RowType::Separator));
|
||||
|
||||
|
@ -140,7 +140,7 @@ namespace musik {
|
||||
size_t Count();
|
||||
|
||||
private:
|
||||
size_t ApplyHeaderOffset(size_t index, int delta);
|
||||
size_t ApplyHeaderOffset(size_t index, Headers offsets, int delta);
|
||||
|
||||
Headers absoluteOffsets;
|
||||
Headers rawOffsets;
|
||||
|
@ -93,6 +93,8 @@
|
||||
"transport_repeat_track": "repeat track",
|
||||
"transport_repeat_off": "repeat off",
|
||||
|
||||
"tracklist_unknown_album": "[unknown album]",
|
||||
|
||||
"main_syncing_banner": "syncing metadata (%d tracks processed)"
|
||||
},
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user