diff options
| author | John Reck <jreck@google.com> | 2010-10-29 11:42:55 -0700 |
|---|---|---|
| committer | John Reck <jreck@google.com> | 2010-11-01 13:24:43 -0700 |
| commit | df63d2ff2e9881706eef78796d05078d0ffb7f60 (patch) | |
| tree | 22ae1d5b09227bf05ff4cd501723fa6af9715a5a /src/com/android/browser/widget/BookmarkStackWidgetService.java | |
| parent | 0187f3352b9f8989c70b4842c0d4b528f5c796cd (diff) | |
| download | packages_apps_Browser-df63d2ff2e9881706eef78796d05078d0ffb7f60.tar.gz packages_apps_Browser-df63d2ff2e9881706eef78796d05078d0ffb7f60.tar.bz2 packages_apps_Browser-df63d2ff2e9881706eef78796d05078d0ffb7f60.zip | |
New bookmark list widget
Bug: 3144077 and 2988059
This replaces the old stack based widget with a list based one. It
also updates whenever the bookmarks changes rather than periodically
Change-Id: Ie37978918bab441bf31a6131360e308cd2bc0f4b
Diffstat (limited to 'src/com/android/browser/widget/BookmarkStackWidgetService.java')
| -rw-r--r-- | src/com/android/browser/widget/BookmarkStackWidgetService.java | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/src/com/android/browser/widget/BookmarkStackWidgetService.java b/src/com/android/browser/widget/BookmarkStackWidgetService.java deleted file mode 100644 index 83b07df70..000000000 --- a/src/com/android/browser/widget/BookmarkStackWidgetService.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright (C) 2010 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.widget; - -import com.android.browser.R; - -import android.app.PendingIntent; -import android.appwidget.AppWidgetManager; -import android.content.ComponentName; -import android.content.Intent; -import android.database.Cursor; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.net.Uri; -import android.os.Handler; -import android.os.Message; -import android.provider.BrowserContract; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; -import android.widget.RemoteViews; -import android.widget.RemoteViewsService; - -import java.util.ArrayList; -import java.util.List; - -public class BookmarkStackWidgetService extends RemoteViewsService { - - private static final String LOGTAG = "browserwidget"; - - /** Force the bookmarks to be re-rendered. */ - public static final String UPDATE = "com.android.browser.widget.UPDATE"; - - /** the adapter intent action */ - public static final String ADAPTER = "com.android.browser.widget.ADAPTER"; - - private static final String[] PROJECTION = new String[] { - BrowserContract.Bookmarks._ID, - BrowserContract.Bookmarks.TITLE, - BrowserContract.Bookmarks.URL, - BrowserContract.Bookmarks.THUMBNAIL }; - - private static final String WHERE_CLAUSE = BrowserContract.Bookmarks.IS_FOLDER + - " == 0"; - - // No id specified. - private static final int NO_ID = -1; - - private static final int MSG_UPDATE = 0; - - List<RenderResult> mBookmarks; - - private final Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_UPDATE: - updateWidget(); - break; - default: - break; - } - } - }; - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - if ((intent == null) || (intent.getAction() != null) && UPDATE.equals(intent.getAction())) { - mHandler.sendEmptyMessage(MSG_UPDATE); - } - return START_STICKY; - } - - private void updateWidget() { - RemoteViews views = new RemoteViews(getPackageName(), - R.layout.bookmarkstackwidget); - Intent vi = new Intent(Intent.ACTION_VIEW); - vi.addCategory(Intent.CATEGORY_BROWSABLE); - views.setPendingIntentTemplate(R.id.stackwidget_stack, - PendingIntent.getActivity(BookmarkStackWidgetService.this, 0, vi, - PendingIntent.FLAG_CANCEL_CURRENT)); - Intent adapter = new Intent(BookmarkStackWidgetService.ADAPTER, null, - this, BookmarkStackWidgetService.class); - views.setRemoteAdapter(R.id.stackwidget_stack, adapter); - AppWidgetManager.getInstance(this).updateAppWidget( - new ComponentName(this, BookmarkStackWidgetProvider.class), - views); - } - - @Override - public RemoteViewsFactory onGetViewFactory(Intent intent) { - return mViewFactory; - } - - RemoteViewsService.RemoteViewsFactory mViewFactory = new RemoteViewsFactory () { - - Intent mFillIntent; - - @Override - public int getCount() { - return mBookmarks.size(); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public RemoteViews getLoadingView() { - return null; - } - - @Override - public RemoteViews getViewAt(int position) { - RenderResult res = mBookmarks.get(position); - RemoteViews views = new RemoteViews(getPackageName(), - R.layout.bookmarkstackwidget_item); - mFillIntent.setData(Uri.parse(res.mUrl)); - views.setOnClickFillInIntent(R.id.stack_item, mFillIntent); - // Set the title of the bookmark. Use the url as a backup. - String displayTitle = res.mTitle; - if (TextUtils.isEmpty(displayTitle)) { - displayTitle = res.mUrl; - } - views.setTextViewText(R.id.label, displayTitle); - if (res.mBitmap != null) { - views.setImageViewBitmap(R.id.thumb, res.mBitmap); - views.setViewVisibility(R.id.label, View.GONE); - } - return views; - } - - @Override - public int getViewTypeCount() { - return 1; - } - - @Override - public boolean hasStableIds() { - return false; - } - - @Override - public void onCreate() { - mFillIntent = new Intent(); - update(); - } - - @Override - public void onDestroy() { - } - - public void update() { - mBookmarks = new ArrayList<RenderResult>(); - // Look up all the bookmarks - Cursor c = null; - try { - c = getContentResolver().query(BrowserContract.Bookmarks.CONTENT_URI, - PROJECTION, WHERE_CLAUSE, null, null); - if (c != null) { - while (c.moveToNext()) { - int id = c.getInt(0); - String title = c.getString(1); - String url = c.getString(2); - RenderResult res = new RenderResult(id, title, url); - byte[] blob = c.getBlob(3); - if (blob != null) { - res.mBitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length); - } - mBookmarks.add(res); - } - } - } catch (IllegalStateException e) { - Log.e(LOGTAG, "update bookmark widget", e); - } finally { - if (c != null) { - c.close(); - } - } - } - - @Override - public void onDataSetChanged() { - } - }; - - // Class containing the rendering information for a specific bookmark. - private static class RenderResult { - final int mId; - final String mTitle; - final String mUrl; - Bitmap mBitmap; - - RenderResult(int id, String title, String url) { - mId = id; - mTitle = title; - mUrl = url; - } - - } - -} |
