From 562dd8284599fa9b943b4e2dd90cf0ddf4d07fa6 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Thu, 27 Apr 2023 19:53:07 +0200 Subject: [PATCH] added preferred download id & download now button on schedule downloads in the details sheet --- .../com/deniscerri/ytdlnis/MainActivity.kt | 1 + .../database/viewmodel/DownloadViewModel.kt | 43 ++++++++++++------- .../ytdlnis/receiver/ShareActivity.kt | 1 + .../ui/downloads/QueuedDownloadsFragment.kt | 22 ++++++++-- .../ui/more/settings/SettingsFragment.kt | 11 +++++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/xml/root_preferences.xml | 5 +++ 7 files changed, 67 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt index 07aadba4..951191ec 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.kt @@ -66,6 +66,7 @@ class MainActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + ThemeUtil.updateTheme(this) setContentView(R.layout.activity_main) context = baseContext resultViewModel = ViewModelProvider(this)[ResultViewModel::class.java] 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 5939bb24..b68d1883 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 @@ -4,12 +4,10 @@ import android.app.Activity import android.app.Application import android.content.Context import android.content.SharedPreferences -import android.content.res.Resources import android.net.ConnectivityManager import android.widget.Toast import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import androidx.work.* import com.deniscerri.ytdlnis.App @@ -22,7 +20,6 @@ import com.deniscerri.ytdlnis.work.DownloadWorker import com.google.gson.Gson import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import java.util.concurrent.TimeUnit @@ -41,6 +38,9 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel private var bestVideoFormat : Format private var bestAudioFormat : Format private var defaultVideoFormats : MutableList + + private val videoQualityPreference: String + private val formatIDPreference: String enum class Type { audio, video, command } @@ -60,6 +60,9 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel cancelledDownloads = repository.cancelledDownloads erroredDownloads = repository.erroredDownloads + videoQualityPreference = sharedPreferences.getString("video_quality", application.getString(R.string.best_quality)).toString() + formatIDPreference = sharedPreferences.getString("format_id", "").toString() + val videoFormat = getApplication().resources.getStringArray(R.array.video_formats) var videoContainer = sharedPreferences.getString("video_format", "Default") if (videoContainer == "Default") videoContainer = application.getString(R.string.defaultValue) @@ -236,7 +239,11 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel Type.audio -> { return cloneFormat ( try { - formats.last { it.format_note.contains("audio", ignoreCase = true) } + try{ + formats.first { it.format_note.contains("audio", ignoreCase = true) && it.format_id == formatIDPreference } + }catch (e: Exception){ + formats.last { it.format_note.contains("audio", ignoreCase = true) } + } }catch (e: Exception){ bestAudioFormat } @@ -247,18 +254,24 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel return cloneFormat( try { val theFormats = formats.ifEmpty { defaultVideoFormats } - - val qualityPreference = sharedPreferences.getString("video_quality", application.getString(R.string.best_quality)) - if (qualityPreference == getApplication().resources.getString(R.string.worst_quality)){ - theFormats.first { !it.format_note.contains("audio", ignoreCase = true) } - } - if (qualityPreference == getApplication().resources.getString(R.string.best_quality)){ - theFormats.last { !it.format_note.contains("audio", ignoreCase = true) } - } - try{ - theFormats.last { format -> format.format_note.contains(qualityPreference!!.substring(0, qualityPreference.length - 1)) } + try { + formats.first { !it.format_note.contains("audio", ignoreCase = true) && it.format_id == formatIDPreference } }catch (e: Exception){ - theFormats.last { !it.format_note.contains("audio", ignoreCase = true) } + when (videoQualityPreference) { + getApplication().resources.getString(R.string.worst_quality) -> { + theFormats.first {!it.format_note.contains("audio", ignoreCase = true) } + } + getApplication().resources.getString(R.string.best_quality) -> { + theFormats.last {!it.format_note.contains("audio", ignoreCase = true) } + } + else -> { + try{ + theFormats.last {it.format_note.contains(videoQualityPreference.substring(0, videoQualityPreference.length - 1)) } + }catch (e: Exception){ + theFormats.last { !it.format_note.contains("audio", ignoreCase = true) } + } + } + } } }catch (e: Exception){ bestVideoFormat diff --git a/app/src/main/java/com/deniscerri/ytdlnis/receiver/ShareActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/receiver/ShareActivity.kt index 0d162aaa..735dc295 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/receiver/ShareActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/receiver/ShareActivity.kt @@ -57,6 +57,7 @@ class ShareActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + ThemeUtil.updateTheme(this) WindowCompat.setDecorFitsSystemWindows(window, false) ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { v, insets -> v.setPadding(0, 0, 0, 0) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/QueuedDownloadsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/QueuedDownloadsFragment.kt index e296a3f8..5007cb18 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/QueuedDownloadsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloads/QueuedDownloadsFragment.kt @@ -211,11 +211,27 @@ class QueuedDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClickLi val openFile = bottomSheet.findViewById