fixed video type not changing container & added more details in history details card

This commit is contained in:
Denis Çerri 2023-03-05 08:32:08 +01:00
parent cf8159dcc9
commit 44f33e1508
No known key found for this signature in database
GPG key ID: 95C43D517D830350
14 changed files with 211 additions and 117 deletions

View file

@ -65,7 +65,7 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity <activity
android:name=".ui.downloadqueue.DownloadQueueActivity" android:name=".ui.downloads.DownloadQueueActivity"
android:configChanges="layoutDirection|locale" android:configChanges="layoutDirection|locale"
android:parentActivityName=".MainActivity" android:parentActivityName=".MainActivity"
android:exported="true"> android:exported="true">

View file

@ -24,8 +24,8 @@ import androidx.work.WorkManager
import com.deniscerri.ytdlnis.databinding.ActivityMainBinding import com.deniscerri.ytdlnis.databinding.ActivityMainBinding
import com.deniscerri.ytdlnis.service.IDownloaderListener import com.deniscerri.ytdlnis.service.IDownloaderListener
import com.deniscerri.ytdlnis.service.IDownloaderService import com.deniscerri.ytdlnis.service.IDownloaderService
import com.deniscerri.ytdlnis.ui.downloadqueue.DownloadQueueActivity import com.deniscerri.ytdlnis.ui.downloads.DownloadQueueActivity
import com.deniscerri.ytdlnis.ui.HistoryFragment import com.deniscerri.ytdlnis.ui.downloads.HistoryFragment
import com.deniscerri.ytdlnis.ui.HomeFragment import com.deniscerri.ytdlnis.ui.HomeFragment
import com.deniscerri.ytdlnis.ui.more.MoreFragment import com.deniscerri.ytdlnis.ui.more.MoreFragment
import com.deniscerri.ytdlnis.ui.more.settings.SettingsActivity import com.deniscerri.ytdlnis.ui.more.settings.SettingsActivity

View file

@ -71,14 +71,6 @@ class GenericDownloadAdapter(onItemClickListener: OnItemClickListener, activity:
val type = card.findViewById<TextView>(R.id.type) val type = card.findViewById<TextView>(R.id.type)
type!!.text = item.type.toString().uppercase() type!!.text = item.type.toString().uppercase()
val formatNote = card.findViewById<TextView>(R.id.format_note)
if (item.type == DownloadViewModel.Type.command){
formatNote.visibility = View.GONE
}else{
formatNote.text = item.format.format_note
}
val codec = card.findViewById<TextView>(R.id.codec) val codec = card.findViewById<TextView>(R.id.codec)
val codecText = val codecText =
if (item.format.encoding != "") { if (item.format.encoding != "") {

View file

@ -9,6 +9,7 @@ import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import android.widget.AutoCompleteTextView import android.widget.AutoCompleteTextView
import android.widget.TextView import android.widget.TextView
@ -135,6 +136,12 @@ class DownloadVideoFragment(private val resultItem: ResultItem) : Fragment() {
containers containers
) )
) )
(container!!.editText as AutoCompleteTextView?)!!.onItemClickListener =
AdapterView.OnItemClickListener { _: AdapterView<*>?, _: View?, index: Int, _: Long ->
downloadItem.format.container = containers[index]
}
val selectedContainer: String = downloadItem.format.container val selectedContainer: String = downloadItem.format.container
containerAutoCompleteTextView!!.setText(selectedContainer, false) containerAutoCompleteTextView!!.setText(selectedContainer, false)

View file

@ -1,4 +1,4 @@
package com.deniscerri.ytdlnis.ui.downloadqueue package com.deniscerri.ytdlnis.ui.downloads
import android.app.Activity import android.app.Activity
import android.content.res.Configuration import android.content.res.Configuration

View file

@ -1,4 +1,4 @@
package com.deniscerri.ytdlnis.ui.downloadqueue package com.deniscerri.ytdlnis.ui.downloads
import android.app.Activity import android.app.Activity
import android.content.DialogInterface import android.content.DialogInterface
@ -8,7 +8,6 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.Window import android.view.Window
import android.widget.AdapterView.OnItemClickListener
import android.widget.Button import android.widget.Button
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
@ -27,9 +26,7 @@ import com.deniscerri.ytdlnis.util.FileUtil
import com.deniscerri.ytdlnis.util.UiUtil import com.deniscerri.ytdlnis.util.UiUtil
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.w3c.dom.Text
import java.sql.Date import java.sql.Date
import java.sql.Timestamp
import java.text.DateFormat import java.text.DateFormat
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*

View file

