This commit is contained in:
Karim Abou Zeid 2018-06-05 22:45:29 +02:00
commit 614f28e0c9
23 changed files with 220 additions and 89 deletions

View file

@ -1,20 +1,20 @@
package com.kabouzeid.gramophone.helper.menu;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.Toast;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog;
import com.kabouzeid.gramophone.dialogs.DeletePlaylistDialog;
import com.kabouzeid.gramophone.dialogs.RenamePlaylistDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
import com.kabouzeid.gramophone.misc.WeakContextAsyncTask;
import com.kabouzeid.gramophone.model.AbsCustomPlaylist;
import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.Song;
@ -48,34 +48,7 @@ public class PlaylistMenuHelper {
DeletePlaylistDialog.create(playlist).show(activity.getSupportFragmentManager(), "DELETE_PLAYLIST");
return true;
case R.id.action_save_playlist:
@SuppressLint("ShowToast")
final Toast toast = Toast.makeText(activity, R.string.saving_to_file, Toast.LENGTH_SHORT);
new AsyncTask<Context, Void, String>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
toast.show();
}
@Override
protected String doInBackground(Context... params) {
try {
return String.format(params[0].getString(R.string.saved_playlist_to), PlaylistsUtil.savePlaylist(params[0], playlist));
} catch (IOException e) {
e.printStackTrace();
return String.format(params[0].getString(R.string.failed_to_save_playlist), e);
}
}
@Override
protected void onPostExecute(String string) {
super.onPostExecute(string);
if (toast != null) {
toast.setText(string);
toast.show();
}
}
}.execute(activity.getApplicationContext());
new SavePlaylistAsyncTask(activity).execute(playlist);
return true;
}
return false;
@ -87,4 +60,30 @@ public class PlaylistMenuHelper {
((AbsCustomPlaylist) playlist).getSongs(activity) :
PlaylistSongLoader.getPlaylistSongList(activity, playlist.id);
}
private static class SavePlaylistAsyncTask extends WeakContextAsyncTask<Playlist, String, String> {
public SavePlaylistAsyncTask(Context context) {
super(context);
}
@Override
protected String doInBackground(Playlist... params) {
try {
return String.format(App.getInstance().getApplicationContext().getString(R.string.saved_playlist_to), PlaylistsUtil.savePlaylist(App.getInstance().getApplicationContext(), params[0]));
} catch (IOException e) {
e.printStackTrace();
return String.format(App.getInstance().getApplicationContext().getString(R.string.failed_to_save_playlist), e);
}
}
@Override
protected void onPostExecute(String string) {
super.onPostExecute(string);
Context context = getContext();
if (context != null) {
Toast.makeText(context, string, Toast.LENGTH_LONG).show();
}
}
}
}