Skip to content

Commit d136892

Browse files
committed
Disallow new-lines in device labels
1 parent c102cdd commit d136892

File tree

3 files changed

+43
-3
lines changed

3 files changed

+43
-3
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package eu.darken.octi.common.preferences
2+
3+
import android.content.Context
4+
import android.text.InputFilter
5+
import android.util.AttributeSet
6+
import android.view.inputmethod.EditorInfo
7+
import androidx.preference.EditTextPreference
8+
9+
class CleanInputEditTextPreference @JvmOverloads constructor(
10+
context: Context,
11+
attrs: AttributeSet? = null,
12+
defStyleAttr: Int = androidx.preference.R.attr.editTextPreferenceStyle
13+
) : EditTextPreference(context, attrs, defStyleAttr) {
14+
15+
init {
16+
setOnBindEditTextListener { editText ->
17+
editText.apply {
18+
isSingleLine = true
19+
maxLines = 1
20+
imeOptions = EditorInfo.IME_ACTION_DONE
21+
filters = arrayOf(
22+
InputFilter { source, start, end, dest, dstart, dend ->
23+
for (i in start until end) {
24+
if (source[i] == '\n' || source[i] == '\r') {
25+
return@InputFilter ""
26+
}
27+
}
28+
null
29+
}
30+
)
31+
}
32+
}
33+
}
34+
35+
override fun persistString(value: String?): Boolean {
36+
val trimmedValue = value?.trim()
37+
return super.persistString(trimmedValue)
38+
}
39+
}

app/src/main/java/eu/darken/octi/sync/ui/settings/SyncSettingsFragment.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.preference.Preference
99
import dagger.hilt.android.AndroidEntryPoint
1010
import eu.darken.octi.R
1111
import eu.darken.octi.common.uix.PreferenceFragment3
12+
import eu.darken.octi.sync.core.SyncSettings
1213
import javax.inject.Inject
1314

1415
@Keep
@@ -17,8 +18,8 @@ class SyncSettingsFragment : PreferenceFragment3() {
1718

1819
override val vm: SyncSettingsVM by viewModels()
1920

20-
@Inject lateinit var _syncSettings: eu.darken.octi.sync.core.SyncSettings
21-
override val settings: eu.darken.octi.sync.core.SyncSettings by lazy { _syncSettings }
21+
@Inject lateinit var _syncSettings: SyncSettings
22+
override val settings: SyncSettings by lazy { _syncSettings }
2223
override val preferenceFile: Int = R.xml.preferences_sync
2324

2425
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

app/src/main/res/xml/preferences_sync.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:app="http://schemas.android.com/apk/res-auto">
44

5-
<EditTextPreference
5+
<eu.darken.octi.common.preferences.CleanInputEditTextPreference
66
android:dialogMessage="@string/sync_setting_devicelabel_hint"
77
android:icon="@drawable/ic_changelog_onsurface"
88
android:key="sync.device.self.label"

0 commit comments

Comments
 (0)