Commit 32cadb23 authored by jianglx's avatar jianglx

Im的添加好友代码提交

parent b303a9d6
......@@ -59,7 +59,8 @@
<activity android:name=".AddressListActivity" />
<activity android:name=".friend.AddFriendActivity" />
<activity android:name=".friend.NewFriendActivity" />
<activity android:name=".UserDetailActivity"></activity>
<activity android:name=".UserDetailActivity" />
<activity android:name=".friend.RealAddFriendActivity"></activity>
</application>
</manifest>
\ No newline at end of file
......@@ -2,9 +2,9 @@ package com.rv.im;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
......@@ -12,8 +12,10 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseStatusActivity;
import com.ruiwenliu.wrapper.weight.TitleView;
import com.rv.im.bean.UserDetailBean;
import com.rv.im.db.service.FriendServiceImp;
import com.rv.im.listener.NoDoubleClickListener;
import com.rv.im.presenter.UserDetailPresenter;
import com.rv.im.util.DateUtils;
import com.rv.im.util.TimeUtils;
import com.rv.im.view.RoundImageView;
public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter> {
......@@ -35,6 +37,8 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter>
private Button btnNextStep;
private UserDetailBean.UserDetail user;
public static void start(Context ctx, String userId) {
Intent intent = new Intent(ctx, UserDetailActivity.class);
Bundle bundle = new Bundle();
......@@ -92,6 +96,7 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter>
case 0:
if (result != null && result.resultCode == 1) {
UserDetailBean userDetailBean = (UserDetailBean) result;
user = userDetailBean.getData();
updateUi();
}
break;
......@@ -99,5 +104,68 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter>
}
private void updateUi() {
if (user == null) {
return;
}
if (isFinishing()) {
return;
}
nameTv.setText(TextUtils.isEmpty(user.getNickName()) ? "" : user.getNickName());
birthdayTv.setText(DateUtils.timestampToString2(user.getBirthday() * 1000));
sexTv.setText(user.getSex() == 0 ? "女" : "男");
// cityText.setText();
if (TextUtils.isEmpty(user.getPhone())) {
((View) (phoneTv.getParent())).setVisibility(View.GONE);
} else {
((View) (phoneTv.getParent())).setVisibility(View.VISIBLE);
phoneTv.setText(user.getPhone());
}
if (user.getShowLastLoginTime() > 0) {
((View) (onlineTv.getParent())).setVisibility(View.VISIBLE);
onlineTv.setText(TimeUtils.getFriendlyTimeDesc(this, user.getShowLastLoginTime()));
} else {
((View) (onlineTv.getParent())).setVisibility(View.GONE);
}
if (userId == mLoginUserId) {
btnNextStep.setVisibility(View.GONE);
} else {
btnNextStep.setVisibility(View.VISIBLE);
if (user.getFriends() == null) {// 陌生人
btnNextStep.setText("添加好友");
btnNextStep.setOnClickListener(new AddAttentionListener());
} else if (user.getFriends().getBlacklist() == 1) { // 需显示移除黑名单
btnNextStep.setText("移除黑名单");
// btnNextStep.setOnClickListener(new RemoveBlacklistListener());
} else if (user.getFriends().getIsBeenBlack() == 1) {// 需显示加入黑名单
btnNextStep.setText("加入黑名单");
} else if (user.getFriends().getStatus() == 2 || user.getFriends().getStatus() == 4) {// 好友
btnNextStep.setText("发送消息");
btnNextStep.setOnClickListener(new SendMsgListener());
} else {
btnNextStep.setText("添加好友");
btnNextStep.setOnClickListener(new AddAttentionListener());
}
}
}
private class SendMsgListener extends NoDoubleClickListener {
@Override
public void onNoDoubleClick(View view) {
Intent intent = ChatActivity.getIntent(UserDetailActivity.this, userId, user.getNickName(), 0);
startActivity(intent);
finish();
}
}
public class AddAttentionListener extends NoDoubleClickListener {
@Override
public void onNoDoubleClick(View view) {
}
}
}
......@@ -2,6 +2,7 @@ package com.rv.im.friend;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
......@@ -20,15 +21,11 @@ import com.rv.im.UserDetailActivity;
import com.rv.im.adapter.FriendSearchListAdapter;
import com.rv.im.bean.AddResultBean;
import com.rv.im.bean.FriendSearchBean;
import com.rv.im.db.service.ChatMessageServiceImp;
import com.rv.im.db.service.FriendServiceImp;
import com.rv.im.db.table.ChatMessage;
import com.rv.im.presenter.AddFriendPresenter;
import com.rv.im.xmpp.ListenerManager;
import com.rv.im.xmpp.listener.ChatMessageListener;
import com.rv.im.xmpp.listener.NewFriendListener;
/*******
*
* 添加好友功能
......@@ -85,8 +82,6 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im
@Override
public void add(FriendSearchBean.FriendSearItemBean item) {
userId = item.getUserId();
userName = item.getNickname();
int fromAddType;
if (!TextUtils.isEmpty(userName) && userName.contains(mKeyWord)) {
fromAddType = 5;
......@@ -94,8 +89,10 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im
// 昵称不包含关键字的话就是通过手机号搜索出来的,
fromAddType = 4;
}
userId = item.getUserId();
userName = item.getNickname();
startActivityForResult(RealAddFriendActivity.getIntent(getApplicationContext(), userId, userName, fromAddType), 10000);
mPresenter.addFriend(userId, fromAddType);
}
});
recyclerview.setAdapter(adapter);
......@@ -140,118 +137,21 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im
@Override
public void onNewFriendSendStateChange(String toUserId, ChatMessage message, int messageState) {
if (messageState == ChatMessageListener.MESSAGE_SEND_SUCCESS) {
msgSendSuccess(message, message.getPackId());
} else if (messageState == ChatMessageListener.MESSAGE_SEND_FAILED) {
// msgSendFailed(message.getPacketId());
}
}
// xmpp消息发送成功最终回调到这,
// 在这里调整ui,
// 还有存本地数据库,
public void msgSendSuccess(ChatMessage message, String packet) {
if (addhaoyouid != null && addhaoyouid.equals(packet)) {
if (isyanzheng == 0) {// 需要验证
showToast("打招呼成功,静候回音");
FriendServiceImp.getInstance(this).addMessage(mPresenter.buildAddFriendMessage(userId, userName, message.getMessageType()));
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
} else if (isyanzheng == 1) {
showToast("好友添加成功");
// 数据库中添加好友
FriendServiceImp.getInstance(this).addMessage(mPresenter.buildAddFriendMessage(userId, userName, message.getMessageType()));
ChatMessageServiceImp.getInstance(this).addMessage(message);
// FriendDao.getInstance().updateFriendContent(mLoginUserId, mUser.getUserId(), InternationalizationHelper.getString("JXMessageObject_BeFriendAndChat"), XmppMessage.TYPE_TEXT, TimeUtils.sk_time_current_time());
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
// loadOthersInfoFromNet();
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
}
// 已经是好友了,mFriend不能为空,
// mFriend = FriendDao.getInstance().getFriend(mLoginUserId, mUserId);
}
// else if (addblackid != null && addblackid.equals(packet)) {
// Toast.makeText(getApplicationContext(), getString(R.string.add_blacklist_succ), Toast.LENGTH_SHORT).show();
// findViewById(R.id.look_bussic_cicle_rl).setVisibility(View.GONE);
// mNextStepBtn.setText(InternationalizationHelper.getString("REMOVE"));
// mNextStepBtn.setOnClickListener(new RemoveBlacklistListener());
//
// // 更新当前持有的Friend对象,
// mFriend.setStatus(Friend.STATUS_BLACKLIST);
// FriendDao.getInstance().updateFriendStatus(message.getOwnerId(), message.getUserId(), mFriend.getStatus());
// FriendHelper.addBlacklistExtraOperation(message.getOwnerId(), message.getUserId());
//
// ChatMessage addBlackChatMessage = new ChatMessage();
// addBlackChatMessage.setContent(InternationalizationHelper.getString("JXFriendObject_AddedBlackList") + " " + mUser.getNickName());
// addBlackChatMessage.setTimeSend(TimeUtils.sk_time_current_time());
// FriendDao.getInstance().updateLastChatMessage(mLoginUserId, Friend.ID_NEW_FRIEND_MESSAGE, addBlackChatMessage);
//
// NewFriendDao.getInstance().createOrUpdateNewFriend(message);
// NewFriendDao.getInstance().changeNewFriendState(mUser.getUserId(), Friend.STATUS_18);
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
//
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
//
// Intent intent = new Intent(this, MainActivity.class);
// startActivity(intent);
// finish();
// } else if (removeblack != null && removeblack.equals(packet)) {
// Toast.makeText(getApplicationContext(), InternationalizationHelper.getString("REMOVE_BLACKLIST"), Toast.LENGTH_SHORT).show();
// findViewById(R.id.look_bussic_cicle_rl).setVisibility(View.VISIBLE);
// mNextStepBtn.setText(InternationalizationHelper.getString("JXUserInfoVC_SendMseeage"));
// mNextStepBtn.setOnClickListener(new SendMsgListener());
//
// // 更新当前持有的Friend对象,
// if (mFriend != null) {
// mFriend.setStatus(Friend.STATUS_FRIEND);
// }
// NewFriendDao.getInstance().ascensionNewFriend(message, Friend.STATUS_FRIEND);
// FriendHelper.beAddFriendExtraOperation(message.getOwnerId(), message.getUserId());
//
// ChatMessage removeChatMessage = new ChatMessage();
// removeChatMessage.setContent(coreManager.getSelf().getNickName() + InternationalizationHelper.getString("REMOVE"));
// removeChatMessage.setTimeSend(TimeUtils.sk_time_current_time());
// FriendDao.getInstance().updateLastChatMessage(mLoginUserId, Friend.ID_NEW_FRIEND_MESSAGE, removeChatMessage);
// /* FriendDao.getInstance().updateFriendContent(mLoginUserId, message.getUserId(),
// InternationalizationHelper.getString("JXMessageObject_BeFriendAndChat"), XmppMessage.TYPE_TEXT, TimeUtils.sk_time_current_time());*/
//
// NewFriendDao.getInstance().createOrUpdateNewFriend(message);
// NewFriendDao.getInstance().changeNewFriendState(message.getUserId(), Friend.STATUS_24);
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
//
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
//
// loadOthersInfoFromNet();
// } else if (deletehaoyou != null && deletehaoyou.equals(packet)) {
// Toast.makeText(getApplicationContext(), InternationalizationHelper.getString("JXAlert_DeleteOK"), Toast.LENGTH_SHORT).show();
//
// FriendHelper.removeAttentionOrFriend(mLoginUserId, message.getUserId());
//
// ChatMessage deleteChatMessage = new ChatMessage();
// deleteChatMessage.setContent(InternationalizationHelper.getString("JXAlert_DeleteFirend") + " " + mUser.getNickName());
// deleteChatMessage.setTimeSend(TimeUtils.sk_time_current_time());
// FriendDao.getInstance().updateLastChatMessage(mLoginUserId, Friend.ID_NEW_FRIEND_MESSAGE, deleteChatMessage);
//
// NewFriendDao.getInstance().createOrUpdateNewFriend(message);
// NewFriendDao.getInstance().changeNewFriendState(mUser.getUserId(), Friend.STATUS_16);
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
//
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
//
// Intent intent = new Intent(this, MainActivity.class);
// startActivity(intent);
// finish();
// }
}
@Override
public boolean onNewFriend(ChatMessage message) {
// if(message.getMessageType() == MessageTypeEnum)
return false;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 10000 && resultCode == RESULT_OK) {
setResult(RESULT_OK);
finish();
}
}
}
package com.rv.im.listener;
import android.view.View;
// 防止点击按钮 过快 || 多次点击 造成多次事件
public abstract class NoDoubleClickListener implements View.OnClickListener {
private static long lastClickTime = 0;
private static final int MIN_CLICK_DELAY_TIME = 800;
public abstract void onNoDoubleClick(View view);
@Override
public void onClick(View v) {
long currentTime = System.currentTimeMillis();
if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
lastClickTime = currentTime;
onNoDoubleClick(v);
}
}
}
\ No newline at end of file
package com.rv.im.presenter;
public class RealAddFriendPresenter extends AddFriendPresenter {
}
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="7dp" />
<solid android:color="@color/gray_f5f5f5" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/dp_40"
android:paddingRight="@dimen/dp_40"
tools:context=".friend.RealAddFriendActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_20"
android:text="发送添加好友申请" />
<EditText
android:id="@+id/edt_add_apply"
android:layout_width="match_parent"
android:layout_height="@dimen/size_100"
android:layout_marginTop="@dimen/size_5"
android:background="@drawable/im_grap_circle_bg"
android:gravity="left|top"
android:padding="@dimen/dp_10"
android:textSize="@dimen/sp_12" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp40"
android:text="设置备注" />
<EditText
android:id="@+id/edt_add_remark"
android:layout_width="match_parent"
android:layout_height="@dimen/size_60"
android:layout_marginTop="@dimen/size_5"
android:background="@drawable/im_grap_circle_bg"
android:gravity="left|top"
android:padding="@dimen/dp_10"
android:textSize="@dimen/sp_12" />
</LinearLayout>
\ No newline at end of file
......@@ -252,6 +252,7 @@
</RelativeLayout>
<Button
android:layout_marginBottom="5dp"
android:id="@+id/next_step_btn"
style="@style/BossGreenBtn"
android:layout_width="fill_parent"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment