diff options
author | Owen Lin <owenlin@google.com> | 2011-11-24 11:59:52 +0800 |
---|---|---|
committer | Owen Lin <owenlin@google.com> | 2011-11-24 21:07:04 +0800 |
commit | c74fa8c2e8aee1649547447d42e523a3fb39c7ec (patch) | |
tree | 48d798a1d2fbfacfd17d2033dcd8bf9ece19479f /src/com/android/gallery3d | |
parent | ef71b24dbf31f73e6df8ae15ac2a1ad1cbc255f6 (diff) | |
download | android_packages_apps_Snap-c74fa8c2e8aee1649547447d42e523a3fb39c7ec.tar.gz android_packages_apps_Snap-c74fa8c2e8aee1649547447d42e523a3fb39c7ec.tar.bz2 android_packages_apps_Snap-c74fa8c2e8aee1649547447d42e523a3fb39c7ec.zip |
Show a dialog to require updating PlusOne.
Change-Id: I1ff4f5eca90ade49b0785324b9319ef0b7d751ca
fix: 5608342
Diffstat (limited to 'src/com/android/gallery3d')
-rw-r--r-- | src/com/android/gallery3d/app/AlbumDataAdapter.java | 6 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/AlbumPage.java | 6 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/AlbumSetPage.java | 6 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/Gallery.java | 28 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/ComboAlbum.java | 2 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/ComboAlbumSet.java | 2 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/MediaSet.java | 57 |
7 files changed, 66 insertions, 41 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); } |