Added download folder name change

This commit is contained in:
tom5079
2020-09-02 12:58:31 +09:00
parent f70eccb1da
commit fc6bc7965c
6 changed files with 32 additions and 2 deletions

View File

@@ -23,9 +23,11 @@ import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDelegate
import androidx.preference.EditTextPreference
import androidx.preference.Preference
import androidx.preference.PreferenceCategory
import androidx.preference.PreferenceFragmentCompat
import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -187,6 +189,14 @@ class SettingsFragment :
this ?: return false
when (key) {
"download_folder_name" -> {
if ((newValue as? String)?.contains("/") != false) {
val view = view ?: return false
Snackbar.make(view, R.string.settings_invalid_download_folder_name, Snackbar.LENGTH_SHORT).show()
return false
}
}
"dark_mode" -> {
AppCompatDelegate.setDefaultNightMode(when (newValue as Boolean) {
true -> AppCompatDelegate.MODE_NIGHT_YES
@@ -282,6 +292,10 @@ class SettingsFragment :
onPreferenceClickListener = this@SettingsFragment
}
"download_folder_name" -> {
(this as EditTextPreference).dialogMessage = getString(R.string.settings_download_folder_name_message, formatMap.keys.toString())
onPreferenceChangeListener = this@SettingsFragment
}
"download_folder" -> {
summary = FileX(context, Preferences.get<String>("download_folder")).canonicalPath

View File

@@ -91,13 +91,14 @@ fun OkHttpClient.Builder.proxyInfo(proxyInfo: ProxyInfo) = this.apply {
val formatMap = mapOf<String, GalleryBlock.() -> (String)>(
"-id-" to { id.toString() },
"-title-" to { title },
"-artist-" to { artists.joinToString() }
// TODO
)
/**
* Formats download folder name with given Metadata
*/
fun GalleryBlock.formatDownloadFolder(): String =
Preferences["download_folder_format", "-id-"].let {
Preferences["download_folder_name", "-id-"].let {
formatMap.entries.fold(it) { str, (k, v) ->
str.replace(k, v.invoke(this), true)
}