Use a async task to delete tracks and show a progress dialog.

This commit is contained in:
Jimmy Shih
2013-06-24 18:15:26 -07:00
parent e7c1687565
commit 1f41fefa09
12 changed files with 391 additions and 198 deletions
@@ -42,7 +42,6 @@ import java.io.File;
public class SaveActivity extends Activity {
public static final String EXTRA_TRACK_FILE_FORMAT = "track_file_format";
public static final String EXTRA_SAVE_ALL = "save_all";
public static final String EXTRA_TRACK_IDS = "track_ids";
public static final String EXTRA_PLAY_TRACK = "play_track";
@@ -72,7 +71,6 @@ public class SaveActivity extends Activity {
Intent intent = getIntent();
trackFileFormat = intent.getParcelableExtra(EXTRA_TRACK_FILE_FORMAT);
boolean saveAll = intent.getBooleanExtra(EXTRA_SAVE_ALL, false);
trackIds = intent.getLongArrayExtra(EXTRA_TRACK_IDS);
playTrack = intent.getBooleanExtra(EXTRA_PLAY_TRACK, false);
@@ -101,7 +99,7 @@ public class SaveActivity extends Activity {
saveAsyncTask = (SaveAsyncTask) retained;
saveAsyncTask.setActivity(this);
} else {
saveAsyncTask = new SaveAsyncTask(this, trackFileFormat, saveAll, trackIds, directory);
saveAsyncTask = new SaveAsyncTask(this, trackFileFormat, trackIds, directory);
saveAsyncTask.execute();
}
}
@@ -164,7 +162,7 @@ public class SaveActivity extends Activity {
finish();
}
}).setTitle(titleId);
if (!playTrack && trackIds != null && trackIds.length == 1 && successCount == totalCount
if (!playTrack && trackIds.length == 1 && trackIds[0] != -1L && successCount == totalCount
&& savedPath != null) {
builder.setNegativeButton(
R.string.share_track_share_file, new DialogInterface.OnClickListener() {
@@ -46,7 +46,6 @@ public class SaveAsyncTask extends AsyncTask<Void, Integer, Boolean> {
private SaveActivity saveActivity;
private final TrackFileFormat trackFileFormat;
private final boolean saveAll;
private final long[] trackIds;
private final File directory;
private final Context context;
@@ -72,15 +71,14 @@ public class SaveAsyncTask extends AsyncTask<Void, Integer, Boolean> {
*
* @param saveActivity the activity currently associated with this task
* @param trackFileFormat the track file format
* @param saveAll true to save all the tracks
* @param trackIds the track ids to save. null if saveAll if true
* @param trackIds the track ids to save. To save all, set to size 1 with
* trackIds[0] == -1L
* @param directory the directory to save to
*/
public SaveAsyncTask(SaveActivity saveActivity, TrackFileFormat trackFileFormat, boolean saveAll,
long[] trackIds, File directory) {
public SaveAsyncTask(
SaveActivity saveActivity, TrackFileFormat trackFileFormat, long[] trackIds, File directory) {
this.saveActivity = saveActivity;
this.trackFileFormat = trackFileFormat;
this.saveAll = saveAll;
this.trackIds = trackIds;
this.directory = directory;
context = saveActivity.getApplicationContext();
@@ -122,13 +120,10 @@ public class SaveAsyncTask extends AsyncTask<Void, Integer, Boolean> {
if (!isRecording || isPaused) {
wakeLock = SystemUtils.acquireWakeLock(saveActivity, wakeLock);
}
if (saveAll) {
if (trackIds.length == 1 && trackIds[0] == -1L) {
return saveAllTracks();
} else {
totalCount = 1;
if (trackIds == null) {
return false;
}
Track[] tracks = new Track[trackIds.length];
for (int i = 0; i < trackIds.length; i++) {
tracks[i] = myTracksProviderUtils.getTrack(trackIds[i]);
@@ -199,7 +194,7 @@ public class SaveAsyncTask extends AsyncTask<Void, Integer, Boolean> {
* If only saving one track, update the progress dialog once every
* 500 points
*/
if (trackIds != null && trackIds.length == 1 && number % 500 == 0) {
if (trackIds.length == 1 && trackIds[0] != -1L && number % 500 == 0) {
publishProgress(number, max);
}
}