From 5325e22a184b53aadcc5e9552cb1ec54f9c8ad81 Mon Sep 17 00:00:00 2001 From: guoshen <3129367635@qq.com> Date: 星期六, 29 六月 2024 16:33:11 +0800 Subject: [PATCH] 加入了直播、会议功能 --- app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java | 388 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 388 insertions(+), 0 deletions(-) diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java new file mode 100644 index 0000000..0e08dd8 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java @@ -0,0 +1,388 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.app.Activity; +import android.content.ClipData; +import android.content.Intent; +import android.net.Uri; +import android.view.View; +import android.widget.PopupWindow; + +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.lifecycle.MutableLiveData; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.adapter.BaseRVAdapter; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.WaitDialog; +import com.android.app_base.manager.UserManager; +import com.android.app_base.utils.GetFilePathFromUri; +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.databinding.ActivityMeetingApproveDetailBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.DatePicker; +import com.github.gzuliyujiang.wheelpicker.OptionPicker; +import com.github.gzuliyujiang.wheelpicker.TimePicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnTimePickedListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.interfaces.OnResultCallbackListener; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; + + +/** + * @author Gss + * @date 2023.03.25. 16:00 + * @desc 瀹跺ぇ浜嬭 MeetingDetailActivity + */ +public class MeetingapproveDetailActivity extends DLBaseActivity<ActivityMeetingApproveDetailBinding, MeetingapproveDetailActivityViewModel> { + private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼 + private PopupWindow popupWindow; + private MutableLiveData<MeetingBean> beanLiveData; + private ElectronicFileAddAdapter adapter; + private BaseDialog mWaitDialog; + private ActivityResultLauncher<Intent> activityResultLauncher; + @Override + public int getLayoutId() { + return R.layout.activity_meeting_approve_detail; + } + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); + if (type == 0 || type == 2){ + MeetingBean bean = (MeetingBean) getIntent().getSerializableExtra("bean"); + if (bean !=null){ + viewModel.getBeanLiveData().setValue(bean); + } + } + } + + + + @Override + public void initView() { + adapter = new ElectronicFileAddAdapter(this); + GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); + binding.rvImage.setLayoutManager(gridLayoutManager); + binding.rvImage.setNestedScrollingEnabled(false); + adapter.setItemAndAddClickListener(new ElectronicFileAddAdapter.OnItemAndAddClickListener() { + @Override + public void onItemClick(View v, int position) { + + } + + @Override + public void onAddClick() { + OptionPicker picker = getOptionPicker(Arrays.asList("鍥剧墖瑙嗛","鍏朵粬鏂囦欢")); + picker.setTitle("閫夋嫨鏂囦欢绫诲瀷"); + picker.setOnOptionPickedListener(new OnOptionPickedListener() { + @Override + public void onOptionPicked(int position, Object item) { + if (item.equals("鍥剧墖瑙嗛")) { + UserManager.getInstance().selectImage(getSelfActivity(), 0,9, new OnResultCallbackListener<LocalMedia>() { + @Override + public void onResult(ArrayList<LocalMedia> result) { + if (result.size() == 0) return; + for (LocalMedia media : result) { + String path = media.getRealPath(); + if (path!=null){ + viewModel.addUploadFile(path); + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + @Override + public void onCancel() { + + } + }); + }else { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); +// Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.setType("*/*"); // 闄愬埗鏂囦欢绫诲瀷 + intent.addCategory(Intent.CATEGORY_OPENABLE); // 娣诲姞 CATEGORY_OPENABLE 鍒嗙被,鍛婅瘔绯荤粺瑕侀�夋嫨鐨勫唴瀹瑰彲浠ヨ鎵撳紑锛岃繖鏍风郴缁熶細杩囨护鎺変笉鑳借搴旂敤鎵撳紑鐨勬枃浠讹紝浠ユ彁渚涙洿濂界殑鐢ㄦ埛浣撻獙銆� + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); // 鍏佽澶氶�� + activityResultLauncher.launch(intent); + } + } + }); + picker.show(); + + } + }); + adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { + @Override + public void onChildClick(RecyclerView recyclerView, View childView, int position) { + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.remove(adapter.getItem(position)); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + adapter.removeItem(position); + viewModel.getBeanLiveData().setValue(bean); + } + }); + + binding.rvImage.setAdapter(adapter); + if (type == 1){ + viewModel.getTypeLiveData().setValue(true); + binding.titleBar.setTitle("鏂板瀹跺ぇ浜嬭"); + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + }); + }else if (type == 0){ + popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_approve,null)); + popupWindow.getContentView().findViewById(R.id.tv_disagree).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + popupWindow.dismiss(); + viewModel.disagree(); + viewModel.getTypeLiveData().postValue(true); + } + }); + viewModel.getTypeLiveData().postValue(true); + + popupWindow.getContentView().findViewById(R.id.tv_agreed).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + popupWindow.dismiss(); + viewModel.agree(); + viewModel.getTypeLiveData().postValue(true); + + } + }); + + viewModel.getTypeLiveData().postValue(false); + }else if (type == 2){ + viewModel.getTypeLiveData().postValue(true); + + } + + + + binding.etDate1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate1.setText(date); + } + }); + picker.show(); + } + }); + + binding.etDate2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate2.setText(date); + } + }); + picker.show(); + } + }); + + binding.etTime1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + + @Override + + public void onTimePicked(int hour, int Minute,int second) { +// second = '0'; + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second); + binding.etTime1.setText(date); + } + }); + picker.show(); + } + }); + + + + + binding.etTime2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + @Override + public void onTimePicked(int hour, int Minute, int second) { + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second ); + binding.etTime2.setText(date); + } + }); + picker.show(); + } + }); + + + + + + + activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { + @Override + public void onActivityResult(ActivityResult result) { + if (result.getResultCode() == Activity.RESULT_OK) { + if (result.getData() == null){ + return; + } + // 鑾峰彇閫変腑鐨勫涓枃浠剁殑 URI + ClipData clipData = result.getData().getClipData(); + if (clipData != null) { + int itemCount = clipData.getItemCount(); + for (int i = 0; i < itemCount; i++) { + Uri uri = clipData.getItemAt(i).getUri(); + // 浣跨敤閫変腑鐨勬枃浠� URI 杩涜鍚庣画鎿嶄綔锛屾瘮濡傝鍙栨枃浠跺唴瀹圭瓑 + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri); + if (path!=null){ + viewModel.addUploadFile(path); + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + }else { + // 鑾峰彇閫変腑鐨勫崟涓枃浠剁殑 URI + Uri selectedFileUri = result.getData().getData(); + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri); + if (path!=null){ + viewModel.addUploadFile(path); + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + } + }); + + } + + @Override + public void initData() { +// beanLiveData.setValue=MeetingBean; + + } + + + @Override + public void initLiveDataObserve() { + viewModel.getBeanLiveData().observe(this, bean -> { + if (bean!=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + adapter.setData(urlList); + } + }); + viewModel.getTypeLiveData().observe(this,operateType -> { + if (operateType){ + if (type == 1) { + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + }); + }else { + binding.ivOperate.setOnClickListener(v -> { + viewModel.update(); + }); + } + setIsEdited(true); + }else { + binding.ivOperate.setOnClickListener(v -> { + popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); + }); + setIsEdited(false); + } + }); + } + + public void setIsEdited(boolean isEdited){ + adapter.setIsEdited(isEdited); + } + + @Override + protected void dialogLoading() { + if (mWaitDialog == null) { + mWaitDialog = new WaitDialog.Builder(this) + // 娑堟伅鏂囨湰鍙互涓嶇敤濉啓 + .setMessage("姝e湪涓婁紶") + .create(); + } + if (!mWaitDialog.isShowing()) { + mWaitDialog.show(); + } + } + + @Override + protected void dialogDismiss() { + if (mWaitDialog != null && mWaitDialog.isShowing()) { + mWaitDialog.dismiss(); + mWaitDialog = null; + } + } + +} + + + + + + + + + + + + + + + -- Gitblit v1.9.1