diff options
author | Scott Jackson <daneren2005@gmail.com> | 2015-12-17 17:10:30 -0800 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2015-12-17 17:10:30 -0800 |
commit | 4c7d1f25ecb6b0c1a1a5245acfad406fc4bffe8e (patch) | |
tree | 4d565d01a9da5d9272fa7ca437fe486959fb55de /app/src/main/java/github/daneren2005/dsub/domain | |
parent | 9e809b82a743aa8c2140edb2317080f4cdb0224b (diff) | |
download | dsub-4c7d1f25ecb6b0c1a1a5245acfad406fc4bffe8e.tar.gz dsub-4c7d1f25ecb6b0c1a1a5245acfad406fc4bffe8e.tar.bz2 dsub-4c7d1f25ecb6b0c1a1a5245acfad406fc4bffe8e.zip |
Delete/add entries from background refresh
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/domain')
-rw-r--r-- | app/src/main/java/github/daneren2005/dsub/domain/MusicDirectory.java | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/domain/MusicDirectory.java b/app/src/main/java/github/daneren2005/dsub/domain/MusicDirectory.java index 8983051e..b502bdf4 100644 --- a/app/src/main/java/github/daneren2005/dsub/domain/MusicDirectory.java +++ b/app/src/main/java/github/daneren2005/dsub/domain/MusicDirectory.java @@ -90,11 +90,11 @@ public class MusicDirectory implements Serializable { this.children = children; } - public List<Entry> getChildren() { + public synchronized List<Entry> getChildren() { return getChildren(true, true); } - public List<Entry> getChildren(boolean includeDirs, boolean includeFiles) { + public synchronized List<Entry> getChildren(boolean includeDirs, boolean includeFiles) { if (includeDirs && includeFiles) { return children; } @@ -107,7 +107,7 @@ public class MusicDirectory implements Serializable { } return result; } - public List<Entry> getSongs() { + public synchronized List<Entry> getSongs() { List<Entry> result = new ArrayList<Entry>(); for (Entry child : children) { if (child != null && !child.isDirectory() && !child.isVideo()) { @@ -117,7 +117,7 @@ public class MusicDirectory implements Serializable { return result; } - public int getChildrenSize() { + public synchronized int getChildrenSize() { return children.size(); } @@ -135,7 +135,7 @@ public class MusicDirectory implements Serializable { EntryComparator.sort(children, byYear); } - public void updateDifferences(Context context, int instance, MusicDirectory refreshedDirectory) { + public synchronized void updateMetadata(MusicDirectory refreshedDirectory) { Iterator<Entry> it = children.iterator(); while(it.hasNext()) { Entry entry = it.next(); @@ -155,24 +155,36 @@ public class MusicDirectory implements Serializable { entry.setStarred(refreshed.isStarred()); entry.setRating(refreshed.getRating()); entry.setType(refreshed.getType()); - } else { - // No longer exists in here - // it.remove(); + } + } + } + public synchronized boolean updateEntriesList(Context context, int instance, MusicDirectory refreshedDirectory) { + boolean changed = false; + Iterator<Entry> it = children.iterator(); + while(it.hasNext()) { + Entry entry = it.next(); + // No longer exists in here + if(refreshedDirectory.children.indexOf(entry) == -1) { + it.remove(); + changed = true; } } // Make sure we contain all children from refreshed set - /*boolean resort = false; + boolean resort = false; for(Entry refreshed: refreshedDirectory.children) { if(!this.children.contains(refreshed)) { this.children.add(refreshed); resort = true; + changed = true; } } if(resort) { this.sortChildren(context, instance); - }*/ + } + + return changed; } public static class Entry implements Serializable { |