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.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.DefaultFilteringDialog);
|
this.mContext = context;
|
}
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
Window window = getWindow();
|
if (window != null) {
|
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
window.setGravity(Gravity.BOTTOM);
|
}
|
viewBinding = DialogDefaultFilteringBinding.inflate(getLayoutInflater());
|
setContentView(viewBinding.getRoot());
|
|
//初始化界面控件
|
initView();
|
//初始化界面数据
|
// initData(mMinValue, mMaxValue, mStateValue);
|
//初始化界面控件的事件
|
initEvent();
|
|
|
}
|
|
private void initEvent() {
|
|
viewBinding.affirmLl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
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
|
public void onClick(View v) {
|
dismiss();
|
}
|
});
|
|
viewBinding.resetRl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
setBackgroundColor(null, TitleType.string_capacity);
|
setSelectedText("");
|
setBackgroundColor(viewBinding.allTv, TitleType.GridConnectedState);
|
mStateValue = GridType.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.GridConnectedState);
|
mStateValue = GridType.All;
|
}
|
});
|
viewBinding.gridConnectedTv.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
setBackgroundColor(viewBinding.gridConnectedTv, TitleType.GridConnectedState);
|
mStateValue = GridType.FULL_GRID;
|
}
|
});
|
viewBinding.offNetworkTv.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
setBackgroundColor(viewBinding.offNetworkTv, TitleType.GridConnectedState);
|
mStateValue = GridType.OFFLINE;
|
}
|
});
|
|
}
|
|
/**
|
* @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.gridConnectedTv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.config_129));
|
viewBinding.offNetworkTv.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;
|
}
|
}
|
if (TextUtils.isEmpty(stateValue)) {
|
setBackgroundColor(viewBinding.allTv, TitleType.GridConnectedState);
|
} else if (stateValue.equals(GridType.FULL_GRID)) {
|
setBackgroundColor(viewBinding.gridConnectedTv, TitleType.GridConnectedState);
|
} else {
|
setBackgroundColor(viewBinding.offNetworkTv, TitleType.GridConnectedState);
|
}
|
} 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(GridType.All);
|
viewBinding.gridConnectedTv.setTag(GridType.FULL_GRID);
|
viewBinding.offNetworkTv.setTag(GridType.OFFLINE);
|
setBackgroundColor(null, TitleType.string_capacity);
|
setBackgroundColor(viewBinding.allTv, TitleType.GridConnectedState);
|
}
|
|
public void setOnClickListener(OnClickListener onClickListener) {
|
if (onClickListener != null) {
|
mOnClickListener = onClickListener;
|
}
|
}
|
|
|
public interface OnClickListener {
|
void confirm(String min, String max, String state);
|
}
|
|
public enum TitleType {
|
string_capacity,//组串容量
|
GridConnectedState//并网状态
|
|
}
|
|
|
}
|