package org.liberty.android.fantastischmemo.downloader.quizlet; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.util.Log; import org.liberty.android.fantastischmemo.R; import org.liberty.android.fantastischmemo.ui.FileBrowserFragment; import org.liberty.android.fantastischmemo.utils.AMGUIUtility; import java.io.File; import javax.inject.Inject; public class QuizletUploadActivity extends QuizletAccountActivity { private String authToken = null; private QuizletUploadHelper quizletUploadHelper; @Inject public void setQuizletUploadHelper(QuizletUploadHelper quizletUploadHelper) { this.quizletUploadHelper = quizletUploadHelper; } @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.upload_quizlet_screen); } @Override protected void onAuthenticated(final String[] authTokens) { this.authToken = authTokens[0]; FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); FileBrowserFragment fragment = new FileBrowserFragment(); fragment.setOnFileClickListener(fileClickListener); ft.add(R.id.file_list, fragment); ft.commit(); } private FileBrowserFragment.OnFileClickListener fileClickListener = new FileBrowserFragment.OnFileClickListener() { @Override public void onClick(File file) { showUploadDialog(file); } }; private void showUploadDialog(final File file) { new AlertDialog.Builder(this) .setTitle(R.string.upload_text) .setMessage( String.format( getString(R.string.upload_quizlet_message), file.getName())) .setPositiveButton(R.string.ok_text, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { UploadTask task = new UploadTask(); task.execute(file); } }).setNegativeButton(R.string.cancel_text, null).show(); } private class UploadTask extends AsyncTask<File, Void, Exception> { private ProgressDialog progressDialog; @Override public void onPreExecute() { super.onPreExecute(); progressDialog = new ProgressDialog(QuizletUploadActivity.this); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.setTitle(getString(R.string.loading_please_wait)); progressDialog.setMessage(getString(R.string.upload_wait)); progressDialog.setCancelable(false); progressDialog.show(); } @Override public Exception doInBackground(File... files) { File file = files[0]; try { quizletUploadHelper.uploadToQuizlet(file, authToken); } catch (Exception e) { Log.e(TAG, "Error uploading ", e); return e; } return null; } @Override public void onPostExecute(Exception e) { if (e != null) { AMGUIUtility.displayException(QuizletUploadActivity.this, getString(R.string.error_text), getString(R.string.error_text), e); } else { setResult(Activity.RESULT_OK, new Intent()); new AlertDialog.Builder(QuizletUploadActivity.this) .setTitle(R.string.successfully_uploaded_text) .setMessage( R.string.quizlet_successfully_uploaded_message) .setPositiveButton(R.string.ok_text, null).show(); } progressDialog.dismiss(); } } }