new bookmark screen part 2
specs here: https://docs.google.com/a/google.com/present/edit?id=0ARMpWryWB2oaY2RkbmZwdnBfODc0Y2diYnBoNDc&hl=en
moved tabs to top
added bread crumbs view for folder hierarchy
changed thumbnail sizes for xlarge screens
Change-Id: I3035f299b343f9aa1ec0dd41772e5594cd6b21f5
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index be6f8f8..fdd6c87 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -40,31 +40,26 @@
import android.provider.BrowserContract;
import android.provider.BrowserContract.Accounts;
import android.text.TextUtils;
-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.webkit.WebIconDatabase.IconListener;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.Button;
import android.widget.GridView;
import android.widget.Toast;
-import java.util.Stack;
-
/**
* View showing the user's bookmarks in the browser.
*/
public class BrowserBookmarksPage extends Fragment implements View.OnCreateContextMenuListener,
- LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener, IconListener, OnClickListener,
+ LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener, IconListener,
OnItemSelectedListener {
static final int BOOKMARKS_SAVE = 1;
@@ -91,14 +86,15 @@
boolean mCanceled = false;
boolean mCreateShortcut;
View mEmptyView;
- View mContentView;
- Stack<Pair<String, Uri>> mFolderStack = new Stack<Pair<String, Uri>>();
- Button mUpButton;
- static BrowserBookmarksPage newInstance(BookmarksHistoryCallbacks cb, Bundle args) {
+ BreadCrumbView mCrumbs;
+
+ static BrowserBookmarksPage newInstance(BookmarksHistoryCallbacks cb,
+ BreadCrumbView crumbs, Bundle args) {
BrowserBookmarksPage bbp = new BrowserBookmarksPage();
bbp.mCallbacks = cb;
bbp.setArguments(args);
+ bbp.mCrumbs = crumbs;
return bbp;
}
@@ -112,7 +108,14 @@
accountType = args.getString(BookmarksLoader.ARG_ACCOUNT_TYPE);
accountName = args.getString(BookmarksLoader.ARG_ACCOUNT_NAME);
}
- return new BookmarksLoader(getActivity(), accountType, accountName);
+ BookmarksLoader bl = new BookmarksLoader(getActivity(), accountType, accountName);
+ if (mCrumbs != null) {
+ Uri uri = (Uri) mCrumbs.getTopData();
+ if (uri != null) {
+ bl.setUri(uri);
+ }
+ }
+ return bl;
}
case LOADER_ACCOUNTS_THEN_BOOKMARKS: {
return new CursorLoader(getActivity(), Accounts.CONTENT_URI,
@@ -136,23 +139,8 @@
mGrid.setVisibility(View.VISIBLE);
}
- // Fill in the "up" button if needed
- BookmarksLoader bl = (BookmarksLoader) loader;
- String path = bl.getUri().getPath();
- boolean rootFolder =
- BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER.getPath().equals(path);
- if (rootFolder) {
- mUpButton.setText(R.string.defaultBookmarksUpButton);
- mUpButton.setEnabled(false);
- } else {
- mUpButton.setText(mFolderStack.peek().first);
- mUpButton.setEnabled(true);
- }
- mUpButton.setVisibility(View.VISIBLE);
-
// Give the new data to the adapter
mAdapter.changeCursor(cursor);
-
break;
}
@@ -218,15 +206,34 @@
}
}
- @Override
- public void onClick(View view) {
- if (view == mUpButton) {
- Pair<String, Uri> pair = mFolderStack.pop();
- BookmarksLoader loader =
- (BookmarksLoader) ((Loader) getLoaderManager().getLoader(LOADER_BOOKMARKS));
- loader.setUri(pair.second);
- loader.forceLoad();
+ long getFolderId() {
+ LoaderManager manager = getLoaderManager();
+ BookmarksLoader loader =
+ (BookmarksLoader) ((Loader)(manager.getLoader(LOADER_BOOKMARKS)));
+
+ Uri uri = loader.getUri();
+ if (uri != null) {
+ try {
+ return ContentUris.parseId(uri);
+ } catch (NumberFormatException nfx) {
+ return -1;
+ }
}
+ return -1;
+ }
+
+ public void onFolderChange(int level, Object data) {
+ Uri uri = (Uri) data;
+ if (uri == null) {
+ // top level
+ uri = BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER;
+ }
+ LoaderManager manager = getLoaderManager();
+ BookmarksLoader loader =
+ (BookmarksLoader) ((Loader) manager.getLoader(LOADER_BOOKMARKS));
+ loader.setUri(uri);
+ loader.forceLoad();
+
}
@Override
@@ -358,7 +365,6 @@
View root = inflater.inflate(R.layout.bookmarks, container, false);
mEmptyView = root.findViewById(android.R.id.empty);
- mContentView = root.findViewById(android.R.id.content);
mGrid = (GridView) root.findViewById(R.id.grid);
mGrid.setOnItemClickListener(this);
@@ -367,11 +373,6 @@
mGrid.setOnCreateContextMenuListener(this);
}
- mUpButton = (Button) root.findViewById(R.id.up);
- mUpButton.setEnabled(false);
- mUpButton.setOnClickListener(this);
- mUpButton.setVisibility(View.GONE);
-
mAdapter = new BrowserBookmarksAdapter(getActivity());
mGrid.setAdapter(mAdapter);
@@ -428,19 +429,16 @@
if (!isFolder) {
mCallbacks.onUrlSelected(getUrl(position), false);
} else {
- String title;
- if (mFolderStack.size() != 0) {
- title = cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE);
- } else {
- // TODO localize
- title = "Bookmarks";
- }
+ String title = cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE);
LoaderManager manager = getLoaderManager();
BookmarksLoader loader =
(BookmarksLoader) ((Loader) manager.getLoader(LOADER_BOOKMARKS));
- mFolderStack.push(new Pair(title, loader.getUri()));
Uri uri = ContentUris.withAppendedId(
BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER, id);
+ if (mCrumbs != null) {
+ // update crumbs
+ mCrumbs.pushView(title, uri);
+ }
loader.setUri(uri);
loader.forceLoad();
}
@@ -610,4 +608,5 @@
Context.CLIPBOARD_SERVICE);
cm.setPrimaryClip(ClipData.newRawUri(null, null, Uri.parse(text.toString())));
}
+
}