SettingsFragment view binding, fixed code and add ext
This commit is contained in:
parent
60b297adc1
commit
e126878035
|
@ -0,0 +1,15 @@
|
||||||
|
package com.vanced.manager.core.ext
|
||||||
|
|
||||||
|
import androidx.fragment.app.DialogFragment
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import kotlin.reflect.full.createInstance
|
||||||
|
|
||||||
|
fun Fragment.requireSupportFM() = requireActivity().supportFragmentManager
|
||||||
|
|
||||||
|
inline fun <reified D : DialogFragment> Fragment.showDialogRefl() {
|
||||||
|
D::class.createInstance().show(requireSupportFM(), D::class.simpleName)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <D : DialogFragment> Fragment.showDialog(dialog: D) {
|
||||||
|
dialog.show(requireSupportFM(), dialog::class.simpleName)
|
||||||
|
}
|
|
@ -1,59 +1,86 @@
|
||||||
package com.vanced.manager.ui.fragments
|
package com.vanced.manager.ui.fragments
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.*
|
import android.view.LayoutInflater
|
||||||
|
import android.view.Menu
|
||||||
|
import android.view.MenuInflater
|
||||||
|
import android.view.ViewGroup
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.preference.PreferenceManager.*
|
||||||
import androidx.fragment.app.Fragment
|
|
||||||
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.google.firebase.analytics.FirebaseAnalytics
|
import com.google.firebase.analytics.FirebaseAnalytics
|
||||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
import com.google.firebase.perf.FirebasePerformance
|
import com.google.firebase.perf.FirebasePerformance
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.adapter.GetNotifAdapter
|
import com.vanced.manager.adapter.GetNotifAdapter
|
||||||
|
import com.vanced.manager.core.ext.showDialogRefl
|
||||||
import com.vanced.manager.databinding.FragmentSettingsBinding
|
import com.vanced.manager.databinding.FragmentSettingsBinding
|
||||||
|
import com.vanced.manager.ui.core.BindingFragment
|
||||||
import com.vanced.manager.ui.dialogs.*
|
import com.vanced.manager.ui.dialogs.*
|
||||||
import com.vanced.manager.utils.LanguageHelper.getLanguageFormat
|
import com.vanced.manager.utils.LanguageHelper.getLanguageFormat
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class SettingsFragment : Fragment() {
|
class SettingsFragment : BindingFragment<FragmentSettingsBinding>() {
|
||||||
|
|
||||||
|
private companion object {
|
||||||
|
|
||||||
|
const val LIGHT = "Light"
|
||||||
|
const val DARK = "Dark"
|
||||||
|
const val BLUE = "Blue"
|
||||||
|
const val RED = "Red"
|
||||||
|
const val GREEN = "Green"
|
||||||
|
const val YELLOW = "Yellow"
|
||||||
|
}
|
||||||
|
|
||||||
private lateinit var binding: FragmentSettingsBinding
|
|
||||||
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
|
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun binding(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
) = FragmentSettingsBinding.inflate(inflater, container, false)
|
||||||
|
|
||||||
|
override fun otherSetups() {
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_settings, container, false)
|
bindData()
|
||||||
return binding.root
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
private fun bindData() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
with(binding) {
|
||||||
|
bindRecycler()
|
||||||
|
bindFirebase()
|
||||||
|
bindManagerVariant()
|
||||||
|
bindClearFiles()
|
||||||
|
bindManagerTheme()
|
||||||
|
bindManagerAccentColor()
|
||||||
|
bindManagerLanguage()
|
||||||
|
selectApps.setOnClickListener { showDialogRefl<SelectAppsDialog>() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
binding.notificationsRecycler.apply {
|
private fun FragmentSettingsBinding.bindRecycler() {
|
||||||
|
notificationsRecycler.apply {
|
||||||
layoutManager = LinearLayoutManager(requireActivity())
|
layoutManager = LinearLayoutManager(requireActivity())
|
||||||
adapter = GetNotifAdapter(requireActivity())
|
adapter = GetNotifAdapter(requireActivity())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
binding.firebase.setOnCheckedListener { _, isChecked ->
|
private fun FragmentSettingsBinding.bindFirebase() {
|
||||||
|
firebase.setOnCheckedListener { _, isChecked ->
|
||||||
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(isChecked)
|
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(isChecked)
|
||||||
FirebasePerformance.getInstance().isPerformanceCollectionEnabled = isChecked
|
FirebasePerformance.getInstance().isPerformanceCollectionEnabled = isChecked
|
||||||
FirebaseAnalytics.getInstance(requireActivity()).setAnalyticsCollectionEnabled(isChecked)
|
FirebaseAnalytics.getInstance(requireActivity()).setAnalyticsCollectionEnabled(isChecked)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
binding.managerVariant.apply {
|
private fun FragmentSettingsBinding.bindManagerVariant() {
|
||||||
|
managerVariant.apply {
|
||||||
prefs.getString("vanced_variant", "nonroot")?.let { setSummary(it) }
|
prefs.getString("vanced_variant", "nonroot")?.let { setSummary(it) }
|
||||||
setOnClickListener {
|
setOnClickListener { showDialogRefl<ManagerVariantDialog>() }
|
||||||
ManagerVariantDialog().show(requireActivity().supportFragmentManager, "")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
binding.clearFiles.setOnClickListener {
|
private fun FragmentSettingsBinding.bindClearFiles() {
|
||||||
|
clearFiles.setOnClickListener {
|
||||||
with(requireActivity()) {
|
with(requireActivity()) {
|
||||||
listOf("vanced/nonroot", "vanced/root", "music/nonroot", "music/root", "microg").forEach { dir ->
|
listOf("vanced/nonroot", "vanced/root", "music/nonroot", "music/root", "microg").forEach { dir ->
|
||||||
File(getExternalFilesDir(dir)?.path.toString()).deleteRecursively()
|
File(getExternalFilesDir(dir)?.path.toString()).deleteRecursively()
|
||||||
|
@ -61,47 +88,43 @@ class SettingsFragment : Fragment() {
|
||||||
Toast.makeText(this, getString(R.string.cleared_files), Toast.LENGTH_SHORT).show()
|
Toast.makeText(this, getString(R.string.cleared_files), Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun FragmentSettingsBinding.bindManagerTheme() {
|
||||||
val themePref = prefs.getString("manager_theme", "System Default")
|
val themePref = prefs.getString("manager_theme", "System Default")
|
||||||
binding.managerTheme.apply {
|
managerTheme.apply {
|
||||||
setSummary(
|
setSummary(
|
||||||
when (themePref) {
|
when (themePref) {
|
||||||
"Light" -> getString(R.string.theme_light)
|
LIGHT -> getString(R.string.theme_light)
|
||||||
"Dark" -> getString(R.string.theme_dark)
|
DARK -> getString(R.string.theme_dark)
|
||||||
else -> getString(R.string.system_default)
|
else -> getString(R.string.system_default)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
setOnClickListener {
|
setOnClickListener { showDialogRefl<ManagerThemeDialog>() }
|
||||||
ManagerThemeDialog().show(requireActivity().supportFragmentManager, "")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun FragmentSettingsBinding.bindManagerAccentColor() {
|
||||||
val accentPref = prefs.getString("manager_accent", "Blue")
|
val accentPref = prefs.getString("manager_accent", "Blue")
|
||||||
binding.managerAccentColor.apply {
|
managerAccentColor.apply {
|
||||||
setSummary(
|
setSummary(
|
||||||
when (accentPref) {
|
when (accentPref) {
|
||||||
"Blue" -> getString(R.string.accent_blue)
|
BLUE -> getString(R.string.accent_blue)
|
||||||
"Red" -> getString(R.string.accent_red)
|
RED -> getString(R.string.accent_red)
|
||||||
"Green" -> getString(R.string.accent_green)
|
GREEN -> getString(R.string.accent_green)
|
||||||
"Yellow" -> getString(R.string.accent_yellow)
|
YELLOW -> getString(R.string.accent_yellow)
|
||||||
else -> getString(R.string.accent_purple)
|
else -> getString(R.string.accent_purple)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
setOnClickListener {
|
setOnClickListener { showDialogRefl<ManagerAccentColorDialog>() }
|
||||||
ManagerAccentColorDialog().show(requireActivity().supportFragmentManager, "")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun FragmentSettingsBinding.bindManagerLanguage() {
|
||||||
val langPref = prefs.getString("manager_lang", "System Default")
|
val langPref = prefs.getString("manager_lang", "System Default")
|
||||||
binding.managerLanguage.apply {
|
managerLanguage.apply {
|
||||||
setSummary(getLanguageFormat(requireActivity(), langPref!!))
|
setSummary(getLanguageFormat(requireActivity(), requireNotNull(langPref)))
|
||||||
setOnClickListener {
|
setOnClickListener { showDialogRefl<ManagerLanguageDialog>() }
|
||||||
ManagerLanguageDialog().show(requireActivity().supportFragmentManager, "")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.selectApps.setOnClickListener {
|
|
||||||
SelectAppsDialog().show(requireActivity().supportFragmentManager, "")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -113,5 +136,4 @@ class SettingsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
super.onCreateOptionsMenu(menu, inflater)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,64 +1,63 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout>
|
<androidx.core.widget.NestedScrollView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingHorizontal="8dp"
|
||||||
|
android:paddingTop="16dp">
|
||||||
|
|
||||||
<LinearLayout
|
<com.vanced.manager.ui.core.PreferenceCategory
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:background="@drawable/category_background"
|
||||||
android:paddingHorizontal="8dp"
|
app:category_title="@string/category_behaviour">
|
||||||
android:paddingTop="16dp">
|
|
||||||
|
|
||||||
<com.vanced.manager.ui.core.PreferenceCategory
|
<com.vanced.manager.ui.core.PreferenceSwitch
|
||||||
|
android:id="@+id/use_custom_tabs"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/category_background"
|
app:switch_def_value="true"
|
||||||
app:category_title="@string/category_behaviour">
|
app:switch_key="@{@string/use_custom_tabs}"
|
||||||
|
app:switch_summary="@string/link_custom_tabs"
|
||||||
|
app:switch_title="@string/link_title"/>
|
||||||
|
|
||||||
<com.vanced.manager.ui.core.PreferenceSwitch
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/use_custom_tabs"
|
android:id="@+id/notifications_recycler"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:switch_def_value="true"
|
android:nestedScrollingEnabled="false"
|
||||||
app:switch_key="@{@string/use_custom_tabs}"
|
tools:itemCount="3"
|
||||||
app:switch_summary="@string/link_custom_tabs"
|
tools:listitem="@layout/view_preference_switch"/>
|
||||||
app:switch_title="@string/link_title" />
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<com.vanced.manager.ui.core.PreferenceSwitch
|
||||||
android:id="@+id/notifications_recycler"
|
android:id="@+id/firebase"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:nestedScrollingEnabled="false"
|
app:switch_def_value="true"
|
||||||
tools:itemCount="3"
|
app:switch_key="@{@string/firebase}"
|
||||||
tools:listitem="@layout/view_preference_switch" />
|
app:switch_summary="@string/firebase_summary"
|
||||||
|
app:switch_title="@string/firebase_title"/>
|
||||||
|
|
||||||
<com.vanced.manager.ui.core.PreferenceSwitch
|
<com.vanced.manager.ui.core.EmptyPreference
|
||||||
android:id="@+id/firebase"
|
android:id="@+id/manager_variant"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:switch_def_value="true"
|
app:preference_title="@string/variant"/>
|
||||||
app:switch_key="@{@string/firebase}"
|
|
||||||
app:switch_summary="@string/firebase_summary"
|
|
||||||
app:switch_title="@string/firebase_title" />
|
|
||||||
|
|
||||||
<com.vanced.manager.ui.core.EmptyPreference
|
<com.vanced.manager.ui.core.EmptyPreference
|
||||||
android:id="@+id/manager_variant"
|
android:id="@+id/clearFiles"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:preference_title="@string/variant" />
|
app:preference_title="@string/clear_files"/>
|
||||||
|
|
||||||
<com.vanced.manager.ui.core.EmptyPreference
|
</com.vanced.manager.ui.core.PreferenceCategory>
|
||||||
android:id="@+id/clearFiles"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:preference_title="@string/clear_files" />
|
|
||||||
|
|
||||||
</com.vanced.manager.ui.core.PreferenceCategory>
|
|
||||||
|
|
||||||
<com.vanced.manager.ui.core.PreferenceCategory
|
<com.vanced.manager.ui.core.PreferenceCategory
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -83,19 +82,13 @@
|
||||||
android:id="@+id/manager_language"
|
android:id="@+id/manager_language"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:preference_title="@string/language_title" />
|
app:preference_title="@string/language_title"/>
|
||||||
|
|
||||||
<com.vanced.manager.ui.core.EmptyPreference
|
<com.vanced.manager.ui.core.EmptyPreference
|
||||||
android:id="@+id/select_apps"
|
android:id="@+id/select_apps"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:preference_title="@string/select_apps" />
|
app:preference_title="@string/select_apps"/>
|
||||||
|
|
||||||
</com.vanced.manager.ui.core.PreferenceCategory>
|
</com.vanced.manager.ui.core.PreferenceCategory>
|
||||||
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
</androidx.core.widget.NestedScrollView>
|
|
||||||
|
|
||||||
|
|
||||||
</layout>
|
|
||||||
|
|
Loading…
Reference in New Issue