diff options
| author | Patrick Scott <> | 2009-03-24 20:43:37 -0700 |
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-24 20:43:37 -0700 |
| commit | e09761e605bff04ff2e0b5e1f25541988088e80d (patch) | |
| tree | 72b13dd4d92e28f9c939e81a625d9ba56e66515c /src/com | |
| parent | dd4f4297c08803b238af28dddb373a1aea06cc1e (diff) | |
| download | packages_apps_Browser-e09761e605bff04ff2e0b5e1f25541988088e80d.tar.gz packages_apps_Browser-e09761e605bff04ff2e0b5e1f25541988088e80d.tar.bz2 packages_apps_Browser-e09761e605bff04ff2e0b5e1f25541988088e80d.zip | |
Automated import from //branches/master/...@141656,141656
Diffstat (limited to 'src/com')
| -rw-r--r-- | src/com/android/browser/BrowserBookmarksAdapter.java | 15 | ||||
| -rw-r--r-- | src/com/android/browser/BrowserBookmarksPage.java | 58 |
2 files changed, 67 insertions, 6 deletions
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java index 479dc0efb..27782e090 100644 --- a/src/com/android/browser/BrowserBookmarksAdapter.java +++ b/src/com/android/browser/BrowserBookmarksAdapter.java @@ -472,6 +472,21 @@ class BrowserBookmarksAdapter extends BaseAdapter { } /** + * Return the favicon for this item in the list. + */ + public Bitmap getFavicon(int position) { + if (position < mExtraOffset || position > mCount) { + return null; + } + mCursor.moveToPosition(position - mExtraOffset); + byte[] data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX); + if (data == null) { + return null; + } + return BitmapFactory.decodeByteArray(data, 0, data.length); + } + + /** * Private helper function to return the title or url. */ private String getString(int cursorIndex, int position) { diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java index 050b24b6c..dd34c14ac 100644 --- a/src/com/android/browser/BrowserBookmarksPage.java +++ b/src/com/android/browser/BrowserBookmarksPage.java @@ -21,6 +21,11 @@ import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.RectF; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -87,7 +92,7 @@ public class BrowserBookmarksPage extends Activity implements break; case R.id.shortcut_context_menu_id: final Intent send = createShortcutIntent(getUrl(i.position), - getBookmarkTitle(i.position)); + getBookmarkTitle(i.position), getFavicon(i.position)); send.setAction(INSTALL_SHORTCUT); sendBroadcast(send); break; @@ -203,14 +208,15 @@ public class BrowserBookmarksPage extends Activity implements } } else { final Intent intent = createShortcutIntent(getUrl(position), - getBookmarkTitle(position)); + getBookmarkTitle(position), getFavicon(position)); setResultToParent(RESULT_OK, intent); finish(); } } }; - private Intent createShortcutIntent(String url, String title) { + private Intent createShortcutIntent(String url, String title, + Bitmap favicon) { final Intent i = new Intent(); final Intent shortcutIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); @@ -220,9 +226,42 @@ public class BrowserBookmarksPage extends Activity implements Long.toString(uniqueId)); i.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); i.putExtra(Intent.EXTRA_SHORTCUT_NAME, title); - i.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, - Intent.ShortcutIconResource.fromContext(BrowserBookmarksPage.this, - R.drawable.ic_launcher_shortcut_browser_bookmark)); + if (favicon == null) { + i.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, + Intent.ShortcutIconResource.fromContext( + BrowserBookmarksPage.this, + R.drawable.ic_launcher_shortcut_browser_bookmark)); + } else { + Bitmap icon = BitmapFactory.decodeResource(getResources(), + R.drawable.ic_launcher_shortcut_browser_bookmark); + + // Make a copy of the regular icon so we can modify the pixels. + Bitmap copy = icon.copy(Bitmap.Config.ARGB_8888, true); + Canvas canvas = new Canvas(copy); + + // Make a Paint for the white background rectangle and for + // filtering the favicon. + Paint p = new Paint(Paint.ANTI_ALIAS_FLAG + | Paint.FILTER_BITMAP_FLAG); + p.setStyle(Paint.Style.FILL_AND_STROKE); + p.setColor(Color.WHITE); + + // Create a rectangle that is slightly wider than the favicon + final float iconSize = 16; // 16x16 favicon + final float padding = 2; // white padding around icon + final float rectSize = iconSize + 2 * padding; + final float y = icon.getHeight() - rectSize; + RectF r = new RectF(0, y, rectSize, y + rectSize); + + // Draw a white rounded rectangle behind the favicon + canvas.drawRoundRect(r, 2, 2, p); + + // Draw the favicon in the same rectangle as the rounded rectangle + // but inset by the padding (results in a 16x16 favicon). + r.inset(padding, padding); + canvas.drawBitmap(favicon, null, r, p); + i.putExtra(Intent.EXTRA_SHORTCUT_ICON, copy); + } // Do not allow duplicate items i.putExtra("duplicate", false); return i; @@ -349,6 +388,13 @@ public class BrowserBookmarksPage extends Activity implements return mBookmarksAdapter.getUrl(position); } + /** + * Return the favicon of the currently highlighted row. + */ + public Bitmap getFavicon(int position) { + return mBookmarksAdapter.getFavicon(position); + } + private void copy(CharSequence text) { try { IClipboard clip = IClipboard.Stub.asInterface(ServiceManager.getService("clipboard")); |
