diff options
Diffstat (limited to 'src/com/android/browser/BreadCrumbView.java')
-rw-r--r-- | src/com/android/browser/BreadCrumbView.java | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/src/com/android/browser/BreadCrumbView.java b/src/com/android/browser/BreadCrumbView.java index 0cd82263..1501d211 100644 --- a/src/com/android/browser/BreadCrumbView.java +++ b/src/com/android/browser/BreadCrumbView.java @@ -60,6 +60,7 @@ public class BreadCrumbView extends RelativeLayout implements OnClickListener { private int mMaxVisible = -1; private Context mContext; private int mCrumbPadding; + private TextView mOverflowView; /** * @param context @@ -164,6 +165,16 @@ public class BreadCrumbView extends RelativeLayout implements OnClickListener { return crumb.crumbView; } + public void addOverflowLabel(TextView view) { + mOverflowView = view; + if (view != null) { + view.setTextAppearance(mContext, R.style.BookmarkPathText); + view.setPadding(mCrumbPadding, 0, mCrumbPadding, 0); + view.setGravity(Gravity.CENTER_VERTICAL); + view.setText("... >"); + } + } + public void pushView(View view, Object data) { Crumb crumb = new Crumb(view, true, data); pushCrumb(crumb); @@ -211,7 +222,7 @@ public class BreadCrumbView extends RelativeLayout implements OnClickListener { params.setMargins(0, 0, 4 * mCrumbPadding, 0); mCrumbLayout.setLayoutParams(params); mCrumbLayout.setVisibility(View.VISIBLE); - addParentLabel(); + //addParentLabel(); addView(mCrumbLayout); } @@ -275,11 +286,15 @@ public class BreadCrumbView extends RelativeLayout implements OnClickListener { private void updateVisible() { // start at index 1 (0 == parent label) - int childIndex = 1; + int childIndex = 0; if (mMaxVisible >= 0) { int invisibleCrumbs = size() - mMaxVisible; if (invisibleCrumbs > 0) { int crumbIndex = 0; + if (mOverflowView != null) { + mOverflowView.setVisibility(VISIBLE); + mOverflowView.setOnClickListener(this); + } while (crumbIndex < invisibleCrumbs) { // Set the crumb to GONE. mCrumbLayout.getChildAt(childIndex).setVisibility(View.GONE); @@ -287,6 +302,10 @@ public class BreadCrumbView extends RelativeLayout implements OnClickListener { // Move to the next crumb. crumbIndex++; } + } else { + if (mOverflowView != null) { + mOverflowView.setVisibility(GONE); + } } // Make sure the last is visible. int childCount = mCrumbLayout.getChildCount(); @@ -333,6 +352,13 @@ public class BreadCrumbView extends RelativeLayout implements OnClickListener { if (mBackButton == v) { popView(); notifyController(); + } else if (mOverflowView == v) { + int maxVisible = getMaxVisible(); + while (maxVisible > 0) { + pop(false); + maxVisible--; + } + notifyController(); } else { // pop until view matches crumb view while (v != getTopCrumb().crumbView) { @@ -397,10 +423,10 @@ public class BreadCrumbView extends RelativeLayout implements OnClickListener { private TextView makeCrumbView(String name) { TextView tv = new TextView(mContext); - tv.setTextAppearance(mContext, R.style.BookmarkText); + tv.setTextAppearance(mContext, R.style.BookmarkPathText); tv.setPadding(mCrumbPadding, 0, mCrumbPadding, 0); tv.setGravity(Gravity.CENTER_VERTICAL); - tv.setText(name); + tv.setText(name + " >"); tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT)); tv.setSingleLine(); |