VancedManager/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt

139 lines
5.1 KiB
Kotlin
Raw Normal View History

package com.vanced.manager.ui.fragments
import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.ViewGroup
2020-08-06 07:46:07 +00:00
import android.widget.Toast
2020-11-15 17:04:23 +00:00
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
2020-10-31 19:45:39 +00:00
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
2020-10-31 19:45:39 +00:00
import com.vanced.manager.adapter.GetNotifAdapter
import com.vanced.manager.core.ui.base.BindingFragment
import com.vanced.manager.core.ui.ext.showDialog
2020-10-31 19:45:39 +00:00
import com.vanced.manager.databinding.FragmentSettingsBinding
import com.vanced.manager.ui.dialogs.*
2020-09-26 17:09:01 +00:00
import com.vanced.manager.utils.LanguageHelper.getLanguageFormat
import java.io.File
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"
}
2020-10-31 19:45:39 +00:00
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun binding(
2020-10-31 19:45:39 +00:00
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = FragmentSettingsBinding.inflate(inflater, container, false)
override fun otherSetups() {
setHasOptionsMenu(true)
bindData()
2020-10-31 19:45:39 +00:00
}
private fun bindData() {
with(binding) {
bindRecycler()
bindFirebase()
bindManagerVariant()
bindClearFiles()
bindManagerTheme()
bindManagerAccentColor()
bindManagerLanguage()
selectApps.setOnClickListener { showDialog(SelectAppsDialog()) }
}
}
2020-08-06 07:46:07 +00:00
private fun FragmentSettingsBinding.bindRecycler() {
notificationsRecycler.apply {
2020-10-31 19:45:39 +00:00
layoutManager = LinearLayoutManager(requireActivity())
adapter = GetNotifAdapter(requireActivity())
2020-08-06 07:46:07 +00:00
}
}
2020-08-06 07:46:07 +00:00
private fun FragmentSettingsBinding.bindFirebase() {
firebase.setOnCheckedListener { _, isChecked ->
2020-10-31 19:45:39 +00:00
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(isChecked)
FirebasePerformance.getInstance().isPerformanceCollectionEnabled = isChecked
FirebaseAnalytics.getInstance(requireActivity()).setAnalyticsCollectionEnabled(isChecked)
2020-08-06 07:46:07 +00:00
}
}
2020-08-06 07:46:07 +00:00
private fun FragmentSettingsBinding.bindManagerVariant() {
managerVariant.apply {
2020-10-31 21:10:55 +00:00
prefs.getString("vanced_variant", "nonroot")?.let { setSummary(it) }
setOnClickListener { showDialog(ManagerVariantDialog()) }
}
}
private fun FragmentSettingsBinding.bindClearFiles() {
clearFiles.setOnClickListener {
2020-10-31 19:45:39 +00:00
with(requireActivity()) {
2020-10-31 21:10:55 +00:00
listOf("vanced/nonroot", "vanced/root", "music/nonroot", "music/root", "microg").forEach { dir ->
File(getExternalFilesDir(dir)?.path.toString()).deleteRecursively()
2020-08-06 07:46:07 +00:00
}
2020-10-31 19:45:39 +00:00
Toast.makeText(this, getString(R.string.cleared_files), Toast.LENGTH_SHORT).show()
2020-07-02 21:09:21 +00:00
}
2020-05-03 21:51:39 +00:00
}
}
2020-05-03 21:51:39 +00:00
private fun FragmentSettingsBinding.bindManagerTheme() {
2020-10-31 19:45:39 +00:00
val themePref = prefs.getString("manager_theme", "System Default")
managerTheme.apply {
2020-10-31 19:45:39 +00:00
setSummary(
when (themePref) {
LIGHT -> getString(R.string.theme_light)
DARK -> getString(R.string.theme_dark)
else -> getString(R.string.system_default)
}
2020-10-31 19:45:39 +00:00
)
setOnClickListener { showDialog(ManagerThemeDialog()) }
}
}
private fun FragmentSettingsBinding.bindManagerAccentColor() {
2020-10-31 19:45:39 +00:00
val accentPref = prefs.getString("manager_accent", "Blue")
managerAccentColor.apply {
2020-10-31 19:45:39 +00:00
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)
}
2020-10-31 19:45:39 +00:00
)
setOnClickListener { showDialog(ManagerAccentColorDialog()) }
2020-09-26 17:09:01 +00:00
}
}
2020-09-26 17:09:01 +00:00
private fun FragmentSettingsBinding.bindManagerLanguage() {
2020-10-31 19:45:39 +00:00
val langPref = prefs.getString("manager_lang", "System Default")
managerLanguage.apply {
setSummary(getLanguageFormat(requireActivity(), requireNotNull(langPref)))
setOnClickListener { showDialog(ManagerLanguageDialog()) }
2020-08-07 07:07:49 +00:00
}
2020-09-19 08:21:48 +00:00
}
2020-05-03 11:14:09 +00:00
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
2020-10-31 19:45:39 +00:00
val devSettings = getDefaultSharedPreferences(requireActivity()).getBoolean("devSettings", false)
if (devSettings) {
inflater.inflate(R.menu.dev_settings_menu, menu)
}
super.onCreateOptionsMenu(menu, inflater)
}
}