From 82e57df230ecb744af6c8865f80870ba03c86d89 Mon Sep 17 00:00:00 2001
From: Linjiajia <319408893@qq.com>
Date: 星期二, 25 七月 2023 22:18:27 +0800
Subject: [PATCH] 基本功能完成

---
 app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java |  222 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 188 insertions(+), 34 deletions(-)

diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java
index a78bb0c..cdc18b6 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java
@@ -3,20 +3,40 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.EditText;
+import android.widget.PopupWindow;
 
 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.UIDialog;
+import com.android.app_base.manager.UserManager;
+import com.android.app_base.utils.ScreenSizeUtils;
+import com.android.app_base.utils.Utils;
+import com.android.app_base.widget.LinearItemDecoration;
 import com.application.zhangshi_app_android.BR;
 import com.application.zhangshi_app_android.R;
 import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
+import com.application.zhangshi_app_android.adapter.MemoRvAdapter;
 import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
 import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.bean.LittleDoctorBean;
+import com.application.zhangshi_app_android.bean.MemoBean;
 import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesDetailBinding;
 import com.application.zhangshi_app_android.ui.DLBaseActivity;
+import com.github.gzuliyujiang.wheelpicker.DatePicker;
+import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.luck.picture.lib.interfaces.OnResultCallbackListener;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Locale;
+import java.util.function.Consumer;
 
 /**
  * @author Ljj
@@ -25,7 +45,10 @@
  */
 public class HomeDevicesDetailActivity extends DLBaseActivity<ActivityHomeDevicesDetailBinding,HomeDevicesDetailActivityViewModel> {
 
+    private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼
+    private PopupWindow popupWindow;
     private ImageRvAdapter adapter;
+    private MemoRvAdapter memoRvAdapter;
 
     @Override
     public int getLayoutId() {
@@ -39,8 +62,12 @@
 
     @Override
     public void initParam() {
-        if (getIntent().hasExtra("bean")){
-            viewModel.getBeanLiveData().setValue((HomeDevicesBean) getIntent().getSerializableExtra("bean"));
+        type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0);
+        if (type == 0 || type == 2){
+            HomeDevicesBean bean = (HomeDevicesBean) getIntent().getSerializableExtra("bean");
+            if (bean !=null){
+                viewModel.getBeanLiveData().setValue(bean);
+            }
         }
     }
 
@@ -50,54 +77,181 @@
         GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
         binding.rvImage.setLayoutManager(gridLayoutManager);
         binding.rvImage.setNestedScrollingEnabled(false);
-        setIsEdited(false);
+        View footerView = View.inflate(this,R.layout.item_image_footer,null);
+        binding.rvImage.addFooterView(footerView);
+        binding.rvImage.requestLayout();
+        footerView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                UserManager.getInstance().selectImage(getSelfActivity(), 9, new OnResultCallbackListener<LocalMedia>() {
+                    @Override
+                    public void onResult(ArrayList<LocalMedia> result) {
+                        if (result.size() == 0) return;
+                        for (LocalMedia media : result) {
+                            String path = media.getRealPath();
+                            File file = new File(path);
+                            if (file.exists()) {
+                                viewModel.uploadFile(file);
+                            }
+                        }
+                    }
+
+                    @Override
+                    public void onCancel() {
+
+                    }
+                });
+            }
+        });
+        adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() {
+            @Override
+            public void onChildClick(RecyclerView recyclerView, View childView, int position) {
+                HomeDevicesBean 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);
+
+        memoRvAdapter = new MemoRvAdapter(this);
+        LinearItemDecoration itemDecoration = new LinearItemDecoration();
+        itemDecoration.setBottomSpace(ScreenSizeUtils.dip2px(this, 15));
+        binding.rvMemo.addItemDecoration(itemDecoration);
+        binding.rvMemo.setAdapter(memoRvAdapter);
+
+        if (type == 1){
+            viewModel.getTypeLiveData().postValue(true);
+            binding.titleBar.setTitle("鏂板瀹跺涵璁惧");
+            binding.ivOperate.setOnClickListener(v -> {
+                viewModel.add();
+            });
+        }else if (type == 0){
+            popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null));
+            popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    viewModel.getTypeLiveData().postValue(true);
+                    popupWindow.dismiss();
+                }
+            });
+            popupWindow.getContentView().findViewById(R.id.tv_delete).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    popupWindow.dismiss();
+                    new UIDialog.Builder(getSelfActivity())
+                            .setTitle("鎮ㄧ‘瀹氳鍒犻櫎椤圭洰鍚�")
+                            .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠")
+                            .setConfirm("纭畾")
+                            .setCancel("鍙栨秷")
+                            .setListener(new UIDialog.OnListener() {
+                                @Override
+                                public void onConfirm(BaseDialog dialog) {
+                                    viewModel.delete();
+                                }
+                            })
+                            .show();
+                }
+            });
+            viewModel.getTypeLiveData().postValue(false);
+        }else if (type == 2){
+            viewModel.getTypeLiveData().postValue(true);
+        }
+        binding.etTime.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.etTime.setText(date);
+                    }
+                });
+                picker.show();
+            }
+        });
+
+        binding.ivAddMemo.setOnClickListener(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);
+                    MemoBean bean = new MemoBean();
+                    bean.setFid(BaseConfig.MEMO_FID_HOME_DEVICES);
+                    bean.setCid(viewModel.getBeanLiveData().getValue().getId());
+                    bean.setHappenTime(date);
+                    memoRvAdapter.addItem(0,bean);
+                    memoRvAdapter.setFold(true,0);
+                }
+            });
+            picker.show();
+        });
+
     }
 
     @Override
     public void initData() {
-
+        viewModel.getMemos();
     }
 
     @Override
     public void initLiveDataObserve() {
         viewModel.getBeanLiveData().observe(this,bean -> {
             if (bean!=null){
-                if (getTitleBar() != null){
-                    getTitleBar().setTitle(bean.getName());
-                }
-                String url = bean.getUrl();
-                if (url == null||url.isEmpty()){
-                    return;
-                }
-                List<String> list;
-                if (url.contains(",")){
-                    String[] split = url.split(",");
-                    list = new ArrayList<>(Arrays.asList(split));
+                adapter.setData(Utils.splitString2List(bean.getUrl(),","));
+            }
+        });
+        viewModel.getMemoListLiveData().observe(this, memoBeans -> {
+            if (memoBeans!=null){
+                memoRvAdapter.setData(memoBeans);
+            }
+        });
+        viewModel.getTypeLiveData().observe(this,operateType -> {
+            if (operateType){
+                if (type == 1) {
+                    binding.ivOperate.setOnClickListener(v -> {
+                        viewModel.add();
+                        viewModel.addMemo(memoRvAdapter.getAddList());
+                    });
                 }else {
-                    list = new ArrayList<>();
-                    list.add(url);
+                    binding.ivOperate.setOnClickListener(v -> {
+                        viewModel.addMemo(memoRvAdapter.getAddList());
+                        viewModel.deleteMemo(memoRvAdapter.getDeleteList());
+                        viewModel.updateMemo(memoRvAdapter.getUpdateList());
+                        viewModel.update();
+                    });
                 }
-                adapter.setData(list);
+                binding.rvImage.getFooterViews().forEach(new Consumer<View>() {
+                    @Override
+                    public void accept(View view) {
+                        view.setVisibility(View.VISIBLE);
+                    }
+                });
+                setIsEdited(true);
+            }else {
+                binding.ivOperate.setOnClickListener(v -> {
+                    popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
+                });
+                binding.rvImage.getFooterViews().forEach(new Consumer<View>() {
+                    @Override
+                    public void accept(View view) {
+                        view.setVisibility(View.GONE);
+                    }
+                });
+                setIsEdited(false);
             }
         });
     }
     public void setIsEdited(boolean isEdited){
-        disableAllEditText(getContentView(),isEdited);
         adapter.setIsEdited(isEdited);
-    }
-    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
-        for (int i = 0; i < viewGroup.getChildCount(); i++) {
-            View child = viewGroup.getChildAt(i);
-            if (child instanceof ViewGroup) {
-                disableAllEditText((ViewGroup) child,isEdited);
-            } else if (child instanceof EditText) {
-                child.setEnabled(isEdited);
-                child.setFocusable(isEdited);
-                child.setFocusableInTouchMode(isEdited);
-                if (!isEdited){
-                    child.clearFocus();
-                }
-            }
-        }
+        memoRvAdapter.setEdited(isEdited);
     }
 }

--
Gitblit v1.9.1