diff --git a/src/ch/blinkenlights/android/vanilla/LibraryPagerAdapter.java b/src/ch/blinkenlights/android/vanilla/LibraryPagerAdapter.java index 60a102ea..52d84d49 100644 --- a/src/ch/blinkenlights/android/vanilla/LibraryPagerAdapter.java +++ b/src/ch/blinkenlights/android/vanilla/LibraryPagerAdapter.java @@ -1,6 +1,6 @@ /* * Copyright (C) 2012 Christopher Eby - * Copyright (C) 2015 Adrian Ulrich + * Copyright (C) 2015-2018 Adrian Ulrich * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -459,47 +459,49 @@ public class LibraryPagerAdapter */ public void clearLimiter(int type) { + ArrayList targets = new ArrayList(); + maintainPosition(); if (type == MediaUtils.TYPE_FILE) { if (mFilesAdapter == null) { mPendingFileLimiter = null; } else { - mFilesAdapter.setLimiter(null); - requestRequery(mFilesAdapter); + targets.add(mFilesAdapter); } } else { if (mArtistAdapter == null) { mPendingArtistLimiter = null; } else { - mArtistAdapter.setLimiter(null); - requestRequery(mArtistAdapter); + targets.add(mArtistAdapter); } if (mAlbArtAdapter == null) { mPendingAlbArtLimiter = null; } else { - mAlbArtAdapter.setLimiter(null); - requestRequery(mAlbArtAdapter); + targets.add(mAlbArtAdapter); } if (mComposerAdapter == null) { mPendingComposerLimiter = null; } else { - mComposerAdapter.setLimiter(null); - requestRequery(mComposerAdapter); + targets.add(mComposerAdapter); } if (mAlbumAdapter == null) { mPendingAlbumLimiter = null; } else { - mAlbumAdapter.setLimiter(null); - requestRequery(mAlbumAdapter); + targets.add(mAlbumAdapter); } if (mSongAdapter == null) { mPendingSongLimiter = null; } else { - mSongAdapter.setLimiter(null); - requestRequery(mSongAdapter); + targets.add(mSongAdapter); } } + + for (LibraryAdapter adapter : targets) { + adapter.setLimiter(null); + loadSortOrder((SortableAdapter)adapter); + requestRequery(adapter); + } } /** @@ -511,6 +513,7 @@ public class LibraryPagerAdapter public int setLimiter(Limiter limiter) { int tab; + ArrayList targets = new ArrayList(); maintainPosition(); @@ -519,8 +522,7 @@ public class LibraryPagerAdapter if (mSongAdapter == null) { mPendingSongLimiter = limiter; } else { - mSongAdapter.setLimiter(limiter); - requestRequery(mSongAdapter); + targets.add(mSongAdapter); } tab = getMediaTypePosition(MediaUtils.TYPE_SONG); break; @@ -530,14 +532,12 @@ public class LibraryPagerAdapter if (mAlbumAdapter == null) { mPendingAlbumLimiter = limiter; } else { - mAlbumAdapter.setLimiter(limiter); - requestRequery(mAlbumAdapter); + targets.add(mAlbumAdapter); } if (mSongAdapter == null) { mPendingSongLimiter = limiter; } else { - mSongAdapter.setLimiter(limiter); - requestRequery(mSongAdapter); + targets.add(mSongAdapter); } tab = getMediaTypePosition(MediaUtils.TYPE_ALBUM); if (tab == -1) @@ -547,32 +547,27 @@ public class LibraryPagerAdapter if (mArtistAdapter == null) { mPendingArtistLimiter = limiter; } else { - mArtistAdapter.setLimiter(limiter); - requestRequery(mArtistAdapter); + targets.add(mArtistAdapter); } if (mAlbArtAdapter == null) { mPendingAlbArtLimiter = limiter; } else { - mAlbArtAdapter.setLimiter(limiter); - requestRequery(mAlbArtAdapter); + targets.add(mAlbArtAdapter); } if (mComposerAdapter == null) { mPendingComposerLimiter = limiter; } else { - mComposerAdapter.setLimiter(limiter); - requestRequery(mComposerAdapter); + targets.add(mComposerAdapter); } if (mAlbumAdapter == null) { mPendingAlbumLimiter = limiter; } else { - mAlbumAdapter.setLimiter(limiter); - requestRequery(mAlbumAdapter); + targets.add(mAlbumAdapter); } if (mSongAdapter == null) { mPendingSongLimiter = limiter; } else { - mSongAdapter.setLimiter(limiter); - requestRequery(mSongAdapter); + targets.add(mSongAdapter); } tab = getMediaTypePosition(MediaUtils.TYPE_ARTIST); if (tab == -1) @@ -584,12 +579,11 @@ public class LibraryPagerAdapter if (mFilesAdapter == null) { mPendingFileLimiter = limiter; } else { - mFilesAdapter.setLimiter(limiter); + targets.add(mFilesAdapter); // forcefully jump to beginning - commit query might restore a saved position // but if it doesn't we would end up at the same scrolling position in a new // folder which is uncool. mLists[MediaUtils.TYPE_FILE].setSelection(0); - requestRequery(mFilesAdapter); } tab = getMediaTypePosition(MediaUtils.TYPE_FILE); break; @@ -597,6 +591,12 @@ public class LibraryPagerAdapter throw new IllegalArgumentException("Unsupported limiter type: " + limiter.type); } + for (LibraryAdapter adapter : targets) { + adapter.setLimiter(limiter); + loadSortOrder((SortableAdapter)adapter); + requestRequery(adapter); + } + return tab; }