resolved conflicts for merge of 64d592c0 to master
Change-Id: Iae4a66e37fcb852c4b105fe732c6597b638b2059
diff --git a/gallerycommon/src/com/android/gallery3d/common/FileCache.java b/gallerycommon/src/com/android/gallery3d/common/FileCache.java
index a69d6e1..86a1955 100644
--- a/gallerycommon/src/com/android/gallery3d/common/FileCache.java
+++ b/gallerycommon/src/com/android/gallery3d/common/FileCache.java
@@ -16,8 +16,6 @@
package com.android.gallery3d.common;
-import com.android.gallery3d.common.Entry.Table;
-
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
@@ -25,6 +23,8 @@
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
+import com.android.gallery3d.common.Entry.Table;
+
import java.io.File;
import java.io.IOException;
diff --git a/src/com/android/gallery3d/app/AlbumPage.java b/src/com/android/gallery3d/app/AlbumPage.java
index dabfb26..10c2b67 100644
--- a/src/com/android/gallery3d/app/AlbumPage.java
+++ b/src/com/android/gallery3d/app/AlbumPage.java
@@ -17,7 +17,6 @@
package com.android.gallery3d.app;
import android.app.Activity;
-import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
@@ -73,6 +72,9 @@
private static final int REQUEST_PHOTO = 2;
private static final int REQUEST_DO_ANIMATION = 3;
+ private static final int BIT_LOADING_RELOAD = 1;
+ private static final int BIT_LOADING_SYNC = 2;
+
private static final float USER_DISTANCE_METER = 0.3f;
private boolean mIsActive = false;
@@ -99,11 +101,11 @@
private boolean mShowDetails;
private float mUserDistance; // in pixel
- private ProgressDialog mProgressDialog;
- private Future<?> mPendingTask;
-
private Future<Integer> mSyncTask = null;
+ private int mLoadingBits = 0;
+ private boolean mInitialSynced = false;
+
private final GLView mRootPane = new GLView() {
private final float mMatrix[] = new float[16];
@@ -326,6 +328,10 @@
mAlbumDataAdapter.resume();
mAlbumView.resume();
mActionModeHandler.resume();
+ if (!mInitialSynced) {
+ mSyncTask = mMediaSet.requestSync(this);
+ setLoadingBit(BIT_LOADING_SYNC);
+ }
}
@Override
@@ -335,16 +341,7 @@
mAlbumDataAdapter.pause();
mAlbumView.pause();
DetailsHelper.pause();
- Future<?> task = mPendingTask;
- if (task != null) {
- // cancel on going task
- task.cancel();
- task.waitDone();
- if (mProgressDialog != null) {
- mProgressDialog.dismiss();
- mProgressDialog = null;
- }
- }
+
if (mSyncTask != null) {
mSyncTask.cancel();
mSyncTask = null;
@@ -568,9 +565,11 @@
((Activity) mActivity).runOnUiThread(new Runnable() {
@Override
public void run() {
+ if (resultCode == MediaSet.SYNC_RESULT_SUCCESS) {
+ mInitialSynced = true;
+ }
if (!mIsActive) return;
- mediaSet.notifyContentChanged(); // force reload to handle spinner
-
+ clearLoadingBit(BIT_LOADING_SYNC);
if (resultCode == MediaSet.SYNC_RESULT_ERROR) {
Toast.makeText((Context) mActivity, R.string.sync_album_error,
Toast.LENGTH_LONG).show();
@@ -579,33 +578,42 @@
});
}
+ private void setLoadingBit(int loadTaskBit) {
+ if (mLoadingBits == 0) {
+ GalleryUtils.setSpinnerVisibility((Activity) mActivity, true);
+ }
+ mLoadingBits |= loadTaskBit;
+ }
+
+ private void clearLoadingBit(int loadTaskBit) {
+ mLoadingBits &= ~loadTaskBit;
+ if (mLoadingBits == 0) {
+ GalleryUtils.setSpinnerVisibility((Activity) mActivity, false);
+
+ if (mAlbumDataAdapter.size() == 0) {
+ Toast.makeText((Context) mActivity,
+ R.string.empty_album, Toast.LENGTH_LONG).show();
+ mActivity.getStateManager().finishState(AlbumPage.this);
+ }
+ }
+ }
+
private class MyLoadingListener implements LoadingListener {
@Override
public void onLoadingStarted() {
- GalleryUtils.setSpinnerVisibility((Activity) mActivity, true);
+ setLoadingBit(BIT_LOADING_RELOAD);
}
@Override
public void onLoadingFinished() {
if (!mIsActive) return;
- if (mAlbumDataAdapter.size() == 0) {
- if (mSyncTask == null) {
- mSyncTask = mMediaSet.requestSync(AlbumPage.this);
- }
- if (mSyncTask.isDone()){
- Toast.makeText((Context) mActivity,
- R.string.empty_album, Toast.LENGTH_LONG).show();
- mActivity.getStateManager().finishState(AlbumPage.this);
- }
- }
- if (mSyncTask == null || mSyncTask.isDone()) {
- GalleryUtils.setSpinnerVisibility((Activity) mActivity, false);
- }
+ clearLoadingBit(BIT_LOADING_RELOAD);
}
}
private class MyDetailsSource implements DetailsHelper.DetailsSource {
private int mIndex;
+
public int size() {
return mAlbumDataAdapter.size();
}
diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java
index 8b2ce52..c31e920 100644
--- a/src/com/android/gallery3d/app/AlbumSetPage.java
+++ b/src/com/android/gallery3d/app/AlbumSetPage.java
@@ -43,7 +43,6 @@
import com.android.gallery3d.ui.AlbumSetView;
import com.android.gallery3d.ui.DetailsHelper;
import com.android.gallery3d.ui.DetailsHelper.CloseListener;
-import com.android.gallery3d.util.GalleryUtils;
import com.android.gallery3d.ui.GLCanvas;
import com.android.gallery3d.ui.GLView;
import com.android.gallery3d.ui.GridDrawer;
@@ -55,6 +54,7 @@
import com.android.gallery3d.ui.SlotView;
import com.android.gallery3d.ui.StaticBackground;
import com.android.gallery3d.util.Future;
+import com.android.gallery3d.util.GalleryUtils;
public class AlbumSetPage extends ActivityState implements
SelectionManager.SelectionListener, GalleryActionBar.ClusterRunner,
@@ -70,6 +70,9 @@
private static final int DATA_CACHE_SIZE = 256;
private static final int REQUEST_DO_ANIMATION = 1;
+ private static final int BIT_LOADING_RELOAD = 1;
+ private static final int BIT_LOADING_SYNC = 2;
+
private boolean mIsActive = false;
private StaticBackground mStaticBackground;
private AlbumSetView mAlbumSetView;
@@ -103,6 +106,9 @@
private Future<Integer> mSyncTask = null;
+ private int mLoadingBits = 0;
+ private boolean mInitialSynced = false;
+
private final GLView mRootPane = new GLView() {
private final float mMatrix[] = new float[16];
@@ -284,6 +290,30 @@
startTransition();
}
+ private void clearLoadingBit(int loadingBit) {
+ mLoadingBits &= ~loadingBit;
+ if (mLoadingBits == 0) {
+ GalleryUtils.setSpinnerVisibility((Activity) mActivity, false);
+
+ // Only show toast when there's no album and we are going to finish
+ // the page. Toast is redundant if we are going to stay on this page.
+ if ((mAlbumSetDataAdapter.size() == 0)) {
+ Toast.makeText((Context) mActivity,
+ R.string.empty_album, Toast.LENGTH_LONG).show();
+ if (mActivity.getStateManager().getStateCount() > 1) {
+ mActivity.getStateManager().finishState(this);
+ }
+ }
+ }
+ }
+
+ private void setLoadingBit(int loadingBit) {
+ if (mLoadingBits == 0) {
+ GalleryUtils.setSpinnerVisibility((Activity) mActivity, true);
+ }
+ mLoadingBits |= loadingBit;
+ }
+
@Override
public void onPause() {
super.onPause();
@@ -298,6 +328,7 @@
if (mSyncTask != null) {
mSyncTask.cancel();
mSyncTask = null;
+ clearLoadingBit(BIT_LOADING_SYNC);
}
}
@@ -314,6 +345,10 @@
if (mShowClusterMenu && actionBar != null) {
actionBar.showClusterMenu(mSelectedAction, this);
}
+ if (!mInitialSynced) {
+ mSyncTask = mMediaSet.requestSync(AlbumSetPage.this);
+ setLoadingBit(BIT_LOADING_SYNC);
+ }
}
private void initializeData(Bundle data) {
@@ -571,9 +606,11 @@
((Activity) mActivity).runOnUiThread(new Runnable() {
@Override
public void run() {
+ if (resultCode == MediaSet.SYNC_RESULT_SUCCESS) {
+ mInitialSynced = true;
+ }
if (!mIsActive) return;
- mediaSet.notifyContentChanged(); // force reload to handle spinner
-
+ clearLoadingBit(BIT_LOADING_SYNC);
if (resultCode == MediaSet.SYNC_RESULT_ERROR) {
Toast.makeText((Context) mActivity, R.string.sync_album_set_error,
Toast.LENGTH_LONG).show();
@@ -584,27 +621,12 @@
private class MyLoadingListener implements LoadingListener {
public void onLoadingStarted() {
- GalleryUtils.setSpinnerVisibility((Activity) mActivity, true);
+ setLoadingBit(BIT_LOADING_RELOAD);
}
public void onLoadingFinished() {
if (!mIsActive) return;
-
- if (mSyncTask == null) {
- // Request sync in case the mediaSet hasn't been sync'ed before.
- mSyncTask = mMediaSet.requestSync(AlbumSetPage.this);
- }
- if (mSyncTask.isDone()){
- // The mediaSet is in sync. Turn off the loading indicator.
- GalleryUtils.setSpinnerVisibility((Activity) mActivity, false);
- if (mAlbumSetDataAdapter.size() == 0) {
- Toast.makeText((Context) mActivity,
- R.string.empty_album, Toast.LENGTH_LONG).show();
- if (mActivity.getStateManager().getStateCount() > 1) {
- mActivity.getStateManager().finishState(AlbumSetPage.this);
- }
- }
- }
+ clearLoadingBit(BIT_LOADING_RELOAD);
}
}