personal personlization init

This commit is contained in:
nomadics9 2024-06-29 03:07:12 +03:00
parent 184c1fcd6d
commit fcb58ef8ad
243 changed files with 3109 additions and 1371 deletions

View file

@ -1,7 +1,6 @@
This privacy policy pertains the Findroid app.
This privacy policy pertains the Ananas app.
Findroid does not collect or access any personal information. No identifying information or user data of any kind is made available to third-parties.
Ananas does not collect or access any personal information. No identifying information or user data of any kind is made available to third-parties.
This Privacy Policy is effective as of Feb 8th, 2023 and will remain in effect except with respect to any changes in its provisions in the future, which will be in effect immediately after being posted on this page. We reserve the right to update or change our Privacy Policy at any time and you should check this Privacy Policy periodically. Your continued use of the Service after we post any modifications to the Privacy Policy on this page will constitute your acknowledgment of the modifications and your consent to abide and be bound by the modified Privacy Policy.
This Privacy Policy is effective as of Jun 24th, 2024 and will remain in effect except with respect to any changes in its provisions in the future, which will be in effect immediately after being posted on this page. We reserve the right to update or change our Privacy Policy at any time and you should check this Privacy Policy periodically. Your continued use of the Service after we post any modifications to the Privacy Policy on this page will constitute your acknowledgment of the modifications and your consent to abide and be bound by the modified Privacy Policy.
Findroid is published by Jarne Demeulemeester. Inquiries can be submitted to jarnedemeulemeester@gmail.com.

View file

@ -14,7 +14,7 @@ I am developing this application in my spare time.
**This project is in its early stages so expect bugs.**
<a href='https://play.google.com/store/apps/details?id=dev.jdtech.jellyfin'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png' height="80"/></a><a href='http://www.amazon.com/gp/product/B0BTWC8DNZ'><img alt='Available at Amazon Appstore' src='https://user-images.githubusercontent.com/32322857/219019331-027a6775-7362-44bb-a026-281f71e9b37b.png' height="80"/></a><a href='https://apt.izzysoft.de/fdroid/index/apk/dev.jdtech.jellyfin'><img alt='Get it on IzzyOnDroid' src='https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png' height="80"/></a>
<a href='https://play.google.com/store/apps/details?id=org.askartv.phone'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png' height="80"/></a><a href='http://www.amazon.com/gp/product/B0BTWC8DNZ'><img alt='Available at Amazon Appstore' src='https://user-images.githubusercontent.com/32322857/219019331-027a6775-7362-44bb-a026-281f71e9b37b.png' height="80"/></a><a href='https://apt.izzysoft.de/fdroid/index/apk/org.askartv.phone'><img alt='Get it on IzzyOnDroid' src='https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png' height="80"/></a>
## Screenshots
| Home | Library | Movie | Season | Episode |

View file

@ -10,19 +10,19 @@ plugins {
}
android {
namespace = "dev.jdtech.jellyfin"
namespace = "org.askartv.phone"
compileSdk = Versions.compileSdk
buildToolsVersion = Versions.buildTools
defaultConfig {
applicationId = "dev.jdtech.jellyfin"
applicationId = "org.askartv.phone"
minSdk = Versions.minSdk
targetSdk = Versions.targetSdk
versionCode = Versions.appCode
versionName = Versions.appName
testInstrumentationRunner = "dev.jdtech.jellyfin.HiltTestRunner"
testInstrumentationRunner = "org.askartv.phone.HiltTestRunner"
}
applicationVariants.all {

View file

@ -20,16 +20,16 @@
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keepnames class dev.jdtech.jellyfin.models.PlayerItem
-keepnames class org.askartv.phone.models.PlayerItem
# ProGuard thinks all SettingsFragments are unused
-keep class dev.jdtech.jellyfin.fragments.SettingsLanguageFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsAppearanceFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsDownloadsFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsPlayerFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsDeviceFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsCacheFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsNetworkFragment
-keep class org.askartv.phone.fragments.SettingsLanguageFragment
-keep class org.askartv.phone.fragments.SettingsAppearanceFragment
-keep class org.askartv.phone.fragments.SettingsDownloadsFragment
-keep class org.askartv.phone.fragments.SettingsPlayerFragment
-keep class org.askartv.phone.fragments.SettingsDeviceFragment
-keep class org.askartv.phone.fragments.SettingsCacheFragment
-keep class org.askartv.phone.fragments.SettingsNetworkFragment
# These classes are from okhttp and are not used in Android
-dontwarn org.bouncycastle.jsse.BCSSLSocket

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.app.Application
import android.content.Context

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.util.Log
import androidx.hilt.work.HiltWorkerFactory
@ -19,7 +19,7 @@ import androidx.work.testing.WorkManagerTestInitHelper
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import dev.jdtech.jellyfin.di.DatabaseModule
import org.askartv.phone.di.DatabaseModule
import org.hamcrest.CoreMatchers.allOf
import org.hamcrest.CoreMatchers.not
import org.junit.Before

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.view.View
import android.view.ViewTreeObserver

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.di
package org.askartv.phone.di
import android.content.Context
import androidx.room.Room
@ -7,8 +7,8 @@ import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import dev.jdtech.jellyfin.database.ServerDatabase
import dev.jdtech.jellyfin.database.ServerDatabaseDao
import org.askartv.phone.database.ServerDatabase
import org.askartv.phone.database.ServerDatabaseDao
import javax.inject.Singleton
@Module

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.app.Application
import androidx.appcompat.app.AppCompatDelegate
@ -14,7 +14,7 @@ import com.google.android.material.color.DynamicColorsOptions
import dagger.hilt.android.HiltAndroidApp
import timber.log.Timber
import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@HiltAndroidApp
class BaseApplication : Application(), Configuration.Provider, ImageLoaderFactory {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.os.Bundle
import android.view.View
@ -9,7 +9,7 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.core.view.updatePadding
import androidx.media3.session.MediaSession
import dev.jdtech.jellyfin.viewmodels.PlayerActivityViewModel
import org.askartv.phone.viewmodels.PlayerActivityViewModel
abstract class BasePlayerActivity : AppCompatActivity() {

View file

@ -1,20 +1,20 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.view.View
import android.widget.ImageView
import androidx.annotation.DrawableRes
import coil.load
import dev.jdtech.jellyfin.api.JellyfinApi
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.User
import org.askartv.phone.api.JellyfinApi
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.User
import org.jellyfin.sdk.model.api.BaseItemDto
import org.jellyfin.sdk.model.api.BaseItemKind
import org.jellyfin.sdk.model.api.BaseItemPerson
import org.jellyfin.sdk.model.api.ImageType
import java.util.UUID
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
fun bindItemImage(imageView: ImageView, item: BaseItemDto) {
val itemId =

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.os.Bundle
import android.view.View
@ -18,12 +18,12 @@ import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import com.google.android.material.navigation.NavigationBarView
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.database.ServerDatabaseDao
import dev.jdtech.jellyfin.databinding.ActivityMainBinding
import dev.jdtech.jellyfin.viewmodels.MainViewModel
import dev.jdtech.jellyfin.work.SyncWorker
import org.askartv.phone.database.ServerDatabaseDao
import org.askartv.phone.databinding.ActivityMainBinding
import org.askartv.phone.viewmodels.MainViewModel
import org.askartv.phone.work.SyncWorker
import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.app.AppOpsManager
import android.app.PictureInPictureParams
@ -34,14 +34,14 @@ import androidx.media3.ui.PlayerControlView
import androidx.media3.ui.PlayerView
import androidx.navigation.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.databinding.ActivityPlayerBinding
import dev.jdtech.jellyfin.dialogs.SpeedSelectionDialogFragment
import dev.jdtech.jellyfin.dialogs.TrackSelectionDialogFragment
import dev.jdtech.jellyfin.utils.PlayerGestureHelper
import dev.jdtech.jellyfin.utils.PreviewScrubListener
import dev.jdtech.jellyfin.viewmodels.PlayerActivityViewModel
import dev.jdtech.jellyfin.viewmodels.PlayerEvents
import org.askartv.phone.databinding.ActivityPlayerBinding
import org.askartv.phone.dialogs.SpeedSelectionDialogFragment
import org.askartv.phone.dialogs.TrackSelectionDialogFragment
import org.askartv.phone.viewmodels.PlayerActivityViewModel
import org.askartv.phone.viewmodels.PlayerEvents
import kotlinx.coroutines.launch
import org.askartv.phone.utils.PlayerGestureHelper
import org.askartv.phone.utils.PreviewScrubListener
import timber.log.Timber
import javax.inject.Inject
@ -106,7 +106,7 @@ class PlayerActivity : BasePlayerActivity() {
appPreferences,
this,
binding.playerView,
getSystemService(Context.AUDIO_SERVICE) as AudioManager,
getSystemService(AUDIO_SERVICE) as AudioManager,
)
}

View file

@ -1,13 +1,13 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.bindCardItemImage
import dev.jdtech.jellyfin.databinding.CollectionItemBinding
import dev.jdtech.jellyfin.models.FindroidCollection
import org.askartv.phone.bindCardItemImage
import org.askartv.phone.databinding.CollectionItemBinding
import org.askartv.phone.models.FindroidCollection
class CollectionListAdapter(
private val onClickListener: (collection: FindroidCollection) -> Unit,
@ -47,4 +47,4 @@ class CollectionListAdapter(
}
holder.bind(collection)
}
}
}

View file

@ -1,12 +1,12 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.databinding.DiscoveredServerItemBinding
import dev.jdtech.jellyfin.models.DiscoveredServer
import org.askartv.phone.databinding.DiscoveredServerItemBinding
import org.askartv.phone.models.DiscoveredServer
class DiscoveredServerListAdapter(
private val clickListener: (server: DiscoveredServer) -> Unit,
@ -55,4 +55,4 @@ class DiscoveredServerListAdapter(
holder.itemView.setOnClickListener { clickListener(server) }
holder.bind(server)
}
}
}

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.text.Html.fromHtml
import android.util.TypedValue
@ -9,15 +9,15 @@ import androidx.core.view.isVisible
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.bindCardItemImage
import dev.jdtech.jellyfin.bindItemBackdropById
import dev.jdtech.jellyfin.bindSeasonPoster
import dev.jdtech.jellyfin.databinding.EpisodeItemBinding
import dev.jdtech.jellyfin.databinding.SeasonHeaderBinding
import dev.jdtech.jellyfin.models.EpisodeItem
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.bindCardItemImage
import org.askartv.phone.bindItemBackdropById
import org.askartv.phone.bindSeasonPoster
import org.askartv.phone.databinding.EpisodeItemBinding
import org.askartv.phone.databinding.SeasonHeaderBinding
import org.askartv.phone.models.EpisodeItem
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.isDownloaded
import org.askartv.phone.core.R as CoreR
private const val ITEM_VIEW_TYPE_HEADER = 0
private const val ITEM_VIEW_TYPE_EPISODE = 1
@ -123,4 +123,4 @@ class EpisodeListAdapter(
is EpisodeItem.Episode -> ITEM_VIEW_TYPE_EPISODE
}
}
}
}

