Commit f728a676 authored by Mygod's avatar Mygod

Simplify SummaryPreference

parent b269d9a6
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<declare-styleable name="SummaryPreference">
<attr name="summary" format="string" />
</declare-styleable>
<declare-styleable name="DropDownPreference"> <declare-styleable name="DropDownPreference">
<attr name="entries" format="reference" /> <attr name="entries" format="reference" />
<attr name="entryValues" format="reference" /> <attr name="entryValues" format="reference" />
......
...@@ -38,7 +38,6 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe ...@@ -38,7 +38,6 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
mSpinner.performClick mSpinner.performClick
true true
}) })
initSummary(mContext, attrs)
val a: TypedArray = mContext.obtainStyledAttributes(attrs, R.styleable.DropDownPreference) val a: TypedArray = mContext.obtainStyledAttributes(attrs, R.styleable.DropDownPreference)
setEntries(a.getTextArray(R.styleable.DropDownPreference_entries)) setEntries(a.getTextArray(R.styleable.DropDownPreference_entries))
mEntryValues = a.getTextArray(R.styleable.DropDownPreference_entryValues) mEntryValues = a.getTextArray(R.styleable.DropDownPreference_entryValues)
......
...@@ -22,7 +22,6 @@ final class NumberPickerPreference(context: Context, attrs: AttributeSet = null) ...@@ -22,7 +22,6 @@ final class NumberPickerPreference(context: Context, attrs: AttributeSet = null)
setMax(a.getInt(R.styleable.NumberPickerPreference_max, Int.MaxValue - 1)) setMax(a.getInt(R.styleable.NumberPickerPreference_max, Int.MaxValue - 1))
a.recycle a.recycle
} }
initSummary(context, attrs)
def getValue = value def getValue = value
def getMin = if (picker == null) 0 else picker.getMinValue def getMin = if (picker == null) 0 else picker.getMinValue
......
package com.github.shadowsocks.preferences package com.github.shadowsocks.preferences
import android.content.Context
import android.preference.Preference import android.preference.Preference
import android.util.AttributeSet
import com.github.shadowsocks.R
/** /**
* Make your preference support %s in summary. Override getSummaryValue to customize what to put in. * Make your preference support %s in summary. Override getSummaryValue to customize what to put in.
* @author Mygod * @author Mygod
*/ */
trait SummaryPreference extends Preference { trait SummaryPreference extends Preference {
private var mSummary: String = _
protected def initSummary(context: Context, attrs: AttributeSet) {
val a = context.obtainStyledAttributes(attrs, R.styleable.SummaryPreference)
mSummary = a.getString(R.styleable.SummaryPreference_summary)
a.recycle
}
protected def getSummaryValue: AnyRef protected def getSummaryValue: AnyRef
/** /**
...@@ -26,19 +15,5 @@ trait SummaryPreference extends Preference { ...@@ -26,19 +15,5 @@ trait SummaryPreference extends Preference {
* *
* @return the summary with appropriate string substitution * @return the summary with appropriate string substitution
*/ */
override def getSummary = { override def getSummary = String.format(super.getSummary.toString, getSummaryValue)
val entry = getSummaryValue
if (mSummary == null || entry == null) super.getSummary else String.format(mSummary, entry)
}
/**
* Sets the summary for this Preference with a CharSequence. If the summary has a String formatting marker in it
* (i.e. "%s" or "%1$s"), then the current entry value will be substituted in its place when it's retrieved.
*
* @param summary The summary for the preference.
*/
override def setSummary(summary: CharSequence) {
super.setSummary(summary)
if (summary == null && mSummary != null) mSummary = null
else if (summary != null && summary != mSummary) mSummary = summary.toString
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment