diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt index 3c7d614c0..d305277de 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt @@ -384,13 +384,14 @@ constructor( Naming.simple() } val locations = musicSettings.musicLocations + val ignoreHidden = musicSettings.ignoreHidden val currentRevision = musicSettings.revision val newRevision = currentRevision?.takeIf { withCache } ?: UUID.randomUUID() val cache = if (withCache) storedCache.visible() else storedCache.invisible() val covers = settingCovers.create(context, newRevision) val storage = Storage(cache, covers, storedPlaylists) - val interpretation = Interpretation(nameFactory, separators) + val interpretation = Interpretation(nameFactory, separators, ignoreHidden) val result = Musikr.new(context, storage, interpretation).run(locations, ::emitIndexingProgress) diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt index be518bfa2..d94d6ec4c 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt @@ -40,6 +40,8 @@ interface MusicSettings : Settings { var musicLocations: List /** Whether to exclude non-music audio files from the music library. */ val excludeNonMusic: Boolean + /** Whether to ignore hidden files and directories during music loading. */ + val ignoreHidden: Boolean /** Whether to be actively watching for changes in the music library. */ val shouldBeObserving: Boolean /** A [String] of characters representing the desired characters to denote multi-value tags. */ @@ -90,6 +92,9 @@ class MusicSettingsImpl @Inject constructor(@ApplicationContext private val cont override val excludeNonMusic: Boolean get() = sharedPreferences.getBoolean(getString(R.string.set_key_exclude_non_music), true) + override val ignoreHidden: Boolean + get() = sharedPreferences.getBoolean(getString(R.string.set_key_ignore_hidden), true) + override val shouldBeObserving: Boolean get() = sharedPreferences.getBoolean(getString(R.string.set_key_observing), false) @@ -116,7 +121,9 @@ class MusicSettingsImpl @Inject constructor(@ApplicationContext private val cont listener.onMusicLocationsChanged() } getString(R.string.set_key_separators), - getString(R.string.set_key_auto_sort_names) -> { + getString(R.string.set_key_auto_sort_names), + getString(R.string.set_key_ignore_hidden), + getString(R.string.set_key_exclude_non_music) -> { L.d("Dispatching indexing setting change for $key") listener.onIndexingSettingChanged() } diff --git a/app/src/main/java/org/oxycblt/auxio/settings/categories/MusicPreferenceFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/categories/MusicPreferenceFragment.kt index 8727aba3d..9707afae0 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/categories/MusicPreferenceFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/categories/MusicPreferenceFragment.kt @@ -67,5 +67,14 @@ class MusicPreferenceFragment : BasePreferenceFragment(R.xml.preferences_music) true } } + if (preference.key == getString(R.string.set_key_ignore_hidden)) { + L.d("Configuring ignore hidden files setting") + preference.onPreferenceChangeListener = + Preference.OnPreferenceChangeListener { _, _ -> + L.d("Ignore hidden files setting changed, reloading music") + musicModel.refresh() + true + } + } } } diff --git a/app/src/main/res/xml/preferences_music.xml b/app/src/main/res/xml/preferences_music.xml index 607f2c7f2..d164aed5c 100644 --- a/app/src/main/res/xml/preferences_music.xml +++ b/app/src/main/res/xml/preferences_music.xml @@ -14,6 +14,12 @@ app:key="@string/set_key_exclude_non_music" app:summary="@string/set_exclude_non_music_desc" app:title="@string/set_exclude_non_music" /> + + - \ No newline at end of file +