From f396787b652aaaa9b0247d7fa84c690664bfb162 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Sat, 8 Apr 2023 21:21:01 +0200 Subject: [PATCH] alot of stuff added remux-video for audio made copy url similar to history card fixed padding on cards fixed configured download sheet not scrolling implemented chapter suggestions in cuts --- app/build.gradle | 4 +- .../ytdlnis/database/models/ChapterItem.kt | 7 + .../com/deniscerri/ytdlnis/ui/HomeFragment.kt | 6 + .../ConfigureDownloadBottomSheetDialog.kt | 48 ++++- .../downloadcard/CutVideoBottomSheetDialog.kt | 199 ++++++++++++++---- .../ui/downloadcard/DownloadAudioFragment.kt | 22 +- .../downloadcard/DownloadBottomSheetDialog.kt | 25 ++- .../downloadcard/DownloadCommandFragment.kt | 7 - .../ui/downloadcard/DownloadVideoFragment.kt | 16 +- .../FormatSelectionBottomSheetDialog.kt | 17 +- .../com/deniscerri/ytdlnis/util/InfoUtil.kt | 10 +- .../deniscerri/ytdlnis/work/DownloadWorker.kt | 34 ++- .../main/res/layout/active_download_card.xml | 2 +- .../res/layout/activity_download_queue.xml | 1 - .../configure_download_bottom_sheet.xml | 11 +- app/src/main/res/layout/cut_video_sheet.xml | 52 ++++- .../main/res/layout/download_bottom_sheet.xml | 12 ++ app/src/main/res/layout/download_card.xml | 3 +- app/src/main/res/layout/format_item.xml | 1 + .../res/layout/format_select_bottom_sheet.xml | 1 - .../res/layout/fragment_download_audio.xml | 29 +-- .../res/layout/fragment_download_command.xml | 15 -- .../res/layout/fragment_download_video.xml | 33 +-- app/src/main/res/layout/fragment_home.xml | 1 + .../main/res/layout/template_shortcuts.xml | 3 +- app/src/main/res/values/strings.xml | 3 + gradle/wrapper/gradle-wrapper.properties | 2 +- 27 files changed, 383 insertions(+), 181 deletions(-) create mode 100644 app/src/main/java/com/deniscerri/ytdlnis/database/models/ChapterItem.kt diff --git a/app/build.gradle b/app/build.gradle index fc5d6de5..aafed3b2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,7 +22,7 @@ android { keyPassword properties["signingConfig.keyPassword"] } } - compileSdkVersion "android-UpsideDownCake" + compileSdkVersion 33 defaultConfig { applicationId "com.deniscerri.ytdl" minSdkVersion 23 @@ -119,7 +119,7 @@ dependencies { implementation "androidx.appcompat:appcompat:$appCompatVer" implementation "androidx.constraintlayout:constraintlayout:2.1.4" - implementation 'com.google.android.material:material:1.10.0-alpha01' + implementation 'com.google.android.material:material:1.9.0-beta01' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.core:core:1.9.0' implementation 'androidx.recyclerview:recyclerview:1.3.0' diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/models/ChapterItem.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/models/ChapterItem.kt new file mode 100644 index 00000000..aaa81e09 --- /dev/null +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/models/ChapterItem.kt @@ -0,0 +1,7 @@ +package com.deniscerri.ytdlnis.database.models + +data class ChapterItem( + var start_time: Long, + var end_time: Long, + var title: String, +) \ No newline at end of file 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 ff74d367..4348e8e8 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt @@ -4,16 +4,20 @@ import android.annotation.SuppressLint import android.app.Activity import android.content.* import android.content.Context.CLIPBOARD_SERVICE +import android.content.res.ColorStateList import android.content.res.Configuration +import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Looper +import android.text.InputType import android.util.Log import android.view.* import android.view.View.* import android.widget.* import androidx.constraintlayout.widget.ConstraintLayout import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.content.ContextCompat import androidx.core.text.TextUtilsCompat import androidx.core.view.ViewCompat import androidx.core.view.children @@ -42,6 +46,7 @@ import com.google.android.material.appbar.AppBarLayout import com.google.android.material.button.MaterialButton import com.google.android.material.chip.Chip import com.google.android.material.chip.ChipGroup +import com.google.android.material.color.MaterialColors import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton import com.google.android.material.search.SearchBar @@ -350,6 +355,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi if (present == null) { val chip = layoutinflater!!.inflate(R.layout.input_chip, queriesChipGroup, false) as Chip chip.text = searchView.editText.text + chip.chipBackgroundColor = ColorStateList.valueOf(MaterialColors.getColor(requireContext(), R.attr.colorSecondaryContainer, Color.BLACK)) chip.setOnClickListener { queriesChipGroup!!.removeView(chip) } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt index 175d6d51..33f4bd74 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt @@ -4,14 +4,17 @@ import android.annotation.SuppressLint import android.app.Dialog import android.content.DialogInterface import android.os.Bundle +import android.util.DisplayMetrics import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import android.widget.Toast import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import com.deniscerri.ytdlnis.R import com.deniscerri.ytdlnis.database.DBManager @@ -21,6 +24,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.database.viewmodel.ResultViewModel +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.tabs.TabLayout @@ -36,7 +41,10 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri private lateinit var downloadViewModel: DownloadViewModel private lateinit var resultViewModel: ResultViewModel private lateinit var commandTemplateDao: CommandTemplateDao + private lateinit var behavior: BottomSheetBehavior private lateinit var onDownloadItemUpdateListener: OnDownloadItemUpdateListener + private lateinit var uiUtil: UiUtil + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -44,7 +52,7 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri resultViewModel = ViewModelProvider(this)[ResultViewModel::class.java] commandTemplateDao = DBManager.getInstance(requireContext()).commandTemplateDao onDownloadItemUpdateListener = listener - + uiUtil = UiUtil(FileUtil()) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -58,20 +66,31 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri super.setupDialog(dialog, style) val view = LayoutInflater.from(context).inflate(R.layout.configure_download_bottom_sheet, null) dialog.setContentView(view) - //view.minimumHeight = resources.displayMetrics.heightPixels + + dialog.setOnShowListener { + behavior = BottomSheetBehavior.from(view.parent as View) + val displayMetrics = DisplayMetrics() + requireActivity().windowManager.defaultDisplay.getMetrics(displayMetrics) + behavior.peekHeight = displayMetrics.heightPixels - 700 + } tabLayout = view.findViewById(R.id.download_tablayout) viewPager2 = view.findViewById(R.id.download_viewpager) - val fragments = mutableListOf(DownloadAudioFragment(resultItem, downloadItem), DownloadVideoFragment(resultItem, downloadItem)) + (viewPager2.getChildAt(0) as? RecyclerView)?.apply { + isNestedScrollingEnabled = false + overScrollMode = View.OVER_SCROLL_NEVER + } + val fragments = mutableListOf(DownloadAudioFragment(resultItem, downloadItem), DownloadVideoFragment(resultItem, downloadItem)) + var commandTemplateNr = 0 lifecycleScope.launch{ withContext(Dispatchers.IO){ - val nr = commandTemplateDao.getTotalNumber() - if(nr > 0){ + commandTemplateNr = commandTemplateDao.getTotalNumber() + if(commandTemplateNr > 0){ fragments.add(DownloadCommandFragment(resultItem, downloadItem)) }else{ - (tabLayout.getChildAt(0) as? ViewGroup)?.getChildAt(2)?.isEnabled = false + (tabLayout.getChildAt(0) as? ViewGroup)?.getChildAt(2)?.isClickable = true (tabLayout.getChildAt(0) as? ViewGroup)?.getChildAt(2)?.alpha = 0.3f } } @@ -107,7 +126,12 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab?) { - viewPager2.currentItem = tab!!.position + if (tab!!.position == 2 && commandTemplateNr == 0){ + tabLayout.selectTab(tabLayout.getTabAt(1)) + Toast.makeText(context, getString(R.string.add_template_first), Toast.LENGTH_SHORT).show() + }else{ + viewPager2.setCurrentItem(tab.position, false) + } } override fun onTabUnselected(tab: TabLayout.Tab?) { @@ -147,6 +171,16 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri dismiss() } + val link = view.findViewById