diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt index 32662680..276375bf 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt @@ -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("download_folder")).canonicalPath diff --git a/app/src/main/java/xyz/quaver/pupil/util/misc.kt b/app/src/main/java/xyz/quaver/pupil/util/misc.kt index cb625834..55c7945d 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/misc.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/misc.kt @@ -91,13 +91,14 @@ fun OkHttpClient.Builder.proxyInfo(proxyInfo: ProxyInfo) = this.apply { val formatMap = mapOf (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) } diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 6b3eb9fb..f8bf1d22 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -143,4 +143,7 @@ ダウンローダ ダウンローダの状態を表示 ダウンローダー起動中 + フォルダ名パターン + フォルダ名に使用できない文字が含まれています + %sに含まれている文字列を対応する変数に置換します \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 07134430..8b9f7a33 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -143,4 +143,7 @@ 다운로더 다운로더 작동 여부 표시 다운로더 작동중… + 폴더명 패턴 + 폴더 패턴에 사용할 수 없는 문자가 포함되어 있습니다 + 지원되는 변수는 %s 입니다 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9e926c27..d45a0b99 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -135,7 +135,10 @@ Clear history Do you want to clear histories? %1$d histories saved - Download directory + Folder naming pattern + Folder naming pattern is containing invalid characters + Text %s will be replaced to its corresponding value + Download folder Removable Storage Internal Storage %s available diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 0655a0be..4c54cd23 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -43,6 +43,12 @@ app:key="clear_history" app:title="@string/settings_clear_history"/> + +