From 593303fa91fd541844b204ec913c462d7855a31e Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期五, 01 十二月 2023 18:24:44 +0800
Subject: [PATCH] 2023年12月01日18:24:35

---
 app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java |  241 ++++++++++++++++++++++++++---------------------
 1 files changed, 132 insertions(+), 109 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java
index 0c93e6f..cd25868 100644
--- a/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java
+++ b/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java
@@ -2,24 +2,46 @@
 
 import android.app.Dialog;
 import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
-import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
 
 import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
 
+import com.hdl.photovoltaic.HDLApp;
 import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.config.UserConfigManage;
 import com.hdl.photovoltaic.databinding.DialogListBinding;
+import com.hdl.photovoltaic.ui.StartActivity;
+import com.hdl.photovoltaic.ui.adapter.LanguageAdapter;
+import com.hdl.photovoltaic.utils.AppManagerUtils;
+import com.hdl.photovoltaic.utils.LocalManageUtil;
+import com.hdl.photovoltaic.widget.adapter.ListDialogAdapter;
 
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鍔ㄦ�佸垪琛ㄥ脊绐�
+ */
 public class ListDialog extends Dialog {
-    private onNoListener onNoOnclickListener;
-    private onHDLChinaListener onHDLChinaListener;
-    private onHDLBahrainListener onHDLBahrainListener;
     private DialogListBinding viewBinding;
-    private String contentStr1, contentStr2;
+
+    private ListDialogAdapter listDialogAdapter;
+    private final Context mContext;
+    private List<ListDialogAdapter.DialogItemData> list;
+
+    private ListDialogAdapter.OnclickListener itemOnclickListener;//鐐瑰嚮浜嗙殑鐩戝惉鍣�
 
     public ListDialog(@NonNull Context context) {
-        super(context, R.style.Custom_Dialog);
+        super(context, R.style.Custom_List_Dialog);
+        this.mContext = context;
     }
 
     @Override
@@ -27,121 +49,122 @@
         super.onCreate(savedInstanceState);
         viewBinding = DialogListBinding.inflate(getLayoutInflater());
         setContentView(viewBinding.getRoot());
+        setDialogTouchOutsideCloseable(this);
         initData();
-        initEvent();
-
-    }
-
-    /**
-     * 鍒濆鍖栫晫闈㈡帶浠剁殑鏄剧ず鏁版嵁
-     */
-    private void initData() {
-        //濡傛灉鐢ㄦ埛鑷畾浜哻ontentStr1鍜宑ontentStr2
-        if (!TextUtils.isEmpty(contentStr1)) {
-            viewBinding.hdlChinaTv.setText(contentStr1);
-        }
-        if (!TextUtils.isEmpty(contentStr2)) {
-            viewBinding.hdlBahrainTv.setText(contentStr2);
-        }
-
-    }
-
-    /**
-     * 鑷畾涔�"鍐呭"鏂囨湰
-     *
-     * @param content 鍐呭
-     */
-    public void setLineContent1(String content) {
-        if (TextUtils.isEmpty(content)) {
-            return;
-        }
-        contentStr1 = content;
-        if (viewBinding != null) {
-            viewBinding.hdlChinaTv.setText(contentStr1);
-        }
-    }
-
-    /**
-     * 鑷畾涔�"鍐呭"鏂囨湰
-     *
-     * @param content 鍐呭
-     */
-    public void setLineContent2(String content) {
-        if (TextUtils.isEmpty(content)) {
-            return;
-        }
-        contentStr2 = content;
-        if (viewBinding != null) {
-            viewBinding.hdlBahrainTv.setText(contentStr2);
-        }
-    }
-
-    public String geHDLChinaText() {
-        return viewBinding.hdlChinaTv.getText().toString();
-    }
-
-    ;
-
-    public String getHDLBahrainText() {
-        return viewBinding.hdlBahrainTv.getText().toString();
-
-    }
-
-    private void initEvent() {
-
-        viewBinding.hdlCancelLl.setOnClickListener(new View.OnClickListener() {
+        LinearLayoutManager linearLayout = new LinearLayoutManager(mContext);
+        listDialogAdapter = new ListDialogAdapter(this.list, mContext);
+        viewBinding.logicRcv.setLayoutManager(linearLayout);
+        viewBinding.logicRcv.setAdapter(listDialogAdapter);
+        listDialogAdapter.setItemOnclickListener(new ListDialogAdapter.OnclickListener() {
             @Override
-            public void onClick(View v) {
-                if (onNoOnclickListener != null) {
-                    onNoOnclickListener.Cancel();
+            public void onClick(int position, ListDialogAdapter.DialogItemData itemData) {
+                for (int i = 0; i < list.size(); i++) {
+                    ListDialogAdapter.DialogItemData data = list.get(i);
+                    data.setState(false);
+                }
+                list.get(position).setState(true);
+                listDialogAdapter.notifyDataSetChanged();
+                languageSelectionDialog(position, itemData);
+            }
+        });
+
+    }
+
+    public void setItemOnclickListener(ListDialogAdapter.OnclickListener onclickListener) {
+        this.itemOnclickListener = onclickListener;
+    }
+
+    private void initData() {
+        list = new ArrayList<>();
+        ListDialogAdapter.DialogItemData zh = new ListDialogAdapter.DialogItemData();
+        zh.setState(false);
+        zh.setTitle("绠�浣撲腑鏂�");
+        zh.setLanguage(LocalManageUtil.zh);
+        list.add(zh);
+        ListDialogAdapter.DialogItemData en = new ListDialogAdapter.DialogItemData();
+        en.setState(false);
+        en.setTitle("English");
+        en.setLanguage(LocalManageUtil.en);
+        list.add(en);
+
+        for (int i = 0; i < list.size(); i++) {
+            ListDialogAdapter.DialogItemData itemData = list.get(i);
+            if (itemData.getLanguage().equals(UserConfigManage.getInstance().getCurrentAppLanguage())) {
+                //鍒濆鍖栦箣鍓嶇姸鎬�
+                itemData.setState(true);
+            }
+        }
+    }
+
+    /**
+     * 浜屾纭鎻愮ず妗�
+     *
+     * @param position 绱㈠紩鍊�
+     * @param itemData 閫変腑鏁版嵁
+     */
+    private void languageSelectionDialog(int position, ListDialogAdapter.DialogItemData itemData) {
+        ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(this.mContext);
+        dialog.setTitle(this.mContext.getString(R.string.loading_title_tip));
+        dialog.setContent(this.mContext.getString(R.string.loading_app_restart));
+        dialog.show();
+        dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
+            @Override
+            public void Confirm() {
+                if (itemOnclickListener != null) {
+                    itemOnclickListener.onClick(position, itemData);
                 }
                 dismiss();
+                UserConfigManage.getInstance().setCurrentAppLanguage(itemData.getLanguage());
+                UserConfigManage.getInstance().Save();
+                AppManagerUtils.getAppManager().finishAllActivity();
+                Intent intent = new Intent();
+                intent.setClass(HDLApp.getInstance(), StartActivity.class);
+                mContext.startActivity(intent);
             }
         });
-        viewBinding.hdlChinaLl.setOnClickListener(new View.OnClickListener() {
+        dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
             @Override
-            public void onClick(View v) {
-                if (onHDLChinaListener != null) {
-                    onHDLChinaListener.HDLChina();
-                }
-
+            public void Cancel() {
+                dialog.dismiss();
             }
         });
-        viewBinding.hdlBahrainLl.setOnClickListener(new View.OnClickListener() {
+    }
+
+    //瑙e喅dialog.setCanceledOnTouchOutside(true) 涓嶇敓鏁堥棶棰�
+    public void setDialogTouchOutsideCloseable(Dialog dialog) {
+        viewBinding.getRoot().setOnTouchListener(new View.OnTouchListener() {
             @Override
-            public void onClick(View v) {
-                if (onHDLBahrainListener != null) {
-                    onHDLBahrainListener.HDLBahrain();
-                }
+            public boolean onTouch(View v, MotionEvent event) {
+                int top = viewBinding.dialogParent.getTop();
+                int left = viewBinding.dialogParent.getLeft();
+                int bottom = viewBinding.dialogParent.getBottom();
+                int right = viewBinding.dialogParent.getRight();
+                int y = (int) event.getY();
+                int x = (int) event.getX();
+                if (event.getAction() == MotionEvent.ACTION_UP) {
+                    if (top < y && y < bottom) {
 
+                    } else {
+                        dismiss();
+                    }
+
+                    if (left < x && x < right) {
+
+                    } else {
+                        dismiss();
+                    }
+
+
+                }
+                return true;
             }
         });
-
-
+//        Window window = dialog.getWindow();
+//        WindowManager.LayoutParams params = window.getAttributes();
+//        params.width = ViewGroup.LayoutParams.MATCH_PARENT;
+//        params.height = ViewGroup.LayoutParams.MATCH_PARENT;
+//        window.setAttributes(params);
+//        //绌虹櫧澶勪笉鑳藉彇娑堝姩鐢�
+//        setCanceledOnTouchOutside(true);
     }
-
-    public void setNoOnListener(onNoListener onclickListener) {
-        this.onNoOnclickListener = onclickListener;
-    }
-
-    public void setOnHDLChinaOnListener(onHDLChinaListener onHDLChinaListener) {
-        this.onHDLChinaListener = onHDLChinaListener;
-    }
-
-    public void setOnHDLBahrainListener(onHDLBahrainListener onHDLBahrainListener) {
-        this.onHDLBahrainListener = onHDLBahrainListener;
-    }
-
-    public interface onNoListener {
-        void Cancel();
-    }
-
-    public interface onHDLChinaListener {
-        void HDLChina();
-    }
-
-    public interface onHDLBahrainListener {
-        void HDLBahrain();
-    }
-
 }

--
Gitblit v1.8.0