summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/gallery3d/app/AlbumDataLoader.java14
-rw-r--r--src/com/android/gallery3d/app/AlbumPage.java21
-rw-r--r--src/com/android/gallery3d/app/AlbumSetDataLoader.java14
-rw-r--r--src/com/android/gallery3d/app/AlbumSetPage.java22
-rw-r--r--src/com/android/gallery3d/app/PhotoPage.java18
-rw-r--r--src/com/android/gallery3d/ui/DetailsHelper.java9
-rw-r--r--src/com/android/gallery3d/ui/DialogDetailsView.java6
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) {