package org.softeg.slartus.forpdaplus.fragments;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.text.Html;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import org.softeg.slartus.forpdacommon.PatternExtensions;
import org.softeg.slartus.forpdaplus.Client;
import org.softeg.slartus.forpdaplus.IntentActivity;
import org.softeg.slartus.forpdaplus.MainActivity;
import org.softeg.slartus.forpdaplus.R;
import org.softeg.slartus.forpdaplus.classes.AdvWebView;
import org.softeg.slartus.forpdaplus.common.AppLog;
import org.softeg.slartus.forpdaplus.prefs.Preferences;
import java.util.regex.Matcher;
/**
* Created by radiationx on 22.12.15.
*/
public class SpecialView extends WebViewFragment {
private AdvWebView m_WebView;
private AsyncTask asyncTask;
public static String m_Title = "ForPDA";
public static String m_Url="";
@Override
public boolean closeTab() {
return false;
}
@Override
public AdvWebView getWebView() {
return m_WebView;
}
@Override
public WebViewClient getWebViewClient() {
return new MyWebViewClient();
}
@Override
public String getTitle() {
return m_Title;
}
@Override
public String getUrl() {
return m_Url;
}
@Override
public String Prefix() {
return "special";
}
@Override
public void reload() {
asyncTask = new LoadRulesTask().execute();
}
@Override
public AsyncTask getAsyncTask() {
return asyncTask;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setArrow();
}
@Override
public void onPause() {
super.onPause();
}
public static void showSpecial(String url) {
m_Url = url.trim();
MainActivity.addTab(m_Title, m_Url, new SpecialView());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.webview_fragment, container, false);
m_WebView = (AdvWebView) findViewById(R.id.wvBody);
initSwipeRefreshLayout();
assert view != null;
registerForContextMenu(m_WebView);
m_WebView.getSettings();
m_WebView.getSettings().setDomStorageEnabled(true);
m_WebView.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);
m_WebView.getSettings().setAppCachePath(getMainActivity().getApplicationContext().getCacheDir().getAbsolutePath());
m_WebView.getSettings().setAppCacheEnabled(true);
m_WebView.getSettings().setAllowFileAccess(true);
m_WebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
m_WebView.addJavascriptInterface(this, "HTMLOUT");
m_WebView.getSettings().setDefaultFontSize(Preferences.Topic.getFontSize());
m_WebView.setWebViewClient(new MyWebViewClient());
asyncTask = new LoadRulesTask().execute();
return view;
}
private class LoadRulesTask extends AsyncTask<String, String, Boolean> {
private String m_ThemeBody;
@Override
protected Boolean doInBackground(String... forums) {
try {
if (isCancelled()) return false;
Log.d("kek", m_Url+" : "+m_Title);
m_ThemeBody = Client.getInstance().performGet(m_Url);
Matcher matcher = PatternExtensions.compile("<title>([\\S\\s]*?)</title>").matcher(m_ThemeBody);
if (matcher.find())
m_Title = Html.fromHtml(matcher.group(1)).toString();
return true;
} catch (Throwable e) {
return false;
}
}
protected void onPreExecute() {
setLoading(true);
}
protected void onPostExecute(final Boolean success) {
setLoading(false);
if (isCancelled()) return;
if (success) {
showThemeBody(m_ThemeBody);
} else {
m_WebView.loadDataWithBaseURL("http://4pda.ru/forum/", m_ThemeBody, "text/html", "UTF-8", null);
}
}
}
private void showThemeBody(String body) {
try {
setTitle(m_Title);
m_WebView.loadDataWithBaseURL("http://4pda.ru/forum/", body, "text/html", "UTF-8", null);
} catch (Exception ex) {
AppLog.e(getMainActivity(), ex);
}
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, final String url) {
IntentActivity.tryShowUrl(getMainActivity(), new Handler(), url, true, false);
return true;
}
}
}