From 3dee90bb17e45a5c25cf855ba378829226da97ee Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 10 Feb 2012 20:11:01 -0800 Subject: [PATCH] Nice error message when you aren't connected web services view --- astrid/res/values/strings-core.xml | 3 ++ .../todoroo/astrid/ui/WebServicesView.java | 46 +++++++++++++++---- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/astrid/res/values/strings-core.xml b/astrid/res/values/strings-core.xml index bf6123971..0fffa5954 100644 --- a/astrid/res/values/strings-core.xml +++ b/astrid/res/values/strings-core.xml @@ -419,6 +419,9 @@ When is this due? Date/Time + + I can do more when connected to the Internet. Please check your connection. + diff --git a/astrid/src/com/todoroo/astrid/ui/WebServicesView.java b/astrid/src/com/todoroo/astrid/ui/WebServicesView.java index f58b7e5c0..f12d669f8 100644 --- a/astrid/src/com/todoroo/astrid/ui/WebServicesView.java +++ b/astrid/src/com/todoroo/astrid/ui/WebServicesView.java @@ -2,12 +2,14 @@ package com.todoroo.astrid.ui; import greendroid.widget.AsyncImageView; +import java.io.IOException; import java.io.StringReader; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import org.json.JSONArray; import org.json.JSONException; @@ -63,7 +65,7 @@ public class WebServicesView extends LinearLayout { private LayoutInflater inflater; private Activity activity; public TaskRabbitControlSet taskRabbitControl; - + private final AtomicBoolean notConnected = new AtomicBoolean(false); private LinearLayout.LayoutParams rowParams; @@ -128,6 +130,23 @@ public class WebServicesView extends LinearLayout { } + private void showNotConnected() { + ImageView imageView = new ImageView(getContext()); + imageView.setLayoutParams(new LinearLayout.LayoutParams( + LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); + imageView.setImageResource(R.drawable.icon); + imageView.setPadding(20, 50, 20, 20); + imageView.setScaleType(ScaleType.CENTER); + addView(imageView); + + TextView textView = new TextView(getContext()); + textView.setTextAppearance(getContext(), R.style.TextAppearance_Medium); + textView.setText(R.string.WSV_not_online); + textView.setGravity(Gravity.CENTER); + textView.setPadding(20, 50, 20, 20); + addView(textView); + } + protected void initializeAmazon() { addSectionHeader("Amazon.com"); @@ -439,12 +458,6 @@ public class WebServicesView extends LinearLayout { } - - - - - - protected View inflateRow(ViewGroup body, String imageUrl, String title, String subtitle, String tag) { View view = inflater.inflate(R.layout.web_service_row, body, false); @@ -477,7 +490,23 @@ public class WebServicesView extends LinearLayout { }; protected void displayError(final Exception exception, final LinearLayout body) { - exceptionService.reportError("google-error", exception); + if(exception instanceof IOException) { + if(notConnected.getAndSet(true)) + return; + + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + removeAllViews(); + + initializeTaskRabbit(); + showNotConnected(); + } + }); + return; + } + + exceptionService.reportError("web-service-error", exception); activity.runOnUiThread(new Runnable() { @Override @@ -488,6 +517,7 @@ public class WebServicesView extends LinearLayout { textView.setTextAppearance(getContext(), R.style.TextAppearance_Medium); textView.setText(exception.getClass().getSimpleName() + ": " + exception.getLocalizedMessage()); + textView.setLines(2); body.addView(textView); } });