package net.coding.program.project.detail;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import net.coding.program.FootUpdate;
import net.coding.program.R;
import net.coding.program.common.Global;
import net.coding.program.common.ui.BackActivity;
import net.coding.program.model.TaskObject;
import net.coding.program.model.UserObject;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.androidannotations.annotations.OptionsItem;
import org.androidannotations.annotations.ViewById;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
@EActivity(R.layout.activity_members)
public class MembersActivity extends BackActivity implements FootUpdate.LoadMore {
@Extra
protected int mProjectObjectId;
protected String getProjectMembers = "getProjectMembers";
protected String urlMembers = "";
protected ArrayList<TaskObject.Members> mMembersArray = new ArrayList<>();
@ViewById
protected ListView listView;
protected BaseAdapter adapter = new BaseAdapter() {
@Override
public int getCount() {
return mMembersArray.size();
}
@Override
public Object getItem(int position) {
return mMembersArray.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.activity_members_list_item, parent, false);
holder = new ViewHolder();
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
holder.watchCheck = convertView.findViewById(R.id.watchCheck);
holder.ic = (ImageView) convertView.findViewById(R.id.ic);
holder.alias = (TextView) convertView.findViewById(R.id.alias);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
TaskObject.Members data = mMembersArray.get(position);
holder.name.setText(data.user.name);
iconfromNetwork(holder.icon, data.user.avatar);
updateChecked(holder, data);
UserObject user = data.user;
TaskObject.Members.Type memberType = data.getType();
int iconRes = memberType.getIcon();
if (iconRes == 0) {
holder.ic.setVisibility(View.GONE);
} else {
holder.ic.setVisibility(View.VISIBLE);
holder.ic.setImageResource(iconRes);
}
if (!data.alias.isEmpty()) {
holder.alias.setText(data.alias);
holder.alias.setVisibility(View.VISIBLE);
} else {
holder.alias.setVisibility(View.GONE);
}
if (position == mMembersArray.size() - 1) {
loadMore();
}
return convertView;
}
};
protected void updateChecked(ViewHolder holder, TaskObject.Members data) {
}
@AfterViews
protected final void initMembersActivity() {
final String format = Global.HOST_API + "/project/%d/members?";
urlMembers = String.format(format, mProjectObjectId);
mFootUpdate.init(listView, mInflater, this);
listView.setAdapter(adapter);
listView.setOnItemClickListener((parent, view, position, id) -> {
Intent intent = new Intent();
TaskObject.Members members = mMembersArray.get(position);
intent.putExtra("members", members);
setResult(Activity.RESULT_OK, intent);
finish();
});
loadMore();
}
@Override
public void loadMore() {
getNextPageNetwork(urlMembers, getProjectMembers);
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException {
if (tag.equals(getProjectMembers)) {
if (code == 0) {
ArrayList<TaskObject.Members> usersInfo = new ArrayList<>();
JSONArray members = respanse.getJSONObject("data").getJSONArray("list");
for (int i = 0; i < members.length(); ++i) {
mMembersArray.add(new TaskObject.Members(members.getJSONObject(i)));
}
adapter.notifyDataSetChanged();
} else {
showErrorMsg(code, respanse);
}
}
}
@OptionsItem
public void action_add() {
}
protected static class ViewHolder {
public ImageView icon;
public TextView name;
public View watchCheck;
TextView alias;
ImageView ic;
}
}