diff options
-rw-r--r-- | res/drawable/bookmark_list_favicon_bg.xml | 10 | ||||
-rw-r--r-- | res/drawable/btn_checkbox_star.xml | 22 | ||||
-rw-r--r-- | res/drawable/btn_imageview_star.xml (renamed from res/drawable/btn_star.xml) | 0 | ||||
-rw-r--r-- | res/layout/bookmarks.xml | 6 | ||||
-rw-r--r-- | res/layout/bookmarks_history.xml | 3 | ||||
-rw-r--r-- | res/layout/history.xml | 11 | ||||
-rw-r--r-- | res/layout/history_item.xml | 26 | ||||
-rw-r--r-- | res/layout/url_bar.xml | 2 | ||||
-rw-r--r-- | res/menu/history.xml | 4 | ||||
-rw-r--r-- | res/values/dimensions.xml | 2 | ||||
-rw-r--r-- | src/com/android/browser/BookmarkItem.java | 5 | ||||
-rw-r--r-- | src/com/android/browser/BookmarkUtils.java | 21 | ||||
-rw-r--r-- | src/com/android/browser/BrowserBookmarksAdapter.java | 11 | ||||
-rw-r--r-- | src/com/android/browser/BrowserBookmarksPage.java | 20 | ||||
-rw-r--r-- | src/com/android/browser/BrowserHistoryPage.java | 193 | ||||
-rw-r--r-- | src/com/android/browser/CombinedBookmarkHistoryView.java | 13 |
16 files changed, 266 insertions, 83 deletions
diff --git a/res/drawable/bookmark_list_favicon_bg.xml b/res/drawable/bookmark_list_favicon_bg.xml index 3d362e4..ceb545d 100644 --- a/res/drawable/bookmark_list_favicon_bg.xml +++ b/res/drawable/bookmark_list_favicon_bg.xml @@ -18,9 +18,9 @@ android:shape="rectangle"> <solid android:color="@color/bookmarkListFaviconBackground" /> <padding - android:left="5dip" - android:right="5dip" - android:top="5dip" - android:bottom="5dip" /> - <corners android:radius="3dip" /> + android:left="@dimen/list_favicon_padding" + android:right="@dimen/list_favicon_padding" + android:top="@dimen/list_favicon_padding" + android:bottom="@dimen/list_favicon_padding" /> + <corners android:radius="@dimen/list_favicon_corner_radius" /> </shape> diff --git a/res/drawable/btn_checkbox_star.xml b/res/drawable/btn_checkbox_star.xml new file mode 100644 index 0000000..9635dad --- /dev/null +++ b/res/drawable/btn_checkbox_star.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_checked="true" + android:drawable="@drawable/ic_favorite_on_normal" /> + <item android:state_checked="false" + android:drawable="@drawable/ic_favorite_off_normal" /> +</selector> diff --git a/res/drawable/btn_star.xml b/res/drawable/btn_imageview_star.xml index 4c3d145..4c3d145 100644 --- a/res/drawable/btn_star.xml +++ b/res/drawable/btn_imageview_star.xml diff --git a/res/layout/bookmarks.xml b/res/layout/bookmarks.xml index a4a4e04..81327e4 100644 --- a/res/layout/bookmarks.xml +++ b/res/layout/bookmarks.xml @@ -16,9 +16,13 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/bookmarks" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" + android:paddingTop="@dimen/combo_paddingTop" + android:paddingLeft="@dimen/combo_paddingLeftRight" + android:paddingRight="@dimen/combo_paddingLeftRight"> <FrameLayout android:id="@+id/header_container" diff --git a/res/layout/bookmarks_history.xml b/res/layout/bookmarks_history.xml index 9961d6f..5622917 100644 --- a/res/layout/bookmarks_history.xml +++ b/res/layout/bookmarks_history.xml @@ -18,7 +18,4 @@ android:id="@+id/fragment" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingTop="@dimen/combo_paddingTop" - android:paddingLeft="@dimen/combo_paddingLeftRight" - android:paddingRight="@dimen/combo_paddingLeftRight" android:background="@drawable/bg_browser" /> diff --git a/res/layout/history.xml b/res/layout/history.xml index f6e844a..f7d2c7c 100644 --- a/res/layout/history.xml +++ b/res/layout/history.xml @@ -19,20 +19,19 @@ android:layout_height="match_parent" > - <ExpandableListView android:id="@android:id/list" - android:layout_width="match_parent" + <ViewStub + android:id="@+id/pref_stub" android:layout_height="match_parent" - android:drawSelectorOnTop="false" - /> + android:layout_width="match_parent" + android:inflatedId="@+id/history" /> <TextView android:id="@android:id/empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:textAppearance="?android:attr/textAppearanceLarge" android:text="@string/empty_history" android:visibility="gone" /> -</FrameLayout>
\ No newline at end of file +</FrameLayout> diff --git a/res/layout/history_item.xml b/res/layout/history_item.xml index a0b031a..3b3dd7a 100644 --- a/res/layout/history_item.xml +++ b/res/layout/history_item.xml @@ -19,22 +19,22 @@ android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:orientation="horizontal" - android:paddingLeft="6dip" - android:gravity="center_vertical" + android:paddingLeft="20dip" > <ImageView android:id="@+id/favicon" - android:layout_width="20dip" - android:layout_height="20dip" - android:layout_marginLeft="5dip" - android:layout_marginRight="11dip" - android:padding="2dip" - android:background="@drawable/fav_icn_background" + android:layout_width="32dip" + android:layout_height="32dip" + android:layout_gravity="center_vertical" + android:scaleType="fitXY" + android:background="@drawable/bookmark_list_favicon_bg" android:src="@drawable/app_web_browser_sm" /> <LinearLayout android:layout_width="0dip" android:layout_weight="1" android:layout_height="wrap_content" android:orientation="vertical" + android:paddingLeft="16dip" + android:layout_gravity="center_vertical" > <TextView android:id="@+id/title" android:textAppearance="?android:attr/textAppearanceMedium" @@ -55,9 +55,13 @@ </LinearLayout> <CheckBox android:id="@+id/star" android:layout_width="wrap_content" - android:layout_height="fill_parent" - android:paddingRight="6dip" + android:layout_height="wrap_content" + android:paddingTop="16dip" + android:paddingBottom="16dip" + android:paddingRight="20dip" + android:paddingLeft="16dip" android:focusable="false" - android:button="@android:drawable/btn_star" + android:button="@drawable/btn_checkbox_star" + android:layout_gravity="center_vertical" /> </LinearLayout> diff --git a/res/layout/url_bar.xml b/res/layout/url_bar.xml index 884267e..c619e64 100644 --- a/res/layout/url_bar.xml +++ b/res/layout/url_bar.xml @@ -83,7 +83,7 @@ style="@style/Suggestions" /> <ImageView android:id="@+id/star" - android:src="@drawable/btn_star" + android:src="@drawable/btn_imageview_star" android:layout_width="wrap_content" android:layout_height="match_parent" style="@style/HoloButton" /> diff --git a/res/menu/history.xml b/res/menu/history.xml index 3bb30a0..f2ab299 100644 --- a/res/menu/history.xml +++ b/res/menu/history.xml @@ -18,4 +18,8 @@ <item android:id="@+id/clear_history_menu_id" android:title="@string/clear_history" android:icon="@android:drawable/ic_menu_close_clear_cancel" /> + <item android:id="@+id/preferences_menu_id" + android:title="@string/menu_preferences" + android:icon="@drawable/ic_menu_settings" + android:alphabeticShortcut="p" /> </menu> diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml index b78b461..1e90c34 100644 --- a/res/values/dimensions.xml +++ b/res/values/dimensions.xml @@ -40,4 +40,6 @@ <dimen name="mv_border_width">3dp</dimen> <dimen name="tab_padding_top">12dp</dimen> <dimen name="tab_first_padding_left">12dp</dimen> + <dimen name="list_favicon_padding">5dip</dimen> + <dimen name="list_favicon_corner_radius">3dip</dimen> </resources> diff --git a/src/com/android/browser/BookmarkItem.java b/src/com/android/browser/BookmarkItem.java index fbb362e..4e60073 100644 --- a/src/com/android/browser/BookmarkItem.java +++ b/src/com/android/browser/BookmarkItem.java @@ -18,6 +18,7 @@ package com.android.browser; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; @@ -94,6 +95,10 @@ class BookmarkItem extends LinearLayout { } } + void setFaviconBackground(Drawable d) { + mImageView.setBackgroundDrawable(d); + } + /** * Set the new name for the bookmark item. * diff --git a/src/com/android/browser/BookmarkUtils.java b/src/com/android/browser/BookmarkUtils.java index 27d3310..379b22d 100644 --- a/src/com/android/browser/BookmarkUtils.java +++ b/src/com/android/browser/BookmarkUtils.java @@ -22,6 +22,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; @@ -32,12 +33,13 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.PaintDrawable; import android.net.Uri; import android.os.Message; import android.preference.PreferenceManager; import android.provider.Browser; import android.provider.BrowserContract; -import android.text.TextUtils; public class BookmarkUtils { private final static String LOGTAG = "BookmarkUtils"; @@ -64,13 +66,16 @@ public class BookmarkUtils { return createIcon(context, touchIcon, favicon, type, iconDimension); } - public static Bitmap createListWidgetIcon(Context context, Bitmap touchIcon, - Bitmap favicon) { - int iconDimension = context.getResources().getDimensionPixelSize( - R.dimen.bookmark_widget_favicon_size); - - return createIcon(context, touchIcon, favicon, - BookmarkIconType.ICON_WIDGET, iconDimension); + static Drawable createListFaviconBackground(Context context) { + PaintDrawable faviconBackground = new PaintDrawable(); + Resources res = context.getResources(); + int padding = res.getDimensionPixelSize(R.dimen.list_favicon_padding); + faviconBackground.setPadding(padding, padding, padding, padding); + faviconBackground.getPaint().setColor(context.getResources() + .getColor(R.color.bookmarkListFaviconBackground)); + faviconBackground.setCornerRadius( + res.getDimension(R.dimen.list_favicon_corner_radius)); + return faviconBackground; } private static Bitmap createIcon(Context context, Bitmap touchIcon, diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java index 26ba62c..ccd2fbc 100644 --- a/src/com/android/browser/BrowserBookmarksAdapter.java +++ b/src/com/android/browser/BrowserBookmarksAdapter.java @@ -20,7 +20,7 @@ import android.content.Context; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.graphics.drawable.PaintDrawable; +import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -31,7 +31,7 @@ import android.widget.TextView; class BrowserBookmarksAdapter extends CursorAdapter { LayoutInflater mInflater; int mCurrentView; - PaintDrawable mFaviconBackground; + Drawable mFaviconBackground; /** * Create a new BrowserBookmarksAdapter. @@ -43,12 +43,7 @@ class BrowserBookmarksAdapter extends CursorAdapter { mInflater = LayoutInflater.from(context); selectView(defaultView); float density = context.getResources().getDisplayMetrics().density; - mFaviconBackground = new PaintDrawable(); - int padding = (int) (5 * density); - mFaviconBackground.setPadding(padding, padding, padding, padding); - mFaviconBackground.getPaint().setColor(context.getResources() - .getColor(R.color.bookmarkListFaviconBackground)); - mFaviconBackground.setCornerRadius(3 * density); + mFaviconBackground = BookmarkUtils.createListFaviconBackground(context); } @Override diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java index dfb0b77..cbaad2b 100644 --- a/src/com/android/browser/BrowserBookmarksPage.java +++ b/src/com/android/browser/BrowserBookmarksPage.java @@ -19,16 +19,13 @@ package com.android.browser; import com.android.browser.BreadCrumbView.Crumb; import android.app.Activity; -import android.app.AlertDialog; import android.app.Fragment; import android.app.LoaderManager; import android.content.ClipData; import android.content.ClipboardManager; -import android.content.ContentResolver; import android.content.ContentUris; import android.content.Context; import android.content.CursorLoader; -import android.content.DialogInterface; import android.content.Intent; import android.content.Loader; import android.content.SharedPreferences; @@ -97,6 +94,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte static final String PREF_SELECTED_VIEW = "bookmarks_view"; BookmarksPageCallbacks mCallbacks; + View mRoot; GridView mGrid; ListView mList; BrowserBookmarksAdapter mAdapter; @@ -417,20 +415,20 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte Bundle savedInstanceState) { Context context = getActivity(); - View root = inflater.inflate(R.layout.bookmarks, container, false); - mEmptyView = root.findViewById(android.R.id.empty); + mRoot = inflater.inflate(R.layout.bookmarks, container, false); + mEmptyView = mRoot.findViewById(android.R.id.empty); - mGrid = (GridView) root.findViewById(R.id.grid); + mGrid = (GridView) mRoot.findViewById(R.id.grid); mGrid.setOnItemClickListener(this); mGrid.setColumnWidth(Controller.getDesiredThumbnailWidth(getActivity())); - mList = (ListView) root.findViewById(R.id.list); + mList = (ListView) mRoot.findViewById(R.id.list); mList.setOnItemClickListener(this); setEnableContextMenu(mEnableContextMenu); // Prep the header ViewGroup hc = mHeaderContainer; if (hc == null) { - hc = (ViewGroup) root.findViewById(R.id.header_container); + hc = (ViewGroup) mRoot.findViewById(R.id.header_container); hc.setVisibility(View.VISIBLE); } mHeader = inflater.inflate(R.layout.bookmarks_header, hc, false); @@ -471,7 +469,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte // Add our own listener in case there are favicons that have yet to be loaded. CombinedBookmarkHistoryView.getIconListenerSet().addListener(this); - return root; + return mRoot; } @Override @@ -669,6 +667,10 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte Resources res = getActivity().getResources(); int horizontalSpacing = (int) res.getDimension(R.dimen.combo_horizontalSpacing); mGrid.setHorizontalSpacing(horizontalSpacing); + int paddingLeftRight = (int) res.getDimension(R.dimen.combo_paddingLeftRight); + int paddingTop = (int) res.getDimension(R.dimen.combo_paddingTop); + mRoot.setPadding(paddingLeftRight, paddingTop, + paddingLeftRight, 0); } @Override diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java index 87649d4..f3c7a7f 100644 --- a/src/com/android/browser/BrowserHistoryPage.java +++ b/src/com/android/browser/BrowserHistoryPage.java @@ -20,6 +20,7 @@ import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.Fragment; +import android.app.FragmentBreadCrumbs; import android.app.LoaderManager.LoaderCallbacks; import android.content.ClipboardManager; import android.content.ContentResolver; @@ -32,8 +33,10 @@ import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.database.Cursor; +import android.database.DataSetObserver; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; @@ -49,10 +52,15 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.view.ViewStub; import android.webkit.WebIconDatabase.IconListener; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.BaseAdapter; import android.widget.ExpandableListView; import android.widget.ExpandableListView.ExpandableListContextMenuInfo; import android.widget.ExpandableListView.OnChildClickListener; +import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; @@ -67,12 +75,14 @@ public class BrowserHistoryPage extends Fragment static final int LOADER_MOST_VISITED = 2; BookmarksHistoryCallbacks mCallbacks; - ExpandableListView mList; - View mEmptyView; HistoryAdapter mAdapter; + HistoryChildWrapper mChildWrapper; boolean mDisableNewWindow; HistoryItem mContextHeader; String mMostVisitsLimit; + ListView mGroupList, mChildList; + private ViewGroup mPrefsContainer; + private FragmentBreadCrumbs mFragmentBreadCrumbs; // Implementation of WebIconDatabase.IconListener class IconReceiver implements IconListener { @@ -84,6 +94,7 @@ public class BrowserHistoryPage extends Fragment // Instance of IconReceiver final IconReceiver mIconReceiver = new IconReceiver(); + private View mRoot; static interface HistoryQuery { static final String[] PROJECTION = new String[] { @@ -153,24 +164,48 @@ public class BrowserHistoryPage extends Fragment } } + void selectGroup(int position) { + mGroupItemClickListener.onItemClick(null, + mAdapter.getGroupView(position, false, null, null), + position, position); + } + + void checkIfEmpty() { + if (mAdapter.mMostVisited != null && mAdapter.mHistoryCursor != null) { + // Both cursors have loaded - check to see if we have data + if (mAdapter.isEmpty()) { + mRoot.findViewById(R.id.history).setVisibility(View.GONE); + mRoot.findViewById(android.R.id.empty).setVisibility(View.VISIBLE); + } else { + mRoot.findViewById(R.id.history).setVisibility(View.VISIBLE); + mRoot.findViewById(android.R.id.empty).setVisibility(View.GONE); + } + } + } + @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { switch (loader.getId()) { case LOADER_HISTORY: { mAdapter.changeCursor(data); + if (mAdapter.getGroupCount() > 0) { + selectGroup(0); + } - // Add an empty view late, so it does not claim an empty - // history before the adapter is present - mList.setEmptyView(mEmptyView); + checkIfEmpty(); break; } case LOADER_MOST_VISITED: { + int preCount = mAdapter.getGroupCount(); mAdapter.changeMostVisitedCursor(data); + if (mAdapter.mHistoryCursor != null + && preCount == 0 + && mAdapter.getGroupCount() > 0) { + selectGroup(0); + } - // Add an empty view late, so it does not claim an empty - // history before the adapter is present - mList.setEmptyView(mEmptyView); + checkIfEmpty(); break; } @@ -180,6 +215,7 @@ public class BrowserHistoryPage extends Fragment } } + @Override public void onLoaderReset(Loader<Cursor> loader) { } @@ -198,25 +234,44 @@ public class BrowserHistoryPage extends Fragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View root = inflater.inflate(R.layout.history, container, false); - mList = (ExpandableListView) root.findViewById(android.R.id.list); - mList.setCacheColorHint(0); - mList.setOnCreateContextMenuListener(this); - mList.setOnChildClickListener(this); + mRoot = inflater.inflate(R.layout.history, container, false); + ViewStub stub = (ViewStub) mRoot.findViewById(R.id.pref_stub); + stub.setLayoutResource(com.android.internal.R.layout.preference_list_content); + stub.inflate(); + mGroupList = (ListView) mRoot.findViewById(android.R.id.list); + mPrefsContainer = (ViewGroup) mRoot.findViewById(com.android.internal.R.id.prefs_frame); + mFragmentBreadCrumbs = (FragmentBreadCrumbs) mRoot.findViewById(android.R.id.title); + mFragmentBreadCrumbs.setMaxVisible(1); + mFragmentBreadCrumbs.setActivity(getActivity()); + mPrefsContainer.setVisibility(View.VISIBLE); mAdapter = new HistoryAdapter(getActivity()); - mList.setAdapter(mAdapter); - - mEmptyView = root.findViewById(android.R.id.empty); - - // Start the loader + mGroupList.setAdapter(new HistoryGroupWrapper(mAdapter)); + mGroupList.setOnItemClickListener(mGroupItemClickListener); + mChildWrapper = new HistoryChildWrapper(mAdapter); + mChildList = new ListView(getActivity()); + mChildList.setAdapter(mChildWrapper); + ViewGroup prefs = (ViewGroup) mRoot.findViewById(com.android.internal.R.id.prefs); + prefs.addView(mChildList); + + // Start the loaders getLoaderManager().restartLoader(LOADER_HISTORY, null, this); getLoaderManager().restartLoader(LOADER_MOST_VISITED, null, this); // Register to receive icons in case they haven't all been loaded. CombinedBookmarkHistoryView.getIconListenerSet().addListener(mIconReceiver); - return root; + return mRoot; } + private OnItemClickListener mGroupItemClickListener = new OnItemClickListener() { + @Override + public void onItemClick( + AdapterView<?> parent, View view, int position, long id) { + CharSequence title = ((TextView) view).getText(); + mFragmentBreadCrumbs.setTitle(title, title); + mChildWrapper.setSelectedGroup(position); + } + }; + @Override public void onDestroy() { super.onDestroy(); @@ -231,12 +286,6 @@ public class BrowserHistoryPage extends Fragment } @Override - public void onPrepareOptionsMenu(Menu menu) { - menu.findItem(R.id.clear_history_menu_id).setVisible( - mAdapter != null && !mAdapter.isEmpty()); - } - - @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.clear_history_menu_id: @@ -385,11 +434,101 @@ public class BrowserHistoryPage extends Fragment return false; } + private static abstract class HistoryWrapper extends BaseAdapter { + + protected HistoryAdapter mAdapter; + private DataSetObserver mObserver = new DataSetObserver() { + @Override + public void onChanged() { + super.onChanged(); + notifyDataSetChanged(); + } + + @Override + public void onInvalidated() { + super.onInvalidated(); + notifyDataSetInvalidated(); + } + }; + + public HistoryWrapper(HistoryAdapter adapter) { + mAdapter = adapter; + mAdapter.registerDataSetObserver(mObserver); + } + + } + private static class HistoryGroupWrapper extends HistoryWrapper { + + public HistoryGroupWrapper(HistoryAdapter adapter) { + super(adapter); + } + + @Override + public int getCount() { + return mAdapter.getGroupCount(); + } + + @Override + public Object getItem(int position) { + return null; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + return mAdapter.getGroupView(position, false, convertView, parent); + } + + } + + private static class HistoryChildWrapper extends HistoryWrapper { + + private int mSelectedGroup; + + public HistoryChildWrapper(HistoryAdapter adapter) { + super(adapter); + } + + void setSelectedGroup(int groupPosition) { + mSelectedGroup = groupPosition; + notifyDataSetChanged(); + } + + @Override + public int getCount() { + return mAdapter.getChildrenCount(mSelectedGroup); + } + + @Override + public Object getItem(int position) { + return null; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + return mAdapter.getChildView(mSelectedGroup, position, + false, convertView, parent); + } + + } + private class HistoryAdapter extends DateSortedExpandableListAdapter { + private Cursor mMostVisited, mHistoryCursor; + Drawable mFaviconBackground; HistoryAdapter(Context context) { super(context, HistoryQuery.INDEX_DATE_LAST_VISITED); + mFaviconBackground = BookmarkUtils.createListFaviconBackground(context); } @Override @@ -430,6 +569,9 @@ public class BrowserHistoryPage extends Fragment @Override public int getChildrenCount(int groupPosition) { if (groupPosition >= super.getGroupCount()) { + if (mMostVisited == null) { + return 0; + } return mMostVisited.getCount(); } return super.getChildrenCount(groupPosition); @@ -497,6 +639,7 @@ public class BrowserHistoryPage extends Fragment item.getPaddingTop(), item.getPaddingRight(), item.getPaddingBottom()); + item.setFaviconBackground(mFaviconBackground); } else { item = (HistoryItem) convertView; } diff --git a/src/com/android/browser/CombinedBookmarkHistoryView.java b/src/com/android/browser/CombinedBookmarkHistoryView.java index 5731c37..8b58d2e 100644 --- a/src/com/android/browser/CombinedBookmarkHistoryView.java +++ b/src/com/android/browser/CombinedBookmarkHistoryView.java @@ -174,12 +174,13 @@ public class CombinedBookmarkHistoryView extends LinearLayout @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - - Resources res = mContext.getResources(); - int paddingLeftRight = (int) res.getDimension(R.dimen.combo_paddingLeftRight); - int paddingTop = (int) res.getDimension(R.dimen.combo_paddingTop); - findViewById(R.id.fragment).setPadding(paddingLeftRight, paddingTop, - paddingLeftRight, 0); + if (mCurrentFragment == FRAGMENT_ID_HISTORY) { + // Warning, ugly hack below + // This is done because history uses orientation-specific padding + FragmentManager fm = mActivity.getFragmentManager(); + mHistory = BrowserHistoryPage.newInstance(mUiController, mHistory.getArguments()); + fm.openTransaction().replace(R.id.fragment, mHistory).commit(); + } } private BookmarksPageCallbacks mBookmarkCallbackWrapper = new BookmarksPageCallbacks() { |