Browse Source

Merge branch 'developer_master' of https://gitlab.com/Arisono/SkWeiChat-Baidu into developer_master

# Conflicts:
#	WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/GroupChatFragment.java
Arisono 10 years ago
parent
commit
35e6e64f00

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

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

+ 99 - 113
WeiChat/src/main/java/com/xzjmyk/pm/activity/helper/UploadEngine.java

@@ -12,130 +12,116 @@ import com.xzjmyk.pm.activity.bean.UploadFileResult;
 import com.xzjmyk.pm.activity.bean.message.ChatMessage;
 import com.xzjmyk.pm.activity.bean.message.ChatMessage;
 import com.xzjmyk.pm.activity.bean.message.XmppMessage;
 import com.xzjmyk.pm.activity.bean.message.XmppMessage;
 import com.xzjmyk.pm.activity.db.dao.ChatMessageDao;
 import com.xzjmyk.pm.activity.db.dao.ChatMessageDao;
-import com.xzjmyk.pm.activity.util.FileSizeUtil;
 import com.xzjmyk.pm.activity.util.ImageUtil;
 import com.xzjmyk.pm.activity.util.ImageUtil;
 import com.xzjmyk.pm.activity.volley.Result;
 import com.xzjmyk.pm.activity.volley.Result;
 
 
 import org.apache.http.Header;
 import org.apache.http.Header;
 
 
