Move WebViewClient init to KiwixWebView

This commit is contained in:
Rashiq 2016-12-31 21:16:08 +01:00
parent 3f9149d640
commit 1bb65fa8b8
5 changed files with 29 additions and 33 deletions

View File

@ -594,9 +594,7 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
}
private KiwixWebView newTab(String url) {
KiwixWebView webView = new KiwixWebView(KiwixMobileActivity.this);
webView.setWebViewClient(new KiwixWebViewClient(this));
webView.setWebChromeClient(new KiwixWebChromeClient(this));
KiwixWebView webView = new KiwixWebView(KiwixMobileActivity.this, this);
webView.loadUrl(url);
webView.loadPrefs();
@ -609,14 +607,7 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
}
private void newTabInBackground(String url) {
KiwixWebView webView = new KiwixWebView(KiwixMobileActivity.this);
webView.setWebChromeClient(new KiwixWebChromeClient(this) {
@Override
public void onReceivedTitle(WebView view, String sTitle) {
super.onReceivedTitle(view, sTitle);
tabDrawerAdapter.notifyDataSetChanged();
}
});
KiwixWebView webView = new KiwixWebView(KiwixMobileActivity.this, this);
webView.loadUrl(url);
webView.loadPrefs();
mWebViews.add(webView);
@ -1532,6 +1523,10 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
}
}
@Override public void webViewTitleUpdated(String title) {
tabDrawerAdapter.notifyDataSetChanged();
}
public void selectSettings() {
final String zimFile = ZimContentProvider.getZimFile();
Intent i = new Intent(this, KiwixSettingsActivity.class);

View File

@ -3,7 +3,7 @@ package org.kiwix.kiwixmobile;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
class KiwixWebChromeClient extends WebChromeClient {
public class KiwixWebChromeClient extends WebChromeClient {
private WebViewCallback callback;
@ -15,4 +15,9 @@ class KiwixWebChromeClient extends WebChromeClient {
public void onProgressChanged(WebView view, int progress) {
callback.webViewProgressChanged(progress);
}
@Override public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
callback.webViewTitleUpdated(title);
}
}

View File

@ -11,7 +11,7 @@ import android.widget.LinearLayout;
import java.util.HashMap;
import org.kiwix.kiwixmobile.settings.Constants;
class KiwixWebViewClient extends WebViewClient {
public class KiwixWebViewClient extends WebViewClient {
private static final HashMap<String, String> DOCUMENT_TYPES = new HashMap<String, String>() {{
put("epub", "application/epub+zip");
@ -72,7 +72,8 @@ class KiwixWebViewClient extends WebViewClient {
} else if (!Constants.IS_CUSTOM_APP) {
LayoutInflater inflater = LayoutInflater.from(view.getContext());
help = (LinearLayout) inflater.inflate(R.layout.help, null);
help.findViewById(R.id.get_content_card).setOnClickListener(card -> callback.manageZimFiles(1));
help.findViewById(R.id.get_content_card)
.setOnClickListener(card -> callback.manageZimFiles(1));
view.addView(help);
}
callback.webViewUrlFinishedLoading();

View File

@ -16,4 +16,6 @@ public interface WebViewCallback {
void manageZimFiles(int tab);
void webViewProgressChanged(int progress);
void webViewTitleUpdated(String title);
}

View File

@ -19,8 +19,6 @@
package org.kiwix.kiwixmobile.views;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.ColorMatrixColorFilter;
@ -30,24 +28,22 @@ import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.support.v4.app.ActivityCompat;
import android.util.AttributeSet;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.widget.Toast;
import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.utils.files.FileUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.KiwixWebChromeClient;
import org.kiwix.kiwixmobile.KiwixWebViewClient;
import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.WebViewCallback;
public class KiwixWebView extends WebView {
@ -61,6 +57,7 @@ public class KiwixWebView extends WebView {
0, 0, -1.0f, 0, 255, // blue
0, 0, 0, 1.0f, 0 // alpha
};
private WebViewCallback callback;
private OnPageChangeListener mChangeListener;
@ -87,7 +84,8 @@ public class KiwixWebView extends WebView {
File root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP && kiwixMobileActivity.getExternalMediaDirs().length > 0) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP
&& kiwixMobileActivity.getExternalMediaDirs().length > 0) {
root = kiwixMobileActivity.getExternalMediaDirs()[0];
}
@ -125,16 +123,11 @@ public class KiwixWebView extends WebView {
}
};
public KiwixWebView(Context context) {
public KiwixWebView(Context context, WebViewCallback callback) {
super(context);
}
public KiwixWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public KiwixWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.callback = callback;
setWebViewClient(new KiwixWebViewClient(callback));
setWebChromeClient(new KiwixWebChromeClient(callback));
}
public void loadPrefs() {