From 334b42a908fdf62dbdd6db19c9171e126c9b76d4 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Sat, 15 Apr 2023 10:57:29 +0200 Subject: [PATCH] fixes --- .../ytdlnis/adapter/TemplatesAdapter.kt | 5 +-- .../database/dao/CommandTemplateDao.kt | 5 ++- .../repository/CommandTemplateRepository.kt | 4 +++ .../viewmodel/CommandTemplateViewModel.kt | 4 +++ .../database/viewmodel/DownloadViewModel.kt | 9 +++-- .../DownloadMultipleBottomSheetDialog.kt | 36 ++++++++++++++++++- .../FormatSelectionBottomSheetDialog.kt | 8 ++--- .../ui/more/CommandTemplatesActivity.kt | 7 ++-- .../ytdlnis/ui/more/TerminalActivity.kt | 16 ++++++++- .../com/deniscerri/ytdlnis/util/InfoUtil.kt | 1 + .../com/deniscerri/ytdlnis/util/UiUtil.kt | 1 + .../deniscerri/ytdlnis/work/DownloadWorker.kt | 2 +- .../ytdlnis/work/TerminalDownloadWorker.kt | 6 ++-- .../res/drawable/baseline_high_quality_24.xml | 5 +++ app/src/main/res/layout/activity_terminal.xml | 3 +- .../res/layout/fragment_download_audio.xml | 1 + .../res/layout/fragment_download_video.xml | 1 + app/src/main/res/layout/fragment_more.xml | 3 +- .../main/res/menu/download_multiple_menu.xml | 6 ++++ app/src/main/res/xml/root_preferences.xml | 8 ++--- 20 files changed, 105 insertions(+), 26 deletions(-) create mode 100644 app/src/main/res/drawable/baseline_high_quality_24.xml diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/TemplatesAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/TemplatesAdapter.kt index c753f382..465c2c81 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/TemplatesAdapter.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/TemplatesAdapter.kt @@ -1,6 +1,7 @@ package com.deniscerri.ytdlnis.adapter import android.app.Activity +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -53,7 +54,7 @@ class TemplatesAdapter(onItemClickListener: OnItemClickListener, activity: Activ // } card.setOnClickListener { - onItemClickListener.onItemClick(item!!) + onItemClickListener.onItemClick(item!!, position) } card.setOnLongClickListener { @@ -62,7 +63,7 @@ class TemplatesAdapter(onItemClickListener: OnItemClickListener, activity: Activ } interface OnItemClickListener { - fun onItemClick(commandTemplate: CommandTemplate) + fun onItemClick(commandTemplate: CommandTemplate, index: Int) fun onSelected(commandTemplate: CommandTemplate) fun onDelete(commandTemplate: CommandTemplate) } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/CommandTemplateDao.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/CommandTemplateDao.kt index 6143432a..c94d4853 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/CommandTemplateDao.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/CommandTemplateDao.kt @@ -22,6 +22,9 @@ interface CommandTemplateDao { @Query("SELECT COUNT(id) FROM commandTemplates") fun getTotalNumber() : Int + @Query("SELECT COUNT(id) FROM templateShortcuts") + fun getTotalShortcutNumber() : Int + @Query("SELECT * FROM commandTemplates WHERE id=:id LIMIT 1") fun getTemplate(id: Long) : CommandTemplate @@ -46,6 +49,6 @@ interface CommandTemplateDao { @Query("DELETE FROM templateShortcuts WHERE id=:itemId") suspend fun deleteShortcut(itemId: Long) - @Update(onConflict = OnConflictStrategy.REPLACE) + @Update suspend fun update(item: CommandTemplate) } \ No newline at end of file diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/CommandTemplateRepository.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/CommandTemplateRepository.kt index e53bfbd3..1ff727be 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/CommandTemplateRepository.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/CommandTemplateRepository.kt @@ -17,6 +17,10 @@ class CommandTemplateRepository(private val commandDao: CommandTemplateDao) { return commandDao.getTotalNumber() } + fun getTotalShortcutNumber() : Int { + return commandDao.getTotalShortcutNumber() + } + fun getItem(id: Long) : CommandTemplate { return commandDao.getTemplate(id) } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/CommandTemplateViewModel.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/CommandTemplateViewModel.kt index b77d2f3c..53a3f0b5 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/CommandTemplateViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/CommandTemplateViewModel.kt @@ -49,6 +49,10 @@ class CommandTemplateViewModel(private val application: Application) : AndroidVi return repository.getTotalNumber() } + fun getTotalShortcutNumber(): Int { + return repository.getTotalShortcutNumber() + } + fun insert(item: CommandTemplate) = viewModelScope.launch(Dispatchers.IO) { repository.insert(item) } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt index f8e7bf48..e763bca4 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt @@ -301,14 +301,13 @@ class DownloadViewModel(application: Application) : AndroidViewModel(application } else 0 if (delay < 0L) delay = 0L + val workConstraints = Constraints.Builder() + if (!allowMeteredNetworks) workConstraints.setRequiredNetworkType(NetworkType.UNMETERED) + val workRequest = OneTimeWorkRequestBuilder() .setInputData(Data.Builder().putLong("id", it.id).build()) .addTag("download") - .setConstraints( - Constraints.Builder() - .setRequiredNetworkType(if (allowMeteredNetworks) NetworkType.CONNECTED else NetworkType.UNMETERED) - .build() - ) + .setConstraints(workConstraints.build()) .setInitialDelay(delay, TimeUnit.MILLISECONDS) .build() diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt index ad47a71c..25eb5eac 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt @@ -11,7 +11,6 @@ import android.util.DisplayMetrics import android.util.Log import android.view.* import android.widget.Button -import android.widget.LinearLayout import android.widget.TextView import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts @@ -22,6 +21,7 @@ import androidx.recyclerview.widget.RecyclerView import com.deniscerri.ytdlnis.R import com.deniscerri.ytdlnis.adapter.ConfigureMultipleDownloadsAdapter import com.deniscerri.ytdlnis.database.models.DownloadItem +import com.deniscerri.ytdlnis.database.models.Format import com.deniscerri.ytdlnis.database.viewmodel.CommandTemplateViewModel import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel @@ -33,7 +33,9 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.button.MaterialButton +import com.google.common.collect.Sets import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext @@ -194,11 +196,43 @@ class DownloadMultipleBottomSheetDialog(private var items: MutableList, item: Format) { +// +// } +// } +// if (parentFragmentManager.findFragmentByTag("formatSheet") == null){ +// val bottomSheet = FormatSelectionBottomSheetDialog(null, commonFormats.toList(), listener) +// bottomSheet.show(parentFragmentManager, "formatSheet") +// } } true } + + val itemsLiveData = items.asFlow() } +// private fun getCommonFormats(vararg lists: MutableList>): Set { +// val commons: MutableList = mutableListOf() +// commons.addAll(lists[1]) +// { +// lists[1].forEach { +// commons.retainAll(it) +// } +// } +// +// for (numbers in list) { +// result = Sets.intersection(result, Sets.newHashSet(numbers)) +// } +// return result +// +// +// } + private var pathResultLauncher = registerForActivityResult( ActivityResultContracts.StartActivityForResult() diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/FormatSelectionBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/FormatSelectionBottomSheetDialog.kt index c0b94d0f..6d500fda 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/FormatSelectionBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/FormatSelectionBottomSheetDialog.kt @@ -29,7 +29,7 @@ import kotlinx.coroutines.withContext import java.util.* -class FormatSelectionBottomSheetDialog(private val item: DownloadItem, private var formats: List, private val listener: OnFormatClickListener) : BottomSheetDialogFragment() { +class FormatSelectionBottomSheetDialog(private val item: DownloadItem?, private var formats: List, private val listener: OnFormatClickListener) : BottomSheetDialogFragment() { private lateinit var behavior: BottomSheetBehavior private lateinit var fileUtil: FileUtil private lateinit var infoUtil: InfoUtil @@ -64,7 +64,7 @@ class FormatSelectionBottomSheetDialog(private val item: DownloadItem, private v addFormatsToView(linearLayout) val refreshBtn = view.findViewById