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
