|
|
@@ -6,6 +6,7 @@ import android.content.BroadcastReceiver;
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
import android.os.Bundle;
|
|
|
+import android.os.Environment;
|
|
|
import android.util.Log;
|
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.Menu;
|
|
|
@@ -24,308 +25,383 @@ import com.android.volley.Response.ErrorListener;
|
|
|
import com.android.volley.VolleyError;
|
|
|
import com.handmark.pulltorefresh.library.PullToRefreshBase;
|
|
|
import com.handmark.pulltorefresh.library.PullToRefreshListView;
|
|
|
+import com.loopj.android.http.AsyncHttpClient;
|
|
|
+import com.loopj.android.http.AsyncHttpResponseHandler;
|
|
|
+import com.loopj.android.http.RequestParams;
|
|
|
import com.xzjmyk.pm.activity.AppConfig;
|
|
|
-import com.xzjmyk.pm.activity.db.dao.FriendDao;
|
|
|
-import com.xzjmyk.pm.activity.helper.AvatarHelper;
|
|
|
-import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
|
|
|
-import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
|
|
|
-import com.xzjmyk.pm.activity.volley.ArrayResult;
|
|
|
-import com.xzjmyk.pm.activity.volley.StringJsonArrayRequest;
|
|
|
import com.xzjmyk.pm.activity.AppConstant;
|
|
|
import com.xzjmyk.pm.activity.MyApplication;
|
|
|
import com.xzjmyk.pm.activity.R;
|
|
|
import com.xzjmyk.pm.activity.bean.Friend;
|
|
|
import com.xzjmyk.pm.activity.bean.message.MucRoom;
|
|
|
import com.xzjmyk.pm.activity.broadcast.MucgroupUpdateUtil;
|
|
|
+import com.xzjmyk.pm.activity.db.dao.FriendDao;
|
|
|
+import com.xzjmyk.pm.activity.helper.AvatarHelper;
|
|
|
import com.xzjmyk.pm.activity.ui.base.BaseActivity;
|
|
|
import com.xzjmyk.pm.activity.ui.base.EasyFragment;
|
|
|
+import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
|
|
|
+import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
|
|
|
import com.xzjmyk.pm.activity.util.TimeUtils;
|
|
|
import com.xzjmyk.pm.activity.util.ToastUtil;
|
|
|
import com.xzjmyk.pm.activity.util.ViewHolder;
|
|
|
+import com.xzjmyk.pm.activity.volley.ArrayResult;
|
|
|
import com.xzjmyk.pm.activity.volley.Result;
|
|
|
+import com.xzjmyk.pm.activity.volley.StringJsonArrayRequest;
|
|
|
+
|
|
|
+import org.apache.http.Header;
|
|
|
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileNotFoundException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
|
|
|
public class GroupChatFragment extends EasyFragment {
|
|
|
- private PullToRefreshListView mPullToRefreshListView;
|
|
|
- private List<MucRoom> mMucRooms;
|
|
|
- private MucRoomAdapter mAdapter;
|
|
|
- private int mPageIndex = 0;
|
|
|
- private BaseActivity mActivity;
|
|
|
- private boolean mNeedUpdate = true;
|
|
|
- private BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() {
|
|
|
- @Override
|
|
|
- public void onReceive(Context context, Intent intent) {
|
|
|
- if (intent.getAction().equals(MucgroupUpdateUtil.ACTION_UPDATE)) {
|
|
|
- if (isResumed()) {
|
|
|
- requestData(true);
|
|
|
- } else {
|
|
|
- mNeedUpdate = true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- public GroupChatFragment() {
|
|
|
- mMucRooms = new ArrayList<MucRoom>();
|
|
|
- mAdapter = new MucRoomAdapter();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onCreate(Bundle savedInstanceState) {
|
|
|
- super.onCreate(savedInstanceState);
|
|
|
- setHasOptionsMenu(true);
|
|
|
- getActivity().registerReceiver(mUpdateReceiver,
|
|
|
- MucgroupUpdateUtil.getUpdateActionFilter());
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onDestroy() {
|
|
|
- super.onDestroy();
|
|
|
- getActivity().unregisterReceiver(mUpdateReceiver);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
|
|
- inflater.inflate(R.menu.menu_add_icon, menu);
|
|
|
- super.onCreateOptionsMenu(menu, inflater);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
- if (item.getItemId() == R.id.add_item) {
|
|
|
- startActivity(new Intent(getActivity(),
|
|
|
- SelectContactsActivity.class));
|
|
|
- }
|
|
|
- return super.onOptionsItemSelected(item);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected int inflateLayoutId() {
|
|
|
- return R.layout.layout_pullrefresh_list;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected void onCreateView(Bundle savedInstanceState, boolean createView) {
|
|
|
- if (createView) {
|
|
|
- initView();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressLint("InflateParams")
|
|
|
- private void initView() {
|
|
|
- mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
|
|
|
- mPullToRefreshListView.setAdapter(mAdapter);
|
|
|
-
|
|
|
- View emptyView = LayoutInflater.from(getActivity()).inflate(
|
|
|
- R.layout.layout_list_empty_view, null);
|
|
|
- mPullToRefreshListView.setEmptyView(emptyView);
|
|
|
-
|
|
|
- mPullToRefreshListView.getRefreshableView().setAdapter(mAdapter);
|
|
|
-
|
|
|
- mPullToRefreshListView
|
|
|
- .setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
|
|
|
- @Override
|
|
|
- public void onPullDownToRefresh(
|
|
|
- PullToRefreshBase<ListView> refreshView) {
|
|
|
- requestData(true);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onPullUpToRefresh(
|
|
|
- PullToRefreshBase<ListView> refreshView) {
|
|
|
- requestData(false);
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- /**@注释:点击进入房间的逻辑 */
|
|
|
- mPullToRefreshListView.getRefreshableView().setOnItemClickListener(
|
|
|
- new AdapterView.OnItemClickListener() {
|
|
|
- @Override
|
|
|
- public void onItemClick(AdapterView<?> parent, View view,
|
|
|
- int position, long id) {
|
|
|
- MucRoom room = mMucRooms.get((int) id);
|
|
|
- String loginUserId = MyApplication.getInstance().mLoginUser
|
|
|
- .getUserId();
|
|
|
- Friend friend = FriendDao.getInstance().getFriend(
|
|
|
- loginUserId, room.getJid());
|
|
|
- if (friend == null) {// friend为null,说明之前没加入过该房间,那么调用接口加入
|
|
|
- // 将房间作为一个好友存到好友表
|
|
|
- joinRoom(room, loginUserId);
|
|
|
- } else {
|
|
|
- interMucChat(room.getJid(), room.getName());
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- private void interMucChat(String roomJid, String roomName) {
|
|
|
- Intent intent = new Intent(getActivity(), MucChatActivity.class);
|
|
|
- intent.putExtra(AppConstant.EXTRA_USER_ID, roomJid);
|
|
|
- intent.putExtra(AppConstant.EXTRA_NICK_NAME, roomName);
|
|
|
- intent.putExtra(AppConstant.EXTRA_IS_GROUP_CHAT, true);
|
|
|
- startActivity(intent);
|
|
|
- }
|
|
|
-
|
|
|
- private void joinRoom(final MucRoom room, final String loginUserId) {
|
|
|
- Log.d("roamer","joinRoom");
|
|
|
- HashMap<String, String> params = new HashMap<String, String>();
|
|
|
- params.put("access_token", MyApplication.getInstance().mAccessToken);
|
|
|
- params.put("roomId", room.getId());
|
|
|
- if (room.getUserId() == loginUserId)
|
|
|
- params.put("type", "1");
|
|
|
- else
|
|
|
- params.put("type", "2");
|
|
|
-
|
|
|
- final ProgressDialog dialog = ProgressDialogUtil.init(getActivity(),
|
|
|
- null, getString(R.string.please_wait));
|
|
|
- ProgressDialogUtil.show(dialog);
|
|
|
-
|
|
|
- StringJsonArrayRequest<Void> request = new StringJsonArrayRequest<Void>(
|
|
|
- mActivity.mConfig.ROOM_JOIN, new ErrorListener() {
|
|
|
- @Override
|
|
|
- public void onErrorResponse(VolleyError arg0) {
|
|
|
- ToastUtil.showErrorNet(getActivity());
|
|
|
- ProgressDialogUtil.dismiss(dialog);
|
|
|
- }
|
|
|
- }, new StringJsonArrayRequest.Listener<Void>() {
|
|
|
- @Override
|
|
|
- public void onResponse(ArrayResult<Void> result) {
|
|
|
- boolean success = Result.defaultParser(getActivity(),
|
|
|
- result, true);
|
|
|
- if (success) {
|
|
|
- Friend friend = new Friend();// 将房间也存为好友
|
|
|
- friend.setOwnerId(loginUserId);
|
|
|
- friend.setUserId(room.getJid());
|
|
|
- friend.setNickName(room.getName());
|
|
|
- friend.setDescription(room.getDesc());
|
|
|
- friend.setRoomFlag(1);
|
|
|
- friend.setRoomId(room.getId());
|
|
|
- friend.setRoomCreateUserId(room.getUserId());
|
|
|
- // timeSend作为取群聊离线消息的标志,所以要在这里设置一个初始值
|
|
|
- friend.setTimeSend(TimeUtils.sk_time_current_time());
|
|
|
- friend.setStatus(Friend.STATUS_FRIEND);
|
|
|
- FriendDao.getInstance()
|
|
|
- .createOrUpdateFriend(friend);//创建或者更新好友...
|
|
|
-
|
|
|
- interMucChat(room.getJid(), room.getName());
|
|
|
- }
|
|
|
- ProgressDialogUtil.dismiss(dialog);
|
|
|
- }
|
|
|
- }, Void.class, params);
|
|
|
- mActivity.addDefaultRequest(request);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onResume() {
|
|
|
- super.onResume();
|
|
|
- if (mNeedUpdate) {
|
|
|
- mNeedUpdate = false;
|
|
|
- mPullToRefreshListView.post(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- mPullToRefreshListView.setPullDownRefreshing(200);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onActivityCreated(Bundle savedInstanceState) {
|
|
|
- super.onActivityCreated(savedInstanceState);
|
|
|
- mActivity = (BaseActivity) getActivity();
|
|
|
- }
|
|
|
-
|
|
|
- private void requestData(final boolean isPullDwonToRefersh) {
|
|
|
- if (isPullDwonToRefersh) {
|
|
|
- mPageIndex = 0;
|
|
|
- }
|
|
|
- HashMap<String, String> params = new HashMap<String, String>();
|
|
|
- params.put("pageIndex", String.valueOf(mPageIndex));
|
|
|
- params.put("pageSize", String.valueOf(AppConfig.PAGE_SIZE));
|
|
|
- params.put("access_token", MyApplication.getInstance().mAccessToken);
|
|
|
- StringJsonArrayRequest<MucRoom> request = new StringJsonArrayRequest<MucRoom>(
|
|
|
- mActivity.mConfig.ROOM_LIST_HIS, new ErrorListener() {
|
|
|
- @Override
|
|
|
- public void onErrorResponse(VolleyError arg0) {
|
|
|
- ToastUtil.showErrorNet(getActivity());
|
|
|
- mPullToRefreshListView.onRefreshComplete();
|
|
|
- }
|
|
|
- }, new StringJsonArrayRequest.Listener<MucRoom>() {
|
|
|
- @Override
|
|
|
- public void onResponse(ArrayResult<MucRoom> result) {
|
|
|
-
|
|
|
- boolean success = Result.defaultParser(getActivity(),
|
|
|
- result, true);
|
|
|
- if (success) {
|
|
|
- mPageIndex++;
|
|
|
- if (isPullDwonToRefersh) {
|
|
|
- mMucRooms.clear();
|
|
|
- }
|
|
|
- List<MucRoom> datas = result.getData();
|
|
|
- Log.i("Arison","datas:"+ JSON.toJSONString(datas));
|
|
|
- if (datas != null && datas.size() > 0) {
|
|
|
- for (int i=0;i<datas.size();i++) {
|
|
|
- if (datas.get(i).getCategory() == 1) {
|
|
|
- } else {
|
|
|
- mMucRooms.add(datas.get(i));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- mAdapter.notifyDataSetChanged();
|
|
|
- }
|
|
|
- mPullToRefreshListView.onRefreshComplete();
|
|
|
- }
|
|
|
- }, MucRoom.class, params);
|
|
|
- mActivity.addDefaultRequest(request);
|
|
|
- }
|
|
|
-
|
|
|
- public class MucRoomAdapter extends BaseAdapter {
|
|
|
-
|
|
|
- @Override
|
|
|
- public int getCount() {
|
|
|
- return mMucRooms.size();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public Object getItem(int position) {
|
|
|
- return mMucRooms.get(position);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public long getItemId(int position) {
|
|
|
- return position;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public View getView(final int position, View convertView,
|
|
|
- ViewGroup parent) {
|
|
|
- if (convertView == null) {
|
|
|
- convertView = LayoutInflater.from(getActivity()).inflate(
|
|
|
- R.layout.row_muc_room, parent, false);
|
|
|
- }
|
|
|
- ImageView avatar_img = ViewHolder.get(convertView, R.id.avatar_img);
|
|
|
- TextView nick_name_tv = ViewHolder.get(convertView,
|
|
|
- R.id.nick_name_tv);
|
|
|
- TextView content_tv = ViewHolder.get(convertView, R.id.content_tv);
|
|
|
- TextView time_tv = ViewHolder.get(convertView, R.id.time_tv);
|
|
|
-
|
|
|
- final MucRoom room = mMucRooms.get(position);
|
|
|
- AvatarHelper.getInstance().displayAvatar(room.getUserId(),
|
|
|
- avatar_img, true);
|
|
|
-
|
|
|
- nick_name_tv.setText(room.getName());
|
|
|
- time_tv.setText(TimeUtils.getFriendlyTimeDesc(getActivity(),
|
|
|
- (int) room.getCreateTime()));
|
|
|
- content_tv.setText(room.getDesc());
|
|
|
- return convertView;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
+ private PullToRefreshListView mPullToRefreshListView;
|
|
|
+ private List<MucRoom> mMucRooms;
|
|
|
+ private MucRoomAdapter mAdapter;
|
|
|
+ private int mPageIndex = 0;
|
|
|
+ private BaseActivity mActivity;
|
|
|
+ private boolean mNeedUpdate = true;
|
|
|
+ private BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() {
|
|
|
+ @Override
|
|
|
+ public void onReceive(Context context, Intent intent) {
|
|
|
+ if (intent.getAction().equals(MucgroupUpdateUtil.ACTION_UPDATE)) {
|
|
|
+ if (isResumed()) {
|
|
|
+ requestData(true);
|
|
|
+ } else {
|
|
|
+ mNeedUpdate = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ private AppConfig mConfig;
|
|
|
+
|
|
|
+ public GroupChatFragment() {
|
|
|
+ mMucRooms = new ArrayList<MucRoom>();
|
|
|
+ mAdapter = new MucRoomAdapter();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onCreate(Bundle savedInstanceState) {
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
+ setHasOptionsMenu(true);
|
|
|
+ getActivity().registerReceiver(mUpdateReceiver,
|
|
|
+ MucgroupUpdateUtil.getUpdateActionFilter());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onDestroy() {
|
|
|
+ super.onDestroy();
|
|
|
+ getActivity().unregisterReceiver(mUpdateReceiver);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
|
|
+ inflater.inflate(R.menu.menu_add_icon, menu);
|
|
|
+ super.onCreateOptionsMenu(menu, inflater);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
+ if (item.getItemId() == R.id.add_item) {
|
|
|
+ startActivity(new Intent(getActivity(),
|
|
|
+ SelectContactsActivity.class));
|
|
|
+ }
|
|
|
+ return super.onOptionsItemSelected(item);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected int inflateLayoutId() {
|
|
|
+ return R.layout.layout_pullrefresh_list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCreateView(Bundle savedInstanceState, boolean createView) {
|
|
|
+ if (createView) {
|
|
|
+ initView();
|
|
|
+ init();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void init() {
|
|
|
+ mConfig = MyApplication.getInstance().getConfig();
|
|
|
+ for (int i = 0; i < mMucRooms.size(); i++) {
|
|
|
+ mMucRooms.get(i).getJid();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ boolean b = false;
|
|
|
+
|
|
|
+ private void test() {
|
|
|
+ for (int i = 0; i < mMucRooms.size(); i++) {
|
|
|
+ Log.i("gongpengming", mMucRooms.get(i).getId());
|
|
|
+ Log.i("gongpengming", mMucRooms.get(i).getJid());
|
|
|
+ Log.i("gongpengming", mMucRooms.get(i).getName());
|
|
|
+ Log.i("gongpengming", mMucRooms.get(i).getUserId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void uploadAvatar() {
|
|
|
+ File file = new File(Environment.getExternalStorageDirectory() + "/head1.jpg");
|
|
|
+ if (!file.exists()) {// 文件不存在
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 显示正在上传的ProgressDialog
|
|
|
+ RequestParams params = new RequestParams();
|
|
|
+ params.put("userId", 200403010);
|
|
|
+ try {
|
|
|
+ params.put("file1", file);
|
|
|
+ } catch (FileNotFoundException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ AsyncHttpClient client = new AsyncHttpClient();
|
|
|
+ client.post(mConfig.AVATAR_UPLOAD_URL, params, new AsyncHttpResponseHandler() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
|
|
|
+ boolean success = false;
|
|
|
+ Log.i("gongpengming", "上传成功");
|
|
|
+ if (arg0 == 200) {
|
|
|
+ Result result = null;
|
|
|
+ try {
|
|
|
+ result = JSON.parseObject(new String(arg2), Result.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ if (result != null && result.getResultCode() == Result.CODE_SUCCESS) {
|
|
|
+ success = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (success) {
|
|
|
+
|
|
|
+
|
|
|
+ } else {
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @SuppressLint("InflateParams")
|
|
|
+ private void initView() {
|
|
|
+ mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
|
|
|
+
|
|
|
+
|
|
|
+ View emptyView = LayoutInflater.from(getActivity()).inflate(
|
|
|
+ R.layout.layout_list_empty_view, null);
|
|
|
+ mPullToRefreshListView.setEmptyView(emptyView);
|
|
|
+
|
|
|
+ mPullToRefreshListView.getRefreshableView().setAdapter(mAdapter);
|
|
|
+
|
|
|
+ mPullToRefreshListView
|
|
|
+ .setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
|
|
|
+ @Override
|
|
|
+ public void onPullDownToRefresh(
|
|
|
+ PullToRefreshBase<ListView> refreshView) {
|
|
|
+ requestData(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onPullUpToRefresh(
|
|
|
+ PullToRefreshBase<ListView> refreshView) {
|
|
|
+ requestData(false);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ /**@注释:点击进入房间的逻辑 */
|
|
|
+ mPullToRefreshListView.getRefreshableView().setOnItemClickListener(
|
|
|
+ new AdapterView.OnItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onItemClick(AdapterView<?> parent, View view,
|
|
|
+ int position, long id) {
|
|
|
+ MucRoom room = mMucRooms.get((int) id);
|
|
|
+ String loginUserId = MyApplication.getInstance().mLoginUser
|
|
|
+ .getUserId();
|
|
|
+ Friend friend = FriendDao.getInstance().getFriend(
|
|
|
+ loginUserId, room.getJid());
|
|
|
+ if (friend == null) {// friend为null,说明之前没加入过该房间,那么调用接口加入
|
|
|
+ // 将房间作为一个好友存到好友表
|
|
|
+ joinRoom(room, loginUserId);
|
|
|
+ } else {
|
|
|
+ interMucChat(room.getJid(), room.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private void interMucChat(String roomJid, String roomName) {
|
|
|
+ Intent intent = new Intent(getActivity(), MucChatActivity.class);
|
|
|
+ intent.putExtra(AppConstant.EXTRA_USER_ID, roomJid);
|
|
|
+ intent.putExtra(AppConstant.EXTRA_NICK_NAME, roomName);
|
|
|
+ intent.putExtra(AppConstant.EXTRA_IS_GROUP_CHAT, true);
|
|
|
+ startActivity(intent);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void joinRoom(final MucRoom room, final String loginUserId) {
|
|
|
+ HashMap<String, String> params = new HashMap<String, String>();
|
|
|
+ params.put("access_token", MyApplication.getInstance().mAccessToken);
|
|
|
+ params.put("roomId", room.getId());
|
|
|
+ if (room.getUserId() == loginUserId)
|
|
|
+ params.put("type", "1");
|
|
|
+ else
|
|
|
+ params.put("type", "2");
|
|
|
+
|
|
|
+ final ProgressDialog dialog = ProgressDialogUtil.init(getActivity(),
|
|
|
+ null, getString(R.string.please_wait));
|
|
|
+ ProgressDialogUtil.show(dialog);
|
|
|
+
|
|
|
+ StringJsonArrayRequest<Void> request = new StringJsonArrayRequest<Void>(
|
|
|
+ mActivity.mConfig.ROOM_JOIN, new ErrorListener() {
|
|
|
+ @Override
|
|
|
+ public void onErrorResponse(VolleyError arg0) {
|
|
|
+ ToastUtil.showErrorNet(getActivity());
|
|
|
+ ProgressDialogUtil.dismiss(dialog);
|
|
|
+ }
|
|
|
+ }, new StringJsonArrayRequest.Listener<Void>() {
|
|
|
+ @Override
|
|
|
+ public void onResponse(ArrayResult<Void> result) {
|
|
|
+ boolean success = Result.defaultParser(getActivity(),
|
|
|
+ result, true);
|
|
|
+ if (success) {
|
|
|
+ Friend friend = new Friend();// 将房间也存为好友
|
|
|
+ friend.setOwnerId(loginUserId);
|
|
|
+ friend.setUserId(room.getJid());
|
|
|
+ friend.setNickName(room.getName());
|
|
|
+ friend.setDescription(room.getDesc());
|
|
|
+ friend.setRoomFlag(1);
|
|
|
+ friend.setRoomId(room.getId());
|
|
|
+ friend.setRoomCreateUserId(room.getUserId());
|
|
|
+ // timeSend作为取群聊离线消息的标志,所以要在这里设置一个初始值
|
|
|
+ friend.setTimeSend(TimeUtils.sk_time_current_time());
|
|
|
+ friend.setStatus(Friend.STATUS_FRIEND);
|
|
|
+ FriendDao.getInstance()
|
|
|
+ .createOrUpdateFriend(friend);//创建或者更新好友...
|
|
|
+
|
|
|
+ interMucChat(room.getJid(), room.getName());
|
|
|
+ }
|
|
|
+ ProgressDialogUtil.dismiss(dialog);
|
|
|
+ }
|
|
|
+ }, Void.class, params);
|
|
|
+ mActivity.addDefaultRequest(request);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onResume() {
|
|
|
+ super.onResume();
|
|
|
+ if (mNeedUpdate) {
|
|
|
+ mNeedUpdate = false;
|
|
|
+ mPullToRefreshListView.post(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ mPullToRefreshListView.setPullDownRefreshing(200);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onActivityCreated(Bundle savedInstanceState) {
|
|
|
+ super.onActivityCreated(savedInstanceState);
|
|
|
+ mActivity = (BaseActivity) getActivity();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void requestData(final boolean isPullDwonToRefersh) {
|
|
|
+ if (isPullDwonToRefersh) {
|
|
|
+ mPageIndex = 0;
|
|
|
+ }
|
|
|
+ HashMap<String, String> params = new HashMap<String, String>();
|
|
|
+ params.put("pageIndex", String.valueOf(mPageIndex));
|
|
|
+ params.put("pageSize", String.valueOf(AppConfig.PAGE_SIZE));
|
|
|
+ params.put("access_token", MyApplication.getInstance().mAccessToken);
|
|
|
+ StringJsonArrayRequest<MucRoom> request = new StringJsonArrayRequest<MucRoom>(
|
|
|
+ mActivity.mConfig.ROOM_LIST_HIS, new ErrorListener() {
|
|
|
+ @Override
|
|
|
+ public void onErrorResponse(VolleyError arg0) {
|
|
|
+ ToastUtil.showErrorNet(getActivity());
|
|
|
+ mPullToRefreshListView.onRefreshComplete();
|
|
|
+ }
|
|
|
+ }, new StringJsonArrayRequest.Listener<MucRoom>() {
|
|
|
+ @Override
|
|
|
+ public void onResponse(ArrayResult<MucRoom> result) {
|
|
|
+ boolean success = Result.defaultParser(getActivity(),
|
|
|
+ result, true);
|
|
|
+ if (success) {
|
|
|
+ mPageIndex++;
|
|
|
+ if (isPullDwonToRefersh) {
|
|
|
+ mMucRooms.clear();
|
|
|
+ }
|
|
|
+ List<MucRoom> datas = result.getData();
|
|
|
+ if (datas != null && datas.size() > 0) {
|
|
|
+ for (int i = 0; i < datas.size(); i++) {
|
|
|
+ if (datas.get(i).getCategory() == 1) {
|
|
|
+ } else {
|
|
|
+ mMucRooms.add(datas.get(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mAdapter.notifyDataSetChanged();
|
|
|
+ }
|
|
|
+ if (!b) {
|
|
|
+ b = true;
|
|
|
+// uploadAvatar();
|
|
|
+ test();
|
|
|
+ }
|
|
|
+
|
|
|
+ mPullToRefreshListView.onRefreshComplete();
|
|
|
+ }
|
|
|
+ }, MucRoom.class, params);
|
|
|
+ mActivity.addDefaultRequest(request);
|
|
|
+ }
|
|
|
+
|
|
|
+ public class MucRoomAdapter extends BaseAdapter {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getCount() {
|
|
|
+ return mMucRooms.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object getItem(int position) {
|
|
|
+ return mMucRooms.get(position);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public long getItemId(int position) {
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public View getView(final int position, View convertView,
|
|
|
+ ViewGroup parent) {
|
|
|
+ if (convertView == null) {
|
|
|
+ convertView = LayoutInflater.from(getActivity()).inflate(
|
|
|
+ R.layout.row_muc_room, parent, false);
|
|
|
+ }
|
|
|
+ ImageView avatar_img = ViewHolder.get(convertView, R.id.avatar_img);
|
|
|
+ TextView nick_name_tv = ViewHolder.get(convertView,
|
|
|
+ R.id.nick_name_tv);
|
|
|
+ TextView content_tv = ViewHolder.get(convertView, R.id.content_tv);
|
|
|
+ TextView time_tv = ViewHolder.get(convertView, R.id.time_tv);
|
|
|
+
|
|
|
+ final MucRoom room = mMucRooms.get(position);
|
|
|
+ AvatarHelper.getInstance().displayAvatar(room.getUserId(),
|
|
|
+ avatar_img, false);
|
|
|
+
|
|
|
+ nick_name_tv.setText(room.getName());
|
|
|
+ time_tv.setText(TimeUtils.getFriendlyTimeDesc(getActivity(),
|
|
|
+ (int) room.getCreateTime()));
|
|
|
+ content_tv.setText(room.getDesc());
|
|
|
+ return convertView;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|