mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Make extension settings button inline
This commit is contained in:
		| @@ -15,6 +15,7 @@ import androidx.preference.Preference | ||||
| import androidx.preference.PreferenceGroupAdapter | ||||
| import androidx.preference.PreferenceManager | ||||
| import androidx.preference.PreferenceScreen | ||||
| import androidx.preference.SwitchPreferenceCompat | ||||
| import androidx.recyclerview.widget.DividerItemDecoration | ||||
| import androidx.recyclerview.widget.DividerItemDecoration.VERTICAL | ||||
| import androidx.recyclerview.widget.LinearLayoutManager | ||||
| @@ -29,12 +30,11 @@ import eu.kanade.tachiyomi.source.Source | ||||
| import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.NucleusController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| import eu.kanade.tachiyomi.util.preference.DSL | ||||
| import eu.kanade.tachiyomi.util.preference.onChange | ||||
| import eu.kanade.tachiyomi.util.preference.onClick | ||||
| import eu.kanade.tachiyomi.util.preference.preference | ||||
| import eu.kanade.tachiyomi.util.preference.preferenceCategory | ||||
| import eu.kanade.tachiyomi.util.preference.switchPreference | ||||
| import eu.kanade.tachiyomi.util.preference.titleRes | ||||
| import eu.kanade.tachiyomi.util.preference.switchSettingsPreference | ||||
| import eu.kanade.tachiyomi.util.system.LocaleHelper | ||||
| import eu.kanade.tachiyomi.util.view.visible | ||||
| import kotlinx.coroutines.flow.launchIn | ||||
| @@ -129,8 +129,7 @@ class ExtensionDetailsController(bundle: Bundle? = null) : | ||||
|                             .forEach { source -> | ||||
|                                 val sourcePrefs = mutableListOf<Preference>() | ||||
|  | ||||
|                                 // Source enable/disable | ||||
|                                 switchPreference { | ||||
|                                 val block: (@DSL SwitchPreferenceCompat).() -> Unit = { | ||||
|                                     key = getSourceKey(source.id) | ||||
|                                     title = if (isMultiSource) { | ||||
|                                         source.toString() | ||||
| @@ -156,14 +155,16 @@ class ExtensionDetailsController(bundle: Bundle? = null) : | ||||
|                                         .launchIn(scope) | ||||
|                                 } | ||||
|  | ||||
|                                 // Source preferences | ||||
|                                 // Source enable/disable | ||||
|                                 if (source is ConfigurableSource) { | ||||
|                                     preference { | ||||
|                                         titleRes = R.string.label_settings | ||||
|                                         onClick { | ||||
|                                     switchSettingsPreference { | ||||
|                                         block() | ||||
|                                         onSettingsClick = View.OnClickListener { | ||||
|                                             router.pushController(SourcePreferencesController(source.id).withFadeTransaction()) | ||||
|                                         } | ||||
|                                     } | ||||
|                                 } else { | ||||
|                                     switchPreference(block) | ||||
|                                 } | ||||
|                             } | ||||
|                     } | ||||
|   | ||||
| @@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.util.system.getResourceColor | ||||
| import eu.kanade.tachiyomi.widget.preference.IntListPreference | ||||
| import eu.kanade.tachiyomi.widget.preference.SwitchPreferenceCategory | ||||
| import eu.kanade.tachiyomi.widget.preference.SwitchSettingsPreference | ||||
|  | ||||
| @DslMarker | ||||
| @Target(AnnotationTarget.TYPE) | ||||
| @@ -51,6 +52,10 @@ inline fun PreferenceGroup.switchPreferenceCategory(block: (@DSL SwitchPreferenc | ||||
|     return initThenAdd(SwitchPreferenceCategory(context), block) | ||||
| } | ||||
|  | ||||
| inline fun PreferenceGroup.switchSettingsPreference(block: (@DSL SwitchSettingsPreference).() -> Unit): SwitchSettingsPreference { | ||||
|     return initThenAdd(SwitchSettingsPreference(context), block) | ||||
| } | ||||
|  | ||||
| inline fun PreferenceGroup.checkBoxPreference(block: (@DSL CheckBoxPreference).() -> Unit): CheckBoxPreference { | ||||
|     return initThenAdd(CheckBoxPreference(context), block) | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,27 @@ | ||||
| package eu.kanade.tachiyomi.widget.preference | ||||
|  | ||||
| import android.content.Context | ||||
| import android.util.AttributeSet | ||||
| import android.view.View | ||||
| import androidx.preference.PreferenceViewHolder | ||||
| import androidx.preference.SwitchPreferenceCompat | ||||
| import eu.kanade.tachiyomi.R | ||||
| import kotlinx.android.synthetic.main.pref_settings.view.button | ||||
|  | ||||
| class SwitchSettingsPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : | ||||
|     SwitchPreferenceCompat(context, attrs) { | ||||
|  | ||||
|     var onSettingsClick: View.OnClickListener? = null | ||||
|  | ||||
|     init { | ||||
|         widgetLayoutResource = R.layout.pref_settings | ||||
|     } | ||||
|  | ||||
|     override fun onBindViewHolder(holder: PreferenceViewHolder) { | ||||
|         super.onBindViewHolder(holder) | ||||
|  | ||||
|         holder.itemView.button.setOnClickListener { | ||||
|             onSettingsClick?.onClick(it) | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user