Brion VIBBER has submitted this change and it was merged. Change subject: ToC design tweaks ......................................................................
ToC design tweaks Can see ToC by swiping left-to-right. Edge-dragging shows Drawer Change-Id: I288e3e322df8a6693cd1f1906fb2e56a6f001241 --- M wikipedia/res/layout/fragment_page.xml M wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java M wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java 3 files changed, 77 insertions(+), 28 deletions(-) Approvals: Brion VIBBER: Verified; Looks good to me, approved diff --git a/wikipedia/res/layout/fragment_page.xml b/wikipedia/res/layout/fragment_page.xml index 20dd0f0..95ca76e 100644 --- a/wikipedia/res/layout/fragment_page.xml +++ b/wikipedia/res/layout/fragment_page.xml @@ -13,21 +13,38 @@ android:layout_height="wrap_content" android:indeterminate="true" /> - <org.wikipedia.ObservableWebView - android:id="@+id/page_web_view" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:visibility="gone" - /> - <ListView - android:id="@+id/page_toc_list" + <android.support.v4.widget.SlidingPaneLayout + android:id="@+id/page_toc_slider" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="gone" - android:background="@android:color/background_light" - android:divider="#ededed" - android:dividerHeight="0.5dp" - /> + > + <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> + + <ListView + android:id="@+id/page_toc_list" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@android:color/background_light" + android:divider="#ededed" + android:dividerHeight="0.5dp" + android:visibility="gone" + /> + <ProgressBar + android:id="@+id/page_toc_in_progress" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + style="?android:progressBarStyleLarge" + android:indeterminate="true" + android:layout_gravity="center" + /> + </FrameLayout> + <org.wikipedia.ObservableWebView + android:id="@+id/page_web_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone" + /> + </android.support.v4.widget.SlidingPaneLayout> <LinearLayout android:id="@+id/page_error" android:layout_width="match_parent" diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java index 8b0552f..1fb8a69 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java +++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java @@ -3,6 +3,7 @@ import android.content.*; import android.os.*; import android.support.v4.app.*; +import android.support.v4.widget.*; import android.util.*; import android.view.*; import android.widget.*; @@ -36,8 +37,7 @@ private ProgressBar loadProgress; private View networkError; private View retryButton; - - private ListView tocList; + private SlidingPaneLayout tocSlider; private Page page; private HistoryEntry curEntry; @@ -136,8 +136,8 @@ loadProgress = (ProgressBar) getView().findViewById(R.id.page_load_progress); networkError = getView().findViewById(R.id.page_error); retryButton = getView().findViewById(R.id.page_error_retry); - tocList = (ListView) getView().findViewById(R.id.page_toc_list); quickReturnBar = getActivity().findViewById(quickReturnBarId); + tocSlider = (SlidingPaneLayout) getView().findViewById(R.id.page_toc_slider); // Enable Pinch-Zoom webView.getSettings().setBuiltInZoomControls(true); @@ -219,6 +219,13 @@ private void setState(int state) { this.state = state; app.getBus().post(new PageStateChangeEvent(state)); + // FIXME: Move this out into a PageComplete event of sorts + if (state == STATE_COMPLETE_FETCH) { + if (tocHandler == null) { + tocHandler = new ToCHandler(tocSlider, quickReturnBar, bridge); + } + tocHandler.setupToC(page); + } } private class LeadSectionFetchTask extends SectionsFetchTask { @@ -314,9 +321,6 @@ private ToCHandler tocHandler; public void showToC() { - if (tocHandler == null) { - tocHandler = new ToCHandler(tocList, page, quickReturnBar, bridge); - } tocHandler.show(); } diff --git a/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java b/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java index c1a85fa..de6c537 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java +++ b/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java @@ -1,6 +1,7 @@ package org.wikipedia.page; import android.graphics.*; +import android.support.v4.widget.*; import android.text.*; import android.view.*; import android.widget.*; @@ -11,15 +12,38 @@ public class ToCHandler { private final ListView tocList; - private final Page page; + private final ProgressBar tocProgress; + private Page page; private final View quickReturnBar; private final CommunicationBridge bridge; + private final SlidingPaneLayout slidingPane; - public ToCHandler(ListView tocList, Page page, View quickReturnBar, CommunicationBridge bridge) { - this.tocList = tocList; - this.page = page; + public ToCHandler(SlidingPaneLayout slidingPane, final View quickReturnBar, CommunicationBridge bridge) { this.quickReturnBar = quickReturnBar; this.bridge = bridge; + this.slidingPane = slidingPane; + + this.tocList = (ListView) slidingPane.findViewById(R.id.page_toc_list); + this.tocProgress = (ProgressBar) slidingPane.findViewById(R.id.page_toc_in_progress); + + slidingPane.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() { + @Override + public void onPanelSlide(View panel, float slideOffset) { + } + + private float prevTranslateY; + @Override + public void onPanelOpened(View view) { + prevTranslateY = quickReturnBar.getTranslationY(); + Utils.ensureTranslationY(quickReturnBar, -quickReturnBar.getHeight()); + } + + @Override + public void onPanelClosed(View view) { + Utils.ensureTranslationY(quickReturnBar, (int)prevTranslateY); + + } + }); } private void scrollToSection(Section section) { @@ -34,7 +58,10 @@ bridge.sendMessage("scrollToSection", payload); } - public void show() { + public void setupToC(final Page page) { + this.page = page; + tocProgress.setVisibility(View.GONE); + tocList.setVisibility(View.VISIBLE); if (tocList.getAdapter() == null) { TextView headerView = (TextView) LayoutInflater.from(tocList.getContext()).inflate(R.layout.header_toc_list, null, false); headerView.setText(page.getTitle().getDisplayText()); @@ -57,13 +84,14 @@ } }); } - Utils.ensureTranslationY(quickReturnBar, -quickReturnBar.getHeight()); - Utils.fadeIn(tocList); + } + + public void show() { + slidingPane.openPane(); } public void hide() { - Utils.fadeOut(tocList); - Utils.ensureTranslationY(quickReturnBar, 0); + slidingPane.closePane(); } public boolean isVisible() { -- To view, visit https://gerrit.wikimedia.org/r/118680 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I288e3e322df8a6693cd1f1906fb2e56a6f001241 Gerrit-PatchSet: 2 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Yuvipanda <yuvipa...@gmail.com> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits