mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-02-18 04:30:48 +01:00
Cleanup issues
This commit is contained in:
parent
e5f7ca6310
commit
5fe1921ca5
@ -16,6 +16,8 @@ import androidx.preference.ListPreference
|
|||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceCategory
|
import androidx.preference.PreferenceCategory
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
|
import java.io.File
|
||||||
|
import kotlin.math.ceil
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.java.KoinJavaComponent.get
|
import org.koin.java.KoinJavaComponent.get
|
||||||
import org.koin.java.KoinJavaComponent.inject
|
import org.koin.java.KoinJavaComponent.inject
|
||||||
@ -40,7 +42,6 @@ import org.moire.ultrasonic.util.FileUtil.ultrasonicDirectory
|
|||||||
import org.moire.ultrasonic.util.MediaSessionHandler
|
import org.moire.ultrasonic.util.MediaSessionHandler
|
||||||
import org.moire.ultrasonic.util.PermissionUtil
|
import org.moire.ultrasonic.util.PermissionUtil
|
||||||
import org.moire.ultrasonic.util.PermissionUtil.Companion.requestInitialPermission
|
import org.moire.ultrasonic.util.PermissionUtil.Companion.requestInitialPermission
|
||||||
import org.moire.ultrasonic.util.PermissionUtil.PermissionRequestFinishedCallback
|
|
||||||
import org.moire.ultrasonic.util.Settings
|
import org.moire.ultrasonic.util.Settings
|
||||||
import org.moire.ultrasonic.util.Settings.preferences
|
import org.moire.ultrasonic.util.Settings.preferences
|
||||||
import org.moire.ultrasonic.util.Settings.shareGreeting
|
import org.moire.ultrasonic.util.Settings.shareGreeting
|
||||||
@ -50,13 +51,14 @@ import org.moire.ultrasonic.util.TimeSpanPreference
|
|||||||
import org.moire.ultrasonic.util.TimeSpanPreferenceDialogFragmentCompat
|
import org.moire.ultrasonic.util.TimeSpanPreferenceDialogFragmentCompat
|
||||||
import org.moire.ultrasonic.util.Util.toast
|
import org.moire.ultrasonic.util.Util.toast
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.io.File
|
|
||||||
import kotlin.math.ceil
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows main app settings.
|
* Shows main app settings.
|
||||||
*/
|
*/
|
||||||
class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeListener, KoinComponent {
|
class SettingsFragment :
|
||||||
|
PreferenceFragmentCompat(),
|
||||||
|
OnSharedPreferenceChangeListener,
|
||||||
|
KoinComponent {
|
||||||
private var theme: ListPreference? = null
|
private var theme: ListPreference? = null
|
||||||
private var maxBitrateWifi: ListPreference? = null
|
private var maxBitrateWifi: ListPreference? = null
|
||||||
private var maxBitrateMobile: ListPreference? = null
|
private var maxBitrateMobile: ListPreference? = null
|
||||||
@ -227,30 +229,29 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis
|
|||||||
cacheLocation!!.summary = Settings.cacheLocation
|
cacheLocation!!.summary = Settings.cacheLocation
|
||||||
cacheLocation!!.onPreferenceClickListener =
|
cacheLocation!!.onPreferenceClickListener =
|
||||||
Preference.OnPreferenceClickListener {
|
Preference.OnPreferenceClickListener {
|
||||||
// If the user tries to change the cache location, we must first check to see if we have write access.
|
// If the user tries to change the cache location,
|
||||||
|
// we must first check to see if we have write access.
|
||||||
requestInitialPermission(
|
requestInitialPermission(
|
||||||
requireActivity(),
|
requireActivity()
|
||||||
object : PermissionRequestFinishedCallback {
|
) {
|
||||||
override fun onPermissionRequestFinished(hasPermission: Boolean) {
|
if (it) {
|
||||||
if (hasPermission) {
|
val filePickerDialog = createFilePickerDialog(
|
||||||
val filePickerDialog = createFilePickerDialog(
|
requireContext()
|
||||||
context!!
|
)
|
||||||
)
|
filePickerDialog.setDefaultDirectory(defaultMusicDirectory.path)
|
||||||
filePickerDialog.setDefaultDirectory(defaultMusicDirectory.path)
|
filePickerDialog.setInitialDirectory(cacheLocation!!.summary.toString())
|
||||||
filePickerDialog.setInitialDirectory(cacheLocation!!.summary.toString())
|
filePickerDialog.setOnFileSelectedListener(object :
|
||||||
filePickerDialog.setOnFileSelectedListener(object :
|
OnFileSelectedListener {
|
||||||
OnFileSelectedListener {
|
override fun onFileSelected(file: File?, path: String?) {
|
||||||
override fun onFileSelected(file: File?, path: String?) {
|
if (path != null) {
|
||||||
if (path != null) {
|
Settings.cacheLocation = path
|
||||||
Settings.cacheLocation = path
|
setCacheLocation(path)
|
||||||
setCacheLocation(path)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
filePickerDialog.show()
|
})
|
||||||
}
|
filePickerDialog.show()
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -308,9 +309,15 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis
|
|||||||
|
|
||||||
private fun bluetoothDevicePreferenceToString(preferenceValue: Int): String {
|
private fun bluetoothDevicePreferenceToString(preferenceValue: Int): String {
|
||||||
return when (preferenceValue) {
|
return when (preferenceValue) {
|
||||||
Constants.PREFERENCE_VALUE_ALL -> getString(R.string.settings_playback_bluetooth_all)
|
Constants.PREFERENCE_VALUE_ALL -> {
|
||||||
Constants.PREFERENCE_VALUE_A2DP -> getString(R.string.settings_playback_bluetooth_a2dp)
|
getString(R.string.settings_playback_bluetooth_all)
|
||||||
Constants.PREFERENCE_VALUE_DISABLED -> getString(R.string.settings_playback_bluetooth_disabled)
|
}
|
||||||
|
Constants.PREFERENCE_VALUE_A2DP -> {
|
||||||
|
getString(R.string.settings_playback_bluetooth_a2dp)
|
||||||
|
}
|
||||||
|
Constants.PREFERENCE_VALUE_DISABLED -> {
|
||||||
|
getString(R.string.settings_playback_bluetooth_disabled)
|
||||||
|
}
|
||||||
else -> ""
|
else -> ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -415,12 +422,10 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis
|
|||||||
private fun setCacheLocation(path: String) {
|
private fun setCacheLocation(path: String) {
|
||||||
val dir = File(path)
|
val dir = File(path)
|
||||||
if (!ensureDirectoryExistsAndIsReadWritable(dir)) {
|
if (!ensureDirectoryExistsAndIsReadWritable(dir)) {
|
||||||
permissionUtil.value.handlePermissionFailed(object : PermissionRequestFinishedCallback {
|
permissionUtil.value.handlePermissionFailed {
|
||||||
override fun onPermissionRequestFinished(hasPermission: Boolean) {
|
val currentPath = Settings.cacheLocation
|
||||||
val currentPath = Settings.cacheLocation
|
cacheLocation!!.summary = currentPath
|
||||||
cacheLocation!!.summary = currentPath
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
cacheLocation!!.summary = path
|
cacheLocation!!.summary = path
|
||||||
}
|
}
|
||||||
@ -444,19 +449,22 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis
|
|||||||
ceil(fileSize / 1000 * 1000.0).toString(),
|
ceil(fileSize / 1000 * 1000.0).toString(),
|
||||||
ultrasonicDirectory
|
ultrasonicDirectory
|
||||||
)
|
)
|
||||||
|
val keep = R.string.settings_debug_log_keep
|
||||||
|
val delete = R.string.settings_debug_log_delete
|
||||||
AlertDialog.Builder(activity)
|
AlertDialog.Builder(activity)
|
||||||
.setMessage(message)
|
.setMessage(message)
|
||||||
.setIcon(android.R.drawable.ic_dialog_info)
|
.setIcon(android.R.drawable.ic_dialog_info)
|
||||||
.setNegativeButton(R.string.settings_debug_log_keep) { dialogInterface: DialogInterface, _: Int ->
|
.setNegativeButton(keep) { dIf: DialogInterface, _: Int ->
|
||||||
dialogInterface.cancel()
|
dIf.cancel()
|
||||||
}
|
}
|
||||||
.setPositiveButton(R.string.settings_debug_log_delete) { dialogInterface: DialogInterface, _: Int ->
|
.setPositiveButton(delete) { dIf: DialogInterface, _: Int ->
|
||||||
deleteLogFiles()
|
deleteLogFiles()
|
||||||
Timber.i("Deleted debug log files")
|
Timber.i("Deleted debug log files")
|
||||||
dialogInterface.dismiss()
|
dIf.dismiss()
|
||||||
AlertDialog.Builder(activity).setMessage(R.string.settings_debug_log_deleted)
|
AlertDialog.Builder(activity)
|
||||||
.setPositiveButton(R.string.common_ok) { dialogInterface1: DialogInterface, _: Int ->
|
.setMessage(R.string.settings_debug_log_deleted)
|
||||||
dialogInterface1.dismiss()
|
.setPositiveButton(R.string.common_ok) { dIf2: DialogInterface, _: Int ->
|
||||||
|
dIf2.dismiss()
|
||||||
}
|
}
|
||||||
.create().show()
|
.create().show()
|
||||||
}
|
}
|
||||||
|
@ -22,10 +22,6 @@ import timber.log.Timber
|
|||||||
class PermissionUtil(private val applicationContext: Context) {
|
class PermissionUtil(private val applicationContext: Context) {
|
||||||
private var activityContext: Context? = null
|
private var activityContext: Context? = null
|
||||||
|
|
||||||
interface PermissionRequestFinishedCallback {
|
|
||||||
fun onPermissionRequestFinished(hasPermission: Boolean)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun onForegroundApplicationStarted(context: Context?) {
|
fun onForegroundApplicationStarted(context: Context?) {
|
||||||
activityContext = context
|
activityContext = context
|
||||||
}
|
}
|
||||||
@ -42,7 +38,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
*
|
*
|
||||||
* @param callback callback function to execute after the permission request is finished
|
* @param callback callback function to execute after the permission request is finished
|
||||||
*/
|
*/
|
||||||
fun handlePermissionFailed(callback: PermissionRequestFinishedCallback?) {
|
fun handlePermissionFailed(callback: ((Boolean) -> Unit)?) {
|
||||||
val currentCachePath = Settings.cacheLocation
|
val currentCachePath = Settings.cacheLocation
|
||||||
val defaultCachePath = defaultMusicDirectory.path
|
val defaultCachePath = defaultMusicDirectory.path
|
||||||
|
|
||||||
@ -76,7 +72,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
callback?.onPermissionRequestFinished(false)
|
callback?.invoke(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +87,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun requestInitialPermission(
|
fun requestInitialPermission(
|
||||||
context: Context,
|
context: Context,
|
||||||
callback: PermissionRequestFinishedCallback?
|
callback: ((Boolean) -> Unit)?
|
||||||
) {
|
) {
|
||||||
Dexter.withContext(context)
|
Dexter.withContext(context)
|
||||||
.withPermissions(
|
.withPermissions(
|
||||||
@ -102,7 +98,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
override fun onPermissionsChecked(report: MultiplePermissionsReport) {
|
override fun onPermissionsChecked(report: MultiplePermissionsReport) {
|
||||||
if (report.areAllPermissionsGranted()) {
|
if (report.areAllPermissionsGranted()) {
|
||||||
Timber.i("R/W permission granted for external storage")
|
Timber.i("R/W permission granted for external storage")
|
||||||
callback?.onPermissionRequestFinished(true)
|
callback?.invoke(true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (report.isAnyPermissionPermanentlyDenied) {
|
if (report.isAnyPermissionPermanentlyDenied) {
|
||||||
@ -110,7 +106,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
"R/W permission is permanently denied for external storage"
|
"R/W permission is permanently denied for external storage"
|
||||||
)
|
)
|
||||||
showSettingsDialog(context)
|
showSettingsDialog(context)
|
||||||
callback?.onPermissionRequestFinished(false)
|
callback?.invoke(false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Timber.i("R/W permission is missing for external storage")
|
Timber.i("R/W permission is missing for external storage")
|
||||||
@ -120,7 +116,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
context.getString(R.string.permissions_rationale_description_initial),
|
context.getString(R.string.permissions_rationale_description_initial),
|
||||||
null
|
null
|
||||||
)
|
)
|
||||||
callback?.onPermissionRequestFinished(false)
|
callback?.invoke(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPermissionRationaleShouldBeShown(
|
override fun onPermissionRationaleShouldBeShown(
|
||||||
@ -146,7 +142,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
private fun requestFailedPermission(
|
private fun requestFailedPermission(
|
||||||
context: Context,
|
context: Context,
|
||||||
cacheLocation: String?,
|
cacheLocation: String?,
|
||||||
callback: PermissionRequestFinishedCallback?
|
callback: ((Boolean) -> Unit)?
|
||||||
) {
|
) {
|
||||||
Dexter.withContext(context)
|
Dexter.withContext(context)
|
||||||
.withPermissions(
|
.withPermissions(
|
||||||
@ -161,7 +157,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
if (cacheLocation != null) {
|
if (cacheLocation != null) {
|
||||||
Settings.cacheLocation = cacheLocation
|
Settings.cacheLocation = cacheLocation
|
||||||
}
|
}
|
||||||
callback?.onPermissionRequestFinished(true)
|
callback?.invoke(true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (report.isAnyPermissionPermanentlyDenied) {
|
if (report.isAnyPermissionPermanentlyDenied) {
|
||||||
@ -170,7 +166,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
cacheLocation
|
cacheLocation
|
||||||
)
|
)
|
||||||
showSettingsDialog(context)
|
showSettingsDialog(context)
|
||||||
callback?.onPermissionRequestFinished(false)
|
callback?.invoke(false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Timber.i(
|
Timber.i(
|
||||||
@ -182,7 +178,7 @@ class PermissionUtil(private val applicationContext: Context) {
|
|||||||
context, context.getString(R.string.permissions_message_box_title),
|
context, context.getString(R.string.permissions_message_box_title),
|
||||||
context.getString(R.string.permissions_permission_missing), null
|
context.getString(R.string.permissions_permission_missing), null
|
||||||
)
|
)
|
||||||
callback?.onPermissionRequestFinished(false)
|
callback?.invoke(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPermissionRationaleShouldBeShown(
|
override fun onPermissionRationaleShouldBeShown(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user