mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-05-14 05:52:47 +00:00
move background image and customizing number/symbol layouts out of experimental settings
This commit is contained in:
parent
c566c93bff
commit
17aa321fbd
24 changed files with 94 additions and 108 deletions
|
@ -9,7 +9,6 @@ import android.annotation.SuppressLint
|
|||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.graphics.BitmapFactory
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
|
@ -103,18 +102,6 @@ class AdvancedSettingsFragment : SubScreenFragment() {
|
|||
restore(uri)
|
||||
}
|
||||
|
||||
private val dayImageFilePicker = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
||||
if (it.resultCode != Activity.RESULT_OK) return@registerForActivityResult
|
||||
val uri = it.data?.data ?: return@registerForActivityResult
|
||||
loadImage(uri, false)
|
||||
}
|
||||
|
||||
private val nightImageFilePicker = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
||||
if (it.resultCode != Activity.RESULT_OK) return@registerForActivityResult
|
||||
val uri = it.data?.data ?: return@registerForActivityResult
|
||||
loadImage(uri, true)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setupPreferences()
|
||||
|
@ -138,7 +125,6 @@ class AdvancedSettingsFragment : SubScreenFragment() {
|
|||
setupKeyLongpressTimeoutSettings()
|
||||
findPreference<Preference>("load_gesture_library")?.setOnPreferenceClickListener { onClickLoadLibrary() }
|
||||
findPreference<Preference>("backup_restore")?.setOnPreferenceClickListener { showBackupRestoreDialog() }
|
||||
findPreference<Preference>("custom_background_image")?.setOnPreferenceClickListener { onClickLoadImage() }
|
||||
|
||||
findPreference<Preference>("custom_symbols_number_layouts")?.setOnPreferenceClickListener {
|
||||
showCustomizeLayoutsDialog()
|
||||
|
@ -239,55 +225,6 @@ class AdvancedSettingsFragment : SubScreenFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun onClickLoadImage(): Boolean {
|
||||
if (Settings.readDayNightPref(sharedPreferences, resources)) {
|
||||
AlertDialog.Builder(requireContext())
|
||||
.setMessage(R.string.day_or_night_image)
|
||||
.setPositiveButton(R.string.day_or_night_day) { _, _ -> customImageDialog(false) }
|
||||
.setNegativeButton(R.string.day_or_night_night) { _, _ -> customImageDialog(true) }
|
||||
.setNeutralButton(android.R.string.cancel, null)
|
||||
.show()
|
||||
} else {
|
||||
customImageDialog(false)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
private fun customImageDialog(night: Boolean) {
|
||||
val imageFile = Settings.getCustomBackgroundFile(requireContext(), night)
|
||||
val builder = AlertDialog.Builder(requireContext())
|
||||
.setMessage(R.string.customize_background_image)
|
||||
.setPositiveButton(R.string.button_load_custom) { _, _ ->
|
||||
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
|
||||
.addCategory(Intent.CATEGORY_OPENABLE)
|
||||
.setType("image/*")
|
||||
if (night) nightImageFilePicker.launch(intent)
|
||||
else dayImageFilePicker.launch(intent)
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
if (imageFile.exists()) {
|
||||
builder.setNeutralButton(R.string.delete) { _, _ ->
|
||||
imageFile.delete()
|
||||
Settings.clearCachedBackgroundImages()
|
||||
KeyboardSwitcher.getInstance().forceUpdateKeyboardTheme(requireContext())
|
||||
}
|
||||
}
|
||||
builder.show()
|
||||
}
|
||||
|
||||
private fun loadImage(uri: Uri, night: Boolean) {
|
||||
val imageFile = Settings.getCustomBackgroundFile(requireContext(), night)
|
||||
FileUtils.copyContentUriToNewFile(uri, requireContext(), imageFile)
|
||||
try {
|
||||
BitmapFactory.decodeFile(imageFile.absolutePath)
|
||||
} catch (_: Exception) {
|
||||
infoDialog(requireContext(), R.string.file_read_error)
|
||||
imageFile.delete()
|
||||
}
|
||||
Settings.clearCachedBackgroundImages()
|
||||
KeyboardSwitcher.getInstance().forceUpdateKeyboardTheme(requireContext())
|
||||
}
|
||||
|
||||
@SuppressLint("ApplySharedPref")
|
||||
private fun renameToLibfileAndRestart(file: File, checksum: String) {
|
||||
libfile.delete()
|
||||
|
|
|
@ -2,10 +2,16 @@
|
|||
|
||||
package helium314.keyboard.latin.settings
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.BitmapFactory
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.util.TypedValueCompat
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
|
@ -13,7 +19,9 @@ import androidx.preference.TwoStatePreference
|
|||
import helium314.keyboard.keyboard.KeyboardSwitcher
|
||||
import helium314.keyboard.keyboard.KeyboardTheme
|
||||
import helium314.keyboard.latin.R
|
||||
import helium314.keyboard.latin.common.FileUtils
|
||||
import helium314.keyboard.latin.utils.getStringResourceOrName
|
||||
import helium314.keyboard.latin.utils.infoDialog
|
||||
import java.lang.Float.max
|
||||
import java.lang.Float.min
|
||||
import java.util.*
|
||||
|
@ -33,6 +41,18 @@ class AppearanceSettingsFragment : SubScreenFragment() {
|
|||
private val splitPref: TwoStatePreference? by lazy { preferenceScreen.findPreference(Settings.PREF_ENABLE_SPLIT_KEYBOARD) }
|
||||
private val splitScalePref: Preference? by lazy { preferenceScreen.findPreference(Settings.PREF_SPLIT_SPACER_SCALE) }
|
||||
|
||||
private val dayImageFilePicker = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
||||
if (it.resultCode != Activity.RESULT_OK) return@registerForActivityResult
|
||||
val uri = it.data?.data ?: return@registerForActivityResult
|
||||
loadImage(uri, false)
|
||||
}
|
||||
|
||||
private val nightImageFilePicker = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
||||
if (it.resultCode != Activity.RESULT_OK) return@registerForActivityResult
|
||||
val uri = it.data?.data ?: return@registerForActivityResult
|
||||
loadImage(uri, true)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
addPreferencesFromResource(R.xml.prefs_screen_appearance)
|
||||
|
@ -51,6 +71,7 @@ class AppearanceSettingsFragment : SubScreenFragment() {
|
|||
true
|
||||
}
|
||||
}
|
||||
findPreference<Preference>("custom_background_image")?.setOnPreferenceClickListener { onClickLoadImage() }
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
|
@ -144,6 +165,55 @@ class AppearanceSettingsFragment : SubScreenFragment() {
|
|||
userColorsPrefNight?.isVisible = dayNightPref?.isChecked == true && colorsNightPref?.value == KeyboardTheme.THEME_USER_NIGHT
|
||||
}
|
||||
|
||||
private fun onClickLoadImage(): Boolean {
|
||||
if (Settings.readDayNightPref(sharedPreferences, resources)) {
|
||||
AlertDialog.Builder(requireContext())
|
||||
.setMessage(R.string.day_or_night_image)
|
||||
.setPositiveButton(R.string.day_or_night_day) { _, _ -> customImageDialog(false) }
|
||||
.setNegativeButton(R.string.day_or_night_night) { _, _ -> customImageDialog(true) }
|
||||
.setNeutralButton(android.R.string.cancel, null)
|
||||
.show()
|
||||
} else {
|
||||
customImageDialog(false)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
private fun customImageDialog(night: Boolean) {
|
||||
val imageFile = Settings.getCustomBackgroundFile(requireContext(), night)
|
||||
val builder = AlertDialog.Builder(requireContext())
|
||||
.setMessage(R.string.customize_background_image)
|
||||
.setPositiveButton(R.string.button_load_custom) { _, _ ->
|
||||
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
|
||||
.addCategory(Intent.CATEGORY_OPENABLE)
|
||||
.setType("image/*")
|
||||
if (night) nightImageFilePicker.launch(intent)
|
||||
else dayImageFilePicker.launch(intent)
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
if (imageFile.exists()) {
|
||||
builder.setNeutralButton(R.string.delete) { _, _ ->
|
||||
imageFile.delete()
|
||||
Settings.clearCachedBackgroundImages()
|
||||
KeyboardSwitcher.getInstance().forceUpdateKeyboardTheme(requireContext())
|
||||
}
|
||||
}
|
||||
builder.show()
|
||||
}
|
||||
|
||||
private fun loadImage(uri: Uri, night: Boolean) {
|
||||
val imageFile = Settings.getCustomBackgroundFile(requireContext(), night)
|
||||
FileUtils.copyContentUriToNewFile(uri, requireContext(), imageFile)
|
||||
try {
|
||||
BitmapFactory.decodeFile(imageFile.absolutePath)
|
||||
} catch (_: Exception) {
|
||||
infoDialog(requireContext(), R.string.file_read_error)
|
||||
imageFile.delete()
|
||||
}
|
||||
Settings.clearCachedBackgroundImages()
|
||||
KeyboardSwitcher.getInstance().forceUpdateKeyboardTheme(requireContext())
|
||||
}
|
||||
|
||||
private fun setupScalePrefs(prefKey: String, defaultValue: Float) {
|
||||
val prefs = sharedPreferences
|
||||
val pref = findPreference(prefKey) as? SeekBarDialogPreference
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue