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

Reply via email to