package org.namelessrom.devicecontrol.preferences; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.preference.Preference; import android.support.annotation.NonNull; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import org.namelessrom.devicecontrol.R; import org.namelessrom.devicecontrol.utils.DrawableHelper; import org.namelessrom.devicecontrol.utils.Utils; public class CustomPreference extends Preference { private int sumColor = -1; private boolean areMilliVolts; private String category; private TextView summary; public CustomPreference(Context context) { super(context); setLayoutResource(R.layout.preference); } public CustomPreference(Context context, AttributeSet attrs) { super(context, attrs); setLayoutResource(R.layout.preference); } public CustomPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setLayoutResource(R.layout.preference); } public void setCustomSummaryKeyPlus(final int plus) { final int newValue = Utils.parseInt(getKey()) + plus; setKey(newValue + ""); if (areMilliVolts) { setSummary(newValue + " mV"); } else { setSummary(newValue + ""); } } public void setCustomSummaryKeyMinus(final int minus) { final int newValue = Utils.parseInt(getKey()) - minus; setKey(newValue + ""); if (areMilliVolts) { setSummary(newValue + " mV"); } else { setSummary(newValue + ""); } } public void restoreSummaryKey(final String summary, final String key) { setKey(key); if (areMilliVolts) { setSummary(summary + " mV"); } else { setSummary(summary + ""); } } public void areMilliVolts(final boolean areMillivolts) { this.areMilliVolts = areMillivolts; } public void setCategory(final String category) { this.category = category; } public void setSummaryColor(final int color) { this.sumColor = color; if (summary != null) { summary.setTextColor(this.sumColor); } } public void setSummaryColor(final String color) { setSummaryColor(Color.parseColor(color)); } public String getCategory() { return this.category; } @Override protected void onBindView(@NonNull final View view) { super.onBindView(view); summary = (TextView) view.findViewById(android.R.id.summary); if (sumColor != -1) { summary.setTextColor(sumColor); } final ImageView icon = (ImageView) view.findViewById(android.R.id.icon); if (icon != null) { final Drawable d = icon.getDrawable(); if (d != null) { DrawableHelper.applyAccentColorFilter(d); icon.setImageDrawable(d); } } } }