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);
}
});