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 <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits