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;
import com.android.gallery3d.ui.AlbumSetView;
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;
private final Handler mMainHandler;
- private MySourceListener mSourceListener = new MySourceListener();
+ private final MySourceListener mSourceListener = new MySourceListener();
public AlbumSetDataAdapter(GalleryActivity activity, MediaSet albumSet, int cacheSize) {
mSource = Utils.checkNotNull(albumSet);
@Override
public UpdateInfo call() throws Exception {
int index = getInvalidIndex(mVersion);
- if (index == INDEX_NONE
- && mSourceVersion == mVersion) return null;
+ if (index == INDEX_NONE && mSourceVersion == mVersion) return null;
UpdateInfo info = new UpdateInfo();
info.version = mSourceVersion;
info.index = index;
}
private class UpdateContent implements Callable<Void> {
- private UpdateInfo mUpdateInfo;
+ private final UpdateInfo mUpdateInfo;
public UpdateContent(UpdateInfo info) {
mUpdateInfo = info;
}
public Void call() {
+ // Avoid notifying listeners of status change after pause
+ // Otherwise gallery will be in inconsistent state after resume.
+ if (mReloadTask == null) return null;
UpdateInfo info = mUpdateInfo;
mSourceVersion = info.version;
if (mSize != info.size) {
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;
import com.android.gallery3d.ui.SelectionManager;
import com.android.gallery3d.ui.SlotView;
import com.android.gallery3d.ui.StaticBackground;
-import com.android.gallery3d.util.GalleryUtils;
public class AlbumSetPage extends ActivityState implements
SelectionManager.SelectionListener, GalleryActionBar.ClusterRunner,
private float mY;
private float mZ;
- private GLView mRootPane = new GLView() {
- private float mMatrix[] = new float[16];
+ private final GLView mRootPane = new GLView() {
+ private final float mMatrix[] = new float[16];
@Override
protected void onLayout(
}
public void doCluster(int clusterType) {
- Log.v(TAG, "doCluster: " + clusterType);
String basePath = mMediaSet.getPath().toString();
String newPath = FilterUtils.switchClusterPath(basePath, clusterType);
Bundle data = new Bundle(getData());
@Override
public void onPause() {
super.onPause();
- Log.v(TAG, "onPause");
mIsActive = false;
mActionModeHandler.pause();
mAlbumSetDataAdapter.pause();
@Override
public void onResume() {
super.onResume();
- Log.v(TAG, "onResume");
mIsActive = true;
setContentPane(mRootPane);
mAlbumSetDataAdapter.resume();
mEyePosition.resume();
mActionModeHandler.resume();
GalleryActionBar actionBar = mActivity.getGalleryActionBar();
- if (mShowClusterMenu && actionBar != null) actionBar.showClusterMenu(mSelectedAction, this);
+ if (mShowClusterMenu && actionBar != null) {
+ actionBar.showClusterMenu(mSelectedAction, this);
+ }
}
private void initializeData(Bundle data) {
final PositionRepository repository =
PositionRepository.getInstance(mActivity);
mAlbumSetView.startTransition(new PositionProvider() {
- private Position mTempPosition = new Position();
+ private final Position mTempPosition = new Position();
public Position getPosition(long identity, Position target) {
Position p = repository.get(identity);
if (p == null) {
package com.android.gallery3d.app;
-import com.android.gallery3d.R;
-import com.android.gallery3d.common.Utils;
-import com.android.gallery3d.data.DataManager;
-import com.android.gallery3d.data.MediaItem;
-import com.android.gallery3d.data.MediaSet;
-import com.android.gallery3d.data.Path;
-import com.android.gallery3d.ui.GLRoot;
-import com.android.gallery3d.util.GalleryUtils;
-
import android.content.ContentResolver;
import android.content.Intent;
import android.net.Uri;
import android.view.Window;
import android.widget.Toast;
+import com.android.gallery3d.R;
+import com.android.gallery3d.common.Utils;
+import com.android.gallery3d.data.DataManager;
+import com.android.gallery3d.data.MediaItem;
+import com.android.gallery3d.data.MediaSet;
+import com.android.gallery3d.data.Path;
+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 static final String EXTRA_SLIDESHOW = "slideshow";
public static final String EXTRA_CROP = "crop";
}
public void startDefaultPage() {
+ PicasaSource.showSignInReminder(this);
Bundle data = new Bundle();
data.putString(AlbumSetPage.KEY_MEDIA_PATH,
getDataManager().getTopSetPath(DataManager.INCLUDE_ALL));
package com.android.gallery3d.ui;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.os.Message;
+
import com.android.gallery3d.R;
import com.android.gallery3d.app.GalleryActivity;
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.util.MediaSetUtils;
import com.android.gallery3d.util.ThreadPool;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.os.Message;
-
public class AlbumSetSlidingWindow implements AlbumSetView.ModelListener {
private static final String TAG = "GallerySlidingWindow";
private static final int MSG_LOAD_BITMAP_DONE = 0;
private final AlbumSetView.Model mSource;
private int mSize;
- private AlbumSetView.LabelSpec mLabelSpec;
+ private final AlbumSetView.LabelSpec mLabelSpec;
private int mContentStart = 0;
private int mContentEnd = 0;
private SelectionDrawer mSelectionDrawer;
private final ColorTexture mWaitLoadingTexture;
- private SynchronizedHandler mHandler;
- private ThreadPool mThreadPool;
+ private final SynchronizedHandler mHandler;
+ private final ThreadPool mThreadPool;
private int mActiveRequestCount = 0;
- private String mLoadingLabel;
+ private final String mLoadingLabel;
private boolean mIsActive = false;
private static class MyAlbumSetItem extends AlbumSetItem {
private final int mMediaType;
private Texture mContent;
private final long mDataVersion;
- private boolean mIsPanorama;
+ private final boolean mIsPanorama;
private boolean mWaitLoadingDisplayed;
public GalleryDisplayItem(int slotIndex, int coverIndex, MediaItem item) {
}
public void onSizeChanged(int size) {
- if (mSize != size) {
+ if (mIsActive && mSize != size) {
mSize = size;
- if (mListener != null && mIsActive) mListener.onSizeChanged(mSize);
+ if (mListener != null) mListener.onSizeChanged(mSize);
}
}
package com.android.gallery3d.ui;
+import android.graphics.Rect;
+
import com.android.gallery3d.app.GalleryActivity;
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.data.MediaItem;
import com.android.gallery3d.data.MediaSet;
import com.android.gallery3d.ui.PositionRepository.Position;
-import android.graphics.Rect;
-
import java.util.Random;
public class AlbumSetView extends SlotView {
private int mVisibleStart;
private int mVisibleEnd;
- private Random mRandom = new Random();
- private long mSeed = mRandom.nextLong();
+ private final Random mRandom = new Random();
+ private final long mSeed = mRandom.nextLong();
private AlbumSetSlidingWindow mDataWindow;
private final GalleryActivity mActivity;
package com.android.gallery3d.ui;
-import com.android.gallery3d.anim.Animation;
-import com.android.gallery3d.common.Utils;
-import com.android.gallery3d.ui.PositionRepository.Position;
-import com.android.gallery3d.util.LinkedNode;
-
import android.content.Context;
import android.graphics.Rect;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.animation.DecelerateInterpolator;
+import com.android.gallery3d.anim.Animation;
+import com.android.gallery3d.common.Utils;
+import com.android.gallery3d.ui.PositionRepository.Position;
+import com.android.gallery3d.util.LinkedNode;
+
import java.util.ArrayList;
import java.util.HashMap;
private UserInteractionListener mUIListener;
// Use linked hash map to keep the rendering order
- private HashMap<DisplayItem, ItemEntry> mItems =
+ private final HashMap<DisplayItem, ItemEntry> mItems =
new HashMap<DisplayItem, ItemEntry>();
public LinkedNode.List<ItemEntry> mItemList = LinkedNode.newList();
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;
public static void requestSync(Context context) {/*do nothing*/}
+ public static void showSignInReminder(Activity context) {/*do nothing*/}
+
public static void onPackageAdded(Context context, String packageName) {/*do nothing*/}
public static void onPackageRemoved(Context context, String packageName) {/*do nothing*/}