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)
}

View File

@@ -143,4 +143,7 @@
<string name="channel_downloader">ダウンローダ</string>
<string name="channel_downloader_description">ダウンローダの状態を表示</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>

View File

@@ -143,4 +143,7 @@
<string name="channel_downloader">다운로더</string>
<string name="channel_downloader_description">다운로더 작동 여부 표시</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>

View File

@@ -135,7 +135,10 @@
<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_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_internal">Internal Storage</string>
<string name="settings_download_folder_available">%s available</string>

View File

@@ -43,6 +43,12 @@
app:key="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
app:key="download_folder"
app:title="@string/settings_download_folder"/>