From b0a4ffdcb5cd6bfefe946d7bdf23f5590dc901ed Mon Sep 17 00:00:00 2001 From: soncaokim Date: Tue, 22 Jan 2019 04:48:25 +0100 Subject: [PATCH] Library annotations (#638) Populate album name / artist name / song counts across different view as "subtitle" that enriches the main info displayed in the title. This includes the notification, different list-based views, the main menu, the now-playing view, search result... For example, the included images show the added annotations highlighted with white underline ![screenshot_20190108-035119](https://user-images.githubusercontent.com/13333482/50807749-ce600000-12fb-11e9-86c6-9efb41389194.jpg) ![screenshot_20190108-035137](https://user-images.githubusercontent.com/13333482/50807750-ce600000-12fb-11e9-90e2-650aae0b159a.jpg) ![screenshot_20190108-035228](https://user-images.githubusercontent.com/13333482/50807751-ce600000-12fb-11e9-8f74-b04dbae0c6d2.jpg) ![screenshot_20190108-035244](https://user-images.githubusercontent.com/13333482/50807752-cef89680-12fb-11e9-892c-80fd55805c11.jpg) ![screenshot_20190108-035414](https://user-images.githubusercontent.com/13333482/50807753-cef89680-12fb-11e9-80a1-ee784c855876.jpg) --- .../gramophone/adapter/SearchAdapter.java | 4 +- .../adapter/album/AlbumAdapter.java | 6 +- .../gramophone/adapter/song/SongAdapter.java | 2 +- .../appwidgets/base/BaseAppWidget.java | 10 +--- .../gramophone/model/AbsCustomPlaylist.java | 15 ++--- .../model/smartplaylist/HistoryPlaylist.java | 8 ++- .../smartplaylist/LastAddedPlaylist.java | 8 ++- .../NotRecentlyPlayedPlaylist.java | 8 ++- .../PlayingNotificationImpl24.java | 7 +-- .../ui/activities/MainActivity.java | 5 +- .../fragments/player/AbsPlayerFragment.java | 7 ++- .../player/card/CardPlayerFragment.java | 4 +- .../player/flat/FlatPlayerFragment.java | 4 +- .../kabouzeid/gramophone/util/MusicUtil.java | 59 +++++++++++++++++-- 14 files changed, 100 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java index d5b18621..7a9984fb 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java @@ -72,7 +72,7 @@ public class SearchAdapter extends RecyclerView.Adapter songs) { final long duration = getTotalDuration(context, songs); - return MusicUtil.getSongCountString(context, songs.size()) + " • " + MusicUtil.getReadableDurationString(duration); + + return MusicUtil.buildInfoString( + MusicUtil.getSongCountString(context, songs.size()), + MusicUtil.getReadableDurationString(duration) + ); } @NonNull @@ -162,6 +187,28 @@ public class MusicUtil { } } + /** + * Build a concatenated string from the provided arguments + * The intended purpose is to show extra annotations + * to a music library item. + * Ex: for a given album --> buildInfoString(album.artist, album.songCount) + */ + public static String buildInfoString(@NonNull final String string1, @NonNull final String string2) + { + // Skip empty strings + if (string1.isEmpty()) {return string2;} + if (string2.isEmpty()) {return string1;} + + final String separator = " • "; + + final StringBuilder builder = new StringBuilder(); + builder.append(string1); + builder.append(separator); + builder.append(string2); + + return builder.toString(); + } + //iTunes uses for example 1002 for track 2 CD1 or 3011 for track 11 CD3. //this method converts those values to normal tracknumbers public static int getFixedTrackNumber(int trackNumberToFix) {