From 1daf6e073303c931b5292889915cd5b50333fdc7 Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Mon, 4 Nov 2019 14:57:04 +0100 Subject: [PATCH] Add waiting and error dialogs to opml parsing --- .../settings/AccountSettingsFragment.java | 22 ++++++++++++++----- app/src/main/res/drawable/ic_error.xml | 5 +++++ app/src/main/res/values-fr-rFR/strings.xml | 3 +++ app/src/main/res/values/strings.xml | 3 +++ 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable/ic_error.xml diff --git a/app/src/main/java/com/readrops/app/fragments/settings/AccountSettingsFragment.java b/app/src/main/java/com/readrops/app/fragments/settings/AccountSettingsFragment.java index 75521c9d..d40d6dbd 100644 --- a/app/src/main/java/com/readrops/app/fragments/settings/AccountSettingsFragment.java +++ b/app/src/main/java/com/readrops/app/fragments/settings/AccountSettingsFragment.java @@ -4,7 +4,6 @@ package com.readrops.app.fragments.settings; import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.util.Log; import android.widget.Toast; import androidx.annotation.Nullable; @@ -143,13 +142,20 @@ public class AccountSettingsFragment extends PreferenceFragmentCompat { if (requestCode == OPEN_OPML_FILE_REQUEST && resultCode == RESULT_OK && data != null) { Uri uri = data.getData(); - parseOPMLFile(uri); + MaterialDialog dialog = new MaterialDialog.Builder(getActivity()) + .title(R.string.opml_processing) + .content(R.string.operation_takes_time) + .progress(true, 100) + .cancelable(false) + .show(); + + parseOPMLFile(uri, dialog); } super.onActivityResult(requestCode, resultCode, data); } - private void parseOPMLFile(Uri uri) { + private void parseOPMLFile(Uri uri, MaterialDialog dialog) { OpmlParser.parse(uri, getContext()) .flatMapCompletable(opml -> viewModel.insertOPMLFoldersAndFeeds(opml)) .subscribeOn(Schedulers.io()) @@ -157,12 +163,18 @@ public class AccountSettingsFragment extends PreferenceFragmentCompat { .subscribe(new DisposableCompletableObserver() { @Override public void onComplete() { - Log.d("", "onComplete: "); + dialog.dismiss(); } @Override public void onError(Throwable e) { - Log.d("", "onError: "); + dialog.dismiss(); + + new MaterialDialog.Builder(getActivity()) + .title(R.string.processing_file_failed) + .neutralText(R.string.cancel) + .iconRes(R.drawable.ic_error) + .show(); } }); } diff --git a/app/src/main/res/drawable/ic_error.xml b/app/src/main/res/drawable/ic_error.xml new file mode 100644 index 00000000..26d5a65e --- /dev/null +++ b/app/src/main/res/drawable/ic_error.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 6afff704..a4c331ba 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -94,5 +94,8 @@ Actualiser Partager le lien Import/Export OPML + Traitement du fichier OPML + Cette opération peut prendre un certain temps car il faut interroger chaque flux. + Une erreur s\'est produite lors du traitement du fichier \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index beb47a99..83aa2765 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -102,4 +102,7 @@ Actualize Share url OPML Import/Export + Processing OPML file + This operation can take a significant time as each feed needs to be queried. + An error occurred during the file processing