Browse Source

群添加管理员功能

gongpm 9 years ago
parent
commit
16bd5301d1

+ 0 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/helper/AvatarHelper.java

@@ -80,7 +80,6 @@ public class AvatarHelper {
                 }
             }
         } catch (NullPointerException e) {
-            Log.i("gongpengming", "空指针异常" + e.getMessage());
 
         } finally {
         }
@@ -131,10 +130,6 @@ public class AvatarHelper {
             display(url, imageView, isThumb);
         }
     }
-
-
-
-
     public void displayAvatar(String userId, final ImageView imageView, final boolean isThumb) {
         final String url = getAvatarUrl(userId, isThumb);
         if (TextUtils.isEmpty(url)) {
@@ -285,7 +280,6 @@ public class AvatarHelper {
         } else {
             url = MyApplication.getInstance().getConfig().AVATAR_ORIGINAL_PREFIX + "/" +   "/" + userId + ".jpg";
         }
-        Log.i("gongpengming", url);
         return url;
     }
     public static String getAvatarUrl(String userId, boolean isThumb) {
@@ -309,7 +303,6 @@ public class AvatarHelper {
         } else {
             url = MyApplication.getInstance().getConfig().AVATAR_ORIGINAL_PREFIX + "/" + dirName + "/" + userId + ".jpg";
         }
-        Log.i("gongpengming", url);
         return url;
     }
 

+ 3 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/SplashActivity.java

@@ -28,7 +28,6 @@ import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.util.DeviceInfoUtil;
 import com.xzjmyk.pm.activity.util.Md5Util;
-import com.xzjmyk.pm.activity.util.ToastUtil;
 import com.xzjmyk.pm.activity.volley.ObjectResult;
 import com.xzjmyk.pm.activity.volley.Result;
 import com.xzjmyk.pm.activity.volley.StringJsonObjectRequest;
@@ -185,8 +184,6 @@ public class SplashActivity extends BaseActivity {
             return;
         }
 
-
-
         // 加密之后的密码
         final String requestTag = "login";
         HashMap<String, String> params = new HashMap<String, String>();
@@ -208,14 +205,13 @@ public class SplashActivity extends BaseActivity {
                 new Response.ErrorListener() {
                     @Override
                     public void onErrorResponse(VolleyError arg0) {
-                        ToastUtil.showErrorNet(mContext);
+                        jump();
                     }
                 }, new StringJsonObjectRequest.Listener<LoginRegisterResult>() {
-
             @Override
             public void onResponse(ObjectResult<LoginRegisterResult> result) {
                 if (result == null) {
-                    ToastUtil.showErrorData(mContext);
+                    jump();
                     return;
                 }
                 boolean success = false;
@@ -225,8 +221,7 @@ public class SplashActivity extends BaseActivity {
                 if (success) {// 登陆IM成功
                     startActivity(new Intent(SplashActivity.this, MainActivity.class));
                 } else {// 登录失败
-                    String message = TextUtils.isEmpty(result.getResultMsg()) ? getString(R.string.login_failed) : result.getResultMsg();
-                    ToastUtil.showToast(mContext, message);
+                    jump();
                 }
             }
         }, LoginRegisterResult.class, params);

+ 147 - 56
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/base/ActionBackActivity.java

@@ -7,66 +7,157 @@ import android.os.Bundle;
 import android.support.v7.app.ActionBar;
 import android.util.Log;
 import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.VelocityTracker;
 
 import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.MyApplication;
 
 public class ActionBackActivity extends StackActivity {
-	protected Context mContext;
-	public AppConfig mConfig;
-	private boolean isDestroyed = false;
-	protected String TAG;// 获取Tag,用于日志输出等标志
-
-	public ActionBackActivity() {
-		TAG = this.getClass().getSimpleName();
-	}
-
-	@Override
-	protected void onCreate(Bundle savedInstanceState) {
-		super.onCreate(savedInstanceState);
-		setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
-		ActionBar actionBar = getSupportActionBar();
-		if (actionBar != null) {
-			actionBar.setDisplayShowHomeEnabled(true);
-			actionBar.setDisplayHomeAsUpEnabled(true);
-		}
-		mConfig = MyApplication.getInstance().getConfig();
-		mContext = this;
-		if (AppConfig.DEBUG) {
-			Log.e(AppConfig.TAG, TAG + " onCreate");
-		}
-	}
-
-	@Override
-	public boolean isDestroyed() {
-		if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
-			return super.isDestroyed();
-		}
-		return isDestroyed;
-	}
-
-	@Override
-	protected void onDestroy() {
-		isDestroyed = true;
-		mConfig = null;
-		mContext = null;
-		if (AppConfig.DEBUG) {
-			Log.e(AppConfig.TAG, TAG + " onDestroy");
-		}
-		super.onDestroy();
-	}
-
-	@Override
-	public boolean onOptionsItemSelected(MenuItem item) {
-		if (item.getItemId() == android.R.id.home) {
-			return onHomeAsUp();
-		}
-		return super.onOptionsItemSelected(item);
-	}
-
-	protected boolean onHomeAsUp() {
-		finish();
-		return true;
-	}
 
+    //手指上下滑动时的最小速度
+    private static final int YSPEED_MIN = 200;
+    //手指向右滑动时的最小距离
+    private static final int XDISTANCE_MIN = 200;
+
+    private float downX, downY;//按下的坐标
+    //记录手指移动时的坐标。
+    private float moveX;
+    //用于计算手指滑动的速度。
+    private VelocityTracker speed;
+
+
+    protected Context mContext;
+    public AppConfig mConfig;
+    private boolean isDestroyed = false;
+    protected String TAG;// 获取Tag,用于日志输出等标志
+
+    public ActionBackActivity() {
+        TAG = this.getClass().getSimpleName();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (!b) {
+            createVelocityTracker(ev);
+            switch (ev.getAction()) {
+                case MotionEvent.ACTION_DOWN:
+                    downX = ev.getX();
+                    downY = ev.getY();
+                    break;
+                case MotionEvent.ACTION_MOVE:
+                    //滑动的距离
+                    moveX = ev.getRawX() - downX;
+                    break;
+                case MotionEvent.ACTION_UP:
+                    touchUp();
+                    break;
+            }
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
+        ActionBar actionBar = getSupportActionBar();
+        if (actionBar != null) {
+            actionBar.setDisplayShowHomeEnabled(true);
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
+        mConfig = MyApplication.getInstance().getConfig();
+        mContext = this;
+        if (AppConfig.DEBUG) {
+            Log.e(AppConfig.TAG, TAG + " onCreate");
+        }
+    }
+
+    /**
+     * 创建VelocityTracker对象,并将触摸界面的滑动事件加入到VelocityTracker当中。
+     *
+     * @param event
+     */
+    private void createVelocityTracker(MotionEvent event) {
+        if (speed == null) {
+            speed = VelocityTracker.obtain();
+        }
+        speed.addMovement(event);
+    }
+
+    /**
+     * 回收VelocityTracker对象。
+     */
+    private void recycleVelocityTracker() {
+        speed.recycle();
+        speed = null;
+    }
+
+    /**
+     * @return 滑动速度,以每秒钟移动了多少像素值为单位。
+     */
+    private int getScrollVelocity() {
+        speed.computeCurrentVelocity(1000);
+        int velocity = (int) speed.getYVelocity();
+        return Math.abs(velocity);
+    }
+
+    @Override
+    public boolean isDestroyed() {
+        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
+            return super.isDestroyed();
+        }
+        return isDestroyed;
+    }
+
+    @Override
+    protected void onDestroy() {
+        isDestroyed = true;
+        mConfig = null;
+        mContext = null;
+        if (AppConfig.DEBUG) {
+            Log.e(AppConfig.TAG, TAG + " onDestroy");
+        }
+        super.onDestroy();
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            return onHomeAsUp();
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    protected boolean onHomeAsUp() {
+        finish();
+        return true;
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+
+        return super.onTouchEvent(event);
+    }
+
+    private void touchUp() {
+        if (getScrollVelocity() > YSPEED_MIN && moveX > XDISTANCE_MIN) {
+            recycleVelocityTracker();
+            finish();
+        } else {
+            recycleVelocityTracker();
+        }
+
+    }
+
+    private boolean b;
+
+    protected void setNotTouchEvent(boolean b) {
+        this.b = b;
+    }
 }

+ 2 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/base/BaseActivity.java

@@ -42,10 +42,12 @@ public abstract class BaseActivity extends ActionBackActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        setNotTouchEvent(true);
         mFastVolley = MyApplication.getInstance().getFastVolley();
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
     }
 
+
     @Override
     protected void onDestroy() {
         // 取消所有HASHCODE包含该类名的request

+ 10 - 17
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BasicInfoActivity.java

@@ -30,42 +30,39 @@ import com.afollestad.materialdialogs.MaterialDialog;
 import com.android.volley.Response;
 import com.android.volley.Response.ErrorListener;
 import com.android.volley.VolleyError;
-import com.xzjmyk.pm.activity.bean.AddAttentionResult;
-import com.xzjmyk.pm.activity.bean.message.NewFriendMessage;
-import com.xzjmyk.pm.activity.broadcast.CardcastUiUpdateUtil;
-import com.xzjmyk.pm.activity.db.dao.FriendDao;
-import com.xzjmyk.pm.activity.db.dao.NewFriendDao;
-import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
-import com.xzjmyk.pm.activity.ui.erp.entity.EmployeesEntity;
-import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
-import com.xzjmyk.pm.activity.util.StringUtils;
-import com.xzjmyk.pm.activity.xmpp.CoreService;
-import com.xzjmyk.pm.activity.xmpp.ListenerManager;
-import com.xzjmyk.pm.activity.xmpp.listener.NewFriendListener;
 import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.AddAttentionResult;
 import com.xzjmyk.pm.activity.bean.Area;
 import com.xzjmyk.pm.activity.bean.AttentionUser;
 import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.bean.User;
+import com.xzjmyk.pm.activity.bean.message.NewFriendMessage;
 import com.xzjmyk.pm.activity.bean.message.XmppMessage;
+import com.xzjmyk.pm.activity.broadcast.CardcastUiUpdateUtil;
 import com.xzjmyk.pm.activity.broadcast.MsgBroadcast;
+import com.xzjmyk.pm.activity.db.dao.FriendDao;
+import com.xzjmyk.pm.activity.db.dao.NewFriendDao;
 import com.xzjmyk.pm.activity.helper.AvatarHelper;
 import com.xzjmyk.pm.activity.helper.FriendHelper;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.AddTaskActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.message.ChatActivity;
+import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
+import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
 import com.xzjmyk.pm.activity.view.DataLoadView;
 import com.xzjmyk.pm.activity.volley.ObjectResult;
 import com.xzjmyk.pm.activity.volley.Result;
 import com.xzjmyk.pm.activity.volley.StringJsonObjectRequest;
+import com.xzjmyk.pm.activity.xmpp.CoreService;
+import com.xzjmyk.pm.activity.xmpp.ListenerManager;
+import com.xzjmyk.pm.activity.xmpp.listener.NewFriendListener;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -273,13 +270,9 @@ public class BasicInfoActivity extends BaseActivity implements NewFriendListener
                     mUser = result.getData();
                     // 如果本地的好友状态不正确,那么就更新本地好友状态
                     AttentionUser attentionUser = mUser.getFriends();// 服务器的状态
-                    Log.i("LoginInfo", "接收网络数据:昵称=" + mUser.getNickName());
-                    Log.i("LoginInfo", "接收网络数据:id=" + mUser.getUserId());
-                    Log.i("LoginInfo", "接收网络数据:phone=" + mUser.getTelephone());
                     boolean changed = FriendHelper.updateFriendRelationship(mLoginUserId, mUser.getUserId(),
                             attentionUser);
                     if (changed) {
-                        //Log.i("LoginInfo","更新本页面所以信息....");
                         updateAllCardcastUi();
                     }
 

+ 1 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/GroupChatFragment.java

@@ -135,14 +135,6 @@ public class GroupChatFragment extends EasyFragment {
 
     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");
@@ -352,7 +344,7 @@ public class GroupChatFragment extends EasyFragment {
                 if (!b) {
                     b = true;
 //                    uploadAvatar();
-                    test();
+
                 }
 
                 mPullToRefreshListView.onRefreshComplete();

+ 238 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/RoomInfoActivity.java

@@ -20,8 +20,11 @@ import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.Button;
+import android.widget.CheckBox;
 import android.widget.EditText;
 import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
@@ -47,7 +50,6 @@ import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
-import com.xzjmyk.pm.activity.util.DateFormatUtil;
 import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
 import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
@@ -92,10 +94,9 @@ public class RoomInfoActivity extends BaseActivity {
     private TextView mNickNameTv;
     private TextView mCreateTime;
     private DataLoadView mDataLoadView;
-    private List<MucRoomMember> gridmembers;
     private List<MucRoomMember> mMembers;
     private GridViewAdapter mAdapter;
-
+    private RelativeLayout add_manage_rl; //添加管理员
     private boolean dataInvalidate = true;// 数据是否有效,判断标准时传递进来的Occupant
     // list的首个人,是不是当前用户(因为传递进来的时候就把当前用户放到首位)
     private int add_minus_count = 2;// +号和-号的个数,如果权限可以踢人,就是2个,如果权限不可以踢人,就是1个
@@ -104,11 +105,14 @@ public class RoomInfoActivity extends BaseActivity {
     private CoreService mCoreService;
     public final static String ROOM_NAME = "ROOMNAME";
     private Button btnExit;
+    private RelativeLayout remove_manage_rl;
+    private boolean iscreater = false;
 
     @Override
 
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        members = new ArrayList<>();
         setContentView(R.layout.activity_room_info);
         if (getIntent() != null) {
             mRoomJid = getIntent().getStringExtra(AppConstant.EXTRA_USER_ID);
@@ -149,6 +153,8 @@ public class RoomInfoActivity extends BaseActivity {
     };
 
     private void initView() {
+        remove_manage_rl = (RelativeLayout) findViewById(R.id.remove_manage_rl);
+        add_manage_rl = (RelativeLayout) findViewById(R.id.add_manage_rl);
         sc_tv = (TextView) findViewById(R.id.shield_chat_text);
         mNoticeTv = (TextView) findViewById(R.id.notice_tv);
         mGridView = (MyGridView) findViewById(R.id.grid_view);
@@ -238,6 +244,7 @@ public class RoomInfoActivity extends BaseActivity {
         });
     }
 
+
     private void loadMembers() {
         mDataLoadView.showLoading();
         HashMap<String, String> params = new HashMap<String, String>();
@@ -253,7 +260,7 @@ public class RoomInfoActivity extends BaseActivity {
             @Override
             public void onResponse(ObjectResult<MucRoom> result) {
                 boolean success = Result.defaultParser(mContext, result, true);
-                Log.i("Arison","RoomInfoActivity:onResponse:258:"+ JSON.toJSONString(result.getData()));
+                Log.i("Arison", "RoomInfoActivity:onResponse:258:" + JSON.toJSONString(result.getData()));
                 if (success && result.getData() != null) {
                     mDataLoadView.showSuccess();
                     updateUI(result.getData());
@@ -285,17 +292,20 @@ public class RoomInfoActivity extends BaseActivity {
         } else {
             sc_tv.setText("屏蔽群消息");
         }
-        long createTime = mucRoom.getCreateTime();
-        String formatDate = DateFormatUtil.getFormatDate(createTime * 1000);
         mCreateTime.setText(TimeUtils.s_long_2_str(mucRoom.getCreateTime() * 1000));
         String myNickName = "";
+        boolean isHaveM = false;
         if (mMembers != null) mMembers.clear();
         else mMembers = new ArrayList<>();
         List<MucRoomMember> munber = mucRoom.getMembers();
         MucRoomMember create = null;
+        MucRoomMember my = null;
         if (munber != null) {
-            MucRoomMember my = null;
             for (int i = 0; i < munber.size(); i++) {
+
+                if (munber.get(1).getRole() == 2) {
+                    isHaveM = true;
+                }
                 String userId = munber.get(i).getUserId();
                 if (!userId.equals(mucRoom.getUserId())) {
                     mMembers.add(munber.get(i));
@@ -306,6 +316,11 @@ public class RoomInfoActivity extends BaseActivity {
                     myNickName = munber.get(i).getNickName();
                     my = munber.get(i);
                 }
+
+
+
+
+
             }
             if (my != null) {// 将我自己移动到第一个的位置
                 mMembers.remove(my);
@@ -316,6 +331,23 @@ public class RoomInfoActivity extends BaseActivity {
                     mMembers.add(0, create);
             }
         }
+//        if (munber != null) {
+//            MucRoomMember leaguer = null;
+//            for (int i = 0; i < munber.size(); i++) {
+//                leaguer = munber.get(i);
+//                if (leaguer.getUserId() == mucRoom.getUserId()) {//是创建者
+//                    create = leaguer;
+//                } else if (leaguer.getRole() == 2) {  //管理员
+//                    isHaveM = true;//如果存在管理员 当为群主时候显示移除管理员选项
+//                    mMembers.add(0, leaguer);
+//                } else if (leaguer.getRole() == 3) { //成员
+//                    mMembers.add(leaguer);
+//                }
+//            }
+//            if (create != null) {
+//                mMembers.add(0, create);
+//            }
+//        }
         mAdapter = new GridViewAdapter(mMembers);
         mGridView.setAdapter(mAdapter);
         if (TextUtils.isEmpty(myNickName)) {
@@ -325,13 +357,24 @@ public class RoomInfoActivity extends BaseActivity {
         }
 
         if (mucRoom.getUserId().equals(mLoginUserId)) {// 我是创建者
+            iscreater = true;
             if (btnExit == null) {
                 btnExit = (Button) findViewById(R.id.btn_exit);
             }
             String[] compName = mucRoom.getName().split("-");
-
             add_minus_count = 2;
-
+            add_manage_rl.setVisibility(View.VISIBLE);
+            if (isHaveM) {
+                remove_manage_rl.setVisibility(View.VISIBLE);
+                remove_manage_rl.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        showCreateGroupChatDialog(REMOVE);
+                    }
+                });
+            } else {
+                remove_manage_rl.setVisibility(View.GONE);
+            }
             findViewById(R.id.room_name_arrow_img).setVisibility(View.VISIBLE);
             findViewById(R.id.room_desc_arrow_img).setVisibility(View.VISIBLE);
             findViewById(R.id.banned_voice_rl).setVisibility(View.VISIBLE);
@@ -354,6 +397,13 @@ public class RoomInfoActivity extends BaseActivity {
                     btnExit.setVisibility(View.GONE);
                 }
             }
+            add_manage_rl.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    showCreateGroupChatDialog(ADD);
+                }
+            });
+
             findViewById(R.id.room_name_rl).setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -397,11 +447,18 @@ public class RoomInfoActivity extends BaseActivity {
                 }
             });
         } else {
+            if (my != null && my.getRole() == 2) {
+                add_minus_count = 2;
+            } else {
+                add_minus_count = 1;
+            }
             if (btnExit == null) {
                 btnExit = (Button) findViewById(R.id.btn_exit);
             }
             btnExit.setText("退出商务群");
-            add_minus_count = 1;
+
+            add_manage_rl.setVisibility(View.GONE);
+            remove_manage_rl.setVisibility(View.GONE);
             findViewById(R.id.room_name_arrow_img).setVisibility(View.INVISIBLE);
             findViewById(R.id.room_desc_arrow_img).setVisibility(View.INVISIBLE);
             findViewById(R.id.banned_voice_rl).setVisibility(View.GONE);
@@ -455,6 +512,165 @@ public class RoomInfoActivity extends BaseActivity {
         });
     }
 
+    private int ADD = 1;
+    private int REMOVE = 0;
+    List<MucRoomMember> members;
+
+    private void showCreateGroupChatDialog(final int h) {
+        View rootView = LayoutInflater.from(mContext).inflate(R.layout.activity_select_contacts, null);
+        ListView list = (ListView) rootView.findViewById(R.id.list_view);
+        Button ok_btn = (Button) rootView.findViewById(R.id.ok_btn);
+        ok_btn.setText("确定");
+        ListViewAdapter adapter = null;
+        String title = null;
+        if (h == ADD) {
+            title = "添加管理员";
+            members.clear();
+            for (int i = 0; i < mMembers.size() - add_minus_count; i++) {
+                if (mMembers.get(i).getRole() == 3) {
+                    members.add(mMembers.get(i));
+                }
+            }
+            adapter = new ListViewAdapter(members);
+        } else {
+            title = "移除管理员";
+            members.clear();
+            for (int i = 0; i < mMembers.size() - add_minus_count; i++) {
+                if (mMembers.get(i).getRole() == 2) {
+                    members.add(mMembers.get(i));
+                }
+            }
+            adapter = new ListViewAdapter(members);
+        }
+        list.setAdapter(adapter);
+        final AlertDialog dialog = new AlertDialog.Builder(this).setTitle(title).setView(rootView)
+                .create();
+        ok_btn.setOnClickListener(new View.OnClickListener() {
+                                      @Override
+                                      public void onClick(View view) {
+                                          boolean isfrist = true;
+                                          StringBuilder strId = new StringBuilder();
+                                          if (h == ADD) {
+                                              for (int i = 0; i < members.size(); i++) {
+                                                  if (members.get(i).getRole() == 2) {
+                                                      if (isfrist) {
+                                                          isfrist = false;
+                                                      } else {
+                                                          strId.append(",");
+                                                      }
+                                                      strId.append(members.get(i).getUserId());
+
+                                                  }
+                                              }
+                                          } else {
+                                              for (int i = 0; i < members.size(); i++) {
+                                                  if (members.get(i).getRole() == 3) {
+                                                      if (isfrist) {
+                                                          isfrist = false;
+                                                      } else {
+                                                          strId.append(",");
+                                                      }
+                                                      strId.append(members.get(i).getUserId());
+                                                  }
+                                              }
+                                          }
+                                          updata(dialog, h, strId.toString());
+                                      }
+                                  }
+        );
+        dialog.show();
+    }
+
+    private void updata(final AlertDialog dialog, int type, String userId) {
+        String url = "/room/setRoomManger";
+        Map<String, String> params = new HashMap<>();
+        params.put("roomId", mRoomJid);
+        params.put("userId", userId);
+        params.put("kind", type + "");
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        StringJsonObjectRequest<Void> request = new StringJsonObjectRequest<Void>(mConfig.apiUrl + url, new ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError arg0) {
+                ToastUtil.showErrorNet(mContext);
+            }
+        }, new Listener<Void>() {
+            @Override
+            public void onResponse(ObjectResult<Void> result) {
+                boolean success = Result.defaultParser(mContext, result, true);
+                if (success) {
+                    ToastMessage("操作成功");
+                    dialog.dismiss();
+                }
+            }
+        }, Void.class, params);
+        addDefaultRequest(request);
+    }
+
+    private class ListViewAdapter extends BaseAdapter {
+
+        private List<MucRoomMember> members;
+
+        public ListViewAdapter(List<MucRoomMember> mMembers) {
+            this.members = mMembers;
+        }
+
+        @Override
+        public int getCount() {
+            return members.size();
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return members.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            viewholder holder = null;
+
+            if (convertView == null) {
+                convertView = LayoutInflater.from(mContext).inflate(R.layout.row_select_contacts, parent, false);
+                holder = new viewholder();
+                holder.img = (ImageView) convertView.findViewById(R.id.avatar_img);
+                holder.tv = (TextView) convertView.findViewById(R.id.user_name_tv);
+                holder.cb = (CheckBox) convertView.findViewById(R.id.check_box);
+                convertView.setTag(holder);
+            } else {
+                holder = (viewholder) convertView.getTag();
+            }
+            final MucRoomMember mucRoomMember = members.get(position);
+            AvatarHelper.getInstance().displayAvatar(mucRoomMember.getUserId(), holder.img, false);
+            holder.tv.setText(mucRoomMember.getNickName());
+            holder.cb.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    if (mucRoomMember.getRole() == 3) {
+                        Log.i("gongpengming", "getRole() == 3");
+                        mucRoomMember.setRole(2);
+                    } else {
+                        Log.i("gongpengming", "getRole() == 2");
+                        mucRoomMember.setRole(3);
+                    }
+                }
+            });
+            if (mucRoomMember.getRole() < 3) {
+                holder.cb.setFocusable(false);
+            }
+            return convertView;
+        }
+
+        class viewholder {
+            ImageView img;
+            TextView tv;
+            CheckBox cb;
+        }
+    }
+
     private void showNewNoticeDialog(final String notice) {
         final EditText editText = new EditText(this);
         editText.setLines(2);
@@ -584,8 +800,6 @@ public class RoomInfoActivity extends BaseActivity {
             ImageView imageView = (ImageView) view.findViewById(R.id.content);
             TextView tvName = (TextView) view.findViewById(R.id.tv_name);
             Button button = (Button) view.findViewById(R.id.btn_del);
-
-
             if (position > members.size() - (add_minus_count + 1)) {
                 if (add_minus_count == 1) {
                     if (position == members.size() - 1) {
@@ -611,7 +825,17 @@ public class RoomInfoActivity extends BaseActivity {
                 tvName.setText(members.get(position).getNickName());
                 AvatarHelper.getInstance().displayAvatar(members.get(position).getUserId(), imageView, true);
                 if (doDel | doBannedVoice) {
-                    button.setVisibility(View.VISIBLE);
+                    if (iscreater) {  //如果是创建者
+                        if (members.get(position).getRole() != 1)
+                            button.setVisibility(View.VISIBLE);
+                        else
+                            button.setVisibility(View.GONE);
+                    } else {
+                        if (members.get(position).getRole() == 3)
+                            button.setVisibility(View.VISIBLE);
+                        else
+                            button.setVisibility(View.GONE);
+                    }
                 } else {
                     button.setVisibility(View.GONE);
                 }
@@ -643,6 +867,7 @@ public class RoomInfoActivity extends BaseActivity {
             }
             return view;
         }
+
     }
 
     private void showBanndedVoiceDialog(final int position, final String userId) {

+ 6 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/volley/Result.java

@@ -2,11 +2,9 @@ package com.xzjmyk.pm.activity.volley;
 
 import android.content.Context;
 import android.text.TextUtils;
-import android.util.Log;
 import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
-import com.xzjmyk.pm.activity.helper.LoginHelper;
 import com.xzjmyk.pm.activity.R;
 
 public class Result {
@@ -47,24 +45,23 @@ public class Result {
 			return true;
 		} else if (result.resultCode == CODE_NO_TOKEN) {// 缺少参数Token
 			//TODO 发出异常登录的广播
-			//LoginHelper.broadcastToken(context);
-			//LoginHelper.broadcastConflict(context);
-			Log.i("Arison", "defaultParser() returned: " + "Token 过期");
+
+//			LoginHelper.broadcastToken(context);
+//			LoginHelper.broadcastConflict(context);
 			if (showToast)
 				showResultToast(context, result);
 			return false;
 		} else if (result.resultCode == CODE_TOKEN_ERROR) {// Token过期或错误
 			//TODO 发出异常登录的广播
-			//LoginHelper.broadcastToken(context);
-			//LoginHelper.broadcastConflict(context);
-			Log.i("Arison", "defaultParser() returned: " + "Token 过期");
+//			LoginHelper.broadcastToken(context);
+//			LoginHelper.broadcastConflict(context);
 			if (showToast)
 				showResultToast(context, result);
 			return false;
 		} else {
 			if (showToast){
 				//TODO 返回错误
-								showResultToast(context, result);
+				showResultToast(context, result);
 			}
 			return false;
 		}

+ 53 - 0
WeiChat/src/main/res/layout/activity_room_info.xml

@@ -311,6 +311,59 @@
                     android:layout_height="@dimen/next_height"
                     android:layout_alignParentRight="true"
                     android:layout_centerVertical="true"
+                    android:alpha="0.26"
+                    android:background="@drawable/set_list_next"
+                    android:contentDescription="@string/app_name" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/add_manage_rl"
+                style="@style/IMTbleLine"
+                android:layout_marginTop="@dimen/line_min">
+
+                <TextView
+                    android:id="@+id/add_manage_text"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:gravity="center"
+                    android:text="添加管理员"
+                    android:textColor="@color/text_main"
+                    android:textSize="@dimen/text_main" />
+
+                <ImageView
+                    android:id="@+id/add_manage_img"
+                    android:layout_width="@dimen/next_width"
+                    android:layout_height="@dimen/next_height"
+                    android:layout_alignParentRight="true"
+                    android:layout_centerVertical="true"
+                    android:alpha="0.26"
+                    android:background="@drawable/set_list_next"
+                    android:contentDescription="@string/app_name" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/remove_manage_rl"
+                style="@style/IMTbleLine"
+                android:layout_marginTop="@dimen/line_min">
+
+                <TextView
+                    android:id="@+id/remove_manage_text"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:gravity="center"
+                    android:text="移除管理员"
+                    android:textColor="@color/text_main"
+                    android:textSize="@dimen/text_main" />
+
+                <ImageView
+                    android:id="@+id/remove_manage_img"
+                    android:layout_width="@dimen/next_width"
+                    android:layout_height="@dimen/next_height"
+                    android:layout_alignParentRight="true"
+                    android:layout_centerVertical="true"
+                    android:alpha="0.26"
                     android:background="@drawable/set_list_next"
                     android:contentDescription="@string/app_name" />
             </RelativeLayout>

+ 24 - 0
WeiChat/src/main/res/layout/select_add_remove_room.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/add"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:gravity="center"
+        android:text="添加管理员"
+        android:textSize="25sp" />
+
+    <TextView
+        android:id="@+id/remove"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:gravity="center"
+        android:text="移除管理员"
+        android:textSize="25sp" />
+</LinearLayout>

+ 1 - 1
WeiChat/src/main/res/layout/space_cover_view.xml

@@ -12,7 +12,7 @@
         <ImageView
             android:id="@+id/cover_img"
             android:layout_width="fill_parent"
-            android:layout_height="300dp"
+            android:layout_height="250dp"
             android:contentDescription="@string/app_name"
             android:scaleType="centerCrop" />