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 ...