Save the data to the database.
Also, change the view to dialog stating
that the webpage has been saved.
String title = mTitle.getText().toString().trim();
String unfilteredUrl =
BrowserActivity.fixUrl(mAddress.getText().toString());
boolean emptyTitle = title.length() == 0;
boolean emptyUrl = unfilteredUrl.trim().length() == 0;
Resources r = getResources();
if (emptyTitle || emptyUrl) {
if (emptyTitle) {
mTitle.setError(r.getText(R.string.bookmark_needs_title));
}
if (emptyUrl) {
mAddress.setError(r.getText(R.string.bookmark_needs_url));
}
return false;
}
String url = unfilteredUrl;
if (!(url.startsWith("about:") || url.startsWith("data:") || url
.startsWith("file:"))) {
WebAddress address;
try {
address = new WebAddress(unfilteredUrl);
} catch (ParseException e) {
mAddress.setError(r.getText(R.string.bookmark_url_not_valid));
return false;
}
if (address.mHost.length() == 0) {
mAddress.setError(r.getText(R.string.bookmark_url_not_valid));
return false;
}
url = address.toString();
}
try {
if (mEditingExisting) {
mMap.putString("title", title);
mMap.putString("url", url);
setResult(RESULT_OK, (new Intent()).setAction(
getIntent().toString()).putExtras(mMap));
} else {
// Want to append to the beginning of the list
long creationTime = new Date().getTime();
SELECTION_ARGS[0] = url;
ContentResolver cr = getContentResolver();
Cursor c = cr.query(Browser.BOOKMARKS_URI,
mProjection,
WHERE_CLAUSE,
SELECTION_ARGS,
null);
ContentValues map = new ContentValues();
if (c.moveToFirst() && c.getInt(c.getColumnIndexOrThrow(
Browser.BookmarkColumns.BOOKMARK)) == 0) {
// This means we have been to this site but not bookmarked
// it, so convert the history item to a bookmark
map.put(Browser.BookmarkColumns.CREATED, creationTime);
map.put(Browser.BookmarkColumns.TITLE, title);
map.put(Browser.BookmarkColumns.BOOKMARK, 1);
cr.update(Browser.BOOKMARKS_URI, map,
"_id = " + c.getInt(0), null);
} else {
int count = c.getCount();
boolean matchedTitle = false;
for (int i = 0; i < count; i++) {
// One or more bookmarks already exist for this site.
// Check the names of each
c.moveToPosition(i);
if (c.getString(c.getColumnIndexOrThrow(
Browser.BookmarkColumns.TITLE)).equals(title)) {
// The old bookmark has the same name.
// Update its creation time.
map.put(Browser.BookmarkColumns.CREATED,
creationTime);
cr.update(Browser.BOOKMARKS_URI, map,
"_id = " + c.getInt(0), null);
matchedTitle = true;
}
}
if (!matchedTitle) {
// Adding a bookmark for a site the user has visited,
// or a new bookmark (with a different name) for a site
// the user has visited
map.put(Browser.BookmarkColumns.TITLE, title);
map.put(Browser.BookmarkColumns.URL, url);
map.put(Browser.BookmarkColumns.CREATED, creationTime);
map.put(Browser.BookmarkColumns.BOOKMARK, 1);
map.put(Browser.BookmarkColumns.DATE, 0);
int visits = 0;
if (count > 0) {
// The user has already bookmarked, and possibly
// visited this site. However, they are creating
// a new bookmark with the same url but a different
// name. The new bookmark should have the same
// number of visits as the already created bookmark.
visits = c.getInt(c.getColumnIndexOrThrow(
Browser.BookmarkColumns.VISITS));
}
// Bookmark starts with 3 extra visits so that it will
// bubble up in the most visited and goto search box
map.put(Browser.BookmarkColumns.VISITS, visits + 3);
cr.insert(Browser.BOOKMARKS_URI, map);
}
}
WebIconDatabase.getInstance().retainIconForPageUrl(url);
c.deactivate();
setResult(RESULT_OK);
}
} catch (IllegalStateException e) {
setTitle(r.getText(R.string.no_database));
return false;
}
return true;