package net.dev123.yibo.service.listener;
import net.dev123.mblog.entity.Group;
import net.dev123.yibo.GroupMemberActivity;
import net.dev123.yibo.R;
import net.dev123.yibo.common.SelectMode;
import net.dev123.yibo.service.adapter.GroupListAdapter;
import net.dev123.yibo.service.task.GroupDeleteTask;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
public class GroupContextMenuListener implements OnCreateContextMenuListener {
private GroupListAdapter adapter;
public GroupContextMenuListener(GroupListAdapter adapter) {
this.adapter = adapter;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
final AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int position = info.position;
if (position < 0 || position >= adapter.getCount()) {
return;
}
Group group = (Group)adapter.getItem(position);
if (group == null) {
return;
}
Context context = v.getContext();
analyzeCommentMenu(group, menu, context);
}
private void analyzeCommentMenu(final Group group, ContextMenu menu, final Context context) {
menu.setHeaderTitle(R.string.title_dialog_group);
int order = 0;
MenuItem replyMenu = menu.add(0, order, order++, R.string.menu_group_delete);
replyMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
new AlertDialog.Builder(context)
.setTitle(R.string.title_dialog_alert)
.setMessage(R.string.msg_group_delete_confirm)
.setNegativeButton(R.string.btn_cancel,
new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton(R.string.btn_confirm,
new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new GroupDeleteTask(adapter, group.getId()).execute();
}
}).show();
return true;
}
});
MenuItem profileMenu = menu.add(0, order, order++, R.string.menu_group_view);
profileMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("SELECT_MODE", SelectMode.Multiple.toString());
bundle.putSerializable("GROUP", group);
intent.putExtras(bundle);
intent.setClass(context, GroupMemberActivity.class);
context.startActivity(intent);
return true;
}
});
}
}