Files
QieKan-3.0/app/src/main/java/io/legado/app/utils/FragmentExtensions.kt
T

86 lines
3.2 KiB
Kotlin

@file:Suppress("unused")
package io.legado.app.utils
import android.app.Activity
import android.content.Intent
import android.content.res.ColorStateList
import android.graphics.drawable.Drawable
import android.os.Bundle
import androidx.annotation.ColorRes
import androidx.annotation.DrawableRes
import androidx.core.content.edit
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import io.legado.app.R
import io.legado.app.ui.widget.dialog.TextDialog
inline fun <reified T : DialogFragment> Fragment.showDialogFragment(
arguments: Bundle.() -> Unit = {}
) {
@Suppress("DEPRECATION")
val dialog = T::class.java.newInstance()
val bundle = Bundle()
bundle.apply(arguments)
dialog.arguments = bundle
dialog.show(childFragmentManager, T::class.simpleName)
}
fun Fragment.showDialogFragment(dialogFragment: DialogFragment) {
dialogFragment.show(childFragmentManager, dialogFragment::class.simpleName)
}
fun Fragment.getPrefBoolean(key: String, defValue: Boolean = false) =
requireContext().defaultSharedPreferences.getBoolean(key, defValue)
fun Fragment.putPrefBoolean(key: String, value: Boolean = false) =
requireContext().defaultSharedPreferences.edit { putBoolean(key, value) }
fun Fragment.getPrefInt(key: String, defValue: Int = 0) =
requireContext().defaultSharedPreferences.getInt(key, defValue)
fun Fragment.putPrefInt(key: String, value: Int) =
requireContext().defaultSharedPreferences.edit { putInt(key, value) }
fun Fragment.getPrefLong(key: String, defValue: Long = 0L) =
requireContext().defaultSharedPreferences.getLong(key, defValue)
fun Fragment.putPrefLong(key: String, value: Long) =
requireContext().defaultSharedPreferences.edit { putLong(key, value) }
fun Fragment.getPrefString(key: String, defValue: String? = null) =
requireContext().defaultSharedPreferences.getString(key, defValue)
fun Fragment.putPrefString(key: String, value: String) =
requireContext().defaultSharedPreferences.edit { putString(key, value) }
fun Fragment.getPrefStringSet(
key: String,
defValue: MutableSet<String>? = null
): MutableSet<String>? =
requireContext().defaultSharedPreferences.getStringSet(key, defValue)
fun Fragment.putPrefStringSet(key: String, value: MutableSet<String>) =
requireContext().defaultSharedPreferences.edit { putStringSet(key, value) }
fun Fragment.removePref(key: String) =
requireContext().defaultSharedPreferences.edit { remove(key) }
fun Fragment.getCompatColor(@ColorRes id: Int): Int = requireContext().getCompatColor(id)
fun Fragment.getCompatDrawable(@DrawableRes id: Int): Drawable? =
requireContext().getCompatDrawable(id)
fun Fragment.getCompatColorStateList(@ColorRes id: Int): ColorStateList? =
requireContext().getCompatColorStateList(id)
inline fun <reified T : Activity> Fragment.startActivity(
configIntent: Intent.() -> Unit = {}
) {
startActivity(Intent(requireContext(), T::class.java).apply(configIntent))
}
fun Fragment.showHelp(fileName: String) {
val mdText = String(requireContext().assets.open("web/help/md/${fileName}.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), mdText, TextDialog.Mode.MD))
}