diff options
author | Leon Scroggins <scroggo@google.com> | 2011-01-14 06:03:42 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-14 06:03:42 -0800 |
commit | f18338a08c89467ef27e1fe3a9ac7130839b475d (patch) | |
tree | ed035262ae08c6c3cc6c2cc4033016042aee5bd2 /src | |
parent | 937a54efbd2bd200c34e7c7a6d2a741a7bbc8446 (diff) | |
parent | 75630678154c89662b7f8e5fb19d0b77a2d7abb8 (diff) | |
download | packages_apps_browser-f18338a08c89467ef27e1fe3a9ac7130839b475d.zip packages_apps_browser-f18338a08c89467ef27e1fe3a9ac7130839b475d.tar.gz packages_apps_browser-f18338a08c89467ef27e1fe3a9ac7130839b475d.tar.bz2 |
Merge "Show a remove button for existing bookmarks." into honeycomb
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/browser/AddBookmarkPage.java | 32 | ||||
-rw-r--r-- | src/com/android/browser/BookmarkUtils.java | 42 | ||||
-rw-r--r-- | src/com/android/browser/BrowserBookmarksPage.java | 21 |
3 files changed, 75 insertions, 20 deletions
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java index 5a55f67..a93a518 100644 --- a/src/com/android/browser/AddBookmarkPage.java +++ b/src/com/android/browser/AddBookmarkPage.java @@ -115,6 +115,8 @@ public class AddBookmarkPage extends Activity private long mRootFolder; private TextView mTopLevelLabel; private Drawable mHeaderIcon; + private View mRemoveLink; + private View mFakeTitleHolder; private static class Folder { String Name; long Id; @@ -127,6 +129,7 @@ public class AddBookmarkPage extends Activity // Message IDs private static final int SAVE_BOOKMARK = 100; private static final int TOUCH_ICON_DOWNLOADED = 101; + private static final int BOOKMARK_DELETED = 102; private Handler mHandler; @@ -194,7 +197,7 @@ public class AddBookmarkPage extends Activity mFolderSelector.setVisibility(View.GONE); mDefaultView.setVisibility(View.VISIBLE); mCrumbHolder.setVisibility(View.GONE); - mFakeTitle.setVisibility(View.VISIBLE); + mFakeTitleHolder.setVisibility(View.VISIBLE); if (changedFolder) { Object data = mCrumbs.getTopData(); if (data != null) { @@ -257,6 +260,16 @@ public class AddBookmarkPage extends Activity // can transfer the focus to mFolderNamer. imm.focusIn(mListView); imm.showSoftInput(mFolderNamer, InputMethodManager.SHOW_IMPLICIT); + } else if (v == mRemoveLink) { + if (!mEditingExisting) { + throw new AssertionError("Remove button should not be shown for" + + " new bookmarks"); + } + long id = mMap.getLong(BrowserContract.Bookmarks._ID); + createHandler(); + Message msg = Message.obtain(mHandler, BOOKMARK_DELETED); + BookmarkUtils.displayRemoveBookmarkDialog(id, + mTitle.getText().toString(), this, msg); } } @@ -334,7 +347,7 @@ public class AddBookmarkPage extends Activity mDefaultView.setVisibility(View.GONE); mFolderSelector.setVisibility(View.VISIBLE); mCrumbHolder.setVisibility(View.VISIBLE); - mFakeTitle.setVisibility(View.GONE); + mFakeTitleHolder.setVisibility(View.GONE); mAddNewFolder.setVisibility(View.VISIBLE); mAddSeparator.setVisibility(View.VISIBLE); } @@ -423,6 +436,7 @@ public class AddBookmarkPage extends Activity if (cursor != null && cursor.moveToFirst()) { // Site is bookmarked. mEditingExisting = true; + showRemoveButton(); mFakeTitle.setText(R.string.edit_bookmark); int index = cursor.getColumnIndexOrThrow( BrowserContract.Bookmarks.PARENT); @@ -603,6 +617,8 @@ public class AddBookmarkPage extends Activity mFakeTitle.setText(R.string.edit_bookmark); if (mEditingFolder) { findViewById(R.id.row_address).setVisibility(View.GONE); + } else { + showRemoveButton(); } } else { int gravity = mMap.getInt("gravity", -1); @@ -662,6 +678,8 @@ public class AddBookmarkPage extends Activity mListView.setOnItemClickListener(this); mListView.addEditText(mFolderNamer); + mFakeTitleHolder = findViewById(R.id.title_holder); + if (!window.getDecorView().isInTouchMode()) { mButton.requestFocus(); } @@ -678,6 +696,13 @@ public class AddBookmarkPage extends Activity } + private void showRemoveButton() { + findViewById(R.id.remove_divider).setVisibility(View.VISIBLE); + mRemoveLink = findViewById(R.id.remove); + mRemoveLink.setVisibility(View.VISIBLE); + mRemoveLink.setOnClickListener(this); + } + // Called once we have determined which folder is the root folder private void onRootFolderFound(long root) { mRootFolder = root; @@ -819,6 +844,9 @@ public class AddBookmarkPage extends Activity (Bitmap) b.getParcelable(BrowserContract.Bookmarks.TOUCH_ICON), (Bitmap) b.getParcelable(BrowserContract.Bookmarks.FAVICON))); break; + case BOOKMARK_DELETED: + finish(); + break; } } }; diff --git a/src/com/android/browser/BookmarkUtils.java b/src/com/android/browser/BookmarkUtils.java index b548607..27d3310 100644 --- a/src/com/android/browser/BookmarkUtils.java +++ b/src/com/android/browser/BookmarkUtils.java @@ -16,7 +16,10 @@ package com.android.browser; +import android.app.AlertDialog; +import android.content.ContentUris; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; @@ -30,6 +33,7 @@ import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.net.Uri; +import android.os.Message; import android.preference.PreferenceManager; import android.provider.Browser; import android.provider.BrowserContract; @@ -212,4 +216,42 @@ public class BookmarkUtils { BrowserContract.Bookmarks.PARAM_ACCOUNT_TYPE, accountType); return ub; } + + /** + * Show a confirmation dialog to remove a bookmark. + * @param id Id of the bookmark to remove + * @param title Title of the bookmark, to be displayed in the confirmation method. + * @param context Package Context for strings, dialog, ContentResolver + * @param msg Message to send if the bookmark is deleted. + */ + static void displayRemoveBookmarkDialog( final long id, final String title, + final Context context, final Message msg) { + + new AlertDialog.Builder(context) + .setTitle(R.string.delete_bookmark) + .setIcon(android.R.drawable.ic_dialog_alert) + .setMessage(context.getString(R.string.delete_bookmark_warning, + title)) + .setPositiveButton(R.string.ok, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int whichButton) { + if (msg != null) { + msg.sendToTarget(); + } + Runnable runnable = new Runnable(){ + @Override + public void run() { + Uri uri = ContentUris.withAppendedId( + BrowserContract.Bookmarks.CONTENT_URI, + id); + context.getContentResolver().delete(uri, null, null); + } + }; + new Thread(runnable).start(); + } + }) + .setNegativeButton(R.string.cancel, null) + .show(); + } } diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java index ea97c29..d5a5182 100644 --- a/src/com/android/browser/BrowserBookmarksPage.java +++ b/src/com/android/browser/BrowserBookmarksPage.java @@ -630,25 +630,10 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte // Put up a dialog asking if the user really wants to // delete the bookmark Cursor cursor = mAdapter.getItem(position); + long id = cursor.getLong(BookmarksLoader.COLUMN_INDEX_ID); + String title = cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE); Context context = getActivity(); - final ContentResolver resolver = context.getContentResolver(); - final Uri uri = ContentUris.withAppendedId(BrowserContract.Bookmarks.CONTENT_URI, - cursor.getLong(BookmarksLoader.COLUMN_INDEX_ID)); - - new AlertDialog.Builder(context) - .setTitle(R.string.delete_bookmark) - .setIcon(android.R.drawable.ic_dialog_alert) - .setMessage(context.getString(R.string.delete_bookmark_warning, - cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE))) - .setPositiveButton(R.string.ok, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int whichButton) { - resolver.delete(uri, null, null); - } - }) - .setNegativeButton(R.string.cancel, null) - .show(); + BookmarkUtils.displayRemoveBookmarkDialog(id, title, context, null); } private String getUrl(int position) { |