2021-07-12 10:14:26 +02:00
|
|
|
package audio.funkwhale.ffa.activities
|
2019-08-19 16:50:33 +02:00
|
|
|
|
2021-09-09 09:56:15 +02:00
|
|
|
import android.content.ClipData
|
|
|
|
import android.content.ClipboardManager
|
|
|
|
import android.content.Context
|
|
|
|
import android.content.Intent
|
|
|
|
import android.content.SharedPreferences
|
2019-08-19 16:50:33 +02:00
|
|
|
import android.os.Bundle
|
2020-06-10 23:59:09 +02:00
|
|
|
import android.widget.Toast
|
2019-08-19 16:50:33 +02: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 09:11:07 +02:00
|
|
|
import audio.funkwhale.ffa.FFA
|
2021-07-12 10:14:26 +02:00
|
|
|
import audio.funkwhale.ffa.R
|
2021-07-16 10:03:52 +02:00
|
|
|
import audio.funkwhale.ffa.databinding.ActivitySettingsBinding
|
2021-07-12 10:14:26 +02:00
|
|
|
import audio.funkwhale.ffa.utils.Command
|
|
|
|
import audio.funkwhale.ffa.utils.CommandBus
|
2021-08-09 06:50:46 +02:00
|
|
|
import audio.funkwhale.ffa.utils.FFACache
|
2019-08-19 16:50:33 +02:00
|
|
|
|
|
|
|
class SettingsActivity : AppCompatActivity() {
|
2021-07-16 10:03:52 +02:00
|
|
|
|
|
|
|
private lateinit var binding: ActivitySettingsBinding
|
|
|
|
|
2019-08-19 16:50:33 +02:00
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
|
2021-07-16 10:03:52 +02:00
|
|
|
binding = ActivitySettingsBinding.inflate(layoutInflater)
|
|
|
|
|
|
|
|
setContentView(binding.root)
|
2019-08-19 16:50:33 +02:00
|
|
|
|
|
|
|
supportFragmentManager
|
|
|
|
.beginTransaction()
|
|
|
|
.replace(
|
|
|
|
R.id.container,
|
|
|
|
SettingsFragment()
|
|
|
|
)
|
|
|
|
.commit()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-07-16 10:03:52 +02:00
|
|
|
class SettingsFragment :
|
|
|
|
PreferenceFragmentCompat(),
|
|
|
|
SharedPreferences.OnSharedPreferenceChangeListener {
|
|
|
|
|
2019-08-19 16:50:33 +02:00
|
|
|
override fun onResume() {
|
|
|
|
super.onResume()
|
|
|
|
|
2022-03-07 09:32:52 +01:00
|
|
|
preferenceScreen.sharedPreferences?.registerOnSharedPreferenceChangeListener(this)
|
2019-08-19 16:50:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
|
|
|
setPreferencesFromResource(R.xml.settings, rootKey)
|
|
|
|
|
|
|
|
updateValues()
|
|
|
|
}
|
|
|
|
|
2022-03-07 09:32:52 +01:00
|
|
|
override fun onPreferenceTreeClick(preference: Preference): Boolean {
|
2022-08-24 06:41:11 +02:00
|
|
|
when (preference.key) {
|
2019-08-19 16:50:33 +02:00
|
|
|
"oss_licences" -> startActivity(Intent(activity, LicencesActivity::class.java))
|
2019-10-29 23:41:44 +01:00
|
|
|
|
2020-06-10 23:59:09 +02:00
|
|
|
"crash" -> {
|
|
|
|
activity?.let { activity ->
|
|
|
|
(activity.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager)?.also { clip ->
|
2022-06-12 14:48:32 +02:00
|
|
|
FFACache.getLines(activity, "crashdump")?.joinToString("\n").also {
|
2021-07-23 14:10:13 +02:00
|
|
|
clip.setPrimaryClip(ClipData.newPlainText("Funkwhale logs", it))
|
2020-06-10 23:59:09 +02:00
|
|
|
|
2021-07-16 10:03:52 +02:00
|
|
|
Toast.makeText(
|
|
|
|
activity,
|
|
|
|
activity.getString(R.string.settings_crash_report_copied),
|
|
|
|
Toast.LENGTH_SHORT
|
|
|
|
).show()
|
2020-06-10 23:59:09 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-08-19 16:50:33 +02: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 14:10:13 +02:00
|
|
|
.setPositiveButton(android.R.string.ok) { _, _ ->
|
2019-10-30 22:06:57 +01:00
|
|
|
CommandBus.send(Command.ClearQueue)
|
2021-08-09 06:50:46 +02:00
|
|
|
FFA.get().deleteAllData(context)
|
2019-10-23 20:21:18 +02:00
|
|
|
activity?.setResult(MainActivity.ResultCode.LOGOUT.code)
|
|
|
|
activity?.finish()
|
2019-08-19 16:50:33 +02:00
|
|
|
}
|
2021-07-23 14:10:13 +02:00
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
2019-08-19 16:50:33 +02: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)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-09-02 12:45:37 +02:00
|
|
|
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 16:50:33 +02: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-29 01:30:05 +02:00
|
|
|
|
|
|
|
preferenceManager.findPreference<Preference>("version")?.let {
|
2021-07-16 10:03:52 +02:00
|
|
|
it.summary =
|
|
|
|
"${audio.funkwhale.ffa.BuildConfig.VERSION_NAME} (${audio.funkwhale.ffa.BuildConfig.VERSION_CODE})"
|
2020-05-29 01:30:05 +02:00
|
|
|
}
|
2019-08-19 16:50:33 +02:00
|
|
|
}
|
|
|
|
}
|
2021-07-02 13:55:49 +02:00
|
|
|
}
|