A bunch of updates to BrowserProvider2.
The images are now shared between the history
and bookmarks tables so updates to one are
reflected in the other.
Added a parameter for specifying a limit when
calling query().
Added a combined view of history and bookmarks.
Added a way to get a distinct list of the
accounts providing bookmarks.
Added the ability to find the server unique
IDs for parent and insert_after when doing
a query for a row.
Change-Id: I9afa15bcf7ca68468793c49fbec701e516e4540e
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 91785d5..152d4cf 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -22,6 +22,7 @@
import android.app.LoaderManager;
import android.content.ClipData;
import android.content.ClipboardManager;
+import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
@@ -33,23 +34,22 @@
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
-import android.provider.Browser;
import android.provider.BrowserContract;
import android.util.Pair;
import android.view.ContextMenu;
-import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.view.ContextMenu.ContextMenuInfo;
+import android.view.View.OnClickListener;
import android.webkit.WebIconDatabase.IconListener;
import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.GridView;
import android.widget.Toast;
+import android.widget.AdapterView.OnItemClickListener;
import java.util.Stack;
@@ -83,11 +83,13 @@
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
switch (id) {
case LOADER_BOOKMARKS: {
- int rootFolder = 0;
+ String accountType = null;
+ String accountName = null;
if (args != null) {
- args.getInt(BookmarksLoader.ARG_ROOT_FOLDER, 0);
+ accountType = args.getString(BookmarksLoader.ARG_ACCOUNT_TYPE);
+ accountName = args.getString(BookmarksLoader.ARG_ACCOUNT_NAME);
}
- return new BookmarksLoader(getActivity(), rootFolder);
+ return new BookmarksLoader(getActivity(), accountType, accountName);
}
}
throw new UnsupportedOperationException("Unknown loader id " + id);
@@ -106,8 +108,9 @@
// Fill in the "up" button if needed
BookmarksLoader bl = (BookmarksLoader) loader;
+ String path = bl.getUri().getPath();
boolean rootFolder =
- (BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER.equals(bl.getUri()));
+ BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER.getPath().equals(path);
if (rootFolder) {
mUpButton.setText(R.string.defaultBookmarksUpButton);
mUpButton.setEnabled(false);
@@ -389,7 +392,6 @@
/**
* Update a row in the database with new information.
- * Requeries the database if the information has changed.
* @param map Bundle storing id, title and url of new information
*/
public void updateRow(Bundle map) {
@@ -428,7 +430,6 @@
ContentUris.withAppendedId(BrowserContract.Bookmarks.CONTENT_URI, id),
values, null, null);
}
- updateView();
}
private void displayRemoveBookmarkDialog(final int position) {
@@ -436,15 +437,19 @@
// delete the bookmark
Cursor cursor = (Cursor) mAdapter.getItem(position);
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.getText(R.string.delete_bookmark_warning).toString().replace(
- "%s", cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE)))
+ .setMessage(context.getString(R.string.delete_bookmark_warning,
+ cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE)))
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
- deleteBookmark(position);
+ resolver.delete(uri, null, null);
}
})
.setNegativeButton(R.string.cancel, null)
@@ -467,16 +472,8 @@
*/
public void deleteBookmark(int position) {
Cursor cursor = (Cursor) mAdapter.getItem(position);
- String url = cursor.getString(BookmarksLoader.COLUMN_INDEX_URL);
- String title = cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE);
- Bookmarks.removeFromBookmarks(null, getActivity().getContentResolver(), url, title);
- updateView();
+ long id = cursor.getLong(BookmarksLoader.COLUMN_INDEX_ID);
+ Uri uri = ContentUris.withAppendedId(BrowserContract.Bookmarks.CONTENT_URI, id);
+ getActivity().getContentResolver().delete(uri, null, null);
}
-
- private void updateView() {
- BookmarksLoader loader =
- (BookmarksLoader) (Loader)(getLoaderManager().getLoader(LOADER_BOOKMARKS));
- loader.forceLoad();
- }
-
}