package edu.hebtu.movingcampus.activity;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import edu.hebtu.movingcampus.R;
import edu.hebtu.movingcampus.activity.base.BaseActivity;
import edu.hebtu.movingcampus.activity.login.LoginActivity;
import edu.hebtu.movingcampus.biz.NewsDao;
import edu.hebtu.movingcampus.config.Urls;
import edu.hebtu.movingcampus.entity.NewsMore;
import edu.hebtu.movingcampus.subjects.NetworkChangeReceiver;
import edu.hebtu.movingcampus.subjects.NetworkChangeReceiver.NetworkchangeListener;
import edu.hebtu.movingcampus.utils.CommonUtil;
@SuppressLint("SetJavaScriptEnabled")
public class NewsDetailsActivity extends BaseActivity implements
OnClickListener, NetworkchangeListener {
private NewsDao detailDao;
static final String mimeType = "text/html";
static final String encoding = "utf-8";
public static final String ACTION_RESULT = null;
private TextView detailTitle;
private LinearLayout loadLayout;
private LinearLayout failLayout;
private Button bn_refresh;
private ImageView imgGoHome;
private WebView mWebView;
private String id;
private String mTitle;
private int screen_width;
private NewsMore responseEntity;
private SharedPreferences sharePre;
private String mKey;
public boolean loaded;
private ImageView mHome;
private ImageView mBack;
private ImageView mFroward;
private ImageView mRefresh;
private String mHomeURL;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.details_activity);
loaded = false;
Intent i = getIntent();
id = i.getStringExtra("id");
sharePre = getSharedPreferences(LoginActivity.SharedName,
Context.MODE_PRIVATE);
mKey = sharePre.getString(LoginActivity.KEY, "");
initData();
initControl();
bindButton();
}
private void initData() {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
screen_width = dm.widthPixels;
}
private void initControl() {
detailDao = new NewsDao(this);
detailTitle = (TextView) findViewById(R.id.details_textview_title);
detailTitle.setText(mTitle);
loadLayout = (LinearLayout) findViewById(R.id.view_loading);
failLayout = (LinearLayout) findViewById(R.id.view_load_fail);
bn_refresh = (Button) findViewById(R.id.btn_refresh);
mHome = (ImageView) findViewById(R.id.imgview_browser_home);
mBack = (ImageView) findViewById(R.id.imgview_browser_back);
mFroward = (ImageView) findViewById(R.id.imgview_browser_forward);
mRefresh = (ImageView) findViewById(R.id.imgview_browser_refresh);
mHome.setOnClickListener(this);
mBack.setOnClickListener(this);
mFroward.setOnClickListener(this);
mRefresh.setOnClickListener(this);
mHomeURL = String.format(Urls.NEWS_MORE, id);
// Initialize the WebView
mWebView = (WebView) findViewById(R.id.detail_webView);
this.mWebView.setBackgroundColor(0);
this.mWebView.setBackgroundResource(R.color.detail_bgColor);
mWebView.getSettings()
.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.getSettings().setSupportZoom(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setScrollbarFadingEnabled(true);
mWebView.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);
mWebView.getSettings().setLoadsImagesAutomatically(true);
bn_refresh.setOnClickListener(this);
imgGoHome = (ImageView) findViewById(R.id.details_imageview_gohome);
imgGoHome.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
new MyTask().execute();
}
class MyTask extends AsyncTask<String, Integer, String> {
private boolean mUseCache;
public MyTask() {
mUseCache = false;
}
public MyTask(boolean useCache) {
mUseCache = useCache;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
loaded = false;
loadLayout.setVisibility(View.VISIBLE);
failLayout.setVisibility(View.GONE);
mWebView.setVisibility(View.GONE);
}
@Override
protected String doInBackground(String... params) {
if ((responseEntity = detailDao.mapperJson(id)) != null) {
return responseEntity.getDetail();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result != null) {
String linkCss = "<link rel=\"stylesheet\" href=\"file:///android_asset/pygments.css\" type=\"text/css\"/>";
String content = linkCss + result;
try {
content = content.replace(
"img{}",
"img{width:"
+ CommonUtil.px2dip(
NewsDetailsActivity.this,
screen_width) + "}");
content = content.replaceAll("<br />", "");
} catch (NullPointerException e) {
e.printStackTrace();
}
loadLayout.setVisibility(View.GONE);
failLayout.setVisibility(View.GONE);
mWebView.setVisibility(View.VISIBLE);
mWebView.setBackgroundResource(R.color.detail_bgColor);
mWebView.loadDataWithBaseURL(null, content, "text/html",
"utf-8", null);
loaded = true;
} else {
loadLayout.setVisibility(View.GONE);
mWebView.setVisibility(View.GONE);
failLayout.setVisibility(View.VISIBLE);
}
}
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_refresh) {
new MyTask().execute();
return;
}
if (responseEntity == null)
return;
switch (v.getId()) {
// case R.id.rlShare:
// recommandToYourFriend(shareUrl, shareTitle);
// break;
case R.id.imgview_browser_home: {
if (mHomeURL != null) {
mWebView.loadUrl(mHomeURL);
}
}
break;
case R.id.imgview_browser_refresh: {
mWebView.reload();
}
break;
case R.id.imgview_browser_forward: {
mWebView.goForward();
}
break;
case R.id.imgview_browser_back: {
mWebView.goBack();
}
}
}
@Override
protected void bindButton() {
findViewById(R.id.details_imageview_gohome).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
NewsDetailsActivity.this.finish();
}
});
}
@Override
public void onDataEnabled() {
if (!loaded) {
MyTask mTask = new MyTask();
mTask.execute();
}
}
@Override
public void onDataDisabled() {
mWebView.stopLoading();
}
@Override
public void onResume() {
super.onResume();
NetworkChangeReceiver.registNetWorkListener(this);
}
@Override
public void onPause() {
super.onPause();
NetworkChangeReceiver.unRegistNetworkListener(this);
}
}