diff --git a/app/src/main/java/com/xjjk/healthexpertclient/ui/im/utils/IMInputActionSettingUtils.kt b/app/src/main/java/com/xjjk/healthexpertclient/ui/im/utils/IMInputActionSettingUtils.kt index c2696fe..704e3ea 100644 --- a/app/src/main/java/com/xjjk/healthexpertclient/ui/im/utils/IMInputActionSettingUtils.kt +++ b/app/src/main/java/com/xjjk/healthexpertclient/ui/im/utils/IMInputActionSettingUtils.kt @@ -30,9 +30,11 @@ object IMInputActionSettingUtils { /** * 应急求助IM功能配置 + * @param firstAid 是否为急救员 */ - fun createEmergencySetting(): InputActionSetting { + fun createEmergencySetting(firstAid: Boolean = false): InputActionSetting { var inputActionSetting = InputActionSetting() + inputActionSetting.packageName = BuildConfig.APPLICATION_ID inputActionSetting.isDisableAudioCall = true inputActionSetting.isDisableVideoCall = false inputActionSetting.isDisableArchives = true @@ -41,7 +43,7 @@ object IMInputActionSettingUtils { inputActionSetting.isDisableFinishName = true inputActionSetting.isDisableEvaluate = true inputActionSetting.isDisableFinishSession = true - inputActionSetting.packageName = BuildConfig.APPLICATION_ID + inputActionSetting.isFirstAid = firstAid InputActionSetting.setsInstance(inputActionSetting) return inputActionSetting } diff --git a/app/src/main/java/com/xjjk/healthexpertclient/ui/workbench/fragment/WorkbenchFragment.kt b/app/src/main/java/com/xjjk/healthexpertclient/ui/workbench/fragment/WorkbenchFragment.kt index d907c46..be239a0 100644 --- a/app/src/main/java/com/xjjk/healthexpertclient/ui/workbench/fragment/WorkbenchFragment.kt +++ b/app/src/main/java/com/xjjk/healthexpertclient/ui/workbench/fragment/WorkbenchFragment.kt @@ -262,7 +262,7 @@ class WorkbenchFragment : } else if (result.records.size == 1) { mViewModel.getActualGroupMemberList(result.records[0].sessionId) { groupMemberBeans -> - val setting = IMInputActionSettingUtils.createEmergencySetting() + val setting = IMInputActionSettingUtils.createEmergencySetting(true) requireContext().startGroupChat( result.records[0].sessionId, getString(R.string.title_paramedic_group), @@ -273,7 +273,7 @@ class WorkbenchFragment : } else { showChatListDialog(result.records!!) { groupInfo -> mViewModel.getActualGroupMemberList(groupInfo.sessionId) { groupMemberBeans -> - val setting = IMInputActionSettingUtils.createEmergencySetting() + val setting = IMInputActionSettingUtils.createEmergencySetting(true) requireContext().startGroupChat( groupInfo.sessionId, getString(R.string.title_paramedic_group), diff --git a/system/tuicallkit/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/TUICallingViewManager.java b/system/tuicallkit/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/TUICallingViewManager.java index 0053404..08084fa 100644 --- a/system/tuicallkit/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/TUICallingViewManager.java +++ b/system/tuicallkit/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/view/TUICallingViewManager.java @@ -16,6 +16,7 @@ import com.tencent.qcloud.tuicore.TUIConstants; import com.tencent.qcloud.tuicore.TUICore; import com.tencent.qcloud.tuicore.TUILogin; import com.tencent.qcloud.tuicore.interfaces.ITUINotification; +import com.tencent.qcloud.tuicore.util.SPUtils; import com.tencent.qcloud.tuicore.interfaces.ITUIService; import com.tencent.qcloud.tuicore.util.ToastUtil; import com.tencent.qcloud.tuikit.TUICommonDefine; @@ -728,53 +729,58 @@ public class TUICallingViewManager implements ITUINotification { } private void initInviteUserFunction() { -// ITUIService service = TUICore.getService(TUIConstants.TUIGroup.SERVICE_NAME); -// boolean enableInviteUser = (service != null); -// -// if (enableInviteUser && mBaseCallView != null) { -// Button inviteUserBtn = new Button(mContext); -// TUICallDefine.MediaType mediaType = TUICallingStatusManager.sharedInstance(mContext).getMediaType(); -// int resId = TUICallDefine.MediaType.Video.equals(mediaType) -// ? R.drawable.tuicalling_ic_add_user_white : R.drawable.tuicalling_ic_add_user_black; -// inviteUserBtn.setBackgroundResource(resId); -// inviteUserBtn.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// String groupId = TUICallingStatusManager.sharedInstance(mContext).getGroupId(); -// if (TextUtils.isEmpty(groupId)) { -// ToastUtil.toastShortMessage(mContext.getString(R.string.tuicalling_groupid_is_empty)); -// return; -// } -// -// TUICallDefine.Status status = TUICallingStatusManager.sharedInstance(mContext).getCallStatus(); -// TUICallDefine.Role role = TUICallingStatusManager.sharedInstance(mContext).getCallRole(); -// if (TUICallDefine.Role.Called.equals(role) && !TUICallDefine.Status.Accept.equals(status)) { -// ToastUtil.toastShortMessage(mContext.getString(R.string.tuicalling_status_is_not_accept)); -// return; -// } -// -// ArrayList list = new ArrayList<>(); -// list.add(mInviter.userId); -// for (CallingUserModel model : mInviteeList) { -// if (model != null && !TextUtils.isEmpty(model.userId) && !list.contains(model.userId)) { -// list.add(model.userId); -// } -// } -// if (!list.contains(TUILogin.getLoginUser())) { -// list.add(TUILogin.getLoginUser()); -// } -// -// TUILog.i(TAG, "initInviteUserFunction, groupId: " + groupId + " ,list: " + list); -// -// Bundle bundle = new Bundle(); -// bundle.putString(TUIConstants.TUIGroup.GROUP_ID, groupId); -// bundle.putString(TUIConstants.TUIGroup.USER_DATA, Constants.TUICALLKIT); -// bundle.putStringArrayList(TUIConstants.TUIGroup.SELECTED_LIST, list); -// TUICore.startActivity("GroupMemberActivity", bundle); -// } -// }); -// mBaseCallView.enableAddUserView(inviteUserBtn); -// } + boolean firstAid = SPUtils.getInstance().getBoolean("key_first_aid", false); + if (!firstAid) { + return; + } + + ITUIService service = TUICore.getService(TUIConstants.TUIGroup.SERVICE_NAME); + boolean enableInviteUser = (service != null); + + if (enableInviteUser && mBaseCallView != null) { + Button inviteUserBtn = new Button(mContext); + TUICallDefine.MediaType mediaType = TUICallingStatusManager.sharedInstance(mContext).getMediaType(); + int resId = TUICallDefine.MediaType.Video.equals(mediaType) + ? R.drawable.tuicalling_ic_add_user_white : R.drawable.tuicalling_ic_add_user_black; + inviteUserBtn.setBackgroundResource(resId); + inviteUserBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String groupId = TUICallingStatusManager.sharedInstance(mContext).getGroupId(); + if (TextUtils.isEmpty(groupId)) { + ToastUtil.toastShortMessage(mContext.getString(R.string.tuicalling_groupid_is_empty)); + return; + } + + TUICallDefine.Status status = TUICallingStatusManager.sharedInstance(mContext).getCallStatus(); + TUICallDefine.Role role = TUICallingStatusManager.sharedInstance(mContext).getCallRole(); + if (TUICallDefine.Role.Called.equals(role) && !TUICallDefine.Status.Accept.equals(status)) { + ToastUtil.toastShortMessage(mContext.getString(R.string.tuicalling_status_is_not_accept)); + return; + } + + ArrayList list = new ArrayList<>(); + list.add(mInviter.userId); + for (CallingUserModel model : mInviteeList) { + if (model != null && !TextUtils.isEmpty(model.userId) && !list.contains(model.userId)) { + list.add(model.userId); + } + } + if (!list.contains(TUILogin.getLoginUser())) { + list.add(TUILogin.getLoginUser()); + } + + TUILog.i(TAG, "initInviteUserFunction, groupId: " + groupId + " ,list: " + list); + + Bundle bundle = new Bundle(); + bundle.putString(TUIConstants.TUIGroup.GROUP_ID, groupId); + bundle.putString(TUIConstants.TUIGroup.USER_DATA, Constants.TUICALLKIT); + bundle.putStringArrayList(TUIConstants.TUIGroup.SELECTED_LIST, list); + TUICore.startActivity("GroupMemberActivity", bundle); + } + }); + mBaseCallView.enableAddUserView(inviteUserBtn); + } } private void inviteUsersToGroupCall(List userIdList) { diff --git a/system/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/page/TUIGroupChatFragment.java b/system/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/page/TUIGroupChatFragment.java index 5ec3e29..3672fac 100644 --- a/system/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/page/TUIGroupChatFragment.java +++ b/system/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/page/TUIGroupChatFragment.java @@ -159,14 +159,16 @@ public class TUIGroupChatFragment extends TUIBaseChatFragment { } }); - titleBar.getRightGroup().setVisibility(View.VISIBLE); - titleBar.getRightTitle().setVisibility(View.GONE); - titleBar.getRightIcon().setVisibility(View.VISIBLE); - titleBar.getRightIcon().setImageResource(R.drawable.chat_title_bar_more_menu_lively); + if (inputActionSetting.isFirstAid()) { + titleBar.getRightGroup().setVisibility(View.VISIBLE); + titleBar.getRightTitle().setVisibility(View.GONE); + titleBar.getRightIcon().setVisibility(View.VISIBLE); + titleBar.getRightIcon().setImageResource(R.drawable.chat_title_bar_more_menu_lively); - // 应用缓存的 OnGroupTipsListener,解决 Activity 中提前设置 listener 的时序问题 - if (cachedGroupTipsListener != null && chatView != null) { - chatView.setOnGroupTipsListener(cachedGroupTipsListener); + // 应用缓存的 OnGroupTipsListener,解决 Activity 中提前设置 listener 的时序问题 + if (cachedGroupTipsListener != null && chatView != null) { + chatView.setOnGroupTipsListener(cachedGroupTipsListener); + } } } diff --git a/system/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/setting/InputActionSetting.java b/system/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/setting/InputActionSetting.java index 48c8419..1ec9995 100644 --- a/system/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/setting/InputActionSetting.java +++ b/system/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/setting/InputActionSetting.java @@ -2,6 +2,8 @@ package com.tencent.qcloud.tuikit.tuichat.classicui.setting; import java.io.Serializable; +import com.tencent.qcloud.tuicore.util.SPUtils; + public class InputActionSetting implements Serializable { private static InputActionSetting sInstance; @@ -31,6 +33,7 @@ public class InputActionSetting implements Serializable { public String packageName=""; public String CurrentResourceHost=""; public boolean disableEvaluate = false; + public boolean firstAid = false; public String getCurrentResourceHost() { return CurrentResourceHost == null ? "" : CurrentResourceHost; @@ -128,6 +131,16 @@ public class InputActionSetting implements Serializable { this.disableFinishName = disableFinishName; } + public boolean isFirstAid() { + return firstAid; + } + + public void setFirstAid(boolean firstAid) { + this.firstAid = firstAid; + // 同步写入 SP,供 tuicallkit 跨模块读取(控制右上角 + 号是否显示) + SPUtils.getInstance().put("key_first_aid", firstAid); + } + public InputActionSetting copy(){ InputActionSetting inputActionSetting = new InputActionSetting(); inputActionSetting.setDisableArchives(disableArchives); @@ -138,6 +151,7 @@ public class InputActionSetting implements Serializable { inputActionSetting.setDisableMedicalExaminationReport(disableMedicalExaminationReport); inputActionSetting.setDisableFinishSession(disableFinishSession); inputActionSetting.setDisableFinishName(disableFinishName); + inputActionSetting.setFirstAid(firstAid); return inputActionSetting; } } diff --git a/system/tuicore/src/main/java/com/tencent/qcloud/tuicore/component/imageEngine/impl/GlideEngine.java b/system/tuicore/src/main/java/com/tencent/qcloud/tuicore/component/imageEngine/impl/GlideEngine.java index 91dc9e5..0932ea6 100644 --- a/system/tuicore/src/main/java/com/tencent/qcloud/tuicore/component/imageEngine/impl/GlideEngine.java +++ b/system/tuicore/src/main/java/com/tencent/qcloud/tuicore/component/imageEngine/impl/GlideEngine.java @@ -3,6 +3,7 @@ package com.tencent.qcloud.tuicore.component.imageEngine.impl; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; +import android.text.TextUtils; import android.widget.ImageView; import androidx.annotation.DrawableRes; @@ -54,6 +55,17 @@ public class GlideEngine { .into(imageView); } + public static void loadImageByDefault(ImageView imageView, String filePath) { + if (TextUtils.isEmpty(filePath)) { + imageView.setImageResource(R.drawable.core_default_user_icon); + return; + } + Glide.with(TUILogin.getAppContext()) + .load(filePath) + .error(R.drawable.core_default_user_icon) + .apply(new RequestOptions()) + .into(imageView); + } public static void clear(ImageView imageView) { Glide.with(TUILogin.getAppContext()).clear(imageView); } diff --git a/system/tuicore/src/main/res/drawable-xxhdpi/core_default_user_icon.png b/system/tuicore/src/main/res/drawable-xxhdpi/core_default_user_icon.png new file mode 100644 index 0000000..68bb06f Binary files /dev/null and b/system/tuicore/src/main/res/drawable-xxhdpi/core_default_user_icon.png differ diff --git a/system/tuigroup/src/main/java/com/tencent/qcloud/tuikit/tuigroup/classicui/view/GroupMemberAdapter.java b/system/tuigroup/src/main/java/com/tencent/qcloud/tuikit/tuigroup/classicui/view/GroupMemberAdapter.java index a8c8798..a5cdaed 100644 --- a/system/tuigroup/src/main/java/com/tencent/qcloud/tuikit/tuigroup/classicui/view/GroupMemberAdapter.java +++ b/system/tuigroup/src/main/java/com/tencent/qcloud/tuikit/tuigroup/classicui/view/GroupMemberAdapter.java @@ -86,7 +86,12 @@ public class GroupMemberAdapter extends RecyclerView.Adapter