Using Kodi's JSON RPC, Kodi may return less items than requested, even
if there are more items available. The old method of determining if
more items are available by checking if the amount of items returned
equals the amount requested does not work in these cases. Therefore,
we now use the returned List.LimitsReturned to determine if there are
more items available. If List.LimitsReturned.end equals
List.LimitesReturned.total we assume we retrieved all items.
When user enters a search query for a ListFragment the query will
now be restored on device configuration changes and when
ListFragment is restored from the backstack or in a ViewPager.
Refactored AbstractListFragment to make it more generic and allow it to be used by
MediaFileListFragment. This adds support for switching between a single- and multicolumn
view.
Created new abstract class AbstractCursorListFragment for list fragments using a cursoradapter.
When user selects artist from ArtistListFragment it will now
show a screen displaying artist details. I've taken the TV show
details setup as an example.
This adds the following new functionality:
* Displaying artist fanart
* Displaying artist description
* Download all songs from an artist
I removed using the poster as fanart if no fanart is available.
The reason is that the shared element transition is not very smooth
when the aspect ratio of the two image states is not the same.
Going from AlbumListFragment to AlbumDetailsFragment the poster
is resized correctly to the fanart size. However, returning to the
AlbumListFragment from the AlbumDetailsFragment the poster is
abruptly resized to the square aspect ratio needed for the list
fragment.
Implemented binding to LibrarySyncService to check if there are items currently
syncing or queued to sync. This makes it possible to inform user of background
sync processes.
Created two abstract classes to reduce code duplication and check if
LibrarySyncService has any items queued which are currently being displayed.
Fixed issue with SwipeRefreshLayout from appcompat library, which does not
always show the refresh animation when refresh is set to true.
Implemented context menus in GridView items in AlbumListFragment,
ArtistListFragment and AudioGenreListFragment.
This allows the user to add everything from an artist, album, or
genre by popping up the context menu and selecting either play
or Add to playlist.
Created a new class utils/MediaManager to hold any methods related
to managing media. Added methods play(...) and queueAudio(...) to
add musiclist items to the current playlist and start playing.