package net.coding.program.task.add;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.text.Html;
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.R;
import net.coding.program.common.Global;
import net.coding.program.common.base.MyJsonResponse;
import net.coding.program.common.htmltext.URLSpanNoUnderline;
import net.coding.program.common.network.MyAsyncHttpClient;
import net.coding.program.common.ui.BackActivity;
import net.coding.program.model.RefResourceObject;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.androidannotations.annotations.ItemClick;
import org.androidannotations.annotations.ItemLongClick;
import org.androidannotations.annotations.ViewById;
import org.json.JSONObject;
import java.io.Serializable;
import java.util.ArrayList;
@EActivity(R.layout.activity_ref_resource)
public class RefResourceActivity extends BackActivity {
@Extra
ArrayList<RefResourceObject> mData;
@Extra
Param mParam;
@ViewById
ListView listView;
@AfterViews
final void initRefResourceActivity() {
listView.setAdapter(adapter);
}
@ItemClick(R.id.listView)
void itemClick(RefResourceObject item) {
URLSpanNoUnderline.openActivityByUri(this, item.link, false);
}
@ItemLongClick(R.id.listView)
void itemLongClick(RefResourceObject item) {
new AlertDialog.Builder(this)
.setItems(new String[]{"取消关联"},
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
deleteRef(item);
}
}
})
.show();
}
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("resultData", mData);
setResult(RESULT_OK, intent);
finish();
}
private void deleteRef(RefResourceObject item) {
String url = String.format("%s%s/resource_reference/%d?iid=%d", Global.HOST_API,
mParam.projectPath, mParam.taskId, item.code);
MyAsyncHttpClient.delete(this, url, new MyJsonResponse(this) {
@Override
public void onMySuccess(JSONObject response) {
super.onMySuccess(response);
mData.remove(item);
adapter.notifyDataSetChanged();
}
});
}
BaseAdapter adapter = new 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) {
Holder holder;
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.list_item_ref_resource, parent, false);
holder = new Holder();
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
holder.title = (TextView) convertView.findViewById(R.id.title);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
RefResourceObject data = mData.get(position);
int iconId;
switch (data.target_type) {
case "Task":
iconId = R.drawable.ic_task_ref_task;
break;
case "MergeRequestBean":
iconId = R.drawable.ic_task_ref_mr;
break;
case "ProjectTopic":
iconId = R.drawable.ic_task_ref_topic;
break;
default: // ProjectFile
iconId = R.drawable.ic_task_ref_file;
break;
}
holder.icon.setImageResource(iconId);
String format = "<font color=\"#3bbd79\">#%d</font> %s";
holder.title.setText(Html.fromHtml(String.format(format, data.code, data.title)));
return convertView;
}
class Holder {
ImageView icon;
TextView title;
}
};
public static class Param implements Serializable {
String projectPath;
int taskId;
public Param(String projectPath, int taskId) {
this.projectPath = projectPath;
this.taskId = taskId;
}
}
}