diff --git a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt index 1d2ea33b..c9f532cc 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt @@ -1087,12 +1087,8 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel return dbManager.downloadDao.getDownloadIDsNotPresentInList(items.ifEmpty { listOf(-1L) }, status.map { it.toString() }) } - suspend fun moveProcessingToSavedCategory(selectedItems: List?){ - if (selectedItems.isNullOrEmpty()) { - dao.updateProcessingtoSavedStatus() - }else { - repository.setDownloadStatusMultiple(selectedItems, DownloadRepository.Status.Saved) - } + suspend fun moveProcessingToSavedCategory(){ + dao.updateProcessingtoSavedStatus() } @@ -1210,13 +1206,14 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel selectedItems } - moveProcessingToSavedCategory(selectedItems) + moveProcessingToSavedCategory() val id = System.currentTimeMillis().toInt() val workRequest = OneTimeWorkRequestBuilder() .setInputData( Data.Builder() .putLongArray("ids", ids.toLongArray()) + .putLongArray("other_ids_in_bundle", selectedItems?.toLongArray() ?: longArrayOf()) .putInt("id", id) .build()) .addTag("updateFormats") diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt index c8c80a51..49a2770a 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt @@ -109,6 +109,7 @@ class DownloadMultipleBottomSheetDialog : BottomSheetDialogFragment(), Configure private lateinit var multipleSelectHeader: ConstraintLayout private lateinit var selectItemsMenuBtn: MaterialButton private lateinit var selectRangeBtn: MaterialButton + private lateinit var selectItemsOpenBtn: MaterialButton override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -316,7 +317,7 @@ class DownloadMultipleBottomSheetDialog : BottomSheetDialogFragment(), Configure dd.setPositiveButton(getString(R.string.ok)) { _: DialogInterface?, _: Int -> lifecycleScope.launch{ withContext(Dispatchers.IO){ - downloadViewModel.moveProcessingToSavedCategory(null) + downloadViewModel.moveProcessingToSavedCategory() historyViewModel.deleteAllWithIDsCheckFiles(currentHistoryIDs) } @@ -525,25 +526,6 @@ class DownloadMultipleBottomSheetDialog : BottomSheetDialogFragment(), Configure intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION) pathResultLauncher.launch(intent) } - R.id.select_items -> { - if (listAdapter.isCheckingItems()) { - multipleSelectHeader.isVisible = false - view.findViewById(R.id.downloadHeader).isVisible = true - filesize.isVisible = itemsFileSize > 0L - selectRangeBtn.isVisible = false - count.text = "${currentDownloadIDs.size} ${getString(R.string.selected)}" - listAdapter.clearCheckedItems() - }else { - multipleSelectHeader.apply { - isVisible = true - } - view.findViewById(R.id.downloadHeader).isVisible = false - filesize.isVisible = false - listAdapter.initCheckingItems(currentDownloadIDs) - selectRangeBtn.isVisible = true - count.text = "0 ${getString(R.string.selected)}" - } - } R.id.incognito -> { lifecycleScope.launch { if (m.icon!!.alpha == 255) { @@ -812,6 +794,19 @@ class DownloadMultipleBottomSheetDialog : BottomSheetDialogFragment(), Configure } } + selectItemsOpenBtn = view.findViewById(R.id.selectItemsOpenBtn) + selectItemsOpenBtn.setOnClickListener { + multipleSelectHeader.apply { + isVisible = true + } + view.findViewById(R.id.downloadHeader).isVisible = false + filesize.isVisible = false + listAdapter.initCheckingItems(currentDownloadIDs) + selectRangeBtn.isVisible = true + count.text = "0 ${getString(R.string.selected)}" + selectItemsOpenBtn.isVisible = false + } + multipleSelectHeader = view.findViewById(R.id.multipleSelectHeader) selectItemsMenuBtn = view.findViewById(R.id.selectItemsMenu) selectItemsMenuBtn.setOnClickListener { @@ -892,6 +887,7 @@ class DownloadMultipleBottomSheetDialog : BottomSheetDialogFragment(), Configure filesize.isVisible = itemsFileSize > 0 count.text = "${currentDownloadIDs.size} ${getString(R.string.selected)}" selectRangeBtn.isVisible = false + selectItemsOpenBtn.isVisible = true listAdapter.clearCheckedItems() } diff --git a/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt index 3e8666b6..f5229c0e 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt @@ -2048,38 +2048,50 @@ object UiUtil { fun checkRanges(start: String, end: String) : Boolean { + val res: Boolean + fromTextInput.error = "" toTextInput.error = "" - if (start.isBlank() || end.isBlank()) return false + if (start.isBlank() || end.isBlank()){ + res = false + }else{ + val startValid = kotlin.runCatching { + start.toInt() > 0 + }.getOrElse { false } - val startValid = start.toInt() >= 0 - val endValid = end.toInt() <= itemCount + val endValid = kotlin.runCatching { + end.toInt() <= itemCount + }.getOrElse { false } - if (!startValid) { - fromTextInput.editText?.setText("") - fromTextInput.error = "Invalid Number" - } - if (!endValid) { - toTextInput.editText?.setText("") - toTextInput.error = "Invalid Number" + if (!startValid) { + fromTextInput.error = "Invalid Number" + } + if (!endValid) { + toTextInput.error = "Invalid Number" + } + + res = startValid && endValid } - dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = startValid && endValid - return startValid && endValid + dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = res + return res } - fromTextInput.editText!!.doAfterTextChanged { editable -> - val start = editable.toString() + fromTextInput.editText!!.doOnTextChanged { text, _, _, _ -> + val start = text.toString() val end = toTextInput.editText!!.text.toString() checkRanges(start, end) } - toTextInput.editText!!.doAfterTextChanged { editable -> + toTextInput.editText!!.doOnTextChanged { text, _, _, _ -> val start = fromTextInput.editText!!.text.toString() - val end = editable.toString() + val end = text.toString() checkRanges(start, end) } + + fromTextInput.editText!!.setText("1") + toTextInput.editText!!.setText(itemCount.toString()) } private fun createPersonalFilenameTemplateChip(context: Activity, text: String, myChipGroup: ChipGroup, onClick: (f: Chip) -> Unit, onLongClick: (f: Chip) -> Unit) : Chip { diff --git a/app/src/main/java/com/deniscerri/ytdl/work/UpdateMultipleDownloadsFormatsWorker.kt b/app/src/main/java/com/deniscerri/ytdl/work/UpdateMultipleDownloadsFormatsWorker.kt index cd06064d..f1f544f6 100644 --- a/app/src/main/java/com/deniscerri/ytdl/work/UpdateMultipleDownloadsFormatsWorker.kt +++ b/app/src/main/java/com/deniscerri/ytdl/work/UpdateMultipleDownloadsFormatsWorker.kt @@ -27,6 +27,7 @@ class UpdateMultipleDownloadsFormatsWorker( val vm = DownloadViewModel(App.instance) val notificationUtil = NotificationUtil(context) val ids = inputData.getLongArray("ids")!!.toMutableList() + val otherIdsInBundle = inputData.getLongArray("other_ids_in_bundle")!!.toMutableList() val workID = inputData.getInt("id", 0) if (workID == 0) return Result.failure() @@ -80,7 +81,7 @@ class UpdateMultipleDownloadsFormatsWorker( Result.failure() }finally { if (ids.isNotEmpty()){ - notificationUtil.showFormatsUpdatedNotification(ids) + notificationUtil.showFormatsUpdatedNotification(ids + otherIdsInBundle) } } } diff --git a/app/src/main/res/layout/download_multiple_bottom_sheet.xml b/app/src/main/res/layout/download_multiple_bottom_sheet.xml index 1eede8b6..27b3b0d3 100644 --- a/app/src/main/res/layout/download_multiple_bottom_sheet.xml +++ b/app/src/main/res/layout/download_multiple_bottom_sheet.xml @@ -197,7 +197,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/selectRangeBtn" + app:layout_constraintEnd_toStartOf="@+id/selectActionButtons" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -207,7 +207,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingHorizontal="20dp" - android:paddingTop="10dp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" @@ -231,31 +230,52 @@ - - - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + @@ -265,7 +285,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:paddingTop="10dp" android:paddingBottom="85dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> diff --git a/app/src/main/res/layout/select_range_dialog.xml b/app/src/main/res/layout/select_range_dialog.xml index c8be07e6..ce1ac584 100644 --- a/app/src/main/res/layout/select_range_dialog.xml +++ b/app/src/main/res/layout/select_range_dialog.xml @@ -19,6 +19,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="45" + app:errorTextAppearance="@style/MyZeroSizeTextAppearance" android:layout_marginEnd="10dp" android:hint="@string/start"> @@ -36,6 +37,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/end" + app:errorTextAppearance="@style/MyZeroSizeTextAppearance" android:layout_weight="45" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/colon"> diff --git a/app/src/main/res/menu/download_multiple_menu.xml b/app/src/main/res/menu/download_multiple_menu.xml index f02e190d..e78ffb3e 100644 --- a/app/src/main/res/menu/download_multiple_menu.xml +++ b/app/src/main/res/menu/download_multiple_menu.xml @@ -28,13 +28,6 @@ app:actionLayout="@layout/bottom_app_bar_text" app:showAsAction="always"/> - - - false + + +