diff --git a/res/layout/notification_progress_bar.xml b/res/layout/notification_progress_bar.xml
index 719d58f..714e289 100644
--- a/res/layout/notification_progress_bar.xml
+++ b/res/layout/notification_progress_bar.xml
@@ -22,5 +22,14 @@
android:layout_weight="1"
android:spacing="0dip"
android:text="@string/error_no_featured_casts" />
+
\ No newline at end of file
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 655afd3..826c17c 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -125,4 +125,5 @@
Errore di protocollo Network: %1$s
Caricamento video...
Caricamento dati...
+ Connessione a internet necessaria per caricare i contenuti. Riprovare con connessione dati attiva
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0f9f45f..e03488c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -210,4 +210,5 @@
Error: camera did not return an image. Please try again.
Tap the buttons below to add photos and videos
Loading data...
+ You need a data connection to load this content. Please try again with data enabled
diff --git a/src/edu/mit/mobile/android/locast/sync/LocastSyncService.java b/src/edu/mit/mobile/android/locast/sync/LocastSyncService.java
index 715aa6a..cf9258e 100644
--- a/src/edu/mit/mobile/android/locast/sync/LocastSyncService.java
+++ b/src/edu/mit/mobile/android/locast/sync/LocastSyncService.java
@@ -51,6 +51,7 @@
import edu.mit.mobile.android.locast.data.SyncException;
import edu.mit.mobile.android.locast.net.NetworkClient;
import edu.mit.mobile.android.locast.net.NetworkProtocolException;
+import edu.mit.mobile.android.widget.NotificationProgressBar;
/**
* A wrapper to {@link SyncEngine} which provides the interface to the
@@ -85,7 +86,7 @@ public class LocastSyncService extends Service {
* @see #startSync(Account, Uri, boolean, Bundle)
*/
public static void startSync(Context context, Uri what) {
- startSync(Authenticator.getFirstAccount(context), what, false, new Bundle());
+ startSync(context,Authenticator.getFirstAccount(context), what, false, new Bundle());
}
/**
@@ -97,7 +98,7 @@ public static void startSync(Context context, Uri what) {
* @see #startSync(Account, Uri, boolean, Bundle)
*/
public static void startSync(Context context, Uri what, boolean explicitSync) {
- startSync(Authenticator.getFirstAccount(context), what, explicitSync, new Bundle());
+ startSync(context,Authenticator.getFirstAccount(context), what, explicitSync, new Bundle());
}
/**
@@ -108,14 +109,14 @@ public static void startSync(Context context, Uri what, boolean explicitSync) {
* @see #startSync(Account, Uri, boolean, Bundle)
*/
public static void startSync(Context context, Uri what, boolean explicitSync, Bundle extras) {
- startSync(Authenticator.getFirstAccount(context), what, explicitSync, extras);
+ startSync(context,Authenticator.getFirstAccount(context), what, explicitSync, extras);
}
public static void startExpeditedAutomaticSync(Context context, Uri what){
final Bundle extras = new Bundle();
extras.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
- startSync(Authenticator.getFirstAccount(context), what, false, extras);
+ startSync(context,Authenticator.getFirstAccount(context), what, false, extras);
}
/**
@@ -136,7 +137,7 @@ public static void startSync(Context context, Uri httpPubUrl, Uri destination,
final Bundle b = new Bundle();
b.putString(SyncEngine.EXTRA_DESTINATION_URI, destination.toString());
- startSync(Authenticator.getFirstAccount(context), httpPubUrl, explicitSync, b);
+ startSync(context,Authenticator.getFirstAccount(context), httpPubUrl, explicitSync, b);
}
/**
@@ -147,10 +148,10 @@ public static void startSync(Context context, Uri httpPubUrl, Uri destination,
* @param explicitSync
* @see #startSync(Account, Uri, boolean, Bundle)
*/
- public static void startSync(Account account, Uri what, boolean explicitSync) {
+ public static void startSync(Context context,Account account, Uri what, boolean explicitSync) {
final Bundle b = new Bundle();
- startSync(account, what, explicitSync, b);
+ startSync(context,account, what, explicitSync, b);
}
/**
@@ -166,7 +167,7 @@ public static void startSync(Account account, Uri what, boolean explicitSync) {
* the extras
* @param extras
*/
- public static void startSync(Account account, Uri what, boolean explicitSync, Bundle extras) {
+ public static void startSync(Context context,Account account, Uri what, boolean explicitSync, Bundle extras) {
if (explicitSync) {
extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
if (!extras.containsKey(ContentResolver.SYNC_EXTRAS_EXPEDITED)) {
@@ -188,6 +189,8 @@ public static void startSync(Account account, Uri what, boolean explicitSync, Bu
Log.d(TAG, "requesting sync for "+account + " with extras: "+extras);
}
ContentResolver.requestSync(account, MediaProvider.AUTHORITY, extras);
+ context.sendBroadcast(new Intent(NotificationProgressBar.INTENT_UPDATE_NETWORK_STATUS));
+
}
@Override
diff --git a/src/edu/mit/mobile/android/locast/ver2/browser/BrowserHome.java b/src/edu/mit/mobile/android/locast/ver2/browser/BrowserHome.java
index 84516cb..798e265 100644
--- a/src/edu/mit/mobile/android/locast/ver2/browser/BrowserHome.java
+++ b/src/edu/mit/mobile/android/locast/ver2/browser/BrowserHome.java
@@ -19,9 +19,14 @@
*/
import android.app.Dialog;
+import android.content.BroadcastReceiver;
import android.content.ContentResolver;
+import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.database.Cursor;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -55,6 +60,7 @@
import edu.mit.mobile.android.locast.sync.LocastSyncStatusObserver;
import edu.mit.mobile.android.locast.ver2.R;
import edu.mit.mobile.android.locast.ver2.casts.LocatableListWithMap;
+import edu.mit.mobile.android.widget.NetworkStatusBroadcastReceiver;
import edu.mit.mobile.android.widget.NotificationProgressBar;
import edu.mit.mobile.android.widget.RefreshButton;
@@ -77,6 +83,8 @@ public class BrowserHome extends FragmentActivity implements LoaderManager.Loade
private static final int LOADER_FEATURED_CASTS = 0;
private static final int DIALOG_LOGOUT = 100;
+
+ private static NetworkStatusBroadcastReceiver mNetworkBroadcastReceiver;
private final Handler mHandler = new Handler() {
@Override
@@ -97,6 +105,27 @@ public void handleMessage(Message msg) {
mProgressBar.showProgressBar(false);
mRefresh.setRefreshing(false);
break;
+ case NetworkStatusBroadcastReceiver.MSG_NETWORK_STATE:
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state changed");
+ }
+ ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo netInfo = cm.getActiveNetworkInfo();
+ if (netInfo != null && netInfo.isConnectedOrConnecting()) {
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state connecting");
+ }
+ mProgressBar.setNetworkStatus(true);
+ mRefresh.setRefreshing(true);
+ }
+ else{
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state not connecting");
+ }
+ mProgressBar.setNetworkStatus(false);
+ mRefresh.setRefreshing(false);
+ }
+ break;
}
};
};
@@ -106,11 +135,28 @@ public void handleMessage(Message msg) {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
+ mNetworkBroadcastReceiver=new NetworkStatusBroadcastReceiver(this, mHandler);
mImageCache = ImageCache.getInstance(this);
setContentView(R.layout.browser_main);
mProgressBar =(NotificationProgressBar) (findViewById(R.id.progressNotification));
+ mRefresh = (RefreshButton) findViewById(R.id.refresh);
+ ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo netInfo = cm.getActiveNetworkInfo();
+ if (netInfo != null && netInfo.isConnectedOrConnecting()) {
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state connecting");
+ }
+ mProgressBar.setNetworkStatus(true);
+ mRefresh.setRefreshing(true);
+ }
+ else{
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state not connecting");
+ }
+ mProgressBar.setNetworkStatus(false);
+ mRefresh.setRefreshing(false);
+ }
if (Constants.USE_APPUPDATE_CHECKER) {
mAppUpdateChecker = new AppUpdateChecker(this, getString(R.string.app_update_url),
new AppUpdateChecker.OnUpdateDialog(this, getString(R.string.app_name)));
@@ -130,7 +176,7 @@ protected void onCreate(Bundle savedInstanceState) {
final LoaderManager lm = getSupportLoaderManager();
lm.initLoader(LOADER_FEATURED_CASTS, null, this);
- mRefresh = (RefreshButton) findViewById(R.id.refresh);
+
mRefresh.setOnClickListener(this);
findViewById(R.id.itineraries).setOnClickListener(this);
findViewById(R.id.events).setOnClickListener(this);
@@ -149,7 +195,7 @@ protected void onCreate(Bundle savedInstanceState) {
@Override
protected void onPause() {
super.onPause();
-
+ this.unregisterReceiver(mNetworkBroadcastReceiver);
if (mSyncHandle != null) {
ContentResolver.removeStatusChangeListener(mSyncHandle);
}
@@ -158,10 +204,13 @@ protected void onPause() {
@Override
protected void onResume() {
super.onResume();
+ IntentFilter intentFilter=new IntentFilter();
+ intentFilter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
+ intentFilter.addAction(NotificationProgressBar.INTENT_UPDATE_NETWORK_STATUS);
+ this.registerReceiver(mNetworkBroadcastReceiver, intentFilter);
mSyncHandle = ContentResolver.addStatusChangeListener(0xff, new LocastSyncStatusObserver(
this, mHandler));
LocastSyncStatusObserver.notifySyncStatusToHandler(this, mHandler);
-
if (shouldRefresh) {
refresh(false);
}
diff --git a/src/edu/mit/mobile/android/locast/ver2/casts/CastDetail.java b/src/edu/mit/mobile/android/locast/ver2/casts/CastDetail.java
index 388aa16..71c5a4f 100644
--- a/src/edu/mit/mobile/android/locast/ver2/casts/CastDetail.java
+++ b/src/edu/mit/mobile/android/locast/ver2/casts/CastDetail.java
@@ -24,7 +24,10 @@
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.IntentFilter;
import android.database.Cursor;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -59,6 +62,7 @@
import edu.mit.mobile.android.locast.ver2.R;
import edu.mit.mobile.android.locast.ver2.itineraries.LocatableItemOverlay;
import edu.mit.mobile.android.locast.widget.FavoriteClickHandler;
+import edu.mit.mobile.android.widget.NetworkStatusBroadcastReceiver;
import edu.mit.mobile.android.widget.NotificationProgressBar;
import edu.mit.mobile.android.widget.RefreshButton;
import edu.mit.mobile.android.widget.ValidatingCheckBox;
@@ -79,6 +83,8 @@ public class CastDetail extends LocatableDetail implements LoaderManager.LoaderC
private Uri mCastMediaUri;
private static final int REQUEST_SIGNIN = 0;
+
+ private static NetworkStatusBroadcastReceiver mNetworkBroadcastReceiver;
private static final String[] CAST_PROJECTION = ArrayUtils.concat(new String[] { Cast._ID,
Cast._TITLE, Cast._AUTHOR, Cast._DESCRIPTION, Cast._FAVORITED },
@@ -109,6 +115,27 @@ public void handleMessage(Message msg) {
mProgressBar.showProgressBar(false);
mRefresh.setRefreshing(false);
break;
+ case NetworkStatusBroadcastReceiver.MSG_NETWORK_STATE:
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state changed");
+ }
+ ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo netInfo = cm.getActiveNetworkInfo();
+ if (netInfo != null && netInfo.isConnectedOrConnecting()) {
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state connecting");
+ }
+ mProgressBar.setNetworkStatus(true);
+ mRefresh.setRefreshing(true);
+ }
+ else{
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state not connecting");
+ }
+ mProgressBar.setNetworkStatus(false);
+ mRefresh.setRefreshing(false);
+ }
+ break;
}
};
};
@@ -119,6 +146,7 @@ public void handleMessage(Message msg) {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mNetworkBroadcastReceiver=new NetworkStatusBroadcastReceiver(this, mHandler);
setContentView(R.layout.cast_detail);
initOverlays();
@@ -161,6 +189,7 @@ protected void onCreate(Bundle savedInstanceState) {
@Override
protected void onPause() {
super.onPause();
+ this.unregisterReceiver(mNetworkBroadcastReceiver);
if (mSyncHandle != null) {
ContentResolver.removeStatusChangeListener(mSyncHandle);
}
@@ -169,6 +198,10 @@ protected void onPause() {
@Override
protected void onResume() {
super.onResume();
+ IntentFilter intentFilter=new IntentFilter();
+ intentFilter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
+ intentFilter.addAction(NotificationProgressBar.INTENT_UPDATE_NETWORK_STATUS);
+ this.registerReceiver(mNetworkBroadcastReceiver, intentFilter);
mSyncHandle = ContentResolver.addStatusChangeListener(0xff, new LocastSyncStatusObserver(
this, mHandler));
LocastSyncStatusObserver.notifySyncStatusToHandler(this, mHandler);
diff --git a/src/edu/mit/mobile/android/locast/ver2/casts/LocatableListWithMap.java b/src/edu/mit/mobile/android/locast/ver2/casts/LocatableListWithMap.java
index b2b9df4..7cf1762 100644
--- a/src/edu/mit/mobile/android/locast/ver2/casts/LocatableListWithMap.java
+++ b/src/edu/mit/mobile/android/locast/ver2/casts/LocatableListWithMap.java
@@ -22,10 +22,13 @@
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.database.Cursor;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -66,6 +69,7 @@
import edu.mit.mobile.android.locast.ver2.events.EventCursorAdapter;
import edu.mit.mobile.android.locast.ver2.itineraries.BasicLocatableOverlay;
import edu.mit.mobile.android.locast.ver2.itineraries.LocatableItemOverlay;
+import edu.mit.mobile.android.widget.NetworkStatusBroadcastReceiver;
import edu.mit.mobile.android.widget.NotificationProgressBar;
import edu.mit.mobile.android.widget.RefreshButton;
@@ -87,6 +91,8 @@ public class LocatableListWithMap extends MapFragmentActivity implements LoaderM
private long mLastUpdate;
private ImageCache mImageCache;
+
+ private static NetworkStatusBroadcastReceiver mNetworkBroadcastReceiver;
// constants related to auto-refreshing
private static long AUTO_UPDATE_FREQUENCY = 15 * 1000 * 1000; // nano-seconds
@@ -125,6 +131,27 @@ public void handleMessage(Message msg) {
mProgressBar.showProgressBar(false);
mRefresh.setRefreshing(false);
break;
+ case NetworkStatusBroadcastReceiver.MSG_NETWORK_STATE:
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state changed");
+ }
+ ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo netInfo = cm.getActiveNetworkInfo();
+ if (netInfo != null && netInfo.isConnectedOrConnecting()) {
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state connecting");
+ }
+ mProgressBar.setNetworkStatus(true);
+ mRefresh.setRefreshing(true);
+ }
+ else{
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state not connecting");
+ }
+ mProgressBar.setNetworkStatus(false);
+ mRefresh.setRefreshing(false);
+ }
+ break;
}
};
};
@@ -132,6 +159,7 @@ public void handleMessage(Message msg) {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mNetworkBroadcastReceiver=new NetworkStatusBroadcastReceiver(this, mHandler);
setContentView(R.layout.map_list_activity);
mProgressBar =(NotificationProgressBar) (findViewById(R.id.progressNotification));
findViewById(R.id.refresh).setOnClickListener(this);
@@ -217,6 +245,10 @@ public void onCreate(Bundle savedInstanceState) {
@Override
protected void onResume() {
super.onResume();
+ IntentFilter intentFilter=new IntentFilter();
+ intentFilter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
+ intentFilter.addAction(NotificationProgressBar.INTENT_UPDATE_NETWORK_STATUS);
+ this.registerReceiver(mNetworkBroadcastReceiver, intentFilter);
if (actionSearchNearby) {
mMyLocationOverlay.enableMyLocation();
}
@@ -228,6 +260,7 @@ protected void onResume() {
@Override
protected void onPause() {
super.onPause();
+ this.unregisterReceiver(mNetworkBroadcastReceiver);
if (actionSearchNearby) {
mMyLocationOverlay.disableMyLocation();
}
diff --git a/src/edu/mit/mobile/android/locast/ver2/itineraries/ItineraryDetail.java b/src/edu/mit/mobile/android/locast/ver2/itineraries/ItineraryDetail.java
index d97b24e..c469c2a 100644
--- a/src/edu/mit/mobile/android/locast/ver2/itineraries/ItineraryDetail.java
+++ b/src/edu/mit/mobile/android/locast/ver2/itineraries/ItineraryDetail.java
@@ -23,9 +23,13 @@
import android.content.ContentResolver;
import android.content.ContentUris;
+import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.IntentFilter;
import android.database.Cursor;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -65,6 +69,7 @@
import edu.mit.mobile.android.locast.sync.LocastSyncService;
import edu.mit.mobile.android.locast.sync.LocastSyncStatusObserver;
import edu.mit.mobile.android.locast.ver2.R;
+import edu.mit.mobile.android.widget.NetworkStatusBroadcastReceiver;
import edu.mit.mobile.android.widget.NotificationProgressBar;
import edu.mit.mobile.android.widget.RefreshButton;
@@ -107,6 +112,8 @@ public class ItineraryDetail extends MapFragmentActivity implements LoaderManage
private Object mSyncHandle;
private NotificationProgressBar mProgressBar;
+
+ private static NetworkStatusBroadcastReceiver mNetworkBroadcastReceiver;
private final Handler mHandler = new Handler(){
@Override
@@ -127,6 +134,27 @@ public void handleMessage(Message msg) {
mProgressBar.showProgressBar(false);
mRefresh.setRefreshing(false);
break;
+ case NetworkStatusBroadcastReceiver.MSG_NETWORK_STATE:
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state changed");
+ }
+ ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo netInfo = cm.getActiveNetworkInfo();
+ if (netInfo != null && netInfo.isConnectedOrConnecting()) {
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state connecting");
+ }
+ mProgressBar.setNetworkStatus(true);
+ mRefresh.setRefreshing(true);
+ }
+ else{
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state not connecting");
+ }
+ mProgressBar.setNetworkStatus(false);
+ mRefresh.setRefreshing(false);
+ }
+ break;
}
};
};
@@ -136,6 +164,7 @@ protected void onCreate(Bundle icicle) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(icicle);
+ mNetworkBroadcastReceiver=new NetworkStatusBroadcastReceiver(this, mHandler);
setContentView(R.layout.itinerary_detail);
mProgressBar =(NotificationProgressBar) (findViewById(R.id.progressNotification));
@@ -197,12 +226,17 @@ protected void onCreate(Bundle icicle) {
protected void onResume() {
mFirstLoadSync = true;
super.onResume();
+ IntentFilter intentFilter=new IntentFilter();
+ intentFilter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
+ intentFilter.addAction(NotificationProgressBar.INTENT_UPDATE_NETWORK_STATUS);
+ this.registerReceiver(mNetworkBroadcastReceiver, intentFilter);
mSyncHandle = ContentResolver.addStatusChangeListener(0xff, new LocastSyncStatusObserver(this, mHandler));
LocastSyncStatusObserver.notifySyncStatusToHandler(this, mHandler);
}
@Override
protected void onPause() {
super.onPause();
+ this.unregisterReceiver(mNetworkBroadcastReceiver);
if (mSyncHandle != null){
ContentResolver.removeStatusChangeListener(mSyncHandle);
}
diff --git a/src/edu/mit/mobile/android/locast/ver2/itineraries/ItineraryList.java b/src/edu/mit/mobile/android/locast/ver2/itineraries/ItineraryList.java
index b5c70cb..97ca156 100644
--- a/src/edu/mit/mobile/android/locast/ver2/itineraries/ItineraryList.java
+++ b/src/edu/mit/mobile/android/locast/ver2/itineraries/ItineraryList.java
@@ -20,8 +20,12 @@
import android.content.ContentResolver;
import android.content.ContentUris;
+import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.database.Cursor;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -56,6 +60,7 @@
import edu.mit.mobile.android.locast.sync.LocastSyncService;
import edu.mit.mobile.android.locast.sync.LocastSyncStatusObserver;
import edu.mit.mobile.android.locast.ver2.R;
+import edu.mit.mobile.android.widget.NetworkStatusBroadcastReceiver;
import edu.mit.mobile.android.widget.NotificationProgressBar;
import edu.mit.mobile.android.widget.RefreshButton;
@@ -93,6 +98,8 @@ public class ItineraryList extends FragmentActivity implements
private Object mSyncHandle;
private NotificationProgressBar mProgressBar;
+
+ private static NetworkStatusBroadcastReceiver mNetworkBroadcastReceiver;
private final Handler mHandler = new Handler() {
@Override
@@ -113,6 +120,27 @@ public void handleMessage(Message msg) {
mProgressBar.showProgressBar(false);
mRefresh.setRefreshing(false);
break;
+ case NetworkStatusBroadcastReceiver.MSG_NETWORK_STATE:
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state changed");
+ }
+ ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo netInfo = cm.getActiveNetworkInfo();
+ if (netInfo != null && netInfo.isConnectedOrConnecting()) {
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state connecting");
+ }
+ mProgressBar.setNetworkStatus(true);
+ mRefresh.setRefreshing(true);
+ }
+ else{
+ if (Constants.DEBUG) {
+ Log.d(TAG, "Network state not connecting");
+ }
+ mProgressBar.setNetworkStatus(false);
+ mRefresh.setRefreshing(false);
+ }
+ break;
}
};
};
@@ -120,6 +148,7 @@ public void handleMessage(Message msg) {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mNetworkBroadcastReceiver=new NetworkStatusBroadcastReceiver(this, mHandler);
setContentView(R.layout.simple_list_activity);
mProgressBar =(NotificationProgressBar) (findViewById(R.id.progressNotification));
@@ -163,7 +192,10 @@ public void onCreate(Bundle savedInstanceState) {
@Override
protected void onResume() {
super.onResume();
-
+ IntentFilter intentFilter=new IntentFilter();
+ intentFilter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
+ intentFilter.addAction(NotificationProgressBar.INTENT_UPDATE_NETWORK_STATUS);
+ this.registerReceiver(mNetworkBroadcastReceiver, intentFilter);
mSyncWhenLoaded = true;
mSyncHandle = ContentResolver.addStatusChangeListener(0xff, new LocastSyncStatusObserver(
this, mHandler));
@@ -173,6 +205,7 @@ protected void onResume() {
@Override
protected void onPause() {
super.onPause();
+ this.unregisterReceiver(mNetworkBroadcastReceiver);
if (mSyncHandle != null) {
ContentResolver.removeStatusChangeListener(mSyncHandle);
}
diff --git a/src/edu/mit/mobile/android/widget/NetworkStatusBroadcastReceiver.java b/src/edu/mit/mobile/android/widget/NetworkStatusBroadcastReceiver.java
new file mode 100644
index 0000000..d8b8e58
--- /dev/null
+++ b/src/edu/mit/mobile/android/widget/NetworkStatusBroadcastReceiver.java
@@ -0,0 +1,25 @@
+package edu.mit.mobile.android.widget;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Handler;
+
+public class NetworkStatusBroadcastReceiver extends BroadcastReceiver{
+ Context mContext;
+ Handler mHandler;
+
+ public static final int MSG_NETWORK_STATE=400;
+
+ private static final String TAG = NetworkStatusBroadcastReceiver.class.getSimpleName();
+
+ public NetworkStatusBroadcastReceiver(Context context,Handler handler) {
+ this.mContext=context;
+ this.mHandler=handler;
+ }
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ mHandler.sendEmptyMessage(MSG_NETWORK_STATE);
+ }
+
+}
diff --git a/src/edu/mit/mobile/android/widget/NotificationProgressBar.java b/src/edu/mit/mobile/android/widget/NotificationProgressBar.java
index e39c040..880c36e 100644
--- a/src/edu/mit/mobile/android/widget/NotificationProgressBar.java
+++ b/src/edu/mit/mobile/android/widget/NotificationProgressBar.java
@@ -14,6 +14,9 @@ public class NotificationProgressBar extends LinearLayout {
String textID;
private ProgressBar mProgressBar;
private TextView mTextView;
+ private TextView mNoDataTextView;
+ public static boolean online=true;
+ public static String INTENT_UPDATE_NETWORK_STATUS="edu.mit.mobile.android.widget.NotificationProgressBar.update";
public NotificationProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -24,8 +27,10 @@ public NotificationProgressBar(Context context, AttributeSet attrs) {
v=inflater.inflate(R.layout.notification_progress_bar,this);
}
mProgressBar=(ProgressBar)findViewById(R.id.progressBar);
+ mNoDataTextView=(TextView)findViewById(R.id.noDataTextView);
mTextView=(TextView)findViewById(R.id.emptyTextView);
mTextView.setText(textID);
+ updateNetworkStatus();
}
public NotificationProgressBar(Context context) {
super(context);
@@ -40,9 +45,29 @@ private void init(AttributeSet attrs) {
textID = a.getString(R.styleable.NotificationProgressBar_android_text);
a.recycle();
}
- public void showProgressBar(boolean b){
+ public synchronized void showProgressBar(boolean b){
mProgressBar.setVisibility((b?View.VISIBLE:View.GONE));
mTextView.setVisibility(((!b)?View.VISIBLE:View.GONE));
+ mNoDataTextView.setVisibility((View.GONE));
+ postInvalidate();
+ }
+ public synchronized void setNetworkStatus(boolean online){
+ NotificationProgressBar.online=online;
+ updateNetworkStatus();
+ }
+ public void updateNetworkStatus(){
+ if(!online){
+ mProgressBar.setVisibility(View.GONE);
+ mTextView.setVisibility(View.GONE);
+ mNoDataTextView.setVisibility((View.VISIBLE));
+ }
+ else{
+ if(mProgressBar.getVisibility()==View.GONE && mTextView.getVisibility()==View.GONE){
+ mProgressBar.setVisibility(View.VISIBLE);
+ mTextView.setVisibility(View.GONE);
+ mNoDataTextView.setVisibility((View.GONE));
+ }
+ }
postInvalidate();
}
}
diff --git a/src/edu/mit/mobile/android/widget/RefreshButton.java b/src/edu/mit/mobile/android/widget/RefreshButton.java
index f932d63..ce7d128 100644
--- a/src/edu/mit/mobile/android/widget/RefreshButton.java
+++ b/src/edu/mit/mobile/android/widget/RefreshButton.java
@@ -75,7 +75,7 @@ private void startAnimating(){
public void setRefreshing(boolean isRefreshing){
if (isRefreshing){
- setEnabled(false);
+ //setEnabled(false);
setImageDrawable(mRefreshingDrawable);
startAnimating();
}else{