Skip to content

Commit 5c686f6

Browse files
refactor: playlist position tracking using player properties (#1054)
1 parent c7966ca commit 5c686f6

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

app/src/main/java/org/xbmc/kore/ui/sections/remote/PlaylistFragment.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public class PlaylistFragment extends Fragment
9797
*/
9898
private ListType.ItemsAll lastGetItemResult = null;
9999
private PlayerType.GetActivePlayersReturnType lastGetActivePlayerResult;
100+
private PlayerType.PropertyValue lastGetPropertiesResult = null;
100101
private final HashMap<String, PlaylistHolder> playlists = new HashMap<>();
101102

102103
private enum PLAYER_STATE {
@@ -253,6 +254,7 @@ public void onPlayerPlay(PlayerType.GetActivePlayersReturnType getActivePlayerRe
253254
playerState = PLAYER_STATE.PLAYING;
254255

255256
lastGetItemResult = getItemResult;
257+
lastGetPropertiesResult = getPropertiesResult;
256258
lastGetActivePlayerResult = getActivePlayerResult;
257259

258260
if (!userSelectedTab) {
@@ -278,6 +280,7 @@ public void onPlayerPause(PlayerType.GetActivePlayersReturnType getActivePlayerR
278280
playerState = PLAYER_STATE.PAUSED;
279281

280282
lastGetItemResult = getItemResult;
283+
lastGetPropertiesResult = getPropertiesResult;
281284
lastGetActivePlayerResult = getActivePlayerResult;
282285

283286
if (!userSelectedTab) {
@@ -294,6 +297,7 @@ public void onPlayerStop() {
294297
if (lastGetActivePlayerResult != null)
295298
binding.playlistsBar.setIsPlaying(lastGetActivePlayerResult.type, false);
296299

300+
lastGetPropertiesResult = null;
297301
displayPlaylist();
298302

299303
binding.playlist.clearChoices();
@@ -436,19 +440,14 @@ private void highlightCurrentlyPlayingItem() {
436440
if (!binding.playlistsBar.getSelectedPlaylistType().contentEquals(lastGetActivePlayerResult.type) ||
437441
holder == null)
438442
return;
439-
443+
444+
int playlistActivePosition = lastGetPropertiesResult == null ? -1 : lastGetPropertiesResult.position;
440445
List<ListType.ItemsAll> playlistItems = holder.getPlaylistResult.items;
441-
for (int i = 0; i < playlistItems.size(); i++) {
442-
if ((playlistItems.get(i).id == lastGetItemResult.id) &&
443-
(playlistItems.get(i).type.equals(lastGetItemResult.type))) {
444-
445-
//When user is dragging an item it is very annoying when we change the list position
446-
if (!binding.playlist.isItemBeingDragged()) {
447-
binding.playlist.setSelection(i);
448-
}
449-
450-
binding.playlist.setItemChecked(i, true);
446+
if (playlistActivePosition >= 0 && playlistActivePosition < playlistItems.size()) {
447+
if (!binding.playlist.isItemBeingDragged()) {
448+
binding.playlist.setSelection(playlistActivePosition);
451449
}
450+
binding.playlist.setItemChecked(playlistActivePosition, true);
452451
}
453452
}
454453

0 commit comments

Comments
 (0)