@ -1,14 +1,9 @@
package com.deniscerri.ytdlnis.ui.downloadqueue package com.deniscerri.ytdlnis.ui.downloads
import android.util.Log
import androidx.annotation.NonNull
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import com.deniscerri.ytdlnis.database.models.DownloadItem
import com.deniscerri.ytdlnis.database.models.ResultItem
import com.google.gson.Gson
class DownloadListFragmentAdapter ( class DownloadListFragmentAdapter (
fragmentManager : FragmentManager, fragmentManager : FragmentManager,

View file

@ -1,4 +1,4 @@
package com.deniscerri.ytdlnis.ui.downloadqueue package com.deniscerri.ytdlnis.ui.downloads
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle

View file

@ -1,4 +1,4 @@
package com.deniscerri.ytdlnis.ui.downloadqueue package com.deniscerri.ytdlnis.ui.downloads
import android.app.Activity import android.app.Activity
import android.content.DialogInterface import android.content.DialogInterface

View file

@ -1,4 +1,4 @@
package com.deniscerri.ytdlnis.ui package com.deniscerri.ytdlnis.ui.downloads
import android.app.Activity import android.app.Activity
import android.content.* import android.content.*
@ -378,31 +378,61 @@ class HistoryFragment : Fragment(), HistoryAdapter.OnItemClickListener{
bottomSheet = BottomSheetDialog(fragmentContext!!) bottomSheet = BottomSheetDialog(fragmentContext!!)
bottomSheet!!.requestWindowFeature(Window.FEATURE_NO_TITLE) bottomSheet!!.requestWindowFeature(Window.FEATURE_NO_TITLE)
bottomSheet!!.setContentView(R.layout.history_item_details_bottom_sheet) bottomSheet!!.setContentView(R.layout.history_item_details_bottom_sheet)
val video = findItem(itemID) val item = findItem(itemID)
val title = bottomSheet!!.findViewById<TextView>(R.id.bottom_sheet_title) val title = bottomSheet!!.findViewById<TextView>(R.id.bottom_sheet_title)
title!!.text = video!!.title title!!.text = item!!.title
val author = bottomSheet!!.findViewById<TextView>(R.id.bottom_sheet_author) val author = bottomSheet!!.findViewById<TextView>(R.id.bottom_sheet_author)
author!!.text = video.author author!!.text = item.author
val type = bottomSheet!!.findViewById<TextView>(R.id.type)
val formatNote = bottomSheet!!.findViewById<TextView>(R.id.format_note)
val codec = bottomSheet!!.findViewById<TextView>(R.id.codec)
val fileSize = bottomSheet!!.findViewById<TextView>(R.id.file_size)
type!!.text = item.type.toString().uppercase()
if (item.format.format_note == "?") formatNote!!.visibility = View.GONE
else formatNote!!.text = item.format.format_note
val codecText =
if (item.format.encoding != "") {
item.format.encoding.uppercase()
}else if (item.format.vcodec != "none" && item.format.vcodec != ""){
item.format.vcodec.uppercase()
} else {
item.format.acodec.uppercase()
}
if (codecText == "" || codecText == "none"){
codec!!.visibility = View.GONE
}else{
codec!!.visibility = View.VISIBLE
codec.text = codecText
}
val fileSizeReadable = fileUtil!!.convertFileSize(item.format.filesize)
if (fileSizeReadable == "?") fileSize!!.visibility = View.GONE
else fileSize!!.text = fileSizeReadable
val link = bottomSheet!!.findViewById<Button>(R.id.bottom_sheet_link) val link = bottomSheet!!.findViewById<Button>(R.id.bottom_sheet_link)
val url = video.url val url = item.url
link!!.text = url link!!.text = url
link.tag = itemID link.tag = itemID
link.setOnClickListener{ link.setOnClickListener{
uiUtil!!.openLinkIntent(requireContext(), video.url, bottomSheet) uiUtil!!.openLinkIntent(requireContext(), item.url, bottomSheet)
} }
link.setOnLongClickListener{ link.setOnLongClickListener{
uiUtil!!.copyLinkToClipBoard(requireContext(), video.url, bottomSheet) uiUtil!!.copyLinkToClipBoard(requireContext(), item.url, bottomSheet)
true true
} }
val remove = bottomSheet!!.findViewById<Button>(R.id.bottomsheet_remove_button) val remove = bottomSheet!!.findViewById<Button>(R.id.bottomsheet_remove_button)
remove!!.tag = itemID remove!!.tag = itemID
remove.setOnClickListener{ remove.setOnClickListener{
removeItem(video) removeItem(item)
} }
val openFile = bottomSheet!!.findViewById<Button>(R.id.bottomsheet_open_file_button) val openFile = bottomSheet!!.findViewById<Button>(R.id.bottomsheet_open_file_button)
openFile!!.tag = itemID openFile!!.tag = itemID
openFile.setOnClickListener{ openFile.setOnClickListener{
uiUtil!!.openFileIntent(requireContext(), video.downloadPath) uiUtil!!.openFileIntent(requireContext(), item.downloadPath)
} }
if (!isPresent) openFile.visibility = GONE if (!isPresent) openFile.visibility = GONE
bottomSheet!!.show() bottomSheet!!.show()

View file

@ -1,11 +1,10 @@
package com.deniscerri.ytdlnis.ui.downloadqueue package com.deniscerri.ytdlnis.ui.downloads
import android.app.Activity import android.app.Activity
import android.content.res.Configuration import android.content.res.Configuration
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.View.OnClickListener
import android.view.ViewGroup import android.view.ViewGroup
import android.view.Window import android.view.Window
import android.widget.Button import android.widget.Button

View file

@ -36,81 +36,88 @@
</LinearLayout> </LinearLayout>
<LinearLayout <HorizontalScrollView
android:id="@+id/linearLayout3"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:scrollbars="none"
android:layout_gravity="bottom"
android:orientation="horizontal"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
app:layout_constraintStart_toStartOf="parent" android:layout_height="wrap_content">
app:layout_constraintTop_toBottomOf="@+id/url">
<TextView <LinearLayout
android:id="@+id/type" android:id="@+id/linearLayout3"
style="@style/Widget.Material3.FloatingActionButton.Large.Primary"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="5dp" android:layout_gravity="bottom"
android:background="?attr/colorAccent" android:orientation="horizontal"
android:clickable="false"
android:gravity="center"
android:minWidth="30dp"
android:paddingHorizontal="10dp"
app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toBottomOf="@+id/url">
<TextView <TextView
android:id="@+id/format_note" android:id="@+id/type"
style="@style/Widget.Material3.FloatingActionButton.Large.Primary" style="@style/Widget.Material3.FloatingActionButton.Large.Primary"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:background="?attr/colorPrimary" android:background="?attr/colorAccent"
android:clickable="false" android:clickable="false"
android:gravity="center" android:gravity="center"
android:minWidth="30dp" android:minWidth="30dp"
android:paddingHorizontal="10dp" android:paddingHorizontal="10dp"
app:cornerRadius="10dp" app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent"/>
<TextView <TextView
android:id="@+id/codec" android:id="@+id/format_note"
style="@style/Widget.Material3.FloatingActionButton.Large.Secondary" style="@style/Widget.Material3.FloatingActionButton.Large.Primary"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:background="?attr/colorSecondary" android:background="?attr/colorPrimary"
android:clickable="false" android:clickable="false"
android:gravity="center" android:gravity="center"
android:minWidth="30dp" android:minWidth="30dp"
android:paddingHorizontal="10dp" android:paddingHorizontal="10dp"
app:cornerRadius="10dp" app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"/>
<TextView <TextView
android:id="@+id/file_size" android:id="@+id/codec"
style="@style/Widget.Material3.FloatingActionButton.Large.Tertiary" style="@style/Widget.Material3.FloatingActionButton.Large.Secondary"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:background="?attr/colorSecondary" android:background="?attr/colorSecondary"
android:clickable="false" android:clickable="false"
android:gravity="center" android:gravity="center"
android:minWidth="30dp" android:minWidth="30dp"
android:paddingHorizontal="10dp" android:paddingHorizontal="10dp"
app:cornerRadius="10dp" app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
</LinearLayout> <TextView
android:id="@+id/file_size"
style="@style/Widget.Material3.FloatingActionButton.Large.Tertiary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:background="?attr/colorSecondary"
android:clickable="false"
android:gravity="center"
android:minWidth="30dp"
android:paddingHorizontal="10dp"
app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
</HorizontalScrollView>
<LinearLayout <LinearLayout
android:id="@+id/scheduled_time_linear" android:id="@+id/scheduled_time_linear"

View file

@ -99,23 +99,6 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/format_note"
style="@style/Widget.Material3.FloatingActionButton.Large.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:background="?attr/colorPrimary"
android:clickable="false"
android:gravity="center"
android:minWidth="30dp"
android:paddingHorizontal="10dp"
app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView <TextView
android:id="@+id/codec" android:id="@+id/codec"
style="@style/Widget.Material3.FloatingActionButton.Large.Secondary" style="@style/Widget.Material3.FloatingActionButton.Large.Secondary"

View file

@ -36,6 +36,90 @@
</LinearLayout> </LinearLayout>
<HorizontalScrollView
android:layout_width="wrap_content"
android:scrollbars="none"
android:layout_marginStart="20dp"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/url">
<TextView
android:id="@+id/type"
style="@style/Widget.Material3.FloatingActionButton.Large.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:background="?attr/colorAccent"
android:clickable="false"
android:gravity="center"
android:minWidth="30dp"
android:paddingHorizontal="10dp"
app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/format_note"
style="@style/Widget.Material3.FloatingActionButton.Large.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:background="?attr/colorPrimary"
android:clickable="false"
android:gravity="center"
android:minWidth="30dp"
android:paddingHorizontal="10dp"
app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/codec"
style="@style/Widget.Material3.FloatingActionButton.Large.Secondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:background="?attr/colorSecondary"
android:clickable="false"
android:gravity="center"
android:minWidth="30dp"
android:paddingHorizontal="10dp"
app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/file_size"
style="@style/Widget.Material3.FloatingActionButton.Large.Tertiary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:background="?attr/colorSecondary"
android:clickable="false"
android:gravity="center"
android:minWidth="30dp"
android:paddingHorizontal="10dp"
app:cornerRadius="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
</HorizontalScrollView>
<Button <Button
style="@style/Widget.Material3.Button.TextButton.Icon" style="@style/Widget.Material3.Button.TextButton.Icon"
android:id="@+id/bottom_sheet_link" android:id="@+id/bottom_sheet_link"