Loading src/com/android/gallery3d/app/AlbumPage.java +70 −45 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ import android.content.Intent; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Vibrator; import android.provider.MediaStore; import android.view.ActionMode; Loading @@ -44,6 +46,7 @@ import com.android.gallery3d.ui.ActionModeHandler.ActionModeListener; import com.android.gallery3d.ui.AlbumSlotRenderer; import com.android.gallery3d.ui.DetailsHelper; import com.android.gallery3d.ui.DetailsHelper.CloseListener; import com.android.gallery3d.ui.FadeTexture; import com.android.gallery3d.ui.GLCanvas; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLView; Loading @@ -51,6 +54,7 @@ import com.android.gallery3d.ui.RelativePosition; import com.android.gallery3d.ui.ScreenNailHolder; import com.android.gallery3d.ui.SelectionManager; import com.android.gallery3d.ui.SlotView; import com.android.gallery3d.ui.SynchronizedHandler; import com.android.gallery3d.util.Future; import com.android.gallery3d.util.GalleryUtils; Loading @@ -59,6 +63,8 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster @SuppressWarnings("unused") private static final String TAG = "AlbumPage"; private static final int MSG_PICK_PHOTO = 1; public static final String KEY_MEDIA_PATH = "media-path"; public static final String KEY_PARENT_MEDIA_PATH = "parent-media-path"; public static final String KEY_SET_CENTER = "set-center"; Loading Loading @@ -97,6 +103,7 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster private MediaSet mMediaSet; private boolean mShowDetails; private float mUserDistance; // in pixel private Handler mHandler; private Future<Integer> mSyncTask = null; Loading Loading @@ -159,28 +166,43 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster mAlbumView.setPressedIndex(index); } private void onUp() { private void onUp(boolean followedByLongPress) { if (followedByLongPress) { // Avoid showing press-up animations for long-press. mAlbumView.setPressedIndex(-1); } else { mAlbumView.setPressedUp(); } } private void onSingleTapUp(int slotIndex) { if (!mIsActive) return; if (mSelectionManager.inSelectionMode()) { MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) { Log.w(TAG, "item not ready yet, ignore the click"); return; if (item == null) return; // Item not ready yet, ignore the click mSelectionManager.toggle(item.getPath()); mSlotView.invalidate(); } else { // Show pressed-up animation for the single-tap. mAlbumView.setPressedIndex(slotIndex); mAlbumView.setPressedUp(); mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_PICK_PHOTO, slotIndex, 0), FadeTexture.DURATION); } if (mShowDetails) { mAlbumView.setHighlightItemPath(item.getPath()); mDetailsHelper.reloadDetails(slotIndex); } else if (!mSelectionManager.inSelectionMode()) { } private void pickPhoto(int slotIndex) { if (!mIsActive) return; MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) return; // Item not ready yet, ignore the click if (mGetContent) { onGetContent(item); } else { // Get into the PhotoPage. Bundle data = new Bundle(); // mAlbumView.savePositions(PositionRepository.getInstance(mActivity)); Bundle data = new Bundle(); data.putInt(PhotoPage.KEY_INDEX_HINT, slotIndex); data.putParcelable(PhotoPage.KEY_OPEN_ANIMATION_RECT, getSlotRect(slotIndex)); Loading @@ -195,11 +217,6 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster mActivity.getStateManager().startStateForResult( PhotoPage.class, REQUEST_PHOTO, data); } } else { mSelectionManager.toggle(item.getPath()); mDetailsSource.findIndex(slotIndex); mSlotView.invalidate(); } } private Rect getSlotRect(int slotIndex) { Loading Loading @@ -235,17 +252,12 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster public void onLongTap(int slotIndex) { if (mGetContent) return; if (mShowDetails) { onSingleTapUp(slotIndex); } else { MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) return; mSelectionManager.setAutoLeaveSelectionMode(true); mSelectionManager.toggle(item.getPath()); mDetailsSource.findIndex(slotIndex); mSlotView.invalidate(); } } @Override public void doCluster(int clusterType) { Loading Loading @@ -289,6 +301,19 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster mSlotView.startScatteringAnimation(mOpenCenter); } } mHandler = new SynchronizedHandler(mActivity.getGLRoot()) { @Override public void handleMessage(Message message) { switch (message.what) { case MSG_PICK_PHOTO: { pickPhoto(message.arg1); break; } default: throw new AssertionError(message.what); } } }; } @Override Loading Loading @@ -354,8 +379,8 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster } @Override public void onUp() { AlbumPage.this.onUp(); public void onUp(boolean followedByLongPress) { AlbumPage.this.onUp(followedByLongPress); } @Override Loading src/com/android/gallery3d/app/AlbumSetPage.java +77 −47 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Vibrator; import android.provider.MediaStore; import android.view.ActionMode; Loading @@ -43,11 +45,13 @@ import com.android.gallery3d.ui.ActionModeHandler.ActionModeListener; import com.android.gallery3d.ui.AlbumSetSlotRenderer; import com.android.gallery3d.ui.DetailsHelper; import com.android.gallery3d.ui.DetailsHelper.CloseListener; import com.android.gallery3d.ui.FadeTexture; import com.android.gallery3d.ui.GLCanvas; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLView; import com.android.gallery3d.ui.SelectionManager; import com.android.gallery3d.ui.SlotView; import com.android.gallery3d.ui.SynchronizedHandler; import com.android.gallery3d.util.Future; import com.android.gallery3d.util.GalleryUtils; Loading @@ -57,6 +61,8 @@ public class AlbumSetPage extends ActivityState implements @SuppressWarnings("unused") private static final String TAG = "AlbumSetPage"; private static final int MSG_PICK_ALBUM = 1; public static final String KEY_MEDIA_PATH = "media-path"; public static final String KEY_SET_TITLE = "set-title"; public static final String KEY_SET_SUBTITLE = "set-subtitle"; Loading Loading @@ -91,6 +97,7 @@ public class AlbumSetPage extends ActivityState implements private MyDetailsSource mDetailsSource; private boolean mShowDetails; private EyePosition mEyePosition; private Handler mHandler; // The eyes' position of the user, the origin is at the center of the // device and the unit is in pixels. Loading Loading @@ -173,15 +180,29 @@ public class AlbumSetPage extends ActivityState implements public void onSingleTapUp(int slotIndex) { if (!mIsActive) return; if (mSelectionManager.inSelectionMode()) { MediaSet targetSet = mAlbumSetDataAdapter.getMediaSet(slotIndex); if (targetSet == null) return; // Content is dirty, we shall reload soon mSelectionManager.toggle(targetSet.getPath()); mSlotView.invalidate(); } else { // Show pressed-up animation for the single-tap. mAlbumSetView.setPressedIndex(slotIndex); mAlbumSetView.setPressedUp(); mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_PICK_ALBUM, slotIndex, 0), FadeTexture.DURATION); } } if (mShowDetails) { mAlbumSetView.setHighlightItemPath(targetSet.getPath()); mDetailsHelper.reloadDetails(slotIndex); } else if (!mSelectionManager.inSelectionMode()) { Bundle data = new Bundle(getData()); private void pickAlbum(int slotIndex) { if (!mIsActive) return; MediaSet targetSet = mAlbumSetDataAdapter.getMediaSet(slotIndex); if (targetSet == null) return; // Content is dirty, we shall reload soon String mediaPath = targetSet.getPath().toString(); Bundle data = new Bundle(getData()); int[] center = new int[2]; getSlotCenter(slotIndex, center); data.putIntArray(AlbumPage.KEY_SET_CENTER, center); Loading @@ -207,33 +228,29 @@ public class AlbumSetPage extends ActivityState implements mActivity.getStateManager().startStateForResult( AlbumPage.class, REQUEST_DO_ANIMATION, data); } } else { mSelectionManager.toggle(targetSet.getPath()); mSlotView.invalidate(); } } private void onDown(int index) { mAlbumSetView.setPressedIndex(index); } private void onUp() { private void onUp(boolean followedByLongPress) { if (followedByLongPress) { // Avoid showing press-up animations for long-press. mAlbumSetView.setPressedIndex(-1); } else { mAlbumSetView.setPressedUp(); } } public void onLongTap(int slotIndex) { if (mGetContent || mGetAlbum) return; if (mShowDetails) { onSingleTapUp(slotIndex); } else { MediaSet set = mAlbumSetDataAdapter.getMediaSet(slotIndex); if (set == null) return; mSelectionManager.setAutoLeaveSelectionMode(true); mSelectionManager.toggle(set.getPath()); mDetailsSource.findIndex(slotIndex); mSlotView.invalidate(); } } @Override public void doCluster(int clusterType) { Loading @@ -260,6 +277,19 @@ public class AlbumSetPage extends ActivityState implements mActionBar = mActivity.getGalleryActionBar(); mSelectedAction = data.getInt(AlbumSetPage.KEY_SELECTED_CLUSTER_TYPE, FilterUtils.CLUSTER_BY_ALBUM); mHandler = new SynchronizedHandler(mActivity.getGLRoot()) { @Override public void handleMessage(Message message) { switch (message.what) { case MSG_PICK_ALBUM: { pickAlbum(message.arg1); break; } default: throw new AssertionError(message.what); } } }; } private void clearLoadingBit(int loadingBit) { Loading Loading @@ -355,8 +385,8 @@ public class AlbumSetPage extends ActivityState implements } @Override public void onUp() { AlbumSetPage.this.onUp(); public void onUp(boolean followedByLongPress) { AlbumSetPage.this.onUp(followedByLongPress); } @Override Loading src/com/android/gallery3d/app/ManageCachePage.java +1 −4 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ public class ManageCachePage extends ActivityState implements private static final String TAG = "ManageCachePage"; private static final float USER_DISTANCE_METER = 0.3f; private static final int DATA_CACHE_SIZE = 256; private static final int MSG_REFRESH_STORAGE_INFO = 1; private static final int MSG_REQUEST_LAYOUT = 2; Loading @@ -70,7 +69,6 @@ public class ManageCachePage extends ActivityState implements protected SelectionManager mSelectionManager; protected ManageCacheDrawer mSelectionDrawer; private AlbumSetDataLoader mAlbumSetDataAdapter; private float mUserDistance; // in pixel private EyePosition mEyePosition; Loading Loading @@ -265,7 +263,6 @@ public class ManageCachePage extends ActivityState implements } private void initializeData(Bundle data) { mUserDistance = GalleryUtils.meterToPixel(USER_DISTANCE_METER); String mediaPath = data.getString(ManageCachePage.KEY_MEDIA_PATH); mMediaSet = mActivity.getDataManager().getMediaSet(mediaPath); mSelectionManager.setSourceMediaSet(mMediaSet); Loading Loading @@ -297,7 +294,7 @@ public class ManageCachePage extends ActivityState implements } @Override public void onUp() { public void onUp(boolean followedByLongPress) { ManageCachePage.this.onUp(); } Loading src/com/android/gallery3d/ui/AbstractSlotRenderer.java +24 −6 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ public abstract class AbstractSlotRenderer implements SlotView.SlotRenderer { private final NinePatchTexture mPanoramaBorder; private final NinePatchTexture mFramePressed; private final NinePatchTexture mFrameSelected; private FadeOutTexture mFramePressedUp; protected AbstractSlotRenderer(Context context) { mVideoOverlay = new ResourceTexture(context, R.drawable.ic_video_thumb); Loading Loading @@ -85,18 +86,35 @@ public abstract class AbstractSlotRenderer implements SlotView.SlotRenderer { mPanoramaBorder.draw(canvas, 0, height - h, w, h); } protected boolean isPressedUpFrameFinished() { if (mFramePressedUp != null) { if (mFramePressedUp.isAnimating()) { return false; } else { mFramePressedUp = null; } } return true; } protected void drawPressedUpFrame(GLCanvas canvas, int width, int height) { if (mFramePressedUp == null) { mFramePressedUp = new FadeOutTexture(mFramePressed); } drawFrame(canvas, mFramePressed.getPaddings(), mFramePressedUp, 0, 0, width, height); } protected void drawPressedFrame(GLCanvas canvas, int width, int height) { drawFrame(canvas, mFramePressed, 0, 0, width, height); drawFrame(canvas, mFramePressed.getPaddings(), mFramePressed, 0, 0, width, height); } protected void drawSelectedFrame(GLCanvas canvas, int width, int height) { drawFrame(canvas, mFrameSelected, 0, 0, width, height); drawFrame(canvas, mFrameSelected.getPaddings(), mFrameSelected, 0, 0, width, height); } protected static void drawFrame(GLCanvas canvas, NinePatchTexture frame, protected static void drawFrame(GLCanvas canvas, Rect padding, Texture frame, int x, int y, int width, int height) { Rect p = frame.getPaddings(); frame.draw(canvas, x - p.left, y - p.top, width + p.left + p.right, height + p.top + p.bottom); frame.draw(canvas, x - padding.left, y - padding.top, width + padding.left + padding.right, height + padding.top + padding.bottom); } } src/com/android/gallery3d/ui/AlbumSetSlotRenderer.java +21 −5 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public class AlbumSetSlotRenderer extends AbstractSlotRenderer { private SlotView mSlotView; private int mPressedIndex = -1; private boolean mAnimatePressedUp; private Path mHighlightItemPath = null; private boolean mInSelectionMode; Loading Loading @@ -72,6 +73,12 @@ public class AlbumSetSlotRenderer extends AbstractSlotRenderer { mSlotView.invalidate(); } public void setPressedUp() { if (mPressedIndex == -1) return; mAnimatePressedUp = true; mSlotView.invalidate(); } public void setHighlightItemPath(Path path) { if (mHighlightItemPath == path) return; mHighlightItemPath = path; Loading Loading @@ -111,15 +118,24 @@ public class AlbumSetSlotRenderer extends AbstractSlotRenderer { protected int renderOverlay( GLCanvas canvas, int index, AlbumSetEntry entry, int width, int height) { Path path = entry.setPath; int renderRequestFlags = 0; if (mPressedIndex == index) { if (mAnimatePressedUp) { drawPressedUpFrame(canvas, width, height); renderRequestFlags |= SlotView.RENDER_MORE_FRAME; if (isPressedUpFrameFinished()) { mAnimatePressedUp = false; mPressedIndex = -1; } } else { drawPressedFrame(canvas, width, height); } else if ((path != null) && (mHighlightItemPath == path)) { } } else if ((mHighlightItemPath != null) && (mHighlightItemPath == entry.setPath)) { drawSelectedFrame(canvas, width, height); } else if (mInSelectionMode && mSelectionManager.isItemSelected(path)) { } else if (mInSelectionMode && mSelectionManager.isItemSelected(entry.setPath)) { drawSelectedFrame(canvas, width, height); } return 0; return renderRequestFlags; } protected int renderContent( Loading Loading
src/com/android/gallery3d/app/AlbumPage.java +70 −45 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ import android.content.Intent; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Vibrator; import android.provider.MediaStore; import android.view.ActionMode; Loading @@ -44,6 +46,7 @@ import com.android.gallery3d.ui.ActionModeHandler.ActionModeListener; import com.android.gallery3d.ui.AlbumSlotRenderer; import com.android.gallery3d.ui.DetailsHelper; import com.android.gallery3d.ui.DetailsHelper.CloseListener; import com.android.gallery3d.ui.FadeTexture; import com.android.gallery3d.ui.GLCanvas; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLView; Loading @@ -51,6 +54,7 @@ import com.android.gallery3d.ui.RelativePosition; import com.android.gallery3d.ui.ScreenNailHolder; import com.android.gallery3d.ui.SelectionManager; import com.android.gallery3d.ui.SlotView; import com.android.gallery3d.ui.SynchronizedHandler; import com.android.gallery3d.util.Future; import com.android.gallery3d.util.GalleryUtils; Loading @@ -59,6 +63,8 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster @SuppressWarnings("unused") private static final String TAG = "AlbumPage"; private static final int MSG_PICK_PHOTO = 1; public static final String KEY_MEDIA_PATH = "media-path"; public static final String KEY_PARENT_MEDIA_PATH = "parent-media-path"; public static final String KEY_SET_CENTER = "set-center"; Loading Loading @@ -97,6 +103,7 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster private MediaSet mMediaSet; private boolean mShowDetails; private float mUserDistance; // in pixel private Handler mHandler; private Future<Integer> mSyncTask = null; Loading Loading @@ -159,28 +166,43 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster mAlbumView.setPressedIndex(index); } private void onUp() { private void onUp(boolean followedByLongPress) { if (followedByLongPress) { // Avoid showing press-up animations for long-press. mAlbumView.setPressedIndex(-1); } else { mAlbumView.setPressedUp(); } } private void onSingleTapUp(int slotIndex) { if (!mIsActive) return; if (mSelectionManager.inSelectionMode()) { MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) { Log.w(TAG, "item not ready yet, ignore the click"); return; if (item == null) return; // Item not ready yet, ignore the click mSelectionManager.toggle(item.getPath()); mSlotView.invalidate(); } else { // Show pressed-up animation for the single-tap. mAlbumView.setPressedIndex(slotIndex); mAlbumView.setPressedUp(); mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_PICK_PHOTO, slotIndex, 0), FadeTexture.DURATION); } if (mShowDetails) { mAlbumView.setHighlightItemPath(item.getPath()); mDetailsHelper.reloadDetails(slotIndex); } else if (!mSelectionManager.inSelectionMode()) { } private void pickPhoto(int slotIndex) { if (!mIsActive) return; MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) return; // Item not ready yet, ignore the click if (mGetContent) { onGetContent(item); } else { // Get into the PhotoPage. Bundle data = new Bundle(); // mAlbumView.savePositions(PositionRepository.getInstance(mActivity)); Bundle data = new Bundle(); data.putInt(PhotoPage.KEY_INDEX_HINT, slotIndex); data.putParcelable(PhotoPage.KEY_OPEN_ANIMATION_RECT, getSlotRect(slotIndex)); Loading @@ -195,11 +217,6 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster mActivity.getStateManager().startStateForResult( PhotoPage.class, REQUEST_PHOTO, data); } } else { mSelectionManager.toggle(item.getPath()); mDetailsSource.findIndex(slotIndex); mSlotView.invalidate(); } } private Rect getSlotRect(int slotIndex) { Loading Loading @@ -235,17 +252,12 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster public void onLongTap(int slotIndex) { if (mGetContent) return; if (mShowDetails) { onSingleTapUp(slotIndex); } else { MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) return; mSelectionManager.setAutoLeaveSelectionMode(true); mSelectionManager.toggle(item.getPath()); mDetailsSource.findIndex(slotIndex); mSlotView.invalidate(); } } @Override public void doCluster(int clusterType) { Loading Loading @@ -289,6 +301,19 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster mSlotView.startScatteringAnimation(mOpenCenter); } } mHandler = new SynchronizedHandler(mActivity.getGLRoot()) { @Override public void handleMessage(Message message) { switch (message.what) { case MSG_PICK_PHOTO: { pickPhoto(message.arg1); break; } default: throw new AssertionError(message.what); } } }; } @Override Loading Loading @@ -354,8 +379,8 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster } @Override public void onUp() { AlbumPage.this.onUp(); public void onUp(boolean followedByLongPress) { AlbumPage.this.onUp(followedByLongPress); } @Override Loading
src/com/android/gallery3d/app/AlbumSetPage.java +77 −47 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Vibrator; import android.provider.MediaStore; import android.view.ActionMode; Loading @@ -43,11 +45,13 @@ import com.android.gallery3d.ui.ActionModeHandler.ActionModeListener; import com.android.gallery3d.ui.AlbumSetSlotRenderer; import com.android.gallery3d.ui.DetailsHelper; import com.android.gallery3d.ui.DetailsHelper.CloseListener; import com.android.gallery3d.ui.FadeTexture; import com.android.gallery3d.ui.GLCanvas; import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLView; import com.android.gallery3d.ui.SelectionManager; import com.android.gallery3d.ui.SlotView; import com.android.gallery3d.ui.SynchronizedHandler; import com.android.gallery3d.util.Future; import com.android.gallery3d.util.GalleryUtils; Loading @@ -57,6 +61,8 @@ public class AlbumSetPage extends ActivityState implements @SuppressWarnings("unused") private static final String TAG = "AlbumSetPage"; private static final int MSG_PICK_ALBUM = 1; public static final String KEY_MEDIA_PATH = "media-path"; public static final String KEY_SET_TITLE = "set-title"; public static final String KEY_SET_SUBTITLE = "set-subtitle"; Loading Loading @@ -91,6 +97,7 @@ public class AlbumSetPage extends ActivityState implements private MyDetailsSource mDetailsSource; private boolean mShowDetails; private EyePosition mEyePosition; private Handler mHandler; // The eyes' position of the user, the origin is at the center of the // device and the unit is in pixels. Loading Loading @@ -173,15 +180,29 @@ public class AlbumSetPage extends ActivityState implements public void onSingleTapUp(int slotIndex) { if (!mIsActive) return; if (mSelectionManager.inSelectionMode()) { MediaSet targetSet = mAlbumSetDataAdapter.getMediaSet(slotIndex); if (targetSet == null) return; // Content is dirty, we shall reload soon mSelectionManager.toggle(targetSet.getPath()); mSlotView.invalidate(); } else { // Show pressed-up animation for the single-tap. mAlbumSetView.setPressedIndex(slotIndex); mAlbumSetView.setPressedUp(); mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_PICK_ALBUM, slotIndex, 0), FadeTexture.DURATION); } } if (mShowDetails) { mAlbumSetView.setHighlightItemPath(targetSet.getPath()); mDetailsHelper.reloadDetails(slotIndex); } else if (!mSelectionManager.inSelectionMode()) { Bundle data = new Bundle(getData()); private void pickAlbum(int slotIndex) { if (!mIsActive) return; MediaSet targetSet = mAlbumSetDataAdapter.getMediaSet(slotIndex); if (targetSet == null) return; // Content is dirty, we shall reload soon String mediaPath = targetSet.getPath().toString(); Bundle data = new Bundle(getData()); int[] center = new int[2]; getSlotCenter(slotIndex, center); data.putIntArray(AlbumPage.KEY_SET_CENTER, center); Loading @@ -207,33 +228,29 @@ public class AlbumSetPage extends ActivityState implements mActivity.getStateManager().startStateForResult( AlbumPage.class, REQUEST_DO_ANIMATION, data); } } else { mSelectionManager.toggle(targetSet.getPath()); mSlotView.invalidate(); } } private void onDown(int index) { mAlbumSetView.setPressedIndex(index); } private void onUp() { private void onUp(boolean followedByLongPress) { if (followedByLongPress) { // Avoid showing press-up animations for long-press. mAlbumSetView.setPressedIndex(-1); } else { mAlbumSetView.setPressedUp(); } } public void onLongTap(int slotIndex) { if (mGetContent || mGetAlbum) return; if (mShowDetails) { onSingleTapUp(slotIndex); } else { MediaSet set = mAlbumSetDataAdapter.getMediaSet(slotIndex); if (set == null) return; mSelectionManager.setAutoLeaveSelectionMode(true); mSelectionManager.toggle(set.getPath()); mDetailsSource.findIndex(slotIndex); mSlotView.invalidate(); } } @Override public void doCluster(int clusterType) { Loading @@ -260,6 +277,19 @@ public class AlbumSetPage extends ActivityState implements mActionBar = mActivity.getGalleryActionBar(); mSelectedAction = data.getInt(AlbumSetPage.KEY_SELECTED_CLUSTER_TYPE, FilterUtils.CLUSTER_BY_ALBUM); mHandler = new SynchronizedHandler(mActivity.getGLRoot()) { @Override public void handleMessage(Message message) { switch (message.what) { case MSG_PICK_ALBUM: { pickAlbum(message.arg1); break; } default: throw new AssertionError(message.what); } } }; } private void clearLoadingBit(int loadingBit) { Loading Loading @@ -355,8 +385,8 @@ public class AlbumSetPage extends ActivityState implements } @Override public void onUp() { AlbumSetPage.this.onUp(); public void onUp(boolean followedByLongPress) { AlbumSetPage.this.onUp(followedByLongPress); } @Override Loading
src/com/android/gallery3d/app/ManageCachePage.java +1 −4 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ public class ManageCachePage extends ActivityState implements private static final String TAG = "ManageCachePage"; private static final float USER_DISTANCE_METER = 0.3f; private static final int DATA_CACHE_SIZE = 256; private static final int MSG_REFRESH_STORAGE_INFO = 1; private static final int MSG_REQUEST_LAYOUT = 2; Loading @@ -70,7 +69,6 @@ public class ManageCachePage extends ActivityState implements protected SelectionManager mSelectionManager; protected ManageCacheDrawer mSelectionDrawer; private AlbumSetDataLoader mAlbumSetDataAdapter; private float mUserDistance; // in pixel private EyePosition mEyePosition; Loading Loading @@ -265,7 +263,6 @@ public class ManageCachePage extends ActivityState implements } private void initializeData(Bundle data) { mUserDistance = GalleryUtils.meterToPixel(USER_DISTANCE_METER); String mediaPath = data.getString(ManageCachePage.KEY_MEDIA_PATH); mMediaSet = mActivity.getDataManager().getMediaSet(mediaPath); mSelectionManager.setSourceMediaSet(mMediaSet); Loading Loading @@ -297,7 +294,7 @@ public class ManageCachePage extends ActivityState implements } @Override public void onUp() { public void onUp(boolean followedByLongPress) { ManageCachePage.this.onUp(); } Loading
src/com/android/gallery3d/ui/AbstractSlotRenderer.java +24 −6 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ public abstract class AbstractSlotRenderer implements SlotView.SlotRenderer { private final NinePatchTexture mPanoramaBorder; private final NinePatchTexture mFramePressed; private final NinePatchTexture mFrameSelected; private FadeOutTexture mFramePressedUp; protected AbstractSlotRenderer(Context context) { mVideoOverlay = new ResourceTexture(context, R.drawable.ic_video_thumb); Loading Loading @@ -85,18 +86,35 @@ public abstract class AbstractSlotRenderer implements SlotView.SlotRenderer { mPanoramaBorder.draw(canvas, 0, height - h, w, h); } protected boolean isPressedUpFrameFinished() { if (mFramePressedUp != null) { if (mFramePressedUp.isAnimating()) { return false; } else { mFramePressedUp = null; } } return true; } protected void drawPressedUpFrame(GLCanvas canvas, int width, int height) { if (mFramePressedUp == null) { mFramePressedUp = new FadeOutTexture(mFramePressed); } drawFrame(canvas, mFramePressed.getPaddings(), mFramePressedUp, 0, 0, width, height); } protected void drawPressedFrame(GLCanvas canvas, int width, int height) { drawFrame(canvas, mFramePressed, 0, 0, width, height); drawFrame(canvas, mFramePressed.getPaddings(), mFramePressed, 0, 0, width, height); } protected void drawSelectedFrame(GLCanvas canvas, int width, int height) { drawFrame(canvas, mFrameSelected, 0, 0, width, height); drawFrame(canvas, mFrameSelected.getPaddings(), mFrameSelected, 0, 0, width, height); } protected static void drawFrame(GLCanvas canvas, NinePatchTexture frame, protected static void drawFrame(GLCanvas canvas, Rect padding, Texture frame, int x, int y, int width, int height) { Rect p = frame.getPaddings(); frame.draw(canvas, x - p.left, y - p.top, width + p.left + p.right, height + p.top + p.bottom); frame.draw(canvas, x - padding.left, y - padding.top, width + padding.left + padding.right, height + padding.top + padding.bottom); } }
src/com/android/gallery3d/ui/AlbumSetSlotRenderer.java +21 −5 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public class AlbumSetSlotRenderer extends AbstractSlotRenderer { private SlotView mSlotView; private int mPressedIndex = -1; private boolean mAnimatePressedUp; private Path mHighlightItemPath = null; private boolean mInSelectionMode; Loading Loading @@ -72,6 +73,12 @@ public class AlbumSetSlotRenderer extends AbstractSlotRenderer { mSlotView.invalidate(); } public void setPressedUp() { if (mPressedIndex == -1) return; mAnimatePressedUp = true; mSlotView.invalidate(); } public void setHighlightItemPath(Path path) { if (mHighlightItemPath == path) return; mHighlightItemPath = path; Loading Loading @@ -111,15 +118,24 @@ public class AlbumSetSlotRenderer extends AbstractSlotRenderer { protected int renderOverlay( GLCanvas canvas, int index, AlbumSetEntry entry, int width, int height) { Path path = entry.setPath; int renderRequestFlags = 0; if (mPressedIndex == index) { if (mAnimatePressedUp) { drawPressedUpFrame(canvas, width, height); renderRequestFlags |= SlotView.RENDER_MORE_FRAME; if (isPressedUpFrameFinished()) { mAnimatePressedUp = false; mPressedIndex = -1; } } else { drawPressedFrame(canvas, width, height); } else if ((path != null) && (mHighlightItemPath == path)) { } } else if ((mHighlightItemPath != null) && (mHighlightItemPath == entry.setPath)) { drawSelectedFrame(canvas, width, height); } else if (mInSelectionMode && mSelectionManager.isItemSelected(path)) { } else if (mInSelectionMode && mSelectionManager.isItemSelected(entry.setPath)) { drawSelectedFrame(canvas, width, height); } return 0; return renderRequestFlags; } protected int renderContent( Loading