Dbrant has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/147164

Change subject: Add progress indicator when changing font size.
......................................................................

Add progress indicator when changing font size.

(since changing font size can be quite slow for large pages)

Change-Id: If04f66ca726f54ee9fb2dd4c99e41b29613938a9
---
M wikipedia/res/layout/dialog_themechooser.xml
A wikipedia/src/main/java/org/wikipedia/events/WebViewInvalidateEvent.java
M wikipedia/src/main/java/org/wikipedia/theme/ThemeChooserDialog.java
M wikipedia/src/main/java/org/wikipedia/views/ObservableWebView.java
4 files changed, 72 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/64/147164/1

diff --git a/wikipedia/res/layout/dialog_themechooser.xml 
b/wikipedia/res/layout/dialog_themechooser.xml
index e8811e9..0e351e9 100644
--- a/wikipedia/res/layout/dialog_themechooser.xml
+++ b/wikipedia/res/layout/dialog_themechooser.xml
@@ -1,6 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android";
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content">
+
+<LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -103,4 +107,13 @@
                 />
     </LinearLayout>
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
+
+    <ProgressBar
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|right"
+            android:layout_margin="8dp"
+            android:id="@+id/font_change_progress_bar"/>
+
+</FrameLayout>
\ No newline at end of file
diff --git 
a/wikipedia/src/main/java/org/wikipedia/events/WebViewInvalidateEvent.java 
b/wikipedia/src/main/java/org/wikipedia/events/WebViewInvalidateEvent.java
new file mode 100644
index 0000000..b861fe4
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/events/WebViewInvalidateEvent.java
@@ -0,0 +1,4 @@
+package org.wikipedia.events;
+
+public class WebViewInvalidateEvent {
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/theme/ThemeChooserDialog.java 
b/wikipedia/src/main/java/org/wikipedia/theme/ThemeChooserDialog.java
index 77ef138..5274dff 100644
--- a/wikipedia/src/main/java/org/wikipedia/theme/ThemeChooserDialog.java
+++ b/wikipedia/src/main/java/org/wikipedia/theme/ThemeChooserDialog.java
@@ -5,8 +5,11 @@
 import android.os.Build;
 import android.view.*;
 import android.widget.Button;
+import android.widget.ProgressBar;
+import com.squareup.otto.Subscribe;
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
+import org.wikipedia.events.WebViewInvalidateEvent;
 
 public class ThemeChooserDialog extends Dialog {
     private WikipediaApp app;
@@ -15,6 +18,8 @@
     private Button buttonIncreaseTextSize;
     private Button buttonThemeLight;
     private Button buttonThemeDark;
+    private ProgressBar fontChangeProgressBar;
+    private boolean updatingFont = false;
 
     public ThemeChooserDialog(Context context) {
         super(context);
@@ -41,6 +46,7 @@
         buttonDecreaseTextSize.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
+                updatingFont = true;
                 app.setFontSizeMultiplier(app.getFontSizeMultiplier() - 1);
                 updateButtonState();
             }
@@ -50,6 +56,7 @@
         buttonDefaultTextSize.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
+                updatingFont = true;
                 app.setFontSizeMultiplier(0);
                 updateButtonState();
             }
@@ -59,6 +66,7 @@
         buttonIncreaseTextSize.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
+                updatingFont = true;
                 app.setFontSizeMultiplier(app.getFontSizeMultiplier() + 1);
                 updateButtonState();
             }
@@ -80,19 +88,47 @@
             }
         });
 
+        fontChangeProgressBar = (ProgressBar) 
dlgLayout.findViewById(R.id.font_change_progress_bar);
+
         updateButtonState();
+    }
+
+    @Subscribe
+    public void onWebViewInvalidated(WebViewInvalidateEvent event) {
+        updatingFont = false;
+        updateButtonState();
+    }
+
+    @Override
+    public void show() {
+        app.getBus().register(this);
+        super.show();
+    }
+
+    @Override
+    public void dismiss() {
+        app.getBus().unregister(this);
+        super.dismiss();
     }
 
     private void updateButtonState() {
         int mult = app.getFontSizeMultiplier();
-        if (mult == 0) {
+        if (updatingFont) {
+            fontChangeProgressBar.setVisibility(View.VISIBLE);
             buttonDefaultTextSize.setEnabled(false);
-            buttonDecreaseTextSize.setEnabled(true);
-            buttonIncreaseTextSize.setEnabled(true);
+            buttonDecreaseTextSize.setEnabled(false);
+            buttonIncreaseTextSize.setEnabled(false);
         } else {
-            buttonDefaultTextSize.setEnabled(true);
-            buttonDecreaseTextSize.setEnabled(mult > 
WikipediaApp.FONT_SIZE_MULTIPLIER_MIN);
-            buttonIncreaseTextSize.setEnabled(mult < 
WikipediaApp.FONT_SIZE_MULTIPLIER_MAX);
+            fontChangeProgressBar.setVisibility(View.GONE);
+            if (mult == 0) {
+                buttonDefaultTextSize.setEnabled(false);
+                buttonDecreaseTextSize.setEnabled(true);
+                buttonIncreaseTextSize.setEnabled(true);
+            } else {
+                buttonDefaultTextSize.setEnabled(true);
+                buttonDecreaseTextSize.setEnabled(mult > 
WikipediaApp.FONT_SIZE_MULTIPLIER_MIN);
+                buttonIncreaseTextSize.setEnabled(mult < 
WikipediaApp.FONT_SIZE_MULTIPLIER_MAX);
+            }
         }
 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
diff --git a/wikipedia/src/main/java/org/wikipedia/views/ObservableWebView.java 
b/wikipedia/src/main/java/org/wikipedia/views/ObservableWebView.java
index 7fa8c31..8e80112 100644
--- a/wikipedia/src/main/java/org/wikipedia/views/ObservableWebView.java
+++ b/wikipedia/src/main/java/org/wikipedia/views/ObservableWebView.java
@@ -4,6 +4,8 @@
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.webkit.WebView;
+import org.wikipedia.WikipediaApp;
+import org.wikipedia.events.WebViewInvalidateEvent;
 
 public class ObservableWebView extends WebView {
     private OnScrollChangeListener onScrollChangeListener;
@@ -88,4 +90,13 @@
         }
         return super.onTouchEvent(event);
     }
+
+    @Override
+    public void invalidate() {
+        super.invalidate();
+        if (getContentHeight() == 0) {
+            return;
+        }
+        WikipediaApp.getInstance().getBus().post(new WebViewInvalidateEvent());
+    }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/147164
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If04f66ca726f54ee9fb2dd4c99e41b29613938a9
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to