-import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileNotFoundException;
 
 
 /**
 /**
  * 专门用来上传的
  * 专门用来上传的
- * 
- * 
  */
  */
 public class UploadEngine {
 public class UploadEngine {
-	public interface ImFileUploadResponse {
-		void onSuccess(String toUserId, ChatMessage message);
-
-		void onFailure(String toUserId, ChatMessage message);
-	}
-
-	public static final void uploadImFile(final String toUserId, final ChatMessage message, final ImFileUploadResponse response) {
-		Log.d("roamer", "开始上传...");
-		RequestParams params = new RequestParams();
-		final String loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
-		params.put("userId", loginUserId);
-		
-		params.put("access_token", MyApplication.getInstance().mAccessToken);
+    public interface ImFileUploadResponse {
+        void onSuccess(String toUserId, ChatMessage message);
+
+        void onFailure(String toUserId, ChatMessage message);
+    }
+
+    public static final void uploadImFile(final String toUserId, final ChatMessage message, final ImFileUploadResponse response) {
+        RequestParams params = new RequestParams();
+        final String loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
+        params.put("userId", loginUserId);
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
 //		params.put("uploadFlag","3");
 //		params.put("uploadFlag","3");
-		Log.d("roamer", "userId..."+loginUserId);
-		Log.d("roamer", "access_token..."+MyApplication.getInstance().mAccessToken);
-		try {
-			params.put("file1", ImageUtil.compressBitmapToFile(
-					message.getFilePath(),100,300,300));
-			Log.d("roamer", "开始上传...类型" + message.getType() + "...." + message.getFilePath()
-					+ "文件大小:" + FileSizeUtil.getFileOrFilesSize(message.getFilePath(), FileSizeUtil.SIZETYPE_MB) + "MB");
-            Log.i("Arison","UploadEngine:uploadImFile:49: 压缩文件大小:"
-							+ FileSizeUtil.getFileOrFilesSize(ImageUtil.compressBitmapToFile(
-							message.getFilePath(),100,300,300).getAbsolutePath(),FileSizeUtil.SIZETYPE_MB)
-			);
-		} catch (FileNotFoundException e) {
-			e.printStackTrace();
-		}
-		AsyncHttpClient client = new AsyncHttpClient();
-		
-		
-		client.post(MyApplication.getInstance().getConfig().UPLOAD_URL, params, new AsyncHttpResponseHandler() {
-			
-			@Override
-			public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
-				String url = null;
-				if (arg0 == 200) {
-					UploadFileResult result = null;
-					try {
-						result = JSON.parseObject(new String(arg2), UploadFileResult.class);
-					} catch (Exception e) {
-						e.printStackTrace();
-					}
-					if (result == null || result.getResultCode() != Result.CODE_SUCCESS || result.getData() == null
-							|| result.getSuccess() != result.getTotal()) {
-
-					} else {
-						UploadFileResult.Data data = result.getData();
-						if (message.getType() == XmppMessage.TYPE_IMAGE) {
-							if (data.getImages() != null && data.getImages().size() > 0) {
-								url = data.getImages().get(0).getOriginalUrl();
-							}
-						} else if (message.getType() == XmppMessage.TYPE_VOICE) {
-							if (data.getAudios() != null && data.getAudios().size() > 0) {
-								url = data.getAudios().get(0).getOriginalUrl();
-							}
-						} else if (message.getType() == XmppMessage.TYPE_VIDEO) {
-							if (data.getVideos() != null && data.getVideos().size() > 0) {
-								url = data.getVideos().get(0).getOriginalUrl();
-							}
-						} else if (message.getType() == XmppMessage.TYPE_FILE){
-							if (data.getFiles() != null && data.getFiles().size() > 0) {
-								url = data.getFiles().get(0).getOriginalUrl();
-							}else if (data.getVideos() != null && data.getVideos().size() > 0) {
-								url = data.getVideos().get(0).getOriginalUrl();
-							}else if (data.getAudios() != null && data.getAudios().size() > 0) {
-								url = data.getAudios().get(0).getOriginalUrl();
-							}else if (data.getImages() != null && data.getImages().size() > 0) {
-								url = data.getImages().get(0).getOriginalUrl();
-							}else if(data.getOthers()!=null&&data.getOthers().size()>0){
-								url=data.getOthers().get(0).getOriginalUrl();
-							}else {
-							}
-						}
-					}
-				}
-				
-				Log.d("roamer", "file url:"+url);
-
-				if (TextUtils.isEmpty(url)) {
-					if (response != null) {
-						response.onFailure(toUserId, message);
-						ChatMessageDao.getInstance().updateMessageUploadState(loginUserId, toUserId, message.get_id(), false, url);
-						Log.d("roamer", "url为空,让其响应为失败");
-					}
-				} else {
-					ChatMessageDao.getInstance().updateMessageUploadState(loginUserId, toUserId, message.get_id(), true, url);
-					if (response != null) {
-						Log.d("roamer", "上传文件成功了");
-						message.setContent(url);
-						message.setUpload(true);
-						response.onSuccess(toUserId, message);
-					}
-				}
-
-			}
-
-			@Override
-			public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
-				// 失败就不用更新数据库了,默认值就是false
-				// ChatMessageDao.getInstance().updateMessageSendState(loginUserId,
-				// toUserId, msg_id, false);
-				Log.d("roamer", "上传失败了...");
-				Log.d("roamer", arg3.toString());
-				if (response != null) {
-					response.onFailure(toUserId, message);
-				}
-			}
-		});
-	}
+        try {
+            if (XmppMessage.TYPE_IMAGE == message.getType())
+                params.put("file1", ImageUtil.compressBitmapToFile(message.getFilePath(), 100, 300, 300));
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+        AsyncHttpClient client = new AsyncHttpClient();
+
+
+        client.post(MyApplication.getInstance().getConfig().UPLOAD_URL, params, new AsyncHttpResponseHandler() {
+
+            @Override
+            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
+                String url = null;
+                if (arg0 == 200) {
+                    UploadFileResult result = null;
+                    try {
+                        result = JSON.parseObject(new String(arg2), UploadFileResult.class);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    if (result == null || result.getResultCode() != Result.CODE_SUCCESS || result.getData() == null
+                            || result.getSuccess() != result.getTotal()) {
+
+                    } else {
+                        UploadFileResult.Data data = result.getData();
+                        if (message.getType() == XmppMessage.TYPE_IMAGE) {
+                            if (data.getImages() != null && data.getImages().size() > 0) {
+                                url = data.getImages().get(0).getOriginalUrl();
+                            }
+                        } else if (message.getType() == XmppMessage.TYPE_VOICE) {
+                            if (data.getAudios() != null && data.getAudios().size() > 0) {
+                                url = data.getAudios().get(0).getOriginalUrl();
+                            }
+                        } else if (message.getType() == XmppMessage.TYPE_VIDEO) {
+                            if (data.getVideos() != null && data.getVideos().size() > 0) {
+                                url = data.getVideos().get(0).getOriginalUrl();
+                            }
+                        } else if (message.getType() == XmppMessage.TYPE_FILE) {
+                            if (data.getFiles() != null && data.getFiles().size() > 0) {
+                                url = data.getFiles().get(0).getOriginalUrl();
+                            } else if (data.getVideos() != null && data.getVideos().size() > 0) {
+                                url = data.getVideos().get(0).getOriginalUrl();
+                            } else if (data.getAudios() != null && data.getAudios().size() > 0) {
+                                url = data.getAudios().get(0).getOriginalUrl();
+                            } else if (data.getImages() != null && data.getImages().size() > 0) {
+                                url = data.getImages().get(0).getOriginalUrl();
+                            } else if (data.getOthers() != null && data.getOthers().size() > 0) {
+                                url = data.getOthers().get(0).getOriginalUrl();
+                            } else {
+                            }
+                        }
+                    }
+                }
+
+                Log.d("roamer", "file url:" + url);
+
+                if (TextUtils.isEmpty(url)) {
+                    if (response != null) {
+                        response.onFailure(toUserId, message);
+                        ChatMessageDao.getInstance().updateMessageUploadState(loginUserId, toUserId, message.get_id(), false, url);
+                        Log.d("roamer", "url为空,让其响应为失败");
+                    }
+                } else {
+                    ChatMessageDao.getInstance().updateMessageUploadState(loginUserId, toUserId, message.get_id(), true, url);
+                    if (response != null) {
+                        Log.d("roamer", "上传文件成功了");
+                        message.setContent(url);
+                        message.setUpload(true);
+                        response.onSuccess(toUserId, message);
+                    }
+                }
+
+            }
+
+            @Override
+            public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
+                // 失败就不用更新数据库了,默认值就是false
+                // ChatMessageDao.getInstance().updateMessageSendState(loginUserId,
+                // toUserId, msg_id, false);
+                Log.d("roamer", "上传失败了...");
+                Log.d("roamer", arg3.toString());
+                if (response != null) {
+                    response.onFailure(toUserId, message);
+                }
+            }
+        });
+    }
 
 
 }
 }

+ 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.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.util.DeviceInfoUtil;
 import com.xzjmyk.pm.activity.util.DeviceInfoUtil;
 import com.xzjmyk.pm.activity.util.Md5Util;
 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.ObjectResult;
 import com.xzjmyk.pm.activity.volley.Result;
 import com.xzjmyk.pm.activity.volley.Result;
 import com.xzjmyk.pm.activity.volley.StringJsonObjectRequest;
 import com.xzjmyk.pm.activity.volley.StringJsonObjectRequest;
@@ -185,8 +184,6 @@ public class SplashActivity extends BaseActivity {
             return;
             return;
         }
         }
 
 
-
-
         // 加密之后的密码
         // 加密之后的密码
         final String requestTag = "login";
         final String requestTag = "login";
         HashMap<String, String> params = new HashMap<String, String>();
         HashMap<String, String> params = new HashMap<String, String>();
