diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 9bef59d63..79d8e2b18 100644 --- a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -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); diff --git a/src/org/kiwix/kiwixmobile/KiwixWebChromeClient.java b/src/org/kiwix/kiwixmobile/KiwixWebChromeClient.java index 485e5655a..f8b91fbc7 100644 --- a/src/org/kiwix/kiwixmobile/KiwixWebChromeClient.java +++ b/src/org/kiwix/kiwixmobile/KiwixWebChromeClient.java @@ -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); + } } diff --git a/src/org/kiwix/kiwixmobile/KiwixWebViewClient.java b/src/org/kiwix/kiwixmobile/KiwixWebViewClient.java index aa1d71698..41c4dc0c4 100644 --- a/src/org/kiwix/kiwixmobile/KiwixWebViewClient.java +++ b/src/org/kiwix/kiwixmobile/KiwixWebViewClient.java @@ -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 DOCUMENT_TYPES = new HashMap() {{ 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(); diff --git a/src/org/kiwix/kiwixmobile/WebViewCallback.java b/src/org/kiwix/kiwixmobile/WebViewCallback.java index 6295c179f..8879807b1 100644 --- a/src/org/kiwix/kiwixmobile/WebViewCallback.java +++ b/src/org/kiwix/kiwixmobile/WebViewCallback.java @@ -16,4 +16,6 @@ public interface WebViewCallback { void manageZimFiles(int tab); void webViewProgressChanged(int progress); + + void webViewTitleUpdated(String title); } diff --git a/src/org/kiwix/kiwixmobile/views/KiwixWebView.java b/src/org/kiwix/kiwixmobile/views/KiwixWebView.java index 0e437478a..0123e5dff 100644 --- a/src/org/kiwix/kiwixmobile/views/KiwixWebView.java +++ b/src/org/kiwix/kiwixmobile/views/KiwixWebView.java @@ -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() {