summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/gallery3d/app/AlbumDataAdapter.java6
-rw-r--r--src/com/android/gallery3d/app/AlbumPage.java6
-rw-r--r--src/com/android/gallery3d/app/AlbumSetPage.java6
-rw-r--r--src/com/android/gallery3d/app/Gallery.java28
-rw-r--r--src/com/android/gallery3d/data/ComboAlbum.java2
-rw-r--r--src/com/android/gallery3d/data/ComboAlbumSet.java2
-rw-r--r--src/com/android/gallery3d/data/MediaSet.java57
-rw-r--r--src_pd/com/android/gallery3d/picasasource/PicasaSource.java15
8 files changed, 76 insertions, 46 deletions
diff --git a/src/com/android/gallery3d/app/AlbumDataAdapter.java b/src/com/android/gallery3d/app/AlbumDataAdapter.java
index 42388ead7..6711786e5 100644
--- a/src/com/android/gallery3d/app/AlbumDataAdapter.java
+++ b/src/com/android/gallery3d/app/AlbumDataAdapter.java
@@ -16,6 +16,9 @@
package com.android.gallery3d.app;
+import android.os.Handler;
+import android.os.Message;
+
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.data.ContentListener;
import com.android.gallery3d.data.DataManager;
@@ -25,9 +28,6 @@ import com.android.gallery3d.data.MediaSet;
import com.android.gallery3d.ui.AlbumView;
import com.android.gallery3d.ui.SynchronizedHandler;
-import android.os.Handler;
-import android.os.Message;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.concurrent.Callable;
diff --git a/src/com/android/gallery3d/app/AlbumPage.java b/src/com/android/gallery3d/app/AlbumPage.java
index 10c2b676a..6fb414377 100644
--- a/src/com/android/gallery3d/app/AlbumPage.java
+++ b/src/com/android/gallery3d/app/AlbumPage.java
@@ -325,12 +325,16 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster
super.onResume();
mIsActive = true;
setContentPane(mRootPane);
+
+ // Set the reload bit here to prevent it exit this page in clearLoadingBit().
+ setLoadingBit(BIT_LOADING_RELOAD);
mAlbumDataAdapter.resume();
+
mAlbumView.resume();
mActionModeHandler.resume();
if (!mInitialSynced) {
- mSyncTask = mMediaSet.requestSync(this);
setLoadingBit(BIT_LOADING_SYNC);
+ mSyncTask = mMediaSet.requestSync(this);
}
}
diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java
index fb26fc600..e1dcade5d 100644
--- a/src/com/android/gallery3d/app/AlbumSetPage.java
+++ b/src/com/android/gallery3d/app/AlbumSetPage.java
@@ -337,7 +337,11 @@ public class AlbumSetPage extends ActivityState implements
super.onResume();
mIsActive = true;
setContentPane(mRootPane);
+
+ // Set the reload bit here to prevent it exit this page in clearLoadingBit().
+ setLoadingBit(BIT_LOADING_RELOAD);
mAlbumSetDataAdapter.resume();
+
mAlbumSetView.resume();
mEyePosition.resume();
mActionModeHandler.resume();
@@ -346,8 +350,8 @@ public class AlbumSetPage extends ActivityState implements
actionBar.showClusterMenu(mSelectedAction, this);
}
if (!mInitialSynced) {
- mSyncTask = mMediaSet.requestSync(AlbumSetPage.this);
setLoadingBit(BIT_LOADING_SYNC);
+ mSyncTask = mMediaSet.requestSync(AlbumSetPage.this);
}
}
diff --git a/src/com/android/gallery3d/app/Gallery.java b/src/com/android/gallery3d/app/Gallery.java
index ebfa98495..253af2bbb 100644
--- a/src/com/android/gallery3d/app/Gallery.java
+++ b/src/com/android/gallery3d/app/Gallery.java
@@ -16,7 +16,10 @@
package com.android.gallery3d.app;
+import android.app.Dialog;
import android.content.ContentResolver;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@@ -35,7 +38,7 @@ import com.android.gallery3d.picasasource.PicasaSource;
import com.android.gallery3d.ui.GLRoot;
import com.android.gallery3d.util.GalleryUtils;
-public final class Gallery extends AbstractGalleryActivity {
+public final class Gallery extends AbstractGalleryActivity implements OnCancelListener {
public static final String EXTRA_SLIDESHOW = "slideshow";
public static final String EXTRA_CROP = "crop";
@@ -47,6 +50,7 @@ public final class Gallery extends AbstractGalleryActivity {
private static final String TAG = "Gallery";
private GalleryActionBar mActionBar;
+ private Dialog mVersionCheckDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -96,6 +100,10 @@ public final class Gallery extends AbstractGalleryActivity {
data.putString(AlbumSetPage.KEY_MEDIA_PATH,
getDataManager().getTopSetPath(DataManager.INCLUDE_ALL));
getStateManager().startState(AlbumSetPage.class, data);
+ mVersionCheckDialog = PicasaSource.getVersionCheckDialog(this);
+ if (mVersionCheckDialog != null) {
+ mVersionCheckDialog.setOnCancelListener(this);
+ }
}
private void startGetContent(Intent intent) {
@@ -243,10 +251,28 @@ public final class Gallery extends AbstractGalleryActivity {
protected void onResume() {
Utils.assertTrue(getStateManager().getStateCount() > 0);
super.onResume();
+ if (mVersionCheckDialog != null) {
+ mVersionCheckDialog.show();
+ }
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ if (mVersionCheckDialog != null) {
+ mVersionCheckDialog.dismiss();
+ }
}
@Override
public GalleryActionBar getGalleryActionBar() {
return mActionBar;
}
+
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ if (dialog == mVersionCheckDialog) {
+ mVersionCheckDialog = null;
+ }
+ }
}
diff --git a/src/com/android/gallery3d/data/ComboAlbum.java b/src/com/android/gallery3d/data/ComboAlbum.java
index 1918453b6..6d2231168 100644
--- a/src/com/android/gallery3d/data/ComboAlbum.java
+++ b/src/com/android/gallery3d/data/ComboAlbum.java
@@ -93,6 +93,6 @@ public class ComboAlbum extends MediaSet implements ContentListener {
@Override
public Future<Integer> requestSync(SyncListener listener) {
- return requestSyncOnEmptySets(mSets, listener);
+ return requestSyncOnMultipleSets(mSets, listener);
}
}
diff --git a/src/com/android/gallery3d/data/ComboAlbumSet.java b/src/com/android/gallery3d/data/ComboAlbumSet.java
index 16adc12f4..916b1639d 100644
--- a/src/com/android/gallery3d/data/ComboAlbumSet.java
+++ b/src/com/android/gallery3d/data/ComboAlbumSet.java
@@ -81,6 +81,6 @@ public class ComboAlbumSet extends MediaSet implements ContentListener {
@Override
public Future<Integer> requestSync(SyncListener listener) {
- return requestSyncOnEmptySets(mSets, listener);
+ return requestSyncOnMultipleSets(mSets, listener);
}
}
diff --git a/src/com/android/gallery3d/data/MediaSet.java b/src/com/android/gallery3d/data/MediaSet.java
index 50941952e..ff9b8c386 100644
--- a/src/com/android/gallery3d/data/MediaSet.java
+++ b/src/com/android/gallery3d/data/MediaSet.java
@@ -20,7 +20,6 @@ import com.android.gallery3d.common.Utils;
import com.android.gallery3d.util.Future;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.WeakHashMap;
// MediaSet is a directory-like data structure.
@@ -33,6 +32,8 @@ import java.util.WeakHashMap;
// getTotalMediaItemCount() returns the number of all MediaItems, including
// those in sub-MediaSets.
public abstract class MediaSet extends MediaObject {
+ private static final String TAG = "MediaSet";
+
public static final int MEDIAITEM_BATCH_FETCH_COUNT = 500;
public static final int INDEX_NOT_FOUND = -1;
@@ -229,6 +230,7 @@ public abstract class MediaSet extends MediaObject {
* SYNC_RESULT_SUCCESS by get().
*/
public Future<Integer> requestSync(SyncListener listener) {
+ listener.onSyncDone(this, SYNC_RESULT_SUCCESS);
return FUTURE_STUB;
}
@@ -255,46 +257,39 @@ public abstract class MediaSet extends MediaObject {
public void waitDone() {}
};
- protected Future<Integer> requestSyncOnEmptySets(MediaSet[] sets, SyncListener listener) {
- MultiSetSyncFuture future = new MultiSetSyncFuture(listener);
- future.requestSyncOnEmptySets(sets);
- return future;
+ protected Future<Integer> requestSyncOnMultipleSets(MediaSet[] sets, SyncListener listener) {
+ return new MultiSetSyncFuture(sets, listener);
}
private class MultiSetSyncFuture implements Future<Integer>, SyncListener {
private static final String TAG = "Gallery.MultiSetSync";
- private final HashMap<MediaSet, Future<Integer>> mMediaSetMap =
- new HashMap<MediaSet, Future<Integer>>();
private final SyncListener mListener;
+ private final Future<Integer> mFutures[];
private boolean mIsCancelled = false;
private int mResult = -1;
+ private int mPendingCount;
- MultiSetSyncFuture(SyncListener listener) {
+ @SuppressWarnings("unchecked")
+ MultiSetSyncFuture(MediaSet[] sets, SyncListener listener) {
mListener = listener;
- }
+ mPendingCount = sets.length;
+ mFutures = new Future[sets.length];
- synchronized void requestSyncOnEmptySets(MediaSet[] sets) {
- for (MediaSet set : sets) {
- if ((set.getMediaItemCount() == 0) && !mMediaSetMap.containsKey(set)) {
- // Sync results are handled in this.onSyncDone().
- Future<Integer> future = set.requestSync(this);
- if (!future.isDone()) {
- mMediaSetMap.put(set, future);
- Log.d(TAG, " request sync: " + Utils.maskDebugInfo(set.getName()));
- }
+ synchronized (this) {
+ for (int i = 0, n = sets.length; i < n; ++i) {
+ mFutures[i] = sets[i].requestSync(this);
+ Log.d(TAG, " request sync: " + Utils.maskDebugInfo(sets[i].getName()));
}
}
- Log.d(TAG, "requestSyncOnEmptySets actual=" + mMediaSetMap.size());
}
@Override
public synchronized void cancel() {
if (mIsCancelled) return;
mIsCancelled = true;
- for (Future<Integer> future : mMediaSetMap.values()) future.cancel();
- mMediaSetMap.clear();
+ for (Future<Integer> future : mFutures) future.cancel();
if (mResult < 0) mResult = SYNC_RESULT_CANCELLED;
}
@@ -305,7 +300,7 @@ public abstract class MediaSet extends MediaObject {
@Override
public synchronized boolean isDone() {
- return mMediaSetMap.isEmpty();
+ return mPendingCount == 0;
}
@Override
@@ -328,18 +323,14 @@ public abstract class MediaSet extends MediaObject {
public void onSyncDone(MediaSet mediaSet, int resultCode) {
SyncListener listener = null;
synchronized (this) {
- if (mMediaSetMap.remove(mediaSet) != null) {
- Log.d(TAG, "onSyncDone: " + Utils.maskDebugInfo(mediaSet.getName())
- + " #pending=" + mMediaSetMap.size());
- if (resultCode == SYNC_RESULT_ERROR) {
- mResult = SYNC_RESULT_ERROR;
- }
- if (mMediaSetMap.isEmpty()) {
- if (mResult < 0) mResult = SYNC_RESULT_SUCCESS;
- notifyAll();
- listener = mListener;
- }
+ if (resultCode == SYNC_RESULT_ERROR) mResult = SYNC_RESULT_ERROR;
+ --mPendingCount;
+ if (mPendingCount == 0) {
+ listener = mListener;
+ notifyAll();
}
+ Log.d(TAG, "onSyncDone: " + Utils.maskDebugInfo(mediaSet.getName())
+ + " #pending=" + mPendingCount);
}
if (listener != null) listener.onSyncDone(MediaSet.this, mResult);
}
diff --git a/src_pd/com/android/gallery3d/picasasource/PicasaSource.java b/src_pd/com/android/gallery3d/picasasource/PicasaSource.java
index a4f962122..ce0c0b8e6 100644
--- a/src_pd/com/android/gallery3d/picasasource/PicasaSource.java
+++ b/src_pd/com/android/gallery3d/picasasource/PicasaSource.java
@@ -16,6 +16,12 @@
package com.android.gallery3d.picasasource;
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.media.ExifInterface;
+import android.os.ParcelFileDescriptor;
+
import com.android.gallery3d.app.GalleryApp;
import com.android.gallery3d.data.MediaItem;
import com.android.gallery3d.data.MediaObject;
@@ -24,11 +30,6 @@ import com.android.gallery3d.data.MediaSource;
import com.android.gallery3d.data.Path;
import com.android.gallery3d.data.PathMatcher;
-import android.app.Activity;
-import android.content.Context;
-import android.media.ExifInterface;
-import android.os.ParcelFileDescriptor;
-
import java.io.FileNotFoundException;
public class PicasaSource extends MediaSource {
@@ -133,4 +134,8 @@ public class PicasaSource extends MediaSource {
public static void onPackageRemoved(Context context, String packageName) {/*do nothing*/}
public static void extractExifValues(MediaObject item, ExifInterface exif) {/*do nothing*/}
+
+ public static Dialog getVersionCheckDialog(Activity activity){
+ return null;
+ }
}