diff --git a/app/src/main/java/com/udacity/gradle/builditbigger/DownloadDialogFragment.java b/app/src/main/java/com/udacity/gradle/builditbigger/DownloadDialogFragment.java new file mode 100644 index 0000000..1e4f15c --- /dev/null +++ b/app/src/main/java/com/udacity/gradle/builditbigger/DownloadDialogFragment.java @@ -0,0 +1,45 @@ +package com.udacity.gradle.builditbigger; + +import android.app.Dialog; +import android.app.ProgressDialog; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.DialogFragment; + +import net.headlezz.jokesbackend.myApi.model.Joke; + +public class DownloadDialogFragment extends DialogFragment { + + public static final String TAG = DownloadDialogFragment.class.getSimpleName(); + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + ProgressDialog dialog = new ProgressDialog(getContext()); + dialog.setCancelable(false); + dialog.setCanceledOnTouchOutside(false); + dialog.setIndeterminate(true); + dialog.setMessage(getContext().getString(R.string.dialog_loading)); + return dialog; + } + + @Override + public void onResume() { + super.onResume(); + MyBus.getInstance().register(this); + } + + @Override + public void onPause() { + MyBus.getInstance().unregister(this); + super.onPause(); + } + + public void onEvent(Joke joke) { + dismiss(); + } + + public void onEvent(JokeLoaderTask.JokeDownloadException e) { + dismiss(); + } +} diff --git a/app/src/main/java/com/udacity/gradle/builditbigger/MainActivityFragment.java b/app/src/main/java/com/udacity/gradle/builditbigger/MainActivityFragment.java index 2b4302d..062f29e 100644 --- a/app/src/main/java/com/udacity/gradle/builditbigger/MainActivityFragment.java +++ b/app/src/main/java/com/udacity/gradle/builditbigger/MainActivityFragment.java @@ -44,19 +44,26 @@ public abstract class MainActivityFragment extends Fragment implements View.OnCl * cancels old downloads if theres already a running one */ private void downloadNewJoke() { - if(mJokeLoaderTask != null) { - mJokeLoaderTask.cancel(true); - } mJokeLoaderTask = new JokeLoaderTask(); mJokeLoaderTask.execute(); + DownloadDialogFragment frag = new DownloadDialogFragment(); + frag.show(getFragmentManager(), DownloadDialogFragment.TAG); } + /** + * Shows the joke activity with the given joke + * @param joke Joke to show + */ public void onEvent(Joke joke) { Intent i = new Intent(getContext(), JokePresenterActivity.class); i.putExtra(JokePresenterActivity.BUNDLE_ARG_JOKE, joke.getJoke()); startActivity(i); } + /** + * Prints an error message on the screen if we have a problem with the download + * @param e Exception + */ public void onEvent(JokeLoaderTask.JokeDownloadException e) { if (getActivity() != null) Snackbar.make(getActivity().findViewById(android.R.id.content), R.string.joke_download_error, Snackbar.LENGTH_LONG) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fe1cd45..18415cc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,4 +6,5 @@ ca-app-pub-3940256099942544/6300978111 Failed to load joke Retry + Loading ...