@@ -208,14 +205,13 @@ public class SplashActivity extends BaseActivity {
                 new Response.ErrorListener() {
                 new Response.ErrorListener() {
                     @Override
                     @Override
                     public void onErrorResponse(VolleyError arg0) {
                     public void onErrorResponse(VolleyError arg0) {
-                        ToastUtil.showErrorNet(mContext);
+                        jump();
                     }
                     }
                 }, new StringJsonObjectRequest.Listener<LoginRegisterResult>() {
                 }, new StringJsonObjectRequest.Listener<LoginRegisterResult>() {
-
             @Override
             @Override
             public void onResponse(ObjectResult<LoginRegisterResult> result) {
             public void onResponse(ObjectResult<LoginRegisterResult> result) {
                 if (result == null) {
                 if (result == null) {
-                    ToastUtil.showErrorData(mContext);
+                    jump();
                     return;
                     return;
                 }
                 }
                 boolean success = false;
                 boolean success = false;
@@ -225,8 +221,7 @@ public class SplashActivity extends BaseActivity {
                 if (success) {// 登陆IM成功
                 if (success) {// 登陆IM成功
                     startActivity(new Intent(SplashActivity.this, MainActivity.class));
                     startActivity(new Intent(SplashActivity.this, MainActivity.class));
                 } else {// 登录失败
                 } else {// 登录失败
-                    String message = TextUtils.isEmpty(result.getResultMsg()) ? getString(R.string.login_failed) : result.getResultMsg();
-                    ToastUtil.showToast(mContext, message);
+                    jump();
                 }
                 }
             }
             }
         }, LoginRegisterResult.class, params);
         }, 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.support.v7.app.ActionBar;
 import android.util.Log;
 import android.util.Log;
 import android.view.MenuItem;
 import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.VelocityTracker;
 
 
 import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.MyApplication;
 
 
 public class ActionBackActivity extends StackActivity {
 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
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
+        setNotTouchEvent(true);
         mFastVolley = MyApplication.getInstance().getFastVolley();
         mFastVolley = MyApplication.getInstance().getFastVolley();
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
     }
     }
 
 
+
     @Override
     @Override
     protected void onDestroy() {
     protected void onDestroy() {
         // 取消所有HASHCODE包含该类名的request
         // 取消所有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;
 import com.android.volley.Response.ErrorListener;
 import com.android.volley.Response.ErrorListener;
 import com.android.volley.VolleyError;
 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.AppConstant;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 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.Area;
 import com.xzjmyk.pm.activity.bean.AttentionUser;
 import com.xzjmyk.pm.activity.bean.AttentionUser;
 import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.bean.User;
 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.bean.message.XmppMessage;
+import com.xzjmyk.pm.activity.broadcast.CardcastUiUpdateUtil;
 import com.xzjmyk.pm.activity.broadcast.MsgBroadcast;
 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.AvatarHelper;
 import com.xzjmyk.pm.activity.helper.FriendHelper;
 import com.xzjmyk.pm.activity.helper.FriendHelper;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.AddTaskActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.AddTaskActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.message.ChatActivity;
 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.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
 import com.xzjmyk.pm.activity.util.ToastUtil;
 import com.xzjmyk.pm.activity.view.DataLoadView;
 import com.xzjmyk.pm.activity.view.DataLoadView;
 import com.xzjmyk.pm.activity.volley.ObjectResult;
 import com.xzjmyk.pm.activity.volley.ObjectResult;
 import com.xzjmyk.pm.activity.volley.Result;
 import com.xzjmyk.pm.activity.volley.Result;
 import com.xzjmyk.pm.activity.volley.StringJsonObjectRequest;
 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.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.Pattern;
@@ -273,13 +270,9 @@ public class BasicInfoActivity extends BaseActivity implements NewFriendListener
                     mUser = result.getData();
                     mUser = result.getData();
                     // 如果本地的好友状态不正确,那么就更新本地好友状态
                     // 如果本地的好友状态不正确,那么就更新本地好友状态
                     AttentionUser attentionUser = mUser.getFriends();// 服务器的状态
                     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(),
                     boolean changed = FriendHelper.updateFriendRelationship(mLoginUserId, mUser.getUserId(),
                             attentionUser);
                             attentionUser);
                     if (changed) {
                     if (changed) {
-                        //Log.i("LoginInfo","更新本页面所以信息....");
                         updateAllCardcastUi();
                         updateAllCardcastUi();
                     }
                     }
 
 

+ 4 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBManager.java

@@ -59,7 +59,7 @@ public class DBManager {
     }
     }
 
 
 
 
