From 1eca31ab5d04597710d294955e6856ed7d5d60ca Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Fri, 24 Mar 2023 22:15:00 +0100 Subject: [PATCH] fixed custom command not scrolling properly in the download card --- .../com/deniscerri/ytdlnis/MainActivity.kt | 11 ++- .../database/viewmodel/DownloadViewModel.kt | 2 +- .../ui/downloadcard/DownloadAudioFragment.kt | 11 +-- .../downloadcard/DownloadCommandFragment.kt | 40 ++++++--- .../ui/downloadcard/DownloadVideoFragment.kt | 18 ++-- .../ytdlnis/ui/more/TerminalActivity.kt | 3 +- .../ui/more/settings/SettingsFragment.kt | 2 +- .../com/deniscerri/ytdlnis/util/UpdateUtil.kt | 23 ++--- .../deniscerri/ytdlnis/work/DownloadWorker.kt | 6 +- .../res/layout/fragment_download_video.xml | 19 ++-- .../res/layout/search_suggestion_item.xml | 90 ++++++++----------- app/src/main/res/xml/root_preferences.xml | 4 +- 12 files changed, 115 insertions(+), 114 deletions(-) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt index 53635198..f8762ce6 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt @@ -17,12 +17,15 @@ import android.view.MenuItem import android.view.View import android.view.WindowInsets import android.widget.TextView +import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager +import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope +import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel import com.deniscerri.ytdlnis.databinding.ActivityMainBinding import com.deniscerri.ytdlnis.ui.HomeFragment import com.deniscerri.ytdlnis.ui.downloads.DownloadQueueActivity @@ -33,6 +36,7 @@ import com.deniscerri.ytdlnis.util.UpdateUtil import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import java.io.BufferedReader import java.io.File import java.io.InputStreamReader @@ -49,6 +53,7 @@ class MainActivity : AppCompatActivity() { private lateinit var homeFragment: HomeFragment private lateinit var historyFragment: HistoryFragment private lateinit var preferences: SharedPreferences + private lateinit var resultViewModel: ResultViewModel override fun onCreate(savedInstanceState: Bundle?) { @@ -58,9 +63,13 @@ class MainActivity : AppCompatActivity() { setContentView(R.layout.activity_main) setContentView(binding.root) context = baseContext - + resultViewModel = ViewModelProvider(this)[ResultViewModel::class.java] preferences = context.getSharedPreferences("root_preferences", MODE_PRIVATE) + if (preferences.getBoolean("incognito", false)){ + resultViewModel.deleteAll() + } + askPermissions() checkUpdate() fm = supportFragmentManager 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 b257a111..6ae9262b 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 @@ -222,7 +222,7 @@ class DownloadViewModel(application: Application) : AndroidViewModel(application "", "", 0, - c.content + c.content.replace("\n", " ") ) } } 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 0b5793f0..5e58682f 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 @@ -1,7 +1,6 @@ package com.deniscerri.ytdlnis.ui.downloadcard import android.app.Activity -import android.app.AlertDialog import android.content.ClipboardManager import android.content.DialogInterface import android.content.Intent @@ -22,8 +21,6 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope -import androidx.preference.MultiSelectListPreference -import androidx.preference.Preference import com.deniscerri.ytdlnis.R import com.deniscerri.ytdlnis.database.models.DownloadItem import com.deniscerri.ytdlnis.database.models.Format @@ -123,9 +120,9 @@ class DownloadAudioFragment(private var resultItem: ResultItem, private var curr audioPathResultLauncher.launch(intent) } freeSpace = view.findViewById(R.id.freespace) - freeSpace.text = getString(R.string.freespace) + ": " + fileUtil.convertFileSize( + freeSpace.text = String.format( getString(R.string.freespace) + ": " + fileUtil.convertFileSize( File(fileUtil.formatPath(downloadItem.downloadPath)).freeSpace - ) + )) var formats = mutableListOf() formats.addAll(resultItem.formats.filter { it.format_note.contains("audio", ignoreCase = true) }) @@ -271,9 +268,9 @@ class DownloadAudioFragment(private var resultItem: ResultItem, private var curr //downloadViewModel.updateDownload(downloadItem) saveDir.editText?.setText(fileUtil.formatPath(result.data?.data.toString()), TextView.BufferType.EDITABLE) - freeSpace.text = getString(R.string.freespace) + ": " + fileUtil.convertFileSize( + freeSpace.text = String.format( getString(R.string.freespace) + ": " + fileUtil.convertFileSize( File(fileUtil.formatPath(downloadItem.downloadPath)).freeSpace - ) + )) } } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadCommandFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadCommandFragment.kt index 5861097b..83f8c425 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadCommandFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/DownloadCommandFragment.kt @@ -1,5 +1,6 @@ package com.deniscerri.ytdlnis.ui.downloadcard +import android.annotation.SuppressLint import android.app.Activity import android.content.ClipboardManager import android.content.Intent @@ -7,12 +8,10 @@ import android.os.Bundle import android.text.Editable import android.text.TextWatcher import android.view.LayoutInflater +import android.view.MotionEvent import android.view.View import android.view.ViewGroup -import android.widget.AdapterView -import android.widget.ArrayAdapter -import android.widget.AutoCompleteTextView -import android.widget.TextView +import android.widget.* import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.content.res.AppCompatResources @@ -116,6 +115,7 @@ class DownloadCommandFragment(private val resultItem: ResultItem, private var cu chosenCommandView.editText!!.setText("") } } + chosenCommandView.editText!!.enableScrollText() val commandTemplates = view.findViewById(R.id.template) val autoCompleteTextView = @@ -140,8 +140,8 @@ class DownloadCommandFragment(private val resultItem: ResultItem, private var cu saveDir.editText!!.setText( fileUtil.formatPath(downloadItem.downloadPath) ) - saveDir.editText!!.isFocusable = false; - saveDir.editText!!.isClickable = true; + saveDir.editText!!.isFocusable = false + saveDir.editText!!.isClickable = true saveDir.editText!!.setOnClickListener { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION) @@ -151,9 +151,9 @@ class DownloadCommandFragment(private val resultItem: ResultItem, private var cu } freeSpace = view.findViewById(R.id.freespace) - freeSpace.text = getString(R.string.freespace) + ": " + fileUtil.convertFileSize( + freeSpace.text = String.format(getString(R.string.freespace) + ": " + fileUtil.convertFileSize( File(fileUtil.formatPath(downloadItem.downloadPath)).freeSpace - ) + )) val newTemplate : Chip = view.findViewById(R.id.newTemplate) newTemplate.setOnClickListener { @@ -233,12 +233,30 @@ class DownloadCommandFragment(private val resultItem: ResultItem, private var cu ) } downloadItem.downloadPath = result.data?.data.toString() - //downloadviewmodel.updateDownload(downloadItem) saveDir.editText?.setText(fileUtil.formatPath(result.data?.data.toString()), TextView.BufferType.EDITABLE) - freeSpace.text = getString(R.string.freespace) + ": " + fileUtil.convertFileSize( + freeSpace.text = String.format(getString(R.string.freespace) + ": " + fileUtil.convertFileSize( File(fileUtil.formatPath(downloadItem.downloadPath)).freeSpace - ) + )) + } + } + + @SuppressLint("ClickableViewAccessibility") + fun EditText.enableScrollText() + { + overScrollMode = View.OVER_SCROLL_ALWAYS + scrollBarStyle = View.SCROLLBARS_INSIDE_INSET + isVerticalScrollBarEnabled = true + setOnTouchListener { view, event -> + if (view is EditText) { + if(!view.text.isNullOrEmpty()) { + view.parent.requestDisallowInterceptTouchEvent(true) + when (event.action and MotionEvent.ACTION_MASK) { + MotionEvent.ACTION_UP -> view.parent.requestDisallowInterceptTouchEvent(false) + } + } + } + false } } } \ No newline at end of file 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 b37ab6b8..5516f187 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 @@ -111,8 +111,8 @@ class DownloadVideoFragment(private val resultItem: ResultItem, private var curr saveDir.editText!!.setText( fileUtil.formatPath(downloadItem.downloadPath) ) - saveDir.editText!!.isFocusable = false; - saveDir.editText!!.isClickable = true; + saveDir.editText!!.isFocusable = false + saveDir.editText!!.isClickable = true saveDir.editText!!.setOnClickListener { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION) @@ -122,9 +122,9 @@ class DownloadVideoFragment(private val resultItem: ResultItem, private var curr } freeSpace = view.findViewById(R.id.freespace) - freeSpace.text = getString(R.string.freespace) + ": " + fileUtil.convertFileSize( + freeSpace.text = String.format(getString(R.string.freespace) + ": " + fileUtil.convertFileSize( File(fileUtil.formatPath(downloadItem.downloadPath)).freeSpace - ) + )) var formats = mutableListOf() formats.addAll(resultItem.formats.filter { !it.format_note.contains("audio", ignoreCase = true) }) @@ -235,13 +235,13 @@ class DownloadVideoFragment(private val resultItem: ResultItem, private var curr builder.setMultiChoiceItems( entries, checkedItems.toBooleanArray() - ) { dialog, which, isChecked -> + ) { _, which, isChecked -> checkedItems[which] = isChecked } builder.setPositiveButton( getString(R.string.ok) - ) { dialog: DialogInterface?, which: Int -> + ) { _: DialogInterface?, _: Int -> downloadItem.videoPreferences.sponsorBlockFilters.clear() for (i in 0 until checkedItems.size) { if (checkedItems[i]) { @@ -253,7 +253,7 @@ class DownloadVideoFragment(private val resultItem: ResultItem, private var curr // handle the negative button of the alert dialog builder.setNegativeButton( getString(R.string.cancel) - ) { dialog: DialogInterface?, which: Int -> } + ) { _: DialogInterface?, _: Int -> } val dialog = builder.create() @@ -288,9 +288,9 @@ class DownloadVideoFragment(private val resultItem: ResultItem, private var curr //downloadviewmodel.updateDownload(downloadItem) saveDir.editText?.setText(fileUtil.formatPath(result.data?.data.toString()), TextView.BufferType.EDITABLE) - freeSpace.text = getString(R.string.freespace) + ": " + fileUtil.convertFileSize( + freeSpace.text = String.format(getString(R.string.freespace) + ": " + fileUtil.convertFileSize( File(fileUtil.formatPath(downloadItem.downloadPath)).freeSpace - ) + )) } } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/TerminalActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/TerminalActivity.kt index a6d57756..78bd2b9c 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/TerminalActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/TerminalActivity.kt @@ -137,8 +137,7 @@ class TerminalActivity : AppCompatActivity() { }.absolutePath ) - - request.addOption("-P", tempFileDir.absolutePath) + //request.addOption("-P", tempFileDir.absolutePath) cancelFab!!.visibility = View.VISIBLE fab!!.visibility = View.GONE diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt index cd20a4dc..f1916204 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt @@ -433,7 +433,7 @@ class SettingsFragment : PreferenceFragmentCompat() { requireContext().getString(R.string.you_are_in_latest_version), Toast.LENGTH_LONG ).show() - else -> Toast.makeText(context, this.toString(), Toast.LENGTH_LONG).show() + else -> Toast.makeText(context, getString(R.string.errored), Toast.LENGTH_LONG).show() } } true diff --git a/app/src/main/java/com/deniscerri/ytdlnis/util/UpdateUtil.kt b/app/src/main/java/com/deniscerri/ytdlnis/util/UpdateUtil.kt index 26d7ffd3..2df10a2a 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/util/UpdateUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/util/UpdateUtil.kt @@ -171,22 +171,17 @@ class UpdateUtil(var context: Context) { updatingYTDL = true - YoutubeDL.getInstance().updateYoutubeDL( - context, if (sharedPreferences.getBoolean("nightly_ytdl", false) ) ytdlpNightly else null - ).apply { + try { + YoutubeDL.getInstance().updateYoutubeDL( + context, if (sharedPreferences.getBoolean("nightly_ytdl", false) ) ytdlpNightly else null + ).apply { + updatingYTDL = false + } + }catch (e: Exception){ + e.printStackTrace() updatingYTDL = false + null } - -// .onFailure { -// if (BuildConfig.DEBUG) Log.e(tag, context.getString(R.string.ytdl_update_failed), e) -// Toast.makeText( -// context, -// context.getString(R.string.ytdl_update_failed), -// Toast.LENGTH_LONG -// ).show() -// updatingYTDL = false -// } - //} } companion object { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/work/DownloadWorker.kt b/app/src/main/java/com/deniscerri/ytdlnis/work/DownloadWorker.kt index 0e8b4c5c..35d1d625 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/work/DownloadWorker.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/work/DownloadWorker.kt @@ -68,7 +68,6 @@ class DownloadWorker( val type = downloadItem.type val downloadLocation = downloadItem.downloadPath - val titleRegex = Regex("[^A-Za-z\\d ]") val tempFileDir = File(context.cacheDir.absolutePath + downloadItem.id) tempFileDir.delete() tempFileDir.mkdir() @@ -129,7 +128,7 @@ class DownloadWorker( DownloadViewModel.Type.audio -> { request.addOption("-x") var audioQualityId : String = downloadItem.format.format_id - if (audioQualityId.isBlank() || audioQualityId == "0") audioQualityId = "" + if (audioQualityId.isBlank() || audioQualityId == "0" || audioQualityId == context.getString(R.string.best_quality)) audioQualityId = "" else if (audioQualityId == context.getString(R.string.worst_quality)) audioQualityId = "worstaudio" if (audioQualityId.isNotBlank()){ @@ -223,14 +222,15 @@ class DownloadWorker( } runCatching { + val titleRegex = Regex("[^A-Za-z\\d ]") val logDownloads = sharedPreferences.getBoolean("log_downloads", false) && !sharedPreferences.getBoolean("incognito", false) val logFolder = File(context.filesDir.absolutePath + "/logs") val logFile = File(context.filesDir.absolutePath + """/logs/${downloadItem.id} - ${titleRegex.replace(downloadItem.title, "")}##${downloadItem.type}##${downloadItem.format.format_id}.log""") - Log.e("aa", logFile.name) if (logDownloads){ logFolder.mkdirs() logFile.createNewFile() logFile.writeText("Downloading:\n" + + "Title: ${downloadItem.title}\n" + "URL: ${downloadItem.url}\n" + "Type: ${downloadItem.type}\n" + "Format: ${downloadItem.format}\n\n") diff --git a/app/src/main/res/layout/fragment_download_video.xml b/app/src/main/res/layout/fragment_download_video.xml index dea01e0c..c5758e64 100644 --- a/app/src/main/res/layout/fragment_download_video.xml +++ b/app/src/main/res/layout/fragment_download_video.xml @@ -169,6 +169,7 @@ android:textSize="15sp" /> @@ -195,14 +196,6 @@ android:checked="false" android:text="@string/add_chapter" /> - - @@ -240,6 +234,15 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + - + app:layout_constraintTop_toTopOf="parent"> - + android:layout_gravity="center_vertical" + android:layout_weight="1" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:drawablePadding="20dp" + android:ellipsize="end" + android:focusable="true" + android:gravity="center_vertical" + android:maxLines="1" + android:paddingEnd="20dp" + android:textSize="16sp" + android:textStyle="bold" + app:drawableLeftCompat="@drawable/ic_search" /> - + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index f28e3a44..0011f91d 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -145,7 +145,7 @@