summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBart Sears <bsears@google.com>2012-10-30 12:40:34 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-10-30 12:40:34 -0700
commit85ee46d76fb59f8550afdfe73486fff2b6bd5035 (patch)
treef4b12bf65b6a2b6ef73b56b9ddb7f91a60f9e9a8
parentfffab335ac447da86e7f54211b6415b49d096f85 (diff)
parent556347cb20e871f25560ff37d7c51f66733888f7 (diff)
downloadandroid_packages_apps_Snap-85ee46d76fb59f8550afdfe73486fff2b6bd5035.tar.gz
android_packages_apps_Snap-85ee46d76fb59f8550afdfe73486fff2b6bd5035.tar.bz2
android_packages_apps_Snap-85ee46d76fb59f8550afdfe73486fff2b6bd5035.zip
am c7536cfa: Merge "Show sync error toast only when both loading and syncing are done." into gb-ub-photos-arches
* commit 'c7536cfa819d10e0c556ecb30c53a58c048fa327': Show sync error toast only when both loading and syncing are done.
-rw-r--r--src/com/android/gallery3d/app/AlbumDataLoader.java29
-rw-r--r--src/com/android/gallery3d/app/AlbumPage.java29
-rw-r--r--src/com/android/gallery3d/app/AlbumSetDataLoader.java2
-rw-r--r--src/com/android/gallery3d/app/AlbumSetPage.java2
-rw-r--r--src/com/android/gallery3d/app/LoadingListener.java7
-rw-r--r--src/com/android/gallery3d/app/PhotoDataAdapter.java2
-rw-r--r--src/com/android/gallery3d/app/PhotoPage.java2
7 files changed, 58 insertions, 15 deletions
diff --git a/src/com/android/gallery3d/app/AlbumDataLoader.java b/src/com/android/gallery3d/app/AlbumDataLoader.java
index 8093bb983..0ee1b03af 100644
--- a/src/com/android/gallery3d/app/AlbumDataLoader.java
+++ b/src/com/android/gallery3d/app/AlbumDataLoader.java
@@ -72,6 +72,8 @@ public class AlbumDataLoader {
private LoadingListener mLoadingListener;
private ReloadTask mReloadTask;
+ // the data version on which last loading failed
+ private long mFailedVersion = MediaObject.INVALID_DATA_VERSION;
public AlbumDataLoader(AbstractGalleryActivity context, MediaSet mediaSet) {
mSource = mediaSet;
@@ -93,7 +95,11 @@ public class AlbumDataLoader {
if (mLoadingListener != null) mLoadingListener.onLoadingStarted();
return;
case MSG_LOAD_FINISH:
- if (mLoadingListener != null) mLoadingListener.onLoadingFinished();
+ if (mLoadingListener != null) {
+ boolean loadingFailed =
+ (mFailedVersion != MediaObject.INVALID_DATA_VERSION);
+ mLoadingListener.onLoadingFinished(loadingFailed);
+ }
return;
}
}
@@ -245,6 +251,10 @@ public class AlbumDataLoader {
@Override
public UpdateInfo call() throws Exception {
+ if (mFailedVersion == mVersion) {
+ // previous loading failed, return null to pause loading
+ return null;
+ }
UpdateInfo info = new UpdateInfo();
long version = mVersion;
info.version = mSourceVersion;
@@ -283,7 +293,14 @@ public class AlbumDataLoader {
ArrayList<MediaItem> items = info.items;
- if (items == null) return null;
+ mFailedVersion = MediaObject.INVALID_DATA_VERSION;
+ if ((items == null) || items.isEmpty()) {
+ if (info.reloadCount > 0) {
+ mFailedVersion = info.version;
+ Log.d(TAG, "loading failed: " + mFailedVersion);
+ }
+ return null;
+ }
int start = Math.max(info.reloadStart, mContentStart);
int end = Math.min(info.reloadStart + items.size(), mContentEnd);
@@ -340,11 +357,17 @@ public class AlbumDataLoader {
synchronized (this) {
if (mActive && !mDirty && updateComplete) {
updateLoading(false);
+ if (mFailedVersion != MediaObject.INVALID_DATA_VERSION) {
+ Log.d(TAG, "reload pause");
+ }
Utils.waitWithoutInterrupt(this);
+ if (mActive && (mFailedVersion != MediaObject.INVALID_DATA_VERSION)) {
+ Log.d(TAG, "reload resume");
+ }
continue;
}
+ mDirty = false;
}
- mDirty = false;
updateLoading(true);
long version = mSource.reload();
UpdateInfo info = executeAndWait(new GetUpdateInfo(version));
diff --git a/src/com/android/gallery3d/app/AlbumPage.java b/src/com/android/gallery3d/app/AlbumPage.java
index 4c945a45b..ee7a107fd 100644
--- a/src/com/android/gallery3d/app/AlbumPage.java
+++ b/src/com/android/gallery3d/app/AlbumPage.java
@@ -108,6 +108,8 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster
private int mLoadingBits = 0;
private boolean mInitialSynced = false;
+ private int mSyncResult;
+ private boolean mLoadingFailed;
private RelativePosition mOpenCenter = new RelativePosition();
private Handler mHandler;
@@ -419,6 +421,7 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster
// Set the reload bit here to prevent it exit this page in clearLoadingBit().
setLoadingBit(BIT_LOADING_RELOAD);
+ mLoadingFailed = false;
mAlbumDataAdapter.resume();
mAlbumView.resume();
@@ -693,17 +696,13 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster
public void run() {
GLRoot root = mActivity.getGLRoot();
root.lockRenderThread();
+ mSyncResult = resultCode;
try {
if (resultCode == MediaSet.SYNC_RESULT_SUCCESS) {
mInitialSynced = true;
}
clearLoadingBit(BIT_LOADING_SYNC);
- if (resultCode == MediaSet.SYNC_RESULT_ERROR && mIsActive
- && (mAlbumDataAdapter.size() == 0)) {
- // show error toast only if the album is empty
- Toast.makeText(mActivity, R.string.sync_album_error,
- Toast.LENGTH_LONG).show();
- }
+ showSyncErrorIfNecessary(mLoadingFailed);
} finally {
root.unlockRenderThread();
}
@@ -711,6 +710,19 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster
});
}
+ // Show sync error toast when all the following conditions are met:
+ // (1) both loading and sync are done,
+ // (2) sync result is error,
+ // (3) the page is still active, and
+ // (4) no photo is shown or loading fails.
+ private void showSyncErrorIfNecessary(boolean loadingFailed) {
+ if ((mLoadingBits == 0) && (mSyncResult == MediaSet.SYNC_RESULT_ERROR) && mIsActive
+ && (loadingFailed || (mAlbumDataAdapter.size() == 0))) {
+ Toast.makeText(mActivity, R.string.sync_album_error,
+ Toast.LENGTH_LONG).show();
+ }
+ }
+
private void setLoadingBit(int loadTaskBit) {
mLoadingBits |= loadTaskBit;
}
@@ -731,11 +743,14 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster
@Override
public void onLoadingStarted() {
setLoadingBit(BIT_LOADING_RELOAD);
+ mLoadingFailed = false;
}
@Override
- public void onLoadingFinished() {
+ public void onLoadingFinished(boolean loadingFailed) {
clearLoadingBit(BIT_LOADING_RELOAD);
+ mLoadingFailed = loadingFailed;
+ showSyncErrorIfNecessary(loadingFailed);
}
}
diff --git a/src/com/android/gallery3d/app/AlbumSetDataLoader.java b/src/com/android/gallery3d/app/AlbumSetDataLoader.java
index 9f7014ecd..cf380f812 100644
--- a/src/com/android/gallery3d/app/AlbumSetDataLoader.java
+++ b/src/com/android/gallery3d/app/AlbumSetDataLoader.java
@@ -95,7 +95,7 @@ public class AlbumSetDataLoader {
if (mLoadingListener != null) mLoadingListener.onLoadingStarted();
return;
case MSG_LOAD_FINISH:
- if (mLoadingListener != null) mLoadingListener.onLoadingFinished();
+ if (mLoadingListener != null) mLoadingListener.onLoadingFinished(false);
return;
}
}
diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java
index 49ab683be..cae606be1 100644
--- a/src/com/android/gallery3d/app/AlbumSetPage.java
+++ b/src/com/android/gallery3d/app/AlbumSetPage.java
@@ -734,7 +734,7 @@ public class AlbumSetPage extends ActivityState implements
}
@Override
- public void onLoadingFinished() {
+ public void onLoadingFinished(boolean loadingFailed) {
clearLoadingBit(BIT_LOADING_RELOAD);
}
}
diff --git a/src/com/android/gallery3d/app/LoadingListener.java b/src/com/android/gallery3d/app/LoadingListener.java
index ecbd798d2..e94df9307 100644
--- a/src/com/android/gallery3d/app/LoadingListener.java
+++ b/src/com/android/gallery3d/app/LoadingListener.java
@@ -18,5 +18,10 @@ package com.android.gallery3d.app;
public interface LoadingListener {
public void onLoadingStarted();
- public void onLoadingFinished();
+ /**
+ * Called when loading is complete or no further progress can be made.
+ *
+ * @param loadingFailed true if data source cannot provide requested data
+ */
+ public void onLoadingFinished(boolean loadingFailed);
}
diff --git a/src/com/android/gallery3d/app/PhotoDataAdapter.java b/src/com/android/gallery3d/app/PhotoDataAdapter.java
index 731b3fc79..8485b25eb 100644
--- a/src/com/android/gallery3d/app/PhotoDataAdapter.java
+++ b/src/com/android/gallery3d/app/PhotoDataAdapter.java
@@ -203,7 +203,7 @@ public class PhotoDataAdapter implements PhotoPage.Model {
}
case MSG_LOAD_FINISH: {
if (mDataListener != null) {
- mDataListener.onLoadingFinished();
+ mDataListener.onLoadingFinished(false);
}
return;
}
diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java
index 985868fc6..4c2130b40 100644
--- a/src/com/android/gallery3d/app/PhotoPage.java
+++ b/src/com/android/gallery3d/app/PhotoPage.java
@@ -534,7 +534,7 @@ public class PhotoPage extends ActivityState implements
}
@Override
- public void onLoadingFinished() {
+ public void onLoadingFinished(boolean loadingFailed) {
if (!mModel.isEmpty()) {
MediaItem photo = mModel.getMediaItem(0);
if (photo != null) updateCurrentPhoto(photo);