mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Use Material Dialogs for auto-download categories preference
To allow for negative selections in the future.
This commit is contained in:
		| @@ -10,6 +10,7 @@ import androidx.core.content.ContextCompat | ||||
| import androidx.core.net.toUri | ||||
| import androidx.preference.PreferenceScreen | ||||
| import com.afollestad.materialdialogs.MaterialDialog | ||||
| import com.afollestad.materialdialogs.list.listItemsMultiChoice | ||||
| import com.afollestad.materialdialogs.list.listItemsSingleChoice | ||||
| import com.hippo.unifile.UniFile | ||||
| import eu.kanade.tachiyomi.R | ||||
| @@ -21,7 +22,6 @@ import eu.kanade.tachiyomi.ui.base.controller.DialogController | ||||
| import eu.kanade.tachiyomi.util.preference.defaultValue | ||||
| import eu.kanade.tachiyomi.util.preference.entriesRes | ||||
| import eu.kanade.tachiyomi.util.preference.intListPreference | ||||
| import eu.kanade.tachiyomi.util.preference.multiSelectListPreference | ||||
| import eu.kanade.tachiyomi.util.preference.onClick | ||||
| import eu.kanade.tachiyomi.util.preference.preference | ||||
| import eu.kanade.tachiyomi.util.preference.preferenceCategory | ||||
| @@ -105,11 +105,12 @@ class SettingsDownloadController : SettingsController() { | ||||
|                 titleRes = R.string.pref_download_new | ||||
|                 defaultValue = false | ||||
|             } | ||||
|             multiSelectListPreference { | ||||
|             preference { | ||||
|                 key = Keys.downloadNewCategories | ||||
|                 titleRes = R.string.pref_download_new_categories | ||||
|                 entries = categories.map { it.name }.toTypedArray() | ||||
|                 entryValues = categories.map { it.id.toString() }.toTypedArray() | ||||
|                 onClick { | ||||
|                     DownloadCategoriesDialog().showDialog(router) | ||||
|                 } | ||||
|  | ||||
|                 preferences.downloadNew().asImmediateFlow { isVisible = it } | ||||
|                     .launchIn(viewScope) | ||||
| @@ -198,6 +199,36 @@ class SettingsDownloadController : SettingsController() { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     class DownloadCategoriesDialog : DialogController() { | ||||
|  | ||||
|         private val preferences: PreferencesHelper = Injekt.get() | ||||
|         private val db: DatabaseHelper = Injekt.get() | ||||
|  | ||||
|         override fun onCreateDialog(savedViewState: Bundle?): Dialog { | ||||
|             val dbCategories = db.getCategories().executeAsBlocking() | ||||
|             val categories = listOf(Category.createDefault()) + dbCategories | ||||
|  | ||||
|             val items = categories.map { it.name } | ||||
|             val preselected = categories | ||||
|                 .filter { it.id.toString() in preferences.downloadNewCategories().get() } | ||||
|                 .map { categories.indexOf(it) } | ||||
|                 .toIntArray() | ||||
|  | ||||
|             return MaterialDialog(activity!!) | ||||
|                 .title(R.string.pref_download_new_categories) | ||||
|                 .listItemsMultiChoice( | ||||
|                     items = items, | ||||
|                     initialSelection = preselected, | ||||
|                     allowEmptySelection = true | ||||
|                 ) { _, selections, _ -> | ||||
|                     val newCategories = selections.map { categories[it] } | ||||
|                     preferences.downloadNewCategories().set(newCategories.map { it.id.toString() }.toSet()) | ||||
|                 } | ||||
|                 .positiveButton(android.R.string.ok) | ||||
|                 .negativeButton(android.R.string.cancel) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private companion object { | ||||
|         const val DOWNLOAD_DIR = 104 | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user