summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/app
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/app')
-rw-r--r--src/com/android/gallery3d/app/AlbumPage.java4
-rw-r--r--src/com/android/gallery3d/app/AlbumSetDataAdapter.java2
-rw-r--r--src/com/android/gallery3d/app/AlbumSetPage.java25
-rw-r--r--src/com/android/gallery3d/app/Config.java49
-rw-r--r--src/com/android/gallery3d/app/GalleryActionBar.java110
-rw-r--r--src/com/android/gallery3d/app/ManageCachePage.java4
6 files changed, 111 insertions, 83 deletions
diff --git a/src/com/android/gallery3d/app/AlbumPage.java b/src/com/android/gallery3d/app/AlbumPage.java
index 672c0da99..7d7054897 100644
--- a/src/com/android/gallery3d/app/AlbumPage.java
+++ b/src/com/android/gallery3d/app/AlbumPage.java
@@ -357,8 +357,8 @@ public class AlbumPage extends ActivityState implements GalleryActionBar.Cluster
mSelectionManager.setSelectionListener(this);
mGridDrawer = new GridDrawer((Context) mActivity, mSelectionManager);
Config.AlbumPage config = Config.AlbumPage.get((Context) mActivity);
- mAlbumView = new AlbumView(mActivity,
- config.slotWidth, config.slotHeight, config.displayItemSize);
+ mAlbumView = new AlbumView(mActivity, config.slotViewSpec,
+ 0 /* don't cache thumbnail */);
mAlbumView.setSelectionDrawer(mGridDrawer);
mRootPane.addComponent(mAlbumView);
mAlbumView.setListener(new SlotView.SimpleListener() {
diff --git a/src/com/android/gallery3d/app/AlbumSetDataAdapter.java b/src/com/android/gallery3d/app/AlbumSetDataAdapter.java
index 85f3bf532..8322d2b19 100644
--- a/src/com/android/gallery3d/app/AlbumSetDataAdapter.java
+++ b/src/com/android/gallery3d/app/AlbumSetDataAdapter.java
@@ -41,7 +41,7 @@ public class AlbumSetDataAdapter implements AlbumSetView.Model {
private static final int INDEX_NONE = -1;
private static final int MIN_LOAD_COUNT = 4;
- private static final int MAX_COVER_COUNT = 4;
+ private static final int MAX_COVER_COUNT = 1;
private static final int MSG_LOAD_START = 1;
private static final int MSG_LOAD_FINISH = 2;
diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java
index 097057293..eac1abce2 100644
--- a/src/com/android/gallery3d/app/AlbumSetPage.java
+++ b/src/com/android/gallery3d/app/AlbumSetPage.java
@@ -63,7 +63,7 @@ public class AlbumSetPage extends ActivityState implements
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";
- public static final String KEY_SELECTED_TAB_TYPE = "selected-tab";
+ public static final String KEY_SELECTED_CLUSTER_TYPE = "selected-cluster";
private static final int DATA_CACHE_SIZE = 256;
private static final int REQUEST_DO_ANIMATION = 1;
@@ -76,7 +76,8 @@ public class AlbumSetPage extends ActivityState implements
private MediaSet mMediaSet;
private String mTitle;
private String mSubtitle;
- private boolean mShowClusterTabs;
+ private boolean mShowClusterMenu;
+ private int mSelectedAction;
protected SelectionManager mSelectionManager;
private AlbumSetDataAdapter mAlbumSetDataAdapter;
@@ -229,7 +230,7 @@ public class AlbumSetPage extends ActivityState implements
String newPath = FilterUtils.switchClusterPath(basePath, clusterType);
Bundle data = new Bundle(getData());
data.putString(AlbumSetPage.KEY_MEDIA_PATH, newPath);
- data.putInt(KEY_SELECTED_TAB_TYPE, clusterType);
+ data.putInt(KEY_SELECTED_CLUSTER_TYPE, clusterType);
mAlbumSetView.savePositions(PositionRepository.getInstance(mActivity));
mActivity.getStateManager().switchState(this, AlbumSetPage.class, data);
}
@@ -260,8 +261,8 @@ public class AlbumSetPage extends ActivityState implements
mDetailsSource = new MyDetailsSource();
GalleryActionBar actionBar = mActivity.getGalleryActionBar();
if (actionBar != null) {
- actionBar.setSelectedTab(data.getInt(
- AlbumSetPage.KEY_SELECTED_TAB_TYPE, FilterUtils.CLUSTER_BY_ALBUM));
+ mSelectedAction = data.getInt(
+ AlbumSetPage.KEY_SELECTED_CLUSTER_TYPE, FilterUtils.CLUSTER_BY_ALBUM);
}
startTransition();
}
@@ -277,7 +278,7 @@ public class AlbumSetPage extends ActivityState implements
mEyePosition.pause();
DetailsHelper.pause();
GalleryActionBar actionBar = mActivity.getGalleryActionBar();
- if (actionBar != null) actionBar.hideClusterTabs();
+ if (actionBar != null) actionBar.hideClusterMenu();
}
@Override
@@ -291,7 +292,7 @@ public class AlbumSetPage extends ActivityState implements
mEyePosition.resume();
mActionModeHandler.resume();
GalleryActionBar actionBar = mActivity.getGalleryActionBar();
- if (mShowClusterTabs && actionBar != null) actionBar.showClusterTabs(this);
+ if (mShowClusterMenu && actionBar != null) actionBar.showClusterMenu(mSelectedAction, this);
}
private void initializeData(Bundle data) {
@@ -313,9 +314,7 @@ public class AlbumSetPage extends ActivityState implements
mGridDrawer = new GridDrawer((Context) mActivity, mSelectionManager);
Config.AlbumSetPage config = Config.AlbumSetPage.get((Context) mActivity);
mAlbumSetView = new AlbumSetView(mActivity, mGridDrawer,
- config.slotWidth, config.slotHeight,
- config.displayItemSize, config.labelFontSize,
- config.labelOffsetY, config.labelMargin);
+ config.slotViewSpec, config.labelSpec);
mAlbumSetView.setListener(new SlotView.SimpleListener() {
@Override
public void onSingleTapUp(int slotIndex) {
@@ -363,7 +362,7 @@ public class AlbumSetPage extends ActivityState implements
inflater.inflate(R.menu.pickup, menu);
actionBar.setTitle(R.string.select_album);
} else {
- mShowClusterTabs = !inAlbum;
+ mShowClusterMenu = !inAlbum;
inflater.inflate(R.menu.albumset, menu);
if (mTitle != null) {
actionBar.setTitle(mTitle);
@@ -485,13 +484,13 @@ public class AlbumSetPage extends ActivityState implements
switch (mode) {
case SelectionManager.ENTER_SELECTION_MODE: {
- mActivity.getGalleryActionBar().hideClusterTabs();
+ mActivity.getGalleryActionBar().hideClusterMenu();
mActionMode = mActionModeHandler.startActionMode();
break;
}
case SelectionManager.LEAVE_SELECTION_MODE: {
mActionMode.finish();
- mActivity.getGalleryActionBar().showClusterTabs(this);
+ mActivity.getGalleryActionBar().showClusterMenu(mSelectedAction, this);
mRootPane.invalidate();
break;
}
diff --git a/src/com/android/gallery3d/app/Config.java b/src/com/android/gallery3d/app/Config.java
index 4586235f6..0cea6c852 100644
--- a/src/com/android/gallery3d/app/Config.java
+++ b/src/com/android/gallery3d/app/Config.java
@@ -17,6 +17,8 @@
package com.android.gallery3d.app;
import com.android.gallery3d.R;
+import com.android.gallery3d.ui.SlotView;
+import com.android.gallery3d.ui.AlbumSetView;
import android.content.Context;
import android.content.res.Resources;
@@ -25,12 +27,8 @@ final class Config {
public static class AlbumSetPage {
private static AlbumSetPage sInstance;
- public final int slotWidth;
- public final int slotHeight;
- public final int displayItemSize;
- public final int labelFontSize;
- public final int labelOffsetY;
- public final int labelMargin;
+ public SlotView.Spec slotViewSpec;
+ public AlbumSetView.LabelSpec labelSpec;
public static synchronized AlbumSetPage get(Context context) {
if (sInstance == null) {
@@ -41,21 +39,34 @@ final class Config {
private AlbumSetPage(Context context) {
Resources r = context.getResources();
- slotWidth = r.getDimensionPixelSize(R.dimen.albumset_slot_width);
- slotHeight = r.getDimensionPixelSize(R.dimen.albumset_slot_height);
- displayItemSize = r.getDimensionPixelSize(R.dimen.albumset_display_item_size);
- labelFontSize = r.getDimensionPixelSize(R.dimen.albumset_label_font_size);
- labelOffsetY = r.getDimensionPixelSize(R.dimen.albumset_label_offset_y);
- labelMargin = r.getDimensionPixelSize(R.dimen.albumset_label_margin);
+
+ slotViewSpec = new SlotView.Spec();
+ slotViewSpec.rowsLand = r.getInteger(R.integer.albumset_rows_land);
+ slotViewSpec.rowsPort = r.getInteger(R.integer.albumset_rows_port);
+ slotViewSpec.slotGap = r.getDimensionPixelSize(R.dimen.albumset_slot_gap);
+
+ labelSpec = new AlbumSetView.LabelSpec();
+ labelSpec.darkStripHeight = r.getDimensionPixelSize(
+ R.dimen.albumset_dark_strip_height);
+ labelSpec.titleOffset = r.getDimensionPixelSize(
+ R.dimen.albumset_title_offset);
+ labelSpec.numberOffset = r.getDimensionPixelSize(
+ R.dimen.albumset_number_offset);
+ labelSpec.titleFontSize = r.getDimensionPixelSize(
+ R.dimen.albumset_title_font_size);
+ labelSpec.numberFontSize = r.getDimensionPixelSize(
+ R.dimen.albumset_number_font_size);
+ labelSpec.leftMargin = r.getDimensionPixelSize(
+ R.dimen.albumset_left_margin);
+ labelSpec.iconSize = r.getDimensionPixelSize(
+ R.dimen.albumset_icon_size);
}
}
public static class AlbumPage {
private static AlbumPage sInstance;
- public final int slotWidth;
- public final int slotHeight;
- public final int displayItemSize;
+ public SlotView.Spec slotViewSpec;
public static synchronized AlbumPage get(Context context) {
if (sInstance == null) {
@@ -66,9 +77,11 @@ final class Config {
private AlbumPage(Context context) {
Resources r = context.getResources();
- slotWidth = r.getDimensionPixelSize(R.dimen.album_slot_width);
- slotHeight = r.getDimensionPixelSize(R.dimen.album_slot_height);
- displayItemSize = r.getDimensionPixelSize(R.dimen.album_display_item_size);
+
+ slotViewSpec = new SlotView.Spec();
+ slotViewSpec.rowsLand = r.getInteger(R.integer.album_rows_land);
+ slotViewSpec.rowsPort = r.getInteger(R.integer.album_rows_port);
+ slotViewSpec.slotGap = r.getDimensionPixelSize(R.dimen.album_slot_gap);
}
}
diff --git a/src/com/android/gallery3d/app/GalleryActionBar.java b/src/com/android/gallery3d/app/GalleryActionBar.java
index 3df5e91e7..7d792dd23 100644
--- a/src/com/android/gallery3d/app/GalleryActionBar.java
+++ b/src/com/android/gallery3d/app/GalleryActionBar.java
@@ -19,19 +19,28 @@ package com.android.gallery3d.app;
import com.android.gallery3d.R;
import android.app.ActionBar;
-import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.DialogInterface;
+import android.text.TextUtils.TruncateAt;
+import android.view.Gravity;
+import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.BaseAdapter;
import android.widget.ShareActionProvider;
+import android.widget.SpinnerAdapter;
+import android.widget.TextView;
+import android.widget.LinearLayout.LayoutParams;
import java.util.ArrayList;
-public class GalleryActionBar implements ActionBar.TabListener {
+public class GalleryActionBar implements ActionBar.OnNavigationListener {
private static final String TAG = "GalleryActionBar";
public interface ClusterRunner {
@@ -42,7 +51,7 @@ public class GalleryActionBar implements ActionBar.TabListener {
public int action;
public boolean enabled;
public boolean visible;
- public int tabTitle;
+ public int spinnerTitle;
public int dialogTitle;
public int clusterBy;
@@ -51,11 +60,11 @@ public class GalleryActionBar implements ActionBar.TabListener {
this(action, applied, enabled, title, title, clusterBy);
}
- public ActionItem(int action, boolean applied, boolean enabled, int tabTitle,
+ public ActionItem(int action, boolean applied, boolean enabled, int spinnerTitle,
int dialogTitle, int clusterBy) {
this.action = action;
this.enabled = enabled;
- this.tabTitle = tabTitle;
+ this.spinnerTitle = spinnerTitle;
this.dialogTitle = dialogTitle;
this.clusterBy = clusterBy;
this.visible = true;
@@ -75,23 +84,45 @@ public class GalleryActionBar implements ActionBar.TabListener {
R.string.group_by_tags)
};
+ private class ClusterAdapter extends BaseAdapter {
+
+ public int getCount() {
+ return sClusterItems.length;
+ }
+
+ public Object getItem(int position) {
+ return sClusterItems[position];
+ }
+
+ public long getItemId(int position) {
+ return sClusterItems[position].action;
+ }
+
+ public View getView(int position, View convertView, ViewGroup parent) {
+ if (convertView == null) {
+ convertView = (TextView) mInflater.inflate(R.layout.action_bar_text,
+ parent, false);
+ }
+ TextView view = (TextView) convertView;
+ view.setText(sClusterItems[position].spinnerTitle);
+ return convertView;
+ }
+ }
+
private ClusterRunner mClusterRunner;
private CharSequence[] mTitles;
private ArrayList<Integer> mActions;
private Context mContext;
+ private LayoutInflater mInflater;
private ActionBar mActionBar;
- // We need this because ActionBar.getSelectedTab() doesn't work when
- // ActionBar is hidden.
- private Tab mCurrentTab;
+ private int mCurrentIndex;
+ private ClusterAdapter mAdapter = new ClusterAdapter();
public GalleryActionBar(Activity activity) {
mActionBar = activity.getActionBar();
mContext = activity;
-
- for (ActionItem item : sClusterItems) {
- mActionBar.addTab(mActionBar.newTab().setText(item.tabTitle).
- setTag(item).setTabListener(this));
- }
+ mInflater = activity.getLayoutInflater();
+ mCurrentIndex = 0;
}
public static int getHeight(Activity activity) {
@@ -131,12 +162,7 @@ public class GalleryActionBar implements ActionBar.TabListener {
}
public int getClusterTypeAction() {
- if (mCurrentTab != null) {
- ActionItem item = (ActionItem) mCurrentTab.getTag();
- return item.action;
- }
- // By default, it's group-by-album
- return FilterUtils.CLUSTER_BY_ALBUM;
+ return sClusterItems[mCurrentIndex].action;
}
public static String getClusterByTypeString(Context context, int type) {
@@ -157,19 +183,19 @@ public class GalleryActionBar implements ActionBar.TabListener {
return shareActionProvider;
}
- public void showClusterTabs(ClusterRunner runner) {
- Log.v(TAG, "showClusterTabs: runner=" + runner);
- // setNavigationMode will trigger onTabSelected, so we should avoid
- // triggering any callback here
+ public void showClusterMenu(int action, ClusterRunner runner) {
+ Log.v(TAG, "showClusterMenu: runner=" + runner);
+ // Don't set cluster runner until action bar is ready.
mClusterRunner = null;
- mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+ mActionBar.setListNavigationCallbacks(mAdapter, this);
+ mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
+ setSelectedAction(action);
mClusterRunner = runner;
}
- public void hideClusterTabs() {
+ public void hideClusterMenu() {
mClusterRunner = null;
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
- Log.v(TAG, "hideClusterTabs: runner=" + mClusterRunner);
}
public void showClusterDialog(final ClusterRunner clusterRunner) {
@@ -203,31 +229,23 @@ public class GalleryActionBar implements ActionBar.TabListener {
return mActionBar == null ? 0 : mActionBar.getHeight();
}
- @Override
- public void onTabSelected(Tab tab, FragmentTransaction ft) {
- if (mCurrentTab == tab) return;
- mCurrentTab = tab;
- ActionItem item = (ActionItem) tab.getTag();
- Log.v(TAG, "onTabSelected: clusterrRunner=" + mClusterRunner);
- if (mClusterRunner != null) mClusterRunner.doCluster(item.action);
- }
-
- @Override
- public void onTabUnselected(Tab tab, FragmentTransaction ft) {
- }
-
- @Override
- public void onTabReselected(Tab tab, FragmentTransaction ft) {
- }
-
- public boolean setSelectedTab(int type) {
- for (int i = 0, n = sClusterItems.length; i < n; ++i) {
+ public boolean setSelectedAction(int type) {
+ for (int i = 0, n = sClusterItems.length; i < n; i++) {
ActionItem item = sClusterItems[i];
if (item.visible && item.action == type) {
- mActionBar.selectTab(mActionBar.getTabAt(i));
+ mActionBar.setSelectedNavigationItem(i);
+ mCurrentIndex = i;
return true;
}
}
return false;
}
+
+ public boolean onNavigationItemSelected(int itemPosition, long itemId) {
+ if (itemPosition != mCurrentIndex && mClusterRunner != null) {
+ mClusterRunner.doCluster(sClusterItems[itemPosition].action);
+ }
+
+ return false;
+ }
}
diff --git a/src/com/android/gallery3d/app/ManageCachePage.java b/src/com/android/gallery3d/app/ManageCachePage.java
index 940f1be08..7e301f28c 100644
--- a/src/com/android/gallery3d/app/ManageCachePage.java
+++ b/src/com/android/gallery3d/app/ManageCachePage.java
@@ -283,9 +283,7 @@ public class ManageCachePage extends ActivityState implements
(Context) mActivity, mSelectionManager);
Config.ManageCachePage config = Config.ManageCachePage.get(activity);
mAlbumSetView = new AlbumSetView(mActivity, mSelectionDrawer,
- config.slotWidth, config.slotHeight,
- config.displayItemSize, config.labelFontSize,
- config.labelOffsetY, config.labelMargin);
+ config.slotViewSpec, config.labelSpec);
mAlbumSetView.setListener(new SlotView.SimpleListener() {
@Override
public void onSingleTapUp(int slotIndex) {