package org.wordpress.android.ui.reader; import android.app.Activity; import android.content.res.Configuration; import android.graphics.Bitmap; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.webkit.HttpAuthHandler; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ImageButton; import com.justsystems.hpb.pad.R; import org.wordpress.android.Constants; public class ReaderDetailPageFragment extends ReaderBaseFragment { public WebView wv; public String readerItems; public ImageButton nextPost, prevPost; private LoadExternalURLListener loadExternalURLListener; private int navButtonEnabled = 200; private int navButtonDisabled = 70; public static ReaderDetailPageFragment newInstance() { ReaderDetailPageFragment f = new ReaderDetailPageFragment(); return f; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View v = inflater.inflate(R.layout.reader_detail, container, false); wv = (WebView) v.findViewById(R.id.webView); this.setDefaultWebViewSettings(wv); wv.addJavascriptInterface(new JavaScriptInterface(getActivity() .getBaseContext()), "Android"); wv.setWebViewClient(new DetailWebViewClient()); // Needed to support playing video wv.setWebChromeClient(new WebChromeClient() { }); wv.loadUrl(Constants.readerDetailURL); nextPost = (ImageButton) v.findViewById(R.id.down); nextPost.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { wv.loadUrl("javascript:Reader2.show_next_item();"); wv.loadUrl("javascript:Reader2.is_next_item();"); wv.loadUrl("javascript:Reader2.is_prev_item();"); if (nextPost.isEnabled()) fadeInWebView(); } }); prevPost = (ImageButton) v.findViewById(R.id.up); prevPost.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { wv.loadUrl("javascript:Reader2.show_prev_item();"); wv.loadUrl("javascript:Reader2.is_next_item();"); wv.loadUrl("javascript:Reader2.is_prev_item();"); fadeInWebView(); } }); return v; } private void fadeInWebView() { AlphaAnimation fadeInAnimation = new AlphaAnimation(0.0f, 1.0f); fadeInAnimation.setDuration(800); wv.scrollTo(0, 0); wv.startAnimation(fadeInAnimation); } public void onAttach(Activity activity) { super.onAttach(activity); try { // check that the containing activity implements our callback loadExternalURLListener = (LoadExternalURLListener) activity; } catch (ClassCastException e) { activity.finish(); throw new ClassCastException(activity.toString() + " must implement Callback"); } } @Override public void onConfigurationChanged(Configuration newConfig) { // ignore orientation change super.onConfigurationChanged(newConfig); } @Override public void onPause() { super.onPause(); if (wv != null) { wv.stopLoading(); wv.clearCache(true); } } public void updateButtonStatus(int button, boolean enabled) { if (button == 0) { prevPost.setEnabled(enabled); if (enabled) prevPost.setAlpha(navButtonEnabled); else prevPost.setAlpha(navButtonDisabled); } else if (button == 1) { nextPost.setEnabled(enabled); if (enabled) nextPost.setAlpha(navButtonEnabled); else nextPost.setAlpha(navButtonDisabled); } } protected class DetailWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (!url.equalsIgnoreCase(Constants.readerDetailURL)) { loadExternalURLListener.loadExternalURL(url); return true; } return false; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { //Log.d("WP", url); } @Override public void onPageFinished(WebView view, String url) { if (readerItems != null) { String method = "Reader2.set_loaded_items(" + readerItems + ")"; wv.loadUrl("javascript:" + method); nextPost.setEnabled(true); prevPost.setEnabled(true); wv.requestLayout(); } view.clearCache(true); } @Override public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { handler.proceed(httpuser, httppassword); } } public interface LoadExternalURLListener { public void loadExternalURL(String url); } }