From 9ed69fd52d7ccee0e9f9b82501bd7fd46441e5a6 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Sat, 23 May 2015 23:11:26 +0200 Subject: Cleanup; general Frontend class for displaying user messages --- .../java/org/rssin/android/FilterActivity.java | 9 +- .../org/rssin/android/FilterSettingsActivity.java | 20 ++- .../java/org/rssin/android/FiltersActivity.java | 11 +- app/src/main/java/org/rssin/android/Frontend.java | 159 +++++++++++++++++++++ .../org/rssin/android/InternalStorageProvider.java | 2 - .../android/SharedPreferencesStorageProvider.java | 2 - .../main/java/org/rssin/android/VolleyFetcher.java | 3 +- 7 files changed, 174 insertions(+), 32 deletions(-) create mode 100644 app/src/main/java/org/rssin/android/Frontend.java (limited to 'app/src/main/java') diff --git a/app/src/main/java/org/rssin/android/FilterActivity.java b/app/src/main/java/org/rssin/android/FilterActivity.java index 5d57977..b1be925 100644 --- a/app/src/main/java/org/rssin/android/FilterActivity.java +++ b/app/src/main/java/org/rssin/android/FilterActivity.java @@ -6,7 +6,6 @@ import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.text.Html; -import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -15,7 +14,6 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; import com.android.volley.VolleyError; @@ -41,7 +39,7 @@ public class FilterActivity extends ActionBarActivity { try { filtersList = FiltersList.getInstance(this); } catch (IOException e) { - Toast.makeText(this, getResources().getString(R.string.error_load_filters), Toast.LENGTH_SHORT).show(); + Frontend.error(this, R.string.error_load_filters, e); } Intent intent = getIntent(); @@ -65,8 +63,7 @@ public class FilterActivity extends ActionBarActivity { @Override public void onError(VolleyError error) { - Toast.makeText(getBaseContext(), getResources().getString(R.string.error_net_load), Toast.LENGTH_SHORT).show(); - Log.e("FA", "VolleyError", error); + Frontend.error(getBaseContext(), R.string.error_net_load); } }); } @@ -97,7 +94,7 @@ public class FilterActivity extends ActionBarActivity { try { filter.storeFeedSorter(DefaultStorageProvider.getInstance(this)); } catch (Exception e) { - Toast.makeText(this, getResources().getString(R.string.error_save_feedsorter), Toast.LENGTH_SHORT).show(); + Frontend.warning(this, R.string.error_save_feedsorter, e); } } diff --git a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java index 9639731..3de0882 100644 --- a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java +++ b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java @@ -10,7 +10,6 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; -import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -19,11 +18,9 @@ import android.view.ViewGroup; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; -import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; import org.rssin.rssin.Feed; import org.rssin.rssin.Filter; @@ -49,7 +46,7 @@ public class FilterSettingsActivity extends ActionBarActivity { try { filtersList = FiltersList.getInstance(this); } catch (IOException e) { - Toast.makeText(this, getResources().getString(R.string.error_load_filters), Toast.LENGTH_SHORT).show(); + Frontend.error(this, R.string.error_load_filters, e); } Intent intent = getIntent(); @@ -75,7 +72,7 @@ public class FilterSettingsActivity extends ActionBarActivity { } catch (Exception e) { filter.getKeywords().add(keyword); keywordAdapter.notifyDataSetChanged(); - Toast.makeText(getBaseContext(), getResources().getString(R.string.error_save_filters), Toast.LENGTH_SHORT).show(); + Frontend.error(getBaseContext(), R.string.error_save_filters, e); return false; } } @@ -105,7 +102,7 @@ public class FilterSettingsActivity extends ActionBarActivity { filtersList.save(); finish(); } catch (Exception e) { - Toast.makeText(this, getResources().getString(R.string.error_delete_filter), Toast.LENGTH_SHORT).show(); + Frontend.error(this, R.string.error_delete_filter, e); } return true; } @@ -161,7 +158,7 @@ public class FilterSettingsActivity extends ActionBarActivity { filtersList.save(); setTitle(); } catch (Exception e) { - Toast.makeText(getBaseContext(), getResources().getString(R.string.error_save_filters), Toast.LENGTH_SHORT).show(); + Frontend.error(getBaseContext(), R.string.error_save_filters, e); } setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); } @@ -201,8 +198,7 @@ public class FilterSettingsActivity extends ActionBarActivity { } catch (Exception e) { filter.getKeywords().remove(k); keywordAdapter.notifyDataSetChanged(); - Toast.makeText(this, getResources().getString(R.string.error_save_filters), Toast.LENGTH_SHORT).show(); - Log.e("FSA", e.getMessage(), e); + Frontend.error(this, R.string.error_save_filters, e); } } @@ -231,7 +227,7 @@ public class FilterSettingsActivity extends ActionBarActivity { feedAdapter.notifyDataSetChanged(); return true; } catch (Exception e) { - Toast.makeText(getActivity(), getResources().getString(R.string.error_save_filters), Toast.LENGTH_SHORT).show(); + Frontend.error(getActivity(), R.string.error_save_filters, e); filter.getFeeds().add(feed); return false; } @@ -255,11 +251,11 @@ public class FilterSettingsActivity extends ActionBarActivity { feedAdapter.notifyDataSetChanged(); editText.setText(""); } catch (Exception e) { - Toast.makeText(getActivity(), getResources().getString(R.string.error_save_filters), Toast.LENGTH_SHORT).show(); + Frontend.error(getActivity(), R.string.error_save_filters, e); filter.getFeeds().remove(feed); } } catch (MalformedURLException e) { - Toast.makeText(getActivity(), getResources().getString(R.string.error_invalid_url), Toast.LENGTH_SHORT).show(); + Frontend.info(getActivity(), R.string.error_invalid_url, e); } } }); diff --git a/app/src/main/java/org/rssin/android/FiltersActivity.java b/app/src/main/java/org/rssin/android/FiltersActivity.java index ab7061b..ca9337b 100755 --- a/app/src/main/java/org/rssin/android/FiltersActivity.java +++ b/app/src/main/java/org/rssin/android/FiltersActivity.java @@ -8,7 +8,6 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; -import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -20,16 +19,11 @@ import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; -import org.rssin.rssin.Feed; import org.rssin.rssin.Filter; -import org.rssin.rssin.Keyword; import org.rssin.rssin.R; import java.io.IOException; -import java.io.InvalidClassException; -import java.net.MalformedURLException; import java.util.List; /** @@ -58,8 +52,7 @@ public class FiltersActivity extends ActionBarActivity { try { filtersList = FiltersList.getInstance(this); } catch (IOException ex) { - Toast.makeText(this, "Couldn't load filters.", Toast.LENGTH_SHORT).show(); - Log.e("FILTER", "IOException", ex); + Frontend.error(this, R.string.error_load_filters, ex); finish(); } @@ -139,7 +132,7 @@ public class FiltersActivity extends ActionBarActivity { filtersList.save(); openFilterSettings(f); } catch (Exception e) { - Toast.makeText(getBaseContext(), getResources().getString(R.string.error_save_filters), Toast.LENGTH_SHORT).show(); + Frontend.error(getBaseContext(), R.string.error_save_filters, e); } setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); } diff --git a/app/src/main/java/org/rssin/android/Frontend.java b/app/src/main/java/org/rssin/android/Frontend.java new file mode 100644 index 0000000..8730f25 --- /dev/null +++ b/app/src/main/java/org/rssin/android/Frontend.java @@ -0,0 +1,159 @@ +package org.rssin.android; + +import android.content.Context; +import android.util.Log; +import android.widget.Toast; + +/** + * Easy way to show messages to the user + * @author Camil Staps + */ +class Frontend { + + public static final int ERROR_TIMEOUT = 5000; + public static final int WARNING_TIMEOUT = 5000; + public static final int INFO_TIMEOUT = 5000; + + /** + * Show an error + * @param context The context to show in + * @param message The message + * @param e An exception + * @param timeout The time the error should be shown, in ms (since we're using Toast, not accurate) + */ + public static void error(Context context, String message, Exception e, int timeout) { + Toast.makeText(context, message, timeout > 3000 ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT).show(); + Log.e("FRONTEND", message, e); + } + + /** + * Show an error + * @see #error(Context, String, Exception, int) + * @param context + * @param messageId R.string.--- + * @param e An exception + * @param timeout + */ + public static void error(Context context, int messageId, Exception e, int timeout) { + error(context, context.getResources().getString(messageId), e, timeout); + } + + public static void error(Context context, String message, Exception e) { + error(context, message, e, ERROR_TIMEOUT); + } + + public static void error(Context context, int messageId, Exception e) { + error(context, messageId, e, ERROR_TIMEOUT); + } + + public static void error(Context context, String message, int timeout) { + error(context, message, null, timeout); + } + + public static void error(Context context, int messageId, int timeout) { + error(context, messageId, null, timeout); + } + + public static void error(Context context, String message) { + error(context, message, null, ERROR_TIMEOUT); + } + + public static void error(Context context, int messageId) { + error(context, messageId, null, ERROR_TIMEOUT); + } + + /** + * Show a warning + * @param context The context to show in + * @param message The message + * @param e An exception + * @param timeout The time the warning should be shown, in ms (since we're using Toast, not accurate) + */ + public static void warning(Context context, String message, Exception e, int timeout) { + Toast.makeText(context, message, timeout > 3000 ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT).show(); + Log.w("FRONTEND", message, e); + } + + /** + * Show a warning + * @see #warning(Context, String, Exception, int) + * @param context + * @param messageId R.string.--- + * @param timeout + */ + public static void warning(Context context, int messageId, Exception e, int timeout) { + warning(context, context.getResources().getString(messageId), e, timeout); + } + + public static void warning(Context context, String message, Exception e) { + warning(context, message, e, WARNING_TIMEOUT); + } + + public static void warning(Context context, int messageId, Exception e) { + warning(context, messageId, e, WARNING_TIMEOUT); + } + + public static void warning(Context context, String message, int timeout) { + warning(context, message, null, timeout); + } + + public static void warning(Context context, int messageId, int timeout) { + warning(context, messageId, null, timeout); + } + + public static void warning(Context context, String message) { + warning(context, message, null, WARNING_TIMEOUT); + } + + public static void warning(Context context, int messageId) { + warning(context, messageId, null, WARNING_TIMEOUT); + } + + /** + * Show an info message + * @param context The context to show in + * @param message The message + * @param e An exception + * @param timeout The time the info message should be shown, in ms (since we're using Toast, not accurate) + */ + public static void info(Context context, String message, Exception e, int timeout) { + Toast.makeText(context, message, timeout > 3000 ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT).show(); + Log.i("FRONTEND", message, e); + } + + /** + * Show a warning + * @see #info(Context, String, Exception, int) + * @param context + * @param messageId R.string.--- + * @param timeout + */ + public static void info(Context context, int messageId, Exception e, int timeout) { + info(context, context.getResources().getString(messageId), e, timeout); + } + + public static void info(Context context, String message, Exception e) { + info(context, message, e, INFO_TIMEOUT); + } + + public static void info(Context context, int messageId, Exception e) { + info(context, messageId, e, INFO_TIMEOUT); + } + + public static void info(Context context, String message, int timeout) { + info(context, message, null, timeout); + } + + public static void info(Context context, int messageId, int timeout) { + info(context, messageId, null, timeout); + } + + public static void info(Context context, String message) { + info(context, message, null, INFO_TIMEOUT); + } + + public static void info(Context context, int messageId) { + info(context, messageId, null, INFO_TIMEOUT); + } + +} diff --git a/app/src/main/java/org/rssin/android/InternalStorageProvider.java b/app/src/main/java/org/rssin/android/InternalStorageProvider.java index feff5f0..0868bb6 100644 --- a/app/src/main/java/org/rssin/android/InternalStorageProvider.java +++ b/app/src/main/java/org/rssin/android/InternalStorageProvider.java @@ -1,7 +1,6 @@ package org.rssin.android; import android.content.Context; -import android.util.Log; import org.rssin.neurons.FeedSorter; import org.rssin.rssin.Filter; @@ -111,7 +110,6 @@ class InternalStorageProvider implements StorageProvider, Filt public List allFilters() { List filters = new ArrayList<>(); for (String fileName : context.fileList()) { - Log.d("ISP", "File: " + fileName); try { filters.add((Filter) fetchFromFilename(fileName)); } catch (ClassCastException | IOException e) {} diff --git a/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java b/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java index fdcbe04..aee7df0 100644 --- a/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java +++ b/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java @@ -3,7 +3,6 @@ package org.rssin.android; import android.content.Context; import android.content.SharedPreferences; import android.util.Base64; -import android.util.Log; import org.rssin.rssin.Filter; import org.rssin.storage.FilterStorageProvider; @@ -109,7 +108,6 @@ class SharedPreferencesStorageProvider implements StorageProvider, FilterStorage try { return (Filter) fetch(key.toString(), Filter.class); } catch (Exception e) { - Log.e("SPSP", "Failed fetching filter", e); return null; } } diff --git a/app/src/main/java/org/rssin/android/VolleyFetcher.java b/app/src/main/java/org/rssin/android/VolleyFetcher.java index 8513128..af6895e 100644 --- a/app/src/main/java/org/rssin/android/VolleyFetcher.java +++ b/app/src/main/java/org/rssin/android/VolleyFetcher.java @@ -14,7 +14,8 @@ import org.rssin.listener.ErrorListener; import org.rssin.listener.Listener; /** - * Created by camilstaps on 21-5-15. + * Fetcher class using Volley + * @author Camil Staps */ class VolleyFetcher implements Fetcher { -- cgit v1.2.3