diff options
-rw-r--r-- | src/com/android/gallery3d/app/AlbumDataLoader.java | 14 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/AlbumPage.java | 21 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/AlbumSetDataLoader.java | 14 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/AlbumSetPage.java | 22 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/PhotoPage.java | 18 | ||||
-rw-r--r-- | src/com/android/gallery3d/ui/DetailsHelper.java | 9 | ||||
-rw-r--r-- | src/com/android/gallery3d/ui/DialogDetailsView.java | 6 |
7 files changed, 47 insertions, 57 deletions
diff --git a/src/com/android/gallery3d/app/AlbumDataLoader.java b/src/com/android/gallery3d/app/AlbumDataLoader.java index a99cf93fd..71a575658 100644 --- a/src/com/android/gallery3d/app/AlbumDataLoader.java +++ b/src/com/android/gallery3d/app/AlbumDataLoader.java @@ -26,7 +26,7 @@ import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.data.MediaObject; import com.android.gallery3d.data.MediaSet; -import com.android.gallery3d.ui.AlbumSlotRenderer; +import com.android.gallery3d.data.Path; import com.android.gallery3d.ui.SynchronizedHandler; import java.util.ArrayList; @@ -133,6 +133,18 @@ public class AlbumDataLoader { return mSize; } + // Returns the index of the MediaItem with the given path or + // -1 if the path is not cached + public int findItem(Path id) { + for (int i = mContentStart; i < mContentEnd; i++) { + MediaItem item = mData[i % DATA_CACHE_SIZE]; + if (item != null && id == item.getPath()) { + return i; + } + } + return -1; + } + private void clearSlot(int slotIndex) { mData[slotIndex] = null; mItemVersion[slotIndex] = MediaObject.INVALID_DATA_VERSION; diff --git a/src/com/android/gallery3d/app/AlbumPage.java b/src/com/android/gallery3d/app/AlbumPage.java index ed88aed43..b4e600bd8 100644 --- a/src/com/android/gallery3d/app/AlbumPage.java +++ b/src/com/android/gallery3d/app/AlbumPage.java @@ -240,7 +240,6 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster MediaItem item = mAlbumDataAdapter.get(slotIndex); if (item == null) return; // Item not ready yet, ignore the click mSelectionManager.toggle(item.getPath()); - mDetailsSource.findIndex(slotIndex); mSlotView.invalidate(); } else { // Show pressed-up animation for the single-tap. @@ -311,7 +310,6 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster if (item == null) return; mSelectionManager.setAutoLeaveSelectionMode(true); mSelectionManager.toggle(item.getPath()); - mDetailsSource.findIndex(slotIndex); mSlotView.invalidate(); } @@ -699,25 +697,14 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster return mAlbumDataAdapter.size(); } - public int getIndex() { - return mIndex; - } - - // If requested index is out of active window, suggest a valid index. - // If there is no valid index available, return -1. - public int findIndex(int indexHint) { - if (mAlbumDataAdapter.isActive(indexHint)) { - mIndex = indexHint; - } else { - mIndex = mAlbumDataAdapter.getActiveStart(); - if (!mAlbumDataAdapter.isActive(mIndex)) { - return -1; - } - } + public int setIndex() { + Path id = mSelectionManager.getSelected(false).get(0); + mIndex = mAlbumDataAdapter.findItem(id); return mIndex; } public MediaDetails getDetails() { + // this relies on setIndex() being called beforehand MediaObject item = mAlbumDataAdapter.get(mIndex); if (item != null) { mAlbumView.setHighlightItemPath(item.getPath()); diff --git a/src/com/android/gallery3d/app/AlbumSetDataLoader.java b/src/com/android/gallery3d/app/AlbumSetDataLoader.java index 39d4a8bdc..33a30bcca 100644 --- a/src/com/android/gallery3d/app/AlbumSetDataLoader.java +++ b/src/com/android/gallery3d/app/AlbumSetDataLoader.java @@ -27,6 +27,7 @@ import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.data.MediaObject; import com.android.gallery3d.data.MediaSet; +import com.android.gallery3d.data.Path; import com.android.gallery3d.ui.SynchronizedHandler; import java.util.Arrays; @@ -149,6 +150,19 @@ public class AlbumSetDataLoader { return mSize; } + // Returns the index of the MediaSet with the given path or + // -1 if the path is not cached + public int findSet(Path id) { + int length = mData.length; + for (int i = mContentStart; i < mContentEnd; i++) { + MediaSet set = mData[i % length]; + if (set != null && id == set.getPath()) { + return i; + } + } + return -1; + } + private void clearSlot(int slotIndex) { mData[slotIndex] = null; mCoverItem[slotIndex] = null; diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java index b610202d9..1df073466 100644 --- a/src/com/android/gallery3d/app/AlbumSetPage.java +++ b/src/com/android/gallery3d/app/AlbumSetPage.java @@ -24,7 +24,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Vibrator; -import android.provider.MediaStore; import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; @@ -35,6 +34,7 @@ import com.android.gallery3d.R; import com.android.gallery3d.common.Utils; import com.android.gallery3d.data.DataManager; import com.android.gallery3d.data.MediaDetails; +import com.android.gallery3d.data.MediaItem; import com.android.gallery3d.data.MediaObject; import com.android.gallery3d.data.MediaSet; import com.android.gallery3d.data.Path; @@ -250,7 +250,6 @@ public class AlbumSetPage extends ActivityState implements if (set == null) return; mSelectionManager.setAutoLeaveSelectionMode(true); mSelectionManager.toggle(set.getPath()); - mDetailsSource.findIndex(slotIndex); mSlotView.invalidate(); } @@ -627,22 +626,9 @@ public class AlbumSetPage extends ActivityState implements } @Override - public int getIndex() { - return mIndex; - } - - // If requested index is out of active window, suggest a valid index. - // If there is no valid index available, return -1. - @Override - public int findIndex(int indexHint) { - if (mAlbumSetDataAdapter.isActive(indexHint)) { - mIndex = indexHint; - } else { - mIndex = mAlbumSetDataAdapter.getActiveStart(); - if (!mAlbumSetDataAdapter.isActive(mIndex)) { - return -1; - } - } + public int setIndex() { + Path id = mSelectionManager.getSelected(false).get(0); + mIndex = mAlbumSetDataAdapter.findSet(id); return mIndex; } diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 3b6a7704b..950f8c552 100644 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -352,7 +352,7 @@ public class PhotoPage extends ActivityState implements updateMenuOperations(); updateTitle(); if (mShowDetails) { - mDetailsHelper.reloadDetails(mModel.getCurrentIndex()); + mDetailsHelper.reloadDetails(); } if ((photo.getSupportedOperations() & MediaItem.SUPPORT_SHARE) != 0) { updateShareURI(photo.getPath()); @@ -616,7 +616,7 @@ public class PhotoPage extends ActivityState implements if (mShowDetails) { hideDetails(); } else { - showDetails(currentIndex); + showDetails(); } return true; } @@ -647,7 +647,7 @@ public class PhotoPage extends ActivityState implements mDetailsHelper.hide(); } - private void showDetails(int index) { + private void showDetails() { mShowDetails = true; if (mDetailsHelper == null) { mDetailsHelper = new DetailsHelper(mActivity, mRootPane, new MyDetailsSource()); @@ -658,7 +658,6 @@ public class PhotoPage extends ActivityState implements } }); } - mDetailsHelper.reloadDetails(index); mDetailsHelper.show(); } @@ -914,7 +913,6 @@ public class PhotoPage extends ActivityState implements } private class MyDetailsSource implements DetailsSource { - private int mIndex; @Override public MediaDetails getDetails() { @@ -927,14 +925,8 @@ public class PhotoPage extends ActivityState implements } @Override - public int findIndex(int indexHint) { - mIndex = indexHint; - return indexHint; - } - - @Override - public int getIndex() { - return mIndex; + public int setIndex() { + return mModel.getCurrentIndex(); } } } diff --git a/src/com/android/gallery3d/ui/DetailsHelper.java b/src/com/android/gallery3d/ui/DetailsHelper.java index 245145f76..f86ffbe05 100644 --- a/src/com/android/gallery3d/ui/DetailsHelper.java +++ b/src/com/android/gallery3d/ui/DetailsHelper.java @@ -29,8 +29,7 @@ public class DetailsHelper { public interface DetailsSource { public int size(); - public int getIndex(); - public int findIndex(int indexHint); + public int setIndex(); public MediaDetails getDetails(); } @@ -39,7 +38,7 @@ public class DetailsHelper { } public interface DetailsViewContainer { - public void reloadDetails(int indexHint); + public void reloadDetails(); public void setCloseListener(CloseListener listener); public void show(); public void hide(); @@ -58,8 +57,8 @@ public class DetailsHelper { } } - public void reloadDetails(int indexHint) { - mContainer.reloadDetails(indexHint); + public void reloadDetails() { + mContainer.reloadDetails(); } public void setCloseListener(CloseListener listener) { diff --git a/src/com/android/gallery3d/ui/DialogDetailsView.java b/src/com/android/gallery3d/ui/DialogDetailsView.java index 60ced031d..c90ab4033 100644 --- a/src/com/android/gallery3d/ui/DialogDetailsView.java +++ b/src/com/android/gallery3d/ui/DialogDetailsView.java @@ -60,7 +60,7 @@ public class DialogDetailsView implements DetailsViewContainer { } public void show() { - reloadDetails(mSource.getIndex()); + reloadDetails(); mDialog.show(); } @@ -68,8 +68,8 @@ public class DialogDetailsView implements DetailsViewContainer { mDialog.hide(); } - public void reloadDetails(int indexHint) { - int index = mSource.findIndex(indexHint); + public void reloadDetails() { + int index = mSource.setIndex(); if (index == -1) return; MediaDetails details = mSource.getDetails(); if (details != null) { |