package net.coding.program.project.git;
import android.view.View;
import net.coding.program.R;
import net.coding.program.common.BlankViewDisplay;
import net.coding.program.common.ClickSmallImage;
import net.coding.program.common.MyImageGetter;
import net.coding.program.common.comment.BaseCommentParam;
import net.coding.program.common.widget.RefreshBaseActivity;
import net.coding.program.model.Commit;
import net.coding.program.model.Merge;
import net.coding.program.project.detail.merge.CommitFileListActivity_;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.androidannotations.annotations.ViewById;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import se.emilsjolander.stickylistheaders.ExpandableStickyListHeadersListView;
@EActivity(R.layout.fragment_project_dynamic)
//@OptionsMenu(R.menu.menu_commit_list)
public class CommitListActivity extends RefreshBaseActivity {
private static final String HOST_COMMITS = "HOST_COMMITS";
@ViewById
protected ExpandableStickyListHeadersListView listView;
@ViewById
protected View blankLayout;
@Extra
Merge mMerge;
CommitsAdapter mAdapter;
private View.OnClickListener mOnClickListItem = new View.OnClickListener() {
@Override
public void onClick(View v) {
Commit commit = (Commit) v.getTag();
CommitFileListActivity_.intent(CommitListActivity.this).mCommit(commit).mProjectPath(mMerge.getProjectPath()).start();
}
};
private View.OnClickListener onClickRetry = new View.OnClickListener() {
@Override
public void onClick(View v) {
onRefresh();
}
};
@AfterViews
protected final void initCommitListActivity() {
BaseCommentParam param = new BaseCommentParam(new ClickSmallImage(this), mOnClickListItem,
new MyImageGetter(this), getImageLoad(), mOnClickUser);
mAdapter = new CommitsAdapter(param);
listView.setAdapter(mAdapter);
initByNetwork();
}
private void initByNetwork() {
getNetwork(mMerge.getHttpCommits(), HOST_COMMITS);
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException {
if (tag.equals(HOST_COMMITS)) {
setRefreshing(false);
if (code == 0) {
mAdapter.clearData();
JSONArray jsonArray = respanse.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); ++i) {
Commit commit = new Commit(jsonArray.getJSONObject(i));
mAdapter.appendData(commit);
}
mAdapter.notifyDataSetChanged();
} else {
showErrorMsg(code, respanse);
}
BlankViewDisplay.setBlank(mAdapter.getCount(), this, false, blankLayout, onClickRetry);
}
}
@Override
public void onRefresh() {
initByNetwork();
}
}