Commit graph

632 commits

Author SHA1 Message Date
nomadics9
2d141b6f0f Fix middle top logo for wide screens 2024-06-30 10:08:13 +03:00
nomadics9
168cfcd19f Add logo on middle topbar and amoled prefrence default true 2024-06-29 19:18:22 +03:00
nomadics9
288c96709e refactor package name 2024-06-29 15:44:54 +03:00
nomadics9
7b508fa456 appCode = 1 2024-06-29 03:19:31 +03:00
nomadics9
fcb58ef8ad personal personlization init 2024-06-29 03:07:12 +03:00
Jarne Demeulemeester
c01ed644b2
feat: native 10.9 trickplay (#763)
* feat: native trickplay

TODO: update downloaded trickplay data

* chore: fix tv build

* fix: set dispatcher on image loading to remove flicker

* feat: download trickplay data

* refactor: simplify trickplay info by only loading a single resolution

* refactor: follow jellyfin naming of trickplay
2024-06-22 18:21:24 +02:00
Jarne Demeulemeester
ba20b2fd37
refactor: upgrade to jellyfin 10.9 (#757)
* refactor: upgrade to jellyfin 10.9

* chore: upgrade to jellyfin sdk 1.5.0-beta.2

* fix: don't show resumable items in next up

* chore: upgrade to jellyfin sdk 1.5.0-beta.3

* fix: sync offline playback progress

* refactor: initialize BrandingApi in JellyfinApi

* refactor: speed up quick connect auth

* perf: load home data on Default dispatcher
2024-06-16 12:29:26 +02:00
Jarne Demeulemeester
038eb45077
chore(deps): upgrade to kotlin 2.0 2024-05-24 00:10:01 +02:00
Jarne Demeulemeester
0ed42e1223
fix: keep all classes in tv release build
This fixes runtime errors
2024-05-19 18:27:54 +02:00
Jarne Demeulemeester
45b5cb6bf3
refactor: remove unused code 2024-05-10 11:34:40 +02:00
Jarne Demeulemeester
0fa3093d0c
fix: enable core library desugaring 2024-05-09 22:05:52 +02:00
Jarne Demeulemeester
ef5685ce63
chore: clean up dependencies 2024-05-09 12:30:23 +02:00
Jarne Demeulemeester
f10185111e
lint: fix issues 2024-05-04 11:03:11 +02:00
Jarne Demeulemeester
6441e5437a
chore: upgrade androidx tv material3 to 1.0.0-beta01 2024-05-02 20:13:10 +02:00
leekleak
a78dafe387
feat: add login disclaimer support (#721)
* add login disclaimer support

* refactor: move disclaimer to `UiState.Normal`

This makes more sense in the current architecture

* feat: add login disclaimer to tv version

* refactor: add margin to bottom of disclaimer

* lint: add missing trailing comma

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-04-27 18:39:45 +02:00
Jarne Demeulemeester
7b3523e605
chore(deps): update dependencies
androidx-activity 1.8.2 -> 1.9.0
androidx-compose-bom 2024.04.00 -> 2024.04.01
androidx-compose-compiler 1.5.11 -> 1.5.12
androidx-core 1.12.0 -< 1.13.0
jellyfin-media3-ffmpeg-decoder 1.2.1+1 -> 1.3.1+1
2024-04-20 11:06:52 +02:00
Jarne Demeulemeester
400335325a
chore: change apks output name for release builds 2024-04-14 22:00:22 +02:00
Jarne Demeulemeester
2d83b38387
test: main flow
Closes #727
2024-04-13 16:01:18 +02:00
Jarne Demeulemeester
bd98967b78
refactor: remove huawei flavor 2024-04-12 23:22:54 +02:00
jarnedemeulemeester
7aa3bf39b1
refactor: migrate to org.jellyfin.media3:media3-ffmpeg-decoder
Close #725
2024-04-12 23:13:44 +02:00
leekleak
a743363a87
feat: support html in media description (#713)
* support HTML in media description

* parse html in episode overview

* do the same in season view
2024-04-10 11:25:22 +02:00
Jarne Demeulemeester
a0297357d5
fix: reduce community rating to one decimal place
Closes #370
2024-03-05 21:38:38 +01:00
Jarne Demeulemeester
04c6573dfb
fix: empty collection string
Closes #585
2024-03-04 20:59:35 +01:00
Jarne Demeulemeester
f61f65828f
fix: handle IllegalArgumentException from setPictureInPictureParams 2024-03-04 19:37:13 +01:00
Jarne Demeulemeester
0a1582f47b
fix(theme): set correct surface color when using dynamic colors or amoled theme
Surface colors have changed in material components 1.11.0

Closes #673
2024-03-02 23:52:07 +01:00
Nelson Wu
9cd3295d2d
feat: mixed libraries (#628)
* mixed collection

* Mixed libraries to show up in "Latest"

Co-authored-by: Freya Winters <freya@justgamingtld.nl>

* Do not recurse if folders are shown

* Added folder navigation for tv

* Removed assumption that folder == mixed

* refactor: add default values to `FindroidFolder`

* fix: add chapters to findroidfolder

---------

Co-authored-by: Freya Winters <freya@justgamingtld.nl>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-02-24 17:48:03 +01:00
jarnedemeulemeester
88f648a25e
chore: use compose bom and upgrade compose compiler to 1.5.10 2024-02-22 18:03:58 +01:00
Natanel Shitrit
c39bdce845
feat: chapters (#466)
* Add chapter markers and "skip chapter" on long press

* Fix linting problems

- Missing comma
- Unused import
- Comment block

* Add preferences options

* Drop chapter support for ExoPlayer

* Fix linting

* Remove Trailing spaces

* Remove TODO from marker color

* Move code to function

* Optimize imports

* Fix crash on episode skip

* Disable player control view animation

* Avoid crash when there are no chapters for media item

* Skip to next episode when skipping last chapter

* Load chapters from Jellyfin API instead of MPV Player

* Remove chapter gesture

* Fix build

* Fix linting

* Fix linting

* Support chapters with offline media

* Remove debug print

* Add chapter skipping

* Remove trailing spaces

* fix(chapters): display correct chapter while seeking

* refactor: faster and cleaner `getCurrentChapterIndex`

* refactor: seek to start of current chapter if player position is more than 5 seconds past start of chapter

* refactor: change "Matroska chapters" to just "Chapters"

The chapters feature also works for MP4 files so just make it generic

* Bump database version

* Add auto-migration for database version bump

* Save database schema

* chore: clean up

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-02-17 16:45:07 +01:00
Jarne Demeulemeester
3e3d749f62
refactor: remove back button in locked controls 2024-02-03 22:29:32 +01:00
Jarne Demeulemeester
782f736a8a
fix: long press fixes
Disable when controls are locked
Disable when more than 1 pointer
2024-02-03 22:21:10 +01:00
Natanel Shitrit
42df641c03
feat: automatic PiP animation (#648)
* Add automatic PiP animation

* Fix linting

* Fix linting

* chore: fix merge conflict

* fix: disable pip gesture when media is paused

* fix: crash when gestures are disabled

* fix: keep auto enter enabled after using button

---------

Co-authored-by: Cd16d <98320806+cd16b@users.noreply.github.com>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-02-03 22:04:48 +01:00
Cd16d
3ba5a73c74
fix: pip zoom start player maximized (#640)
* fix zoom

* update isZoomEnabled inside updateZoomMode

To avoid future issues, I will update `isZoomEnabled` inside `updateZoomMode`.

* Revert " update isZoomEnabled inside updateZoomMode"

This reverts commit 9b539e1830bc76db0c540a51299f05a09c553d00.

* fix: isZoomEnable

* val enableZoom for readability

* lint
2024-02-03 18:22:01 +01:00
Cd16d
c67f6c265b
fix: pip remember zoom and auto-brightness (#638) 2024-01-28 14:11:34 +01:00
Natanel Shitrit
61ec1edb35
feat: start player maximized pref (#637) 2024-01-28 14:01:29 +01:00
peerless2012
0ecf6d4c0e
feat: add long press for 2x speed (#596)
* Add long press for 2x speed.

* Fix resource hard code warn.

* Fix lint warn.

* refactor: use `player.setPlaybackSpeed`

* refactor: make playback speed increase easily adjustable later

---------

Co-authored-by: jarnedemeulemeester <jarnedemeulemeester@gmail.com>
2024-01-22 15:31:50 +01:00
Yash Garg
833fc95545
chore: use type-safe project accessors (#622) 2024-01-17 21:00:34 +01:00
Jarne Demeulemeester
55427036b2
feat(phone): use custom track selection dialog for default player
Use media3 track type instead of mpv track type
Simplify track selection dialog
2024-01-01 12:23:53 +01:00
Jarne Demeulemeester
db5eab1ab2
refactor(tv): use media3 track type instead of mpv track type for track selection dialog 2024-01-01 11:28:42 +01:00
Jarne Demeulemeester
a6ebb89b78
feat(tv): allow audio and subtitle tracks to be disabled
Closes #608
2024-01-01 00:31:13 +01:00
Jarne Demeulemeester
92f1cf7eee
feat(tv): disable unsupported tracks in dialog 2023-12-31 21:32:37 +01:00
Jarne Demeulemeester
85f48b9abc
refactor(tv): remove temp start route override 2023-12-31 21:29:15 +01:00
Jarne Demeulemeester
1c893d0059
refactor(tv): remove unused composables 2023-12-31 20:59:31 +01:00
Jarne Demeulemeester
2b6649e0ce
refactor(tv): move background gradient to theme 2023-12-31 20:54:13 +01:00
Jarne Demeulemeester
db9a6d6877
feat(phone,exoplayer): allow audio track to be disabled 2023-12-31 11:19:28 +01:00
Jarne Demeulemeester
7171ec72c1
feat: android tv (#598)
* Add AddServerScreen

* Upgrade androidx-compose-material3 and androidx-compose-ui to alpha

* Add DiscoveredServerComponent

* Show discovered servers

* Add navigation using compose-destinations

* Implement Loginscreen

* Start of HomeScreen

* Use coil for home screen images and update layout with spacers

* Select correct startRoute based on conditions

* Upgrade compose material3 to 1.1.0-alpha05

* Add series title, max 1 line, padding

* Upgrade dependencies

* Switch to TvLazyColumn and TvLazyRow

* Add header to `HomeScreen`

* Add progress bar to Continue watching items

* Limit the number of lines under Movie or Show and use correct episode text

* chore: run ktlintFormat

* ci: assemble tv

* feat: `LibraryScreen`

* fix: update to reworked items system

* chore(deps): update androidx-paging-compose and compose-destination

Also fix lint issue on HomeScreen

* feat: start using androidx.material3 composables

* feat: add coil svg

* feat: experimenting with cards

* lint: fix linting issues

* feat: server select screen

* build: upgrade dependencies

* lint: run ktlintFormat

* feat(ServerSelectScreen): add "No servers found" text

* feat: update AddServerScreen

* feat: implement `UiText.asString()` composable

* lint: run ktlintFormat

* refactor(phone): remove livedata from `ServerSelectScreen`

* feat: add `UserSelectScreen`

* feat(UserSelectScreen): load user's profile picture

* feat: update LoginScreen

* feat: update progress indicator on `AddServerScreen`

* fix: change color of `ServerComponent`

* style(ServerSelect): use material typography

* chore: update ktlint config in build.gradle

* style: use material typography

* refactor: move home screen to separate layout function so it can be previewed

- Introduce dummy items
- Fix `UiText.asString()` composable

* refactor: preview `LibraryScreen`

* refactor: preview `ServerSelectScreen`

* refactor: preview `AddServerScreen`

* refactor: preview `UserSelectScreen`

* refactor: preview `LoginScreen`

* lint: run ktlintFormat

* feat: switch servers

* feat: main screen tabs navigation

* feat: add Live TV tab (not shown for now)

* chore: remove libraries from `HomeViewModel`

* chore: change colors of selected tab

* feat: new item card component

* chore: remove `HomeItem.Libraries`

* style: update spacing

* feat: add findroid icon and profile button on main screen

* style(main): add gradient background

* fix: use "latest" + library name in home screen

* fix: navigate from LoginScreen and UserSelectScreen to MainScreen

* style: update tab colors

* fix: remove reference to `HomeItem.Libraries` from `ViewListAdapter`

* chore: update kotlin compiler to 1.5.0

* feat: add horizontal item card variant

* feat: `LibrariesScreen`

* feat: `LibraryScreen`

* fix(`LibraryScreen`): remove hardcoded library name

* feat: `MovieScreen`

* feat(`MovieScreen`): Make trailer button work

Also hide the button when there is no trailer

* refactor(`MovieScreen`): move click logic out of layout

* refactor: create `FindroidImages` which holds all image uris

* build: upgrade androidx.tv to 1.0.0-alpha08

* chore: update compose libraries

* chore: update compose compiler to 1.5.1

* fix(ItemCard): only show progress when horizontal

* refactor: clean build.gradle.kts

* build: up minSdk to 28 and targetSdk to 34

* refactor: use spacings to provide paddings (#443)

* feat: add Spacings in MaterialTheme

* style: use MaterialTheme.spacings in layouts

Using sizes in Spacer & padding & PaddingValues to standardize it.

* fix: linting issues and a few paddings

* feat: use spacings in `LibraryScreen`

* feat: use spacings in `MovieScreen`

* fix: missing trailing comma

* refactor: replace hardcoded spacer in ItemCard with spacing

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>

* build: migrate to ksp and upgrade compose compiler

* build: upgrade compose libraries

* fix: align with main codebase

* chore: update agp to 8.1.3

* chore: update ksp and compose-destinations

ksp 1.9.10-1.0.13 -> 1.9.20-1.0.14
compose-destinations 1.9.51 -> 1.9.54

* refactor(UserSelectViewModel): use channel for events

* feat: basic video player

First implementation of the video player.
Uses the basic player view with no custom layout.
Only media keys are passed to the PlayerView.

* feat: show screen

Still a work in progress

* fix: make player background black

* fix(player): keep screen on

* feat: add border around focused tab

* lint: run ktlintFormat

* feat: focus improvements

* feat: logo for main screen

* fix: remember tab position

* feat: add loading indicator to main screen

And fix home and libraries screen list refresh on navigating back

* feat: add seasons to show screen

* feat: add season screen

* feat: add progress badge

* chore(deps) update dependencies

android-plugin 8.1.3 -> 8.1.4
androidx-activity 1.8.0 -> 1.8.1
androidx-media3 1.1.1 -> 1.2.0
coil 2.4.0 -> 2.5.0
kotlinx-serialization 1.6.0 -> 1.6.1

* ci: upload tv artifacts and don't build universal apks

* chore: get rid of deprecated android.defaults.buildfeatures.buildconfig

* build: upgrade dependencies

android-plugin 8.1.4 -> 8.2.0
androidx-room 2.6.0 -> 2.6.1
androidx-work 2.8.1 -> 2.9.0
jellyfin 1.4.5 -> 1.4.6

compose compiler 1.5.4 -> 1.5.5

* fix: workManagerConfiguration is now a property

* feat: add profile picture to main screen

* feat: start of settings screen

* refactor: base tv theme on normal compose material theme

* chore(deps): update kotlin to 1.9.21

kotlin 1.9.20 -> 1.9.21
ksp 1.9.20-1.0.14 -> 1.9.21-1.0.15
compose-compiler 1.5.5 -> 1.5.6

* feat(settings): add categories and pop backstack when navigating to main screen

* feat(settings): nested settings and switch setting

* feat(settings): settings select component

* feat(settings): icons for cache and about

* feat(settings): add option to toggle mpv player

* feat(settings): move preference value logic to viewmodel

* feat(settings): add dependencies

* chore: update compose compiler

compose-compiler 1.5.6 -> 1.5.7

* feat(settings): add settings detail select card

New sub settings screen with different layout
Settings detail select card to select an option

* feat: play episode from home screen

* feat(player): basic custom overlay

Courtesy of Android TV JetStreamCompose sample

* feat(player): add track selection dialog

* feat(player): add media session and clean up dpad events

* refactor(mpv): implement track selection via TrackSelectionParameters

Need to add ability to disable track type

* feat: implement watched and favorite buttons

* refactor: remove unused PreferenceType enum

---------
2023-12-30 22:20:20 +01:00
Jarne Demeulemeester
218b4f1af4
refactor: replace SharedFlows with Channels for sending events 2023-11-06 23:42:00 +01:00
Natanel Shitrit
8b747bf037
refactor: remove cleanUpOldDownloads (#529)
* Remove `cleanUpOldDownloads`

* refactor: remove `downloadsMigrated` preference

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-10-28 12:38:35 +02:00
jarnedemeulemeester
e32b4eec7d
refactor: clean up 2023-10-23 13:24:26 +02:00
jarnedemeulemeester
e210691705
refactor: move compileSdk, buildTools, minSdk, targetSdk and java to buildSrc Versions 2023-10-23 13:00:24 +02:00
Jarne Demeulemeester
16dd40d489
build: move app and ktlint version to buildSrc Versions 2023-10-15 15:43:55 +02:00