| | |
| | | package com.hdl.photovoltaic.widget; |
| | | |
| | | import android.app.Activity; |
| | | import android.content.Context; |
| | | import android.graphics.Color; |
| | | import android.os.Bundle; |
| | | import android.text.TextUtils; |
| | | import android.view.Gravity; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.view.Window; |
| | | import android.widget.TextView; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.appcompat.content.res.AppCompatResources; |
| | | import androidx.core.content.ContextCompat; |
| | | |
| | | import com.hdl.photovoltaic.HDLApp; |
| | | import com.hdl.photovoltaic.R; |
| | | import com.hdl.photovoltaic.base.BaseDialog; |
| | | import com.hdl.photovoltaic.databinding.DialogDefaultFilteringBinding; |
| | | import com.hdl.photovoltaic.enums.DebugStatus; |
| | | import com.hdl.photovoltaic.enums.GridType; |
| | | import com.hdl.photovoltaic.enums.UnitType; |
| | | import com.hdl.photovoltaic.other.HdlThreadLogic; |
| | | |
| | | public class DefaultFilteringDialog extends BaseDialog { |
| | | private final Context mContext; |
| | |
| | | DialogDefaultFilteringBinding viewBinding; |
| | | |
| | | OnClickListener mOnClickListener; |
| | | |
| | | final String text1 = "0-5"; |
| | | final String text2 = "5-10"; |
| | | final String text3 = "10-15"; |
| | | final String text4 = "15-30"; |
| | | final String text5 = "30-100"; |
| | | final String text6 = "100-300"; |
| | | final String text7 = "300-500"; |
| | | final String text8 = "500+"; |
| | | |
| | | |
| | | private String mStateValue = GridType.All; |
| | | |
| | | public DefaultFilteringDialog(@NonNull Context context) { |
| | | super(context, R.style.Custom_Dialog); |
| | |
| | | super.onCreate(savedInstanceState); |
| | | viewBinding = DialogDefaultFilteringBinding.inflate(getLayoutInflater()); |
| | | setContentView(viewBinding.getRoot()); |
| | | //空白处不能取消动画 |
| | | setCanceledOnTouchOutside(false); |
| | | Window window = getWindow(); |
| | | if (window != null) { |
| | | window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); |
| | | window.setGravity(Gravity.BOTTOM); |
| | | } |
| | | // setCanceledOnTouchOutside(false); |
| | | //初始化界面控件 |
| | | initView(); |
| | | //初始化界面数据 |
| | | initData(); |
| | | // initData(mMinValue, mMaxValue, mStateValue); |
| | | //初始化界面控件的事件 |
| | | initEvent(); |
| | | |
| | | |
| | | } |
| | | |
| | | private void initEvent() { |
| | |
| | | viewBinding.affirmLl.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | if (mOnClickListener != null) { |
| | | mOnClickListener.confirm(); |
| | | String minValue = viewBinding.minEt.getText().toString(); |
| | | String maxValue = viewBinding.maxEt.getText().toString(); |
| | | if (!TextUtils.isEmpty(minValue) && !TextUtils.isEmpty(maxValue)) { |
| | | try { |
| | | if (Integer.parseInt(minValue) > Integer.parseInt(maxValue)) { |
| | | //最小值在前面 |
| | | if (mOnClickListener != null) { |
| | | mOnClickListener.confirm(maxValue, minValue, mStateValue); |
| | | } |
| | | } else { |
| | | if (mOnClickListener != null) { |
| | | mOnClickListener.confirm(minValue, maxValue, mStateValue); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | //强制转换因输入值超出int值域范围报出异常 |
| | | int maxValueInt = Integer.MAX_VALUE; |
| | | HdlThreadLogic.toast(mContext, mContext.getString(R.string.the_input_value_has_been_exceeded) + "(" + maxValueInt + ")."); |
| | | return; |
| | | } |
| | | |
| | | } else { |
| | | if (mOnClickListener != null) { |
| | | mOnClickListener.confirm(minValue, maxValue, mStateValue); |
| | | } |
| | | } |
| | | dismiss(); |
| | | } |
| | | }); |
| | | |
| | | |
| | | viewBinding.cancelLl.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | |
| | | dismiss(); |
| | | } |
| | | }); |
| | | |
| | | viewBinding.resetRl.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(null, TitleType.string_capacity); |
| | | setSelectedText(""); |
| | | setBackgroundColor(viewBinding.allTv, TitleType.debuggingState); |
| | | mStateValue = DebugStatus.All; |
| | | } |
| | | }); |
| | | viewBinding.text1Tv.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.text1Tv, TitleType.string_capacity); |
| | | setSelectedText(viewBinding.text1Tv.getTag().toString()); |
| | | } |
| | | }); |
| | | viewBinding.text2Tv.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.text2Tv, TitleType.string_capacity); |
| | | setSelectedText(viewBinding.text2Tv.getTag().toString()); |
| | | } |
| | | }); |
| | | viewBinding.text3Tv.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.text3Tv, TitleType.string_capacity); |
| | | setSelectedText(viewBinding.text3Tv.getTag().toString()); |
| | | } |
| | | }); |
| | | viewBinding.text4Tv.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.text4Tv, TitleType.string_capacity); |
| | | setSelectedText(viewBinding.text4Tv.getTag().toString()); |
| | | } |
| | | }); |
| | | |
| | | viewBinding.text5Tv.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.text5Tv, TitleType.string_capacity); |
| | | setSelectedText(viewBinding.text5Tv.getTag().toString()); |
| | | } |
| | | }); |
| | | viewBinding.text6Tv.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.text6Tv, TitleType.string_capacity); |
| | | setSelectedText(viewBinding.text6Tv.getTag().toString()); |
| | | } |
| | | }); |
| | | viewBinding.text7Tv.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.text7Tv, TitleType.string_capacity); |
| | | setSelectedText(viewBinding.text7Tv.getTag().toString()); |
| | | } |
| | | }); |
| | | viewBinding.text8Tv.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.text8Tv, TitleType.string_capacity); |
| | | setSelectedText(viewBinding.text8Tv.getTag().toString()); |
| | | } |
| | | }); |
| | | //全部 |
| | | viewBinding.allTv.setOnClickListener(new View.OnClickListener() { |
| | | |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.allTv, TitleType.debuggingState); |
| | | mStateValue = DebugStatus.All; |
| | | } |
| | | }); |
| | | //调试中 |
| | | viewBinding.beDebuggingTv.setOnClickListener(new View.OnClickListener() { |
| | | |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.beDebuggingTv, TitleType.debuggingState); |
| | | mStateValue = DebugStatus.Debugging; |
| | | } |
| | | }); |
| | | //调试完成 |
| | | viewBinding.debuggingcOmpletedTv.setOnClickListener(new View.OnClickListener() { |
| | | |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.debuggingcOmpletedTv, TitleType.debuggingState); |
| | | mStateValue = DebugStatus.WAIT_DELIVERED; |
| | | } |
| | | }); |
| | | //已交付 |
| | | viewBinding.deliveredTv.setOnClickListener(new View.OnClickListener() { |
| | | |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.deliveredTv, TitleType.debuggingState); |
| | | mStateValue = DebugStatus.Delivered; |
| | | } |
| | | }); |
| | | //授权调试 |
| | | viewBinding.authorizationDebuggingTv.setOnClickListener(new View.OnClickListener() { |
| | | |
| | | @Override |
| | | public void onClick(View v) { |
| | | setBackgroundColor(viewBinding.authorizationDebuggingTv, TitleType.debuggingState); |
| | | mStateValue = DebugStatus.SECONDARY_DEBUGGIN; |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | private void initData() { |
| | | /** |
| | | * @param value 选中的值 |
| | | */ |
| | | private void setSelectedText(String value) { |
| | | |
| | | String minValue = "", maxValue = ""; |
| | | if (TextUtils.isEmpty(value)) { |
| | | minValue = ""; |
| | | maxValue = ""; |
| | | } else if (value.contains("+")) { |
| | | minValue = "500"; |
| | | maxValue = ""; |
| | | } else if (value.contains("-")) { |
| | | String[] min_max = value.split("-"); |
| | | if (min_max.length == 2) { |
| | | minValue = min_max[0]; |
| | | maxValue = min_max[1]; |
| | | } |
| | | } |
| | | |
| | | viewBinding.minEt.setText(minValue); |
| | | viewBinding.maxEt.setText(maxValue); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 改变组件背景,字体颜色格式 |
| | | * |
| | | * @param textView 组件可以(设置为null,没有选中状态) |
| | | * @param titleType 修改类型 |
| | | */ |
| | | private void setBackgroundColor(TextView textView, TitleType titleType) { |
| | | if (titleType == TitleType.string_capacity) { |
| | | viewBinding.text1Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.text2Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.text3Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.text4Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.text5Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.text6Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.text7Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.text8Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | } else { |
| | | viewBinding.allTv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.beDebuggingTv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.debuggingcOmpletedTv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.deliveredTv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | viewBinding.authorizationDebuggingTv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129)); |
| | | } |
| | | if (textView != null) { |
| | | textView.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_yes_129)); |
| | | } |
| | | |
| | | } |
| | | |
| | | public void initState(String min, String max, String stateValue) { |
| | | try { |
| | | mStateValue = stateValue; |
| | | viewBinding.minEt.setText(min); |
| | | viewBinding.maxEt.setText(max); |
| | | |
| | | if (!TextUtils.isEmpty(min) || !TextUtils.isEmpty(max)) { |
| | | String str = min + "-" + max; |
| | | switch (str) { |
| | | case text1: |
| | | setBackgroundColor(viewBinding.text1Tv, TitleType.string_capacity); |
| | | break; |
| | | case text2: |
| | | setBackgroundColor(viewBinding.text2Tv, TitleType.string_capacity); |
| | | break; |
| | | case text3: |
| | | setBackgroundColor(viewBinding.text3Tv, TitleType.string_capacity); |
| | | break; |
| | | case text4: |
| | | setBackgroundColor(viewBinding.text4Tv, TitleType.string_capacity); |
| | | break; |
| | | case text5: |
| | | setBackgroundColor(viewBinding.text5Tv, TitleType.string_capacity); |
| | | break; |
| | | case text6: |
| | | setBackgroundColor(viewBinding.text6Tv, TitleType.string_capacity); |
| | | break; |
| | | case text7: |
| | | setBackgroundColor(viewBinding.text7Tv, TitleType.string_capacity); |
| | | break; |
| | | case text8: |
| | | setBackgroundColor(viewBinding.text8Tv, TitleType.string_capacity); |
| | | break; |
| | | } |
| | | } |
| | | switch (stateValue) { |
| | | case DebugStatus.All: |
| | | setBackgroundColor(viewBinding.allTv, TitleType.debuggingState); |
| | | break; |
| | | case DebugStatus.Debugging: |
| | | setBackgroundColor(viewBinding.beDebuggingTv, TitleType.debuggingState); |
| | | break; |
| | | case DebugStatus.WAIT_DELIVERED: |
| | | setBackgroundColor(viewBinding.debuggingcOmpletedTv, TitleType.debuggingState); |
| | | break; |
| | | case DebugStatus.Delivered: |
| | | setBackgroundColor(viewBinding.deliveredTv, TitleType.debuggingState); |
| | | break; |
| | | case DebugStatus.SECONDARY_DEBUGGIN: |
| | | setBackgroundColor(viewBinding.authorizationDebuggingTv, TitleType.debuggingState); |
| | | break; |
| | | default: { |
| | | setBackgroundColor(viewBinding.allTv, TitleType.debuggingState); |
| | | break; |
| | | } |
| | | } |
| | | } catch (Exception ignored) { |
| | | } |
| | | |
| | | } |
| | | |
| | | private void initView() { |
| | | |
| | | String s = mContext.getString(R.string.string_capacity) + "(" + UnitType.kWp + ")"; |
| | | viewBinding.capacityTv.setText(s); |
| | | viewBinding.text1Tv.setTag(text1); |
| | | viewBinding.text2Tv.setTag(text2); |
| | | viewBinding.text3Tv.setTag(text3); |
| | | viewBinding.text4Tv.setTag(text4); |
| | | viewBinding.text5Tv.setTag(text5); |
| | | viewBinding.text6Tv.setTag(text6); |
| | | viewBinding.text7Tv.setTag(text7); |
| | | viewBinding.text8Tv.setTag(text8); |
| | | |
| | | viewBinding.allTv.setTag(DebugStatus.All); |
| | | viewBinding.beDebuggingTv.setTag(DebugStatus.Debugging); |
| | | viewBinding.debuggingcOmpletedTv.setTag(DebugStatus.WAIT_DELIVERED); |
| | | viewBinding.deliveredTv.setTag(DebugStatus.Delivered); |
| | | viewBinding.authorizationDebuggingTv.setTag(DebugStatus.SECONDARY_DEBUGGIN); |
| | | setBackgroundColor(null, TitleType.string_capacity); |
| | | setBackgroundColor(viewBinding.allTv, TitleType.debuggingState); |
| | | } |
| | | |
| | | public void setOnClickListener(OnClickListener onClickListener) { |
| | |
| | | |
| | | |
| | | public interface OnClickListener { |
| | | void confirm(); |
| | | void confirm(String min, String max, String state); |
| | | } |
| | | |
| | | public enum TitleType { |
| | | string_capacity,//组串容量 |
| | | debuggingState//调试状态 |
| | | |
| | | } |
| | | |
| | | |
| | | } |