package com.asmack.im.ui;
import java.util.ArrayList;
import java.util.List;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Presence;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.BaseExpandableListAdapter;
import android.widget.EditText;
import android.widget.ExpandableListView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.asmack.im.R;
import com.asmack.im.comm.AContacterActivity;
import com.asmack.im.comm.ConnectionUtils;
import com.asmack.im.comm.manager.ContacterManager;
import com.asmack.im.comm.manager.ContacterManager.MRosterGroup;
import com.asmack.im.comm.model.User;
public class ContacterActivity extends AContacterActivity {
private ExpandableListView contacterList = null;
private ContacterExpandAdapter expandAdapter = null;
private ListView inviteList = null;
private InviteAdapter inviteAdapter = null;
private List<User> inviteUsers = new ArrayList<User>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_main);
init();
}
private void init() {
contacterList = (ExpandableListView) findViewById(R.id.main_expand_list);
expandAdapter = new ContacterExpandAdapter(
ContacterManager.getGroups(ConnectionUtils.getConnection()
.getRoster()));
contacterList.setAdapter(expandAdapter);
inviteList = (ListView) findViewById(R.id.main_invite_list);
inviteAdapter = new InviteAdapter();
inviteList.setAdapter(inviteAdapter);
inviteList.setOnItemClickListener(inviteListClick);
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
private OnClickListener contacterOnClick = new OnClickListener() {
@Override
public void onClick(View v) {
createChat((User) v.getTag());
}
};
private User clickUser = null;
private OnLongClickListener contacterOnLongClick = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
String[] longClickItems = null;
clickUser = (User) v.getTag();
if (clickUser.getGroupName() != null) {
longClickItems = new String[] { "设置昵称", "添加好友", "删除好友", "加入组",
"更改组名", "退出该组" };
} else {
longClickItems = new String[] { "设置昵称", "添加好友", "删除好友", "加入组" };
}
new AlertDialog.Builder(MContext)
.setItems(longClickItems,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
switch (which) {
// 设置昵称
case 0:
setNickname(clickUser);
break;
// 添加好友
case 1:
addSubscriber();
break;
// 删除好友
case 2:
try {
removeSubscriber(clickUser.getJID());
} catch (XMPPException e) {
}
break;
// 加入组
case 3:
addToGroup(clickUser);
break;
// 更改组名
case 4:
updateGroupNameA(clickUser
.getGroupName() + "");
break;
// 移出组
case 5:
removeUserFromGroup(clickUser,
clickUser.getGroupName());
break;
}
}
}).setTitle("选项").show();
return false;
}
};
/**
* 设置昵称
*
* @param user
*/
private void setNickname(final User user) {
final EditText name_input = new EditText(ContacterActivity.this);
name_input.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
name_input.setHint("输入昵称");
new AlertDialog.Builder(ContacterActivity.this).setTitle("修改昵称")
.setView(name_input)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String name = name_input.getText().toString();
if (!"".equals(name))
setNickname(user, name);
}
}).setNegativeButton("取消", null).show();
}
/**
* 添加好友
*/
private void addSubscriber() {
final EditText name_input = new EditText(ContacterActivity.this);
name_input.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
name_input.setHint("输入JID");
final EditText nickname = new EditText(ContacterActivity.this);
nickname.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
nickname.setHint("输入昵称");
LinearLayout layout = new LinearLayout(ContacterActivity.this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
layout.addView(name_input);
layout.addView(nickname);
new AlertDialog.Builder(ContacterActivity.this).setTitle("添加好友")
.setView(layout)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String n = nickname.getText().toString();
if ("".equals(n)) {
n = null;
}
try {
createSubscriber(name_input.getText().toString(),
n, null);
} catch (XMPPException e) {
}
}
}).setNegativeButton("取消", null).show();
}
/**
* 加入组
*
* @param user
*/
private void addToGroup(final User user) {
final EditText name_input = new EditText(ContacterActivity.this);
name_input.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
name_input.setHint("输入组名");
new AlertDialog.Builder(ContacterActivity.this).setTitle("加入组")
.setView(name_input)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String groupName = name_input.getText().toString();
if (!"".equals(groupName))
addUserToGroup(user, groupName);
}
}).setNegativeButton("取消", null).show();
}
/**
* 修改组名
*
* @param user
*/
private void updateGroupNameA(final String groupName) {
final EditText name_input = new EditText(ContacterActivity.this);
name_input.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
name_input.setHint("输入组名");
new AlertDialog.Builder(ContacterActivity.this).setTitle("修改组名")
.setView(name_input)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
updateGroupName(groupName, name_input.getText()
.toString());
}
}).setNegativeButton("取消", null).show();
}
private OnItemClickListener inviteListClick = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2,
long arg3) {
final String subFrom = view.getTag().toString();
new AlertDialog.Builder(MContext)
.setMessage(subFrom + "请求添加您为好友")
.setTitle("提示")
.setPositiveButton("添加",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
asmack的API实现XMPP协议通讯
4星 · 超过85%的资源 需积分: 10 156 浏览量
2013-01-18
14:02:24
上传
评论
收藏 3.14MB RAR 举报
极客公园
- 粉丝: 45
- 资源: 5
最新资源
- 农村信用社联合社计算机信息系统投产与变更管理办.docx
- 农村信用社联合社计算机信息系统数据管理办法.docx
- 利用SPSS作临床效度分析线上计算网站介绍-医学研究部统计谘.(医学PPT课件).ppt
- 利用Zabbix监控mysqldump定时备份数据库状态.docx
- 利用计算机解决问题的基本过程.doc
- 化工铁路通信工程总结.doc
- 北京大学网络教育软件工程作业.docx
- 医药公司(连锁店)计算机操作规程未新系统的自行按照旧制修改-新系统过制的编号加修模版.doc
- 医药公司(连锁店)计算机系统操作规程模版.doc
- 医药连锁门店计算机系统的操作和管理程序未新系统的自行按照旧制修改-新系统过制的编号加修模版.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页