管理添加
显示管理尾巴 多选转发
This commit is contained in:
@@ -47,12 +47,12 @@ android {
|
||||
applicationId = "com.dskj.rbchat"
|
||||
minSdk = 24
|
||||
targetSdk = 34
|
||||
versionCode = 202
|
||||
versionName = "2.0.2"
|
||||
versionCode = 203
|
||||
versionName = "2.0.3"
|
||||
multiDexEnabled = true
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
|
||||
// manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" //测试
|
||||
// manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
|
||||
manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" //测试
|
||||
|
||||
manifestPlaceholders["JPUSH_PKGNAME"] = "com.dskj.rbchat"
|
||||
manifestPlaceholders["JPUSH_APPKEY"] = "9041bc22de91e3d9af3cfd23"
|
||||
@@ -101,8 +101,8 @@ android {
|
||||
"\"AIzaSyB7P1o1EIA02eWoNP_7QJ9XwWe3WkSZb9k\""
|
||||
)
|
||||
//正式服
|
||||
manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
|
||||
// manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a"
|
||||
// manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式
|
||||
manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a"
|
||||
|
||||
}
|
||||
|
||||
@@ -126,8 +126,8 @@ android {
|
||||
"\"AIzaSyB7P1o1EIA02eWoNP_7QJ9XwWe3WkSZb9k\""
|
||||
)
|
||||
//测试APPKEY
|
||||
// manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a"
|
||||
manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f"
|
||||
manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a"
|
||||
// manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f"
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1009,7 +1009,7 @@ public class UserInfoActivity extends BaseActivity {
|
||||
.skipMemoryCache(false)
|
||||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE);
|
||||
try {
|
||||
|
||||
// LogUtils.i("头像地址:"+u.getUserAvatarFileName());
|
||||
|
||||
Glide.with(UserInfoActivity.this)
|
||||
.load(u.getUserAvatarFileName())
|
||||
|
||||
@@ -105,11 +105,24 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
|
||||
public void updateView() {
|
||||
super.updateView();
|
||||
if (type == 1) { //转发 这ui 修改的....
|
||||
shoeSignOne(true);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void shoeSignOne(boolean b) {
|
||||
if (b) {
|
||||
rvSelected.setVisibility(View.GONE);
|
||||
updateListView(contactListView);
|
||||
updateListView(lastContactView);
|
||||
updateListView(loveContactView);
|
||||
updateListView(searchContactView);
|
||||
} else {
|
||||
rvSelected.setVisibility(View.VISIBLE);
|
||||
updateListView1(contactListView);
|
||||
updateListView1(lastContactView);
|
||||
updateListView1(loveContactView);
|
||||
updateListView1(searchContactView);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,6 +133,12 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
|
||||
contactListView.setLayoutParams(params1);
|
||||
}
|
||||
|
||||
public void updateListView1(ContactListView contactListView) {
|
||||
contactListView.showSelector(true);
|
||||
LinearLayout.LayoutParams params1 = (LinearLayout.LayoutParams) contactListView.getLayoutParams();
|
||||
params1.setMarginStart(SizeUtils.dp2px(15));
|
||||
contactListView.setLayoutParams(params1);
|
||||
}
|
||||
public void setViewHolderFactory(ContactListView contactView) {
|
||||
contactView
|
||||
.getDecoration()
|
||||
@@ -212,23 +231,43 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
|
||||
}
|
||||
|
||||
protected void configTitle(BackTitleBar titleBar) {
|
||||
if (type == 1) {
|
||||
titleBar
|
||||
.setOnBackIconClickListener(v -> onBackPressed())
|
||||
.setTitle(R.string.select);
|
||||
} else {
|
||||
// if (type == 1) {
|
||||
// titleBar
|
||||
// .setOnBackIconClickListener(v -> onBackPressed())
|
||||
// .setTitle(R.string.select);
|
||||
// } else {
|
||||
titleBar
|
||||
.setOnBackIconClickListener(v -> onBackPressed())
|
||||
.setTitle(R.string.select)
|
||||
.setActionText(R.string.selector_sure_without_num)
|
||||
.setActionText(type==1?getString(com.dskj.rbchat.R.string.chat_message_action_multi_select):getString(R.string.selector_sure_without_num))
|
||||
.setActionTextColor(getResources().getColor(R.color.color_6877fe))
|
||||
.setActionListener(
|
||||
v -> {
|
||||
if(type==1&&isSignOne){
|
||||
isSignOne = false;
|
||||
shoeSignOne(false);
|
||||
|
||||
int verticalPadding = SizeUtils.dp2px(5);
|
||||
int horizontalPadding = SizeUtils.dp2px(10);
|
||||
int endPadding = SizeUtils.dp2px(5);
|
||||
TextView rightTextView = titleBar.getRightTextView();
|
||||
rightTextView.setText(getString(R.string.selector_sure_without_num));
|
||||
FrameLayout.LayoutParams layoutParams =
|
||||
(FrameLayout.LayoutParams) rightTextView.getLayoutParams();
|
||||
layoutParams.rightMargin = SizeUtils.dp2px(endPadding);
|
||||
rightTextView.setPadding(
|
||||
horizontalPadding, verticalPadding, horizontalPadding, verticalPadding);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (checkNetworkEnable && !NetworkUtils.isConnected()) {
|
||||
Toast.makeText(this, R.string.contact_network_error_tip, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
List<String> select = getSelectedAccount();
|
||||
List<String> selectName = getSelectedName();
|
||||
|
||||
if (select.size() < 1) {
|
||||
Toast.makeText(this, getString(R.string.select_empty_tips), Toast.LENGTH_LONG)
|
||||
.show();
|
||||
@@ -240,7 +279,23 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
|
||||
.show();
|
||||
return;
|
||||
}
|
||||
createGroup();
|
||||
|
||||
if(type ==1){
|
||||
// FriendInfo friendInfo = ((ContactFriendBean) data).data;
|
||||
//转发选取一个结束
|
||||
Intent result = new Intent();
|
||||
|
||||
listAccount.clear();
|
||||
listname.clear();
|
||||
listAccount.addAll(select);
|
||||
listname.addAll(selectName);
|
||||
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, listAccount);
|
||||
result.putExtra(KEY_REQUEST_SELECTOR_NAME, listname);
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
}else {
|
||||
createGroup();
|
||||
}
|
||||
|
||||
|
||||
// if (!selectedListAdapter.getSelectedFriends().isEmpty()) {
|
||||
@@ -256,7 +311,7 @@ public class FunContactSelectorActivity extends BaseContactSelectorActivity {
|
||||
|
||||
// titleBar.getTitleTextView().setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
|
||||
// titleBar.getRightTextView().setTextColor(getResources().getColor(R.color.color_6b3689));
|
||||
}
|
||||
// }
|
||||
int verticalPadding = SizeUtils.dp2px(5);
|
||||
int horizontalPadding = SizeUtils.dp2px(10);
|
||||
int endPadding = SizeUtils.dp2px(5);
|
||||
|
||||
@@ -33,7 +33,12 @@ import com.dskj.rbchat.network.BaseObserver;
|
||||
import com.dskj.rbchat.network.Result;
|
||||
import com.dskj.rbchat.utils.GsonUtils;
|
||||
import com.dskj.rbchat.utils.LogUtils;
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.RequestCallback;
|
||||
import com.netease.nimlib.sdk.team.TeamService;
|
||||
import com.netease.nimlib.sdk.team.constant.TeamMemberType;
|
||||
import com.netease.nimlib.sdk.team.model.Team;
|
||||
import com.netease.nimlib.sdk.team.model.TeamMember;
|
||||
import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam;
|
||||
import com.netease.yunxin.kit.chatkit.repo.ContactRepo;
|
||||
import com.netease.yunxin.kit.chatkit.ui.model.TeamExtensionBean;
|
||||
@@ -338,6 +343,36 @@ public class TeamMembersListActivity extends BaseTeamQrSettingActivity {
|
||||
public void startUserInfoActivity(String userid, String teamId) {
|
||||
//如果群不允许群内添加好友 当前登录用户不是群主,以及userid 也不是群主 直接跳过
|
||||
if (isAllowAdd == 0 && isManager != 1 && !userid.equals(teamOwnerId)) {
|
||||
|
||||
NIMClient.getService(TeamService.class).queryTeamMember(teamId, userid).setCallback(new RequestCallback<TeamMember>() {
|
||||
@Override
|
||||
public void onSuccess(TeamMember members) {
|
||||
if(members!=null){
|
||||
if(members.getType() == TeamMemberType.Manager){
|
||||
XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
|
||||
.withContext(TeamMembersListActivity.this)
|
||||
.withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, IMKitClient.account())
|
||||
.withParam("userId", userid)
|
||||
.withParam("teamId", teamId)
|
||||
.withParam("isGroup", true)
|
||||
.navigate();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(int code) {
|
||||
// 撤销群管理员失败
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onException(Throwable exception) {
|
||||
// 错误
|
||||
}
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -125,14 +125,28 @@ public class TeamMembersAdapter extends RecyclerView.Adapter<TeamMembersAdapter.
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull TeamMembersViewHolder holder, int position) {
|
||||
UserInfo userInfo = members.get(position);
|
||||
holder.binding.unreadTv.setVisibility(View.GONE);
|
||||
if (position == 0 && isShowInvited) {
|
||||
holder.binding.avatarView.setData(com.netease.yunxin.kit.contactkit.ui.R.drawable.ic_creategroup_add, "");
|
||||
holder.binding.icDelete.setVisibility(View.GONE);
|
||||
holder.binding.tvName.setText(mContext.getResources().getString(R.string.invcode_friend_txt));
|
||||
holder.binding.tvNameActivetime.setVisibility(View.GONE);
|
||||
} else {
|
||||
TeamMember teamMember = NIMClient.getService(TeamService.class).queryTeamMemberBlock(teamId, userInfo.getAccount());
|
||||
if(teamMember!=null){
|
||||
if(teamMember.getType() == TeamMemberType.Manager){
|
||||
holder.binding.unreadTv.setVisibility(View.VISIBLE);
|
||||
holder.binding.unreadTv.setText(R.string.teamsetting_other_teammanager);
|
||||
holder.binding.unreadTv.setBackgroundResource(com.netease.yunxin.kit.conversationkit.ui.R.drawable.bg_conversation_red_dot1);
|
||||
}else if(teamMember.getType() == TeamMemberType.Owner){
|
||||
holder.binding.unreadTv.setVisibility(View.VISIBLE);
|
||||
holder.binding.unreadTv.setText(com.netease.yunxin.kit.teamkit.ui.R.string.team_owner);
|
||||
holder.binding.unreadTv.setBackgroundResource(com.netease.yunxin.kit.conversationkit.ui.R.drawable.bg_conversation_red_dot);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
if (isEdit) {
|
||||
TeamMember teamMember = NIMClient.getService(TeamService.class).queryTeamMemberBlock(teamId, userInfo.getAccount());
|
||||
if (teamMember != null && (teamMember.getType() == TeamMemberType.Manager || teamMember.getType() == TeamMemberType.Owner)) {
|
||||
holder.binding.icDelete.setVisibility(View.GONE);
|
||||
} else {
|
||||
|
||||
@@ -95,9 +95,9 @@ public class WelcomeActivity extends BaseActivity {
|
||||
ALog.d(Constant.PROJECT_TAG, TAG, "onCreateView");
|
||||
//getWindow().setNavigationBarColor(getResources().getColor(R.color.color_white));
|
||||
// 设置全屏
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
|
||||
WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
// requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
|
||||
// WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
IMApplication.setColdStart(true);
|
||||
activityWelcomeBinding = ActivityWelcomeBinding.inflate(getLayoutInflater());
|
||||
setContentView(activityWelcomeBinding.getRoot());
|
||||
|
||||
@@ -299,6 +299,7 @@
|
||||
<View
|
||||
android:layout_width="@dimen/dp_1"
|
||||
android:layout_height="@dimen/dp_20"
|
||||
android:visibility="gone"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:background="#49B78C8C" />
|
||||
|
||||
@@ -366,7 +367,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginLeft="@dimen/dp_15"
|
||||
android:layout_marginRight="@dimen/dp_15"
|
||||
android:background="#D8D8D8" />
|
||||
@@ -404,7 +405,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginLeft="@dimen/dp_15"
|
||||
android:layout_marginRight="@dimen/dp_15"
|
||||
android:background="#D8D8D8" />
|
||||
@@ -431,7 +432,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginLeft="@dimen/dp_15"
|
||||
android:layout_marginRight="@dimen/dp_15"
|
||||
android:background="#D8D8D8" />
|
||||
@@ -480,7 +481,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginLeft="@dimen/dp_15"
|
||||
android:layout_marginRight="@dimen/dp_15"
|
||||
android:background="#D8D8D8" />
|
||||
@@ -518,7 +519,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginLeft="@dimen/dp_15"
|
||||
android:layout_marginRight="@dimen/dp_15"
|
||||
android:background="#D8D8D8" />
|
||||
@@ -551,7 +552,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginLeft="@dimen/dp_15"
|
||||
android:layout_marginRight="@dimen/dp_15"
|
||||
android:background="#D8D8D8" />
|
||||
@@ -615,7 +616,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginLeft="@dimen/dp_15"
|
||||
android:layout_marginRight="@dimen/dp_15"
|
||||
android:background="#D8D8D8" />
|
||||
@@ -655,7 +656,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginLeft="@dimen/dp_15"
|
||||
android:layout_marginRight="@dimen/dp_15"
|
||||
android:background="#D8D8D8" />
|
||||
@@ -688,7 +689,7 @@
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginLeft="@dimen/dp_15"
|
||||
android:layout_marginRight="@dimen/dp_15"
|
||||
android:background="#D8D8D8" />
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
@@ -43,10 +43,27 @@
|
||||
android:textSize="@dimen/text_size_16"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tv_name_activetime"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/avatar_view"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/unreadTv"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dimen_2_dp"
|
||||
android:background="@drawable/bg_conversation_red_dot"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dimen_5_dp"
|
||||
android:paddingEnd="@dimen/dimen_5_dp"
|
||||
android:textColor="@color/color_white"
|
||||
android:textSize="@dimen/text_size_12"
|
||||
android:visibility="gone"
|
||||
android:layout_marginStart="@dimen/dp_5"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_name"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_name"
|
||||
app:layout_constraintLeft_toRightOf="@id/tv_name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name_activetime"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -921,4 +921,6 @@
|
||||
<string name="str_teammanager_add_faile_toast">A maximum of 5 administrators can be set</string>
|
||||
<string name="str_teammanager_add_succ_toast">Added successfully</string>
|
||||
<string name="str_teammanager_add_not_toast">Please select an administrator</string>
|
||||
<string name="chat_message_action_multi_select">Multi-select</string>
|
||||
|
||||
</resources>
|
||||
@@ -7,7 +7,7 @@
|
||||
<resources>
|
||||
<string name="google_map_key">AIzaSyAAXviskUffLY3KfnrKVPlwcj5Ks5ces_8</string>
|
||||
|
||||
<string name="app_name">淘夢購</string>
|
||||
<string name="app_name">MM</string>
|
||||
<string name="yunxin_name">網易雲信</string>
|
||||
<string name="yunxin_desc">真正穩定的IM 雲端服務</string>
|
||||
|
||||
@@ -330,7 +330,7 @@
|
||||
<string name="aihistory_clean">クリア</string>
|
||||
<string name="aihistory_title">Q&A履歴をクリアしてもよろしいですか?</string>
|
||||
<string name="aianswer_txt">スマート ドリームの回答を生成中です。お待ちください...</string>
|
||||
<string name="aiintroduct_zh_txt">您好,我是淘夢購團隊研發的智能認知模型,我的名字叫小夢,我可以和人類進行自然交流,解答問題,高效完成各領域的認知智能需求</string>
|
||||
<string name="aiintroduct_zh_txt">您好,我是MM團隊研發的智能認知模型,我的名字叫小夢,我可以和人類進行自然交流,解答問題,高效完成各領域的認知智能需求</string>
|
||||
<string name="aiintroduct_en_txt">Hello, I am an intelligent cognitive model developed by TimeGo team. My name is Xiaomeng.
|
||||
I can naturally communicate with humans, answer questions, and efficiently complete the cognitive intelligence needs in various fields</string>
|
||||
<string name="aihint_txt">ちょっと、そこ!私はあなたの新しい友達シャオ・メンです</string>
|
||||
@@ -346,6 +346,7 @@
|
||||
<string name="nmhmylg_txt">まだ話していませんね~</string>
|
||||
<string name="myltjl_txt">まだチャット記録がありません~</string>
|
||||
<string name="to_wallet_send_redpack_txt">金貨残高が入金されているので、をクリックして確認してください></string>
|
||||
<string name="to_wallet_send_redpack_txt_lipin">ギフトポイント残高が入金されました。クリックして確認></string>
|
||||
<string name="species_txt">金貨</string>
|
||||
<string name="jifen_txt">ポイント</string>
|
||||
<string name="silver_coins_txt">銀貨</string>
|
||||
@@ -360,6 +361,7 @@
|
||||
<string name="danwei_txt">パソコン</string>
|
||||
<string name="remarks_hit_txt">お金持ちになり、幸運を祈ります</string>
|
||||
<string name="send_in_redenvelope_txt1">赤い封筒に金貨を入れます</string>
|
||||
<string name="send_in_lipinjifen_txt1">ギフトポイントを赤い封筒に詰める</string>
|
||||
<string name="send_in_redtype_txt1">赤い封筒に金貨を詰める</string>
|
||||
<string name="no_get_to_back_txt">未受領のお年玉は、24時間以内に返却されます</string>
|
||||
<string name="zhuanzhangobject_txt">クリックして転送オブジェクトを選択します</string>
|
||||
@@ -887,7 +889,7 @@
|
||||
<string name="userphoto_dialog_movetitle">他のアルバムに移動</string>
|
||||
<string name="userphoto_dialog_notfriendtitle">このアルバムは友達のみ閲覧可能に設定されています。閲覧するには友達リクエストを送信してください。</string>
|
||||
<string name="kefu_selector_title">お問い合わせの内容を選択してください:</string>
|
||||
<string name="kefu_select_taomenggou">淘夢購に関する質問</string>
|
||||
<string name="kefu_select_taomenggou">MMに関する質問</string>
|
||||
<string name="kefu_select_taoleding">淘樂町に関する質問</string>
|
||||
<string name="kefu_select_jifengshangcheng">ポイントモールに関する質問</string>
|
||||
<string name="kefu_select_hezuo">協力業者に関する質問</string>
|
||||
@@ -920,4 +922,8 @@
|
||||
<string name="str_teammanager_add_succ_toast">追加に成功しました</string>
|
||||
<string name="str_teammanager_add_not_toast">管理者を選択してください</string>
|
||||
|
||||
<string name="str_chat_all">世界チャット</string>
|
||||
|
||||
<string name="chat_message_action_multi_select">多选</string>
|
||||
|
||||
</resources>
|
||||
@@ -3,4 +3,6 @@
|
||||
|
||||
|
||||
<string name="ps_message_max_num">最多只能选择%1$s张照片或视频</string>
|
||||
<string name="chat_message_action_multi_select">多选</string>
|
||||
|
||||
</resources>
|
||||
@@ -921,5 +921,6 @@
|
||||
<string name="str_teammanager_add_faile_toast">管理員最多可設置5個</string>
|
||||
<string name="str_teammanager_add_succ_toast">添加成功</string>
|
||||
<string name="str_teammanager_add_not_toast">請選擇管理員</string>
|
||||
<string name="chat_message_action_multi_select">多選</string>
|
||||
|
||||
</resources>
|
||||
@@ -915,6 +915,7 @@
|
||||
<string name="str_teammanager_add_faile_toast">管理员最多可设置5个</string>
|
||||
<string name="str_teammanager_add_succ_toast">添加成功</string>
|
||||
<string name="str_teammanager_add_not_toast">请选择管理员</string>
|
||||
<string name="chat_message_action_multi_select">多选</string>
|
||||
|
||||
|
||||
</resources>
|
||||
@@ -129,13 +129,13 @@
|
||||
<item name="android:windowTranslucentNavigation">false</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:enforceNavigationBarContrast" tools:ignore="NewApi">false</item>
|
||||
|
||||
<!-- 标题栏颜色 -->
|
||||
<item name="colorPrimary">@color/white</item>
|
||||
<!-- 状态栏颜色 -->
|
||||
<item name="colorPrimaryDark">@color/white</item>
|
||||
<!-- 标题栏文字颜色 -->
|
||||
<item name="colorAccent">@color/black</item>
|
||||
<item name="android:windowBackground">@mipmap/ic_welcome_bg</item>
|
||||
</style>
|
||||
|
||||
<!-- 注意:当前AppTheme主题,在values-v23存在另一个样式。原因是Android 6以下系统不支持设置
|
||||
|
||||
@@ -246,7 +246,14 @@ public class ChatUtils {
|
||||
.withContext(context)
|
||||
.navigate(launcher);
|
||||
}
|
||||
|
||||
public static void startTeamListByZhuanFa(
|
||||
Context context, String pagePath, ActivityResultLauncher<Intent> launcher) {
|
||||
XKitRouter.withKey(pagePath)
|
||||
.withParam(RouterConstant.KEY_TEAM_LIST_SELECT, true)
|
||||
.withParam("zhuanfa",true)
|
||||
.withContext(context)
|
||||
.navigate(launcher);
|
||||
}
|
||||
public static void startP2PSelector(
|
||||
Context context, String pagePath, String filterId, ActivityResultLauncher<Intent> launcher) {
|
||||
ArrayList<String> filterList = new ArrayList<>();
|
||||
|
||||
@@ -49,7 +49,7 @@ public class ChatMessageForwardConfirmDialog extends BaseDialog {
|
||||
boolean showInput;
|
||||
|
||||
int forwardType;
|
||||
|
||||
ArrayList<String> listsession;
|
||||
public static ChatMessageForwardConfirmDialog createForwardConfirmDialog(
|
||||
SessionTypeEnum type,
|
||||
ArrayList<String> sessionIds,
|
||||
@@ -97,7 +97,7 @@ public class ChatMessageForwardConfirmDialog extends BaseDialog {
|
||||
// String action= getArguments().getString(FORWARD_ACTION, ActionConstants.POP_ACTION_TRANSMIT);
|
||||
//adapter.setForwardType(getArguments().getInt(FORWARD_TYPE));
|
||||
// adapter.append(getArguments().getStringArrayList(FORWARD_SESSION_LIST));
|
||||
ArrayList<String> listsession = getArguments().getStringArrayList(FORWARD_SESSION_LIST);
|
||||
listsession = getArguments().getStringArrayList(FORWARD_SESSION_LIST);
|
||||
setData(listsession.get(0));
|
||||
// String sendUser = getArguments().getString(FORWARD_MESSAGE_SEND); //发送人的名字
|
||||
|
||||
@@ -182,6 +182,11 @@ public class ChatMessageForwardConfirmDialog extends BaseDialog {
|
||||
binding.avatar.setData(avatar, "");
|
||||
}
|
||||
binding.tvNickname.setText(nickname);
|
||||
|
||||
if(listsession!=null&&listsession.size()>1){
|
||||
binding.tvTitle.setText(String.format(getString(R.string.chat_message_forward_to2),nickname+"",listsession.size()));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,6 +201,10 @@ public class ChatMessageForwardConfirmDialog extends BaseDialog {
|
||||
binding.avatar.setData(avatar, "");
|
||||
}
|
||||
binding.tvNickname.setText(nickname + "");
|
||||
|
||||
if(listsession!=null&&listsession.size()>1){
|
||||
binding.tvTitle.setText(String.format(getString(R.string.chat_message_forward_to1),nickname+"",listsession.size()));
|
||||
}
|
||||
}
|
||||
|
||||
public void setCallback(ForwardCallback callback) {
|
||||
|
||||
@@ -83,8 +83,8 @@ public class FunChatPinActivity extends ChatPinBaseActivity {
|
||||
new ChatBaseForwardSelectDialog.ForwardTypeSelectedCallback() {
|
||||
@Override
|
||||
public void onTeamSelected() {
|
||||
ChatUtils.startTeamList(
|
||||
FunChatPinActivity.this, RouterConstant.PATH_FUN_MY_TEAM_PAGE, forwardTeamLauncher);
|
||||
ChatUtils.startTeamListByZhuanFa(
|
||||
FunChatPinActivity.this, RouterConstant.PATH_FUN_MY_TEAM_PAGE, forwardTeamLauncher1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -477,8 +477,8 @@ public abstract class FunChatFragment extends ChatBaseFragment {
|
||||
|
||||
@Override
|
||||
protected void forwardTeam() {
|
||||
ChatUtils.startTeamList(
|
||||
getContext(), RouterConstant.PATH_FUN_MY_TEAM_PAGE, forwardTeamLauncher);
|
||||
ChatUtils.startTeamListByZhuanFa(
|
||||
getContext(), RouterConstant.PATH_FUN_MY_TEAM_PAGE, forwardTeamLauncher1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -49,12 +49,12 @@ public interface ApiService {
|
||||
/**
|
||||
* 正式环境
|
||||
*/
|
||||
String URL = "https://api.letschat2023.com/";
|
||||
// String URL = "https://api.letschat2023.com/";
|
||||
|
||||
/**
|
||||
* 测试环境
|
||||
*/
|
||||
// String URL = "https://api-test.letschat2023.com/";
|
||||
String URL = "https://api-test.letschat2023.com/";
|
||||
// String URL = "https://8.217.244.135:8001/";
|
||||
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ public abstract class ChatPinBaseActivity extends BaseActivity {
|
||||
|
||||
protected ActivityResultLauncher<Intent> forwardP2PLauncher;
|
||||
protected ActivityResultLauncher<Intent> forwardTeamLauncher;
|
||||
protected ActivityResultLauncher<Intent> forwardTeamLauncher1;
|
||||
|
||||
public static final String ACTION_CHECK_PIN = "check_pin";
|
||||
public static final String ACTION_CANCEL_PIN = "cancel_pin";
|
||||
@@ -163,6 +164,25 @@ public abstract class ChatPinBaseActivity extends BaseActivity {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
forwardTeamLauncher1 =
|
||||
registerForActivityResult(
|
||||
new ActivityResultContracts.StartActivityForResult(),
|
||||
result -> {
|
||||
if (result.getResultCode() != Activity.RESULT_OK || forwardMessage == null) {
|
||||
return;
|
||||
}
|
||||
ALog.d(LIB_TAG, TAG, "forward Team result");
|
||||
Intent data = result.getData();
|
||||
if (data != null) {
|
||||
ArrayList<String> friends =
|
||||
data.getStringArrayListExtra(REQUEST_CONTACT_SELECTOR_KEY);
|
||||
if (friends != null && !friends.isEmpty()) {
|
||||
showForwardConfirmDialog(SessionTypeEnum.Team, friends);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (TextUtils.isEmpty(mSessionId) || mSessionType == SessionTypeEnum.None) {
|
||||
showEmptyView(true);
|
||||
} else {
|
||||
|
||||
@@ -63,6 +63,7 @@ import com.luck.picture.lib.style.SelectMainStyle;
|
||||
import com.luck.picture.lib.style.TitleBarStyle;
|
||||
import com.netease.nim.highavailable.LogUtils;
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.RequestCallback;
|
||||
import com.netease.nimlib.sdk.StatusCode;
|
||||
import com.netease.nimlib.sdk.auth.AuthServiceObserver;
|
||||
import com.netease.nimlib.sdk.friend.FriendService;
|
||||
@@ -79,7 +80,10 @@ import com.netease.nimlib.sdk.msg.model.IMMessage;
|
||||
import com.netease.nimlib.sdk.msg.model.MsgPinOption;
|
||||
import com.netease.nimlib.sdk.msg.model.QueryDirectionEnum;
|
||||
import com.netease.nimlib.sdk.msg.model.RecentContact;
|
||||
import com.netease.nimlib.sdk.team.TeamService;
|
||||
import com.netease.nimlib.sdk.team.constant.TeamMemberType;
|
||||
import com.netease.nimlib.sdk.team.model.Team;
|
||||
import com.netease.nimlib.sdk.team.model.TeamMember;
|
||||
import com.netease.nimlib.sdk.uinfo.UserService;
|
||||
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
|
||||
import com.netease.yunxin.kit.alog.ALog;
|
||||
@@ -225,6 +229,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
|
||||
protected ActivityResultLauncher<Intent> forwardP2PLauncher;
|
||||
|
||||
protected ActivityResultLauncher<Intent> forwardTeamLauncher;
|
||||
protected ActivityResultLauncher<Intent> forwardTeamLauncher1;
|
||||
|
||||
protected ActivityResultLauncher<String[]> permissionLauncher;
|
||||
|
||||
@@ -1646,6 +1651,38 @@ public abstract class ChatBaseFragment extends BaseFragment {
|
||||
&& isAllowAd == 0
|
||||
&& teamInfo != null && !teamInfo.getCreator().equals(IMKitClient.account())
|
||||
&& !teamInfo.getCreator().equals(messageBean.getMessageData().getMessage().getFromAccount())) {
|
||||
|
||||
NIMClient.getService(TeamService.class).queryTeamMember(teamInfo.getId(), messageBean.getMessageData().getMessage().getFromAccount()).setCallback(new RequestCallback<TeamMember>() {
|
||||
@Override
|
||||
public void onSuccess(TeamMember members) {
|
||||
if(members!=null){
|
||||
if(members.getType() == TeamMemberType.Manager){
|
||||
XKitRouter.withKey(getUserInfoRoutePath())
|
||||
.withContext(view.getContext())
|
||||
.withParam(
|
||||
"uid",
|
||||
messageBean.getMessageData().getMessage().getFromAccount())
|
||||
.withParam("userId", messageBean.getMessageData().getMessage().getFromAccount())
|
||||
.withParam("isGroup", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM))
|
||||
.withParam("teamId", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM) ? messageBean.getMessageData().getMessage().getSessionId() : "")
|
||||
.navigate();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(int code) {
|
||||
// 撤销群管理员失败
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onException(Throwable exception) {
|
||||
// 错误
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
XKitRouter.withKey(getUserInfoRoutePath())
|
||||
@@ -1965,6 +2002,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
|
||||
&& isAllowAd == 0
|
||||
&& teamInfo != null && !teamInfo.getCreator().equals(IMKitClient.account())
|
||||
&& !teamInfo.getCreator().equals(businessShareBean.data.getAccout())) {
|
||||
|
||||
return;
|
||||
}
|
||||
XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
|
||||
@@ -2450,6 +2488,13 @@ public abstract class ChatBaseFragment extends BaseFragment {
|
||||
new ActivityResultContracts.StartActivityForResult(),
|
||||
result -> onForwardMessage(result, SessionTypeEnum.Team));
|
||||
|
||||
|
||||
|
||||
forwardTeamLauncher1 =
|
||||
registerForActivityResult(
|
||||
new ActivityResultContracts.StartActivityForResult(),
|
||||
result -> onForwardMessage1(result, SessionTypeEnum.Team));
|
||||
|
||||
locationLauncher =
|
||||
registerForActivityResult(
|
||||
new ActivityResultContracts.StartActivityForResult(), this::onSelectLocation);
|
||||
@@ -2680,6 +2725,23 @@ public abstract class ChatBaseFragment extends BaseFragment {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected void onForwardMessage1(ActivityResult result, SessionTypeEnum sessionType) {
|
||||
if (result.getResultCode() != Activity.RESULT_OK) {
|
||||
return;
|
||||
}
|
||||
ALog.d(LIB_TAG, LOG_TAG, "forward Team result");
|
||||
Intent data = result.getData();
|
||||
if (data != null) {
|
||||
ArrayList<String> sessionList = new ArrayList<>();
|
||||
sessionList.addAll(data.getStringArrayListExtra(REQUEST_CONTACT_SELECTOR_KEY));
|
||||
if (sessionList.size() > 0) {
|
||||
showForwardConfirmDialog(sessionType, sessionList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected void clearMessageMultiSelectStatus() {
|
||||
chatView.showMultiSelect(false);
|
||||
ChatMsgCache.clear();
|
||||
|
||||
@@ -323,5 +323,7 @@
|
||||
<string name="push_content_location">Received a location</string>
|
||||
<string name="push_content_file">Received a file</string>
|
||||
<string name="push_content_audio">Received an audio</string>
|
||||
<string name="chat_message_forward_to1">Forward to %s and other %d people</string>
|
||||
<string name="chat_message_forward_to2">Forward to %s and other %d group</string>
|
||||
|
||||
</resources>
|
||||
@@ -324,5 +324,7 @@
|
||||
<string name="push_content_location">位置情報が届きました</string>
|
||||
<string name="push_content_file">ファイルが届きました</string>
|
||||
<string name="push_content_audio">音声が届きました</string>
|
||||
<string name="chat_message_forward_to1">轉發給:%s等%d人</string>
|
||||
<string name="chat_message_forward_to2">轉發給:%s等%d群</string>
|
||||
|
||||
</resources>
|
||||
@@ -324,4 +324,7 @@
|
||||
<string name="push_content_location">发来了一个地理位置</string>
|
||||
<string name="push_content_file">发来了一个文件</string>
|
||||
<string name="push_content_audio">发来了一段语音</string>
|
||||
<string name="chat_message_forward_to1">转发给:%s等%d人</string>
|
||||
<string name="chat_message_forward_to2">转发给:%s等%d群</string>
|
||||
|
||||
</resources>
|
||||
@@ -323,4 +323,6 @@
|
||||
<string name="push_content_location">發來了一個地理位置</string>
|
||||
<string name="push_content_file">發來了一個文件</string>
|
||||
<string name="push_content_audio">發來了一段語音</string>
|
||||
<string name="chat_message_forward_to1">轉發給:%s等%d人</string>
|
||||
<string name="chat_message_forward_to2">轉發給:%s等%d群</string>
|
||||
</resources>
|
||||
@@ -4,16 +4,29 @@
|
||||
|
||||
package com.netease.yunxin.kit.contactkit.ui.fun.team;
|
||||
|
||||
import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.KEY_REQUEST_SELECTOR_NAME;
|
||||
import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.REQUEST_CONTACT_SELECTOR_KEY;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.netease.nimlib.sdk.team.model.DismissAttachment;
|
||||
import com.netease.nimlib.sdk.team.model.Team;
|
||||
import com.netease.yunxin.kit.common.ui.utils.ToastX;
|
||||
import com.netease.yunxin.kit.contactkit.ui.R;
|
||||
import com.netease.yunxin.kit.contactkit.ui.databinding.BaseListActivityLayoutBinding;
|
||||
import com.netease.yunxin.kit.contactkit.ui.fun.view.FunContactViewHolderFactory;
|
||||
import com.netease.yunxin.kit.contactkit.ui.fun.view.viewholder.FunTeamListViewHolder;
|
||||
import com.netease.yunxin.kit.contactkit.ui.model.BaseContactBean;
|
||||
import com.netease.yunxin.kit.contactkit.ui.model.ContactFriendBean;
|
||||
import com.netease.yunxin.kit.contactkit.ui.model.ContactTeamBean;
|
||||
import com.netease.yunxin.kit.contactkit.ui.model.IViewTypeConstant;
|
||||
import com.netease.yunxin.kit.contactkit.ui.team.BaseTeamListActivity;
|
||||
import com.netease.yunxin.kit.contactkit.ui.team.TeamListViewModel;
|
||||
@@ -21,51 +34,146 @@ import com.netease.yunxin.kit.contactkit.ui.view.viewholder.BaseContactViewHolde
|
||||
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
|
||||
import com.netease.yunxin.kit.corekit.route.XKitRouter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class FunTeamListActivity extends BaseTeamListActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
changeStatusBarColor(R.color.color_white);
|
||||
}
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
changeStatusBarColor(R.color.color_white);
|
||||
}
|
||||
|
||||
protected void configTitle(BaseListActivityLayoutBinding binding) {
|
||||
super.configTitle(binding);
|
||||
binding.title.getTitleTextView().setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
|
||||
protected void configTitle(BaseListActivityLayoutBinding binding) {
|
||||
super.configTitle(binding);
|
||||
binding.title.getTitleTextView().setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
|
||||
// binding.title.getTitleTextView().setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
|
||||
binding.title.setBackgroundResource(R.color.color_white);
|
||||
}
|
||||
binding.title.setBackgroundResource(R.color.color_white);
|
||||
|
||||
protected void configRoutePath(TeamListViewModel viewModel) {
|
||||
viewModel.configRoutePath(RouterConstant.PATH_FUN_CHAT_TEAM_PAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configViewHolderFactory() {
|
||||
binding.contactListView.setViewHolderFactory(
|
||||
new FunContactViewHolderFactory() {
|
||||
@Override
|
||||
protected BaseContactViewHolder getCustomViewHolder(ViewGroup view, int viewType) {
|
||||
if (viewType == IViewTypeConstant.CONTACT_TEAM_LIST) {
|
||||
FunTeamListViewHolder viewHolder = new FunTeamListViewHolder(view);
|
||||
viewHolder.setItemClickListener(
|
||||
data -> {
|
||||
if (isSelector) {
|
||||
Intent result = new Intent();
|
||||
result.putExtra(RouterConstant.KEY_TEAM_ID, data.data.getId());
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
super.initData();
|
||||
if (isZhuanFa) {
|
||||
// ToastX.showShortToast("111111111111111");
|
||||
|
||||
binding.title.setActionText(getString(R.string.chat_message_action_multi_select));
|
||||
binding.title.setActionTextColor(getResources().getColor(R.color.color_6877fe));
|
||||
binding.title.getRightTextView().setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (isSignOne) {
|
||||
isSignOne = false;
|
||||
binding.title.setActionText(getString(R.string.selector_sure));
|
||||
binding.contactListView.showSelector(true);
|
||||
} else {
|
||||
XKitRouter.withKey(data.router)
|
||||
.withParam(RouterConstant.CHAT_KRY, data.data)
|
||||
.withContext(FunTeamListActivity.this)
|
||||
.navigate();
|
||||
ArrayList<String> select = getSelectedAccount();
|
||||
ArrayList<String> selectName = getSelectedName();
|
||||
|
||||
if (select.size() < 1) {
|
||||
Toast.makeText(FunTeamListActivity.this, getString(R.string.select_empty_tips), Toast.LENGTH_LONG)
|
||||
.show();
|
||||
return;
|
||||
}
|
||||
|
||||
//转发选取一个结束
|
||||
Intent result = new Intent();
|
||||
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, select);
|
||||
result.putExtra(KEY_REQUEST_SELECTOR_NAME, selectName);
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
return viewHolder;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// ToastX.showShortToast("2222222222222");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected ArrayList<String> getSelectedAccount() {
|
||||
ArrayList<String> result = new ArrayList<>();
|
||||
List<BaseContactBean> contactTeamBeans = binding.contactListView.getAdapter().getDataList();
|
||||
for (int i = 0; i < contactTeamBeans.size(); i++) {
|
||||
ContactTeamBean contactTeamBean = (ContactTeamBean) contactTeamBeans.get(i);
|
||||
if (contactTeamBean.isCheck()) {
|
||||
result.add(contactTeamBean.data.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected ArrayList<String> getSelectedName() {
|
||||
ArrayList<String> result = new ArrayList<>();
|
||||
List<BaseContactBean> contactTeamBeans = binding.contactListView.getAdapter().getDataList();
|
||||
for (int i = 0; i < contactTeamBeans.size(); i++) {
|
||||
ContactTeamBean contactTeamBean = (ContactTeamBean) contactTeamBeans.get(i);
|
||||
if (contactTeamBean.isCheck()) {
|
||||
result.add(contactTeamBean.data.getName());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected void configRoutePath(TeamListViewModel viewModel) {
|
||||
viewModel.configRoutePath(RouterConstant.PATH_FUN_CHAT_TEAM_PAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configViewHolderFactory() {
|
||||
// ToastX.showShortToast("点我干嘛!!!!");
|
||||
|
||||
binding.contactListView.setViewHolderFactory(
|
||||
new FunContactViewHolderFactory() {
|
||||
@Override
|
||||
protected BaseContactViewHolder getCustomViewHolder(ViewGroup view, int viewType) {
|
||||
if (viewType == IViewTypeConstant.CONTACT_TEAM_LIST) {
|
||||
FunTeamListViewHolder viewHolder = new FunTeamListViewHolder(view);
|
||||
|
||||
viewHolder.setItemClickListener(
|
||||
data -> {
|
||||
if (isSelector) {
|
||||
if (isZhuanFa) {
|
||||
if (isSignOne) {
|
||||
|
||||
ArrayList<String> select = new ArrayList<>();
|
||||
ArrayList<String> selectName = new ArrayList<>();
|
||||
|
||||
select.add(data.data.getId());
|
||||
selectName.add(data.data.getName());
|
||||
//转发选取一个结束
|
||||
Intent result = new Intent();
|
||||
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, select);
|
||||
result.putExtra(KEY_REQUEST_SELECTOR_NAME, selectName);
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
|
||||
} else {
|
||||
data.setCheck(!data.isCheck());
|
||||
binding.contactListView.updateContactData(data);
|
||||
}
|
||||
} else {
|
||||
Intent result = new Intent();
|
||||
result.putExtra(RouterConstant.KEY_TEAM_ID, data.data.getId());
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
}
|
||||
} else {
|
||||
XKitRouter.withKey(data.router)
|
||||
.withParam(RouterConstant.CHAT_KRY, data.data)
|
||||
.withContext(FunTeamListActivity.this)
|
||||
.navigate();
|
||||
}
|
||||
});
|
||||
return viewHolder;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,16 @@ public class FunTeamListViewHolder extends BaseContactViewHolder {
|
||||
@Override
|
||||
public void onBind(BaseContactBean bean, int position, ContactListViewAttrs attrs) {
|
||||
Team teamInfo = ((ContactTeamBean) bean).data;
|
||||
|
||||
if(binding.rbSelector!=null){
|
||||
binding.rbSelector.setVisibility(View.GONE);
|
||||
if(attrs.getShowSelector()){
|
||||
binding.rbSelector.setVisibility(View.VISIBLE);
|
||||
binding.rbSelector.setChecked(((ContactTeamBean) bean).isCheck());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (teamInfo != null) {
|
||||
binding.tvName.setText(teamInfo.getName());
|
||||
String value = ((ContactTeamBean) bean).getContent();
|
||||
|
||||
@@ -23,6 +23,15 @@ public class ContactTeamBean extends BaseContactBean {
|
||||
public MsgAttachment msgAttachment;
|
||||
public String fromNick;
|
||||
public String fromAccount;
|
||||
public boolean isCheck;
|
||||
|
||||
public boolean isCheck() {
|
||||
return isCheck;
|
||||
}
|
||||
|
||||
public void setCheck(boolean check) {
|
||||
isCheck = check;
|
||||
}
|
||||
|
||||
public String getFromNick() {
|
||||
return fromNick;
|
||||
|
||||
@@ -6,6 +6,8 @@ package com.netease.yunxin.kit.contactkit.ui.normal.team;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.netease.yunxin.kit.common.ui.utils.ToastX;
|
||||
import com.netease.yunxin.kit.contactkit.ui.model.IViewTypeConstant;
|
||||
import com.netease.yunxin.kit.contactkit.ui.normal.view.ContactViewHolderFactory;
|
||||
import com.netease.yunxin.kit.contactkit.ui.normal.view.viewholder.TeamListViewHolder;
|
||||
@@ -18,6 +20,9 @@ public class TeamListActivity extends BaseTeamListActivity {
|
||||
|
||||
@Override
|
||||
protected void configViewHolderFactory() {
|
||||
|
||||
|
||||
// ToastX.showShortToast("点我干嘛!");
|
||||
binding.contactListView.setViewHolderFactory(
|
||||
new ContactViewHolderFactory() {
|
||||
@Override
|
||||
|
||||
@@ -108,6 +108,7 @@ public abstract class BaseContactSelectorActivity extends BaseActivity {
|
||||
|
||||
protected int type;// 0 创建群 选好友, 1 转发消息 选好友
|
||||
|
||||
protected boolean isSignOne = true;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
@@ -152,69 +153,56 @@ public abstract class BaseContactSelectorActivity extends BaseActivity {
|
||||
actions.addContactListener(
|
||||
IViewTypeConstant.CONTACT_FRIEND,
|
||||
(position, data) -> {
|
||||
FriendInfo friendInfo = ((ContactFriendBean) data).data;
|
||||
//转发选取一个结束
|
||||
Intent result = new Intent();
|
||||
// if (!selectedListAdapter.getSelectedFriends().isEmpty()) {
|
||||
// result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, getSelectedAccount());
|
||||
// result.putExtra(KEY_REQUEST_SELECTOR_NAME, getSelectedName());
|
||||
//// if (enableReturnName) {
|
||||
//// result.putExtra(KEY_REQUEST_SELECTOR_NAME, getSelectedName());
|
||||
//// }
|
||||
// }
|
||||
listAccount.clear();
|
||||
listname.clear();
|
||||
listAccount.add(friendInfo.getAccount());
|
||||
listname.add(friendInfo.getName());
|
||||
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, listAccount);
|
||||
result.putExtra(KEY_REQUEST_SELECTOR_NAME, listname);
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
// XKitRouter.withKey(RouterConstant.PATH_FUN_CHAT_P2P_PAGE)
|
||||
// .withParam(RouterConstant.CHAT_ID_KRY, friendInfo.getAccount())
|
||||
// .withContext(requireActivity())
|
||||
// .navigate();
|
||||
// XKitRouter.withKey(RouterConstant.PATH_FUN_USER_INFO_PAGE)
|
||||
// .withContext(requireContext())
|
||||
// .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, friendInfo.getAccount())
|
||||
// .navigate();
|
||||
if (isSignOne) {
|
||||
FriendInfo friendInfo = ((ContactFriendBean) data).data;
|
||||
//转发选取一个结束
|
||||
Intent result = new Intent();
|
||||
listAccount.clear();
|
||||
listname.clear();
|
||||
listAccount.add(friendInfo.getAccount());
|
||||
listname.add(friendInfo.getName());
|
||||
result.putExtra(REQUEST_CONTACT_SELECTOR_KEY, listAccount);
|
||||
result.putExtra(KEY_REQUEST_SELECTOR_NAME, listname);
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
actions.addSelectorListener(
|
||||
IViewTypeConstant.CONTACT_FRIEND,
|
||||
(selector, data) -> {
|
||||
if (selector) {
|
||||
if (selectedListAdapter.getItemCount() >= maxSelectCount
|
||||
&& !selectFinalCheckCountEnable) {
|
||||
Toast.makeText(
|
||||
this,
|
||||
getString(
|
||||
R.string.contact_selector_max_count, String.valueOf(maxSelectCount)),
|
||||
Toast.LENGTH_LONG)
|
||||
.show();
|
||||
((ContactFriendBean) data).setSelected(false);
|
||||
contactListView.updateContactData(data);
|
||||
lastContactView.updateContactData(data);
|
||||
searchContactView.updateContactData(data);
|
||||
loveContactView.updateContactData(data);
|
||||
} else {
|
||||
((ContactFriendBean) data).setSelected(true);
|
||||
contactListView.updateContactData(data);
|
||||
lastContactView.updateContactData(data);
|
||||
searchContactView.updateContactData(data);
|
||||
loveContactView.updateContactData(data);
|
||||
selectedListAdapter.addFriend((ContactFriendBean) data);
|
||||
|
||||
}
|
||||
} else {
|
||||
}
|
||||
actions.addSelectorListener(
|
||||
IViewTypeConstant.CONTACT_FRIEND,
|
||||
(selector, data) -> {
|
||||
if (selector) {
|
||||
if (selectedListAdapter.getItemCount() >= maxSelectCount
|
||||
&& !selectFinalCheckCountEnable) {
|
||||
Toast.makeText(
|
||||
this,
|
||||
getString(
|
||||
R.string.contact_selector_max_count, String.valueOf(maxSelectCount)),
|
||||
Toast.LENGTH_LONG)
|
||||
.show();
|
||||
((ContactFriendBean) data).setSelected(false);
|
||||
selectedListAdapter.removeFriend((ContactFriendBean) data);
|
||||
contactListView.updateContactData(data);
|
||||
lastContactView.updateContactData(data);
|
||||
loveContactView.updateContactData(data);
|
||||
searchContactView.updateContactData(data);
|
||||
loveContactView.updateContactData(data);
|
||||
} else {
|
||||
((ContactFriendBean) data).setSelected(true);
|
||||
contactListView.updateContactData(data);
|
||||
lastContactView.updateContactData(data);
|
||||
searchContactView.updateContactData(data);
|
||||
loveContactView.updateContactData(data);
|
||||
selectedListAdapter.addFriend((ContactFriendBean) data);
|
||||
|
||||
}
|
||||
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
|
||||
} else {
|
||||
((ContactFriendBean) data).setSelected(false);
|
||||
selectedListAdapter.removeFriend((ContactFriendBean) data);
|
||||
contactListView.updateContactData(data);
|
||||
lastContactView.updateContactData(data);
|
||||
loveContactView.updateContactData(data);
|
||||
searchContactView.updateContactData(data);
|
||||
}
|
||||
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
|
||||
// int count = selectedListAdapter.getItemCount();
|
||||
// if (count <= 0) {
|
||||
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
|
||||
@@ -223,28 +211,32 @@ public abstract class BaseContactSelectorActivity extends BaseActivity {
|
||||
// String.format(
|
||||
// getString(R.string.selector_sure), selectedListAdapter.getItemCount()));
|
||||
// }
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
contactListView.setContactAction(actions);
|
||||
lastContactView.setContactAction(actions);
|
||||
searchContactView.setContactAction(actions);
|
||||
loveContactView.setContactAction(actions);
|
||||
//top selected list
|
||||
LinearLayoutManager layoutManager =
|
||||
new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false);
|
||||
//top selected list
|
||||
LinearLayoutManager layoutManager =
|
||||
new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false);
|
||||
rvSelected.setLayoutManager(layoutManager);
|
||||
selectedListAdapter = getSelectedListAdapter();
|
||||
selectedListAdapter =
|
||||
|
||||
getSelectedListAdapter();
|
||||
selectedListAdapter.setItemClickListener(
|
||||
item -> {
|
||||
item.setSelected(false);
|
||||
contactListView.updateContactData(item);
|
||||
lastContactView.updateContactData(item);
|
||||
loveContactView.updateContactData(item);
|
||||
searchContactView.updateContactData(item);
|
||||
//int count = selectedListAdapter.getItemCount();
|
||||
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
|
||||
item ->
|
||||
|
||||
{
|
||||
item.setSelected(false);
|
||||
contactListView.updateContactData(item);
|
||||
lastContactView.updateContactData(item);
|
||||
loveContactView.updateContactData(item);
|
||||
searchContactView.updateContactData(item);
|
||||
//int count = selectedListAdapter.getItemCount();
|
||||
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
|
||||
// if (count <= 0) {
|
||||
// titleBar.setActionText(getString(R.string.selector_sure_without_num));
|
||||
// } else {
|
||||
@@ -252,42 +244,45 @@ public abstract class BaseContactSelectorActivity extends BaseActivity {
|
||||
// String.format(
|
||||
// getString(R.string.selector_sure), selectedListAdapter.getItemCount()));
|
||||
// }
|
||||
});
|
||||
});
|
||||
rvSelected.setAdapter(selectedListAdapter);
|
||||
editSearch.setOnEditorActionListener((textView, actionId, keyEvent) ->
|
||||
{
|
||||
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
|
||||
String search = textView.getEditableText().toString();
|
||||
//搜索好友
|
||||
searchViewModel.queryFriend(search);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
editSearch.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
editSearch.setOnEditorActionListener((textView,actionId,keyEvent)->
|
||||
|
||||
}
|
||||
{
|
||||
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
|
||||
String search = textView.getEditableText().toString();
|
||||
//搜索好友
|
||||
searchViewModel.queryFriend(search);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
editSearch.addTextChangedListener(new
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged (CharSequence charSequence,int i, int i1, int i2){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable editable) {
|
||||
if (TextUtils.isEmpty(editSearch.getText().toString())) {
|
||||
ivClean.setVisibility(View.GONE);
|
||||
layoutContactList.setVisibility(View.VISIBLE);
|
||||
layoutSearchList.setVisibility(View.GONE);
|
||||
hideSoftInput(BaseContactSelectorActivity.this);
|
||||
} else {
|
||||
ivClean.setVisibility(View.VISIBLE);
|
||||
}
|
||||
@Override
|
||||
public void onTextChanged (CharSequence charSequence,int i, int i1, int i2){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged (Editable editable){
|
||||
if (TextUtils.isEmpty(editSearch.getText().toString())) {
|
||||
ivClean.setVisibility(View.GONE);
|
||||
layoutContactList.setVisibility(View.VISIBLE);
|
||||
layoutSearchList.setVisibility(View.GONE);
|
||||
hideSoftInput(BaseContactSelectorActivity.this);
|
||||
} else {
|
||||
ivClean.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
ivClean.setOnClickListener(view -> editSearch.setText(""));
|
||||
}
|
||||
}
|
||||
});
|
||||
ivClean.setOnClickListener(view ->editSearch.setText(""));
|
||||
}
|
||||
|
||||
public void hideSoftInput(Activity activity) {
|
||||
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
|
||||
|
||||
@@ -6,6 +6,7 @@ package com.netease.yunxin.kit.contactkit.ui.team;
|
||||
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.netease.yunxin.kit.common.ui.utils.ToastX;
|
||||
import com.netease.yunxin.kit.common.ui.viewmodel.FetchResult;
|
||||
import com.netease.yunxin.kit.common.ui.viewmodel.LoadStatus;
|
||||
import com.netease.yunxin.kit.contactkit.ui.R;
|
||||
@@ -24,12 +25,16 @@ public abstract class BaseTeamListActivity extends BaseListActivity {
|
||||
protected TeamListViewModel viewModel;
|
||||
|
||||
protected boolean isSelector;
|
||||
protected boolean isZhuanFa = false;
|
||||
|
||||
protected boolean isSignOne = true;
|
||||
|
||||
protected abstract void configViewHolderFactory();
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
configTitle(binding);
|
||||
isZhuanFa = getIntent().getBooleanExtra("zhuanfa",false);
|
||||
configViewHolderFactory();
|
||||
}
|
||||
|
||||
@@ -60,6 +65,7 @@ public abstract class BaseTeamListActivity extends BaseListActivity {
|
||||
}
|
||||
// Collections.sort(binding.contactListView.getAdapter().getDataList(), teambeanComparator);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -173,6 +173,7 @@ public class ContactListView extends FrameLayout
|
||||
public void showSelector(boolean show) {
|
||||
if (contactAdapter != null) {
|
||||
contactAdapter.getContactListViewAttrs().setShowSelector(show);
|
||||
contactAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,11 +5,23 @@
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/root_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/view_normal_selector">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatRadioButton
|
||||
android:id="@+id/rb_selector"
|
||||
style="@style/FunSelectorRadioBtn"
|
||||
android:layout_width="@dimen/dimen_18_dp"
|
||||
android:layout_height="@dimen/dimen_18_dp"
|
||||
android:clickable="false"
|
||||
android:visibility="gone"
|
||||
android:layout_marginStart="@dimen/dimen_12_dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
<com.netease.yunxin.kit.common.ui.widgets.ContactAvatarView
|
||||
android:id="@+id/avatar_view"
|
||||
@@ -17,9 +29,10 @@
|
||||
android:layout_height="@dimen/dimen_45_dp"
|
||||
android:layout_marginTop="@dimen/dimen_10_dp"
|
||||
android:layout_marginBottom="@dimen/dimen_10_dp"
|
||||
android:layout_marginStart="@dimen/dimen_12_dp"
|
||||
app:avatarCorner="@dimen/dimen_45_dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintLeft_toRightOf="@id/rb_selector"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
|
||||
@@ -156,4 +156,7 @@
|
||||
<string name="teamjoined_txt">You are already in this group</string>
|
||||
<string name="know_txt">I see</string>
|
||||
<string name="nodate_txt">No data</string>
|
||||
|
||||
<string name="chat_message_action_multi_select">Multi-select</string>
|
||||
|
||||
</resources>
|
||||
@@ -157,5 +157,6 @@
|
||||
<string name="teamjoined_txt">あなたはすでにこのグループに属しています</string>
|
||||
<string name="know_txt">なるほど</string>
|
||||
<string name="nodate_txt">まだ情報がありません</string>
|
||||
<string name="chat_message_action_multi_select">複数選択</string>
|
||||
|
||||
</resources>
|
||||
@@ -157,4 +157,6 @@
|
||||
<string name="teamjoined_txt">您已经在该群组中</string>
|
||||
<string name="know_txt">我知道了</string>
|
||||
<string name="nodate_txt">暂无数据</string>
|
||||
<string name="chat_message_action_multi_select">多选</string>
|
||||
|
||||
</resources>
|
||||
@@ -158,6 +158,7 @@
|
||||
<string name="know_txt">我知道了</string>
|
||||
<string name="nodate_txt">暫無數據</string>
|
||||
|
||||
<string name="chat_message_action_multi_select">多選</string>
|
||||
|
||||
|
||||
</resources>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2022 NetEase, Inc. All rights reserved.
|
||||
~ Use of this source code is governed by a MIT license that can be
|
||||
~ found in the LICENSE file.
|
||||
-->
|
||||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="@dimen/dimen_10_dp" />
|
||||
<solid android:color="@color/color_ff4e54_t" />
|
||||
</shape>
|
||||
@@ -6,6 +6,8 @@
|
||||
<color name="color_ededef">#ededef</color>
|
||||
<color name="color_666666">#666666</color>
|
||||
<color name="color_ff4e54">#ff4e54</color>
|
||||
<color name="color_ff4e54_t">#88ff4e54</color>
|
||||
|
||||
<color name="color_999999">#999999</color>
|
||||
<color name="color_cccccc">#cccccc</color>
|
||||
<color name="color_9e9e9e">#9e9e9e</color>
|
||||
|
||||
Reference in New Issue
Block a user