-    public void updateHrogrRemark(int or_id,int or_remark,String master){
+    public void updateHrogrRemark(int or_id, int or_remark, String master) {
         String sql = "update hrorgs"
         String sql = "update hrorgs"
                 + " set or_remark=?"
                 + " set or_remark=?"
                 + " where or_id=? and whichsys=?;";
                 + " where or_id=? and whichsys=?;";
@@ -119,7 +119,7 @@ public class DBManager {
             sta.bindString(7, entity.getEM_MOBILE() == null ? "未填写" : entity.getEM_MOBILE());
             sta.bindString(7, entity.getEM_MOBILE() == null ? "未填写" : entity.getEM_MOBILE());
             sta.bindString(8, String.valueOf(entity.getEM_UU()));
             sta.bindString(8, String.valueOf(entity.getEM_UU()));
             sta.bindString(9, entity.getCOMPANY());
             sta.bindString(9, entity.getCOMPANY());
-            sta.bindString(10, entity.getWHICHSYS());
+            sta.bindString(10, entity.getWHICHSYS() == null ? "" : entity.getWHICHSYS());
             sta.bindLong(11, entity.getEm_defaultorid());
             sta.bindLong(11, entity.getEm_defaultorid());
             sta.bindString(12, entity.getFLAG());
             sta.bindString(12, entity.getFLAG());
             sta.bindString(13, String.valueOf(entity.getEm_IMID()));
             sta.bindString(13, String.valueOf(entity.getEm_IMID()));
@@ -129,7 +129,6 @@ public class DBManager {
         db.endTransaction();
         db.endTransaction();
     }
     }
 
 
-
     /**
     /**
      * @author Administrator
      * @author Administrator
      * @功能:增加员工信息---批量
      * @功能:增加员工信息---批量
@@ -254,7 +253,6 @@ public class DBManager {
             hrorgItem.setOr_subof(Integer.valueOf(cursor.getString(cursor.getColumnIndex("or_subof"))));
             hrorgItem.setOr_subof(Integer.valueOf(cursor.getString(cursor.getColumnIndex("or_subof"))));
             hlist.add(hrorgItem);
             hlist.add(hrorgItem);
         }
         }
-
         table = "employees";
         table = "employees";
         columns = null;
         columns = null;
         selection = "em_defaultorid=? and WHICHSYS=?";
         selection = "em_defaultorid=? and WHICHSYS=?";
@@ -331,7 +329,7 @@ public class DBManager {
      * Hrorgs连接两个表的数据模型
      * Hrorgs连接两个表的数据模型
      */
      */
     public List<HrorgsEntity> queryHrorgList(String[] selectionArgs, String selection) {
     public List<HrorgsEntity> queryHrorgList(String[] selectionArgs, String selection) {
-        List <HrorgsEntity> hrorgsEntities =new ArrayList<>();
+        List<HrorgsEntity> hrorgsEntities = new ArrayList<>();
         String table = "hrorgs";
         String table = "hrorgs";
         String[] columns = null;
         String[] columns = null;
         //String[] selectionArgs = new String[]{key};
         //String[] selectionArgs = new String[]{key};
@@ -340,7 +338,7 @@ public class DBManager {
         String orderBy = null;
         String orderBy = null;
         Cursor cursor = db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
         Cursor cursor = db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
         while (cursor.moveToNext()) {
         while (cursor.moveToNext()) {
-            HrorgsEntity  hrorgsEntity = new HrorgsEntity();
+            HrorgsEntity hrorgsEntity = new HrorgsEntity();
             hrorgsEntity.setOr_subof(Integer.valueOf(cursor.getString(cursor.getColumnIndex("or_subof"))));
             hrorgsEntity.setOr_subof(Integer.valueOf(cursor.getString(cursor.getColumnIndex("or_subof"))));
             hrorgsEntity.setOr_code(cursor.getString(cursor.getColumnIndex("or_code")));
             hrorgsEntity.setOr_code(cursor.getString(cursor.getColumnIndex("or_code")));
             hrorgsEntity.setFlag(cursor.getString(cursor.getColumnIndex("or_flag")));
             hrorgsEntity.setFlag(cursor.getString(cursor.getColumnIndex("or_flag")));

+ 4 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/GroupChatFragment.java

@@ -136,14 +136,7 @@ public class GroupChatFragment extends EasyFragment {
 
 
     boolean b = false;
     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() {
     private void uploadAvatar() {
         File file = new File(Environment.getExternalStorageDirectory() + "/head1.jpg");
         File file = new File(Environment.getExternalStorageDirectory() + "/head1.jpg");
@@ -353,7 +346,7 @@ public class GroupChatFragment extends EasyFragment {
                 if (!b) {
                 if (!b) {
                     b = true;
                     b = true;
 //                    uploadAvatar();
 //                    uploadAvatar();
-                   // test();
+
                 }
                 }
 
 
                 mPullToRefreshListView.onRefreshComplete();
                 mPullToRefreshListView.onRefreshComplete();
@@ -396,10 +389,10 @@ public class GroupChatFragment extends EasyFragment {
             if (!StringUtils.isEmpty(room.getSubject()))
             if (!StringUtils.isEmpty(room.getSubject()))
             {
             {
                 //合成图像下载
                 //合成图像下载
-                AvatarHelper.getInstance().displayAvatar(room.getSubject(),
+                AvatarHelper.getInstance().displayAvatar("812815872",
                         avatar_img, false);
                         avatar_img, false);
             }else{
             }else{
-                AvatarHelper.getInstance().displayAvatar(room.getUserId(),
+                AvatarHelper.getInstance().displayAvatar("812815872",
                         avatar_img, false);
                         avatar_img, false);
             }
             }
 
 

+ 5 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/SelectContactsActivity.java

@@ -557,7 +557,7 @@ public class SelectContactsActivity extends BaseActivity {
         long roomImgId=Long.valueOf(loginUserId)+time;
         long roomImgId=Long.valueOf(loginUserId)+time;
         Log.i("Arison","SelectContactsActivity:uploadAvatar:471:roomImgId:"+roomImgId
         Log.i("Arison","SelectContactsActivity:uploadAvatar:471:roomImgId:"+roomImgId
         +"时间:"+ DateFormatUtil.getDateTimeStr(new Date(time)));
         +"时间:"+ DateFormatUtil.getDateTimeStr(new Date(time)));
-       final String  photoId="101010";
+       final String  photoId="812815872";
         params.put("userId", photoId);//群主id+当前系统时间
         params.put("userId", photoId);//群主id+当前系统时间
         try {
         try {
             params.put("file1", file);
             params.put("file1", file);
@@ -619,15 +619,15 @@ public class SelectContactsActivity extends BaseActivity {
         params.put("access_token", MyApplication.getInstance().mAccessToken);
         params.put("access_token", MyApplication.getInstance().mAccessToken);
         params.put("roomId", roomjId);
         params.put("roomId", roomjId);
         params.put("photoid",photoId);
         params.put("photoid",photoId);
-		final ProgressDialog dialog = ProgressDialogUtil.init(mContext, null, getString(R.string.please_wait), true);
-		ProgressDialogUtil.show(dialog);
+//		final ProgressDialog dialog = ProgressDialogUtil.init(mContext, null, getString(R.string.please_wait), true);
+//		ProgressDialogUtil.show(dialog);
         StringJsonObjectRequest<String> mRequest = new StringJsonObjectRequest<String>(
         StringJsonObjectRequest<String> mRequest = new StringJsonObjectRequest<String>(
 				Request.Method.GET, url,
 				Request.Method.GET, url,
 				new Response.ErrorListener() {
 				new Response.ErrorListener() {
 					@Override
 					@Override
 					public void onErrorResponse(VolleyError volleyError) {
 					public void onErrorResponse(VolleyError volleyError) {
-						ProgressDialogUtil.dismiss(dialog);
-						ToastUtil.showErrorNet(mContext);
+//						ProgressDialogUtil.dismiss(dialog);
+//						ToastUtil.showErrorNet(mContext);
 					}
 					}
 				},
 				},
 				new StringJsonObjectRequest.Listener<String>() {
 				new StringJsonObjectRequest.Listener<String>() {

+ 245 - 19
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.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.BaseAdapter;
 import android.widget.Button;
 import android.widget.Button;
+import android.widget.CheckBox;
 import android.widget.EditText;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
 import com.alibaba.fastjson.JSON;
 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.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 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.ProgressDialogUtil;
 import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
@@ -92,10 +94,9 @@ public class RoomInfoActivity extends BaseActivity {
     private TextView mNickNameTv;
     private TextView mNickNameTv;
     private TextView mCreateTime;
     private TextView mCreateTime;
     private DataLoadView mDataLoadView;
     private DataLoadView mDataLoadView;
-    private List<MucRoomMember> gridmembers;
     private List<MucRoomMember> mMembers;
     private List<MucRoomMember> mMembers;
     private GridViewAdapter mAdapter;
     private GridViewAdapter mAdapter;
-
+    private RelativeLayout add_manage_rl; //添加管理员
     private boolean dataInvalidate = true;// 数据是否有效,判断标准时传递进来的Occupant
     private boolean dataInvalidate = true;// 数据是否有效,判断标准时传递进来的Occupant
     // list的首个人,是不是当前用户(因为传递进来的时候就把当前用户放到首位)
     // list的首个人,是不是当前用户(因为传递进来的时候就把当前用户放到首位)
     private int add_minus_count = 2;// +号和-号的个数,如果权限可以踢人,就是2个,如果权限不可以踢人,就是1个
     private int add_minus_count = 2;// +号和-号的个数,如果权限可以踢人,就是2个,如果权限不可以踢人,就是1个
@@ -104,11 +105,14 @@ public class RoomInfoActivity extends BaseActivity {
     private CoreService mCoreService;
     private CoreService mCoreService;
     public final static String ROOM_NAME = "ROOMNAME";
     public final static String ROOM_NAME = "ROOMNAME";
     private Button btnExit;
     private Button btnExit;
+    private RelativeLayout remove_manage_rl;
+    private boolean iscreater = false;
 
 
     @Override
     @Override
 
 
     protected void onCreate(Bundle savedInstanceState) {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
+        members = new ArrayList<>();
         setContentView(R.layout.activity_room_info);
         setContentView(R.layout.activity_room_info);
         if (getIntent() != null) {
         if (getIntent() != null) {
             mRoomJid = getIntent().getStringExtra(AppConstant.EXTRA_USER_ID);
             mRoomJid = getIntent().getStringExtra(AppConstant.EXTRA_USER_ID);
@@ -149,6 +153,8 @@ public class RoomInfoActivity extends BaseActivity {
     };
     };
 
 
     private void initView() {
     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);
         sc_tv = (TextView) findViewById(R.id.shield_chat_text);
         mNoticeTv = (TextView) findViewById(R.id.notice_tv);
         mNoticeTv = (TextView) findViewById(R.id.notice_tv);
         mGridView = (MyGridView) findViewById(R.id.grid_view);
         mGridView = (MyGridView) findViewById(R.id.grid_view);
@@ -238,6 +244,7 @@ public class RoomInfoActivity extends BaseActivity {
         });
         });
     }
     }
 
 
+
     private void loadMembers() {
     private void loadMembers() {
         mDataLoadView.showLoading();
         mDataLoadView.showLoading();
         HashMap<String, String> params = new HashMap<String, String>();
         HashMap<String, String> params = new HashMap<String, String>();
@@ -253,7 +260,7 @@ public class RoomInfoActivity extends BaseActivity {
             @Override
             @Override
             public void onResponse(ObjectResult<MucRoom> result) {
             public void onResponse(ObjectResult<MucRoom> result) {
                 boolean success = Result.defaultParser(mContext, result, true);
                 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) {
                 if (success && result.getData() != null) {
                     mDataLoadView.showSuccess();
                     mDataLoadView.showSuccess();
                     updateUI(result.getData());
                     updateUI(result.getData());
@@ -285,17 +292,20 @@ public class RoomInfoActivity extends BaseActivity {
         } else {
         } else {
             sc_tv.setText("屏蔽群消息");
             sc_tv.setText("屏蔽群消息");
         }
         }
-        long createTime = mucRoom.getCreateTime();
-        String formatDate = DateFormatUtil.getFormatDate(createTime * 1000);
         mCreateTime.setText(TimeUtils.s_long_2_str(mucRoom.getCreateTime() * 1000));
         mCreateTime.setText(TimeUtils.s_long_2_str(mucRoom.getCreateTime() * 1000));
         String myNickName = "";
         String myNickName = "";
+        boolean isHaveM = false;
         if (mMembers != null) mMembers.clear();
         if (mMembers != null) mMembers.clear();
         else mMembers = new ArrayList<>();
         else mMembers = new ArrayList<>();
         List<MucRoomMember> munber = mucRoom.getMembers();
         List<MucRoomMember> munber = mucRoom.getMembers();
         MucRoomMember create = null;
         MucRoomMember create = null;
+        MucRoomMember my = null;
         if (munber != null) {
         if (munber != null) {
-            MucRoomMember my = null;
             for (int i = 0; i < munber.size(); i++) {
             for (int i = 0; i < munber.size(); i++) {
+
+                if (munber.get(1).getRole() == 2) {
+                    isHaveM = true;
+                }
                 String userId = munber.get(i).getUserId();
                 String userId = munber.get(i).getUserId();
                 if (!userId.equals(mucRoom.getUserId())) {
                 if (!userId.equals(mucRoom.getUserId())) {
                     mMembers.add(munber.get(i));
                     mMembers.add(munber.get(i));
@@ -306,6 +316,11 @@ public class RoomInfoActivity extends BaseActivity {
                     myNickName = munber.get(i).getNickName();
                     myNickName = munber.get(i).getNickName();
                     my = munber.get(i);
                     my = munber.get(i);
                 }
                 }
+
+
+
+
+
             }
             }
             if (my != null) {// 将我自己移动到第一个的位置
             if (my != null) {// 将我自己移动到第一个的位置
                 mMembers.remove(my);
                 mMembers.remove(my);
@@ -316,6 +331,23 @@ public class RoomInfoActivity extends BaseActivity {
                     mMembers.add(0, create);
                     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);
         mAdapter = new GridViewAdapter(mMembers);
         mGridView.setAdapter(mAdapter);
         mGridView.setAdapter(mAdapter);
         if (TextUtils.isEmpty(myNickName)) {
         if (TextUtils.isEmpty(myNickName)) {
@@ -325,25 +357,31 @@ public class RoomInfoActivity extends BaseActivity {
         }
         }
 
 
         if (mucRoom.getUserId().equals(mLoginUserId)) {// 我是创建者
         if (mucRoom.getUserId().equals(mLoginUserId)) {// 我是创建者
+            iscreater = true;
             if (btnExit == null) {
             if (btnExit == null) {
                 btnExit = (Button) findViewById(R.id.btn_exit);
                 btnExit = (Button) findViewById(R.id.btn_exit);
             }
             }
             String[] compName = mucRoom.getName().split("-");
             String[] compName = mucRoom.getName().split("-");
-
             add_minus_count = 2;
             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_name_arrow_img).setVisibility(View.VISIBLE);
             findViewById(R.id.room_desc_arrow_img).setVisibility(View.VISIBLE);
             findViewById(R.id.room_desc_arrow_img).setVisibility(View.VISIBLE);
             findViewById(R.id.banned_voice_rl).setVisibility(View.VISIBLE);
             findViewById(R.id.banned_voice_rl).setVisibility(View.VISIBLE);
             findViewById(R.id.banned_delete_rl).setVisibility(View.GONE);
             findViewById(R.id.banned_delete_rl).setVisibility(View.GONE);
             findViewById(R.id.exit_room_rl).setVisibility(View.VISIBLE);
             findViewById(R.id.exit_room_rl).setVisibility(View.VISIBLE);
             btnExit.setText("删除商务群");
             btnExit.setText("删除商务群");
-            btnExit.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View view) {
-                    deleteRoom(mRoom);
-                }
-            });
+
             if (mucRoom.getCategory() == 1) {
             if (mucRoom.getCategory() == 1) {
                 if (CommonUtil.getSharedPreferences(mContext, "erp_commpany").equals(compName[0])) {
                 if (CommonUtil.getSharedPreferences(mContext, "erp_commpany").equals(compName[0])) {
                     btnExit.setText("删除商务群");
                     btnExit.setText("删除商务群");
@@ -354,6 +392,13 @@ public class RoomInfoActivity extends BaseActivity {
                     btnExit.setVisibility(View.GONE);
                     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() {
             findViewById(R.id.room_name_rl).setOnClickListener(new View.OnClickListener() {
                 @Override
                 @Override
                 public void onClick(View v) {
                 public void onClick(View v) {
@@ -397,11 +442,18 @@ public class RoomInfoActivity extends BaseActivity {
                 }
                 }
             });
             });
         } else {
         } else {
+            if (my != null && my.getRole() == 2) {
+                add_minus_count = 2;
+            } else {
+                add_minus_count = 1;
+            }
             if (btnExit == null) {
             if (btnExit == null) {
                 btnExit = (Button) findViewById(R.id.btn_exit);
                 btnExit = (Button) findViewById(R.id.btn_exit);
             }
             }
             btnExit.setText("退出商务群");
             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_name_arrow_img).setVisibility(View.INVISIBLE);
             findViewById(R.id.room_desc_arrow_img).setVisibility(View.INVISIBLE);
             findViewById(R.id.room_desc_arrow_img).setVisibility(View.INVISIBLE);
             findViewById(R.id.banned_voice_rl).setVisibility(View.GONE);
             findViewById(R.id.banned_voice_rl).setVisibility(View.GONE);
@@ -426,6 +478,12 @@ public class RoomInfoActivity extends BaseActivity {
                 }
                 }
             });
             });
         }
         }
+        btnExit.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                deleteRoom(mRoom);
+            }
+        });
         findViewById(R.id.exit_room_rl).setOnClickListener(new View.OnClickListener() {
         findViewById(R.id.exit_room_rl).setOnClickListener(new View.OnClickListener() {
             @Override
             @Override
             public void onClick(View v) {//成员退出房间
             public void onClick(View v) {//成员退出房间
@@ -455,6 +513,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) {
     private void showNewNoticeDialog(final String notice) {
         final EditText editText = new EditText(this);
         final EditText editText = new EditText(this);
         editText.setLines(2);
         editText.setLines(2);
@@ -584,8 +801,6 @@ public class RoomInfoActivity extends BaseActivity {
             ImageView imageView = (ImageView) view.findViewById(R.id.content);
             ImageView imageView = (ImageView) view.findViewById(R.id.content);
             TextView tvName = (TextView) view.findViewById(R.id.tv_name);
             TextView tvName = (TextView) view.findViewById(R.id.tv_name);
             Button button = (Button) view.findViewById(R.id.btn_del);
             Button button = (Button) view.findViewById(R.id.btn_del);
-
-
             if (position > members.size() - (add_minus_count + 1)) {
             if (position > members.size() - (add_minus_count + 1)) {
                 if (add_minus_count == 1) {
                 if (add_minus_count == 1) {
                     if (position == members.size() - 1) {
                     if (position == members.size() - 1) {
@@ -611,7 +826,17 @@ public class RoomInfoActivity extends BaseActivity {
                 tvName.setText(members.get(position).getNickName());
                 tvName.setText(members.get(position).getNickName());
                 AvatarHelper.getInstance().displayAvatar(members.get(position).getUserId(), imageView, true);
                 AvatarHelper.getInstance().displayAvatar(members.get(position).getUserId(), imageView, true);
                 if (doDel | doBannedVoice) {
                 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 {
                 } else {
                     button.setVisibility(View.GONE);
                     button.setVisibility(View.GONE);
                 }
                 }
@@ -643,6 +868,7 @@ public class RoomInfoActivity extends BaseActivity {
             }
             }
             return view;
             return view;
         }
         }
+
     }
     }
 
 
     private void showBanndedVoiceDialog(final int position, final String userId) {
     private void showBanndedVoiceDialog(final int position, final String userId) {

+ 3 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/ImageUtil.java

@@ -28,10 +28,7 @@ public class ImageUtil {
      * 获取到照片数据后,读取它的旋转信息,如果不是0,
      * 获取到照片数据后,读取它的旋转信息,如果不是0,
      * 说明这个照片已经被旋转过了,那么再使用android.graphics.Matrix将照片旋转回去即可。*/
      * 说明这个照片已经被旋转过了,那么再使用android.graphics.Matrix将照片旋转回去即可。*/
 
 
-    /**
-     * @author Administrator
-     * @功能:兼容性三星等手机旋转问题+等比例缩放
-     */
+
     public static Bitmap roateBitmapAndScale(Bitmap bitmap, int degree, int newWidth ,int newHeight ) {
     public static Bitmap roateBitmapAndScale(Bitmap bitmap, int degree, int newWidth ,int newHeight ) {
         if (degree == 0) {
         if (degree == 0) {
             return bitmap;
             return bitmap;
@@ -156,7 +153,7 @@ public class ImageUtil {
 
 
     /**
     /**
      * 压缩已存在的图片对象,并返回压缩后的图片(压缩质量,压缩尺寸函数)
      * 压缩已存在的图片对象,并返回压缩后的图片(压缩质量,压缩尺寸函数)
-     * @param bitmap :图片对象
+     * @param path :图片对象
      * @param quality:1-100;100表示不质量压缩
      * @param quality:1-100;100表示不质量压缩
      * @param reqsW:压缩宽度
      * @param reqsW:压缩宽度
      * @param reqsH:压缩高度
      * @param reqsH:压缩高度
@@ -168,7 +165,6 @@ public class ImageUtil {
             ByteArrayOutputStream baos = new ByteArrayOutputStream();//放入内存
             ByteArrayOutputStream baos = new ByteArrayOutputStream();//放入内存
             bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos);//压缩质量
             bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos);//压缩质量
             byte[] bts = baos.toByteArray();
             byte[] bts = baos.toByteArray();
-           // Bitmap res = compressBitmapWithByte(bts, reqsW, reqsH);//压缩尺寸
             Bitmap res=bytes2Bimap(bts);
             Bitmap res=bytes2Bimap(bts);
             baos.close();
             baos.close();
             return res;
             return res;
@@ -181,7 +177,7 @@ public class ImageUtil {
 
 
     /**
     /**
      * 压缩已存在的图片对象,并返回压缩后的图片文件(压缩质量,压缩尺寸函数)
      * 压缩已存在的图片对象,并返回压缩后的图片文件(压缩质量,压缩尺寸函数)
-     * @param bitmap :图片对象
+     * @param  :图片对象
      * @param quality:1-100;100表示不质量压缩
      * @param quality:1-100;100表示不质量压缩
      * @param reqsW:压缩宽度
      * @param reqsW:压缩宽度
      * @param reqsH:压缩高度
      * @param reqsH:压缩高度
@@ -254,9 +250,7 @@ public class ImageUtil {
         options.inJustDecodeBounds = true;
         options.inJustDecodeBounds = true;
         BitmapFactory.decodeFile(filePath, options);
         BitmapFactory.decodeFile(filePath, options);
         options.inSampleSize =   calculateInSampleSize(options, reqsW, reqsH);
         options.inSampleSize =   calculateInSampleSize(options, reqsW, reqsH);
-        Log.i("Arison", "ImageUtil:compressBitmapWithFilePath:254:calculateInSampleSize(options, reqsW, reqsH)=" + calculateInSampleSize(options, reqsW, reqsH));
         options.inJustDecodeBounds = false;
         options.inJustDecodeBounds = false;
-        Log.i("Arison","ImageUtil:compressBitmapWithFilePath:257:压缩尺寸原图大小:"+FileSizeUtil.getFileOrFilesSize(filePath,FileSizeUtil.SIZETYPE_MB)+"MB");
         return BitmapFactory.decodeFile(filePath, options);
         return BitmapFactory.decodeFile(filePath, options);
     }
     }
 
 

+ 5 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/ChatContentView.java

@@ -836,7 +836,11 @@ public class ChatContentView extends PullDownListView implements OnMediaStateCha
                         Bitmap bitmap = ImageLoader.getInstance().getMemoryCache().get(filePath);
                         Bitmap bitmap = ImageLoader.getInstance().getMemoryCache().get(filePath);
                         if (bitmap == null || bitmap.isRecycled()) {
                         if (bitmap == null || bitmap.isRecycled()) {
                             bitmap = ThumbnailUtils.createVideoThumbnail(filePath, Thumbnails.MINI_KIND);
                             bitmap = ThumbnailUtils.createVideoThumbnail(filePath, Thumbnails.MINI_KIND);
-                            ImageLoader.getInstance().getMemoryCache().put(filePath, bitmap);
+                            if (filePath == null || bitmap == null){
+
+                            }else{
+                                ImageLoader.getInstance().getMemoryCache().put(filePath, bitmap);
+                            }
                         }
                         }
                         if (bitmap != null && !bitmap.isRecycled()) {
                         if (bitmap != null && !bitmap.isRecycled()) {
                             videoViewHolder.chat_thumb.setImageBitmap(bitmap);
                             videoViewHolder.chat_thumb.setImageBitmap(bitmap);
@@ -868,9 +872,7 @@ public class ChatContentView extends PullDownListView implements OnMediaStateCha
                     longView = cardViewHolder.relativeLayout;
                     longView = cardViewHolder.relativeLayout;
                     break;
                     break;
                 case XmppMessage.TYPE_FILE:
                 case XmppMessage.TYPE_FILE:
-                    Log.d("roamer", "....TYPE_FILE要显示了...." + message.getContent());
                     FileViewHolder fileViewHolder = (FileViewHolder) contentViewHolder;
                     FileViewHolder fileViewHolder = (FileViewHolder) contentViewHolder;
-
                     if (!message.isMySend()) {
                     if (!message.isMySend()) {
                         fileViewHolder.file_progress.setVisibility(GONE);
                         fileViewHolder.file_progress.setVisibility(GONE);
                         if (!message.isRead()) {
                         if (!message.isRead()) {

+ 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.content.Context;
 import android.text.TextUtils;
 import android.text.TextUtils;
-import android.util.Log;
 import android.widget.Toast;
 import android.widget.Toast;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
-import com.xzjmyk.pm.activity.helper.LoginHelper;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.R;
 
 
 public class Result {
 public class Result {
@@ -47,24 +45,23 @@ public class Result {
 			return true;
 			return true;
 		} else if (result.resultCode == CODE_NO_TOKEN) {// 缺少参数Token
 		} else if (result.resultCode == CODE_NO_TOKEN) {// 缺少参数Token
 			//TODO 发出异常登录的广播
 			//TODO 发出异常登录的广播
-			//LoginHelper.broadcastToken(context);
-			//LoginHelper.broadcastConflict(context);
-			Log.i("Arison", "defaultParser() returned: " + "Token 过期");
+
+//			LoginHelper.broadcastToken(context);
+//			LoginHelper.broadcastConflict(context);
 			if (showToast)
 			if (showToast)
 				showResultToast(context, result);
 				showResultToast(context, result);
 			return false;
 			return false;
 		} else if (result.resultCode == CODE_TOKEN_ERROR) {// Token过期或错误
 		} else if (result.resultCode == CODE_TOKEN_ERROR) {// Token过期或错误
 			//TODO 发出异常登录的广播
 			//TODO 发出异常登录的广播
-			//LoginHelper.broadcastToken(context);
-			//LoginHelper.broadcastConflict(context);
-			Log.i("Arison", "defaultParser() returned: " + "Token 过期");
+//			LoginHelper.broadcastToken(context);
+//			LoginHelper.broadcastConflict(context);
 			if (showToast)
 			if (showToast)
 				showResultToast(context, result);
 				showResultToast(context, result);
 			return false;
 			return false;
 		} else {
 		} else {
 			if (showToast){
 			if (showToast){
 				//TODO 返回错误
 				//TODO 返回错误
-								showResultToast(context, result);
+				showResultToast(context, result);
 			}
 			}
 			return false;
 			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_height="@dimen/next_height"
                     android:layout_alignParentRight="true"
                     android:layout_alignParentRight="true"
                     android:layout_centerVertical="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:background="@drawable/set_list_next"
                     android:contentDescription="@string/app_name" />
                     android:contentDescription="@string/app_name" />
             </RelativeLayout>
             </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
         <ImageView
             android:id="@+id/cover_img"
             android:id="@+id/cover_img"
             android:layout_width="fill_parent"
             android:layout_width="fill_parent"
-            android:layout_height="300dp"
+            android:layout_height="250dp"
             android:contentDescription="@string/app_name"
             android:contentDescription="@string/app_name"
             android:scaleType="centerCrop" />
             android:scaleType="centerCrop" />