diff --git a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt index 89572b94..e1f02b1a 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt @@ -19,7 +19,6 @@ import androidx.core.app.ActivityCompat import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager -import androidx.work.WorkManager import com.deniscerri.ytdlnis.databinding.ActivityMainBinding import com.deniscerri.ytdlnis.service.IDownloaderListener import com.deniscerri.ytdlnis.service.IDownloaderService @@ -45,7 +44,6 @@ class MainActivity : AppCompatActivity() { lateinit var context: Context private lateinit var homeFragment: HomeFragment private lateinit var historyFragment: HistoryFragment - private lateinit var workManager: WorkManager override fun onCreate(savedInstanceState: Bundle?) { @@ -58,7 +56,6 @@ class MainActivity : AppCompatActivity() { askPermissions() checkUpdate() fm = supportFragmentManager - workManager = WorkManager.getInstance(context) homeFragment = HomeFragment() historyFragment = HistoryFragment() @@ -171,9 +168,6 @@ class MainActivity : AppCompatActivity() { lastFragment = f } - fun cancelAllDownloads() { - workManager.cancelAllWork(); - } private fun checkUpdate() { val preferences = context.getSharedPreferences("root_preferences", MODE_PRIVATE) 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 9efb31e9..45eefe2f 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt @@ -19,6 +19,7 @@ import com.deniscerri.ytdlnis.database.repository.DownloadRepository import com.deniscerri.ytdlnis.util.FileUtil import com.google.android.material.button.MaterialButton import com.google.android.material.card.MaterialCardView +import com.google.android.material.chip.Chip import com.squareup.picasso.Picasso import java.io.File @@ -72,10 +73,10 @@ class GenericDownloadAdapter(onItemClickListener: OnItemClickListener, activity: val itemUrl = card.findViewById(R.id.subtitle) itemUrl.text = item.url - val formatNote = card.findViewById(R.id.format_note) + val formatNote = card.findViewById(R.id.format_note) formatNote!!.text = item.format.format_note.uppercase() - val codec = card.findViewById(R.id.codec) + val codec = card.findViewById(R.id.codec) val codecText = if (item.format.encoding != "") { item.format.encoding.uppercase() @@ -91,7 +92,7 @@ class GenericDownloadAdapter(onItemClickListener: OnItemClickListener, activity: codec.text = codecText } - val fileSize = card.findViewById(R.id.file_size) + val fileSize = card.findViewById(R.id.file_size) val fileSizeReadable = fileUtil.convertFileSize(item.format.filesize) if (fileSizeReadable == "?") fileSize.visibility = View.GONE else fileSize.text = fileSizeReadable diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/DownloadDao.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/DownloadDao.kt index 80b9cc80..363472ee 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/DownloadDao.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/DownloadDao.kt @@ -37,8 +37,11 @@ interface DownloadDao { @Query("DELETE FROM downloads WHERE id=:id") suspend fun delete(id: Long) - @Query("DELETE FROM downloads WHERE status='Processing'") - suspend fun deleteProcessing() + @Query("DELETE FROM downloads WHERE status='Cancelled'") + suspend fun deleteCancelled() + + @Query("DELETE FROM downloads WHERE status='Error'") + suspend fun deleteErrored() @Query("DELETE FROM downloads WHERE status='Processing' AND id=:id") suspend fun deleteSingleProcessing(id: Long) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/AudioPreferences.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/AudioPreferences.kt index 4d1713ac..f263d156 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/models/AudioPreferences.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/AudioPreferences.kt @@ -2,4 +2,5 @@ package com.deniscerri.ytdlnis.database.models data class AudioPreferences( var embedThumb: Boolean = true, + var splitByChapters: Boolean = false, ) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/VideoPreferences.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/VideoPreferences.kt index 727a6c3b..2c08fa87 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/models/VideoPreferences.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/VideoPreferences.kt @@ -3,4 +3,5 @@ package com.deniscerri.ytdlnis.database.models data class VideoPreferences ( var embedSubs: Boolean = true, var addChapters: Boolean = true, + var splitByChapters: Boolean = false, ) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/DownloadRepository.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/DownloadRepository.kt index 923808c8..d5c20b97 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/DownloadRepository.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/DownloadRepository.kt @@ -40,8 +40,12 @@ class DownloadRepository(private val downloadDao: DownloadDao) { return downloadDao.getDownloadById(id) } - suspend fun deleteProcessing(){ - downloadDao.deleteProcessing() + suspend fun deleteCancelled(){ + downloadDao.deleteCancelled() + } + + suspend fun deleteErrored(){ + downloadDao.deleteErrored() } suspend fun deleteSingleProcessing(item: DownloadItem){ 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 41eef16d..dfe61888 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 @@ -207,8 +207,12 @@ class DownloadViewModel(application: Application) : AndroidViewModel(application return result } - fun deleteProcessing() = viewModelScope.launch(Dispatchers.IO) { - repository.deleteProcessing() + fun deleteCancelled() = viewModelScope.launch(Dispatchers.IO) { + repository.deleteCancelled() + } + + fun deleteErrored() = viewModelScope.launch(Dispatchers.IO) { + repository.deleteErrored() } fun cloneDownloadItem(item: DownloadItem) : DownloadItem { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt index 8b75b15e..35a4427c 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt @@ -264,7 +264,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi } searchBar!!.setOnMenuItemClickListener { m: MenuItem -> - when (val itemId = m.itemId) { + when (m.itemId) { R.id.delete_results -> { resultViewModel.getTrending() selectedObjects = ArrayList() @@ -272,12 +272,6 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi downloadAllFabCoordinator!!.visibility = GONE downloadFabs!!.visibility = GONE } - R.id.cancel_download -> { - try { - mainActivity!!.cancelAllDownloads() - searchBar!!.menu.findItem(itemId).isVisible = false - } catch (ignored: Exception) {} - } R.id.delete_search -> { resultViewModel.deleteAllSearchQueryHistory() searchSuggestionsLinearLayout!!.removeAllViews() diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadAudioFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadAudioFragment.kt index babe732a..a14f4dc0 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadAudioFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadAudioFragment.kt @@ -173,6 +173,12 @@ class DownloadAudioFragment(private var resultItem: ResultItem, private var curr downloadItem.audioPreferences.embedThumb = embedThumb.isChecked } + val splitByChapters = view.findViewById(R.id.split_by_chapters) + splitByChapters!!.isChecked = downloadItem.audioPreferences.splitByChapters + splitByChapters.setOnClickListener { + downloadItem.audioPreferences.splitByChapters = splitByChapters.isChecked + } + val copyURL = view.findViewById(R.id.copy_url) copyURL.setOnClickListener { val clipboard: ClipboardManager = diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadVideoFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadVideoFragment.kt index 18f7e560..1f7813d1 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadVideoFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadVideoFragment.kt @@ -188,6 +188,20 @@ class DownloadVideoFragment(private val resultItem: ResultItem, private var curr downloadItem.videoPreferences.addChapters = addChapters.isChecked } + + val splitByChapters = view.findViewById(R.id.split_by_chapters) + splitByChapters!!.isChecked = downloadItem.audioPreferences.splitByChapters + splitByChapters.setOnClickListener { + if (splitByChapters.isChecked){ + addChapters.isEnabled = false + addChapters.isChecked = false + downloadItem.videoPreferences.addChapters = false + }else{ + addChapters.isEnabled = true + } + downloadItem.videoPreferences.splitByChapters = splitByChapters.isChecked + } + val saveThumbnail = view.findViewById(R.id.save_thumbnail) saveThumbnail!!.isChecked = downloadItem.SaveThumb saveThumbnail.setOnClickListener { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/CancelledDownloadsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/CancelledDownloadsFragment.kt index 4b9d494a..dea6f4e4 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/CancelledDownloadsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/CancelledDownloadsFragment.kt @@ -12,6 +12,7 @@ import android.widget.Button import android.widget.LinearLayout import android.widget.TextView import android.widget.Toast +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -25,6 +26,7 @@ import com.deniscerri.ytdlnis.databinding.FragmentHomeBinding import com.deniscerri.ytdlnis.util.FileUtil import com.deniscerri.ytdlnis.util.UiUtil import com.google.android.material.bottomsheet.BottomSheetDialog +import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder import java.sql.Date import java.text.DateFormat @@ -97,23 +99,30 @@ class CancelledDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClic val bottomSheet = BottomSheetDialog(requireContext()) bottomSheet.requestWindowFeature(Window.FEATURE_NO_TITLE) - bottomSheet.setContentView(R.layout.download_details_bottom_sheet) - + bottomSheet.setContentView(R.layout.history_item_details_bottom_sheet) val title = bottomSheet.findViewById(R.id.bottom_sheet_title) title!!.text = item.title - val author = bottomSheet.findViewById(R.id.bottom_sheet_author) author!!.text = item.author - val type = bottomSheet.findViewById(R.id.type) + // BUTTON ---------------------------------- + val buttonLayout = bottomSheet.findViewById(R.id.downloads_download_button_layout) + val btn = buttonLayout!!.findViewById(R.id.downloads_download_button_type) + + if (item.type == DownloadViewModel.Type.audio) { + btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_music) + } else if (item.type == DownloadViewModel.Type.video) { + btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_video) + }else{ + btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_terminal) + } + val formatNote = bottomSheet.findViewById(R.id.format_note) val codec = bottomSheet.findViewById(R.id.codec) val fileSize = bottomSheet.findViewById(R.id.file_size) - val scheduledTime = bottomSheet.findViewById(R.id.scheduled_time_linear) - type!!.text = item.type.toString().uppercase() - - if (item.format.format_note == "?") formatNote!!.visibility = View.GONE + if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility = + View.GONE else formatNote!!.text = item.format.format_note val codecText = @@ -136,7 +145,8 @@ class CancelledDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClic else fileSize!!.text = fileSizeReadable val link = bottomSheet.findViewById