mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-17 11:25:34 -04:00
Simplify WebView Callbacks into one interface
This commit is contained in:
parent
abb610c0ad
commit
89c1f31fe0
@ -1177,82 +1177,6 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
|
|||||||
// However, it must notify the bookmark system when a page is finished loading
|
// However, it must notify the bookmark system when a page is finished loading
|
||||||
// so that it can refresh the menu.
|
// 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() {
|
backToTopButton.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
@ -1527,6 +1451,75 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
|
|||||||
tabDrawerAdapter.notifyDataSetChanged();
|
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() {
|
public void selectSettings() {
|
||||||
final String zimFile = ZimContentProvider.getZimFile();
|
final String zimFile = ZimContentProvider.getZimFile();
|
||||||
Intent i = new Intent(this, KiwixSettingsActivity.class);
|
Intent i = new Intent(this, KiwixSettingsActivity.class);
|
||||||
|
@ -18,4 +18,8 @@ public interface WebViewCallback {
|
|||||||
void webViewProgressChanged(int progress);
|
void webViewProgressChanged(int progress);
|
||||||
|
|
||||||
void webViewTitleUpdated(String title);
|
void webViewTitleUpdated(String title);
|
||||||
|
|
||||||
|
void webViewPageChanged(int page, int maxPages);
|
||||||
|
|
||||||
|
void webViewLongClick(String url);
|
||||||
}
|
}
|
||||||
|
@ -59,10 +59,6 @@ public class KiwixWebView extends WebView {
|
|||||||
};
|
};
|
||||||
private WebViewCallback callback;
|
private WebViewCallback callback;
|
||||||
|
|
||||||
private OnPageChangeListener mChangeListener;
|
|
||||||
|
|
||||||
private OnLongClickListener mOnLongClickListener;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadUrl(String url) {
|
public void loadUrl(String url) {
|
||||||
super.loadUrl(url);
|
super.loadUrl(url);
|
||||||
@ -161,7 +157,7 @@ public class KiwixWebView extends WebView {
|
|||||||
HitTestResult result = getHitTestResult();
|
HitTestResult result = getHitTestResult();
|
||||||
|
|
||||||
if (result.getType() == HitTestResult.SRC_ANCHOR_TYPE) {
|
if (result.getType() == HitTestResult.SRC_ANCHOR_TYPE) {
|
||||||
mOnLongClickListener.onLongClick(result.getExtra());
|
callback.webViewLongClick(result.getExtra());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.performLongClick();
|
return super.performLongClick();
|
||||||
@ -197,33 +193,12 @@ public class KiwixWebView extends WebView {
|
|||||||
int pages = getContentHeight() / windowHeight;
|
int pages = getContentHeight() / windowHeight;
|
||||||
int page = t / windowHeight;
|
int page = t / windowHeight;
|
||||||
|
|
||||||
// Alert the listener
|
callback.webViewPageChanged(page, pages);
|
||||||
if (mChangeListener != null) {
|
|
||||||
mChangeListener.onPageChanged(page, pages);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disableZoomControls() {
|
public void disableZoomControls() {
|
||||||
getSettings().setBuiltInZoomControls(true);
|
getSettings().setBuiltInZoomControls(true);
|
||||||
getSettings().setDisplayZoomControls(false);
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user