From 075dcf874dc9342ad39c0b7d9c5f9fa590c4b221 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Mon, 13 Mar 2023 21:36:50 +0100 Subject: [PATCH] added themed icon for a12 and up & added ability to change scheduled time of a download --- .../ytdlnis/adapter/ActiveDownloadAdapter.kt | 2 + .../ytdlnis/adapter/GenericDownloadAdapter.kt | 4 +- .../downloadcard/DownloadBottomSheetDialog.kt | 46 ++---- .../FormatSelectionBottomSheetDialog.kt | 1 + .../downloads/CancelledDownloadsFragment.kt | 10 +- .../ui/downloads/ErroredDownloadsFragment.kt | 4 + .../ytdlnis/ui/downloads/HistoryFragment.kt | 9 ++ .../ui/downloads/QueuedDownloadsFragment.kt | 31 +++- .../com/deniscerri/ytdlnis/util/UiUtil.kt | 42 ++++++ .../drawable-v24/ic_launcher_foreground.xml | 2 +- .../res/drawable/image_gradient_shape.xml | 11 ++ .../main/res/layout/active_download_card.xml | 138 ++++++++---------- app/src/main/res/layout/history_card.xml | 2 +- .../history_item_details_bottom_sheet.xml | 14 ++ .../res/layout/search_suggestion_item.xml | 22 ++- app/src/main/res/values-night-v31/colors.xml | 9 ++ .../main/res/values-notnight-v31/colors.xml | 9 ++ app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 1 + 19 files changed, 224 insertions(+), 134 deletions(-) create mode 100644 app/src/main/res/drawable/image_gradient_shape.xml create mode 100644 app/src/main/res/values-night-v31/colors.xml create mode 100644 app/src/main/res/values-notnight-v31/colors.xml diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/ActiveDownloadAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/ActiveDownloadAdapter.kt index cc82153b..327c50fb 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/ActiveDownloadAdapter.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/ActiveDownloadAdapter.kt @@ -20,6 +20,7 @@ import com.google.android.material.button.MaterialButton import com.google.android.material.card.MaterialCardView import com.google.android.material.progressindicator.LinearProgressIndicator import com.squareup.picasso.Picasso +import java.util.zip.GZIPOutputStream class ActiveDownloadAdapter(onItemClickListener: OnItemClickListener, activity: Activity) : ListAdapter(AsyncDifferConfig.Builder(DIFF_CALLBACK).build()) { private val onItemClickListener: OnItemClickListener @@ -103,6 +104,7 @@ class ActiveDownloadAdapter(onItemClickListener: OnItemClickListener, activity: val fileSize = card.findViewById(R.id.file_size) fileSize.text = fileUtil.convertFileSize(item.format.filesize) + if (fileSize.text == "?") fileSize.visibility = View.GONE //OUTPUT val output = card.findViewById(R.id.output) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt index 45eefe2f..2e9a69aa 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt @@ -74,7 +74,9 @@ class GenericDownloadAdapter(onItemClickListener: OnItemClickListener, activity: itemUrl.text = item.url val formatNote = card.findViewById(R.id.format_note) - formatNote!!.text = item.format.format_note.uppercase() + if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility = + View.GONE + else formatNote!!.text = item.format.format_note.uppercase() val codec = card.findViewById(R.id.codec) val codecText = diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadBottomSheetDialog.kt index 2249b742..23c3b2e7 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadBottomSheetDialog.kt @@ -22,6 +22,8 @@ import com.deniscerri.ytdlnis.database.models.ResultItem import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel.Type import com.deniscerri.ytdlnis.receiver.ShareActivity +import com.deniscerri.ytdlnis.util.FileUtil +import com.deniscerri.ytdlnis.util.UiUtil import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.button.MaterialButton @@ -34,6 +36,7 @@ import com.google.android.material.timepicker.TimeFormat import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import java.io.File import java.util.* @@ -44,11 +47,13 @@ class DownloadBottomSheetDialog(private val resultItem: ResultItem, private val private lateinit var downloadViewModel: DownloadViewModel private lateinit var behavior: BottomSheetBehavior private lateinit var commandTemplateDao : CommandTemplateDao + private lateinit var uiUtil: UiUtil override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) downloadViewModel = ViewModelProvider(this)[DownloadViewModel::class.java] commandTemplateDao = DBManager.getInstance(requireContext()).commandTemplateDao + uiUtil = UiUtil(FileUtil()) } @SuppressLint("RestrictedApi") @@ -139,43 +144,12 @@ class DownloadBottomSheetDialog(private val resultItem: ResultItem, private val val scheduleBtn = view.findViewById(R.id.bottomsheet_schedule_button) scheduleBtn.setOnClickListener{ - val currentDate = Calendar.getInstance() - val date = Calendar.getInstance() - - val datepicker = MaterialDatePicker.Builder.datePicker() - .setCalendarConstraints( - CalendarConstraints.Builder() - .setValidator(DateValidatorPointForward.now()) - .build() - ) - .setSelection(MaterialDatePicker.todayInUtcMilliseconds()) - .build() - - datepicker.addOnPositiveButtonClickListener{ - date.timeInMillis = it - - - val timepicker = MaterialTimePicker.Builder() - .setTimeFormat(TimeFormat.CLOCK_24H) - .setHour(currentDate.get(Calendar.HOUR_OF_DAY)) - .setMinute(currentDate.get(Calendar.MINUTE)) - .build() - - timepicker.addOnPositiveButtonClickListener{ - date[Calendar.HOUR_OF_DAY] = timepicker.hour - date[Calendar.MINUTE] = timepicker.minute - - - val item: DownloadItem = getDownloadItem(); - item.downloadStartTime = date.timeInMillis - downloadViewModel.queueDownloads(listOf(item)) - dismiss() - } - timepicker.show(fragmentManager, "timepicker") - + uiUtil.showDatePicker(fragmentManager) { + val item: DownloadItem = getDownloadItem(); + item.downloadStartTime = it.timeInMillis + downloadViewModel.queueDownloads(listOf(item)) + dismiss() } - datepicker.show(fragmentManager, "datepicker") - } val download = view.findViewById