Fix 5250813 Use new standardized no account screen on first launch

This CL also fixes a bug in AlbumSetDataAdapter's ReloadTask, which
causes empty screen after pause/resume.

Change-Id: I7991d40a790384105ccb3021e1e51ba3e5ec8635
diff --git a/src/com/android/gallery3d/app/AlbumSetDataAdapter.java b/src/com/android/gallery3d/app/AlbumSetDataAdapter.java
index 8322d2b..6a8e702 100644
--- a/src/com/android/gallery3d/app/AlbumSetDataAdapter.java
+++ b/src/com/android/gallery3d/app/AlbumSetDataAdapter.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.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;
@@ -70,7 +70,7 @@
 
     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);
@@ -260,8 +260,7 @@
         @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;
@@ -271,13 +270,16 @@
     }
 
     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) {
diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java
index 644d565..74d60c4 100644
--- a/src/com/android/gallery3d/app/AlbumSetPage.java
+++ b/src/com/android/gallery3d/app/AlbumSetPage.java
@@ -43,6 +43,7 @@
 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;
@@ -53,7 +54,6 @@
 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,
@@ -100,8 +100,8 @@
     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(
@@ -238,7 +238,6 @@
     }
 
     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());
@@ -284,7 +283,6 @@
     @Override
     public void onPause() {
         super.onPause();
-        Log.v(TAG, "onPause");
         mIsActive = false;
         mActionModeHandler.pause();
         mAlbumSetDataAdapter.pause();
@@ -298,7 +296,6 @@
     @Override
     public void onResume() {
         super.onResume();
-        Log.v(TAG, "onResume");
         mIsActive = true;
         setContentPane(mRootPane);
         mAlbumSetDataAdapter.resume();
@@ -306,7 +303,9 @@
         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) {
@@ -478,7 +477,7 @@
         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) {
diff --git a/src/com/android/gallery3d/app/Gallery.java b/src/com/android/gallery3d/app/Gallery.java
index 4408dba..15534bc 100644
--- a/src/com/android/gallery3d/app/Gallery.java
+++ b/src/com/android/gallery3d/app/Gallery.java
@@ -16,15 +16,6 @@
 
 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;
@@ -34,6 +25,16 @@
 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";
@@ -90,6 +91,7 @@
     }
 
     public void startDefaultPage() {
+        PicasaSource.showSignInReminder(this);
         Bundle data = new Bundle();
         data.putString(AlbumSetPage.KEY_MEDIA_PATH,
                 getDataManager().getTopSetPath(DataManager.INCLUDE_ALL));
diff --git a/src/com/android/gallery3d/ui/AlbumSetSlidingWindow.java b/src/com/android/gallery3d/ui/AlbumSetSlidingWindow.java
index bf6e1df..5b01ce7 100644
--- a/src/com/android/gallery3d/ui/AlbumSetSlidingWindow.java
+++ b/src/com/android/gallery3d/ui/AlbumSetSlidingWindow.java
@@ -16,6 +16,10 @@
 
 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;
@@ -29,10 +33,6 @@
 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;
@@ -47,7 +47,7 @@
 
     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;
@@ -61,11 +61,11 @@
     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 {
@@ -339,7 +339,7 @@
         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) {
@@ -558,9 +558,9 @@
     }
 
     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);
         }
     }
 
diff --git a/src/com/android/gallery3d/ui/AlbumSetView.java b/src/com/android/gallery3d/ui/AlbumSetView.java
index 89dfe4a..d6202ef 100644
--- a/src/com/android/gallery3d/ui/AlbumSetView.java
+++ b/src/com/android/gallery3d/ui/AlbumSetView.java
@@ -16,14 +16,14 @@
 
 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 {
@@ -35,8 +35,8 @@
     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;
diff --git a/src/com/android/gallery3d/ui/SlotView.java b/src/com/android/gallery3d/ui/SlotView.java
index 5d0922e..cc34b2a 100644
--- a/src/com/android/gallery3d/ui/SlotView.java
+++ b/src/com/android/gallery3d/ui/SlotView.java
@@ -16,17 +16,17 @@
 
 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;
 
@@ -62,7 +62,7 @@
     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();