|
@@ -65,8 +65,7 @@ class SourcePreferencesScreen(val sourceId: Long) : Screen() {
|
|
|
.fillMaxSize()
|
|
|
.padding(contentPadding),
|
|
|
) {
|
|
|
- val fragment = SourcePreferencesFragment.getInstance(sourceId)
|
|
|
- add(it, fragment, null)
|
|
|
+ add(it, SourcePreferencesFragment.getInstance(sourceId), null)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -127,26 +126,28 @@ class SourcePreferencesFragment : PreferenceFragmentCompat() {
|
|
|
|
|
|
private fun populateScreen(): PreferenceScreen {
|
|
|
val sourceId = requireArguments().getLong(SOURCE_ID)
|
|
|
- val source = Injekt.get<SourceManager>().get(sourceId)!! as ConfigurableSource
|
|
|
+ val source = Injekt.get<SourceManager>().getOrStub(sourceId)
|
|
|
+ val sourceScreen = preferenceManager.createPreferenceScreen(requireContext())
|
|
|
|
|
|
- val dataStore = SharedPreferencesDataStore(source.sourcePreferences())
|
|
|
- preferenceManager.preferenceDataStore = dataStore
|
|
|
+ if (source is ConfigurableSource) {
|
|
|
+ val dataStore = SharedPreferencesDataStore(source.sourcePreferences())
|
|
|
+ preferenceManager.preferenceDataStore = dataStore
|
|
|
|
|
|
- val sourceScreen = preferenceManager.createPreferenceScreen(requireContext())
|
|
|
- source.setupPreferenceScreen(sourceScreen)
|
|
|
- sourceScreen.forEach { pref ->
|
|
|
- pref.isIconSpaceReserved = false
|
|
|
- pref.isSingleLineTitle = false
|
|
|
- if (pref is DialogPreference && pref.dialogTitle.isNullOrEmpty()) {
|
|
|
- pref.dialogTitle = pref.title
|
|
|
- }
|
|
|
+ source.setupPreferenceScreen(sourceScreen)
|
|
|
+ sourceScreen.forEach { pref ->
|
|
|
+ pref.isIconSpaceReserved = false
|
|
|
+ pref.isSingleLineTitle = false
|
|
|
+ if (pref is DialogPreference && pref.dialogTitle.isNullOrEmpty()) {
|
|
|
+ pref.dialogTitle = pref.title
|
|
|
+ }
|
|
|
|
|
|
- // Apply incognito IME for EditTextPreference
|
|
|
- if (pref is EditTextPreference) {
|
|
|
- val setListener = pref.getOnBindEditTextListener()
|
|
|
- pref.setOnBindEditTextListener {
|
|
|
- setListener?.onBindEditText(it)
|
|
|
- it.setIncognito(lifecycleScope)
|
|
|
+ // Apply incognito IME for EditTextPreference
|
|
|
+ if (pref is EditTextPreference) {
|
|
|
+ val setListener = pref.getOnBindEditTextListener()
|
|
|
+ pref.setOnBindEditTextListener {
|
|
|
+ setListener?.onBindEditText(it)
|
|
|
+ it.setIncognito(lifecycleScope)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -158,9 +159,9 @@ class SourcePreferencesFragment : PreferenceFragmentCompat() {
|
|
|
private const val SOURCE_ID = "source_id"
|
|
|
|
|
|
fun getInstance(sourceId: Long): SourcePreferencesFragment {
|
|
|
- val fragment = SourcePreferencesFragment()
|
|
|
- fragment.arguments = bundleOf(SOURCE_ID to sourceId)
|
|
|
- return fragment
|
|
|
+ return SourcePreferencesFragment().apply {
|
|
|
+ arguments = bundleOf(SOURCE_ID to sourceId)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|