diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 79d8e2b18..600e898af 100644 --- a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -1177,82 +1177,6 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal // However, it must notify the bookmark system when a page is finished loading // so that it can refresh the menu. - getCurrentWebView().setOnPageChangedListener(new KiwixWebView.OnPageChangeListener() { - - @Override - public void onPageChanged(int page, int maxPages) { - if (isBackToTopEnabled) { - if (getCurrentWebView().getScrollY() > 200) { - if (backToTopButton.getVisibility() == View.INVISIBLE && TTSControls.getVisibility() == View.GONE ) { - backToTopButton.setText(R.string.button_backtotop); - backToTopButton.setVisibility(View.VISIBLE); - - backToTopButton.startAnimation( - AnimationUtils.loadAnimation(KiwixMobileActivity.this, android.R.anim.fade_in)); - backToTopButton.setVisibility(View.INVISIBLE); - Animation fadeAnimation = - AnimationUtils.loadAnimation(KiwixMobileActivity.this, android.R.anim.fade_out); - fadeAnimation.setStartOffset(1200); - backToTopButton.startAnimation(fadeAnimation); - } - } else { - if (backToTopButton.getVisibility() == View.VISIBLE) { - backToTopButton.setVisibility(View.INVISIBLE); - - backToTopButton.clearAnimation(); - backToTopButton.startAnimation( - AnimationUtils.loadAnimation(KiwixMobileActivity.this, android.R.anim.fade_out)); - } else { - backToTopButton.clearAnimation(); - } - } - } - } - }); - - getCurrentWebView().setOnLongClickListener(new KiwixWebView.OnLongClickListener() { - - @Override - public void onLongClick(final String url) { - boolean handleEvent = false; - if (url.startsWith(ZimContentProvider.CONTENT_URI.toString())) { - // This is my web site, so do not override; let my WebView load the page - handleEvent = true; - } else if (url.startsWith("file://") && !url.contains("selectzimfile")) { - // To handle help page (loaded from resources) - handleEvent = true; - } else if (url.startsWith(ZimContentProvider.UI_URI.toString()) && !url.contains("selectzimfile")) { - handleEvent = true; - } - - if (handleEvent) { - AlertDialog.Builder builder = new AlertDialog.Builder(KiwixMobileActivity.this); - - builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - if (isOpenNewTabInBackground) { - newTabInBackground(url); - Snackbar snackbar = Snackbar.make(snackbarLayout, - getString(R.string.new_tab_snackbar), - Snackbar.LENGTH_LONG) - .setAction(getString(R.string.open), v -> { - if (mWebViews.size() > 1) selectTab(mWebViews.size() - 1); - }); - snackbar.setActionTextColor(getResources().getColor(R.color.white)); - snackbar.show(); - } else { - newTab(url); - } - } - }); - builder.setNegativeButton(android.R.string.no, null); - builder.setMessage(getString(R.string.open_in_new_tab)); - AlertDialog dialog = builder.create(); - dialog.show(); - } - } - }); - backToTopButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -1527,6 +1451,75 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal tabDrawerAdapter.notifyDataSetChanged(); } + + @Override public void webViewPageChanged(int page, int maxPages) { + if (isBackToTopEnabled) { + if (getCurrentWebView().getScrollY() > 200) { + if (backToTopButton.getVisibility() == View.INVISIBLE && TTSControls.getVisibility() == View.GONE ) { + backToTopButton.setText(R.string.button_backtotop); + backToTopButton.setVisibility(View.VISIBLE); + + backToTopButton.startAnimation( + AnimationUtils.loadAnimation(KiwixMobileActivity.this, android.R.anim.fade_in)); + backToTopButton.setVisibility(View.INVISIBLE); + Animation fadeAnimation = + AnimationUtils.loadAnimation(KiwixMobileActivity.this, android.R.anim.fade_out); + fadeAnimation.setStartOffset(1200); + backToTopButton.startAnimation(fadeAnimation); + } + } else { + if (backToTopButton.getVisibility() == View.VISIBLE) { + backToTopButton.setVisibility(View.INVISIBLE); + + backToTopButton.clearAnimation(); + backToTopButton.startAnimation( + AnimationUtils.loadAnimation(KiwixMobileActivity.this, android.R.anim.fade_out)); + } else { + backToTopButton.clearAnimation(); + } + } + } + } + + @Override public void webViewLongClick(final String url) { + boolean handleEvent = false; + if (url.startsWith(ZimContentProvider.CONTENT_URI.toString())) { + // This is my web site, so do not override; let my WebView load the page + handleEvent = true; + } else if (url.startsWith("file://") && !url.contains("selectzimfile")) { + // To handle help page (loaded from resources) + handleEvent = true; + } else if (url.startsWith(ZimContentProvider.UI_URI.toString()) && !url.contains("selectzimfile")) { + handleEvent = true; + } + + if (handleEvent) { + AlertDialog.Builder builder = new AlertDialog.Builder(KiwixMobileActivity.this); + + builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + if (isOpenNewTabInBackground) { + newTabInBackground(url); + Snackbar snackbar = Snackbar.make(snackbarLayout, + getString(R.string.new_tab_snackbar), + Snackbar.LENGTH_LONG) + .setAction(getString(R.string.open), v -> { + if (mWebViews.size() > 1) selectTab(mWebViews.size() - 1); + }); + snackbar.setActionTextColor(getResources().getColor(R.color.white)); + snackbar.show(); + } else { + newTab(url); + } + } + }); + builder.setNegativeButton(android.R.string.no, null); + builder.setMessage(getString(R.string.open_in_new_tab)); + AlertDialog dialog = builder.create(); + dialog.show(); + } + } + public void selectSettings() { final String zimFile = ZimContentProvider.getZimFile(); Intent i = new Intent(this, KiwixSettingsActivity.class); diff --git a/src/org/kiwix/kiwixmobile/WebViewCallback.java b/src/org/kiwix/kiwixmobile/WebViewCallback.java index 8879807b1..fa4c37185 100644 --- a/src/org/kiwix/kiwixmobile/WebViewCallback.java +++ b/src/org/kiwix/kiwixmobile/WebViewCallback.java @@ -18,4 +18,8 @@ public interface WebViewCallback { void webViewProgressChanged(int progress); void webViewTitleUpdated(String title); + + void webViewPageChanged(int page, int maxPages); + + void webViewLongClick(String url); } diff --git a/src/org/kiwix/kiwixmobile/views/KiwixWebView.java b/src/org/kiwix/kiwixmobile/views/KiwixWebView.java index 0123e5dff..be48b6290 100644 --- a/src/org/kiwix/kiwixmobile/views/KiwixWebView.java +++ b/src/org/kiwix/kiwixmobile/views/KiwixWebView.java @@ -59,10 +59,6 @@ public class KiwixWebView extends WebView { }; private WebViewCallback callback; - private OnPageChangeListener mChangeListener; - - private OnLongClickListener mOnLongClickListener; - @Override public void loadUrl(String url) { super.loadUrl(url); @@ -161,7 +157,7 @@ public class KiwixWebView extends WebView { HitTestResult result = getHitTestResult(); if (result.getType() == HitTestResult.SRC_ANCHOR_TYPE) { - mOnLongClickListener.onLongClick(result.getExtra()); + callback.webViewLongClick(result.getExtra()); return true; } return super.performLongClick(); @@ -197,33 +193,12 @@ public class KiwixWebView extends WebView { int pages = getContentHeight() / windowHeight; int page = t / windowHeight; - // Alert the listener - if (mChangeListener != null) { - mChangeListener.onPageChanged(page, pages); - } + callback.webViewPageChanged(page, pages); } public void disableZoomControls() { getSettings().setBuiltInZoomControls(true); getSettings().setDisplayZoomControls(false); } - - public void setOnPageChangedListener(OnPageChangeListener listener) { - mChangeListener = listener; - } - - public void setOnLongClickListener(OnLongClickListener listener) { - mOnLongClickListener = listener; - } - - public interface OnPageChangeListener { - - void onPageChanged(int page, int maxPages); - } - - public interface OnLongClickListener { - - void onLongClick(String url); - } }