package org.wordpress.android;
import android.app.Activity;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.webkit.HttpAuthHandler;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public abstract class WPCOMReaderBase extends Fragment {
protected final String interfaceNameForJS = "Android";
protected String httpuser = "";
protected String httppassword = "";
public String topicTitle;
private UpdateTopicTitleListener updateTopicTitleListener;
private UpdateTopicIDListener updateTopicIDListener;
private ChangeTopicListener onChangeTopicListener;
private GetLoadedItemsListener getLoadedItemsListener;
private UpdateButtonStatusListener updateButtonStatusListener;
private GetPermalinkListener getPermalinkListener;
private GetLastSelectedItemListener getLastSelectedItemListener;
protected void setDefaultWebViewSettings(WebView wv) {
WebSettings webSettings = wv.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setBuiltInZoomControls(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginsEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setUserAgentString("wp-android-native");
webSettings.setSavePassword(false);
}
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
updateTopicTitleListener = (UpdateTopicTitleListener) activity;
updateTopicIDListener = (UpdateTopicIDListener) activity;
onChangeTopicListener = (ChangeTopicListener) activity;
getLoadedItemsListener = (GetLoadedItemsListener) activity;
updateButtonStatusListener = (UpdateButtonStatusListener) activity;
getPermalinkListener = (GetPermalinkListener) activity;
getLastSelectedItemListener = (GetLastSelectedItemListener) activity;
} catch (ClassCastException e) {
activity.finish();
throw new ClassCastException(activity.toString()
+ " must implement Callback");
}
}
protected class WordPressWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// setProgressBarIndeterminateVisibility(false);
view.clearCache(true);
}
@Override
public void onReceivedHttpAuthRequest(WebView view,
HttpAuthHandler handler, String host, String realm) {
handler.proceed(httpuser, httppassword);
}
}
protected class JavaScriptInterface {
Context mContext;
/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
mContext = c;
}
public void setTopicTitle(String topicTitle) {
updateTopicTitleListener.updateTopicTitle(topicTitle);
}
public void setSelectedTopic(String topicID) {
updateTopicIDListener.onUpdateTopicID(topicID);
}
public void selectTopic(String topicID, String topicName) {
onChangeTopicListener.onChangeTopic(topicID, topicName);
}
public void getLoadedItems(String items) {
getLoadedItemsListener.getLoadedItems(items);
}
public void getArticlePermalink(String permalink) {
getPermalinkListener.getPermalink(permalink);
}
public void getLastSelectedItem(String item) {
getLastSelectedItemListener.getLastSelectedItem(item);
}
public void hasPrev(boolean isPrev) {
updateButtonStatusListener.updateButtonStatus(0, isPrev);
}
public void hasNext(String isNext) {
updateButtonStatusListener.updateButtonStatus(1, Boolean.parseBoolean(isNext));
}
}
public interface UpdateTopicTitleListener {
public void updateTopicTitle(String topicTitle);
}
public interface UpdateTopicIDListener {
public void onUpdateTopicID(String topicID);
}
public interface ChangeTopicListener {
public void onChangeTopic(String topicID, String topicName);
}
public interface GetLoadedItemsListener {
public void getLoadedItems(String items);
}
public interface UpdateButtonStatusListener {
public void updateButtonStatus(int button, boolean enabled);
}
public interface GetPermalinkListener {
public void getPermalink(String permalink);
}
public interface GetLastSelectedItemListener {
public void getLastSelectedItem(String lastSelectedItem);
}
}