From 18bfc97e045346bf97fa200b6512ab8e695841d8 Mon Sep 17 00:00:00 2001 From: Shilpan Bhagat Date: Wed, 7 Aug 2013 00:11:31 -0700 Subject: [PATCH] Bug 894077: Layout for history panel for tablets [r=sriram] --- mobile/android/base/Makefile.in | 22 ++++++++- mobile/android/base/TabsPanel.java | 14 ++---- mobile/android/base/home/HistoryPage.java | 37 +++++++++----- mobile/android/base/home/LastTabsPage.java | 12 +++-- mobile/android/base/home/MostRecentPage.java | 12 +++-- mobile/android/base/home/MostVisitedPage.java | 5 +- .../home_history_tabs_indicator.xml | 48 +++++++++++++++++++ .../home_history_tabs_indicator.xml | 48 +++++++++++++++++++ .../home_history_list.xml | 20 ++++++++ .../home_history_page.xml | 24 ++++++++++ .../home_history_tabs_indicator.xml | 10 ++++ .../layout-xlarge-v11/home_history_list.xml | 20 ++++++++ .../layout-xlarge-v11/home_history_page.xml | 24 ++++++++++ .../home_history_tabs_indicator.xml | 10 ++++ ...t_with_title.xml => home_history_list.xml} | 3 +- .../layout/home_history_tabs_indicator.xml | 3 +- .../resources/layout/home_last_tabs_page.xml | 2 +- .../layout/home_most_recent_page.xml | 2 +- .../layout/home_most_visited_page.xml | 2 +- .../values-large-land-v11/dimens.xml | 10 ++++ .../values-large-land-v11/styles.xml | 14 ++++++ .../values-xlarge-land-v11/dimens.xml | 10 ++++ .../values-xlarge-land-v11/styles.xml | 14 ++++++ .../resources/values-xlarge-v11/dimens.xml | 1 + .../resources/values-xlarge-v11/styles.xml | 13 +++++ .../android/base/resources/values/attrs.xml | 6 +++ .../android/base/resources/values/dimens.xml | 7 +++ .../android/base/resources/values/styles.xml | 2 +- mobile/android/base/widget/IconTabWidget.java | 15 ++++-- 29 files changed, 368 insertions(+), 42 deletions(-) create mode 100644 mobile/android/base/resources/drawable-large-land-v11/home_history_tabs_indicator.xml create mode 100644 mobile/android/base/resources/drawable-xlarge-v11/home_history_tabs_indicator.xml create mode 100644 mobile/android/base/resources/layout-large-land-v11/home_history_list.xml create mode 100644 mobile/android/base/resources/layout-large-land-v11/home_history_page.xml create mode 100644 mobile/android/base/resources/layout-large-land-v11/home_history_tabs_indicator.xml create mode 100644 mobile/android/base/resources/layout-xlarge-v11/home_history_list.xml create mode 100644 mobile/android/base/resources/layout-xlarge-v11/home_history_page.xml create mode 100644 mobile/android/base/resources/layout-xlarge-v11/home_history_tabs_indicator.xml rename mobile/android/base/resources/layout/{home_list_with_title.xml => home_history_list.xml} (87%) create mode 100644 mobile/android/base/resources/values-large-land-v11/dimens.xml create mode 100644 mobile/android/base/resources/values-xlarge-land-v11/dimens.xml diff --git a/mobile/android/base/Makefile.in b/mobile/android/base/Makefile.in index 4a2984c67ad..5d9ad962921 100644 --- a/mobile/android/base/Makefile.in +++ b/mobile/android/base/Makefile.in @@ -473,7 +473,7 @@ RES_LAYOUT = \ res/layout/home_history_page.xml \ res/layout/home_history_tabs_indicator.xml \ res/layout/home_last_tabs_page.xml \ - res/layout/home_list_with_title.xml \ + res/layout/home_history_list.xml \ res/layout/home_most_recent_page.xml \ res/layout/home_most_visited_page.xml \ res/layout/home_search_item_row.xml \ @@ -523,6 +523,9 @@ RES_LAYOUT_LARGE_V11 = \ $(NULL) RES_LAYOUT_LARGE_LAND_V11 = \ + res/layout-large-land-v11/home_history_page.xml \ + res/layout-large-land-v11/home_history_tabs_indicator.xml \ + res/layout-large-land-v11/home_history_list.xml \ res/layout-large-land-v11/tabs_panel.xml \ res/layout-large-land-v11/tabs_panel_header.xml \ res/layout-large-land-v11/tabs_panel_footer.xml \ @@ -530,6 +533,9 @@ RES_LAYOUT_LARGE_LAND_V11 = \ RES_LAYOUT_XLARGE_V11 = \ res/layout-xlarge-v11/font_size_preference.xml \ + res/layout-xlarge-v11/home_history_page.xml \ + res/layout-xlarge-v11/home_history_tabs_indicator.xml \ + res/layout-xlarge-v11/home_history_list.xml \ res/layout-xlarge-v11/remote_tabs_child.xml \ res/layout-xlarge-v11/remote_tabs_group.xml \ $(NULL) @@ -569,6 +575,7 @@ RES_VALUES_LARGE_V11 = \ $(NULL) RES_VALUES_LARGE_LAND_V11 = \ + res/values-large-land-v11/dimens.xml \ res/values-large-land-v11/styles.xml \ $(NULL) @@ -579,6 +586,7 @@ RES_VALUES_XLARGE_V11 = \ $(NULL) RES_VALUES_XLARGE_LAND_V11 = \ + res/values-xlarge-land-v11/dimens.xml \ res/values-xlarge-land-v11/styles.xml \ $(NULL) @@ -993,6 +1001,10 @@ RES_DRAWABLE_XHDPI_V11 = \ res/drawable-xhdpi-v11/ic_status_logo.png \ $(NULL) +RES_DRAWABLE_LARGE_LAND_V11 = \ + res/drawable-large-land-v11/home_history_tabs_indicator.xml \ + $(NULL) + RES_DRAWABLE_LARGE_MDPI_V11 = \ res/drawable-large-mdpi-v11/arrow_popup_bg.9.png \ res/drawable-large-mdpi-v11/ic_menu_reload.png \ @@ -1014,6 +1026,10 @@ RES_DRAWABLE_LARGE_XHDPI_V11 = \ res/drawable-large-xhdpi-v11/menu.png \ $(NULL) +RES_DRAWABLE_XLARGE_V11 = \ + res/drawable-xlarge-v11/home_history_tabs_indicator.xml \ + $(NULL) + RES_DRAWABLE_XLARGE_MDPI_V11 = \ res/drawable-xlarge-mdpi-v11/ic_menu_bookmark_add.png \ res/drawable-xlarge-mdpi-v11/ic_menu_bookmark_remove.png \ @@ -1104,6 +1120,7 @@ RESOURCES = \ $(RES_DRAWABLE) \ $(RES_DRAWABLE_HDPI) \ $(RES_DRAWABLE_HDPI_V11) \ + $(RES_DRAWABLE_LARGE_LAND_V11) \ $(RES_DRAWABLE_LARGE_HDPI_V11) \ $(RES_DRAWABLE_LARGE_MDPI_V11) \ $(RES_DRAWABLE_LARGE_XHDPI_V11) \ @@ -1112,6 +1129,7 @@ RESOURCES = \ $(RES_DRAWABLE_MDPI_V11) \ $(RES_DRAWABLE_XHDPI) \ $(RES_DRAWABLE_XHDPI_V11) \ + $(RES_DRAWABLE_XLARGE_V11) \ $(RES_DRAWABLE_XLARGE_HDPI_V11) \ $(RES_DRAWABLE_XLARGE_MDPI_V11) \ $(RES_DRAWABLE_XLARGE_XHDPI_V11) \ @@ -1158,9 +1176,11 @@ RES_DIRS= \ res/drawable-mdpi-v11 \ res/drawable-hdpi-v11 \ res/drawable-xhdpi-v11 \ + res/drawable-large-land-v11 \ res/drawable-large-mdpi-v11 \ res/drawable-large-hdpi-v11 \ res/drawable-large-xhdpi-v11 \ + res/drawable-xlarge-v11 \ res/drawable-xlarge-mdpi-v11 \ res/drawable-xlarge-hdpi-v11 \ res/drawable-xlarge-xhdpi-v11 \ diff --git a/mobile/android/base/TabsPanel.java b/mobile/android/base/TabsPanel.java index a983af2e7d5..70976f268ee 100644 --- a/mobile/android/base/TabsPanel.java +++ b/mobile/android/base/TabsPanel.java @@ -105,19 +105,11 @@ public class TabsPanel extends LinearLayout } }); - ImageButton button; - Resources resources = getContext().getResources(); - mTabWidget = (IconTabWidget) findViewById(R.id.tab_widget); - button = mTabWidget.addTab(R.drawable.tabs_normal); - button.setContentDescription(resources.getString(R.string.tabs_normal)); - - button = mTabWidget.addTab(R.drawable.tabs_private); - button.setContentDescription(resources.getString(R.string.tabs_private)); - - button = mTabWidget.addTab(R.drawable.tabs_synced); - button.setContentDescription(resources.getString(R.string.tabs_synced)); + mTabWidget.addTab(R.drawable.tabs_normal, R.string.tabs_normal); + mTabWidget.addTab(R.drawable.tabs_private, R.string.tabs_private); + mTabWidget.addTab(R.drawable.tabs_synced, R.string.tabs_synced); mTabWidget.setTabSelectionListener(this); } diff --git a/mobile/android/base/home/HistoryPage.java b/mobile/android/base/home/HistoryPage.java index 8df09988df1..b0f94e99187 100644 --- a/mobile/android/base/home/HistoryPage.java +++ b/mobile/android/base/home/HistoryPage.java @@ -9,6 +9,7 @@ import org.mozilla.gecko.R; import org.mozilla.gecko.widget.IconTabWidget; import android.support.v4.app.Fragment; import android.content.Context; +import android.content.res.Configuration; import android.content.res.Resources; import android.os.Bundle; import android.view.LayoutInflater; @@ -24,6 +25,7 @@ public class HistoryPage extends HomeFragment private static final String LOGTAG = "GeckoHistoryPage"; private IconTabWidget mTabWidget; private int mSelectedTab; + private boolean initializeVisitedPage; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -36,20 +38,16 @@ public class HistoryPage extends HomeFragment mTabWidget = (IconTabWidget) view.findViewById(R.id.tab_icon_widget); - ImageButton button; - final Resources resources = view.getContext().getResources(); + mTabWidget.addTab(R.drawable.icon_most_visited, R.string.home_most_visited_title); + mTabWidget.addTab(R.drawable.icon_most_recent, R.string.home_most_recent_title); + mTabWidget.addTab(R.drawable.icon_last_tabs, R.string.home_last_tabs_title); - button = mTabWidget.addTab(R.drawable.icon_most_visited); - button.setContentDescription(resources.getString(R.string.home_most_visited_title)); - - button = mTabWidget.addTab(R.drawable.icon_most_recent); - button.setContentDescription(resources.getString(R.string.home_most_recent_title)); - - button = mTabWidget.addTab(R.drawable.icon_last_tabs); - button.setContentDescription(resources.getString(R.string.home_last_tabs_title)); - - //Show most visited page as the initial page - showMostVisitedPage(); + // Show most visited page as the initial page. + // Since we detach/attach on config change, this prevents from replacing current fragment. + if (!initializeVisitedPage) { + showMostVisitedPage(); + initializeVisitedPage = true; + } mTabWidget.setTabSelectionListener(this); mTabWidget.setCurrentTab(mSelectedTab); @@ -76,6 +74,19 @@ public class HistoryPage extends HomeFragment mSelectedTab = index; } + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + + // Rotation should detach and re-attach to use a different layout. + if (isVisible()) { + getFragmentManager().beginTransaction() + .detach(this) + .attach(this) + .commitAllowingStateLoss(); + } + } + private void showSubPage(Fragment subPage) { getChildFragmentManager().beginTransaction() .addToBackStack(null).replace(R.id.visited_page_container, subPage) diff --git a/mobile/android/base/home/LastTabsPage.java b/mobile/android/base/home/LastTabsPage.java index edba58cec73..812830d6308 100644 --- a/mobile/android/base/home/LastTabsPage.java +++ b/mobile/android/base/home/LastTabsPage.java @@ -97,7 +97,9 @@ public class LastTabsPage extends HomeFragment { @Override public void onViewCreated(View view, Bundle savedInstanceState) { mTitle = (TextView) view.findViewById(R.id.title); - mTitle.setText(R.string.home_last_tabs_title); + if (mTitle != null) { + mTitle.setText(R.string.home_last_tabs_title); + } mList = (ListView) view.findViewById(R.id.list); @@ -149,13 +151,17 @@ public class LastTabsPage extends HomeFragment { private void updateUiFromCursor(Cursor c) { if (c != null && c.getCount() > 0) { - mTitle.setVisibility(View.VISIBLE); + if (mTitle != null) { + mTitle.setVisibility(View.VISIBLE); + } mRestoreButton.setVisibility(View.VISIBLE); return; } // Cursor is empty, so hide the title and set the empty view if it hasn't been set already. - mTitle.setVisibility(View.GONE); + if (mTitle != null) { + mTitle.setVisibility(View.VISIBLE); + } mRestoreButton.setVisibility(View.GONE); if (mEmptyView == null) { diff --git a/mobile/android/base/home/MostRecentPage.java b/mobile/android/base/home/MostRecentPage.java index f60ba43951e..ad0b0f90392 100644 --- a/mobile/android/base/home/MostRecentPage.java +++ b/mobile/android/base/home/MostRecentPage.java @@ -93,7 +93,9 @@ public class MostRecentPage extends HomeFragment { @Override public void onViewCreated(View view, Bundle savedInstanceState) { mTitle = (TextView) view.findViewById(R.id.title); - mTitle.setText(R.string.home_most_recent_title); + if (mTitle != null) { + mTitle.setText(R.string.home_most_recent_title); + } mList = (ListView) view.findViewById(R.id.list); mList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @@ -154,12 +156,16 @@ public class MostRecentPage extends HomeFragment { private void updateUiFromCursor(Cursor c) { if (c != null && c.getCount() > 0) { - mTitle.setVisibility(View.VISIBLE); + if (mTitle != null) { + mTitle.setVisibility(View.VISIBLE); + } return; } // Cursor is empty, so hide the title and set the empty view if it hasn't been set already. - mTitle.setVisibility(View.GONE); + if (mTitle != null) { + mTitle.setVisibility(View.VISIBLE); + } if (mEmptyView == null) { // Set empty page view. We delay this so that the empty view won't flash. ViewStub emptyViewStub = (ViewStub) getActivity().findViewById(R.id.home_empty_view_stub); diff --git a/mobile/android/base/home/MostVisitedPage.java b/mobile/android/base/home/MostVisitedPage.java index 3340e43f0cb..5d8813e1f4c 100644 --- a/mobile/android/base/home/MostVisitedPage.java +++ b/mobile/android/base/home/MostVisitedPage.java @@ -84,7 +84,10 @@ public class MostVisitedPage extends HomeFragment { @Override public void onViewCreated(View view, Bundle savedInstanceState) { final TextView title = (TextView) view.findViewById(R.id.title); - title.setText(R.string.home_most_visited_title); + if (title != null) { + title.setText(R.string.home_most_visited_title); + title.setVisibility(View.VISIBLE); + } mList = (HomeListView) view.findViewById(R.id.list); diff --git a/mobile/android/base/resources/drawable-large-land-v11/home_history_tabs_indicator.xml b/mobile/android/base/resources/drawable-large-land-v11/home_history_tabs_indicator.xml new file mode 100644 index 00000000000..d2c005d21a7 --- /dev/null +++ b/mobile/android/base/resources/drawable-large-land-v11/home_history_tabs_indicator.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/mobile/android/base/resources/drawable-xlarge-v11/home_history_tabs_indicator.xml b/mobile/android/base/resources/drawable-xlarge-v11/home_history_tabs_indicator.xml new file mode 100644 index 00000000000..d2c005d21a7 --- /dev/null +++ b/mobile/android/base/resources/drawable-xlarge-v11/home_history_tabs_indicator.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/mobile/android/base/resources/layout-large-land-v11/home_history_list.xml b/mobile/android/base/resources/layout-large-land-v11/home_history_list.xml new file mode 100644 index 00000000000..41dc59c3139 --- /dev/null +++ b/mobile/android/base/resources/layout-large-land-v11/home_history_list.xml @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/mobile/android/base/resources/layout-large-land-v11/home_history_page.xml b/mobile/android/base/resources/layout-large-land-v11/home_history_page.xml new file mode 100644 index 00000000000..b21e2cf87ae --- /dev/null +++ b/mobile/android/base/resources/layout-large-land-v11/home_history_page.xml @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/mobile/android/base/resources/layout-large-land-v11/home_history_tabs_indicator.xml b/mobile/android/base/resources/layout-large-land-v11/home_history_tabs_indicator.xml new file mode 100644 index 00000000000..816eb4db1aa --- /dev/null +++ b/mobile/android/base/resources/layout-large-land-v11/home_history_tabs_indicator.xml @@ -0,0 +1,10 @@ + + + + diff --git a/mobile/android/base/resources/layout-xlarge-v11/home_history_list.xml b/mobile/android/base/resources/layout-xlarge-v11/home_history_list.xml new file mode 100644 index 00000000000..41dc59c3139 --- /dev/null +++ b/mobile/android/base/resources/layout-xlarge-v11/home_history_list.xml @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/mobile/android/base/resources/layout-xlarge-v11/home_history_page.xml b/mobile/android/base/resources/layout-xlarge-v11/home_history_page.xml new file mode 100644 index 00000000000..b21e2cf87ae --- /dev/null +++ b/mobile/android/base/resources/layout-xlarge-v11/home_history_page.xml @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/mobile/android/base/resources/layout-xlarge-v11/home_history_tabs_indicator.xml b/mobile/android/base/resources/layout-xlarge-v11/home_history_tabs_indicator.xml new file mode 100644 index 00000000000..816eb4db1aa --- /dev/null +++ b/mobile/android/base/resources/layout-xlarge-v11/home_history_tabs_indicator.xml @@ -0,0 +1,10 @@ + + + + diff --git a/mobile/android/base/resources/layout/home_list_with_title.xml b/mobile/android/base/resources/layout/home_history_list.xml similarity index 87% rename from mobile/android/base/resources/layout/home_list_with_title.xml rename to mobile/android/base/resources/layout/home_history_list.xml index 3bc8daab40b..17bf72e9972 100644 --- a/mobile/android/base/resources/layout/home_list_with_title.xml +++ b/mobile/android/base/resources/layout/home_history_list.xml @@ -11,11 +11,12 @@ android:layout_height="fill_parent"/> diff --git a/mobile/android/base/resources/layout/home_history_tabs_indicator.xml b/mobile/android/base/resources/layout/home_history_tabs_indicator.xml index 5ef9f2765df..e6d68422886 100644 --- a/mobile/android/base/resources/layout/home_history_tabs_indicator.xml +++ b/mobile/android/base/resources/layout/home_history_tabs_indicator.xml @@ -4,6 +4,7 @@ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> diff --git a/mobile/android/base/resources/layout/home_last_tabs_page.xml b/mobile/android/base/resources/layout/home_last_tabs_page.xml index 39b702784fe..8cc06427a87 100644 --- a/mobile/android/base/resources/layout/home_last_tabs_page.xml +++ b/mobile/android/base/resources/layout/home_last_tabs_page.xml @@ -8,7 +8,7 @@ android:layout_height="fill_parent" android:orientation="vertical"> - + - + \ No newline at end of file diff --git a/mobile/android/base/resources/layout/home_most_visited_page.xml b/mobile/android/base/resources/layout/home_most_visited_page.xml index b472a3fdf43..8122a0fb9d1 100644 --- a/mobile/android/base/resources/layout/home_most_visited_page.xml +++ b/mobile/android/base/resources/layout/home_most_visited_page.xml @@ -8,6 +8,6 @@ android:layout_height="fill_parent" android:orientation="vertical"> - + diff --git a/mobile/android/base/resources/values-large-land-v11/dimens.xml b/mobile/android/base/resources/values-large-land-v11/dimens.xml new file mode 100644 index 00000000000..1f7f1dbc374 --- /dev/null +++ b/mobile/android/base/resources/values-large-land-v11/dimens.xml @@ -0,0 +1,10 @@ + + + + + + 360dp + + diff --git a/mobile/android/base/resources/values-large-land-v11/styles.xml b/mobile/android/base/resources/values-large-land-v11/styles.xml index 8f1f6f672f2..b6f1a2c302b 100644 --- a/mobile/android/base/resources/values-large-land-v11/styles.xml +++ b/mobile/android/base/resources/values-large-land-v11/styles.xml @@ -35,4 +35,18 @@ 20dp + + + + diff --git a/mobile/android/base/resources/values-xlarge-land-v11/dimens.xml b/mobile/android/base/resources/values-xlarge-land-v11/dimens.xml new file mode 100644 index 00000000000..eac1435e340 --- /dev/null +++ b/mobile/android/base/resources/values-xlarge-land-v11/dimens.xml @@ -0,0 +1,10 @@ + + + + + + 480dp + + diff --git a/mobile/android/base/resources/values-xlarge-land-v11/styles.xml b/mobile/android/base/resources/values-xlarge-land-v11/styles.xml index 8bbbcdbe5dd..2d4e98b9ec1 100644 --- a/mobile/android/base/resources/values-xlarge-land-v11/styles.xml +++ b/mobile/android/base/resources/values-xlarge-land-v11/styles.xml @@ -14,4 +14,18 @@ 20dp + + + + diff --git a/mobile/android/base/resources/values-xlarge-v11/dimens.xml b/mobile/android/base/resources/values-xlarge-v11/dimens.xml index d7d7fa87924..d71a0c9c5e1 100644 --- a/mobile/android/base/resources/values-xlarge-v11/dimens.xml +++ b/mobile/android/base/resources/values-xlarge-v11/dimens.xml @@ -12,5 +12,6 @@ 60dp 8dip 84dip + 270dp diff --git a/mobile/android/base/resources/values-xlarge-v11/styles.xml b/mobile/android/base/resources/values-xlarge-v11/styles.xml index 73387f48378..f34de721489 100644 --- a/mobile/android/base/resources/values-xlarge-v11/styles.xml +++ b/mobile/android/base/resources/values-xlarge-v11/styles.xml @@ -16,4 +16,17 @@ 48dip + + + + diff --git a/mobile/android/base/resources/values/attrs.xml b/mobile/android/base/resources/values/attrs.xml index 41dd7e8771c..4e5c38b9163 100644 --- a/mobile/android/base/resources/values/attrs.xml +++ b/mobile/android/base/resources/values/attrs.xml @@ -198,6 +198,12 @@ + + + + + + diff --git a/mobile/android/base/resources/values/dimens.xml b/mobile/android/base/resources/values/dimens.xml index 1b13724588b..3dea9a3b79f 100644 --- a/mobile/android/base/resources/values/dimens.xml +++ b/mobile/android/base/resources/values/dimens.xml @@ -75,6 +75,13 @@ -13dip 32dp 8dp + 50dp + + + 184dp 32dp diff --git a/mobile/android/base/resources/values/styles.xml b/mobile/android/base/resources/values/styles.xml index 92f1d320d2e..5a2e3213707 100644 --- a/mobile/android/base/resources/values/styles.xml +++ b/mobile/android/base/resources/values/styles.xml @@ -186,7 +186,7 @@ @style/TextAppearance.Widget.Home.PageAction -