chore(deps): update android-plugin to v8 (major) (#333)
* Update android-plugin to v8 * ci: upgrade to java 17 * fix: transitive R classes and buildconfig * lint: fix ktlint issues * lint: fix ktlint issues * lint: fix ktlint issues --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: jarnedemeulemeester <jarnedemeulemeester@gmail.com>
This commit is contained in:
parent
0d4c38d34b
commit
22542614cd
32 changed files with 118 additions and 115 deletions
8
.github/workflows/build.yaml
vendored
8
.github/workflows/build.yaml
vendored
|
@ -13,10 +13,10 @@ jobs:
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
- name: Validate Gradle Wrapper
|
- name: Validate Gradle Wrapper
|
||||||
uses: gradle/wrapper-validation-action@v1
|
uses: gradle/wrapper-validation-action@v1
|
||||||
- name: Set up JDK 11
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v3
|
||||||
with:
|
with:
|
||||||
java-version: 11
|
java-version: 17
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/gradle-build-action@v2
|
uses: gradle/gradle-build-action@v2
|
||||||
|
@ -30,10 +30,10 @@ jobs:
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
- name: Validate Gradle Wrapper
|
- name: Validate Gradle Wrapper
|
||||||
uses: gradle/wrapper-validation-action@v1
|
uses: gradle/wrapper-validation-action@v1
|
||||||
- name: Set up JDK 11
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v3
|
||||||
with:
|
with:
|
||||||
java-version: 11
|
java-version: 17
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/gradle-build-action@v2
|
uses: gradle/gradle-build-action@v2
|
||||||
|
|
|
@ -55,8 +55,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
|
|
|
@ -11,6 +11,7 @@ import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter
|
||||||
import dev.jdtech.jellyfin.adapters.ServerGridAdapter
|
import dev.jdtech.jellyfin.adapters.ServerGridAdapter
|
||||||
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
|
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
|
||||||
import dev.jdtech.jellyfin.api.JellyfinApi
|
import dev.jdtech.jellyfin.api.JellyfinApi
|
||||||
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.models.Server
|
import dev.jdtech.jellyfin.models.Server
|
||||||
import dev.jdtech.jellyfin.models.User
|
import dev.jdtech.jellyfin.models.User
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
@ -58,7 +59,7 @@ fun bindItemBackdropById(imageView: ImageView, itemId: UUID) {
|
||||||
@BindingAdapter("personImage")
|
@BindingAdapter("personImage")
|
||||||
fun bindPersonImage(imageView: ImageView, person: BaseItemPerson) {
|
fun bindPersonImage(imageView: ImageView, person: BaseItemPerson) {
|
||||||
imageView
|
imageView
|
||||||
.loadImage("/items/${person.id}/Images/${ImageType.PRIMARY}", placeholderId = R.drawable.person_placeholder)
|
.loadImage("/items/${person.id}/Images/${ImageType.PRIMARY}", placeholderId = CoreR.drawable.person_placeholder)
|
||||||
.posterDescription(person.name)
|
.posterDescription(person.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,13 +109,13 @@ fun bindSeasonPoster(imageView: ImageView, seasonId: UUID) {
|
||||||
@BindingAdapter("userImage")
|
@BindingAdapter("userImage")
|
||||||
fun bindUserImage(imageView: ImageView, user: User) {
|
fun bindUserImage(imageView: ImageView, user: User) {
|
||||||
imageView
|
imageView
|
||||||
.loadImage("/users/${user.id}/Images/${ImageType.PRIMARY}", placeholderId = R.drawable.user_placeholder)
|
.loadImage("/users/${user.id}/Images/${ImageType.PRIMARY}", placeholderId = CoreR.drawable.user_placeholder)
|
||||||
.posterDescription(user.name)
|
.posterDescription(user.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ImageView.loadImage(
|
private fun ImageView.loadImage(
|
||||||
url: String,
|
url: String,
|
||||||
@DrawableRes placeholderId: Int = R.color.neutral_800,
|
@DrawableRes placeholderId: Int = CoreR.color.neutral_800,
|
||||||
@DrawableRes errorPlaceHolderId: Int? = null
|
@DrawableRes errorPlaceHolderId: Int? = null
|
||||||
): View {
|
): View {
|
||||||
val api = JellyfinApi.getInstance(context.applicationContext)
|
val api = JellyfinApi.getInstance(context.applicationContext)
|
||||||
|
@ -131,9 +132,9 @@ private fun ImageView.loadImage(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun View.posterDescription(name: String?) {
|
private fun View.posterDescription(name: String?) {
|
||||||
contentDescription = context.resources.getString(R.string.image_description_poster, name)
|
contentDescription = context.resources.getString(CoreR.string.image_description_poster, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun View.backdropDescription(name: String?) {
|
private fun View.backdropDescription(name: String?) {
|
||||||
contentDescription = context.resources.getString(R.string.image_description_backdrop, name)
|
contentDescription = context.resources.getString(CoreR.string.image_description_backdrop, name)
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import androidx.navigation.ui.NavigationUiSaveStateControl
|
||||||
import androidx.navigation.ui.setupActionBarWithNavController
|
import androidx.navigation.ui.setupActionBarWithNavController
|
||||||
import com.google.android.material.navigation.NavigationBarView
|
import com.google.android.material.navigation.NavigationBarView
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.database.ServerDatabaseDao
|
import dev.jdtech.jellyfin.database.ServerDatabaseDao
|
||||||
import dev.jdtech.jellyfin.databinding.ActivityMainBinding
|
import dev.jdtech.jellyfin.databinding.ActivityMainBinding
|
||||||
import dev.jdtech.jellyfin.utils.loadDownloadLocation
|
import dev.jdtech.jellyfin.utils.loadDownloadLocation
|
||||||
|
@ -39,7 +40,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
if (appPreferences.amoledTheme) {
|
if (appPreferences.amoledTheme) {
|
||||||
setTheme(R.style.Theme_FindroidAMOLED)
|
setTheme(CoreR.style.Theme_FindroidAMOLED)
|
||||||
}
|
}
|
||||||
|
|
||||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||||
|
@ -81,11 +82,11 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
navController.addOnDestinationChangedListener { _, destination, _ ->
|
navController.addOnDestinationChangedListener { _, destination, _ ->
|
||||||
binding.navView.visibility = when (destination.id) {
|
binding.navView.visibility = when (destination.id) {
|
||||||
R.id.twoPaneSettingsFragment, R.id.serverSelectFragment, R.id.addServerFragment, R.id.loginFragment, R.id.about_libraries_dest, R.id.usersFragment, R.id.serverAddressesFragment -> View.GONE
|
R.id.twoPaneSettingsFragment, R.id.serverSelectFragment, R.id.addServerFragment, R.id.loginFragment, com.mikepenz.aboutlibraries.R.id.about_libraries_dest, R.id.usersFragment, R.id.serverAddressesFragment -> View.GONE
|
||||||
else -> View.VISIBLE
|
else -> View.VISIBLE
|
||||||
}
|
}
|
||||||
if (destination.id == R.id.about_libraries_dest) binding.mainToolbar.title =
|
if (destination.id == com.mikepenz.aboutlibraries.R.id.about_libraries_dest) binding.mainToolbar.title =
|
||||||
getString(R.string.app_info)
|
getString(CoreR.string.app_info)
|
||||||
}
|
}
|
||||||
|
|
||||||
loadDownloadLocation(applicationContext)
|
loadDownloadLocation(applicationContext)
|
||||||
|
|
|
@ -22,6 +22,7 @@ import dev.jdtech.jellyfin.dialogs.SpeedSelectionDialogFragment
|
||||||
import dev.jdtech.jellyfin.dialogs.TrackSelectionDialogFragment
|
import dev.jdtech.jellyfin.dialogs.TrackSelectionDialogFragment
|
||||||
import dev.jdtech.jellyfin.mpv.MPVPlayer
|
import dev.jdtech.jellyfin.mpv.MPVPlayer
|
||||||
import dev.jdtech.jellyfin.mpv.TrackType
|
import dev.jdtech.jellyfin.mpv.TrackType
|
||||||
|
import dev.jdtech.jellyfin.player.video.R as PlayerVideoR
|
||||||
import dev.jdtech.jellyfin.utils.PlayerGestureHelper
|
import dev.jdtech.jellyfin.utils.PlayerGestureHelper
|
||||||
import dev.jdtech.jellyfin.utils.PreviewScrubListener
|
import dev.jdtech.jellyfin.utils.PreviewScrubListener
|
||||||
import dev.jdtech.jellyfin.viewmodels.PlayerActivityViewModel
|
import dev.jdtech.jellyfin.viewmodels.PlayerActivityViewModel
|
||||||
|
@ -109,7 +110,7 @@ class PlayerActivity : BasePlayerActivity() {
|
||||||
|
|
||||||
val trackSelectionDialogBuilder = TrackSelectionDialogBuilder(
|
val trackSelectionDialogBuilder = TrackSelectionDialogBuilder(
|
||||||
this,
|
this,
|
||||||
resources.getString(R.string.select_audio_track),
|
resources.getString(PlayerVideoR.string.select_audio_track),
|
||||||
viewModel.player,
|
viewModel.player,
|
||||||
C.TRACK_TYPE_AUDIO
|
C.TRACK_TYPE_AUDIO
|
||||||
)
|
)
|
||||||
|
@ -142,7 +143,7 @@ class PlayerActivity : BasePlayerActivity() {
|
||||||
|
|
||||||
val trackSelectionDialogBuilder = TrackSelectionDialogBuilder(
|
val trackSelectionDialogBuilder = TrackSelectionDialogBuilder(
|
||||||
this,
|
this,
|
||||||
resources.getString(R.string.select_subtile_track),
|
resources.getString(PlayerVideoR.string.select_subtile_track),
|
||||||
viewModel.player,
|
viewModel.player,
|
||||||
C.TRACK_TYPE_TEXT
|
C.TRACK_TYPE_TEXT
|
||||||
)
|
)
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
||||||
import dev.jdtech.jellyfin.models.DownloadSeriesMetadata
|
import dev.jdtech.jellyfin.models.DownloadSeriesMetadata
|
||||||
import dev.jdtech.jellyfin.utils.downloadSeriesMetadataToBaseItemDto
|
import dev.jdtech.jellyfin.utils.downloadSeriesMetadataToBaseItemDto
|
||||||
|
@ -23,7 +23,7 @@ class DownloadSeriesListAdapter(
|
||||||
binding.itemCount.text = item.episodes.size.toString()
|
binding.itemCount.text = item.episodes.size.toString()
|
||||||
if (fixedWidth) {
|
if (fixedWidth) {
|
||||||
binding.itemLayout.layoutParams.width =
|
binding.itemLayout.layoutParams.width =
|
||||||
parent.resources.getDimension(R.dimen.overview_media_width).toInt()
|
parent.resources.getDimension(CoreR.dimen.overview_media_width).toInt()
|
||||||
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
||||||
}
|
}
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
|
|
@ -6,7 +6,7 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
||||||
import dev.jdtech.jellyfin.models.PlayerItem
|
import dev.jdtech.jellyfin.models.PlayerItem
|
||||||
import dev.jdtech.jellyfin.utils.downloadMetadataToBaseItemDto
|
import dev.jdtech.jellyfin.utils.downloadMetadataToBaseItemDto
|
||||||
|
@ -24,7 +24,7 @@ class DownloadViewItemListAdapter(
|
||||||
binding.itemName.text = item.name
|
binding.itemName.text = item.name
|
||||||
binding.itemCount.visibility = View.GONE
|
binding.itemCount.visibility = View.GONE
|
||||||
if (fixedWidth) {
|
if (fixedWidth) {
|
||||||
binding.itemLayout.layoutParams.width = parent.resources.getDimension(R.dimen.overview_media_width).toInt()
|
binding.itemLayout.layoutParams.width = parent.resources.getDimension(CoreR.dimen.overview_media_width).toInt()
|
||||||
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
||||||
}
|
}
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
|
|
@ -6,7 +6,7 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
||||||
import org.jellyfin.sdk.model.api.BaseItemDto
|
import org.jellyfin.sdk.model.api.BaseItemDto
|
||||||
import org.jellyfin.sdk.model.api.BaseItemKind
|
import org.jellyfin.sdk.model.api.BaseItemKind
|
||||||
|
@ -25,7 +25,7 @@ class ViewItemListAdapter(
|
||||||
if (item.userData?.unplayedItemCount != null && item.userData?.unplayedItemCount!! > 0) View.VISIBLE else View.GONE
|
if (item.userData?.unplayedItemCount != null && item.userData?.unplayedItemCount!! > 0) View.VISIBLE else View.GONE
|
||||||
if (fixedWidth) {
|
if (fixedWidth) {
|
||||||
binding.itemLayout.layoutParams.width =
|
binding.itemLayout.layoutParams.width =
|
||||||
parent.resources.getDimension(R.dimen.overview_media_width).toInt()
|
parent.resources.getDimension(CoreR.dimen.overview_media_width).toInt()
|
||||||
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
||||||
}
|
}
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
|
|
@ -6,7 +6,7 @@ import android.view.ViewGroup
|
||||||
import androidx.paging.PagingDataAdapter
|
import androidx.paging.PagingDataAdapter
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
||||||
import org.jellyfin.sdk.model.api.BaseItemDto
|
import org.jellyfin.sdk.model.api.BaseItemDto
|
||||||
import org.jellyfin.sdk.model.api.BaseItemKind
|
import org.jellyfin.sdk.model.api.BaseItemKind
|
||||||
|
@ -26,7 +26,7 @@ class ViewItemPagingAdapter(
|
||||||
if (item.userData?.unplayedItemCount != null && item.userData?.unplayedItemCount!! > 0) View.VISIBLE else View.GONE
|
if (item.userData?.unplayedItemCount != null && item.userData?.unplayedItemCount!! > 0) View.VISIBLE else View.GONE
|
||||||
if (fixedWidth) {
|
if (fixedWidth) {
|
||||||
binding.itemLayout.layoutParams.width =
|
binding.itemLayout.layoutParams.width =
|
||||||
parent.resources.getDimension(R.dimen.overview_media_width).toInt()
|
parent.resources.getDimension(CoreR.dimen.overview_media_width).toInt()
|
||||||
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
||||||
}
|
}
|
||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
|
|
|
@ -5,7 +5,7 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.NextUpSectionBinding
|
import dev.jdtech.jellyfin.databinding.NextUpSectionBinding
|
||||||
import dev.jdtech.jellyfin.databinding.ViewItemBinding
|
import dev.jdtech.jellyfin.databinding.ViewItemBinding
|
||||||
import dev.jdtech.jellyfin.models.HomeItem
|
import dev.jdtech.jellyfin.models.HomeItem
|
||||||
|
@ -29,7 +29,7 @@ class ViewListAdapter(
|
||||||
) {
|
) {
|
||||||
val view = dataItem.view
|
val view = dataItem.view
|
||||||
binding.view = view
|
binding.view = view
|
||||||
binding.viewName.text = binding.viewName.context.resources.getString(R.string.latest_library, view.name)
|
binding.viewName.text = binding.viewName.context.resources.getString(CoreR.string.latest_library, view.name)
|
||||||
binding.itemsRecyclerView.adapter =
|
binding.itemsRecyclerView.adapter =
|
||||||
ViewItemListAdapter(onItemClickListener, fixedWidth = true)
|
ViewItemListAdapter(onItemClickListener, fixedWidth = true)
|
||||||
binding.viewAll.setOnClickListener {
|
binding.viewAll.setOnClickListener {
|
||||||
|
|
|
@ -13,12 +13,13 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.lifecycle.repeatOnLifecycle
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
|
import com.google.android.material.R as MaterialR
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.R
|
|
||||||
import dev.jdtech.jellyfin.bindBaseItemImage
|
import dev.jdtech.jellyfin.bindBaseItemImage
|
||||||
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.EpisodeBottomSheetBinding
|
import dev.jdtech.jellyfin.databinding.EpisodeBottomSheetBinding
|
||||||
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
||||||
import dev.jdtech.jellyfin.models.PlayerItem
|
import dev.jdtech.jellyfin.models.PlayerItem
|
||||||
|
@ -91,11 +92,11 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
when (viewModel.played) {
|
when (viewModel.played) {
|
||||||
true -> {
|
true -> {
|
||||||
viewModel.markAsUnplayed(episodeId)
|
viewModel.markAsUnplayed(episodeId)
|
||||||
binding.checkButton.setTintColorAttribute(R.attr.colorOnSecondaryContainer, requireActivity().theme)
|
binding.checkButton.setTintColorAttribute(MaterialR.attr.colorOnSecondaryContainer, requireActivity().theme)
|
||||||
}
|
}
|
||||||
false -> {
|
false -> {
|
||||||
viewModel.markAsPlayed(episodeId)
|
viewModel.markAsPlayed(episodeId)
|
||||||
binding.checkButton.setTintColor(R.color.red, requireActivity().theme)
|
binding.checkButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -104,13 +105,13 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
when (viewModel.favorite) {
|
when (viewModel.favorite) {
|
||||||
true -> {
|
true -> {
|
||||||
viewModel.unmarkAsFavorite(episodeId)
|
viewModel.unmarkAsFavorite(episodeId)
|
||||||
binding.favoriteButton.setImageResource(R.drawable.ic_heart)
|
binding.favoriteButton.setImageResource(CoreR.drawable.ic_heart)
|
||||||
binding.favoriteButton.setTintColorAttribute(R.attr.colorOnSecondaryContainer, requireActivity().theme)
|
binding.favoriteButton.setTintColorAttribute(MaterialR.attr.colorOnSecondaryContainer, requireActivity().theme)
|
||||||
}
|
}
|
||||||
false -> {
|
false -> {
|
||||||
viewModel.markAsFavorite(episodeId)
|
viewModel.markAsFavorite(episodeId)
|
||||||
binding.favoriteButton.setImageResource(R.drawable.ic_heart_filled)
|
binding.favoriteButton.setImageResource(CoreR.drawable.ic_heart_filled)
|
||||||
binding.favoriteButton.setTintColor(R.color.red, requireActivity().theme)
|
binding.favoriteButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,7 +119,7 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
binding.downloadButton.setOnClickListener {
|
binding.downloadButton.setOnClickListener {
|
||||||
binding.downloadButton.isEnabled = false
|
binding.downloadButton.isEnabled = false
|
||||||
viewModel.download()
|
viewModel.download()
|
||||||
binding.downloadButton.setTintColor(R.color.red, requireActivity().theme)
|
binding.downloadButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.loadEpisode(episodeId)
|
viewModel.loadEpisode(episodeId)
|
||||||
|
@ -131,7 +132,7 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
binding.deleteButton.setOnClickListener {
|
binding.deleteButton.setOnClickListener {
|
||||||
viewModel.deleteEpisode()
|
viewModel.deleteEpisode()
|
||||||
dismiss()
|
dismiss()
|
||||||
findNavController().navigate(R.id.downloadFragment)
|
findNavController().navigate(CoreR.id.downloadFragment)
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.checkButton.isVisible = false
|
binding.checkButton.isVisible = false
|
||||||
|
@ -163,7 +164,7 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
val clickable = canPlay && (available || canRetry)
|
val clickable = canPlay && (available || canRetry)
|
||||||
binding.playButton.isEnabled = clickable
|
binding.playButton.isEnabled = clickable
|
||||||
binding.playButton.alpha = if (!clickable) 0.5F else 1.0F
|
binding.playButton.alpha = if (!clickable) 0.5F else 1.0F
|
||||||
binding.playButton.setImageResource(if (!canRetry) R.drawable.ic_play else R.drawable.ic_rotate_ccw)
|
binding.playButton.setImageResource(if (!canRetry) CoreR.drawable.ic_play else CoreR.drawable.ic_rotate_ccw)
|
||||||
if (!(available || canRetry)) {
|
if (!(available || canRetry)) {
|
||||||
binding.playButton.setImageResource(android.R.color.transparent)
|
binding.playButton.setImageResource(android.R.color.transparent)
|
||||||
binding.progressCircular.isVisible = true
|
binding.progressCircular.isVisible = true
|
||||||
|
@ -171,24 +172,24 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
|
|
||||||
// Check icon
|
// Check icon
|
||||||
when (played) {
|
when (played) {
|
||||||
true -> binding.checkButton.setTintColor(R.color.red, requireActivity().theme)
|
true -> binding.checkButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
false -> binding.checkButton.setTintColorAttribute(R.attr.colorOnSecondaryContainer, requireActivity().theme)
|
false -> binding.checkButton.setTintColorAttribute(MaterialR.attr.colorOnSecondaryContainer, requireActivity().theme)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Favorite icon
|
// Favorite icon
|
||||||
val favoriteDrawable = when (favorite) {
|
val favoriteDrawable = when (favorite) {
|
||||||
true -> R.drawable.ic_heart_filled
|
true -> CoreR.drawable.ic_heart_filled
|
||||||
false -> R.drawable.ic_heart
|
false -> CoreR.drawable.ic_heart
|
||||||
}
|
}
|
||||||
binding.favoriteButton.setImageResource(favoriteDrawable)
|
binding.favoriteButton.setImageResource(favoriteDrawable)
|
||||||
if (favorite) binding.favoriteButton.setTintColor(R.color.red, requireActivity().theme)
|
if (favorite) binding.favoriteButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
|
|
||||||
when (canDownload) {
|
when (canDownload) {
|
||||||
true -> {
|
true -> {
|
||||||
binding.downloadButtonWrapper.isVisible = true
|
binding.downloadButtonWrapper.isVisible = true
|
||||||
binding.downloadButton.isEnabled = !downloaded
|
binding.downloadButton.isEnabled = !downloaded
|
||||||
|
|
||||||
if (downloaded) binding.downloadButton.setTintColor(R.color.red, requireActivity().theme)
|
if (downloaded) binding.downloadButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
}
|
}
|
||||||
false -> {
|
false -> {
|
||||||
binding.downloadButtonWrapper.isVisible = false
|
binding.downloadButtonWrapper.isVisible = false
|
||||||
|
@ -196,7 +197,7 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.episodeName.text = getString(
|
binding.episodeName.text = getString(
|
||||||
R.string.episode_name_extended,
|
CoreR.string.episode_name_extended,
|
||||||
episode.parentIndexNumber,
|
episode.parentIndexNumber,
|
||||||
episode.indexNumber,
|
episode.indexNumber,
|
||||||
episode.name
|
episode.name
|
||||||
|
@ -233,7 +234,7 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
binding.playButton.setImageDrawable(
|
binding.playButton.setImageDrawable(
|
||||||
ContextCompat.getDrawable(
|
ContextCompat.getDrawable(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
R.drawable.ic_play
|
CoreR.drawable.ic_play
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
binding.progressCircular.visibility = View.INVISIBLE
|
binding.progressCircular.visibility = View.INVISIBLE
|
||||||
|
@ -246,7 +247,7 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
binding.playButton.setImageDrawable(
|
binding.playButton.setImageDrawable(
|
||||||
ContextCompat.getDrawable(
|
ContextCompat.getDrawable(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
R.drawable.ic_play
|
CoreR.drawable.ic_play
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
binding.progressCircular.visibility = View.INVISIBLE
|
binding.progressCircular.visibility = View.INVISIBLE
|
||||||
|
|
|
@ -21,10 +21,10 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.lifecycle.repeatOnLifecycle
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.R
|
|
||||||
import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter
|
import dev.jdtech.jellyfin.adapters.HomeEpisodeListAdapter
|
||||||
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
|
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
|
||||||
import dev.jdtech.jellyfin.adapters.ViewListAdapter
|
import dev.jdtech.jellyfin.adapters.ViewListAdapter
|
||||||
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
|
import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
|
||||||
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
||||||
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
|
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
|
||||||
|
@ -64,12 +64,12 @@ class HomeFragment : Fragment() {
|
||||||
menuHost.addMenuProvider(
|
menuHost.addMenuProvider(
|
||||||
object : MenuProvider {
|
object : MenuProvider {
|
||||||
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
|
||||||
menuInflater.inflate(R.menu.home_menu, menu)
|
menuInflater.inflate(CoreR.menu.home_menu, menu)
|
||||||
|
|
||||||
val settings = menu.findItem(R.id.action_settings)
|
val settings = menu.findItem(CoreR.id.action_settings)
|
||||||
val search = menu.findItem(R.id.action_search)
|
val search = menu.findItem(CoreR.id.action_search)
|
||||||
val searchView = search.actionView as SearchView
|
val searchView = search.actionView as SearchView
|
||||||
searchView.queryHint = getString(R.string.search_hint)
|
searchView.queryHint = getString(CoreR.string.search_hint)
|
||||||
|
|
||||||
search.setOnActionExpandListener(
|
search.setOnActionExpandListener(
|
||||||
object : MenuItem.OnActionExpandListener {
|
object : MenuItem.OnActionExpandListener {
|
||||||
|
@ -101,7 +101,7 @@ class HomeFragment : Fragment() {
|
||||||
|
|
||||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
|
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
|
||||||
return when (menuItem.itemId) {
|
return when (menuItem.itemId) {
|
||||||
R.id.action_settings -> {
|
CoreR.id.action_settings -> {
|
||||||
navigateToSettingsFragment()
|
navigateToSettingsFragment()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ class HomeFragment : Fragment() {
|
||||||
when (item.type) {
|
when (item.type) {
|
||||||
BaseItemKind.EPISODE -> navigateToEpisodeBottomSheetFragment(item)
|
BaseItemKind.EPISODE -> navigateToEpisodeBottomSheetFragment(item)
|
||||||
BaseItemKind.MOVIE -> navigateToMediaInfoFragment(item)
|
BaseItemKind.MOVIE -> navigateToMediaInfoFragment(item)
|
||||||
else -> Toast.makeText(requireContext(), R.string.unknown_error, LENGTH_LONG)
|
else -> Toast.makeText(requireContext(), CoreR.string.unknown_error, LENGTH_LONG)
|
||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,8 @@ import androidx.navigation.fragment.navArgs
|
||||||
import androidx.paging.LoadState
|
import androidx.paging.LoadState
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.AppPreferences
|
import dev.jdtech.jellyfin.AppPreferences
|
||||||
import dev.jdtech.jellyfin.R
|
|
||||||
import dev.jdtech.jellyfin.adapters.ViewItemPagingAdapter
|
import dev.jdtech.jellyfin.adapters.ViewItemPagingAdapter
|
||||||
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentLibraryBinding
|
import dev.jdtech.jellyfin.databinding.FragmentLibraryBinding
|
||||||
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
||||||
import dev.jdtech.jellyfin.dialogs.SortDialogFragment
|
import dev.jdtech.jellyfin.dialogs.SortDialogFragment
|
||||||
|
@ -63,12 +63,12 @@ class LibraryFragment : Fragment() {
|
||||||
menuHost.addMenuProvider(
|
menuHost.addMenuProvider(
|
||||||
object : MenuProvider {
|
object : MenuProvider {
|
||||||
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
|
||||||
menuInflater.inflate(R.menu.library_menu, menu)
|
menuInflater.inflate(CoreR.menu.library_menu, menu)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
|
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
|
||||||
return when (menuItem.itemId) {
|
return when (menuItem.itemId) {
|
||||||
R.id.action_sort_by -> {
|
CoreR.id.action_sort_by -> {
|
||||||
SortDialogFragment(
|
SortDialogFragment(
|
||||||
args.libraryId,
|
args.libraryId,
|
||||||
args.libraryType,
|
args.libraryType,
|
||||||
|
@ -80,7 +80,7 @@ class LibraryFragment : Fragment() {
|
||||||
)
|
)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
R.id.action_sort_order -> {
|
CoreR.id.action_sort_order -> {
|
||||||
SortDialogFragment(
|
SortDialogFragment(
|
||||||
args.libraryId,
|
args.libraryId,
|
||||||
args.libraryType,
|
args.libraryType,
|
||||||
|
|
|
@ -16,8 +16,8 @@ import androidx.navigation.fragment.findNavController
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.AppPreferences
|
import dev.jdtech.jellyfin.AppPreferences
|
||||||
import dev.jdtech.jellyfin.R
|
|
||||||
import dev.jdtech.jellyfin.adapters.UserLoginListAdapter
|
import dev.jdtech.jellyfin.adapters.UserLoginListAdapter
|
||||||
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.database.ServerDatabaseDao
|
import dev.jdtech.jellyfin.database.ServerDatabaseDao
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentLoginBinding
|
import dev.jdtech.jellyfin.databinding.FragmentLoginBinding
|
||||||
import dev.jdtech.jellyfin.viewmodels.LoginViewModel
|
import dev.jdtech.jellyfin.viewmodels.LoginViewModel
|
||||||
|
@ -109,7 +109,7 @@ class LoginFragment : Fragment() {
|
||||||
}
|
}
|
||||||
is LoginViewModel.QuickConnectUiState.Normal -> {
|
is LoginViewModel.QuickConnectUiState.Normal -> {
|
||||||
binding.buttonQuickconnectLayout.isVisible = true
|
binding.buttonQuickconnectLayout.isVisible = true
|
||||||
binding.buttonQuickconnect.text = resources.getString(R.string.quick_connect)
|
binding.buttonQuickconnect.text = resources.getString(CoreR.string.quick_connect)
|
||||||
binding.buttonQuickconnectProgress.isVisible = false
|
binding.buttonQuickconnectProgress.isVisible = false
|
||||||
}
|
}
|
||||||
is LoginViewModel.QuickConnectUiState.Waiting -> {
|
is LoginViewModel.QuickConnectUiState.Waiting -> {
|
||||||
|
|
|
@ -19,8 +19,8 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.lifecycle.repeatOnLifecycle
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.R
|
|
||||||
import dev.jdtech.jellyfin.adapters.CollectionListAdapter
|
import dev.jdtech.jellyfin.adapters.CollectionListAdapter
|
||||||
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentMediaBinding
|
import dev.jdtech.jellyfin.databinding.FragmentMediaBinding
|
||||||
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
||||||
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
|
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
|
||||||
|
@ -84,11 +84,11 @@ class MediaFragment : Fragment() {
|
||||||
menuHost.addMenuProvider(
|
menuHost.addMenuProvider(
|
||||||
object : MenuProvider {
|
object : MenuProvider {
|
||||||
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
|
||||||
menuInflater.inflate(R.menu.media_menu, menu)
|
menuInflater.inflate(CoreR.menu.media_menu, menu)
|
||||||
|
|
||||||
val search = menu.findItem(R.id.action_search)
|
val search = menu.findItem(CoreR.id.action_search)
|
||||||
val searchView = search.actionView as SearchView
|
val searchView = search.actionView as SearchView
|
||||||
searchView.queryHint = getString(R.string.search_hint)
|
searchView.queryHint = getString(CoreR.string.search_hint)
|
||||||
|
|
||||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||||
override fun onQueryTextSubmit(p0: String?): Boolean {
|
override fun onQueryTextSubmit(p0: String?): Boolean {
|
||||||
|
|
|
@ -16,13 +16,14 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.lifecycle.repeatOnLifecycle
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
|
import com.google.android.material.R as MaterialR
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.AppPreferences
|
import dev.jdtech.jellyfin.AppPreferences
|
||||||
import dev.jdtech.jellyfin.R
|
|
||||||
import dev.jdtech.jellyfin.adapters.PersonListAdapter
|
import dev.jdtech.jellyfin.adapters.PersonListAdapter
|
||||||
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
|
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
|
||||||
import dev.jdtech.jellyfin.bindBaseItemImage
|
import dev.jdtech.jellyfin.bindBaseItemImage
|
||||||
import dev.jdtech.jellyfin.bindItemBackdropImage
|
import dev.jdtech.jellyfin.bindItemBackdropImage
|
||||||
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentMediaInfoBinding
|
import dev.jdtech.jellyfin.databinding.FragmentMediaInfoBinding
|
||||||
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
||||||
import dev.jdtech.jellyfin.dialogs.VideoVersionDialogFragment
|
import dev.jdtech.jellyfin.dialogs.VideoVersionDialogFragment
|
||||||
|
@ -165,14 +166,14 @@ class MediaInfoFragment : Fragment() {
|
||||||
true -> {
|
true -> {
|
||||||
viewModel.markAsUnplayed(args.itemId)
|
viewModel.markAsUnplayed(args.itemId)
|
||||||
binding.checkButton.setTintColorAttribute(
|
binding.checkButton.setTintColorAttribute(
|
||||||
R.attr.colorOnSecondaryContainer,
|
MaterialR.attr.colorOnSecondaryContainer,
|
||||||
requireActivity().theme
|
requireActivity().theme
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
false -> {
|
false -> {
|
||||||
viewModel.markAsPlayed(args.itemId)
|
viewModel.markAsPlayed(args.itemId)
|
||||||
binding.checkButton.setTintColor(R.color.red, requireActivity().theme)
|
binding.checkButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -181,17 +182,17 @@ class MediaInfoFragment : Fragment() {
|
||||||
when (viewModel.favorite) {
|
when (viewModel.favorite) {
|
||||||
true -> {
|
true -> {
|
||||||
viewModel.unmarkAsFavorite(args.itemId)
|
viewModel.unmarkAsFavorite(args.itemId)
|
||||||
binding.favoriteButton.setImageResource(R.drawable.ic_heart)
|
binding.favoriteButton.setImageResource(CoreR.drawable.ic_heart)
|
||||||
binding.favoriteButton.setTintColorAttribute(
|
binding.favoriteButton.setTintColorAttribute(
|
||||||
R.attr.colorOnSecondaryContainer,
|
MaterialR.attr.colorOnSecondaryContainer,
|
||||||
requireActivity().theme
|
requireActivity().theme
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
false -> {
|
false -> {
|
||||||
viewModel.markAsFavorite(args.itemId)
|
viewModel.markAsFavorite(args.itemId)
|
||||||
binding.favoriteButton.setImageResource(R.drawable.ic_heart_filled)
|
binding.favoriteButton.setImageResource(CoreR.drawable.ic_heart_filled)
|
||||||
binding.favoriteButton.setTintColor(R.color.red, requireActivity().theme)
|
binding.favoriteButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -201,7 +202,7 @@ class MediaInfoFragment : Fragment() {
|
||||||
viewModel.download()
|
viewModel.download()
|
||||||
binding.downloadButton.imageTintList = ColorStateList.valueOf(
|
binding.downloadButton.imageTintList = ColorStateList.valueOf(
|
||||||
resources.getColor(
|
resources.getColor(
|
||||||
R.color.red,
|
CoreR.color.red,
|
||||||
requireActivity().theme
|
requireActivity().theme
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -214,7 +215,7 @@ class MediaInfoFragment : Fragment() {
|
||||||
|
|
||||||
binding.deleteButton.setOnClickListener {
|
binding.deleteButton.setOnClickListener {
|
||||||
viewModel.deleteItem()
|
viewModel.deleteItem()
|
||||||
findNavController().navigate(R.id.downloadFragment)
|
findNavController().navigate(CoreR.id.downloadFragment)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -231,7 +232,7 @@ class MediaInfoFragment : Fragment() {
|
||||||
val clickable = canPlay && (available || canRetry)
|
val clickable = canPlay && (available || canRetry)
|
||||||
binding.playButton.isEnabled = clickable
|
binding.playButton.isEnabled = clickable
|
||||||
binding.playButton.alpha = if (!clickable) 0.5F else 1.0F
|
binding.playButton.alpha = if (!clickable) 0.5F else 1.0F
|
||||||
binding.playButton.setImageResource(if (!canRetry) R.drawable.ic_play else R.drawable.ic_rotate_ccw)
|
binding.playButton.setImageResource(if (!canRetry) CoreR.drawable.ic_play else CoreR.drawable.ic_rotate_ccw)
|
||||||
if (!(available || canRetry)) {
|
if (!(available || canRetry)) {
|
||||||
binding.playButton.setImageResource(android.R.color.transparent)
|
binding.playButton.setImageResource(android.R.color.transparent)
|
||||||
binding.progressCircular.isVisible = true
|
binding.progressCircular.isVisible = true
|
||||||
|
@ -239,20 +240,20 @@ class MediaInfoFragment : Fragment() {
|
||||||
|
|
||||||
// Check icon
|
// Check icon
|
||||||
when (played) {
|
when (played) {
|
||||||
true -> binding.checkButton.setTintColor(R.color.red, requireActivity().theme)
|
true -> binding.checkButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
false -> binding.checkButton.setTintColorAttribute(
|
false -> binding.checkButton.setTintColorAttribute(
|
||||||
R.attr.colorOnSecondaryContainer,
|
MaterialR.attr.colorOnSecondaryContainer,
|
||||||
requireActivity().theme
|
requireActivity().theme
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Favorite icon
|
// Favorite icon
|
||||||
val favoriteDrawable = when (favorite) {
|
val favoriteDrawable = when (favorite) {
|
||||||
true -> R.drawable.ic_heart_filled
|
true -> CoreR.drawable.ic_heart_filled
|
||||||
false -> R.drawable.ic_heart
|
false -> CoreR.drawable.ic_heart
|
||||||
}
|
}
|
||||||
binding.favoriteButton.setImageResource(favoriteDrawable)
|
binding.favoriteButton.setImageResource(favoriteDrawable)
|
||||||
if (favorite) binding.favoriteButton.setTintColor(R.color.red, requireActivity().theme)
|
if (favorite) binding.favoriteButton.setTintColor(CoreR.color.red, requireActivity().theme)
|
||||||
|
|
||||||
when (canDownload) {
|
when (canDownload) {
|
||||||
true -> {
|
true -> {
|
||||||
|
@ -260,7 +261,7 @@ class MediaInfoFragment : Fragment() {
|
||||||
binding.downloadButton.isEnabled = !downloaded
|
binding.downloadButton.isEnabled = !downloaded
|
||||||
|
|
||||||
if (downloaded) binding.downloadButton.setTintColor(
|
if (downloaded) binding.downloadButton.setTintColor(
|
||||||
R.color.red,
|
CoreR.color.red,
|
||||||
requireActivity().theme
|
requireActivity().theme
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -355,7 +356,7 @@ class MediaInfoFragment : Fragment() {
|
||||||
binding.description.text = item.overview
|
binding.description.text = item.overview
|
||||||
binding.nextUpLayout.isVisible = nextUp != null
|
binding.nextUpLayout.isVisible = nextUp != null
|
||||||
binding.nextUpName.text = getString(
|
binding.nextUpName.text = getString(
|
||||||
R.string.episode_name_extended,
|
CoreR.string.episode_name_extended,
|
||||||
nextUp?.parentIndexNumber,
|
nextUp?.parentIndexNumber,
|
||||||
nextUp?.indexNumber,
|
nextUp?.indexNumber,
|
||||||
nextUp?.name
|
nextUp?.name
|
||||||
|
@ -391,7 +392,7 @@ class MediaInfoFragment : Fragment() {
|
||||||
binding.playButton.setImageDrawable(
|
binding.playButton.setImageDrawable(
|
||||||
ContextCompat.getDrawable(
|
ContextCompat.getDrawable(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
R.drawable.ic_play
|
CoreR.drawable.ic_play
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
binding.progressCircular.visibility = View.INVISIBLE
|
binding.progressCircular.visibility = View.INVISIBLE
|
||||||
|
@ -403,7 +404,7 @@ class MediaInfoFragment : Fragment() {
|
||||||
binding.playButton.setImageDrawable(
|
binding.playButton.setImageDrawable(
|
||||||
ContextCompat.getDrawable(
|
ContextCompat.getDrawable(
|
||||||
requireActivity(),
|
requireActivity(),
|
||||||
R.drawable.ic_play
|
CoreR.drawable.ic_play
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
binding.progressCircular.visibility = View.INVISIBLE
|
binding.progressCircular.visibility = View.INVISIBLE
|
||||||
|
|
|
@ -15,9 +15,9 @@ import androidx.lifecycle.repeatOnLifecycle
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.R
|
|
||||||
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
|
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
|
||||||
import dev.jdtech.jellyfin.bindItemImage
|
import dev.jdtech.jellyfin.bindItemImage
|
||||||
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.databinding.FragmentPersonDetailBinding
|
import dev.jdtech.jellyfin.databinding.FragmentPersonDetailBinding
|
||||||
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
|
||||||
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
|
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
|
||||||
|
@ -126,11 +126,11 @@ internal class PersonDetailFragment : Fragment() {
|
||||||
with(binding.overview) {
|
with(binding.overview) {
|
||||||
if (layoutParams.height == ConstraintLayout.LayoutParams.WRAP_CONTENT) {
|
if (layoutParams.height == ConstraintLayout.LayoutParams.WRAP_CONTENT) {
|
||||||
updateLayoutParams { height = ConstraintLayout.LayoutParams.MATCH_CONSTRAINT }
|
updateLayoutParams { height = ConstraintLayout.LayoutParams.MATCH_CONSTRAINT }
|
||||||
binding.readAll.text = getString(R.string.view_all)
|
binding.readAll.text = getString(CoreR.string.view_all)
|
||||||
binding.overviewGradient.isVisible = true
|
binding.overviewGradient.isVisible = true
|
||||||
} else {
|
} else {
|
||||||
updateLayoutParams { height = ConstraintLayout.LayoutParams.WRAP_CONTENT }
|
updateLayoutParams { height = ConstraintLayout.LayoutParams.WRAP_CONTENT }
|
||||||
binding.readAll.text = getString(R.string.hide)
|
binding.readAll.text = getString(CoreR.string.hide)
|
||||||
binding.overviewGradient.isVisible = false
|
binding.overviewGradient.isVisible = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,12 +5,12 @@ import androidx.appcompat.app.AppCompatDelegate
|
||||||
import androidx.preference.ListPreference
|
import androidx.preference.ListPreference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import androidx.preference.SwitchPreferenceCompat
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
class SettingsAppearanceFragment : PreferenceFragmentCompat() {
|
class SettingsAppearanceFragment : PreferenceFragmentCompat() {
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.fragment_settings_appearance, rootKey)
|
setPreferencesFromResource(CoreR.xml.fragment_settings_appearance, rootKey)
|
||||||
|
|
||||||
findPreference<ListPreference>("theme")?.setOnPreferenceChangeListener { _, newValue ->
|
findPreference<ListPreference>("theme")?.setOnPreferenceChangeListener { _, newValue ->
|
||||||
when (newValue) {
|
when (newValue) {
|
||||||
|
|
|
@ -4,12 +4,12 @@ import android.os.Bundle
|
||||||
import android.text.InputType
|
import android.text.InputType
|
||||||
import androidx.preference.EditTextPreference
|
import androidx.preference.EditTextPreference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
class SettingsCacheFragment : PreferenceFragmentCompat() {
|
class SettingsCacheFragment : PreferenceFragmentCompat() {
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.fragment_settings_cache, rootKey)
|
setPreferencesFromResource(CoreR.xml.fragment_settings_cache, rootKey)
|
||||||
|
|
||||||
findPreference<EditTextPreference>("pref_image_cache_size")?.setOnBindEditTextListener { editText ->
|
findPreference<EditTextPreference>("pref_image_cache_size")?.setOnBindEditTextListener { editText ->
|
||||||
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
||||||
|
|
|
@ -5,7 +5,7 @@ import androidx.fragment.app.viewModels
|
||||||
import androidx.preference.EditTextPreference
|
import androidx.preference.EditTextPreference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import dev.jdtech.jellyfin.viewmodels.SettingsDeviceViewModel
|
import dev.jdtech.jellyfin.viewmodels.SettingsDeviceViewModel
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
|
@ -15,7 +15,7 @@ class SettingsDeviceFragment : PreferenceFragmentCompat() {
|
||||||
private val viewModel: SettingsDeviceViewModel by viewModels()
|
private val viewModel: SettingsDeviceViewModel by viewModels()
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.fragment_settings_device, rootKey)
|
setPreferencesFromResource(CoreR.xml.fragment_settings_device, rootKey)
|
||||||
|
|
||||||
findPreference<EditTextPreference>("deviceName")?.setOnPreferenceChangeListener { _, name ->
|
findPreference<EditTextPreference>("deviceName")?.setOnPreferenceChangeListener { _, name ->
|
||||||
viewModel.updateDeviceName(name.toString())
|
viewModel.updateDeviceName(name.toString())
|
||||||
|
|
|
@ -2,11 +2,11 @@ package dev.jdtech.jellyfin.fragments
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
class SettingsDownloadsFragment : PreferenceFragmentCompat() {
|
class SettingsDownloadsFragment : PreferenceFragmentCompat() {
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.fragment_settings_downloads, rootKey)
|
setPreferencesFromResource(CoreR.xml.fragment_settings_downloads, rootKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import dev.jdtech.jellyfin.AppPreferences
|
import dev.jdtech.jellyfin.AppPreferences
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
|
@ -17,7 +17,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
||||||
lateinit var appPreferences: AppPreferences
|
lateinit var appPreferences: AppPreferences
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.fragment_settings, rootKey)
|
setPreferencesFromResource(CoreR.xml.fragment_settings, rootKey)
|
||||||
|
|
||||||
findPreference<Preference>("switchServer")?.setOnPreferenceClickListener {
|
findPreference<Preference>("switchServer")?.setOnPreferenceClickListener {
|
||||||
findNavController().navigate(TwoPaneSettingsFragmentDirections.actionNavigationSettingsToServerSelectFragment())
|
findNavController().navigate(TwoPaneSettingsFragmentDirections.actionNavigationSettingsToServerSelectFragment())
|
||||||
|
|
|
@ -2,11 +2,11 @@ package dev.jdtech.jellyfin.fragments
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
class SettingsLanguageFragment : PreferenceFragmentCompat() {
|
class SettingsLanguageFragment : PreferenceFragmentCompat() {
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.fragment_settings_language, rootKey)
|
setPreferencesFromResource(CoreR.xml.fragment_settings_language, rootKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,12 +5,12 @@ import android.text.InputType
|
||||||
import androidx.preference.EditTextPreference
|
import androidx.preference.EditTextPreference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import dev.jdtech.jellyfin.Constants
|
import dev.jdtech.jellyfin.Constants
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
class SettingsNetworkFragment : PreferenceFragmentCompat() {
|
class SettingsNetworkFragment : PreferenceFragmentCompat() {
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.fragment_settings_network, rootKey)
|
setPreferencesFromResource(CoreR.xml.fragment_settings_network, rootKey)
|
||||||
|
|
||||||
findPreference<EditTextPreference>(Constants.PREF_NETWORK_SOCKET_TIMEOUT)?.setOnBindEditTextListener { editText ->
|
findPreference<EditTextPreference>(Constants.PREF_NETWORK_SOCKET_TIMEOUT)?.setOnBindEditTextListener { editText ->
|
||||||
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
||||||
|
|
|
@ -7,12 +7,12 @@ import android.text.InputType
|
||||||
import androidx.preference.EditTextPreference
|
import androidx.preference.EditTextPreference
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import dev.jdtech.jellyfin.R
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
class SettingsPlayerFragment : PreferenceFragmentCompat() {
|
class SettingsPlayerFragment : PreferenceFragmentCompat() {
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.fragment_settings_player, rootKey)
|
setPreferencesFromResource(CoreR.xml.fragment_settings_player, rootKey)
|
||||||
findPreference<EditTextPreference>("pref_player_seek_back_inc")?.setOnBindEditTextListener { editText ->
|
findPreference<EditTextPreference>("pref_player_seek_back_inc")?.setOnBindEditTextListener { editText ->
|
||||||
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,4 @@ android.useAndroidX=true
|
||||||
# Kotlin code style for this project: "official" or "obsolete":
|
# Kotlin code style for this project: "official" or "obsolete":
|
||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
android.injected.testOnly=false
|
android.injected.testOnly=false
|
||||||
|
android.defaults.buildfeatures.buildconfig=true
|
||||||
# For compatibility with AGP 7.4. Should be removed when AGP 8.0 is released
|
|
||||||
android.experimental.legacyTransform.forceNonIncremental=true
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[versions]
|
[versions]
|
||||||
aboutlibraries = "10.6.2"
|
aboutlibraries = "10.6.2"
|
||||||
android-plugin = "7.4.2"
|
android-plugin = "8.0.0"
|
||||||
androidx-activity = "1.7.0"
|
androidx-activity = "1.7.0"
|
||||||
androidx-appcompat = "1.6.1"
|
androidx-appcompat = "1.6.1"
|
||||||
androidx-constraintlayout = "2.1.4"
|
androidx-constraintlayout = "2.1.4"
|
||||||
|
|
|
@ -26,8 +26,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue