Simple-Launcher/app/src/main/kotlin/com/simplemobiletools/launcher/activities/SettingsActivity.kt

204 lines
8.1 KiB
Kotlin

package com.simplemobiletools.launcher.activities
import android.content.Intent
import android.os.Bundle
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.NavigationIcon
import com.simplemobiletools.commons.helpers.isTiramisuPlus
import com.simplemobiletools.commons.models.FAQItem
import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.launcher.BuildConfig
import com.simplemobiletools.launcher.R
import com.simplemobiletools.launcher.databinding.ActivitySettingsBinding
import com.simplemobiletools.launcher.extensions.config
import com.simplemobiletools.launcher.helpers.MAX_COLUMN_COUNT
import com.simplemobiletools.launcher.helpers.MAX_ROW_COUNT
import com.simplemobiletools.launcher.helpers.MIN_COLUMN_COUNT
import com.simplemobiletools.launcher.helpers.MIN_ROW_COUNT
import java.util.Locale
import kotlin.system.exitProcess
class SettingsActivity : SimpleActivity() {
private lateinit var binding: ActivitySettingsBinding
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
super.onCreate(savedInstanceState)
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
updateMaterialActivityViews(binding.settingsCoordinator, binding.settingsHolder, useTransparentNavigation = true, useTopSearchMenu = false)
setupMaterialScrollListener(binding.settingsNestedScrollview, binding.settingsToolbar)
setupOptionsMenu()
}
override fun onResume() {
super.onResume()
setupToolbar(binding.settingsToolbar, NavigationIcon.Arrow)
refreshMenuItems()
setupPurchaseThankYou()
setupCustomizeColors()
setupUseEnglish()
setupCloseAppDrawerOnOtherAppOpen()
setupDrawerColumnCount()
setupDrawerSearchBar()
setupHomeRowCount()
setupHomeColumnCount()
setupLanguage()
setupManageHiddenIcons()
updateTextColors(binding.settingsHolder)
arrayOf(
binding.settingsColorCustomizationLabel,
binding.settingsGeneralSettingsLabel,
binding.settingsDrawerSettingsLabel,
binding.settingsHomeScreenLabel
).forEach {
it.setTextColor(getProperPrimaryColor())
}
}
private fun setupOptionsMenu() {
binding.settingsToolbar.setOnMenuItemClickListener { menuItem ->
when (menuItem.itemId) {
R.id.about -> launchAbout()
R.id.more_apps_from_us -> launchMoreAppsFromUsIntent()
else -> return@setOnMenuItemClickListener false
}
return@setOnMenuItemClickListener true
}
}
private fun refreshMenuItems() {
binding.settingsToolbar.menu.apply {
findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(com.simplemobiletools.commons.R.bool.hide_google_relations)
}
}
private fun setupPurchaseThankYou() {
binding.settingsPurchaseThankYouHolder.beGoneIf(isOrWasThankYouInstalled())
binding.settingsPurchaseThankYouHolder.setOnClickListener {
launchPurchaseThankYouIntent()
}
}
private fun setupCustomizeColors() {
binding.settingsColorCustomizationLabel.text = getCustomizeColorsString()
binding.settingsColorCustomizationHolder.setOnClickListener {
startCustomizationActivity()
}
}
private fun setupUseEnglish() {
binding.settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
binding.settingsUseEnglish.isChecked = config.useEnglish
binding.settingsUseEnglishHolder.setOnClickListener {
binding.settingsUseEnglish.toggle()
config.useEnglish = binding.settingsUseEnglish.isChecked
exitProcess(0)
}
}
private fun setupCloseAppDrawerOnOtherAppOpen() {
binding.settingsCloseAppDrawerOnOtherApp.isChecked = config.closeAppDrawer
binding.settingsCloseAppDrawerOnOtherAppHolder.setOnClickListener {
binding.settingsCloseAppDrawerOnOtherApp.toggle()
config.closeAppDrawer = binding.settingsCloseAppDrawerOnOtherApp.isChecked
}
}
private fun setupDrawerColumnCount() {
val currentColumnCount = config.drawerColumnCount
binding.settingsDrawerColumnCount.text = currentColumnCount.toString()
binding.settingsDrawerColumnCountHolder.setOnClickListener {
val items = ArrayList<RadioItem>()
for (i in 1..MAX_COLUMN_COUNT) {
items.add(RadioItem(i, resources.getQuantityString(com.simplemobiletools.commons.R.plurals.column_counts, i, i)))
}
RadioGroupDialog(this, items, currentColumnCount) {
val newColumnCount = it as Int
if (currentColumnCount != newColumnCount) {
config.drawerColumnCount = newColumnCount
setupDrawerColumnCount()
}
}
}
}
private fun setupDrawerSearchBar() {
val showSearchBar = config.showSearchBar
binding.settingsShowSearchBar.isChecked = showSearchBar
binding.settingsDrawerSearchHolder.setOnClickListener {
binding.settingsShowSearchBar.toggle()
config.showSearchBar = binding.settingsShowSearchBar.isChecked
}
}
private fun setupHomeRowCount() {
val currentRowCount = config.homeRowCount
binding.settingsHomeScreenRowCount.text = currentRowCount.toString()
binding.settingsHomeScreenRowCountHolder.setOnClickListener {
val items = ArrayList<RadioItem>()
for (i in MIN_ROW_COUNT..MAX_ROW_COUNT) {
items.add(RadioItem(i, resources.getQuantityString(com.simplemobiletools.commons.R.plurals.row_counts, i, i)))
}
RadioGroupDialog(this, items, currentRowCount) {
val newRowCount = it as Int
if (currentRowCount != newRowCount) {
config.homeRowCount = newRowCount
setupHomeRowCount()
}
}
}
}
private fun setupHomeColumnCount() {
val currentColumnCount = config.homeColumnCount
binding.settingsHomeScreenColumnCount.text = currentColumnCount.toString()
binding.settingsHomeScreenColumnCountHolder.setOnClickListener {
val items = ArrayList<RadioItem>()
for (i in MIN_COLUMN_COUNT..MAX_COLUMN_COUNT) {
items.add(RadioItem(i, resources.getQuantityString(com.simplemobiletools.commons.R.plurals.column_counts, i, i)))
}
RadioGroupDialog(this, items, currentColumnCount) {
val newColumnCount = it as Int
if (currentColumnCount != newColumnCount) {
config.homeColumnCount = newColumnCount
setupHomeColumnCount()
}
}
}
}
private fun setupLanguage() {
binding.settingsLanguage.text = Locale.getDefault().displayLanguage
binding.settingsLanguageHolder.beVisibleIf(isTiramisuPlus())
binding.settingsLanguageHolder.setOnClickListener {
launchChangeAppLanguageIntent()
}
}
private fun setupManageHiddenIcons() {
binding.settingsManageHiddenIconsHolder.setOnClickListener {
startActivity(Intent(this, HiddenIconsActivity::class.java))
}
}
private fun launchAbout() {
val licenses = 0L
val faqItems = ArrayList<FAQItem>()
if (!resources.getBoolean(com.simplemobiletools.commons.R.bool.hide_google_relations)) {
faqItems.add(FAQItem(com.simplemobiletools.commons.R.string.faq_2_title_commons, com.simplemobiletools.commons.R.string.faq_2_text_commons))
faqItems.add(FAQItem(com.simplemobiletools.commons.R.string.faq_6_title_commons, com.simplemobiletools.commons.R.string.faq_6_text_commons))
}
startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true)
}
}