diff options
-rw-r--r-- | res/layout/bookmark_list.xml | 13 | ||||
-rw-r--r-- | res/layout/bookmarks.xml | 11 | ||||
-rw-r--r-- | src/com/android/browser/BrowserBookmarksAdapter.java | 4 | ||||
-rw-r--r-- | src/com/android/browser/BrowserBookmarksPage.java | 94 | ||||
-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 { |