SettingsFragment view binding, fixed code and add ext

This commit is contained in:
HaliksaR 2020-11-15 05:08:15 +07:00
parent 60b297adc1
commit e126878035
3 changed files with 138 additions and 108 deletions

View File

@ -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)
}

View File

@ -1,59 +1,86 @@
package com.vanced.manager.ui.fragments
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 androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import androidx.preference.PreferenceManager.*
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.google.firebase.perf.FirebasePerformance
import com.vanced.manager.R
import com.vanced.manager.adapter.GetNotifAdapter
import com.vanced.manager.core.ext.showDialogRefl
import com.vanced.manager.databinding.FragmentSettingsBinding
import com.vanced.manager.ui.core.BindingFragment
import com.vanced.manager.ui.dialogs.*
import com.vanced.manager.utils.LanguageHelper.getLanguageFormat
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()) }
override fun onCreateView(
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
) = FragmentSettingsBinding.inflate(inflater, container, false)
override fun otherSetups() {
setHasOptionsMenu(true)
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_settings, container, false)
return binding.root
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
private fun bindData() {
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())
adapter = GetNotifAdapter(requireActivity())
}
}
binding.firebase.setOnCheckedListener { _, isChecked ->
private fun FragmentSettingsBinding.bindFirebase() {
firebase.setOnCheckedListener { _, isChecked ->
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(isChecked)
FirebasePerformance.getInstance().isPerformanceCollectionEnabled = isChecked
FirebaseAnalytics.getInstance(requireActivity()).setAnalyticsCollectionEnabled(isChecked)
}
}
binding.managerVariant.apply {
private fun FragmentSettingsBinding.bindManagerVariant() {
managerVariant.apply {
prefs.getString("vanced_variant", "nonroot")?.let { setSummary(it) }
setOnClickListener {
ManagerVariantDialog().show(requireActivity().supportFragmentManager, "")
}
setOnClickListener { showDialogRefl<ManagerVariantDialog>() }
}
binding.clearFiles.setOnClickListener {
}
private fun FragmentSettingsBinding.bindClearFiles() {
clearFiles.setOnClickListener {
with(requireActivity()) {
listOf("vanced/nonroot", "vanced/root", "music/nonroot", "music/root", "microg").forEach { dir ->
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()
}
}
}
private fun FragmentSettingsBinding.bindManagerTheme() {
val themePref = prefs.getString("manager_theme", "System Default")
binding.managerTheme.apply {
managerTheme.apply {
setSummary(
when (themePref) {
"Light" -> getString(R.string.theme_light)
"Dark" -> getString(R.string.theme_dark)
else -> getString(R.string.system_default)
}
when (themePref) {
LIGHT -> getString(R.string.theme_light)
DARK -> getString(R.string.theme_dark)
else -> getString(R.string.system_default)
}
)
setOnClickListener {
ManagerThemeDialog().show(requireActivity().supportFragmentManager, "")
}
setOnClickListener { showDialogRefl<ManagerThemeDialog>() }
}
}
private fun FragmentSettingsBinding.bindManagerAccentColor() {
val accentPref = prefs.getString("manager_accent", "Blue")
binding.managerAccentColor.apply {
managerAccentColor.apply {
setSummary(
when (accentPref) {
"Blue" -> getString(R.string.accent_blue)
"Red" -> getString(R.string.accent_red)
"Green" -> getString(R.string.accent_green)
"Yellow" -> getString(R.string.accent_yellow)
else -> getString(R.string.accent_purple)
}
when (accentPref) {
BLUE -> getString(R.string.accent_blue)
RED -> getString(R.string.accent_red)
GREEN -> getString(R.string.accent_green)
YELLOW -> getString(R.string.accent_yellow)
else -> getString(R.string.accent_purple)
}
)
setOnClickListener {
ManagerAccentColorDialog().show(requireActivity().supportFragmentManager, "")
}
setOnClickListener { showDialogRefl<ManagerAccentColorDialog>() }
}
}
private fun FragmentSettingsBinding.bindManagerLanguage() {
val langPref = prefs.getString("manager_lang", "System Default")
binding.managerLanguage.apply {
setSummary(getLanguageFormat(requireActivity(), langPref!!))
setOnClickListener {
ManagerLanguageDialog().show(requireActivity().supportFragmentManager, "")
}
}
binding.selectApps.setOnClickListener {
SelectAppsDialog().show(requireActivity().supportFragmentManager, "")
managerLanguage.apply {
setSummary(getLanguageFormat(requireActivity(), requireNotNull(langPref)))
setOnClickListener { showDialogRefl<ManagerLanguageDialog>() }
}
}
@ -113,5 +136,4 @@ class SettingsFragment : Fragment() {
}
super.onCreateOptionsMenu(menu, inflater)
}
}

View File

@ -1,64 +1,63 @@
<?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"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
<LinearLayout
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_height="match_parent"
android:orientation="vertical"
android:paddingHorizontal="8dp"
android:paddingTop="16dp">
android:layout_height="wrap_content"
android:background="@drawable/category_background"
app:category_title="@string/category_behaviour">
<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_height="wrap_content"
android:background="@drawable/category_background"
app:category_title="@string/category_behaviour">
app:switch_def_value="true"
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
android:id="@+id/use_custom_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:switch_def_value="true"
app:switch_key="@{@string/use_custom_tabs}"
app:switch_summary="@string/link_custom_tabs"
app:switch_title="@string/link_title" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/notifications_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
tools:itemCount="3"
tools:listitem="@layout/view_preference_switch"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/notifications_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
tools:itemCount="3"
tools:listitem="@layout/view_preference_switch" />
<com.vanced.manager.ui.core.PreferenceSwitch
android:id="@+id/firebase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:switch_def_value="true"
app:switch_key="@{@string/firebase}"
app:switch_summary="@string/firebase_summary"
app:switch_title="@string/firebase_title"/>
<com.vanced.manager.ui.core.PreferenceSwitch
android:id="@+id/firebase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:switch_def_value="true"
app:switch_key="@{@string/firebase}"
app:switch_summary="@string/firebase_summary"
app:switch_title="@string/firebase_title" />
<com.vanced.manager.ui.core.EmptyPreference
android:id="@+id/manager_variant"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/variant"/>
<com.vanced.manager.ui.core.EmptyPreference
android:id="@+id/manager_variant"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/variant" />
<com.vanced.manager.ui.core.EmptyPreference
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.EmptyPreference
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"
@ -83,19 +82,13 @@
android:id="@+id/manager_language"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/language_title" />
app:preference_title="@string/language_title"/>
<com.vanced.manager.ui.core.EmptyPreference
android:id="@+id/select_apps"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/select_apps" />
app:preference_title="@string/select_apps"/>
</com.vanced.manager.ui.core.PreferenceCategory>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</layout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>