package net.oschina.gitapp.ui;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Message;
import android.view.View;
import android.webkit.WebView;
import net.oschina.gitapp.AppException;
import net.oschina.gitapp.R;
import net.oschina.gitapp.api.HTTPRequestor;
import net.oschina.gitapp.bean.Project;
import net.oschina.gitapp.bean.ReadMe;
import net.oschina.gitapp.common.Contanst;
import net.oschina.gitapp.ui.baseactivity.BaseActionBarActivity;
/**
* 项目ReadMe文件详情
* @created 2014-07-17
* @author 火蚁(http://my.oschina.net/LittleDY)
*
*/
public class ProjectReadMeActivity extends BaseActionBarActivity {
private Project mProject;
private View mLoading;
private WebView mWebView;
public String linkCss = "<link rel=\"stylesheet\" type=\"text/css\" href=\"file:///android_asset/readme_style.css\">";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.project_readme_fragment);
Intent intent = getIntent();
if (intent != null) {
mProject = (Project) intent.getSerializableExtra(Contanst.PROJECT);
mTitle = "README.md";
mSubTitle = "master";
}
initView();
loadData();
}
private void initView() {
mLoading = findViewById(R.id.project_readme_loading);
mWebView = (WebView) findViewById(R.id.project_readme_webview);
}
private void loadData() {
new AsyncTask<Void, Void, Message>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Message doInBackground(Void... params) {
Message msg = new Message();
try {
msg.obj = getGitApplication().getReadMeFile(mProject.getId());
msg.what = 1;
} catch (Exception e) {
msg.what = -1;
msg.obj = e;
e.printStackTrace();
}
return msg;
}
@Override
protected void onPostExecute(Message msg) {
if (getActivity().isFinishing()) {
return;
}
mLoading.setVisibility(View.GONE);
if (msg.what == 1) {
ReadMe readMe = (ReadMe) msg.obj;
if (readMe.getContent() != null) {
mWebView.setVisibility(View.VISIBLE);
String body = linkCss + "<div class='markdown-body'>" + readMe.getContent() + "</div>";
mWebView.loadDataWithBaseURL(null, body, "text/html", HTTPRequestor.UTF_8, null);
} else {
getActivity().findViewById(R.id.project_readme_empty).setVisibility(View.VISIBLE);
}
} else {
if (msg.obj instanceof AppException) {
AppException e = (AppException)msg.obj;
if (e.getCode() == 404) {
getActivity().findViewById(R.id.project_readme_empty).setVisibility(View.VISIBLE);
} else {
((AppException)msg.obj).makeToast(getGitApplication());
}
}
}
}
}.execute();
}
}