- 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:
casey langen 2017-03-31 23:20:26 -07:00
parent bf1af609b2
commit e6d296334c
4 changed files with 18 additions and 11 deletions

View File

@ -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;

View File

@ -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));

View File

@ -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;

View File

@ -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)"
},