276 lines
11 KiB
Kotlin
276 lines
11 KiB
Kotlin
package com.simplemobiletools.smsmessenger.activities
|
|
|
|
import android.annotation.TargetApi
|
|
import android.content.Intent
|
|
import android.os.Build
|
|
import android.os.Bundle
|
|
import com.simplemobiletools.commons.activities.ManageBlockedNumbersActivity
|
|
import com.simplemobiletools.commons.dialogs.ChangeDateTimeFormatDialog
|
|
import com.simplemobiletools.commons.dialogs.FeatureLockedDialog
|
|
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
|
import com.simplemobiletools.commons.extensions.*
|
|
import com.simplemobiletools.commons.helpers.*
|
|
import com.simplemobiletools.commons.models.RadioItem
|
|
import com.simplemobiletools.smsmessenger.R
|
|
import com.simplemobiletools.smsmessenger.extensions.config
|
|
import com.simplemobiletools.smsmessenger.helpers.*
|
|
import kotlinx.android.synthetic.main.activity_settings.*
|
|
import java.util.*
|
|
|
|
class SettingsActivity : SimpleActivity() {
|
|
private var blockedNumbersAtPause = -1
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
setContentView(R.layout.activity_settings)
|
|
}
|
|
|
|
override fun onResume() {
|
|
super.onResume()
|
|
setupToolbar(settings_toolbar, NavigationIcon.Arrow)
|
|
|
|
setupPurchaseThankYou()
|
|
setupCustomizeColors()
|
|
setupCustomizeNotifications()
|
|
setupUseEnglish()
|
|
setupLanguage()
|
|
setupManageBlockedNumbers()
|
|
setupChangeDateTimeFormat()
|
|
setupFontSize()
|
|
setupShowCharacterCounter()
|
|
setupUseSimpleCharacters()
|
|
setupSendOnEnter()
|
|
setupEnableDeliveryReports()
|
|
setupSendLongMessageAsMMS()
|
|
setupGroupMessageAsMMS()
|
|
setupLockScreenVisibility()
|
|
setupMMSFileSizeLimit()
|
|
updateTextColors(settings_nested_scrollview)
|
|
|
|
if (blockedNumbersAtPause != -1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()) {
|
|
refreshMessages()
|
|
}
|
|
|
|
arrayOf(settings_color_customization_label, settings_general_settings_label, settings_outgoing_messages_label, settings_notifications_label).forEach {
|
|
it.setTextColor(getProperPrimaryColor())
|
|
}
|
|
|
|
arrayOf(
|
|
settings_color_customization_holder,
|
|
settings_general_settings_holder,
|
|
settings_outgoing_messages_holder,
|
|
settings_notifications_holder
|
|
).forEach {
|
|
it.background.applyColorFilter(getProperBackgroundColor().getContrastColor())
|
|
}
|
|
}
|
|
|
|
override fun onPause() {
|
|
super.onPause()
|
|
blockedNumbersAtPause = getBlockedNumbers().hashCode()
|
|
}
|
|
|
|
private fun setupPurchaseThankYou() {
|
|
settings_purchase_thank_you_holder.beGoneIf(isOrWasThankYouInstalled())
|
|
|
|
// make sure the corners at ripple fit the stroke rounded corners
|
|
if (settings_purchase_thank_you_holder.isGone()) {
|
|
settings_use_english_holder.background = resources.getDrawable(R.drawable.ripple_top_corners, theme)
|
|
settings_language_holder.background = resources.getDrawable(R.drawable.ripple_top_corners, theme)
|
|
}
|
|
|
|
settings_purchase_thank_you_holder.setOnClickListener {
|
|
launchPurchaseThankYouIntent()
|
|
}
|
|
}
|
|
|
|
private fun setupCustomizeColors() {
|
|
settings_customize_colors_label.text = getCustomizeColorsString()
|
|
settings_customize_colors_holder.setOnClickListener {
|
|
handleCustomizeColorsClick()
|
|
}
|
|
}
|
|
|
|
private fun setupCustomizeNotifications() {
|
|
settings_customize_notifications_holder.beVisibleIf(isOreoPlus())
|
|
|
|
if (settings_customize_notifications_holder.isGone()) {
|
|
settings_lock_screen_visibility_holder.background = resources.getDrawable(R.drawable.ripple_all_corners, theme)
|
|
}
|
|
|
|
settings_customize_notifications_holder.setOnClickListener {
|
|
launchCustomizeNotificationsIntent()
|
|
}
|
|
}
|
|
|
|
private fun setupUseEnglish() {
|
|
settings_use_english_holder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
|
|
settings_use_english.isChecked = config.useEnglish
|
|
settings_use_english_holder.setOnClickListener {
|
|
settings_use_english.toggle()
|
|
config.useEnglish = settings_use_english.isChecked
|
|
System.exit(0)
|
|
}
|
|
}
|
|
|
|
private fun setupLanguage() {
|
|
settings_language.text = Locale.getDefault().displayLanguage
|
|
settings_language_holder.beVisibleIf(isTiramisuPlus())
|
|
|
|
if (settings_use_english_holder.isGone() && settings_language_holder.isGone() && settings_purchase_thank_you_holder.isGone()) {
|
|
settings_change_date_time_format_holder.background = resources.getDrawable(R.drawable.ripple_top_corners, theme)
|
|
}
|
|
|
|
settings_language_holder.setOnClickListener {
|
|
launchChangeAppLanguageIntent()
|
|
}
|
|
}
|
|
|
|
// support for device-wise blocking came on Android 7, rely only on that
|
|
@TargetApi(Build.VERSION_CODES.N)
|
|
private fun setupManageBlockedNumbers() {
|
|
settings_manage_blocked_numbers.text = addLockedLabelIfNeeded(R.string.manage_blocked_numbers)
|
|
settings_manage_blocked_numbers_holder.beVisibleIf(isNougatPlus())
|
|
|
|
settings_manage_blocked_numbers_holder.setOnClickListener {
|
|
if (isOrWasThankYouInstalled()) {
|
|
Intent(this, ManageBlockedNumbersActivity::class.java).apply {
|
|
startActivity(this)
|
|
}
|
|
} else {
|
|
FeatureLockedDialog(this) { }
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun setupChangeDateTimeFormat() {
|
|
settings_change_date_time_format_holder.setOnClickListener {
|
|
ChangeDateTimeFormatDialog(this) {
|
|
refreshMessages()
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun setupFontSize() {
|
|
settings_font_size.text = getFontSizeText()
|
|
settings_font_size_holder.setOnClickListener {
|
|
val items = arrayListOf(
|
|
RadioItem(FONT_SIZE_SMALL, getString(R.string.small)),
|
|
RadioItem(FONT_SIZE_MEDIUM, getString(R.string.medium)),
|
|
RadioItem(FONT_SIZE_LARGE, getString(R.string.large)),
|
|
RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large))
|
|
)
|
|
|
|
RadioGroupDialog(this@SettingsActivity, items, config.fontSize) {
|
|
config.fontSize = it as Int
|
|
settings_font_size.text = getFontSizeText()
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun setupShowCharacterCounter() {
|
|
settings_show_character_counter.isChecked = config.showCharacterCounter
|
|
settings_show_character_counter_holder.setOnClickListener {
|
|
settings_show_character_counter.toggle()
|
|
config.showCharacterCounter = settings_show_character_counter.isChecked
|
|
}
|
|
}
|
|
|
|
private fun setupUseSimpleCharacters() {
|
|
settings_use_simple_characters.isChecked = config.useSimpleCharacters
|
|
settings_use_simple_characters_holder.setOnClickListener {
|
|
settings_use_simple_characters.toggle()
|
|
config.useSimpleCharacters = settings_use_simple_characters.isChecked
|
|
}
|
|
}
|
|
|
|
private fun setupSendOnEnter() {
|
|
settings_send_on_enter.isChecked = config.sendOnEnter
|
|
settings_send_on_enter_holder.setOnClickListener {
|
|
settings_send_on_enter.toggle()
|
|
config.sendOnEnter = settings_send_on_enter.isChecked
|
|
}
|
|
}
|
|
|
|
private fun setupEnableDeliveryReports() {
|
|
settings_enable_delivery_reports.isChecked = config.enableDeliveryReports
|
|
settings_enable_delivery_reports_holder.setOnClickListener {
|
|
settings_enable_delivery_reports.toggle()
|
|
config.enableDeliveryReports = settings_enable_delivery_reports.isChecked
|
|
}
|
|
}
|
|
|
|
private fun setupSendLongMessageAsMMS() {
|
|
settings_send_long_message_mms.isChecked = config.sendLongMessageMMS
|
|
settings_send_long_message_mms_holder.setOnClickListener {
|
|
settings_send_long_message_mms.toggle()
|
|
config.sendLongMessageMMS = settings_send_long_message_mms.isChecked
|
|
}
|
|
}
|
|
|
|
private fun setupGroupMessageAsMMS() {
|
|
settings_send_group_message_mms.isChecked = config.sendGroupMessageMMS
|
|
settings_send_group_message_mms_holder.setOnClickListener {
|
|
settings_send_group_message_mms.toggle()
|
|
config.sendGroupMessageMMS = settings_send_group_message_mms.isChecked
|
|
}
|
|
}
|
|
|
|
private fun setupLockScreenVisibility() {
|
|
settings_lock_screen_visibility.text = getLockScreenVisibilityText()
|
|
settings_lock_screen_visibility_holder.setOnClickListener {
|
|
val items = arrayListOf(
|
|
RadioItem(LOCK_SCREEN_SENDER_MESSAGE, getString(R.string.sender_and_message)),
|
|
RadioItem(LOCK_SCREEN_SENDER, getString(R.string.sender_only)),
|
|
RadioItem(LOCK_SCREEN_NOTHING, getString(R.string.nothing)),
|
|
)
|
|
|
|
RadioGroupDialog(this@SettingsActivity, items, config.lockScreenVisibilitySetting) {
|
|
config.lockScreenVisibilitySetting = it as Int
|
|
settings_lock_screen_visibility.text = getLockScreenVisibilityText()
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun getLockScreenVisibilityText() = getString(
|
|
when (config.lockScreenVisibilitySetting) {
|
|
LOCK_SCREEN_SENDER_MESSAGE -> R.string.sender_and_message
|
|
LOCK_SCREEN_SENDER -> R.string.sender_only
|
|
else -> R.string.nothing
|
|
}
|
|
)
|
|
|
|
private fun setupMMSFileSizeLimit() {
|
|
settings_mms_file_size_limit.text = getMMSFileLimitText()
|
|
settings_mms_file_size_limit_holder.setOnClickListener {
|
|
val items = arrayListOf(
|
|
RadioItem(7, getString(R.string.mms_file_size_limit_none), FILE_SIZE_NONE),
|
|
RadioItem(6, getString(R.string.mms_file_size_limit_2mb), FILE_SIZE_2_MB),
|
|
RadioItem(5, getString(R.string.mms_file_size_limit_1mb), FILE_SIZE_1_MB),
|
|
RadioItem(4, getString(R.string.mms_file_size_limit_600kb), FILE_SIZE_600_KB),
|
|
RadioItem(3, getString(R.string.mms_file_size_limit_300kb), FILE_SIZE_300_KB),
|
|
RadioItem(2, getString(R.string.mms_file_size_limit_200kb), FILE_SIZE_200_KB),
|
|
RadioItem(1, getString(R.string.mms_file_size_limit_100kb), FILE_SIZE_100_KB),
|
|
)
|
|
|
|
val checkedItemId = items.find { it.value == config.mmsFileSizeLimit }?.id ?: 7
|
|
RadioGroupDialog(this@SettingsActivity, items, checkedItemId) {
|
|
config.mmsFileSizeLimit = it as Long
|
|
settings_mms_file_size_limit.text = getMMSFileLimitText()
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun getMMSFileLimitText() = getString(
|
|
when (config.mmsFileSizeLimit) {
|
|
FILE_SIZE_100_KB -> R.string.mms_file_size_limit_100kb
|
|
FILE_SIZE_200_KB -> R.string.mms_file_size_limit_200kb
|
|
FILE_SIZE_300_KB -> R.string.mms_file_size_limit_300kb
|
|
FILE_SIZE_600_KB -> R.string.mms_file_size_limit_600kb
|
|
FILE_SIZE_1_MB -> R.string.mms_file_size_limit_1mb
|
|
FILE_SIZE_2_MB -> R.string.mms_file_size_limit_2mb
|
|
else -> R.string.mms_file_size_limit_none
|
|
}
|
|
)
|
|
|
|
}
|