added active downloads badge in the downloads bottom navigation icon

This commit is contained in:
deniscerri 2023-04-24 18:57:11 +02:00
parent d08dcb90e3
commit de044b7968
No known key found for this signature in database
GPG key ID: 95C43D517D830350
6 changed files with 23 additions and 4 deletions

View file

@ -29,6 +29,7 @@ import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.setupWithNavController
import com.deniscerri.ytdlnis.database.viewmodel.CookieViewModel
import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel
import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel
import com.deniscerri.ytdlnis.ui.BaseActivity
import com.deniscerri.ytdlnis.ui.HomeFragment
@ -36,6 +37,7 @@ import com.deniscerri.ytdlnis.ui.downloads.DownloadQueueActivity
import com.deniscerri.ytdlnis.ui.more.settings.SettingsActivity
import com.deniscerri.ytdlnis.util.ThemeUtil
import com.deniscerri.ytdlnis.util.UpdateUtil
import com.google.android.exoplayer2.offline.Download
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.elevation.SurfaceColors
import com.google.android.material.navigation.NavigationBarView
@ -57,6 +59,7 @@ class MainActivity : BaseActivity() {
private lateinit var preferences: SharedPreferences
private lateinit var resultViewModel: ResultViewModel
private lateinit var cookieViewModel: CookieViewModel
private lateinit var downloadViewModel: DownloadViewModel
private lateinit var navigationView: View
private lateinit var navHostFragment : NavHostFragment
@ -68,6 +71,7 @@ class MainActivity : BaseActivity() {
context = baseContext
resultViewModel = ViewModelProvider(this)[ResultViewModel::class.java]
cookieViewModel = ViewModelProvider(this)[CookieViewModel::class.java]
downloadViewModel = ViewModelProvider(this)[DownloadViewModel::class.java]
preferences = context.getSharedPreferences("root_preferences", MODE_PRIVATE)
if (preferences.getBoolean("incognito", false)){
@ -127,6 +131,19 @@ class MainActivity : BaseActivity() {
}
}
}
val activeDownloadsBadge = (navigationView as NavigationBarView).getOrCreateBadge(R.id.historyFragment)
downloadViewModel.activeDownloadsCount.observe(this){
if (it == 0) {
activeDownloadsBadge.isVisible = false
activeDownloadsBadge.clearNumber()
}
else {
activeDownloadsBadge.isVisible = true
activeDownloadsBadge.number = it
}
}
window.navigationBarColor = SurfaceColors.SURFACE_2.getColor(this)
}
if (navigationView is NavigationView){
(navigationView as NavigationView).setCheckedItem(graph.startDestinationId)
@ -160,8 +177,6 @@ class MainActivity : BaseActivity() {
true
}
}
window.navigationBarColor = SurfaceColors.SURFACE_2.getColor(this)
cookieViewModel.updateCookiesFile()
val intent = intent
handleIntents(intent)

View file

@ -13,6 +13,9 @@ interface DownloadDao {
@Query("SELECT * FROM downloads WHERE status='Active'")
fun getActiveDownloads() : LiveData<List<DownloadItem>>
@Query("SELECT COUNT(*) FROM downloads WHERE status='Active'")
fun getActiveDownloadsCount() : LiveData<Int>
@Query("SELECT * FROM downloads WHERE status='Active'")
fun getActiveDownloadsList() : List<DownloadItem>

View file

@ -9,6 +9,7 @@ import com.deniscerri.ytdlnis.database.models.ResultItem
class DownloadRepository(private val downloadDao: DownloadDao) {
val allDownloads : LiveData<List<DownloadItem>> = downloadDao.getAllDownloads()
val activeDownloads : LiveData<List<DownloadItem>> = downloadDao.getActiveDownloads()
val activeDownloadsCount : LiveData<Int> = downloadDao.getActiveDownloadsCount()
val queuedDownloads : LiveData<List<DownloadItem>> = downloadDao.getQueuedDownloads()
val cancelledDownloads : LiveData<List<DownloadItem>> = downloadDao.getCancelledDownloads()
val erroredDownloads : LiveData<List<DownloadItem>> = downloadDao.getErroredDownloads()

View file

@ -33,6 +33,7 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel
val allDownloads : LiveData<List<DownloadItem>>
val queuedDownloads : LiveData<List<DownloadItem>>
val activeDownloads : LiveData<List<DownloadItem>>
val activeDownloadsCount : LiveData<Int>
val cancelledDownloads : LiveData<List<DownloadItem>>
val erroredDownloads : LiveData<List<DownloadItem>>
val processingDownloads : LiveData<List<DownloadItem>>
@ -54,6 +55,7 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel
allDownloads = repository.allDownloads
queuedDownloads = repository.queuedDownloads
activeDownloads = repository.activeDownloads
activeDownloadsCount = repository.activeDownloadsCount
processingDownloads = repository.processingDownloads
cancelledDownloads = repository.cancelledDownloads
erroredDownloads = repository.erroredDownloads

View file

@ -3,5 +3,4 @@
style="@style/Widget.Material3.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Theme.Material3.DayNight"
/>

View file

@ -4,5 +4,4 @@
style="@style/Widget.Material3.Chip.Suggestion.Elevated"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Theme.Material3.DayNight"
/>