Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
com.ccwangluo.accelerator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
com.ccwangluo.accelerator
Commits
74a0e397
Commit
74a0e397
authored
Jul 11, 2016
by
Mygod
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refine #752 and NumberPickerPreference
parent
f35a4b05
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
30 additions
and
39 deletions
+30
-39
src/main/res/values/attrs.xml
src/main/res/values/attrs.xml
+2
-2
src/main/res/xml/pref_all.xml
src/main/res/xml/pref_all.xml
+4
-4
src/main/scala/com/github/shadowsocks/preferences/DropDownPreference.scala
...m/github/shadowsocks/preferences/DropDownPreference.scala
+19
-31
src/main/scala/com/github/shadowsocks/preferences/NumberPickerPreference.scala
...thub/shadowsocks/preferences/NumberPickerPreference.scala
+5
-2
No files found.
src/main/res/values/attrs.xml
View file @
74a0e397
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources>
<declare-styleable
name=
"DropDownPreference"
>
<declare-styleable
name=
"DropDownPreference"
>
<attr
name=
"
entries"
format=
"reference
"
/>
<attr
name=
"
android:entries
"
/>
<attr
name=
"
entryValues"
format=
"reference
"
/>
<attr
name=
"
android:entryValues
"
/>
</declare-styleable>
</declare-styleable>
<declare-styleable
name=
"NumberPickerPreference"
>
<declare-styleable
name=
"NumberPickerPreference"
>
<attr
name=
"max"
format=
"integer"
/>
<attr
name=
"max"
format=
"integer"
/>
...
...
src/main/res/xml/pref_all.xml
View file @
74a0e397
...
@@ -37,8 +37,8 @@
...
@@ -37,8 +37,8 @@
<com.github.shadowsocks.preferences.DropDownPreference
<com.github.shadowsocks.preferences.DropDownPreference
android:key=
"encMethod"
android:key=
"encMethod"
android:persistent=
"false"
android:persistent=
"false"
a
pp
:entries=
"@array/enc_method_entry"
a
ndroid
:entries=
"@array/enc_method_entry"
a
pp
:entryValues=
"@array/enc_method_value"
a
ndroid
:entryValues=
"@array/enc_method_value"
android:summary=
"%s"
android:summary=
"%s"
android:title=
"@string/enc_method"
/>
android:title=
"@string/enc_method"
/>
<SwitchPreference
<SwitchPreference
...
@@ -55,8 +55,8 @@
...
@@ -55,8 +55,8 @@
<com.github.shadowsocks.preferences.DropDownPreference
<com.github.shadowsocks.preferences.DropDownPreference
android:key=
"route"
android:key=
"route"
android:persistent=
"false"
android:persistent=
"false"
a
pp
:entries=
"@array/route_entry"
a
ndroid
:entries=
"@array/route_entry"
a
pp
:entryValues=
"@array/route_value"
a
ndroid
:entryValues=
"@array/route_value"
android:summary=
"%s"
android:summary=
"%s"
android:title=
"@string/route_list"
/>
android:title=
"@string/route_list"
/>
<SwitchPreference
<SwitchPreference
...
...
src/main/scala/com/github/shadowsocks/preferences/DropDownPreference.scala
View file @
74a0e397
...
@@ -5,7 +5,7 @@ import android.content.Context
...
@@ -5,7 +5,7 @@ import android.content.Context
import
android.content.res.TypedArray
import
android.content.res.TypedArray
import
android.os.Build
import
android.os.Build
import
android.preference.Preference
import
android.preference.Preference
import
android.support.annotation.
NonNull
import
android.support.annotation.
{
ArrayRes
,
NonNull
}
import
android.support.v7.widget.AppCompatSpinner
import
android.support.v7.widget.AppCompatSpinner
import
android.util.AttributeSet
import
android.util.AttributeSet
import
android.view.
{
View
,
ViewGroup
}
import
android.view.
{
View
,
ViewGroup
}
...
@@ -23,14 +23,16 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
...
@@ -23,14 +23,16 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
private
val
mSpinner
=
new
AppCompatSpinner
(
mContext
)
private
val
mSpinner
=
new
AppCompatSpinner
(
mContext
)
private
var
mEntries
:
Array
[
CharSequence
]
=
_
private
var
mEntries
:
Array
[
CharSequence
]
=
_
private
var
mEntryValues
:
Array
[
CharSequence
]
=
_
private
var
mEntryValues
:
Array
[
CharSequence
]
=
_
private
var
mSelectedIndex
:
Int
=
_
private
var
mSelectedIndex
:
Int
=
-
1
private
var
mValueSet
:
Boolean
=
_
mSpinner
.
setVisibility
(
View
.
INVISIBLE
)
mSpinner
.
setVisibility
(
View
.
INVISIBLE
)
mSpinner
.
setAdapter
(
mAdapter
)
mSpinner
.
setAdapter
(
mAdapter
)
mSpinner
.
setOnItemSelectedListener
(
new
OnItemSelectedListener
{
mSpinner
.
setOnItemSelectedListener
(
new
OnItemSelectedListener
{
override
def
onNothingSelected
(
parent
:
AdapterView
[
_
])
{
}
def
onNothingSelected
(
parent
:
AdapterView
[
_
])
{
}
override
def
onItemSelected
(
parent
:
AdapterView
[
_
],
view
:
View
,
position
:
Int
,
id
:
Long
)
=
setValueIndex
(
position
)
def
onItemSelected
(
parent
:
AdapterView
[
_
],
view
:
View
,
position
:
Int
,
id
:
Long
)
=
{
val
value
=
getValue
(
position
)
if
(
position
!=
mSelectedIndex
&&
callChangeListener
(
value
))
setValue
(
position
,
value
)
}
})
})
setOnPreferenceClickListener
((
preference
:
Preference
)
=>
{
setOnPreferenceClickListener
((
preference
:
Preference
)
=>
{
// TODO: not working with scrolling
// TODO: not working with scrolling
...
@@ -39,8 +41,8 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
...
@@ -39,8 +41,8 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
true
true
})
})
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_
android_
entries
))
mEntryValues
=
a
.
getTextArray
(
R
.
styleable
.
DropDownPreference_entryValues
)
setEntryValues
(
a
.
getTextArray
(
R
.
styleable
.
DropDownPreference_android_entryValues
)
)
a
.
recycle
a
.
recycle
protected
override
def
getSummaryValue
=
getEntry
protected
override
def
getSummaryValue
=
getEntry
...
@@ -62,7 +64,7 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
...
@@ -62,7 +64,7 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
* @see #setEntries(CharSequence[])
* @see #setEntries(CharSequence[])
* @param entriesResId The entries array as a resource.
* @param entriesResId The entries array as a resource.
*/
*/
def
setEntries
(
entriesResId
:
Int
)
:
Unit
=
setEntries
(
getContext
.
getResources
.
getTextArray
(
entriesResId
))
def
setEntries
(
@ArrayRes
entriesResId
:
Int
)
:
Unit
=
setEntries
(
getContext
.
getResources
.
getTextArray
(
entriesResId
))
/**
/**
* The list of entries to be shown in the list in subsequent dialogs.
* The list of entries to be shown in the list in subsequent dialogs.
*
*
...
@@ -82,7 +84,7 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
...
@@ -82,7 +84,7 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
* @see #setEntryValues(CharSequence[])
* @see #setEntryValues(CharSequence[])
* @param entryValuesResId The entry values array as a resource.
* @param entryValuesResId The entry values array as a resource.
*/
*/
def
setEntryValues
(
entryValuesResId
:
Int
)
:
Unit
=
def
setEntryValues
(
@ArrayRes
entryValuesResId
:
Int
)
:
Unit
=
setEntryValues
(
getContext
.
getResources
.
getTextArray
(
entryValuesResId
))
setEntryValues
(
getContext
.
getResources
.
getTextArray
(
entryValuesResId
))
/**
/**
* Returns the array of values to be saved for the preference.
* Returns the array of values to be saved for the preference.
...
@@ -91,40 +93,26 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
...
@@ -91,40 +93,26 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
*/
*/
def
getEntryValues
:
Array
[
CharSequence
]
=
mEntryValues
def
getEntryValues
:
Array
[
CharSequence
]
=
mEntryValues
private
def
getValue
(
index
:
Int
)
=
(
if
(
mEntryValues
==
null
)
index
else
mEntryValues
(
index
)).
toString
/**
/**
* Sets the value of the key. This should be one of the entries in [[getEntryValues]].
* Sets the value of the key. This should be one of the entries in [[getEntryValues]].
*
*
* @param value The value to set for the key.
* @param value The value to set for the key.
*/
*/
def
setValue
(
value
:
String
)
{
def
setValue
(
value
:
String
)
:
Unit
=
setValue
(
findIndexOfValue
(
value
),
value
)
val
i
=
findIndexOfValue
(
value
)
if
(
i
>
-
1
)
setValueIndex
(
i
)
}
/**
/**
* Sets the value to the given index from the entry values.
* Sets the value to the given index from the entry values.
*
*
* Remember to callChangeListener() if this extends Preference directly
*
* https://github.com/android/platform_frameworks_base/blob/
* 4535e11fb7010f2b104d3f8b3954407b9f330e0f/core/java/
* android/preference/ListPreference.java#L282
*
* @param index The index of the value to set.
* @param index The index of the value to set.
*/
*/
def
setValueIndex
(
index
:
Int
)
{
def
setValueIndex
(
index
:
Int
)
=
setValue
(
index
,
getValue
(
index
))
val
changed
=
mSelectedIndex
!=
index
if
(
changed
||
!
mValueSet
)
{
private
def
setValue
(
index
:
Int
,
value
:
String
)
{
mSelectedIndex
=
index
mValueSet
=
true
if
(
mEntryValues
!=
null
)
{
val
value
=
mEntryValues
(
index
).
toString
if
(
changed
)
callChangeListener
(
value
)
persistString
(
value
)
persistString
(
value
)
}
mSelectedIndex
=
index
if
(
changed
)
notifyChanged
}
mSpinner
.
setSelection
(
index
)
mSpinner
.
setSelection
(
index
)
notifyChanged
}
}
/**
/**
...
...
src/main/scala/com/github/shadowsocks/preferences/NumberPickerPreference.scala
View file @
74a0e397
...
@@ -28,7 +28,7 @@ final class NumberPickerPreference(context: Context, attrs: AttributeSet = null)
...
@@ -28,7 +28,7 @@ final class NumberPickerPreference(context: Context, attrs: AttributeSet = null)
def
getMin
=
if
(
picker
==
null
)
0
else
picker
.
getMinValue
def
getMin
=
if
(
picker
==
null
)
0
else
picker
.
getMinValue
def
getMax
=
picker
.
getMaxValue
def
getMax
=
picker
.
getMaxValue
def
setValue
(
i
:
Int
)
{
def
setValue
(
i
:
Int
)
{
if
(
i
==
getValue
||
!
callChangeListener
(
i
)
)
return
if
(
i
==
getValue
)
return
picker
.
setValue
(
i
)
picker
.
setValue
(
i
)
value
=
picker
.
getValue
value
=
picker
.
getValue
persistInt
(
value
)
persistInt
(
value
)
...
@@ -49,7 +49,10 @@ final class NumberPickerPreference(context: Context, attrs: AttributeSet = null)
...
@@ -49,7 +49,10 @@ final class NumberPickerPreference(context: Context, attrs: AttributeSet = null)
override
protected
def
onDialogClosed
(
positiveResult
:
Boolean
)
{
override
protected
def
onDialogClosed
(
positiveResult
:
Boolean
)
{
picker
.
clearFocus
// commit changes
picker
.
clearFocus
// commit changes
super
.
onDialogClosed
(
positiveResult
)
// forward compatibility
super
.
onDialogClosed
(
positiveResult
)
// forward compatibility
if
(
positiveResult
)
setValue
(
picker
.
getValue
)
else
picker
.
setValue
(
value
)
if
(
positiveResult
)
{
val
value
=
picker
.
getValue
if
(
callChangeListener
(
value
))
setValue
(
value
)
}
else
picker
.
setValue
(
value
)
}
}
override
protected
def
onGetDefaultValue
(
a
:
TypedArray
,
index
:
Int
)
=
a
.
getInt
(
index
,
getMin
).
asInstanceOf
[
AnyRef
]
override
protected
def
onGetDefaultValue
(
a
:
TypedArray
,
index
:
Int
)
=
a
.
getInt
(
index
,
getMin
).
asInstanceOf
[
AnyRef
]
override
protected
def
onSetInitialValue
(
restorePersistedValue
:
Boolean
,
defaultValue
:
Any
)
{
override
protected
def
onSetInitialValue
(
restorePersistedValue
:
Boolean
,
defaultValue
:
Any
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment