aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java4
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java2
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java43
3 files changed, 30 insertions, 19 deletions
diff --git a/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java b/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java
index baee66fa..69496e98 100644
--- a/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java
+++ b/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java
@@ -616,7 +616,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
@Override
protected Void doInBackground() throws Throwable {
List<MusicDirectory.Entry> entries = new LinkedList<MusicDirectory.Entry>();
- for (DownloadFile downloadFile : getDownloadService().getDownloads()) {
+ for (DownloadFile downloadFile : getDownloadService().getSongs()) {
entries.add(downloadFile.getSong());
}
MusicService musicService = MusicServiceFactory.getMusicService(DownloadActivity.this);
@@ -681,7 +681,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
return;
}
- List<DownloadFile> list = downloadService.getDownloads();
+ List<DownloadFile> list = downloadService.getSongs();
playlistView.setAdapter(new SongListAdapter(list));
emptyTextView.setVisibility(list.isEmpty() ? View.VISIBLE : View.GONE);
diff --git a/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java b/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java
index d9d1ed0d..556765f2 100644
--- a/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java
+++ b/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java
@@ -61,6 +61,8 @@ public interface DownloadService {
void remove(DownloadFile downloadFile);
+ List<DownloadFile> getSongs();
+
List<DownloadFile> getDownloads();
int getCurrentPlayingIndex();
diff --git a/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java b/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java
index bec6c727..69bd766d 100644
--- a/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java
+++ b/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java
@@ -490,6 +490,13 @@ public class DownloadServiceImpl extends Service implements DownloadService {
public DownloadFile getCurrentDownloading() {
return currentDownloading;
}
+
+ @Override
+ public synchronized List<DownloadFile> getSongs() {
+ List<DownloadFile> temp = new ArrayList<DownloadFile>();
+ temp.addAll(downloadList);
+ return temp;
+ }
@Override
public synchronized List<DownloadFile> getDownloads() {
@@ -844,7 +851,7 @@ public class DownloadServiceImpl extends Service implements DownloadService {
}
protected synchronized void checkDownloads() {
-
+ Log.d(TAG, "Check Download");
if (!Util.isExternalStoragePresent() || !lifecycleSupport.isExternalStorageAvailable()) {
return;
}
@@ -862,10 +869,7 @@ public class DownloadServiceImpl extends Service implements DownloadService {
}
// Need to download current playing?
- if (currentPlaying != null &&
- currentPlaying != currentDownloading &&
- !currentPlaying.isCompleteFileAvailable()) {
-
+ if (currentPlaying != null && currentPlaying != currentDownloading && !currentPlaying.isCompleteFileAvailable()) {
// Cancel current download, if necessary.
if (currentDownloading != null) {
currentDownloading.cancelDownload();
@@ -878,7 +882,7 @@ public class DownloadServiceImpl extends Service implements DownloadService {
// Find a suitable target for download.
else if (currentDownloading == null || currentDownloading.isWorkDone() || currentDownloading.isFailed() && !downloadList.isEmpty()) {
-
+ Log.d(TAG, "Download Foreground");
int n = size();
if (n == 0) {
return;
@@ -903,18 +907,23 @@ public class DownloadServiceImpl extends Service implements DownloadService {
i = (i + 1) % n;
} while (i != start);
- }
- else if(!backgroundDownloadList.isEmpty()) {
- for(int i = 0; i < backgroundDownloadList.size(); i++) {
- DownloadFile downloadFile = backgroundDownloadList.get(i);
- if (!downloadFile.isWorkDone() && downloadFile.shouldSave()) {
- currentDownloading = downloadFile;
- currentDownloading.download();
- cleanupCandidates.add(currentDownloading);
- break;
- }
+
+ // Log.d(TAG, "i: " + i + "\nPreloaded: " + preloaded + "\nSize: " + n);
+ if((i + 1 + preloaded == n) && !backgroundDownloadList.isEmpty()) {
+ Log.d(TAG, "Download Background");
+ for(DownloadFile downloadFile : backgroundDownloadList) {
+ if(downloadFile.isWorkDone()) {
+ // Don't need to keep list like active song list
+ backgroundDownloadList.remove(downloadFile);
+ } else if(downloadFile.shouldSave()) {
+ currentDownloading = downloadFile;
+ currentDownloading.download();
+ cleanupCandidates.add(currentDownloading);
+ break;
+ }
+ }
}
- }
+ }
// Delete obsolete .partial and .complete files.
cleanup();