Simple-Notes/app/src/main/kotlin/com/simplemobiletools/notes/activities/SettingsActivity.kt

208 lines
7.6 KiB
Kotlin

package com.simplemobiletools.notes.activities
import android.content.Intent
import android.os.Bundle
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
import com.simplemobiletools.commons.extensions.updateTextColors
import com.simplemobiletools.commons.helpers.IS_CUSTOMIZING_COLORS
import com.simplemobiletools.commons.helpers.isOreoPlus
import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.notes.R
import com.simplemobiletools.notes.extensions.config
import com.simplemobiletools.notes.extensions.dbHelper
import com.simplemobiletools.notes.extensions.updateWidgets
import com.simplemobiletools.notes.helpers.*
import kotlinx.android.synthetic.main.activity_settings.*
import java.util.*
class SettingsActivity : SimpleActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
}
override fun onResume() {
super.onResume()
setupCustomizeColors()
setupUseEnglish()
setupAutosaveNotes()
setupDisplaySuccess()
setupClickableLinks()
setupMonospacedFont()
setupShowKeyboard()
setupShowNotePicker()
setupShowWordCount()
setupEnableLineWrap()
setupFontSize()
setupGravity()
setupCursorPlacement()
setupIncognitoMode()
setupCustomizeWidgetColors()
updateTextColors(settings_scrollview)
setupSectionColors()
}
private fun setupSectionColors() {
val adjustedPrimaryColor = getAdjustedPrimaryColor()
arrayListOf(text_label, startup_label, saving_label, widgets_label).forEach {
it.setTextColor(adjustedPrimaryColor)
}
}
private fun setupCustomizeColors() {
settings_customize_colors_holder.setOnClickListener {
startCustomizationActivity()
}
}
private fun setupUseEnglish() {
settings_use_english_holder.beVisibleIf(config.wasUseEnglishToggled || Locale.getDefault().language != "en")
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 setupAutosaveNotes() {
settings_autosave_notes.isChecked = config.autosaveNotes
settings_autosave_notes_holder.setOnClickListener {
settings_autosave_notes.toggle()
config.autosaveNotes = settings_autosave_notes.isChecked
}
}
private fun setupDisplaySuccess() {
settings_display_success.isChecked = config.displaySuccess
settings_display_success_holder.setOnClickListener {
settings_display_success.toggle()
config.displaySuccess = settings_display_success.isChecked
}
}
private fun setupClickableLinks() {
settings_clickable_links.isChecked = config.clickableLinks
settings_clickable_links_holder.setOnClickListener {
settings_clickable_links.toggle()
config.clickableLinks = settings_clickable_links.isChecked
}
}
private fun setupMonospacedFont() {
settings_monospaced_font.isChecked = config.monospacedFont
settings_monospaced_font_holder.setOnClickListener {
settings_monospaced_font.toggle()
config.monospacedFont = settings_monospaced_font.isChecked
}
}
private fun setupShowKeyboard() {
settings_show_keyboard.isChecked = config.showKeyboard
settings_show_keyboard_holder.setOnClickListener {
settings_show_keyboard.toggle()
config.showKeyboard = settings_show_keyboard.isChecked
}
}
private fun setupShowNotePicker() {
settings_show_note_picker_holder.beVisibleIf(dbHelper.getNotes().size > 1)
settings_show_note_picker.isChecked = config.showNotePicker
settings_show_note_picker_holder.setOnClickListener {
settings_show_note_picker.toggle()
config.showNotePicker = settings_show_note_picker.isChecked
}
}
private fun setupShowWordCount() {
settings_show_word_count.isChecked = config.showWordCount
settings_show_word_count_holder.setOnClickListener {
settings_show_word_count.toggle()
config.showWordCount = settings_show_word_count.isChecked
}
}
private fun setupEnableLineWrap() {
settings_enable_line_wrap.isChecked = config.enableLineWrap
settings_enable_line_wrap_holder.setOnClickListener {
settings_enable_line_wrap.toggle()
config.enableLineWrap = settings_enable_line_wrap.isChecked
}
}
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()
updateWidgets()
}
}
}
private fun getFontSizeText() = getString(when (config.fontSize) {
FONT_SIZE_SMALL -> R.string.small
FONT_SIZE_MEDIUM -> R.string.medium
FONT_SIZE_LARGE -> R.string.large
else -> R.string.extra_large
})
private fun setupGravity() {
settings_gravity.text = getGravityText()
settings_gravity_holder.setOnClickListener {
val items = arrayListOf(
RadioItem(GRAVITY_LEFT, getString(R.string.left)),
RadioItem(GRAVITY_CENTER, getString(R.string.center)),
RadioItem(GRAVITY_RIGHT, getString(R.string.right)))
RadioGroupDialog(this@SettingsActivity, items, config.gravity) {
config.gravity = it as Int
settings_gravity.text = getGravityText()
updateWidgets()
}
}
}
private fun getGravityText() = getString(when (config.gravity) {
GRAVITY_LEFT -> R.string.left
GRAVITY_CENTER -> R.string.center
else -> R.string.right
})
private fun setupCursorPlacement() {
settings_cursor_placement.isChecked = config.placeCursorToEnd
settings_cursor_placement_holder.setOnClickListener {
settings_cursor_placement.toggle()
config.placeCursorToEnd = settings_cursor_placement.isChecked
}
}
private fun setupCustomizeWidgetColors() {
settings_customize_widget_colors_holder.setOnClickListener {
Intent(this, WidgetConfigureActivity::class.java).apply {
putExtra(IS_CUSTOMIZING_COLORS, true)
startActivity(this)
}
}
}
private fun setupIncognitoMode() {
settings_use_incognito_mode_holder.beVisibleIf(isOreoPlus())
settings_use_incognito_mode.isChecked = config.useIncognitoMode
settings_use_incognito_mode_holder.setOnClickListener {
settings_use_incognito_mode.toggle()
config.useIncognitoMode = settings_use_incognito_mode.isChecked
}
}
}