diff options
Diffstat (limited to 'src/com/android/swe/browser/BookmarkItem.java')
-rw-r--r-- | src/com/android/swe/browser/BookmarkItem.java | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/src/com/android/swe/browser/BookmarkItem.java b/src/com/android/swe/browser/BookmarkItem.java new file mode 100644 index 00000000..85c1fff2 --- /dev/null +++ b/src/com/android/swe/browser/BookmarkItem.java @@ -0,0 +1,195 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.HorizontalScrollView; +import android.widget.ImageView; +import android.widget.TextView; + +/** + * Custom layout for an item representing a bookmark in the browser. + */ +class BookmarkItem extends HorizontalScrollView { + + final static int MAX_TEXTVIEW_LEN = 80; + + protected TextView mTextView; + protected TextView mUrlText; + protected ImageView mImageView; + protected String mUrl; + protected String mTitle; + protected boolean mEnableScrolling = false; + + /** + * Instantiate a bookmark item, including a default favicon. + * + * @param context The application context for the item. + */ + BookmarkItem(Context context) { + super(context); + + setClickable(false); + setEnableScrolling(false); + LayoutInflater factory = LayoutInflater.from(context); + factory.inflate(R.layout.history_item, this); + mTextView = (TextView) findViewById(R.id.title); + mUrlText = (TextView) findViewById(R.id.url); + mImageView = (ImageView) findViewById(R.id.favicon); + View star = findViewById(R.id.star); + star.setVisibility(View.GONE); + } + + /** + * Copy this BookmarkItem to item. + * @param item BookmarkItem to receive the info from this BookmarkItem. + */ + /* package */ void copyTo(BookmarkItem item) { + item.mTextView.setText(mTextView.getText()); + item.mUrlText.setText(mUrlText.getText()); + item.mImageView.setImageDrawable(mImageView.getDrawable()); + } + + /** + * Return the name assigned to this bookmark item. + */ + /* package */ String getName() { + return mTitle; + } + + /* package */ String getUrl() { + return mUrl; + } + + /** + * Set the favicon for this item. + * + * @param b The new bitmap for this item. + * If it is null, will use the default. + */ + /* package */ void setFavicon(Bitmap b) { + if (b != null) { + mImageView.setImageBitmap(b); + } else { + mImageView.setImageResource(R.drawable.app_web_browser_sm); + } + } + + void setFaviconBackground(Drawable d) { + mImageView.setBackgroundDrawable(d); + } + + /** + * Set the new name for the bookmark item. + * + * @param name The new name for the bookmark item. + */ + /* package */ void setName(String name) { + if (name == null) { + return; + } + + mTitle = name; + + if (name.length() > MAX_TEXTVIEW_LEN) { + name = name.substring(0, MAX_TEXTVIEW_LEN); + } + + mTextView.setText(name); + } + + /** + * Set the new url for the bookmark item. + * @param url The new url for the bookmark item. + */ + /* package */ void setUrl(String url) { + if (url == null) { + return; + } + + mUrl = url; + + url = UrlUtils.stripUrl(url); + if (url.length() > MAX_TEXTVIEW_LEN) { + url = url.substring(0, MAX_TEXTVIEW_LEN); + } + + mUrlText.setText(url); + } + + void setEnableScrolling(boolean enable) { + mEnableScrolling = enable; + setFocusable(mEnableScrolling); + setFocusableInTouchMode(mEnableScrolling); + requestDisallowInterceptTouchEvent(!mEnableScrolling); + requestLayout(); + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (mEnableScrolling) { + return super.onTouchEvent(ev); + } + return false; + } + + @Override + protected void measureChild(View child, int parentWidthMeasureSpec, + int parentHeightMeasureSpec) { + if (mEnableScrolling) { + super.measureChild(child, parentWidthMeasureSpec, parentHeightMeasureSpec); + return; + } + + final ViewGroup.LayoutParams lp = child.getLayoutParams(); + + final int childWidthMeasureSpec = getChildMeasureSpec(parentWidthMeasureSpec, + mPaddingLeft + mPaddingRight, lp.width); + final int childHeightMeasureSpec = getChildMeasureSpec(parentHeightMeasureSpec, + mPaddingTop + mPaddingBottom, lp.height); + + child.measure(childWidthMeasureSpec, childHeightMeasureSpec); + } + + @Override + protected void measureChildWithMargins(View child, + int parentWidthMeasureSpec, int widthUsed, + int parentHeightMeasureSpec, int heightUsed) { + if (mEnableScrolling) { + super.measureChildWithMargins(child, parentWidthMeasureSpec, + widthUsed, parentHeightMeasureSpec, heightUsed); + return; + } + + final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams(); + + final int childWidthMeasureSpec = getChildMeasureSpec(parentWidthMeasureSpec, + mPaddingLeft + mPaddingRight + lp.leftMargin + lp.rightMargin + + widthUsed, lp.width); + final int childHeightMeasureSpec = getChildMeasureSpec(parentHeightMeasureSpec, + mPaddingTop + mPaddingBottom + lp.topMargin + lp.bottomMargin + + heightUsed, lp.height); + + child.measure(childWidthMeasureSpec, childHeightMeasureSpec); + } +} |