diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index c292dc5e..f7074742 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -320,7 +320,7 @@ @@ -330,8 +330,7 @@ diff --git a/README.md b/README.md index 0aaeb02a..665aa052 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,13 @@
-![CI](https://github.com/deniscerri/ytdlnis/actions/workflows/android.yml/badge.svg?branch=main&event=pull) [![stable release](https://img.shields.io/github/release/deniscerri/ytdlnis.svg?maxAge=3600&label=download)](https://github.com/deniscerri/ytdlnis/releases/latest) [![downloads](https://img.shields.io/github/downloads/deniscerri/ytdlnis/total?style=flat-square)](https://github.com/deniscerri/ytdlnis/releases) [![Translation status](https://hosted.weblate.org/widgets/ytdlnis/-/svg-badge.svg)](https://hosted.weblate.org/engage/ytdlnis/?utm_source=widget) [![community](https://img.shields.io/badge/Discord-YTDLnis-blueviolet?style=flat-square&logo=discord)](https://discord.gg/WW3KYWxAPm) +![CI](https://github.com/deniscerri/ytdlnis/actions/workflows/android.yml/badge.svg?branch=main&event=pull) +[![stable release](https://img.shields.io/github/release/deniscerri/ytdlnis.svg?maxAge=3600&label=download)](https://github.com/deniscerri/ytdlnis/releases/latest) +[![preview release](https://img.shields.io/github/release/deniscerri/ytdlnis.svg?maxAge=3600&include_prereleases&label=preview)](https://github.com/deniscerri/ytdlnis/releases) +[![downloads](https://img.shields.io/github/downloads/deniscerri/ytdlnis/total?style=flat-square)](https://github.com/deniscerri/ytdlnis/releases) +[![Translation status](https://hosted.weblate.org/widgets/ytdlnis/-/svg-badge.svg)](https://hosted.weblate.org/engage/ytdlnis/?utm_source=widget) +[![community](https://img.shields.io/badge/Discord-YTDLnis-blueviolet?style=flat-square&logo=discord)](https://discord.gg/WW3KYWxAPm) +[![community](https://img.shields.io/badge/Telegram-YTDLnis-blue?style=flat-square&logo=telegram)](https://t.me/ytdlnis) 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/adapter/HistoryAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/HistoryAdapter.kt index 106756fe..b06b51fb 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/HistoryAdapter.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/HistoryAdapter.kt @@ -92,22 +92,6 @@ class HistoryAdapter(onItemClickListener: OnItemClickListener, activity: Activit System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS ) -// -// val time = item.time -// val downloadedTime: String -// if (time == 0L) { -// downloadedTime = activity.getString(R.string.currently_downloading) + " " + item.type -// } else { -// val cal = Calendar.getInstance() -// val date = Date(time * 1000L) -// cal.time = date -// val day = cal[Calendar.DAY_OF_MONTH] -// val month = cal.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault()) -// val year = cal[Calendar.YEAR] -// val formatter: DateFormat = SimpleDateFormat("HH:mm", Locale.getDefault()) -// val timeString = formatter.format(date) -// downloadedTime = "$day $month $year - $timeString" -// } datetime.text = relativeTime // BUTTON ---------------------------------- diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/HistoryRepository.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/HistoryRepository.kt index affaae60..c936f0f8 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/HistoryRepository.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/HistoryRepository.kt @@ -12,7 +12,7 @@ class HistoryRepository(private val historyDao: HistoryDao) { } enum class HistorySortType { - DATE, TITLE, AUTHOR + DATE, TITLE, AUTHOR, FILESIZE } suspend fun getItem(id: Int) : HistoryItem { @@ -24,6 +24,13 @@ class HistoryRepository(private val historyDao: HistoryDao) { HistorySortType.DATE -> historyDao.getHistorySortedByID(query, format, site, sort.toString()) HistorySortType.TITLE -> historyDao.getHistorySortedByTitle(query, format, site, sort.toString()) HistorySortType.AUTHOR -> historyDao.getHistorySortedByAuthor(query, format, site, sort.toString()) + HistorySortType.FILESIZE -> { + val items = historyDao.getHistorySortedByID(query, format, site, sort.toString()) + when(sort){ + HistorySort.DESC -> items.sortedByDescending { it.format.filesize } + HistorySort.ASC -> items.sortedBy { it.format.filesize } + } + } } } 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