diff options
author | Bart Sears <bsears@google.com> | 2012-10-30 12:40:34 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-30 12:40:34 -0700 |
commit | 85ee46d76fb59f8550afdfe73486fff2b6bd5035 (patch) | |
tree | f4b12bf65b6a2b6ef73b56b9ddb7f91a60f9e9a8 /src/com | |
parent | fffab335ac447da86e7f54211b6415b49d096f85 (diff) | |
parent | 556347cb20e871f25560ff37d7c51f66733888f7 (diff) | |
download | android_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.
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/gallery3d/app/AlbumDataLoader.java | 29 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/AlbumPage.java | 29 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/AlbumSetDataLoader.java | 2 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/AlbumSetPage.java | 2 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/LoadingListener.java | 7 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/PhotoDataAdapter.java | 2 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/PhotoPage.java | 2 |
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); |