summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/AddBookmarkPage.java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2010-11-22 14:15:36 -0800
committerJohn Reck <jreck@google.com>2010-11-24 15:58:51 -0800
commitc8490818ccb693ed2610366d2e91fb290e40c372 (patch)
tree5f48e40f032afd0384da01ae27ea1ad70065ed88 /src/com/android/browser/AddBookmarkPage.java
parenta62b093ebf6ac8071eddf96edb6457ff55ebd1a3 (diff)
downloadpackages_apps_Browser-c8490818ccb693ed2610366d2e91fb290e40c372.zip
packages_apps_Browser-c8490818ccb693ed2610366d2e91fb290e40c372.tar.gz
packages_apps_Browser-c8490818ccb693ed2610366d2e91fb290e40c372.tar.bz2
Adds context menu for folders (edit/delete)
Bug: 3214901 Adds support for folder context menus to edit and delete folders. Change-Id: I89cb2fa4b139ba3f59ec62b34154d5837c7f471b
Diffstat (limited to 'src/com/android/browser/AddBookmarkPage.java')
-rw-r--r--src/com/android/browser/AddBookmarkPage.java118
1 files changed, 79 insertions, 39 deletions
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 25c9217..de256a8 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -25,7 +25,6 @@ import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.CursorLoader;
-import android.content.Intent;
import android.content.Loader;
import android.content.SharedPreferences;
import android.content.res.Resources;
@@ -35,6 +34,7 @@ import android.graphics.drawable.Drawable;
import android.net.ParseException;
import android.net.Uri;
import android.net.WebAddress;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -60,7 +60,6 @@ import android.widget.Toast;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.ArrayList;
import java.util.Stack;
public class AddBookmarkPage extends Activity
@@ -74,6 +73,9 @@ public class AddBookmarkPage extends Activity
public static final String REMOVE_THUMBNAIL = "remove_thumbnail";
public static final String USER_AGENT = "user_agent";
+ /* package */ static final String EXTRA_EDIT_BOOKMARK = "bookmark";
+ /* package */ static final String EXTRA_IS_FOLDER = "is_folder";
+
private static final int MAX_CRUMBS_SHOWN = 2;
private final String LOGTAG = "Bookmarks";
@@ -89,6 +91,7 @@ public class AddBookmarkPage extends Activity
private TextView mButton;
private View mCancelButton;
private boolean mEditingExisting;
+ private boolean mEditingFolder;
private Bundle mMap;
private String mTouchIconUrl;
private String mOriginalUrl;
@@ -238,6 +241,9 @@ public class AddBookmarkPage extends Activity
PopupMenu popup = new PopupMenu(this, mFolder);
popup.getMenuInflater().inflate(R.menu.folder_choice,
popup.getMenu());
+ if (mEditingFolder) {
+ popup.getMenu().removeItem(R.id.home_screen);
+ }
popup.setOnMenuItemClickListener(this);
popup.show();
} else if (v == mAddNewFolder) {
@@ -501,11 +507,15 @@ public class AddBookmarkPage extends Activity
mFakeTitle = (TextView) findViewById(R.id.fake_title);
if (mMap != null) {
- Bundle b = mMap.getBundle("bookmark");
+ Bundle b = mMap.getBundle(EXTRA_EDIT_BOOKMARK);
if (b != null) {
+ mEditingFolder = mMap.getBoolean(EXTRA_IS_FOLDER, false);
mMap = b;
mEditingExisting = true;
mFakeTitle.setText(R.string.edit_bookmark);
+ if (mEditingFolder) {
+ findViewById(R.id.row_address).setVisibility(View.GONE);
+ }
} else {
int gravity = mMap.getInt("gravity", -1);
if (gravity != -1) {
@@ -648,6 +658,28 @@ public class AddBookmarkPage extends Activity
}
}
+ private static class UpdateBookmarkTask extends AsyncTask<ContentValues, Void, Void> {
+ Context mContext;
+ Long mId;
+
+ public UpdateBookmarkTask(Context context, long id) {
+ mContext = context;
+ mId = id;
+ }
+
+ @Override
+ protected Void doInBackground(ContentValues... params) {
+ if (params.length != 1) {
+ throw new IllegalArgumentException("No ContentValues provided!");
+ }
+ Uri uri = ContentUris.withAppendedId(BookmarkUtils.getBookmarksUri(mContext), mId);
+ mContext.getContentResolver().update(
+ uri,
+ params[0], null, null);
+ return null;
+ }
+ }
+
private void createHandler() {
if (mHandler == null) {
mHandler = new Handler() {
@@ -691,7 +723,7 @@ public class AddBookmarkPage extends Activity
boolean emptyTitle = title.length() == 0;
boolean emptyUrl = unfilteredUrl.trim().length() == 0;
Resources r = getResources();
- if (emptyTitle || emptyUrl) {
+ if (emptyTitle || (emptyUrl && !mEditingFolder)) {
if (emptyTitle) {
mTitle.setError(r.getText(R.string.bookmark_needs_title));
}
@@ -702,36 +734,38 @@ public class AddBookmarkPage extends Activity
}
String url = unfilteredUrl.trim();
- try {
- // We allow bookmarks with a javascript: scheme, but these will in most cases
- // fail URI parsing, so don't try it if that's the kind of bookmark we have.
-
- if (!url.toLowerCase().startsWith("javascript:")) {
- URI uriObj = new URI(url);
- String scheme = uriObj.getScheme();
- if (!Bookmarks.urlHasAcceptableScheme(url)) {
- // If the scheme was non-null, let the user know that we
- // can't save their bookmark. If it was null, we'll assume
- // they meant http when we parse it in the WebAddress class.
- if (scheme != null) {
- mAddress.setError(r.getText(R.string.bookmark_cannot_save_url));
- return false;
- }
- WebAddress address;
- try {
- address = new WebAddress(unfilteredUrl);
- } catch (ParseException e) {
- throw new URISyntaxException("", "");
- }
- if (address.getHost().length() == 0) {
- throw new URISyntaxException("", "");
+ if (!mEditingFolder) {
+ try {
+ // We allow bookmarks with a javascript: scheme, but these will in most cases
+ // fail URI parsing, so don't try it if that's the kind of bookmark we have.
+
+ if (!url.toLowerCase().startsWith("javascript:")) {
+ URI uriObj = new URI(url);
+ String scheme = uriObj.getScheme();
+ if (!Bookmarks.urlHasAcceptableScheme(url)) {
+ // If the scheme was non-null, let the user know that we
+ // can't save their bookmark. If it was null, we'll assume
+ // they meant http when we parse it in the WebAddress class.
+ if (scheme != null) {
+ mAddress.setError(r.getText(R.string.bookmark_cannot_save_url));
+ return false;
+ }
+ WebAddress address;
+ try {
+ address = new WebAddress(unfilteredUrl);
+ } catch (ParseException e) {
+ throw new URISyntaxException("", "");
+ }
+ if (address.getHost().length() == 0) {
+ throw new URISyntaxException("", "");
+ }
+ url = address.toString();
}
- url = address.toString();
}
+ } catch (URISyntaxException e) {
+ mAddress.setError(r.getText(R.string.bookmark_url_not_valid));
+ return false;
}
- } catch (URISyntaxException e) {
- mAddress.setError(r.getText(R.string.bookmark_url_not_valid));
- return false;
}
if (mSaveToHomeScreen) {
@@ -741,13 +775,20 @@ public class AddBookmarkPage extends Activity
boolean urlUnmodified = url.equals(mOriginalUrl);
if (mEditingExisting) {
- mMap.putString(BrowserContract.Bookmarks.TITLE, title);
- mMap.putString(BrowserContract.Bookmarks.URL, url);
- mMap.putBoolean(REMOVE_THUMBNAIL, !urlUnmodified);
- // FIXME: This does not work yet
- mMap.putLong(BrowserContract.Bookmarks.PARENT, mCurrentFolder);
- setResult(RESULT_OK, (new Intent()).setAction(
- getIntent().toString()).putExtras(mMap));
+ Long id = mMap.getLong(BrowserContract.Bookmarks._ID);
+ ContentValues values = new ContentValues();
+ values.put(BrowserContract.Bookmarks.TITLE, title);
+ values.put(BrowserContract.Bookmarks.PARENT, mCurrentFolder);
+ if (!mEditingFolder) {
+ values.put(BrowserContract.Bookmarks.URL, url);
+ if (!urlUnmodified) {
+ values.putNull(BrowserContract.Bookmarks.THUMBNAIL);
+ }
+ }
+ if (values.size() > 0) {
+ new UpdateBookmarkTask(getApplicationContext(), id).execute(values);
+ }
+ setResult(RESULT_OK);
} else {
Bitmap thumbnail;
Bitmap favicon;
@@ -794,5 +835,4 @@ public class AddBookmarkPage extends Activity
}
return true;
}
-
}