package net.coding.program.project;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.readystatesoftware.viewbadger.BadgeView;
import net.coding.program.R;
import net.coding.program.common.BlankViewDisplay;
import net.coding.program.common.Global;
import net.coding.program.common.ImageLoadTool;
import net.coding.program.common.widget.RefreshBaseActivity;
import net.coding.program.model.AccountInfo;
import net.coding.program.model.ProjectObject;
import net.coding.program.project.init.create.ProjectCreateActivity_;
import net.coding.program.search.SearchProjectActivity_;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.ItemClick;
import org.androidannotations.annotations.OptionsItem;
import org.androidannotations.annotations.OptionsMenu;
import org.androidannotations.annotations.ViewById;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* Created by Vernon on 15/11/20.
*/
@OptionsMenu(R.menu.menu_project_pick_search)
@EActivity(R.layout.activity_project_sqaure)
public class ProjectSquareActivity extends RefreshBaseActivity implements OnClickListener {
final String hostSquare = Global.HOST_API + "/public/all?page=1&pageSize=1000";
@ViewById
View emptyView, container;
@ViewById
ListView listView;
@ViewById
View blankLayout;
private ArrayList<ProjectObject> mData = new ArrayList<>();
private MyAdapter adapter;
@ViewById
LinearLayout project_create_layout;
@ViewById
Button btn_action;
private boolean mRequestOk;
private boolean requestOk;
@AfterViews
void init() {
initRefreshBaseActivity();
setRefreshing(true);
btn_action.setOnClickListener(this);
showDialogLoading();
loadMore();
}
private void loadMore() {
getNetwork(hostSquare, hostSquare);
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(0, 0);
}
@Override
public void onRefresh() {
loadMore();
}
@ItemClick
public void listView(ProjectObject item) {
ProjectHomeActivity_.intent(this).mProjectObject(item).start();
}
private OnClickListener mOnClickRetry = new OnClickListener() {
@Override
public void onClick(View v) {
onRefresh();
}
};
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_action:
ProjectCreateActivity_.intent(this).start();
break;
}
}
@OptionsItem
void action_search_pick() {
SearchProjectActivity_.intent(this).start();
overridePendingTransition(R.anim.abc_fade_in, R.anim.abc_fade_out);
}
private static class ViewHolder {
TextView name2;
TextView tv_star_count;
TextView tv_follow_count;
TextView tv_fork_count;
LinearLayout ll_bottom_menu;
ImageView image;
TextView content;
TextView desc;
BadgeView badge;
View privateIcon;
}
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
final ViewHolder holder;
if (convertView == null) {
view = mInflater.inflate(R.layout.project_all_list_item, parent, false);
holder = new ViewHolder();
holder.name2 = (TextView) view.findViewById(R.id.name2);
holder.image = (ImageView) view.findViewById(R.id.icon);
holder.content = (TextView) view.findViewById(R.id.comment);
holder.badge = (BadgeView) view.findViewById(R.id.badge);
holder.privateIcon = view.findViewById(R.id.privateIcon);
holder.tv_follow_count = (TextView) view.findViewById(R.id.tv_follow_count);
holder.tv_fork_count = (TextView) view.findViewById(R.id.tv_fork_count);
holder.tv_star_count = (TextView) view.findViewById(R.id.tv_start_count);
holder.ll_bottom_menu = (LinearLayout) view.findViewById(R.id.ll_bottom_menu);
holder.desc = (TextView) view.findViewById(R.id.txtDesc);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
ProjectObject item = (ProjectObject) getItem(position);
holder.privateIcon.setVisibility(View.INVISIBLE);
holder.name2.setVisibility(View.VISIBLE);
holder.name2.setText(item.name);
holder.privateIcon.setVisibility(item.isPublic() ? View.INVISIBLE : View.VISIBLE);
holder.content.setVisibility(View.INVISIBLE);
holder.desc.setText(item.getDescription());
holder.tv_follow_count.setText(item.getWatch_count() + "");
holder.tv_star_count.setText(item.getStar_count() + "");
holder.tv_fork_count.setText(item.getFork_count() + "");
holder.badge.setVisibility(View.INVISIBLE);
holder.ll_bottom_menu.setVisibility(View.VISIBLE);
ImageLoader.getInstance().displayImage(item.icon, holder.image, ImageLoadTool.optionsRounded2);
return view;
}
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException {
if (tag.equals(hostSquare)) {
setRefreshing(false);
if (code == 0) {
requestOk = true;
hideProgressDialog();
mData.clear();
JSONArray array = respanse.getJSONObject("data").getJSONArray("list");
int pinCount = 0;
for (int i = 0; i < array.length(); ++i) {
JSONObject item = array.getJSONObject(i);
ProjectObject oneData = new ProjectObject(item);
if (oneData.isPin()) {
mData.add(pinCount++, oneData);
} else {
mData.add(oneData);
}
}
AccountInfo.saveProjects(this, mData);
if (adapter == null) {
adapter = new MyAdapter();
listView.setAdapter(adapter);
} else {
adapter.notifyDataSetChanged();
}
if (!(mData.size() > 0)) {
project_create_layout.setVisibility(View.VISIBLE);
} else {
project_create_layout.setVisibility(View.GONE);
}
} else {
requestOk = false;
showErrorMsg(code, respanse);
BlankViewDisplay.setBlank(mData.size(), this, mRequestOk, blankLayout, mOnClickRetry);
// adapter.notifyDataSetChanged();
}
}
}
}