Commit graph

6 commits

Author SHA1 Message Date
lsrom
07a9e2a853
Add basic tv support (#58)
* Add basic leanback support

* Add TV home fragment

Adds basic media browsing screen for TV. Shows Home screen media.

* Fix double emit when loading user views

* Fix bug when going back to this screen would duplicate menu items

* Add basic media detail fragment

* Add ability to navigate to detail fragment

* Fix imports and null safe calls

* Fix displaying of home item view type media files

* Playback refactor

* Add basic Tv player controls and split PlayerActivity

* Update strings

* Add progress bar to partially played items on TV home screen

* Track selection dialog PoC

* Update track selection WIP

* Show track selection of focus change

* Fix series display from home

* Minor updates

* Add back button to media detail

* Zero effort add server and login

* Fix colors

* Fix back button from home going back to init fragment

* Add settings button to home screen

* Fix crash after goig back from media detail fragment

* Show seasons and cast

* Merge branch 'develop' into add_basic_tv_support

# Conflicts:
#	app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt
#	app/src/main/java/dev/jdtech/jellyfin/dialogs/VideoVersionDialogFragment.kt
#	app/src/main/res/navigation/app_navigation.xml

* Fix cast title being shown with empty cast list

* Remove useless method

* Remove unused parameter

* Fix crash due to colorOnPrimary not existing in Leanback styles

* Remove unused theme

* Fix home to addserver fragment navigation

* Reuse home item layouts

This creates some duplicate code which will probably be cleaned up later

* Ignore more MissingDefaultResource

* Add banner

Co-authored-by: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com>
2021-10-30 19:46:51 +02:00
lsrom
308d97068f
Refactor playback code (#55)
* Refactor playback code

* Fix back state when playing media and rotating device

Problem was playerItems were re-emitted on fragment creation after config change. LiveData by design emit on every subscribe (observe) so to avoid that there are several possibilities.

1) easiest, observe playerItems not in onCreate but in playButton.clickListener. Stupid, since then we need to remember to only observe in this special place.

2) SingleLiveData - kind of hacky since LiveData were designed to behave this way so we don't want to go against their design.

3) Use Kotlin flow instead.

I chose the flow approach since it's Kotlin native and modern way to do things and behaves much more Rx-like. Since now we need to call collect instead of observe and launch in coroutine, I added utility method to make this easier. Also, in the future we might want to improve this further, either by coming up with new way entirely or by at least moving this to parent fragment from which all fragments that want to play media will inherit and thus making it easy to use and maintain.

Co-authored-by: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com>
2021-10-26 18:11:22 +02:00
jarnedemeulemeester
69503f504d
Remove hardcoded strings from dialogs 2021-10-23 13:35:37 +02:00
jarnedemeulemeester
4c36785461
Add more shape styles + switch to material dialogs 2021-10-03 15:37:29 +02:00
jarnedemeulemeester
25ac5524d7
Rework how player items are created
Add support for intros and improve loading speed
2021-08-26 15:36:56 +02:00
Jarne Demeulemeester
e69a653453
Get mediaSources and select version of movie 2021-07-11 16:44:46 +02:00