@@ -21,6 +21,7 @@ import com.kelsos.mbrc.BaseActivity
2121import com.kelsos.mbrc.R
2222import kotlinx.coroutines.launch
2323import org.koin.android.ext.android.inject
24+ import timber.log.Timber
2425
2526class LibraryActivity :
2627 BaseActivity (R .layout.activity_library),
@@ -111,6 +112,7 @@ class LibraryActivity :
111112 syncComplete(event.stats)
112113 hideSyncProgress()
113114 }
115+
114116 is LibraryUiEvent .UpdateAlbumArtistOnly -> updateArtistOnlyPreference(event.enabled)
115117 is LibraryUiEvent .LibrarySyncFailed -> {
116118 syncFailure()
@@ -120,6 +122,17 @@ class LibraryActivity :
120122 }
121123 }
122124 }
125+
126+ lifecycleScope.launch {
127+ viewModel.progress.collect { progress ->
128+ Timber .v(" progress: $progress " )
129+ if (progress.running) {
130+ showSyncProgress(progress)
131+ } else {
132+ hideSyncProgress()
133+ }
134+ }
135+ }
123136 }
124137
125138 override fun onCreateOptionsMenu (menu : Menu ): Boolean {
@@ -141,16 +154,17 @@ class LibraryActivity :
141154 when (item.itemId) {
142155 R .id.library_refresh_item -> {
143156 viewModel.sync()
144- showSyncProgress()
145157 true
146158 }
159+
147160 R .id.library_album_artist -> {
148161 albumArtistOnly?.let {
149162 it.isChecked = ! it.isChecked
150163 viewModel.updateAlbumArtistOnly(it.isChecked)
151164 }
152165 true
153166 }
167+
154168 R .id.library_search_clear -> {
155169 supportActionBar?.setTitle(R .string.nav_library)
156170 supportActionBar?.subtitle = " "
@@ -159,6 +173,7 @@ class LibraryActivity :
159173 searchClear?.isVisible = false
160174 true
161175 }
176+
162177 R .id.library_sync_state -> {
163178 viewModel.displayLibraryStats()
164179 true
@@ -222,9 +237,25 @@ class LibraryActivity :
222237 Snackbar .make(pager, R .string.library__sync_failed, Snackbar .LENGTH_LONG ).show()
223238 }
224239
225- fun showSyncProgress () {
226- findViewById<LinearProgressIndicator >(R .id.sync_progress).isGone = false
227- findViewById<TextView >(R .id.sync_progress_text).isGone = false
240+ fun getCategoryText (mediaType : LibraryMediaType ): String =
241+ when (mediaType) {
242+ LibraryMediaType .Albums -> getString(R .string.media__albums)
243+ LibraryMediaType .Artists -> getString(R .string.media__artists)
244+ LibraryMediaType .Genres -> getString(R .string.media__genres)
245+ LibraryMediaType .Playlists -> getString(R .string.media__playlists)
246+ LibraryMediaType .Tracks -> getString(R .string.media__tracks)
247+ LibraryMediaType .Covers -> getString(R .string.media__covers)
248+ }
249+
250+ fun showSyncProgress (progress : LibrarySyncProgress ) {
251+ val syncText = findViewById<TextView >(R .id.sync_progress_text)
252+ val progressIndicator = findViewById<LinearProgressIndicator >(R .id.sync_progress)
253+ val categoryText = getCategoryText(progress.category)
254+ syncText.isGone = false
255+ syncText.text = getString(R .string.library__sync_progress, progress.current, progress.total, categoryText)
256+ progressIndicator.isGone = false
257+ progressIndicator.progress = progress.current
258+ progressIndicator.max = progress.total
228259 }
229260
230261 fun hideSyncProgress () {
0 commit comments