funkwhale-android/app/src/main/java/audio/funkwhale/ffa/activities/SettingsActivity.kt

161 wiersze
5.4 KiB
Kotlin
Czysty Zwykły widok Historia

package audio.funkwhale.ffa.activities
2019-08-19 14:50:33 +00:00
2021-09-09 07:56:15 +00:00
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
2019-08-19 14:50:33 +00:00
import android.os.Bundle
import android.widget.Toast
2019-08-19 14:50:33 +00:00
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SeekBarPreference
2021-07-21 07:11:07 +00:00
import audio.funkwhale.ffa.FFA
import audio.funkwhale.ffa.R
2021-07-16 08:03:52 +00:00
import audio.funkwhale.ffa.databinding.ActivitySettingsBinding
import audio.funkwhale.ffa.utils.Command
import audio.funkwhale.ffa.utils.CommandBus
import audio.funkwhale.ffa.utils.FFACache
2019-08-19 14:50:33 +00:00
class SettingsActivity : AppCompatActivity() {
2021-07-16 08:03:52 +00:00
private lateinit var binding: ActivitySettingsBinding
2019-08-19 14:50:33 +00:00
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
2021-07-16 08:03:52 +00:00
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
2019-08-19 14:50:33 +00:00
supportFragmentManager
.beginTransaction()
.replace(
R.id.container,
SettingsFragment()
)
.commit()
}
}
2021-07-16 08:03:52 +00:00
class SettingsFragment :
PreferenceFragmentCompat(),
SharedPreferences.OnSharedPreferenceChangeListener {
2019-08-19 14:50:33 +00:00
override fun onResume() {
super.onResume()
preferenceScreen.sharedPreferences?.registerOnSharedPreferenceChangeListener(this)
2019-08-19 14:50:33 +00:00
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings, rootKey)
updateValues()
}
override fun onPreferenceTreeClick(preference: Preference): Boolean {
2019-08-19 14:50:33 +00:00
when (preference?.key) {
"oss_licences" -> startActivity(Intent(activity, LicencesActivity::class.java))
"crash" -> {
activity?.let { activity ->
(activity.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager)?.also { clip ->
FFACache.getLines(activity, "crashdump")?.joinToString("\n").also {
2021-07-23 12:10:13 +00:00
clip.setPrimaryClip(ClipData.newPlainText("Funkwhale logs", it))
2021-07-16 08:03:52 +00:00
Toast.makeText(
activity,
activity.getString(R.string.settings_crash_report_copied),
Toast.LENGTH_SHORT
).show()
}
}
}
}
2019-08-19 14:50:33 +00:00
"logout" -> {
context?.let { context ->
AlertDialog.Builder(context)
.setTitle(context.getString(R.string.logout_title))
.setMessage(context.getString(R.string.logout_content))
2021-07-23 12:10:13 +00:00
.setPositiveButton(android.R.string.ok) { _, _ ->
2019-10-30 21:06:57 +00:00
CommandBus.send(Command.ClearQueue)
FFA.get().deleteAllData(context)
activity?.setResult(MainActivity.ResultCode.LOGOUT.code)
activity?.finish()
2019-08-19 14:50:33 +00:00
}
2021-07-23 12:10:13 +00:00
.setNegativeButton(android.R.string.cancel, null)
2019-08-19 14:50:33 +00:00
.show()
}
}
}
updateValues()
return super.onPreferenceTreeClick(preference)
}
override fun onSharedPreferenceChanged(preferences: SharedPreferences?, key: String?) {
updateValues()
}
private fun updateValues() {
(activity as? AppCompatActivity)?.let { activity ->
preferenceManager.findPreference<ListPreference>("media_quality")?.let {
it.summary = when (it.value) {
"quality" -> activity.getString(R.string.settings_media_quality_summary_quality)
"size" -> activity.getString(R.string.settings_media_quality_summary_size)
else -> activity.getString(R.string.settings_media_quality_summary_size)
}
}
preferenceManager.findPreference<ListPreference>("play_order")?.let {
it.summary = when (it.value) {
"shuffle" -> activity.getString(R.string.settings_play_order_shuffle_summary)
"in_order" -> activity.getString(R.string.settings_play_order_in_order_summary)
else -> activity.getString(R.string.settings_play_order_shuffle_summary)
}
}
2019-08-19 14:50:33 +00:00
preferenceManager.findPreference<ListPreference>("night_mode")?.let {
when (it.value) {
"on" -> {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
activity.delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES
it.summary = getString(R.string.settings_night_mode_on_summary)
}
"off" -> {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
activity.delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_NO
it.summary = getString(R.string.settings_night_mode_off_summary)
}
else -> {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
activity.delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
it.summary = getString(R.string.settings_night_mode_system_summary)
}
}
}
preferenceManager.findPreference<SeekBarPreference>("media_cache_size")?.let {
it.summary = getString(R.string.settings_media_cache_size_summary, it.value)
}
2020-05-28 23:30:05 +00:00
preferenceManager.findPreference<Preference>("version")?.let {
2021-07-16 08:03:52 +00:00
it.summary =
"${audio.funkwhale.ffa.BuildConfig.VERSION_NAME} (${audio.funkwhale.ffa.BuildConfig.VERSION_CODE})"
2020-05-28 23:30:05 +00:00
}
2019-08-19 14:50:33 +00:00
}
}
2021-07-02 11:55:49 +00:00
}