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:
renovate[bot] 2023-04-15 00:43:42 +02:00 committed by GitHub
parent 0d4c38d34b
commit 22542614cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 118 additions and 115 deletions

View file

@ -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

View file

@ -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 {

View file

@ -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)
} }

View file

@ -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)

View file

@ -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
) )

View file

@ -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()

View file

@ -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()

View file

@ -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()

View file

@ -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()

View file

@ -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 {

View file

@ -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

View file

@ -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()
} }
} }

View file

@ -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,

View file

@ -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 -> {

View file

@ -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 {

View file

@ -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

View file

@ -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
} }
} }

View file

@ -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) {

View file

@ -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

View file

@ -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())

View file

@ -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)
} }
} }

View file

@ -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())

View file

@ -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)
} }
} }

View file

@ -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

View file

@ -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
} }

View file

@ -28,8 +28,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility = JavaVersion.VERSION_11 sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_17
} }
} }

View file

@ -32,8 +32,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility = JavaVersion.VERSION_11 sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_17
} }
} }

View file

@ -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

View file

@ -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"

View file

@ -26,8 +26,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility = JavaVersion.VERSION_11 sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_17
} }
} }

View file

@ -27,8 +27,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility = JavaVersion.VERSION_11 sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_17
} }
} }

View file

@ -24,8 +24,8 @@ android {
} }
compileOptions { compileOptions {
sourceCompatibility = JavaVersion.VERSION_11 sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_17
} }
} }