View file

@ -1,14 +1,14 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.Constants
import dev.jdtech.jellyfin.databinding.FavoriteSectionBinding
import dev.jdtech.jellyfin.models.FavoriteSection
import dev.jdtech.jellyfin.models.FindroidItem
import org.askartv.phone.Constants
import org.askartv.phone.databinding.FavoriteSectionBinding
import org.askartv.phone.models.FavoriteSection
import org.askartv.phone.models.FindroidItem
class FavoritesListAdapter(
private val onItemClickListener: (item: FindroidItem) -> Unit,
@ -59,4 +59,4 @@ class FavoritesListAdapter(
val collection = getItem(position)
holder.bind(collection, onItemClickListener)
}
}
}

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.util.TypedValue
import android.view.LayoutInflater
@ -8,13 +8,13 @@ import androidx.core.view.isVisible
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.bindCardItemImage
import dev.jdtech.jellyfin.databinding.HomeEpisodeItemBinding
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.bindCardItemImage
import org.askartv.phone.core.R
import org.askartv.phone.databinding.HomeEpisodeItemBinding
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.isDownloaded
class HomeEpisodeListAdapter(private val onClickListener: (item: FindroidItem) -> Unit) : ListAdapter<FindroidItem, HomeEpisodeListAdapter.EpisodeViewHolder>(DiffCallback) {
class EpisodeViewHolder(
@ -42,9 +42,9 @@ class HomeEpisodeListAdapter(private val onClickListener: (item: FindroidItem) -
is FindroidEpisode -> {
binding.primaryName.text = item.seriesName
binding.secondaryName.text = if (item.indexNumberEnd == null) {
parent.resources.getString(CoreR.string.episode_name_extended, item.parentIndexNumber, item.indexNumber, item.name)
parent.resources.getString(R.string.episode_name_extended, item.parentIndexNumber, item.indexNumber, item.name)
} else {
parent.resources.getString(CoreR.string.episode_name_extended_with_end, item.parentIndexNumber, item.indexNumber, item.indexNumberEnd, item.name)
parent.resources.getString(R.string.episode_name_extended_with_end, item.parentIndexNumber, item.indexNumber, item.indexNumberEnd, item.name)
}
}
}
@ -81,4 +81,4 @@ class HomeEpisodeListAdapter(private val onClickListener: (item: FindroidItem) -
}
holder.bind(item)
}
}
}

View file

@ -1,12 +1,12 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.bindPersonImage
import dev.jdtech.jellyfin.databinding.PersonItemBinding
import org.askartv.phone.bindPersonImage
import org.askartv.phone.databinding.PersonItemBinding
import org.jellyfin.sdk.model.api.BaseItemPerson
class PersonListAdapter(private val clickListener: (item: BaseItemPerson) -> Unit) : ListAdapter<BaseItemPerson, PersonListAdapter.PersonViewHolder>(DiffCallback) {
@ -45,4 +45,4 @@ class PersonListAdapter(private val clickListener: (item: BaseItemPerson) -> Uni
holder.bind(item)
holder.itemView.setOnClickListener { clickListener(item) }
}
}
}

View file

@ -1,12 +1,12 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.databinding.ServerAddressListItemBinding
import dev.jdtech.jellyfin.models.ServerAddress
import org.askartv.phone.databinding.ServerAddressListItemBinding
import org.askartv.phone.models.ServerAddress
class ServerAddressAdapter(
private val clickListener: (address: ServerAddress) -> Unit,
@ -48,4 +48,4 @@ class ServerAddressAdapter(
holder.itemView.setOnLongClickListener { longClickListener(address) }
holder.bind(address)
}
}
}

View file

@ -1,12 +1,12 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.databinding.ServerItemBinding
import dev.jdtech.jellyfin.models.Server
import org.askartv.phone.databinding.ServerItemBinding
import org.askartv.phone.models.Server
class ServerGridAdapter(
private val onClickListener: (server: Server) -> Unit,
@ -46,4 +46,4 @@ class ServerGridAdapter(
}
holder.bind(server)
}
}
}

View file

@ -1,13 +1,13 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.bindUserImage
import dev.jdtech.jellyfin.databinding.UserListItemBinding
import dev.jdtech.jellyfin.models.User
import org.askartv.phone.bindUserImage
import org.askartv.phone.databinding.UserListItemBinding
import org.askartv.phone.models.User
class UserListAdapter(
private val clickListener: (user: User) -> Unit,
@ -50,4 +50,4 @@ class UserListAdapter(
holder.itemView.setOnLongClickListener { longClickListener(user) }
holder.bind(user)
}
}
}

View file

@ -1,13 +1,13 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.bindUserImage
import dev.jdtech.jellyfin.databinding.UserItemBinding
import dev.jdtech.jellyfin.models.User
import org.askartv.phone.bindUserImage
import org.askartv.phone.databinding.UserItemBinding
import org.askartv.phone.models.User
class UserLoginListAdapter(
private val clickListener: (user: User) -> Unit,
@ -48,4 +48,4 @@ class UserLoginListAdapter(
holder.itemView.setOnClickListener { clickListener(user) }
holder.bind(user)
}
}
}

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.View
@ -7,12 +7,12 @@ import androidx.core.view.isVisible
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.bindItemImage
import dev.jdtech.jellyfin.databinding.BaseItemBinding
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.bindItemImage
import org.askartv.phone.core.R
import org.askartv.phone.databinding.BaseItemBinding
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.isDownloaded
class ViewItemListAdapter(
private val onClickListener: (item: FindroidItem) -> Unit,
@ -27,7 +27,7 @@ class ViewItemListAdapter(
if (item.unplayedItemCount != null && item.unplayedItemCount!! > 0) View.VISIBLE else View.GONE
if (fixedWidth) {
binding.itemLayout.layoutParams.width =
parent.resources.getDimension(CoreR.dimen.overview_media_width).toInt()
parent.resources.getDimension(R.dimen.overview_media_width).toInt()
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
}
@ -67,4 +67,4 @@ class ViewItemListAdapter(
}
holder.bind(item, fixedWidth)
}
}
}

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.View
@ -7,12 +7,12 @@ import androidx.core.view.isVisible
import androidx.paging.PagingDataAdapter
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.bindItemImage
import dev.jdtech.jellyfin.databinding.BaseItemBinding
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.bindItemImage
import org.askartv.phone.core.R
import org.askartv.phone.databinding.BaseItemBinding
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.isDownloaded
class ViewItemPagingAdapter(
private val onClickListener: (item: FindroidItem) -> Unit,
@ -28,7 +28,7 @@ class ViewItemPagingAdapter(
if (item.unplayedItemCount != null && item.unplayedItemCount!! > 0) View.VISIBLE else View.GONE
if (fixedWidth) {
binding.itemLayout.layoutParams.width =
parent.resources.getDimension(CoreR.dimen.overview_media_width).toInt()
parent.resources.getDimension(R.dimen.overview_media_width).toInt()
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
}
@ -70,4 +70,4 @@ class ViewItemPagingAdapter(
holder.bind(item, fixedWidth)
}
}
}
}

View file

