From 7f813ebd969e5135c34f3b91f2e78e0160d2e357 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Denis=20=C3=87erri?=
<64997243+deniscerri@users.noreply.github.com>
Date: Mon, 23 Jan 2023 17:59:13 +0100
Subject: [PATCH] added new download card again...
---
.idea/assetWizardSettings.xml | 5 +-
.idea/codeStyles/Project.xml | 10 +
.../1.json | 96 ++---
.../com/deniscerri/ytdlnis/MainActivity.kt | 20 +-
.../ConfigureMultipleDownloadsAdapter.kt | 4 +-
.../ytdlnis/adapter/HistoryAdapter.kt | 70 ++--
.../deniscerri/ytdlnis/adapter/HomeAdapter.kt | 2 +-
.../database/dao/CommandTemplateDao.kt | 2 +-
.../ytdlnis/database/dao/DownloadDao.kt | 7 +-
.../ytdlnis/database/dao/FormatDao.kt | 4 +-
.../ytdlnis/database/dao/HistoryDao.kt | 2 +-
.../ytdlnis/database/dao/ResultDao.kt | 3 +
.../database/models/CommandTemplate.kt | 7 +-
.../ytdlnis/database/models/DownloadItem.kt | 55 ++-
.../ytdlnis/database/models/Format.kt | 21 +-
.../ytdlnis/database/models/HistoryItem.kt | 7 +-
.../ytdlnis/database/models/ResultItem.kt | 19 +-
.../database/repository/DownloadRepository.kt | 11 +-
.../database/repository/HistoryRepository.kt | 2 +-
.../database/repository/ResultRepository.kt | 8 +-
.../database/viewmodel/DownloadViewModel.kt | 14 +-
.../database/viewmodel/ResultViewModel.kt | 43 +-
...ownloadsFragment.kt => HistoryFragment.kt} | 52 +--
.../com/deniscerri/ytdlnis/ui/HomeFragment.kt | 387 +++---------------
.../ui/downloadcard/DownloadAudioFragment.kt | 154 +++++++
.../downloadcard/DownloadBottomSheetDialog.kt | 91 ++++
.../downloadcard/DownloadCommandFragment.kt | 32 ++
.../downloadcard/DownloadFragmentAdapter.kt | 31 ++
.../ui/downloadcard/DownloadVideoFragment.kt | 187 +++++++++
.../com/deniscerri/ytdlnis/util/FileUtil.kt | 10 +
.../com/deniscerri/ytdlnis/util/InfoUtil.kt | 7 +-
.../deniscerri/ytdlnis/work/DownloadWorker.kt | 25 +-
app/src/main/res/drawable/ic_history.xml | 5 +
app/src/main/res/layout/activity_main.xml | 1 +
.../main/res/layout/download_bottom_sheet.xml | 58 +++
.../res/layout/fragment_download_audio.xml | 159 +++++++
.../res/layout/fragment_download_command.xml | 200 +++++++++
.../res/layout/fragment_download_video.xml | 216 ++++++++++
...ent_downloads.xml => fragment_history.xml} | 26 +-
.../{downloads_card.xml => history_card.xml} | 0
...d_shimmer.xml => history_card_shimmer.xml} | 0
... => history_item_details_bottom_sheet.xml} | 0
..._no_results.xml => history_no_results.xml} | 0
..._sort_sheet.xml => history_sort_sheet.xml} | 0
.../home_download_settings_components.xml | 181 ++------
app/src/main/res/menu/bottom_nav_menu.xml | 3 +
app/src/main/res/values/strings.xml | 2 +
47 files changed, 1511 insertions(+), 728 deletions(-)
rename app/src/main/java/com/deniscerri/ytdlnis/ui/{DownloadsFragment.kt => HistoryFragment.kt} (92%)
create mode 100644 app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadAudioFragment.kt
create mode 100644 app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadBottomSheetDialog.kt
create mode 100644 app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadCommandFragment.kt
create mode 100644 app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadFragmentAdapter.kt
create mode 100644 app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadVideoFragment.kt
create mode 100644 app/src/main/res/drawable/ic_history.xml
create mode 100644 app/src/main/res/layout/download_bottom_sheet.xml
create mode 100644 app/src/main/res/layout/fragment_download_audio.xml
create mode 100644 app/src/main/res/layout/fragment_download_command.xml
create mode 100644 app/src/main/res/layout/fragment_download_video.xml
rename app/src/main/res/layout/{fragment_downloads.xml => fragment_history.xml} (88%)
rename app/src/main/res/layout/{downloads_card.xml => history_card.xml} (100%)
rename app/src/main/res/layout/{downloads_card_shimmer.xml => history_card_shimmer.xml} (100%)
rename app/src/main/res/layout/{downloads_bottom_sheet.xml => history_item_details_bottom_sheet.xml} (100%)
rename app/src/main/res/layout/{downloads_no_results.xml => history_no_results.xml} (100%)
rename app/src/main/res/layout/{downloads_sort_sheet.xml => history_sort_sheet.xml} (100%)
diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index 4f9550fb..6c2b6dda 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -320,7 +320,7 @@
@@ -330,8 +330,7 @@
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index ae78c113..7643783a 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -1,6 +1,13 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/schemas/com.deniscerri.ytdlnis.database.DBManager/1.json b/app/schemas/com.deniscerri.ytdlnis.database.DBManager/1.json
index b899fe52..1425f80c 100644
--- a/app/schemas/com.deniscerri.ytdlnis.database.DBManager/1.json
+++ b/app/schemas/com.deniscerri.ytdlnis.database.DBManager/1.json
@@ -2,12 +2,18 @@
"formatVersion": 1,
"database": {
"version": 1,
- "identityHash": "c8effa77edcd8cf5e46a79fd1a791535",
+ "identityHash": "94d37ae85390ef5198651df2480a02bf",
"entities": [
{
"tableName": "results",
- "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`url` TEXT NOT NULL, `title` TEXT NOT NULL, `author` TEXT NOT NULL, `duration` TEXT NOT NULL, `thumb` TEXT NOT NULL, `website` TEXT NOT NULL, `playlistTitle` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT)",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT NOT NULL, `title` TEXT NOT NULL, `author` TEXT NOT NULL, `duration` TEXT NOT NULL, `thumb` TEXT NOT NULL, `website` TEXT NOT NULL, `playlistTitle` TEXT NOT NULL)",
"fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
{
"fieldPath": "url",
"columnName": "url",
@@ -49,12 +55,6 @@
"columnName": "playlistTitle",
"affinity": "TEXT",
"notNull": true
- },
- {
- "fieldPath": "id",
- "columnName": "id",
- "affinity": "INTEGER",
- "notNull": false
}
],
"primaryKey": {
@@ -68,18 +68,18 @@
},
{
"tableName": "formats",
- "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`itemId` INTEGER NOT NULL, `format` TEXT NOT NULL, `format_id` TEXT NOT NULL, `ext` TEXT NOT NULL, `filesize` INTEGER NOT NULL, `format_note` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT)",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `itemId` INTEGER NOT NULL, `format_id` TEXT NOT NULL, `container` TEXT NOT NULL, `filesize` INTEGER NOT NULL, `format_note` TEXT NOT NULL, `encoding` TEXT NOT NULL)",
"fields": [
{
- "fieldPath": "itemId",
- "columnName": "itemId",
+ "fieldPath": "id",
+ "columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
- "fieldPath": "format",
- "columnName": "format",
- "affinity": "TEXT",
+ "fieldPath": "itemId",
+ "columnName": "itemId",
+ "affinity": "INTEGER",
"notNull": true
},
{
@@ -89,8 +89,8 @@
"notNull": true
},
{
- "fieldPath": "ext",
- "columnName": "ext",
+ "fieldPath": "container",
+ "columnName": "container",
"affinity": "TEXT",
"notNull": true
},
@@ -107,10 +107,10 @@
"notNull": true
},
{
- "fieldPath": "id",
- "columnName": "id",
- "affinity": "INTEGER",
- "notNull": false
+ "fieldPath": "encoding",
+ "columnName": "encoding",
+ "affinity": "TEXT",
+ "notNull": true
}
],
"primaryKey": {
@@ -124,8 +124,14 @@
},
{
"tableName": "history",
- "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`url` TEXT NOT NULL, `title` TEXT NOT NULL, `author` TEXT NOT NULL, `duration` TEXT NOT NULL, `thumb` TEXT NOT NULL, `type` TEXT NOT NULL, `time` INTEGER NOT NULL, `downloadPath` TEXT NOT NULL, `website` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT)",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT NOT NULL, `title` TEXT NOT NULL, `author` TEXT NOT NULL, `duration` TEXT NOT NULL, `thumb` TEXT NOT NULL, `type` TEXT NOT NULL, `time` INTEGER NOT NULL, `downloadPath` TEXT NOT NULL, `website` TEXT NOT NULL)",
"fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
{
"fieldPath": "url",
"columnName": "url",
@@ -179,12 +185,6 @@
"columnName": "website",
"affinity": "TEXT",
"notNull": true
- },
- {
- "fieldPath": "id",
- "columnName": "id",
- "affinity": "INTEGER",
- "notNull": false
}
],
"primaryKey": {
@@ -198,8 +198,14 @@
},
{
"tableName": "downloads",
- "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`url` TEXT NOT NULL, `title` TEXT NOT NULL, `author` TEXT NOT NULL, `thumb` TEXT NOT NULL, `duration` TEXT NOT NULL, `type` TEXT NOT NULL, `audioFormat` TEXT NOT NULL, `videoFormat` TEXT NOT NULL, `audioFormatId` TEXT NOT NULL, `videoFormatId` TEXT NOT NULL, `customTemplateId` INTEGER NOT NULL, `formatDesc` TEXT NOT NULL, `removeAudio` INTEGER NOT NULL DEFAULT 0, `downloadPath` TEXT NOT NULL, `website` TEXT NOT NULL, `downloadSize` TEXT NOT NULL, `playlistTitle` TEXT NOT NULL, `embedSubs` INTEGER NOT NULL, `addChapters` INTEGER NOT NULL, `SaveThumb` INTEGER NOT NULL, `ext` TEXT NOT NULL, `filesize` TEXT NOT NULL, `status` TEXT NOT NULL DEFAULT 'Queued', `workID` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT)",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `url` TEXT NOT NULL, `title` TEXT NOT NULL, `author` TEXT NOT NULL, `thumb` TEXT NOT NULL, `duration` TEXT NOT NULL, `type` TEXT NOT NULL, `audioFormatId` TEXT NOT NULL, `videoFormatId` TEXT NOT NULL, `customTemplateId` INTEGER NOT NULL, `formatDesc` TEXT NOT NULL, `removeAudio` INTEGER NOT NULL DEFAULT 0, `downloadPath` TEXT NOT NULL, `website` TEXT NOT NULL, `downloadSize` TEXT NOT NULL, `playlistTitle` TEXT NOT NULL, `embedSubs` INTEGER NOT NULL, `addChapters` INTEGER NOT NULL, `SaveThumb` INTEGER NOT NULL, `ext` TEXT NOT NULL, `filesize` TEXT NOT NULL, `status` TEXT NOT NULL DEFAULT 'Queued', `workID` INTEGER NOT NULL)",
"fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
{
"fieldPath": "url",
"columnName": "url",
@@ -236,18 +242,6 @@
"affinity": "TEXT",
"notNull": true
},
- {
- "fieldPath": "audioFormat",
- "columnName": "audioFormat",
- "affinity": "TEXT",
- "notNull": true
- },
- {
- "fieldPath": "videoFormat",
- "columnName": "videoFormat",
- "affinity": "TEXT",
- "notNull": true
- },
{
"fieldPath": "audioFormatId",
"columnName": "audioFormatId",
@@ -345,12 +339,6 @@
"columnName": "workID",
"affinity": "INTEGER",
"notNull": true
- },
- {
- "fieldPath": "id",
- "columnName": "id",
- "affinity": "INTEGER",
- "notNull": false
}
],
"primaryKey": {
@@ -364,8 +352,14 @@
},
{
"tableName": "commandTemplates",
- "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`title` TEXT NOT NULL, `content` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT)",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL)",
"fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
{
"fieldPath": "title",
"columnName": "title",
@@ -377,12 +371,6 @@
"columnName": "content",
"affinity": "TEXT",
"notNull": true
- },
- {
- "fieldPath": "id",
- "columnName": "id",
- "affinity": "INTEGER",
- "notNull": false
}
],
"primaryKey": {
@@ -398,7 +386,7 @@
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
- "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'c8effa77edcd8cf5e46a79fd1a791535')"
+ "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '94d37ae85390ef5198651df2480a02bf')"
]
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt
index e9107f3a..99f6e956 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt
@@ -21,7 +21,7 @@ import androidx.work.WorkManager
import com.deniscerri.ytdlnis.DownloaderService.LocalBinder
import com.deniscerri.ytdlnis.database.models.ResultItem
import com.deniscerri.ytdlnis.databinding.ActivityMainBinding
-import com.deniscerri.ytdlnis.ui.DownloadsFragment
+import com.deniscerri.ytdlnis.ui.HistoryFragment
import com.deniscerri.ytdlnis.ui.HomeFragment
import com.deniscerri.ytdlnis.ui.MoreFragment
import com.deniscerri.ytdlnis.ui.settings.SettingsActivity
@@ -43,7 +43,7 @@ class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
lateinit var context: Context
private lateinit var homeFragment: HomeFragment
- private lateinit var downloadsFragment: DownloadsFragment
+ private lateinit var historyFragment: HistoryFragment
var downloaderService: DownloaderService? = null
private lateinit var workManager: WorkManager
@@ -84,7 +84,7 @@ class MainActivity : AppCompatActivity() {
workManager = WorkManager.getInstance(context)
homeFragment = HomeFragment()
- downloadsFragment = DownloadsFragment()
+ historyFragment = HistoryFragment()
moreFragment = MoreFragment()
initFragments()
binding.bottomNavigationView.setOnItemSelectedListener { item: MenuItem ->
@@ -97,13 +97,13 @@ class MainActivity : AppCompatActivity() {
}
replaceFragment(homeFragment)
}
- R.id.downloads -> {
- if (lastFragment === downloadsFragment) {
- downloadsFragment.scrollToTop()
+ R.id.history -> {
+ if (lastFragment === historyFragment) {
+ historyFragment.scrollToTop()
} else {
this.title = getString(R.string.downloads)
}
- replaceFragment(downloadsFragment)
+ replaceFragment(historyFragment)
}
R.id.more -> {
if (lastFragment === moreFragment) {
@@ -151,7 +151,7 @@ class MainActivity : AppCompatActivity() {
if (Intent.ACTION_SEND == action && type != null) {
Log.e(TAG, action)
homeFragment = HomeFragment()
- downloadsFragment = DownloadsFragment()
+ historyFragment = HistoryFragment()
moreFragment = MoreFragment()
if (type.equals("application/txt", ignoreCase = true)) {
try {
@@ -185,9 +185,9 @@ class MainActivity : AppCompatActivity() {
private fun initFragments() {
fm.beginTransaction()
.replace(R.id.frame_layout, homeFragment)
- .add(R.id.frame_layout, downloadsFragment)
+ .add(R.id.frame_layout, historyFragment)
.add(R.id.frame_layout, moreFragment)
- .hide(downloadsFragment)
+ .hide(historyFragment)
.hide(moreFragment)
.commit()
lastFragment = homeFragment
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/ConfigureMultipleDownloadsAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/ConfigureMultipleDownloadsAdapter.kt
index f93e54f6..0086b5d4 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/ConfigureMultipleDownloadsAdapter.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/ConfigureMultipleDownloadsAdapter.kt
@@ -101,13 +101,13 @@ class ConfigureMultipleDownloadsAdapter(onItemClickListener: OnItemClickListener
}
card.setOnClickListener {
- onItemClickListener.onCardClick(item.id!!)
+ onItemClickListener.onCardClick(item.id)
}
}
interface OnItemClickListener {
- fun onCardClick(itemID: Int)
+ fun onCardClick(itemID: Long)
}
companion object {
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 2b5c0242..66678b3e 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/HistoryAdapter.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/HistoryAdapter.kt
@@ -1,5 +1,6 @@
package com.deniscerri.ytdlnis.adapter
+import android.annotation.SuppressLint
import android.app.Activity
import android.graphics.Color
import android.graphics.ColorMatrix
@@ -28,7 +29,7 @@ import java.text.SimpleDateFormat
import java.util.*
class HistoryAdapter(onItemClickListener: OnItemClickListener, activity: Activity) : ListAdapter(AsyncDifferConfig.Builder(DIFF_CALLBACK).build()) {
- private val checkedItems: ArrayList
+ private val checkedItems: ArrayList
private val onItemClickListener: OnItemClickListener
private val activity: Activity
@@ -48,16 +49,16 @@ class HistoryAdapter(onItemClickListener: OnItemClickListener, activity: Activit
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val cardView = LayoutInflater.from(parent.context)
- .inflate(R.layout.downloads_card, parent, false)
+ .inflate(R.layout.history_card, parent, false)
return ViewHolder(cardView, onItemClickListener)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
- val video = getItem(position)
+ val item = getItem(position)
val card = holder.cardView
// THUMBNAIL ----------------------------------
val thumbnail = card.findViewById(R.id.downloads_image_view)
- val imageURL = video!!.thumb
+ val imageURL = item!!.thumb
val uiHandler = Handler(Looper.getMainLooper())
if (imageURL.isNotEmpty()) {
uiHandler.post { Picasso.get().load(imageURL).into(thumbnail) }
@@ -67,28 +68,28 @@ class HistoryAdapter(onItemClickListener: OnItemClickListener, activity: Activit
thumbnail.setColorFilter(Color.argb(95, 0, 0, 0))
// TITLE ----------------------------------
- val videoTitle = card.findViewById(R.id.downloads_title)
- var title = video.title
+ val itemTitle = card.findViewById(R.id.downloads_title)
+ var title = item.title
if (title.length > 100) {
title = title.substring(0, 40) + "..."
}
- videoTitle.text = title
+ itemTitle.text = title
// Bottom Info ----------------------------------
val bottomInfo = card.findViewById(R.id.downloads_info_bottom)
- var info = video.author
- if (video.duration.isNotEmpty()) {
- if (video.author.isNotEmpty()) info += " • "
- info += video.duration
+ var info = item.author
+ if (item.duration.isNotEmpty()) {
+ if (item.author.isNotEmpty()) info += " • "
+ info += item.duration
}
bottomInfo.text = info
// TIME DOWNLOADED ----------------------------------
val datetime = card.findViewById(R.id.downloads_info_time)
- val time = video.time
+ val time = item.time
val downloadedTime: String
if (time == 0L) {
- downloadedTime = activity.getString(R.string.currently_downloading) + " " + video.type
+ downloadedTime = activity.getString(R.string.currently_downloading) + " " + item.type
} else {
val cal = Calendar.getInstance()
val date = Date(time * 1000L)
@@ -108,7 +109,7 @@ class HistoryAdapter(onItemClickListener: OnItemClickListener, activity: Activit
var filePresent = true
//IS IN THE FILE SYSTEM?
- val path = video.downloadPath
+ val path = item.downloadPath
val file = File(path)
if (!file.exists() && path.isNotEmpty()) {
filePresent = false
@@ -119,15 +120,15 @@ class HistoryAdapter(onItemClickListener: OnItemClickListener, activity: Activit
})
thumbnail.alpha = 0.7f
}
- if (video.type.isNotEmpty()) {
- if (video.type == "audio") {
+ if (item.type.isNotEmpty()) {
+ if (item.type == "audio") {
if (filePresent) btn.icon = ContextCompat.getDrawable(activity, R.drawable.ic_music_downloaded) else btn.icon = ContextCompat.getDrawable(activity, R.drawable.ic_music)
} else {
if (filePresent) btn.icon = ContextCompat.getDrawable(activity, R.drawable.ic_video_downloaded) else btn.icon = ContextCompat.getDrawable(activity, R.drawable.ic_video)
}
}
if (btn.hasOnClickListeners()) btn.setOnClickListener(null)
- if (checkedItems.contains(position)) {
+ if (checkedItems.contains(item.id)) {
card.isChecked = true
card.strokeWidth = 5
} else {
@@ -136,49 +137,54 @@ class HistoryAdapter(onItemClickListener: OnItemClickListener, activity: Activit
}
val finalFilePresent = filePresent
card.setOnLongClickListener {
- checkCard(card, position)
+ checkCard(card, item.id)
true
}
card.setOnClickListener {
if (checkedItems.size > 0) {
- checkCard(card, video.id!!)
+ checkCard(card, item.id)
} else {
- onItemClickListener.onCardClick(video.id!!, finalFilePresent)
+ onItemClickListener.onCardClick(item.id, finalFilePresent)
}
}
}
- private fun checkCard(card: MaterialCardView, videoID: Int) {
+ private fun checkCard(card: MaterialCardView, itemID: Long) {
if (card.isChecked) {
card.strokeWidth = 0
- checkedItems.removeAt(videoID)
+ checkedItems.remove(itemID)
} else {
card.strokeWidth = 5
- checkedItems.add(videoID)
+ checkedItems.add(itemID)
}
card.isChecked = !card.isChecked
- onItemClickListener.onCardSelect(videoID, card.isChecked)
+ onItemClickListener.onCardSelect(itemID, card.isChecked)
}
interface OnItemClickListener {
- fun onCardClick(position: Int, isPresent: Boolean)
- fun onCardSelect(position: Int, isChecked: Boolean)
+ fun onCardClick(itemID: Long, isPresent: Boolean)
+ fun onCardSelect(itemID: Long, isChecked: Boolean)
fun onButtonClick(position: Int)
}
- fun clearCheckedVideos() {
- val size = checkedItems.size
- for (i in 0 until size) {
- val position = checkedItems[i]
- notifyItemChanged(position)
+ @SuppressLint("NotifyDataSetChanged")
+ fun clearCheckeditems() {
+ for (i in 0 until itemCount){
+ val item = getItem(i)
+ if (checkedItems.find { it == item?.id } != null){
+ checkedItems.remove(item?.id)
+ notifyItemChanged(i)
+ }
}
+
checkedItems.clear()
}
companion object {
private val DIFF_CALLBACK: DiffUtil.ItemCallback = object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(oldItem: HistoryItem, newItem: HistoryItem): Boolean {
- return oldItem.id === newItem.id
+ val ranged = arrayListOf(oldItem.id, newItem.id)
+ return ranged[0] == ranged[1]
}
override fun areContentsTheSame(oldItem: HistoryItem, newItem: HistoryItem): Boolean {
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/HomeAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/HomeAdapter.kt
index 6f992a36..47ddf347 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/HomeAdapter.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/HomeAdapter.kt
@@ -179,7 +179,7 @@ class HomeAdapter(onItemClickListener: OnItemClickListener, activity: Activity)
}
override fun areContentsTheSame(oldItem: ResultItem, newItem: ResultItem): Boolean {
- return oldItem.url == newItem.url
+ return oldItem.url == newItem.url && oldItem.title == newItem.title && oldItem.author == newItem.author
}
}
}
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 d4b6a9c4..4331ce44 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
@@ -14,7 +14,7 @@ interface CommandTemplateDao {
fun getAllTemplates() : List
@Query("SELECT * FROM commandTemplates WHERE id=:id LIMIT 1")
- fun getTemplateById(id: Int) : CommandTemplate
+ fun getTemplate(id: Long) : CommandTemplate
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(item: CommandTemplate)
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 34dd371d..51783f3f 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
@@ -24,8 +24,8 @@ interface DownloadDao {
@Query("SELECT * FROM downloads WHERE id=:id LIMIT 1")
fun getDownloadById(id: Int) : DownloadItem
- @Insert(onConflict = OnConflictStrategy.IGNORE)
- suspend fun insert(item: DownloadItem)
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ suspend fun insert(item: DownloadItem) : Long
@Query("DELETE FROM downloads")
suspend fun deleteAll()
@@ -35,4 +35,7 @@ interface DownloadDao {
@Update(onConflict = OnConflictStrategy.REPLACE)
suspend fun update(item: DownloadItem)
+
+ @Query("SELECT * FROM downloads ORDER BY id DESC LIMIT 1")
+ fun getLatest() : DownloadItem
}
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/FormatDao.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/FormatDao.kt
index 7f5119ec..e22ac76f 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/FormatDao.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/FormatDao.kt
@@ -8,7 +8,7 @@ import com.deniscerri.ytdlnis.database.models.ResultItem
@Dao
interface FormatDao {
@Query("SELECT * FROM formats WHERE itemId=:itemId")
- fun getFormatsByItemId(itemId: Int) : List
+ fun getFormatsByItemId(itemId: Long) : List
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(item: Format)
@@ -20,6 +20,6 @@ interface FormatDao {
suspend fun deleteAll()
@Query("DELETE FROM formats WHERE itemId=:itemId")
- suspend fun deleteFromatsByItemId(itemId: Int)
+ suspend fun deleteFromatsByItemId(itemId: Long)
}
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/HistoryDao.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/HistoryDao.kt
index 9f50d408..a42649fb 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/HistoryDao.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/HistoryDao.kt
@@ -23,7 +23,7 @@ interface HistoryDao {
suspend fun insert(item: HistoryItem)
@Query("DELETE FROM history WHERE id=:id")
- suspend fun delete(id: Int)
+ suspend fun delete(id: Long)
@Query("DELETE FROM history")
suspend fun deleteAll()
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/ResultDao.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/ResultDao.kt
index e6cc5482..e72104c8 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/ResultDao.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/ResultDao.kt
@@ -24,4 +24,7 @@ interface ResultDao {
@Query("DELETE FROM results")
suspend fun deleteAll()
+ @Query("SELECT * FROM results WHERE url=:url LIMIT 1")
+ fun getResultByURL(url: String) : ResultItem
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/CommandTemplate.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/CommandTemplate.kt
index 46d1316f..798f8e64 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/models/CommandTemplate.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/CommandTemplate.kt
@@ -6,9 +6,8 @@ import androidx.room.PrimaryKey
@Entity(tableName = "commandTemplates")
data class CommandTemplate(
+ @PrimaryKey(autoGenerate = true)
+ var id: Long,
val title: String,
val content: String
-){
- @PrimaryKey(autoGenerate = true)
- var id: Int? = null
-}
\ No newline at end of file
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/DownloadItem.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/DownloadItem.kt
index ff8c5579..874b80b0 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/models/DownloadItem.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/DownloadItem.kt
@@ -6,33 +6,30 @@ import androidx.room.PrimaryKey
@Entity(tableName = "downloads")
data class DownloadItem(
- val url: String,
- var title: String,
- var author: String,
- val thumb: String,
- val duration: String,
- val type: String,
- var audioFormat: String,
- var videoFormat: String,
- var audioFormatId: String,
- var videoFormatId: String,
- var customTemplateId: Int,
- val formatDesc: String,
- @ColumnInfo(defaultValue = "0")
- val removeAudio: Boolean,
- val downloadPath: String,
- val website: String,
- val downloadSize: String,
- val playlistTitle: String,
- val embedSubs: Boolean,
- val addChapters: Boolean,
- val SaveThumb: Boolean,
- var ext: String,
- var filesize: String,
- @ColumnInfo(defaultValue = "Queued")
- var status: String,
- val workID: Int
-){
@PrimaryKey(autoGenerate = true)
- var id: Int? = null
-}
\ No newline at end of file
+ var id: Long,
+ val url: String,
+ var title: String,
+ var author: String,
+ val thumb: String,
+ val duration: String,
+ var type: String,
+ var audioFormatId: String,
+ var videoFormatId: String,
+ var customTemplateId: Long,
+ var formatDesc: String,
+ @ColumnInfo(defaultValue = "0")
+ val removeAudio: Boolean,
+ val downloadPath: String,
+ val website: String,
+ val downloadSize: String,
+ val playlistTitle: String,
+ val embedSubs: Boolean,
+ val addChapters: Boolean,
+ val SaveThumb: Boolean,
+ var ext: String,
+ var filesize: String,
+ @ColumnInfo(defaultValue = "Queued")
+ var status: String,
+ val workID: Int
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/Format.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/Format.kt
index 5f53824d..3651dbbe 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/models/Format.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/Format.kt
@@ -6,18 +6,17 @@ import com.google.gson.annotations.SerializedName
@Entity(tableName = "formats")
data class Format(
- var itemId: Int,
- @SerializedName(value = "format", alternate = ["type"])
- val format: String,
+ @PrimaryKey(autoGenerate = true)
+ var id: Long,
+ var itemId: Long,
@SerializedName(value = "format_id", alternate = ["itag"])
val format_id: String,
- @SerializedName(value = "ext", alternate = ["container", ""])
- val ext: String,
- @SerializedName(value = "filesize", alternate = ["clen"])
+ @SerializedName(value = "ext", alternate = ["container"])
+ val container: String,
+ @SerializedName(value = "filesize", alternate = ["clen", "filesize_approx"])
val filesize: Long,
@SerializedName(value = "format_note", alternate = ["resolution", "audioQuality"])
- val format_note: String
-){
- @PrimaryKey(autoGenerate = true)
- var id: Int? = null
-}
\ No newline at end of file
+ val format_note: String,
+ @SerializedName(value = "encoding", alternate = ["vcodec", "acodec", "video_ext"])
+ val encoding: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/HistoryItem.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/HistoryItem.kt
index 5783fc93..c15dae02 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/models/HistoryItem.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/HistoryItem.kt
@@ -5,6 +5,8 @@ import androidx.room.PrimaryKey
@Entity(tableName = "history")
data class HistoryItem(
+ @PrimaryKey(autoGenerate = true)
+ var id: Long,
val url: String,
val title: String,
val author: String,
@@ -14,7 +16,4 @@ data class HistoryItem(
val time: Long,
val downloadPath: String,
val website: String
-){
- @PrimaryKey(autoGenerate = true)
- var id: Int? = null
-}
\ No newline at end of file
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/ResultItem.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/ResultItem.kt
index 2fa3711e..f221eee8 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/models/ResultItem.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/ResultItem.kt
@@ -5,14 +5,13 @@ import androidx.room.PrimaryKey
@Entity(tableName = "results")
data class ResultItem(
- val url: String,
- var title: String,
- var author: String,
- val duration: String,
- val thumb: String,
- val website: String,
- var playlistTitle: String
-){
@PrimaryKey(autoGenerate = true)
- var id: Int? = null
-}
\ No newline at end of file
+ var id: Long,
+ val url: String,
+ var title: String,
+ var author: String,
+ val duration: String,
+ val thumb: String,
+ val website: String,
+ var playlistTitle: String
+)
\ No newline at end of file
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 b06bbfc3..4cba9a35 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
@@ -1,5 +1,6 @@
package com.deniscerri.ytdlnis.database.repository
+import android.util.Log
import androidx.lifecycle.LiveData
import com.deniscerri.ytdlnis.database.dao.DownloadDao
import com.deniscerri.ytdlnis.database.models.DownloadItem
@@ -9,11 +10,11 @@ class DownloadRepository(private val downloadDao: DownloadDao) {
val activeDownloads : LiveData> = downloadDao.getActiveDownloads()
enum class status {
- Active, Queued, Errored
+ Active, Queued, Errored, Processing
}
- suspend fun insert(item: DownloadItem){
- downloadDao.insert(item)
+ suspend fun insert(item: DownloadItem) : Long {
+ return downloadDao.insert(item)
}
suspend fun delete(item: DownloadItem){
@@ -37,4 +38,8 @@ class DownloadRepository(private val downloadDao: DownloadDao) {
update(item);
}
+ fun getLatest() : DownloadItem {
+ return downloadDao.getLatest()
+ }
+
}
\ No newline at end of file
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 13b06584..c9656345 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
@@ -53,7 +53,7 @@ class HistoryRepository(private val historyDao: HistoryDao) {
val fileUtil = FileUtil()
items.value?.forEach { item ->
if (!fileUtil.exists(item.downloadPath)){
- historyDao.delete(item.id!!)
+ historyDao.delete(item.id)
}
}
}
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt
index 299b11e1..8ccf688c 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt
@@ -107,7 +107,7 @@ class ResultRepository(private val resultDao: ResultDao, private val formatDao:
private suspend fun addFormats(formats : ArrayList, id: Long){
formats.forEach { f ->
if (f.filesize == 0L) return@forEach
- f.itemId = id.toInt()
+ f.itemId = id
formatDao.insert(f)
}
}
@@ -122,11 +122,15 @@ class ResultRepository(private val resultDao: ResultDao, private val formatDao:
}
fun getFormats(item: ResultItem): List {
- return formatDao.getFormatsByItemId(item.id!!)
+ return formatDao.getFormatsByItemId(item.id)
}
fun getTemplates() : List {
return commandTemplateDao.getAllTemplates()
}
+ fun getItemByURL(url: String): ResultItem {
+ return resultDao.getResultByURL(url)
+ }
+
}
\ No newline at end of file
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 5c3c0154..24508c71 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
@@ -3,6 +3,7 @@ package com.deniscerri.ytdlnis.database.viewmodel
import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import com.deniscerri.ytdlnis.database.DBManager
import com.deniscerri.ytdlnis.database.models.DownloadItem
@@ -27,8 +28,13 @@ class DownloadViewModel(application: Application) : AndroidViewModel(application
}
- fun insertDownload(item: DownloadItem) = viewModelScope.launch(Dispatchers.IO){
- repository.insert(item)
+ fun insertDownload(item: DownloadItem) : LiveData {
+ val result = MutableLiveData()
+ viewModelScope.launch(Dispatchers.IO){
+ val id = repository.insert(item)
+ result.postValue(id)
+ }
+ return result
}
fun deleteDownload(item: DownloadItem) = viewModelScope.launch(Dispatchers.IO) {
@@ -38,4 +44,8 @@ class DownloadViewModel(application: Application) : AndroidViewModel(application
fun updateDownload(item: DownloadItem) = viewModelScope.launch(Dispatchers.IO){
repository.update(item);
}
+
+ fun getLatest() : DownloadItem {
+ return repository.getLatest()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt
index db307810..ba3a75a0 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt
@@ -95,29 +95,38 @@ class ResultViewModel(application: Application) : AndroidViewModel(application)
}
fun getFormats(item: ResultItem, type: String) : List {
- val list = repository.getFormats(item)
+ var list = repository.getFormats(item)
val formats = mutableListOf()
- if (list.isEmpty()){
- when(type){
- "audio" -> {
- val audioFormats = getApplication().resources.getStringArray(R.array.audio_formats)
- audioFormats.forEach { formats.add(Format(item.id!!, it, "", "", 0, it)) }
- }
- "video" -> {
- val videoFormats = getApplication().resources.getStringArray(R.array.video_formats)
- videoFormats.forEach { formats.add(Format(item.id!!, it, "", "", 0, it)) }
- }
- }
- return formats
- }
+ val audioFormats = getApplication().resources.getStringArray(R.array.audio_formats)
+ val videoFormats = getApplication().resources.getStringArray(R.array.video_formats)
+
when(type){
- "audio" -> return list.filter { it.format.contains("audio", ignoreCase = true) }
- "video" -> return list.filter { !it.format.contains("audio", ignoreCase = true) }
+ "audio" -> {
+ list = list.filter { it.format_note.contains("audio", ignoreCase = true) }
+ if (list.isEmpty()) {
+ audioFormats.forEach { formats.add(Format(0, item.id, it, "", 0, it, "")) }
+ return formats
+ }
+ return list
+ }
+ "video" -> {
+ list = list.filter { !it.format_note.contains("audio", ignoreCase = true) }
+ if (list.isEmpty()) {
+ videoFormats.forEach { formats.add(Format(0, item.id, it, "", 0, it, "")) }
+ return formats
+ }
+ return list
+ }
}
+
val templates = repository.getTemplates()
templates.forEach {
- formats.add(Format(item.id!!, it.title, it.id.toString(), "", 0, it.content))
+ formats.add(Format(0, item.id, it.title, "", 0, it.content, ""))
}
return formats
}
+
+ fun getItemByURL(url: String) : ResultItem {
+ return repository.getItemByURL(url)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/DownloadsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/HistoryFragment.kt
similarity index 92%
rename from app/src/main/java/com/deniscerri/ytdlnis/ui/DownloadsFragment.kt
rename to app/src/main/java/com/deniscerri/ytdlnis/ui/HistoryFragment.kt
index feebd549..1b634f82 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/ui/DownloadsFragment.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/HistoryFragment.kt
@@ -24,7 +24,7 @@ import com.deniscerri.ytdlnis.database.DatabaseManager
import com.deniscerri.ytdlnis.database.models.HistoryItem
import com.deniscerri.ytdlnis.database.repository.HistoryRepository.HistorySort
import com.deniscerri.ytdlnis.database.viewmodel.HistoryViewModel
-import com.deniscerri.ytdlnis.databinding.FragmentDownloadsBinding
+import com.deniscerri.ytdlnis.databinding.FragmentHistoryBinding
import com.deniscerri.ytdlnis.util.FileUtil
import com.facebook.shimmer.ShimmerFrameLayout
import com.google.android.material.appbar.AppBarLayout
@@ -39,7 +39,7 @@ import java.io.File
/**
* A fragment representing a list of Items.
*/
-class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
+class HistoryFragment : Fragment(), HistoryAdapter.OnItemClickListener,
OnClickListener, OnLongClickListener {
private lateinit var historyViewModel : HistoryViewModel
@@ -66,14 +66,14 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
private var deleteFab: ExtendedFloatingActionButton? = null
private var fileUtil: FileUtil? = null
- private var _binding : FragmentDownloadsBinding? = null
+ private var _binding : FragmentHistoryBinding? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- _binding = FragmentDownloadsBinding.inflate(inflater, container, false)
- fragmentView = inflater.inflate(R.layout.fragment_downloads, container, false)
+ _binding = FragmentHistoryBinding.inflate(inflater, container, false)
+ fragmentView = inflater.inflate(R.layout.fragment_history, container, false)
activity = getActivity()
mainActivity = activity as MainActivity?
@@ -237,7 +237,7 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
sortChip.setOnClickListener {
sortSheet = BottomSheetDialog(requireContext())
sortSheet!!.requestWindowFeature(Window.FEATURE_NO_TITLE)
- sortSheet!!.setContentView(R.layout.downloads_sort_sheet)
+ sortSheet!!.setContentView(R.layout.history_sort_sheet)
val newest = sortSheet!!.findViewById(R.id.newest)
val oldest = sortSheet!!.findViewById(R.id.oldest)
newest!!.setOnClickListener {
@@ -309,13 +309,13 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
override fun onClick(v: View) {
when (v.id) {
R.id.bottomsheet_remove_button -> {
- removeItem(v.tag as Int)
+ removeItem(v.tag as Long)
}
R.id.bottom_sheet_link -> {
- openLinkIntent(v.tag as Int)
+ openLinkIntent(v.tag as Long)
}
R.id.bottomsheet_open_file_button -> {
- openFileIntent(v.tag as Int)
+ openFileIntent(v.tag as Long)
}
R.id.delete_selected_fab -> {
removeSelectedItems()
@@ -326,7 +326,7 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
override fun onLongClick(v: View): Boolean {
val id = v.id
if (id == R.id.bottom_sheet_link) {
- copyLinkToClipBoard(v.tag as Int)
+ copyLinkToClipBoard(v.tag as Long)
return true
}
return false
@@ -347,13 +347,13 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
historyViewModel.delete(item, deleteFile[0])
}
selectedObjects = ArrayList()
- historyAdapter!!.clearCheckedVideos()
+ historyAdapter!!.clearCheckeditems()
deleteFab!!.visibility = GONE
}
deleteDialog.show()
}
- private fun removeItem(id: Int) {
+ private fun removeItem(id: Long) {
if (bottomSheet != null) bottomSheet!!.hide()
val deleteFile = booleanArrayOf(false)
val v = findItem(id)
@@ -370,7 +370,7 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
deleteDialog.show()
}
- private fun copyLinkToClipBoard(id: Int) {
+ private fun copyLinkToClipBoard(id: Long) {
val url = findItem(id)?.url
val clipboard = context?.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText(getString(R.string.url), url)
@@ -380,7 +380,7 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
.show()
}
- private fun openLinkIntent(id: Int) {
+ private fun openLinkIntent(id: Long) {
val url = findItem(id)?.url
val i = Intent(Intent.ACTION_VIEW)
i.data = Uri.parse(url)
@@ -388,7 +388,7 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
startActivity(i)
}
- private fun openFileIntent(id: Int) {
+ private fun openFileIntent(id: Long) {
val downloadPath = findItem(id)!!.downloadPath
val file = File(downloadPath)
val uri = FileProvider.getUriForFile(
@@ -403,11 +403,11 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
startActivity(i)
}
- override fun onCardClick(id: Int, isFilePresent: Boolean) {
+ override fun onCardClick(videoID: Long, isPresent: Boolean) {
bottomSheet = BottomSheetDialog(fragmentContext!!)
bottomSheet!!.requestWindowFeature(Window.FEATURE_NO_TITLE)
- bottomSheet!!.setContentView(R.layout.downloads_bottom_sheet)
- val video = findItem(id)
+ bottomSheet!!.setContentView(R.layout.history_item_details_bottom_sheet)
+ val video = findItem(videoID)
val title = bottomSheet!!.findViewById(R.id.bottom_sheet_title)
title!!.text = video!!.title
val author = bottomSheet!!.findViewById(R.id.bottom_sheet_author)
@@ -415,16 +415,16 @@ class DownloadsFragment : Fragment(), HistoryAdapter.OnItemClickListener,
val link = bottomSheet!!.findViewById