load sort order if limiter changes

This commit is contained in:
Adrian Ulrich 2018-01-28 20:11:18 +01:00
parent 4af00dfe7b
commit c898969de1

View File

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