@ -1,17 +1,17 @@
package dev.jdtech.jellyfin.adapters
package org.askartv.phone.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import dev.jdtech.jellyfin.databinding.CardOfflineBinding
import dev.jdtech.jellyfin.databinding.NextUpSectionBinding
import dev.jdtech.jellyfin.databinding.ViewItemBinding
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.HomeItem
import dev.jdtech.jellyfin.models.View
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.databinding.CardOfflineBinding
import org.askartv.phone.databinding.NextUpSectionBinding
import org.askartv.phone.databinding.ViewItemBinding
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.HomeItem
import org.askartv.phone.models.View
import org.askartv.phone.core.R as CoreR
private const val ITEM_VIEW_TYPE_NEXT_UP = 0
private const val ITEM_VIEW_TYPE_VIEW = 1
@ -125,4 +125,4 @@ class ViewListAdapter(
is HomeItem.ViewItem -> ITEM_VIEW_TYPE_VIEW
}
}
}
}

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.di
package org.askartv.phone.di
import android.content.Context
import dagger.Module
@ -6,7 +6,7 @@ import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import dev.jdtech.jellyfin.BaseApplication
import org.askartv.phone.BaseApplication
import javax.inject.Singleton
@Module

View file

@ -1,11 +1,11 @@
package dev.jdtech.jellyfin.dialogs
package org.askartv.phone.dialogs
import android.content.Context
import android.os.Environment
import android.os.StatFs
import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
fun getStorageSelectionDialog(
context: Context,

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.text.method.LinkMovementMethod
@ -15,10 +15,10 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.DiscoveredServerListAdapter
import dev.jdtech.jellyfin.databinding.FragmentAddServerBinding
import dev.jdtech.jellyfin.viewmodels.AddServerEvent
import dev.jdtech.jellyfin.viewmodels.AddServerViewModel
import org.askartv.phone.adapters.DiscoveredServerListAdapter
import org.askartv.phone.databinding.FragmentAddServerBinding
import org.askartv.phone.viewmodels.AddServerEvent
import org.askartv.phone.viewmodels.AddServerViewModel
import kotlinx.coroutines.launch
import timber.log.Timber

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -13,18 +13,18 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.FavoritesListAdapter
import dev.jdtech.jellyfin.databinding.FragmentFavoriteBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.viewmodels.CollectionViewModel
import org.askartv.phone.adapters.FavoritesListAdapter
import org.askartv.phone.databinding.FragmentFavoriteBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidShow
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.viewmodels.CollectionViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class CollectionFragment : Fragment() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -13,19 +13,19 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import com.google.android.material.snackbar.Snackbar
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.adapters.FavoritesListAdapter
import dev.jdtech.jellyfin.databinding.FragmentDownloadsBinding
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.utils.restart
import dev.jdtech.jellyfin.viewmodels.DownloadsEvent
import dev.jdtech.jellyfin.viewmodels.DownloadsViewModel
import org.askartv.phone.AppPreferences
import org.askartv.phone.adapters.FavoritesListAdapter
import org.askartv.phone.databinding.FragmentDownloadsBinding
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidShow
import org.askartv.phone.utils.restart
import org.askartv.phone.viewmodels.DownloadsEvent
import org.askartv.phone.viewmodels.DownloadsViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class DownloadsFragment : Fragment() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.app.DownloadManager
import android.os.Bundle
@ -21,23 +21,23 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.R
import dev.jdtech.jellyfin.bindCardItemImage
import dev.jdtech.jellyfin.databinding.EpisodeBottomSheetBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.dialogs.getStorageSelectionDialog
import dev.jdtech.jellyfin.dialogs.getVideoVersionDialog
import dev.jdtech.jellyfin.models.FindroidSourceType
import dev.jdtech.jellyfin.models.PlayerItem
import dev.jdtech.jellyfin.models.UiText
import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.models.isDownloading
import dev.jdtech.jellyfin.utils.setIconTintColorAttribute
import dev.jdtech.jellyfin.viewmodels.EpisodeBottomSheetEvent
import dev.jdtech.jellyfin.viewmodels.EpisodeBottomSheetViewModel
import dev.jdtech.jellyfin.viewmodels.PlayerItemsEvent
import dev.jdtech.jellyfin.viewmodels.PlayerViewModel
import org.askartv.phone.AppPreferences
import org.askartv.phone.R
import org.askartv.phone.bindCardItemImage
import org.askartv.phone.databinding.EpisodeBottomSheetBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.dialogs.getStorageSelectionDialog
import org.askartv.phone.dialogs.getVideoVersionDialog
import org.askartv.phone.models.FindroidSourceType
import org.askartv.phone.models.PlayerItem
import org.askartv.phone.models.UiText
import org.askartv.phone.models.isDownloaded
import org.askartv.phone.models.isDownloading
import org.askartv.phone.utils.setIconTintColorAttribute
import org.askartv.phone.viewmodels.EpisodeBottomSheetEvent
import org.askartv.phone.viewmodels.EpisodeBottomSheetViewModel
import org.askartv.phone.viewmodels.PlayerItemsEvent
import org.askartv.phone.viewmodels.PlayerViewModel
import kotlinx.coroutines.launch
import org.jellyfin.sdk.model.DateTime
import timber.log.Timber
@ -48,7 +48,7 @@ import java.util.UUID
import javax.inject.Inject
import android.R as AndroidR
import com.google.android.material.R as MaterialR
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -12,15 +12,15 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.FavoritesListAdapter
import dev.jdtech.jellyfin.databinding.FragmentFavoriteBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.viewmodels.FavoriteViewModel
import org.askartv.phone.adapters.FavoritesListAdapter
import org.askartv.phone.databinding.FragmentFavoriteBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidShow
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.viewmodels.FavoriteViewModel
import kotlinx.coroutines.launch
import timber.log.Timber

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -19,21 +19,21 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.adapters.ViewListAdapter
import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.utils.restart
import dev.jdtech.jellyfin.viewmodels.HomeViewModel
import org.askartv.phone.AppPreferences
import org.askartv.phone.adapters.ViewListAdapter
import org.askartv.phone.databinding.FragmentHomeBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidShow
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.utils.restart
import org.askartv.phone.viewmodels.HomeViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class HomeFragment : Fragment() {
@ -202,7 +202,7 @@ class HomeFragment : Fragment() {
checkIfLoginRequired(uiState.error.message)
}
private fun navigateToLibraryFragment(view: dev.jdtech.jellyfin.models.View) {
private fun navigateToLibraryFragment(view: org.askartv.phone.models.View) {
findNavController().navigate(
HomeFragmentDirections.actionNavigationHomeToLibraryFragment(
libraryId = view.id,

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -19,24 +19,24 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import androidx.paging.LoadState
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.adapters.ViewItemPagingAdapter
import dev.jdtech.jellyfin.databinding.FragmentLibraryBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.dialogs.SortDialogFragment
import dev.jdtech.jellyfin.models.FindroidBoxSet
import dev.jdtech.jellyfin.models.FindroidFolder
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.models.SortBy
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.viewmodels.LibraryViewModel
import org.askartv.phone.AppPreferences
import org.askartv.phone.adapters.ViewItemPagingAdapter
import org.askartv.phone.databinding.FragmentLibraryBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.dialogs.SortDialogFragment
import org.askartv.phone.models.FindroidBoxSet
import org.askartv.phone.models.FindroidFolder
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidShow
import org.askartv.phone.models.SortBy
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.viewmodels.LibraryViewModel
import kotlinx.coroutines.launch
import org.jellyfin.sdk.model.api.SortOrder
import java.lang.IllegalArgumentException
import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class LibraryFragment : Fragment() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.text.Html.fromHtml
@ -16,16 +16,16 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.adapters.UserLoginListAdapter
import dev.jdtech.jellyfin.database.ServerDatabaseDao
import dev.jdtech.jellyfin.databinding.FragmentLoginBinding
import dev.jdtech.jellyfin.viewmodels.LoginEvent
import dev.jdtech.jellyfin.viewmodels.LoginViewModel
import org.askartv.phone.AppPreferences
import org.askartv.phone.adapters.UserLoginListAdapter
import org.askartv.phone.database.ServerDatabaseDao
import org.askartv.phone.databinding.FragmentLoginBinding
import org.askartv.phone.viewmodels.LoginEvent
import org.askartv.phone.viewmodels.LoginViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class LoginFragment : Fragment() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -19,15 +19,15 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.CollectionListAdapter
import dev.jdtech.jellyfin.databinding.FragmentMediaBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidCollection
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.viewmodels.MediaViewModel
import org.askartv.phone.adapters.CollectionListAdapter
import org.askartv.phone.databinding.FragmentMediaBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.models.FindroidCollection
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.viewmodels.MediaViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class MediaFragment : Fragment() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.app.DownloadManager
import android.content.Intent
@ -21,32 +21,32 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.R
import dev.jdtech.jellyfin.adapters.PersonListAdapter
import dev.jdtech.jellyfin.bindItemBackdropImage
import dev.jdtech.jellyfin.databinding.FragmentMovieBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.dialogs.getStorageSelectionDialog
import dev.jdtech.jellyfin.dialogs.getVideoVersionDialog
import dev.jdtech.jellyfin.models.AudioCodec
import dev.jdtech.jellyfin.models.DisplayProfile
import dev.jdtech.jellyfin.models.FindroidSourceType
import dev.jdtech.jellyfin.models.PlayerItem
import dev.jdtech.jellyfin.models.UiText
import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.models.isDownloading
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.utils.setIconTintColorAttribute
import dev.jdtech.jellyfin.viewmodels.MovieEvent
import dev.jdtech.jellyfin.viewmodels.MovieViewModel
import dev.jdtech.jellyfin.viewmodels.PlayerItemsEvent
import dev.jdtech.jellyfin.viewmodels.PlayerViewModel
import org.askartv.phone.AppPreferences
import org.askartv.phone.R
import org.askartv.phone.adapters.PersonListAdapter
import org.askartv.phone.bindItemBackdropImage
import org.askartv.phone.databinding.FragmentMovieBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.dialogs.getStorageSelectionDialog
import org.askartv.phone.dialogs.getVideoVersionDialog
import org.askartv.phone.models.AudioCodec
import org.askartv.phone.models.DisplayProfile
import org.askartv.phone.models.FindroidSourceType
import org.askartv.phone.models.PlayerItem
import org.askartv.phone.models.UiText
import org.askartv.phone.models.isDownloaded
import org.askartv.phone.models.isDownloading
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.utils.setIconTintColorAttribute
import org.askartv.phone.viewmodels.MovieEvent
import org.askartv.phone.viewmodels.MovieViewModel
import org.askartv.phone.viewmodels.PlayerItemsEvent
import org.askartv.phone.viewmodels.PlayerViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import java.util.UUID
import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class MovieFragment : Fragment() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -15,18 +15,18 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
import dev.jdtech.jellyfin.bindItemImage
import dev.jdtech.jellyfin.databinding.FragmentPersonDetailBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.viewmodels.PersonDetailViewModel
import org.askartv.phone.adapters.ViewItemListAdapter
import org.askartv.phone.bindItemImage
import org.askartv.phone.databinding.FragmentPersonDetailBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidShow
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.viewmodels.PersonDetailViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
internal class PersonDetailFragment : Fragment() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -13,15 +13,15 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.FavoritesListAdapter
import dev.jdtech.jellyfin.databinding.FragmentSearchResultBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.viewmodels.SearchResultViewModel
import org.askartv.phone.adapters.FavoritesListAdapter
import org.askartv.phone.databinding.FragmentSearchResultBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidShow
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.viewmodels.SearchResultViewModel
import kotlinx.coroutines.launch
import timber.log.Timber

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -13,13 +13,13 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.EpisodeListAdapter
import dev.jdtech.jellyfin.databinding.FragmentSeasonBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.viewmodels.SeasonEvent
import dev.jdtech.jellyfin.viewmodels.SeasonViewModel
import org.askartv.phone.adapters.EpisodeListAdapter
import org.askartv.phone.databinding.FragmentSeasonBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.viewmodels.SeasonEvent
import org.askartv.phone.viewmodels.SeasonViewModel
import kotlinx.coroutines.launch
import timber.log.Timber

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -12,12 +12,12 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.ServerAddressAdapter
import dev.jdtech.jellyfin.databinding.FragmentServerAddressesBinding
import dev.jdtech.jellyfin.dialogs.AddServerAddressDialog
import dev.jdtech.jellyfin.dialogs.DeleteServerAddressDialog
import dev.jdtech.jellyfin.viewmodels.ServerAddressesEvent
import dev.jdtech.jellyfin.viewmodels.ServerAddressesViewModel
import org.askartv.phone.adapters.ServerAddressAdapter
import org.askartv.phone.databinding.FragmentServerAddressesBinding
import org.askartv.phone.dialogs.AddServerAddressDialog
import org.askartv.phone.dialogs.DeleteServerAddressDialog
import org.askartv.phone.viewmodels.ServerAddressesEvent
import org.askartv.phone.viewmodels.ServerAddressesViewModel
import kotlinx.coroutines.launch
import timber.log.Timber

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -11,11 +11,11 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.adapters.ServerGridAdapter
import dev.jdtech.jellyfin.databinding.FragmentServerSelectBinding
import dev.jdtech.jellyfin.dialogs.DeleteServerDialogFragment
import dev.jdtech.jellyfin.viewmodels.ServerSelectEvent
import dev.jdtech.jellyfin.viewmodels.ServerSelectViewModel
import org.askartv.phone.adapters.ServerGridAdapter
import org.askartv.phone.databinding.FragmentServerSelectBinding
import org.askartv.phone.dialogs.DeleteServerDialogFragment
import org.askartv.phone.viewmodels.ServerSelectEvent
import org.askartv.phone.viewmodels.ServerSelectViewModel
import kotlinx.coroutines.launch
import timber.log.Timber

View file

@ -1,11 +1,11 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import androidx.appcompat.app.AppCompatDelegate
import androidx.preference.ListPreference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreferenceCompat
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
class SettingsAppearanceFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {

View file

@ -1,10 +1,10 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.text.InputType
import androidx.preference.EditTextPreference
import androidx.preference.PreferenceFragmentCompat
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
class SettingsCacheFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {

View file

@ -1,12 +1,12 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import androidx.fragment.app.viewModels
import androidx.preference.EditTextPreference
import androidx.preference.PreferenceFragmentCompat
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.viewmodels.SettingsDeviceViewModel
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.viewmodels.SettingsDeviceViewModel
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class SettingsDeviceFragment : PreferenceFragmentCompat() {

View file

@ -1,8 +1,8 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import androidx.preference.PreferenceFragmentCompat
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
class SettingsDownloadsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.content.Intent
import android.net.Uri
@ -7,10 +7,10 @@ import androidx.navigation.fragment.findNavController
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.utils.restart
import org.askartv.phone.AppPreferences
import org.askartv.phone.utils.restart
import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class SettingsFragment : PreferenceFragmentCompat() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.content.Intent
import android.net.Uri
@ -7,7 +7,7 @@ import android.os.Bundle
import android.provider.Settings
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
class SettingsLanguageFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {

View file

@ -1,11 +1,11 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.text.InputType
import androidx.preference.EditTextPreference
import androidx.preference.PreferenceFragmentCompat
import dev.jdtech.jellyfin.Constants
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.Constants
import org.askartv.phone.core.R as CoreR
class SettingsNetworkFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.content.Intent
import android.os.Bundle
@ -7,7 +7,7 @@ import android.text.InputType
import androidx.preference.EditTextPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
class SettingsPlayerFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.content.Intent
import android.net.Uri
@ -18,29 +18,29 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.google.android.material.R
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.adapters.PersonListAdapter
import dev.jdtech.jellyfin.adapters.ViewItemListAdapter
import dev.jdtech.jellyfin.bindCardItemImage
import dev.jdtech.jellyfin.bindItemBackdropImage
import dev.jdtech.jellyfin.databinding.FragmentShowBinding
import dev.jdtech.jellyfin.dialogs.ErrorDialogFragment
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidSeason
import dev.jdtech.jellyfin.models.FindroidSourceType
import dev.jdtech.jellyfin.models.PlayerItem
import dev.jdtech.jellyfin.models.isDownloaded
import dev.jdtech.jellyfin.utils.checkIfLoginRequired
import dev.jdtech.jellyfin.utils.setIconTintColorAttribute
import dev.jdtech.jellyfin.viewmodels.PlayerItemsEvent
import dev.jdtech.jellyfin.viewmodels.PlayerViewModel
import dev.jdtech.jellyfin.viewmodels.ShowEvent
import dev.jdtech.jellyfin.viewmodels.ShowViewModel
import org.askartv.phone.AppPreferences
import org.askartv.phone.adapters.PersonListAdapter
import org.askartv.phone.adapters.ViewItemListAdapter
import org.askartv.phone.bindCardItemImage
import org.askartv.phone.bindItemBackdropImage
import org.askartv.phone.databinding.FragmentShowBinding
import org.askartv.phone.dialogs.ErrorDialogFragment
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidSeason
import org.askartv.phone.models.FindroidSourceType
import org.askartv.phone.models.PlayerItem
import org.askartv.phone.models.isDownloaded
import org.askartv.phone.utils.checkIfLoginRequired
import org.askartv.phone.utils.setIconTintColorAttribute
import org.askartv.phone.viewmodels.PlayerItemsEvent
import org.askartv.phone.viewmodels.PlayerViewModel
import org.askartv.phone.viewmodels.ShowEvent
import org.askartv.phone.viewmodels.ShowViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import java.util.UUID
import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@AndroidEntryPoint
class ShowFragment : Fragment() {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceHeaderFragmentCompat

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.fragments
package org.askartv.phone.fragments
import android.os.Bundle
import android.view.LayoutInflater
@ -12,12 +12,12 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.AppNavigationDirections
import dev.jdtech.jellyfin.adapters.UserListAdapter
import dev.jdtech.jellyfin.databinding.FragmentUsersBinding
import dev.jdtech.jellyfin.dialogs.DeleteUserDialogFragment
import dev.jdtech.jellyfin.viewmodels.UsersEvent
import dev.jdtech.jellyfin.viewmodels.UsersViewModel
import org.askartv.phone.AppNavigationDirections
import org.askartv.phone.adapters.UserListAdapter
import org.askartv.phone.databinding.FragmentUsersBinding
import org.askartv.phone.dialogs.DeleteUserDialogFragment
import org.askartv.phone.viewmodels.UsersEvent
import org.askartv.phone.viewmodels.UsersViewModel
import kotlinx.coroutines.launch
import timber.log.Timber

View file

@ -1,8 +1,8 @@
package dev.jdtech.jellyfin.utils
package org.askartv.phone.utils
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import dev.jdtech.jellyfin.AppNavigationDirections
import org.askartv.phone.AppNavigationDirections
import timber.log.Timber
fun Fragment.checkIfLoginRequired(error: String?) {

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.utils
package org.askartv.phone.utils
import android.annotation.SuppressLint
import android.content.res.Resources
@ -19,12 +19,12 @@ import android.view.animation.DecelerateInterpolator
import android.widget.ImageView
import androidx.media3.ui.AspectRatioFrameLayout
import androidx.media3.ui.PlayerView
import dev.jdtech.jellyfin.AppPreferences
import dev.jdtech.jellyfin.Constants
import dev.jdtech.jellyfin.PlayerActivity
import dev.jdtech.jellyfin.isControlsLocked
import dev.jdtech.jellyfin.models.PlayerChapter
import dev.jdtech.jellyfin.mpv.MPVPlayer
import org.askartv.phone.AppPreferences
import org.askartv.phone.Constants
import org.askartv.phone.PlayerActivity
import org.askartv.phone.isControlsLocked
import org.askartv.phone.models.PlayerChapter
import org.askartv.phone.mpv.MPVPlayer
import timber.log.Timber
import kotlin.math.abs

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.utils
package org.askartv.phone.utils
import android.graphics.Bitmap
import android.view.View
@ -8,7 +8,7 @@ import androidx.media3.common.Player
import androidx.media3.ui.TimeBar
import coil.load
import coil.transform.RoundedCornersTransformation
import dev.jdtech.jellyfin.models.Trickplay
import org.askartv.phone.models.Trickplay
import kotlinx.coroutines.Dispatchers
import timber.log.Timber

View file

@ -7,7 +7,7 @@
<fragment
android:id="@+id/homeFragment"
android:name="dev.jdtech.jellyfin.fragments.HomeFragment"
android:name="org.askartv.phone.fragments.HomeFragment"
android:label="@string/title_home"
tools:layout="@layout/fragment_home">
<action
@ -53,7 +53,7 @@
<fragment
android:id="@+id/mediaFragment"
android:name="dev.jdtech.jellyfin.fragments.MediaFragment"
android:name="org.askartv.phone.fragments.MediaFragment"
android:label="@string/title_media"
tools:layout="@layout/fragment_media">
<action
@ -70,7 +70,7 @@
<fragment
android:id="@+id/twoPaneSettingsFragment"
android:name="dev.jdtech.jellyfin.fragments.TwoPaneSettingsFragment"
android:name="org.askartv.phone.fragments.TwoPaneSettingsFragment"
android:label="@string/title_settings">
<action
android:id="@+id/action_navigation_settings_to_serverSelectFragment"
@ -87,10 +87,10 @@
</fragment>
<fragment
android:id="@+id/settingsFragment"
android:name="dev.jdtech.jellyfin.fragments.SettingsFragment" />
android:name="org.askartv.phone.fragments.SettingsFragment" />
<fragment
android:id="@+id/libraryFragment"
android:name="dev.jdtech.jellyfin.fragments.LibraryFragment"
android:name="org.askartv.phone.fragments.LibraryFragment"
android:label="{libraryName}"
tools:layout="@layout/fragment_library">
<argument
@ -122,14 +122,14 @@
app:popExitAnim="@anim/nav_default_pop_exit_anim" />
<argument
android:name="libraryType"
app:argType="dev.jdtech.jellyfin.models.CollectionType" />
app:argType="org.askartv.phone.models.CollectionType" />
<action
android:id="@+id/action_libraryFragment_self"
app:destination="@id/libraryFragment" />
</fragment>
<fragment
android:id="@+id/showFragment"
android:name="dev.jdtech.jellyfin.fragments.ShowFragment"
android:name="org.askartv.phone.fragments.ShowFragment"
android:label="{itemName}"
tools:layout="@layout/fragment_show">
<argument
@ -158,7 +158,7 @@
<fragment
android:id="@+id/movieFragment"
android:name="dev.jdtech.jellyfin.fragments.MovieFragment"
android:name="org.askartv.phone.fragments.MovieFragment"
android:label="{itemName}"
tools:layout="@layout/fragment_movie">
<argument
@ -179,7 +179,7 @@
<fragment
android:id="@+id/seasonFragment"
android:name="dev.jdtech.jellyfin.fragments.SeasonFragment"
android:name="org.askartv.phone.fragments.SeasonFragment"
android:label="{seasonName}"
tools:layout="@layout/fragment_season">
<argument
@ -211,7 +211,7 @@
</fragment>
<dialog
android:id="@+id/episodeBottomSheetFragment"
android:name="dev.jdtech.jellyfin.fragments.EpisodeBottomSheetFragment"
android:name="org.askartv.phone.fragments.EpisodeBottomSheetFragment"
android:label="EpisodeBottomSheetFragment"
tools:layout="@layout/episode_bottom_sheet">
<argument
@ -226,7 +226,7 @@
</dialog>
<fragment
android:id="@+id/favoriteFragment"
android:name="dev.jdtech.jellyfin.fragments.FavoriteFragment"
android:name="org.askartv.phone.fragments.FavoriteFragment"
android:label="@string/title_favorite"
tools:layout="@layout/fragment_favorite">
<action
@ -241,7 +241,7 @@
</fragment>
<fragment
android:id="@+id/collectionFragment"
android:name="dev.jdtech.jellyfin.fragments.CollectionFragment"
android:name="org.askartv.phone.fragments.CollectionFragment"
android:label="{collectionName}"
tools:layout="@layout/fragment_favorite">
<argument
@ -264,7 +264,7 @@
</fragment>
<fragment
android:id="@+id/searchResultFragment"
android:name="dev.jdtech.jellyfin.fragments.SearchResultFragment"
android:name="org.askartv.phone.fragments.SearchResultFragment"
android:label="{query}"
tools:layout="@layout/fragment_search_result">
<action
@ -282,7 +282,7 @@
</fragment>
<fragment
android:id="@+id/addServerFragment"
android:name="dev.jdtech.jellyfin.fragments.AddServerFragment"
android:name="org.askartv.phone.fragments.AddServerFragment"
android:label="@string/add_server"
tools:layout="@layout/fragment_add_server">
<action
@ -291,7 +291,7 @@
</fragment>
<fragment
android:id="@+id/serverSelectFragment"
android:name="dev.jdtech.jellyfin.fragments.ServerSelectFragment"
android:name="org.askartv.phone.fragments.ServerSelectFragment"
android:label="@string/select_server"
tools:layout="@layout/fragment_server_select">
<action
@ -308,7 +308,7 @@
</fragment>
<fragment
android:id="@+id/loginFragment"
android:name="dev.jdtech.jellyfin.fragments.LoginFragment"
android:name="org.askartv.phone.fragments.LoginFragment"
android:label="@string/login"
tools:layout="@layout/fragment_login">
<action
@ -324,7 +324,7 @@
<fragment
android:id="@+id/personDetailFragment"
android:name="dev.jdtech.jellyfin.fragments.PersonDetailFragment"
android:name="org.askartv.phone.fragments.PersonDetailFragment"
android:label="@string/person_detail_title"
tools:layout="@layout/fragment_person_detail">
@ -342,12 +342,12 @@
<activity
android:id="@+id/playerActivity"
android:name="dev.jdtech.jellyfin.PlayerActivity"
android:name="org.askartv.phone.PlayerActivity"
android:label="activity_player"
tools:layout="@layout/activity_player">
<argument
android:name="items"
app:argType="dev.jdtech.jellyfin.models.PlayerItem[]" />
app:argType="org.askartv.phone.models.PlayerItem[]" />
</activity>
<include app:graph="@navigation/aboutlibs_navigation" />
@ -357,7 +357,7 @@
<fragment
android:id="@+id/usersFragment"
android:name="dev.jdtech.jellyfin.fragments.UsersFragment"
android:name="org.askartv.phone.fragments.UsersFragment"
android:label="@string/users"
tools:layout="@layout/fragment_users">
<action
@ -375,7 +375,7 @@
<fragment
android:id="@+id/serverAddressesFragment"
android:name="dev.jdtech.jellyfin.fragments.ServerAddressesFragment"
android:name="org.askartv.phone.fragments.ServerAddressesFragment"
android:label="@string/addresses"
tools:layout="@layout/fragment_server_addresses">
<action
@ -390,7 +390,7 @@
<fragment
android:id="@+id/downloadsFragment"
android:name="dev.jdtech.jellyfin.fragments.DownloadsFragment"
android:name="org.askartv.phone.fragments.DownloadsFragment"
android:label="@string/title_download"
tools:layout="@layout/fragment_favorite">
<action

View file

@ -9,12 +9,12 @@ plugins {
}
android {
namespace = "dev.jdtech.jellyfin"
namespace = "org.askartv.phone"
compileSdk = Versions.compileSdk
buildToolsVersion = Versions.buildTools
defaultConfig {
applicationId = "dev.jdtech.jellyfin"
applicationId = "org.askartv.phone"
minSdk = Versions.minSdk
targetSdk = Versions.targetSdk

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.app.Application
import coil.ImageLoader

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.os.Bundle
import androidx.activity.ComponentActivity
@ -6,11 +6,11 @@ import androidx.activity.compose.setContent
import androidx.activity.viewModels
import com.ramcosta.composedestinations.DestinationsNavHost
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.database.ServerDatabaseDao
import dev.jdtech.jellyfin.destinations.AddServerScreenDestination
import dev.jdtech.jellyfin.destinations.LoginScreenDestination
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.viewmodels.MainViewModel
import org.askartv.phone.database.ServerDatabaseDao
import org.askartv.phone.destinations.AddServerScreenDestination
import org.askartv.phone.destinations.LoginScreenDestination
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.viewmodels.MainViewModel
import javax.inject.Inject
@AndroidEntryPoint

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin
package org.askartv.phone
import android.os.Bundle
import android.view.WindowManager
@ -9,11 +9,11 @@ import com.ramcosta.composedestinations.annotation.ActivityDestination
import com.ramcosta.composedestinations.manualcomposablecalls.composable
import com.ramcosta.composedestinations.scope.resultRecipient
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.destinations.PlayerActivityDestination
import dev.jdtech.jellyfin.destinations.PlayerScreenDestination
import dev.jdtech.jellyfin.models.PlayerItem
import dev.jdtech.jellyfin.ui.PlayerScreen
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import org.askartv.phone.destinations.PlayerActivityDestination
import org.askartv.phone.destinations.PlayerScreenDestination
import org.askartv.phone.models.PlayerItem
import org.askartv.phone.ui.PlayerScreen
import org.askartv.phone.ui.theme.FindroidTheme
data class PlayerActivityNavArgs(
val items: ArrayList<PlayerItem>,

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@ -38,13 +38,13 @@ import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.destinations.LoginScreenDestination
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.AddServerEvent
import dev.jdtech.jellyfin.viewmodels.AddServerViewModel
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.destinations.LoginScreenDestination
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.AddServerEvent
import org.askartv.phone.viewmodels.AddServerViewModel
import org.askartv.phone.core.R as CoreR
@Destination
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
@ -26,24 +26,24 @@ import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.destinations.MovieScreenDestination
import dev.jdtech.jellyfin.destinations.PlayerActivityDestination
import dev.jdtech.jellyfin.destinations.ShowScreenDestination
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.models.HomeItem
import dev.jdtech.jellyfin.ui.components.Direction
import dev.jdtech.jellyfin.ui.components.ItemCard
import dev.jdtech.jellyfin.ui.dummy.dummyHomeItems
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.HomeViewModel
import dev.jdtech.jellyfin.viewmodels.PlayerItemsEvent
import dev.jdtech.jellyfin.viewmodels.PlayerViewModel
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.destinations.MovieScreenDestination
import org.askartv.phone.destinations.PlayerActivityDestination
import org.askartv.phone.destinations.ShowScreenDestination
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidShow
import org.askartv.phone.models.HomeItem
import org.askartv.phone.ui.components.Direction
import org.askartv.phone.ui.components.ItemCard
import org.askartv.phone.ui.dummy.dummyHomeItems
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.HomeViewModel
import org.askartv.phone.viewmodels.PlayerItemsEvent
import org.askartv.phone.viewmodels.PlayerViewModel
import org.askartv.phone.core.R as CoreR
@Destination
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
@ -20,15 +20,15 @@ import androidx.tv.foundation.lazy.grid.items
import androidx.tv.material3.MaterialTheme
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.destinations.LibraryScreenDestination
import dev.jdtech.jellyfin.models.CollectionType
import dev.jdtech.jellyfin.models.FindroidCollection
import dev.jdtech.jellyfin.ui.components.Direction
import dev.jdtech.jellyfin.ui.components.ItemCard
import dev.jdtech.jellyfin.ui.dummy.dummyCollections
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.viewmodels.MediaViewModel
import org.askartv.phone.destinations.LibraryScreenDestination
import org.askartv.phone.models.CollectionType
import org.askartv.phone.models.FindroidCollection
import org.askartv.phone.ui.components.Direction
import org.askartv.phone.ui.components.ItemCard
import org.askartv.phone.ui.dummy.dummyCollections
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.viewmodels.MediaViewModel
import java.util.UUID
@Destination

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
@ -22,20 +22,20 @@ import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.destinations.LibraryScreenDestination
import dev.jdtech.jellyfin.destinations.MovieScreenDestination
import dev.jdtech.jellyfin.destinations.ShowScreenDestination
import dev.jdtech.jellyfin.models.CollectionType
import dev.jdtech.jellyfin.models.FindroidFolder
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.ui.components.Direction
import dev.jdtech.jellyfin.ui.components.ItemCard
import dev.jdtech.jellyfin.ui.dummy.dummyMovies
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.viewmodels.LibraryViewModel
import org.askartv.phone.destinations.LibraryScreenDestination
import org.askartv.phone.destinations.MovieScreenDestination
import org.askartv.phone.destinations.ShowScreenDestination
import org.askartv.phone.models.CollectionType
import org.askartv.phone.models.FindroidFolder
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidShow
import org.askartv.phone.ui.components.Direction
import org.askartv.phone.ui.components.ItemCard
import org.askartv.phone.ui.dummy.dummyMovies
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.viewmodels.LibraryViewModel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf
import java.util.UUID

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@ -41,15 +41,15 @@ import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import com.ramcosta.composedestinations.navigation.popUpTo
import dev.jdtech.jellyfin.NavGraphs
import dev.jdtech.jellyfin.destinations.MainScreenDestination
import dev.jdtech.jellyfin.models.UiText
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.LoginEvent
import dev.jdtech.jellyfin.viewmodels.LoginViewModel
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.NavGraphs
import org.askartv.phone.destinations.MainScreenDestination
import org.askartv.phone.models.UiText
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.LoginEvent
import org.askartv.phone.viewmodels.LoginViewModel
import org.askartv.phone.core.R as CoreR
@Destination
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
@ -40,17 +40,17 @@ import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
import dev.jdtech.jellyfin.destinations.SettingsScreenDestination
import dev.jdtech.jellyfin.models.User
import dev.jdtech.jellyfin.ui.components.LoadingIndicator
import dev.jdtech.jellyfin.ui.components.PillBorderIndicator
import dev.jdtech.jellyfin.ui.components.ProfileButton
import dev.jdtech.jellyfin.ui.dummy.dummyServer
import dev.jdtech.jellyfin.ui.dummy.dummyUser
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.viewmodels.MainViewModel
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.destinations.SettingsScreenDestination
import org.askartv.phone.models.User
import org.askartv.phone.ui.components.LoadingIndicator
import org.askartv.phone.ui.components.PillBorderIndicator
import org.askartv.phone.ui.components.ProfileButton
import org.askartv.phone.ui.dummy.dummyServer
import org.askartv.phone.ui.dummy.dummyUser
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.viewmodels.MainViewModel
import org.askartv.phone.core.R as CoreR
@RootNavGraph(start = true)
@Destination

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import android.content.Intent
import android.net.Uri
@ -46,24 +46,24 @@ import androidx.tv.material3.Text
import coil.compose.AsyncImage
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.destinations.PlayerActivityDestination
import dev.jdtech.jellyfin.models.AudioChannel
import dev.jdtech.jellyfin.models.AudioCodec
import dev.jdtech.jellyfin.models.DisplayProfile
import dev.jdtech.jellyfin.models.Resolution
import dev.jdtech.jellyfin.models.VideoMetadata
import dev.jdtech.jellyfin.ui.dummy.dummyMovie
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.Yellow
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.MovieViewModel
import dev.jdtech.jellyfin.viewmodels.PlayerItemsEvent
import dev.jdtech.jellyfin.viewmodels.PlayerViewModel
import org.askartv.phone.destinations.PlayerActivityDestination
import org.askartv.phone.models.AudioChannel
import org.askartv.phone.models.AudioCodec
import org.askartv.phone.models.DisplayProfile
import org.askartv.phone.models.Resolution
import org.askartv.phone.models.VideoMetadata
import org.askartv.phone.ui.dummy.dummyMovie
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.Yellow
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.MovieViewModel
import org.askartv.phone.viewmodels.PlayerItemsEvent
import org.askartv.phone.viewmodels.PlayerViewModel
import org.jellyfin.sdk.model.api.BaseItemPerson
import org.jellyfin.sdk.model.api.PersonKind
import java.util.UUID
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@Destination
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Arrangement
@ -35,21 +35,21 @@ import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import com.ramcosta.composedestinations.result.NavResult
import com.ramcosta.composedestinations.result.ResultRecipient
import dev.jdtech.jellyfin.core.R
import dev.jdtech.jellyfin.destinations.VideoPlayerTrackSelectorDialogDestination
import dev.jdtech.jellyfin.models.PlayerItem
import dev.jdtech.jellyfin.models.Track
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerControlsLayout
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerMediaButton
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerMediaTitle
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerOverlay
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerSeeker
import dev.jdtech.jellyfin.ui.components.player.VideoPlayerState
import dev.jdtech.jellyfin.ui.components.player.rememberVideoPlayerState
import dev.jdtech.jellyfin.ui.dialogs.VideoPlayerTrackSelectorDialogResult
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.handleDPadKeyEvents
import dev.jdtech.jellyfin.viewmodels.PlayerActivityViewModel
import org.askartv.phone.core.R
import org.askartv.phone.destinations.VideoPlayerTrackSelectorDialogDestination
import org.askartv.phone.models.PlayerItem
import org.askartv.phone.models.Track
import org.askartv.phone.ui.components.player.VideoPlayerControlsLayout
import org.askartv.phone.ui.components.player.VideoPlayerMediaButton
import org.askartv.phone.ui.components.player.VideoPlayerMediaTitle
import org.askartv.phone.ui.components.player.VideoPlayerOverlay
import org.askartv.phone.ui.components.player.VideoPlayerSeeker
import org.askartv.phone.ui.components.player.VideoPlayerState
import org.askartv.phone.ui.components.player.rememberVideoPlayerState
import org.askartv.phone.ui.dialogs.VideoPlayerTrackSelectorDialogResult
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.handleDPadKeyEvents
import org.askartv.phone.viewmodels.PlayerActivityViewModel
import kotlinx.coroutines.delay
import java.util.Locale
import kotlin.time.Duration.Companion.milliseconds

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -22,17 +22,17 @@ import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.destinations.PlayerActivityDestination
import dev.jdtech.jellyfin.models.EpisodeItem
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.ui.components.EpisodeCard
import dev.jdtech.jellyfin.ui.dummy.dummyEpisodeItems
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.PlayerItemsEvent
import dev.jdtech.jellyfin.viewmodels.PlayerViewModel
import dev.jdtech.jellyfin.viewmodels.SeasonViewModel
import org.askartv.phone.destinations.PlayerActivityDestination
import org.askartv.phone.models.EpisodeItem
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.ui.components.EpisodeCard
import org.askartv.phone.ui.dummy.dummyEpisodeItems
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.PlayerItemsEvent
import org.askartv.phone.viewmodels.PlayerViewModel
import org.askartv.phone.viewmodels.SeasonViewModel
import java.util.UUID
@Destination

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Arrangement
@ -43,21 +43,21 @@ import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import com.ramcosta.composedestinations.navigation.popUpTo
import dev.jdtech.jellyfin.NavGraphs
import dev.jdtech.jellyfin.destinations.AddServerScreenDestination
import dev.jdtech.jellyfin.destinations.MainScreenDestination
import dev.jdtech.jellyfin.destinations.UserSelectScreenDestination
import dev.jdtech.jellyfin.models.DiscoveredServer
import dev.jdtech.jellyfin.models.Server
import dev.jdtech.jellyfin.ui.dummy.dummyDiscoveredServer
import dev.jdtech.jellyfin.ui.dummy.dummyDiscoveredServers
import dev.jdtech.jellyfin.ui.dummy.dummyServers
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.ServerSelectEvent
import dev.jdtech.jellyfin.viewmodels.ServerSelectViewModel
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.NavGraphs
import org.askartv.phone.destinations.AddServerScreenDestination
import org.askartv.phone.destinations.MainScreenDestination
import org.askartv.phone.destinations.UserSelectScreenDestination
import org.askartv.phone.models.DiscoveredServer
import org.askartv.phone.models.Server
import org.askartv.phone.ui.dummy.dummyDiscoveredServer
import org.askartv.phone.ui.dummy.dummyDiscoveredServers
import org.askartv.phone.ui.dummy.dummyServers
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.ServerSelectEvent
import org.askartv.phone.viewmodels.ServerSelectViewModel
import org.askartv.phone.core.R as CoreR
@Destination
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
@ -23,22 +23,22 @@ import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.destinations.ServerSelectScreenDestination
import dev.jdtech.jellyfin.destinations.SettingsSubScreenDestination
import dev.jdtech.jellyfin.destinations.UserSelectScreenDestination
import dev.jdtech.jellyfin.models.Preference
import dev.jdtech.jellyfin.models.PreferenceCategory
import dev.jdtech.jellyfin.models.PreferenceSelect
import dev.jdtech.jellyfin.models.PreferenceSwitch
import dev.jdtech.jellyfin.ui.components.SettingsCategoryCard
import dev.jdtech.jellyfin.ui.components.SettingsSelectCard
import dev.jdtech.jellyfin.ui.components.SettingsSwitchCard
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.SettingsEvent
import dev.jdtech.jellyfin.viewmodels.SettingsViewModel
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.destinations.ServerSelectScreenDestination
import org.askartv.phone.destinations.SettingsSubScreenDestination
import org.askartv.phone.destinations.UserSelectScreenDestination
import org.askartv.phone.models.Preference
import org.askartv.phone.models.PreferenceCategory
import org.askartv.phone.models.PreferenceSelect
import org.askartv.phone.models.PreferenceSwitch
import org.askartv.phone.ui.components.SettingsCategoryCard
import org.askartv.phone.ui.components.SettingsSelectCard
import org.askartv.phone.ui.components.SettingsSwitchCard
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.SettingsEvent
import org.askartv.phone.viewmodels.SettingsViewModel
import org.askartv.phone.core.R as CoreR
@Destination
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.annotation.StringRes
import androidx.compose.foundation.layout.Arrangement
@ -29,24 +29,24 @@ import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.Constants
import dev.jdtech.jellyfin.destinations.ServerSelectScreenDestination
import dev.jdtech.jellyfin.destinations.SettingsScreenDestination
import dev.jdtech.jellyfin.destinations.UserSelectScreenDestination
import dev.jdtech.jellyfin.models.Preference
import dev.jdtech.jellyfin.models.PreferenceCategory
import dev.jdtech.jellyfin.models.PreferenceSelect
import dev.jdtech.jellyfin.models.PreferenceSwitch
import dev.jdtech.jellyfin.ui.components.SettingsCategoryCard
import dev.jdtech.jellyfin.ui.components.SettingsDetailsCard
import dev.jdtech.jellyfin.ui.components.SettingsSelectCard
import dev.jdtech.jellyfin.ui.components.SettingsSwitchCard
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.SettingsEvent
import dev.jdtech.jellyfin.viewmodels.SettingsViewModel
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.Constants
import org.askartv.phone.destinations.ServerSelectScreenDestination
import org.askartv.phone.destinations.SettingsScreenDestination
import org.askartv.phone.destinations.UserSelectScreenDestination
import org.askartv.phone.models.Preference
import org.askartv.phone.models.PreferenceCategory
import org.askartv.phone.models.PreferenceSelect
import org.askartv.phone.models.PreferenceSwitch
import org.askartv.phone.ui.components.SettingsCategoryCard
import org.askartv.phone.ui.components.SettingsDetailsCard
import org.askartv.phone.ui.components.SettingsSelectCard
import org.askartv.phone.ui.components.SettingsSwitchCard
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.SettingsEvent
import org.askartv.phone.viewmodels.SettingsViewModel
import org.askartv.phone.core.R as CoreR
@Destination
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import android.content.Intent
import android.net.Uri
@ -56,21 +56,21 @@ import androidx.tv.material3.Text
import coil.compose.AsyncImage
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.destinations.PlayerActivityDestination
import dev.jdtech.jellyfin.destinations.SeasonScreenDestination
import dev.jdtech.jellyfin.models.FindroidSeason
import dev.jdtech.jellyfin.ui.components.Direction
import dev.jdtech.jellyfin.ui.components.ItemCard
import dev.jdtech.jellyfin.ui.dummy.dummyShow
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.Yellow
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.PlayerItemsEvent
import dev.jdtech.jellyfin.viewmodels.PlayerViewModel
import dev.jdtech.jellyfin.viewmodels.ShowViewModel
import org.askartv.phone.destinations.PlayerActivityDestination
import org.askartv.phone.destinations.SeasonScreenDestination
import org.askartv.phone.models.FindroidSeason
import org.askartv.phone.ui.components.Direction
import org.askartv.phone.ui.components.ItemCard
import org.askartv.phone.ui.dummy.dummyShow
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.Yellow
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.PlayerItemsEvent
import org.askartv.phone.viewmodels.PlayerViewModel
import org.askartv.phone.viewmodels.ShowViewModel
import java.util.UUID
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@Destination
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui
package org.askartv.phone.ui
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Arrangement
@ -43,22 +43,22 @@ import coil.request.ImageRequest
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import com.ramcosta.composedestinations.navigation.popUpTo
import dev.jdtech.jellyfin.NavGraphs
import dev.jdtech.jellyfin.api.JellyfinApi
import dev.jdtech.jellyfin.destinations.LoginScreenDestination
import dev.jdtech.jellyfin.destinations.MainScreenDestination
import dev.jdtech.jellyfin.models.Server
import dev.jdtech.jellyfin.models.User
import dev.jdtech.jellyfin.ui.dummy.dummyServer
import dev.jdtech.jellyfin.ui.dummy.dummyUser
import dev.jdtech.jellyfin.ui.dummy.dummyUsers
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.utils.ObserveAsEvents
import dev.jdtech.jellyfin.viewmodels.UserSelectEvent
import dev.jdtech.jellyfin.viewmodels.UserSelectViewModel
import org.askartv.phone.NavGraphs
import org.askartv.phone.api.JellyfinApi
import org.askartv.phone.destinations.LoginScreenDestination
import org.askartv.phone.destinations.MainScreenDestination
import org.askartv.phone.models.Server
import org.askartv.phone.models.User
import org.askartv.phone.ui.dummy.dummyServer
import org.askartv.phone.ui.dummy.dummyUser
import org.askartv.phone.ui.dummy.dummyUsers
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.utils.ObserveAsEvents
import org.askartv.phone.viewmodels.UserSelectEvent
import org.askartv.phone.viewmodels.UserSelectViewModel
import org.jellyfin.sdk.model.api.ImageType
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@Destination
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Box
@ -26,10 +26,10 @@ import androidx.tv.material3.ClickableSurfaceScale
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.ui.dummy.dummyEpisode
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.ui.dummy.dummyEpisode
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
@Composable
fun EpisodeCard(
@ -76,7 +76,7 @@ fun EpisodeCard(
Column {
Text(
text = stringResource(
id = dev.jdtech.jellyfin.core.R.string.episode_name,
id = org.askartv.phone.core.R.string.episode_name,
episode.indexNumber,
episode.name,
),

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.background
@ -24,13 +24,13 @@ import androidx.tv.material3.ClickableSurfaceScale
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text
import dev.jdtech.jellyfin.core.R
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.ui.dummy.dummyEpisode
import dev.jdtech.jellyfin.ui.dummy.dummyMovie
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import org.askartv.phone.core.R
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.ui.dummy.dummyEpisode
import org.askartv.phone.ui.dummy.dummyMovie
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
@Composable
fun ItemCard(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.aspectRatio
@ -8,9 +8,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.tv.material3.MaterialTheme
import coil.compose.AsyncImage
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.models.FindroidMovie
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.models.FindroidMovie
enum class Direction {
HORIZONTAL, VERTICAL

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.layout.size
import androidx.compose.material3.CircularProgressIndicator

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.core.animateDpAsState

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.aspectRatio
@ -21,11 +21,11 @@ import androidx.tv.material3.Icon
import androidx.tv.material3.Surface
import coil.compose.AsyncImage
import coil.request.ImageRequest
import dev.jdtech.jellyfin.api.JellyfinApi
import dev.jdtech.jellyfin.core.R
import dev.jdtech.jellyfin.models.User
import dev.jdtech.jellyfin.ui.dummy.dummyUser
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import org.askartv.phone.api.JellyfinApi
import org.askartv.phone.core.R
import org.askartv.phone.models.User
import org.askartv.phone.ui.dummy.dummyUser
import org.askartv.phone.ui.theme.FindroidTheme
import org.jellyfin.sdk.model.api.ImageType
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
@ -17,12 +17,12 @@ import androidx.compose.ui.unit.dp
import androidx.tv.material3.Icon
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.ui.dummy.dummyEpisode
import dev.jdtech.jellyfin.ui.dummy.dummyShow
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.models.FindroidItem
import org.askartv.phone.ui.dummy.dummyEpisode
import org.askartv.phone.ui.dummy.dummyShow
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.core.R as CoreR
@Composable
fun ProgressBadge(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Column
@ -25,10 +25,10 @@ import androidx.tv.material3.Icon
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text
import dev.jdtech.jellyfin.models.PreferenceCategory
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.models.PreferenceCategory
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.core.R as CoreR
@Composable
fun SettingsCategoryCard(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Arrangement
@ -26,11 +26,11 @@ import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.RadioButton
import androidx.tv.material3.Surface
import androidx.tv.material3.Text
import dev.jdtech.jellyfin.Constants
import dev.jdtech.jellyfin.models.PreferenceSelect
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.Constants
import org.askartv.phone.models.PreferenceSelect
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.core.R as CoreR
@Composable
fun SettingsDetailsCard(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Column
@ -25,11 +25,11 @@ import androidx.tv.material3.Icon
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text
import dev.jdtech.jellyfin.Constants
import dev.jdtech.jellyfin.models.PreferenceSelect
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.Constants
import org.askartv.phone.models.PreferenceSelect
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import org.askartv.phone.core.R as CoreR
@Composable
fun SettingsSelectCard(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components
package org.askartv.phone.ui.components
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Arrangement
@ -26,10 +26,10 @@ import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Switch
import androidx.tv.material3.Text
import dev.jdtech.jellyfin.core.R
import dev.jdtech.jellyfin.models.PreferenceSwitch
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import org.askartv.phone.core.R
import org.askartv.phone.models.PreferenceSwitch
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
@Composable
fun SettingsSwitchCard(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components.player
package org.askartv.phone.ui.components.player
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@ -16,8 +16,8 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.tv.material3.MaterialTheme
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
@Composable
fun VideoPlayerControlsLayout(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components.player
package org.askartv.phone.ui.components.player
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.interaction.collectIsFocusedAsState

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components.player
package org.askartv.phone.ui.components.player
import androidx.compose.foundation.layout.Column
import androidx.compose.runtime.Composable
@ -6,7 +6,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.FindroidTheme
@Composable
fun VideoPlayerMediaTitle(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components.player
package org.askartv.phone.ui.components.player
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.fadeIn
@ -22,8 +22,8 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.tv.material3.MaterialTheme
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
@Composable
fun VideoPlayerOverlay(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components.player
package org.askartv.phone.ui.components.player
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.Canvas
@ -26,8 +26,8 @@ import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.tv.material3.MaterialTheme
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.utils.handleDPadKeyEvents
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.utils.handleDPadKeyEvents
@OptIn(ExperimentalComposeUiApi::class)
@Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components.player
package org.askartv.phone.ui.components.player
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -19,10 +19,10 @@ import androidx.tv.material3.Icon
import androidx.tv.material3.IconButton
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import kotlin.time.Duration
import dev.jdtech.jellyfin.core.R as CoreR
import org.askartv.phone.core.R as CoreR
@Composable
fun VideoPlayerSeeker(

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.components.player
package org.askartv.phone.ui.components.player
import androidx.annotation.IntRange
import androidx.compose.runtime.Composable

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.dialogs
package org.askartv.phone.ui.dialogs
import androidx.compose.ui.window.DialogProperties
import com.ramcosta.composedestinations.spec.DestinationStyle

View file

@ -1,4 +1,4 @@
package dev.jdtech.jellyfin.ui.dialogs
package org.askartv.phone.ui.dialogs
import android.os.Parcelable
import androidx.compose.foundation.BorderStroke
@ -31,12 +31,12 @@ import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.result.EmptyResultBackNavigator
import com.ramcosta.composedestinations.result.ResultBackNavigator
import dev.jdtech.jellyfin.models.Track
import dev.jdtech.jellyfin.ui.theme.FindroidTheme
import dev.jdtech.jellyfin.ui.theme.spacings
import org.askartv.phone.models.Track
import org.askartv.phone.ui.theme.FindroidTheme
import org.askartv.phone.ui.theme.spacings
import kotlinx.parcelize.Parcelize
import dev.jdtech.jellyfin.core.R as CoreR
import dev.jdtech.jellyfin.player.video.R as PlayerVideoR
import org.askartv.phone.core.R as CoreR
import org.askartv.phone.player.video.R as PlayerVideoR
@Parcelize
data class VideoPlayerTrackSelectorDialogResult(

View file

@ -1,8 +1,8 @@
package dev.jdtech.jellyfin.ui.dummy
package org.askartv.phone.ui.dummy
import dev.jdtech.jellyfin.models.CollectionType
import dev.jdtech.jellyfin.models.FindroidCollection
import dev.jdtech.jellyfin.models.FindroidImages
import org.askartv.phone.models.CollectionType
import org.askartv.phone.models.FindroidCollection
import org.askartv.phone.models.FindroidImages
import java.util.UUID
private val dummyMoviesCollection = FindroidCollection(

View file

@ -1,11 +1,11 @@
package dev.jdtech.jellyfin.ui.dummy
package org.askartv.phone.ui.dummy
import dev.jdtech.jellyfin.models.EpisodeItem
import dev.jdtech.jellyfin.models.FindroidEpisode
import dev.jdtech.jellyfin.models.FindroidImages
import dev.jdtech.jellyfin.models.FindroidMediaStream
import dev.jdtech.jellyfin.models.FindroidSource
import dev.jdtech.jellyfin.models.FindroidSourceType
import org.askartv.phone.models.EpisodeItem
import org.askartv.phone.models.FindroidEpisode
import org.askartv.phone.models.FindroidImages
import org.askartv.phone.models.FindroidMediaStream
import org.askartv.phone.models.FindroidSource
import org.askartv.phone.models.FindroidSourceType
import org.jellyfin.sdk.model.api.MediaStreamType
import java.time.LocalDateTime
import java.util.UUID

View file

@ -1,10 +1,10 @@
package dev.jdtech.jellyfin.ui.dummy
package org.askartv.phone.ui.dummy
import dev.jdtech.jellyfin.models.CollectionType
import dev.jdtech.jellyfin.models.HomeItem
import dev.jdtech.jellyfin.models.HomeSection
import dev.jdtech.jellyfin.models.UiText
import dev.jdtech.jellyfin.models.View
import org.askartv.phone.models.CollectionType
import org.askartv.phone.models.HomeItem
import org.askartv.phone.models.HomeSection
import org.askartv.phone.models.UiText
import org.askartv.phone.models.View
import java.util.UUID
val dummyHomeItems = listOf(

View file

@ -1,10 +1,10 @@
package dev.jdtech.jellyfin.ui.dummy
package org.askartv.phone.ui.dummy
import dev.jdtech.jellyfin.models.FindroidImages
import dev.jdtech.jellyfin.models.FindroidMediaStream
import dev.jdtech.jellyfin.models.FindroidMovie
import dev.jdtech.jellyfin.models.FindroidSource
import dev.jdtech.jellyfin.models.FindroidSourceType
import org.askartv.phone.models.FindroidImages
import org.askartv.phone.models.FindroidMediaStream
import org.askartv.phone.models.FindroidMovie
import org.askartv.phone.models.FindroidSource
import org.askartv.phone.models.FindroidSourceType
import org.jellyfin.sdk.model.api.MediaStreamType
import java.time.LocalDateTime
import java.util.UUID

Some files were not shown because too many files have changed in this diff Show more