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 val binding by viewBinding(ActivitySettingsBinding::inflate) override fun onCreate(savedInstanceState: Bundle?) { isMaterialActivity = true super.onCreate(savedInstanceState) 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.settingsColorCustomizationSectionLabel, 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() 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() 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() 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() 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) } }