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 android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.preference.EditTextPreference
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 com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -187,6 +189,14 @@ class SettingsFragment :
this ?: return false this ?: return false
when (key) { 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" -> { "dark_mode" -> {
AppCompatDelegate.setDefaultNightMode(when (newValue as Boolean) { AppCompatDelegate.setDefaultNightMode(when (newValue as Boolean) {
true -> AppCompatDelegate.MODE_NIGHT_YES true -> AppCompatDelegate.MODE_NIGHT_YES
@@ -282,6 +292,10 @@ class SettingsFragment :
onPreferenceClickListener = this@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" -> { "download_folder" -> {
summary = FileX(context, Preferences.get<String>("download_folder")).canonicalPath 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)>( val formatMap = mapOf<String, GalleryBlock.() -> (String)>(
"-id-" to { id.toString() }, "-id-" to { id.toString() },
"-title-" to { title }, "-title-" to { title },
"-artist-" to { artists.joinToString() }
// TODO // TODO
) )
/** /**
* Formats download folder name with given Metadata * Formats download folder name with given Metadata
*/ */
fun GalleryBlock.formatDownloadFolder(): String = fun GalleryBlock.formatDownloadFolder(): String =
Preferences["download_folder_format", "-id-"].let { Preferences["download_folder_name", "-id-"].let {
formatMap.entries.fold(it) { str, (k, v) -> formatMap.entries.fold(it) { str, (k, v) ->
str.replace(k, v.invoke(this), true) str.replace(k, v.invoke(this), true)
} }

View File

@@ -143,4 +143,7 @@
<string name="channel_downloader">ダウンローダ</string> <string name="channel_downloader">ダウンローダ</string>
<string name="channel_downloader_description">ダウンローダの状態を表示</string> <string name="channel_downloader_description">ダウンローダの状態を表示</string>
<string name="downloader_running">ダウンローダー起動中</string> <string name="downloader_running">ダウンローダー起動中</string>
<string name="settings_download_folder_name">フォルダ名パターン</string>
<string name="settings_invalid_download_folder_name">フォルダ名に使用できない文字が含まれています</string>
<string name="settings_download_folder_name_message">%sに含まれている文字列を対応する変数に置換します</string>
</resources> </resources>

View File

@@ -143,4 +143,7 @@
<string name="channel_downloader">다운로더</string> <string name="channel_downloader">다운로더</string>
<string name="channel_downloader_description">다운로더 작동 여부 표시</string> <string name="channel_downloader_description">다운로더 작동 여부 표시</string>
<string name="downloader_running">다운로더 작동중…</string> <string name="downloader_running">다운로더 작동중…</string>
<string name="settings_download_folder_name">폴더명 패턴</string>
<string name="settings_invalid_download_folder_name">폴더 패턴에 사용할 수 없는 문자가 포함되어 있습니다</string>
<string name="settings_download_folder_name_message">지원되는 변수는 %s 입니다</string>
</resources> </resources>

View File

@@ -135,7 +135,10 @@
<string name="settings_clear_history">Clear history</string> <string name="settings_clear_history">Clear history</string>
<string name="settings_clear_history_alert_message">Do you want to clear histories?</string> <string name="settings_clear_history_alert_message">Do you want to clear histories?</string>
<string name="settings_clear_history_summary">%1$d histories saved</string> <string name="settings_clear_history_summary">%1$d histories saved</string>
<string name="settings_download_folder">Download directory</string> <string name="settings_download_folder_name">Folder naming pattern</string>
<string name="settings_invalid_download_folder_name">Folder naming pattern is containing invalid characters</string>
<string name="settings_download_folder_name_message">Text %s will be replaced to its corresponding value</string>
<string name="settings_download_folder">Download folder</string>
<string name="settings_download_folder_removable">Removable Storage</string> <string name="settings_download_folder_removable">Removable Storage</string>
<string name="settings_download_folder_internal">Internal Storage</string> <string name="settings_download_folder_internal">Internal Storage</string>
<string name="settings_download_folder_available">%s available</string> <string name="settings_download_folder_available">%s available</string>

View File

@@ -43,6 +43,12 @@
app:key="clear_history" app:key="clear_history"
app:title="@string/settings_clear_history"/> app:title="@string/settings_clear_history"/>
<EditTextPreference
app:key="download_folder_name"
app:title="@string/settings_download_folder_name"
app:defaultValue="-id-"
app:useSimpleSummaryProvider="true"/>
<Preference <Preference
app:key="download_folder" app:key="download_folder"
app:title="@string/settings_download_folder"/> app:title="@string/settings_download_folder"/>