summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/layout/bookmark_list.xml13
-rw-r--r--res/layout/bookmarks.xml11
-rw-r--r--src/com/android/browser/BrowserBookmarksAdapter.java4
-rw-r--r--src/com/android/browser/BrowserBookmarksPage.java94
-rw-r--r--src/com/android/browser/view/BookmarkExpandableView.java (renamed from src/com/android/browser/view/BookmarkExpandableGridView.java)62
5 files changed, 73 insertions, 111 deletions
diff --git a/res/layout/bookmark_list.xml b/res/layout/bookmark_list.xml
index 7413ca83..4425a26c 100644
--- a/res/layout/bookmark_list.xml
+++ b/res/layout/bookmark_list.xml
@@ -14,29 +14,30 @@
limitations under the License.
-->
-<LinearLayout
+<com.android.browser.view.BookmarkContainer
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="@dimen/widgetItemMinHeight"
- android:orientation="horizontal"
- android:paddingLeft="16dip">
+ android:paddingLeft="16dip"
+ android:background="@drawable/bookmark_thumb_selector">
<ImageView
android:id="@+id/favicon"
android:layout_height="32dip"
android:layout_width="32dip"
- android:layout_gravity="center_vertical"
+ android:layout_centerVertical="true"
android:background="@drawable/bookmark_list_favicon_bg"
android:scaleType="fitXY" />
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
+ android:layout_centerVertical="true"
+ android:layout_toRightOf="@id/favicon"
android:textAppearance="?android:attr/textAppearanceMedium"
android:paddingLeft="16dip"
android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="marquee"/>
-</LinearLayout>
+</com.android.browser.view.BookmarkContainer>
diff --git a/res/layout/bookmarks.xml b/res/layout/bookmarks.xml
index 4a13c6f7..e02e2ff9 100644
--- a/res/layout/bookmarks.xml
+++ b/res/layout/bookmarks.xml
@@ -31,7 +31,7 @@
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
- <com.android.browser.view.BookmarkExpandableGridView
+ <com.android.browser.view.BookmarkExpandableView
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -39,15 +39,6 @@
android:childDivider="@android:color/transparent"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
- <ListView
- android:id="@+id/list"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:listSelector="@drawable/bookmark_thumb_selector"
- android:drawSelectorOnTop="true"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:visibility="gone"/>
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index 16bcda5a..b3f8d985 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -124,6 +124,10 @@ public class BrowserBookmarksAdapter extends CursorAdapter {
mCurrentView = view;
}
+ public int getViewMode() {
+ return mCurrentView;
+ }
+
@Override
public Cursor getItem(int position) {
return (Cursor) super.getItem(position);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index f2f7de3b..b6a50daf 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -49,19 +49,17 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.webkit.WebIconDatabase.IconListener;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.ListView;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.Toast;
import com.android.browser.BookmarkDragHandler.BookmarkDragController;
import com.android.browser.BookmarkDragHandler.BookmarkDragState;
-import com.android.browser.view.BookmarkExpandableGridView;
-import com.android.browser.view.BookmarkExpandableGridView.BookmarkContextMenuInfo;
+import com.android.browser.view.BookmarkExpandableView;
+import com.android.browser.view.BookmarkExpandableView.BookmarkContextMenuInfo;
import java.util.HashMap;
@@ -76,8 +74,8 @@ interface BookmarksPageCallbacks {
* View showing the user's bookmarks in the browser.
*/
public class BrowserBookmarksPage extends Fragment implements View.OnCreateContextMenuListener,
- LoaderManager.LoaderCallbacks<Cursor>, IconListener,
- BreadCrumbView.Controller, OnMenuItemClickListener, OnChildClickListener {
+ LoaderManager.LoaderCallbacks<Cursor>, BreadCrumbView.Controller,
+ OnMenuItemClickListener, OnChildClickListener {
public static class ExtraDragState {
public int childPosition;
@@ -94,14 +92,13 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
static final String ACCOUNT_TYPE = "account_type";
static final String ACCOUNT_NAME = "account_name";
- static final int VIEW_THUMBNAILS = 1;
- static final int VIEW_LIST = 2;
+ public static final int VIEW_THUMBNAILS = 1;
+ public static final int VIEW_LIST = 2;
static final String PREF_SELECTED_VIEW = "bookmarks_view";
BookmarksPageCallbacks mCallbacks;
View mRoot;
- BookmarkExpandableGridView mGrid;
- ListView mList;
+ BookmarkExpandableView mGrid;
boolean mDisableNewWindow;
boolean mEnableContextMenu = true;
View mEmptyView;
@@ -167,7 +164,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
@Override
public void onLoaderReset(Loader<Cursor> loader) {
- // TODO: Figure out what to do here (if anything?)
}
@Override
@@ -326,8 +322,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getActivity());
mCurrentView = prefs.getInt(PREF_SELECTED_VIEW, getDefaultView());
- // TODO: Support list view
- mCurrentView = VIEW_THUMBNAILS;
Bundle args = getArguments();
mDisableNewWindow = args == null ? false : args.getBoolean(EXTRA_DISABLE_WINDOW, false);
@@ -341,12 +335,10 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
mRoot = inflater.inflate(R.layout.bookmarks, container, false);
mEmptyView = mRoot.findViewById(android.R.id.empty);
- mGrid = (BookmarkExpandableGridView) mRoot.findViewById(R.id.grid);
+ mGrid = (BookmarkExpandableView) mRoot.findViewById(R.id.grid);
mGrid.setOnChildClickListener(this);
mGrid.setColumnWidthFromLayout(R.layout.bookmark_thumbnail);
mGrid.setBreadcrumbController(this);
- mList = (ListView) mRoot.findViewById(R.id.list);
- // TODO: mList.setOnItemClickListener(this);
setEnableContextMenu(mEnableContextMenu);
mDragHandler = new BookmarkDragHandler(getActivity(), mDragController,
mGrid.getDragAdapter());
@@ -355,9 +347,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
LoaderManager lm = getLoaderManager();
lm.restartLoader(LOADER_ACCOUNTS, null, this);
- // Add our own listener in case there are favicons that have yet to be loaded.
- CombinedBookmarkHistoryView.getIconListenerSet().addListener(this);
-
return mRoot;
}
@@ -378,34 +367,14 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
lm.destroyLoader(id);
}
mBookmarkAdapters.clear();
-
- CombinedBookmarkHistoryView.getIconListenerSet().removeListener(this);
- }
-
- @Override
- public void onReceivedIcon(String url, Bitmap icon) {
- // A new favicon has been loaded, so let anything attached to the adapter know about it
- // so new icons will be loaded.
- // TODO: Notify all of data set changed
- // TODO: Wait, is this even needed? Won't this trigger a DB change anyway?
}
private BrowserBookmarksAdapter getChildAdapter(int groupPosition) {
- if (mCurrentView == VIEW_THUMBNAILS) {
- return mGrid.getChildAdapter(groupPosition);
- } else {
- // TODO: Support expandable list
- return null;
- }
+ return mGrid.getChildAdapter(groupPosition);
}
private BreadCrumbView getBreadCrumbs(int groupPosition) {
- if (mCurrentView == VIEW_THUMBNAILS) {
- return mGrid.getBreadCrumbs(groupPosition);
- } else {
- // TODO: Support expandable list
- return null;
- }
+ return mGrid.getBreadCrumbs(groupPosition);
}
@Override
@@ -566,11 +535,10 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
}
void selectView(int view) {
- // TODO: Support list view
- view = mCurrentView;
if (view == mCurrentView) {
return;
}
+ mCurrentView = view;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
Editor edit = prefs.edit();
edit.putInt(PREF_SELECTED_VIEW, mCurrentView);
@@ -578,31 +546,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
if (mEmptyView.getVisibility() == View.VISIBLE) {
return;
}
- setupBookmarkView();
- }
-
- private void setupBookmarkView() {
- // TODO: Support list view
-// mAdapter.selectView(mCurrentView);
-// switch (mCurrentView) {
-// case VIEW_THUMBNAILS:
-// mList.setAdapter(null);
-// SharedPreferences prefs = PreferenceManager
-// .getDefaultSharedPreferences(getActivity());
-// String accountName = prefs.getString(PREF_ACCOUNT_NAME, null);
-// mGrid.addAccount(accountName, mAdapter);
-// mGrid.setVisibility(View.VISIBLE);
-// mList.setVisibility(View.GONE);
-// break;
-// case VIEW_LIST:
-// mGrid.clearAccounts();
-// if (mList.getAdapter() != mAdapter) {
-// mList.setAdapter(mAdapter);
-// }
-// mGrid.setVisibility(View.GONE);
-// mList.setVisibility(View.VISIBLE);
-// break;
-// }
+ mGrid.selectView(mCurrentView);
}
/**
@@ -662,14 +606,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
mGrid.setLongClickable(false);
}
}
- if (mList != null) {
- if (mEnableContextMenu) {
- registerForContextMenu(mList);
- } else {
- unregisterForContextMenu(mList);
- mList.setLongClickable(false);
- }
- }
}
private BookmarkDragController mDragController = new BookmarkDragController() {
@@ -702,11 +638,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte
@Override
public void actionItemClicked(View v, BookmarkDragState state) {
if (v.getId() == R.id.info) {
- if (mCurrentView == VIEW_THUMBNAILS) {
- mGrid.showContextMenuForState(state);
- } else {
- // TODO: Support expandable list
- }
+ mGrid.showContextMenuForState(state);
} else {
ExtraDragState extraState = (ExtraDragState) state.extraState;
handleContextItem(v.getId(), extraState.groupPosition,
diff --git a/src/com/android/browser/view/BookmarkExpandableGridView.java b/src/com/android/browser/view/BookmarkExpandableView.java
index c8811d1c..6f5fdaa9 100644
--- a/src/com/android/browser/view/BookmarkExpandableGridView.java
+++ b/src/com/android/browser/view/BookmarkExpandableView.java
@@ -38,6 +38,7 @@ import com.android.browser.BookmarkDragHandler.BookmarkDragAdapter;
import com.android.browser.BookmarkDragHandler.BookmarkDragState;
import com.android.browser.BreadCrumbView;
import com.android.browser.BrowserBookmarksAdapter;
+import com.android.browser.BrowserBookmarksPage;
import com.android.browser.BrowserBookmarksPage.ExtraDragState;
import com.android.browser.R;
import com.android.internal.view.menu.MenuBuilder;
@@ -45,7 +46,7 @@ import com.android.internal.view.menu.MenuBuilder;
import java.util.ArrayList;
import java.util.HashMap;
-public class BookmarkExpandableGridView extends ExpandableListView
+public class BookmarkExpandableView extends ExpandableListView
implements BreadCrumbView.Controller {
private BookmarkAccountAdapter mAdapter;
@@ -58,18 +59,19 @@ public class BookmarkExpandableGridView extends ExpandableListView
private BreadCrumbView.Controller mBreadcrumbController;
private BookmarkDragHandler mDragHandler;
private int mMaxColumnCount;
+ private int mCurrentView = -1;
- public BookmarkExpandableGridView(Context context) {
+ public BookmarkExpandableView(Context context) {
super(context);
init(context);
}
- public BookmarkExpandableGridView(Context context, AttributeSet attrs) {
+ public BookmarkExpandableView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
- public BookmarkExpandableGridView(
+ public BookmarkExpandableView(
Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
@@ -131,6 +133,9 @@ public class BookmarkExpandableGridView extends ExpandableListView
adapter.registerDataSetObserver(mAdapter.mObserver);
}
} else {
+ if (mCurrentView >= 0) {
+ adapter.selectView(mCurrentView);
+ }
mAdapter.mGroups.add(accountName);
mAdapter.mChildren.add(adapter);
adapter.registerDataSetObserver(mAdapter.mObserver);
@@ -224,7 +229,7 @@ public class BookmarkExpandableGridView extends ExpandableListView
extraState.childPosition,
extraState.groupPosition);
if (getParent() != null) {
- getParent().showContextMenuForChild(BookmarkExpandableGridView.this);
+ getParent().showContextMenuForChild(BookmarkExpandableView.this);
}
}
@@ -252,7 +257,7 @@ public class BookmarkExpandableGridView extends ExpandableListView
int childPosition = (Integer) v.getTag(R.id.child_position);
long id = (Long) v.getTag(R.id.child_id);
if (mOnChildClickListener != null) {
- mOnChildClickListener.onChildClick(BookmarkExpandableGridView.this,
+ mOnChildClickListener.onChildClick(BookmarkExpandableView.this,
v, groupPosition, childPosition, id);
}
}
@@ -289,6 +294,14 @@ public class BookmarkExpandableGridView extends ExpandableListView
return mAdapter.getBreadCrumbView(groupPosition);
}
+ public void selectView(int view) {
+ mCurrentView = view;
+ for (BrowserBookmarksAdapter adapter : mAdapter.mChildren) {
+ adapter.selectView(mCurrentView);
+ }
+ mAdapter.notifyDataSetChanged();
+ }
+
class BookmarkAccountAdapter extends BaseExpandableListAdapter {
ArrayList<BrowserBookmarksAdapter> mChildren;
ArrayList<String> mGroups;
@@ -339,17 +352,21 @@ public class BookmarkExpandableGridView extends ExpandableListView
if (convertView == null) {
convertView = mInflater.inflate(R.layout.bookmark_grid_row, parent, false);
}
+ BrowserBookmarksAdapter childAdapter = mChildren.get(groupPosition);
+ int rowCount = mRowCount;
+ if (childAdapter.getViewMode() == BrowserBookmarksPage.VIEW_LIST) {
+ rowCount = 1;
+ }
LinearLayout row = (LinearLayout) convertView;
- if (row.getChildCount() > mRowCount) {
- row.removeViews(mRowCount, row.getChildCount() - mRowCount);
+ if (row.getChildCount() > rowCount) {
+ row.removeViews(rowCount, row.getChildCount() - rowCount);
}
- for (int i = 0; i < mRowCount; i++) {
+ for (int i = 0; i < rowCount; i++) {
View cv = null;
if (row.getChildCount() > i) {
cv = row.getChildAt(i);
}
- int realChildPosition = (childPosition * mRowCount) + i;
- BrowserBookmarksAdapter childAdapter = mChildren.get(groupPosition);
+ int realChildPosition = (childPosition * rowCount) + i;
if (realChildPosition < childAdapter.getCount()) {
View v = childAdapter.getView(realChildPosition, cv, row);
v.setTag(R.id.group_position, groupPosition);
@@ -378,8 +395,11 @@ public class BookmarkExpandableGridView extends ExpandableListView
@Override
public int getChildrenCount(int groupPosition) {
- return (int) Math.ceil(
- mChildren.get(groupPosition).getCount() / (float)mRowCount);
+ BrowserBookmarksAdapter adapter = mChildren.get(groupPosition);
+ if (adapter.getViewMode() == BrowserBookmarksPage.VIEW_LIST) {
+ return adapter.getCount();
+ }
+ return (int) Math.ceil(adapter.getCount() / (float)mRowCount);
}
@Override
@@ -443,7 +463,7 @@ public class BookmarkExpandableGridView extends ExpandableListView
if (crumbs == null) {
crumbs = (BreadCrumbView)
mInflater.inflate(R.layout.bookmarks_header, null);
- crumbs.setController(BookmarkExpandableGridView.this);
+ crumbs.setController(BookmarkExpandableView.this);
crumbs.setUseBackButton(true);
crumbs.setMaxVisible(2);
String bookmarks = mContext.getString(R.string.bookmarks);
@@ -464,6 +484,20 @@ public class BookmarkExpandableGridView extends ExpandableListView
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
+
+ @Override
+ public int getChildTypeCount() {
+ return 2;
+ }
+
+ @Override
+ public int getChildType(int groupPosition, int childPosition) {
+ BrowserBookmarksAdapter adapter = mChildren.get(groupPosition);
+ if (adapter.getViewMode() == BrowserBookmarksPage.VIEW_LIST) {
+ return 1;
+ }
+ return 0;
+ }
}
public static class BookmarkContextMenuInfo implements ContextMenuInfo {