Commit graph

795 commits

Author SHA1 Message Date
damontecres
1fd497d18c
Add playlist & collection specific grid layout UIs (#246)
Adds grid layouts specifically for playlists and collections/boxsets
instead of falling back to the generic grid.

In #238, the generic grid was updated to show 4 columns of 16x9 cards.
Now, collections will use 2x3 (poster) cards (like Movies) and playlists
will use square cards.

This also means collections & playlists have more relevant sort options.

Fixes #243
Closes #226
2025-11-18 17:20:28 -05:00
damontecres
cda5b118a3
Option to combine continue watching & next up rows (#192)
A real implementation for combining the `Continue Watching` and `Next
Up` rows on the home page.

It requires a query for every next up item, so it could become slow
especially for many items and larger servers. The app makes a best
effort to cache the information.

The order is determined by querying each episode in next up to associate
it to its immediately previous episode's last played date. Then both
continue watching & next up items are reversed sorted by the last played
data. So this only makes sense if you watch series in order.

Closes #19
2025-11-18 15:21:50 -05:00
Damontecres
2111699abc
Smaller maximum size for logo 2025-11-18 11:48:04 -05:00
damontecres
90956bd0e2
Fix several playback issues (#240)
Fixes issues introduced in #222:
- Switching tracks
- Downloading subtitles
- Trickplay
2025-11-17 22:08:26 -05:00
Damontecres
037e846599
Revert "Use useSeriesForPrimary"
This reverts commit f5f75f9e9e8f3316c689b85d3b8781c932a7c0ff.
2025-11-17 16:12:59 -05:00
damontecres
a9f2e684f1
Add logo to playback overlay (#172)
## Details

Adds the logo (if available) to the upper left corner of the playback
controls overlay.

I am still experimenting with how logos can be used on the details
pages. It's problematic because of the variety of colors, eg dark logos
can be hard to see on the dark background.

## Issues
Related to #92

## Screenshot
<img width="1280" height="771" alt="logo_playback Large"
src="https://github.com/user-attachments/assets/c6cb43fe-f3bc-42a4-9ef4-0397267e3073"
/>
2025-11-17 14:14:35 -05:00
Damontecres
0d148e2556
Move strings into one file 2025-11-17 14:02:17 -05:00
damontecres
98fde1b65e
Better video grid, poster images, & home page images (#238)
- General video library grid now shows 16:9 cards
- Ensures the posters on Movie/TV show grid pages fill the bounds (TVDB
posters are often very slightly wider than 2x3)
- Always crossfade home page backdrop image

Related to #66
2025-11-17 13:44:03 -05:00
damontecres
4d34c977c8
Fix issue when holding down on playback overylay queue (#237)
Fixes an issues where if the playback overlay is showing and there is a
queue of items, then holding the D-Pad down button would scroll down but
visually lose focus on the queue items.
2025-11-16 21:24:07 -05:00
damontecres
b42aa297f6
Add dimming effect to highlight which episode is currenty selected (#232)
On the series overview page, when moving off of the episode row, such as
to do the play/more buttons, the other episodes will now become dimmer
to indicate which episode you're interacting with.

Also, when moving back to the page from the nav drawer, focus is
restored to where it left from. This is useful when scrolling fast left
on the season tabs and you overshoot onto the nav drawer, moving right
once will always move back to the season tabs.

In this example screenshot, Episode 3 is selected, so the others are
darker.
<img width="1280" height="771" alt="dim Large"
src="https://github.com/user-attachments/assets/fa21ade4-3345-4e97-873f-d654123a1ae5"
/>

This is a follow up from #158
2025-11-16 21:23:55 -05:00
damontecres
6be2662d4e
Add experimental MPV player backend (#161)
Experimental MPV player backend

Related to #14, #22, & #85

You can switch to MPV in advanced settings and toggle using hardware
decoding or not.

This uses code and buildscripts from
https://github.com/mpv-android/mpv-android, plus other third party
libraries to build MPV
2025-11-16 18:46:25 -05:00
damontecres
d7b333e519
Adjust color & size of the nav drawer (#228)
The navigation drawer now appear more subtle when closed using a neutral
background and dimmer, slightly more compact icons. When open, it looks
much like it did before.

The profile button stays fixed at the top since it is the only
indication for which user & server.

Closes #176

Closed
<img width="1280" height="771" alt="drawer_closed Large"
src="https://github.com/user-attachments/assets/54c154eb-fefe-4029-9af8-a57473f3535e"
/>

Open
<img width="1280" height="771" alt="drawer_open Large"
src="https://github.com/user-attachments/assets/1e0f95a7-e98f-4e96-988a-8b1d97bdd757"
/>
2025-11-15 15:42:26 -05:00
damontecres
93d82a263d
Show extras for Movies & TV Shows (#224)
## Description
Shows local extras (clips, interviews, etc) for movies and tv shows

Extras are grouped by type and clicking on the type will go to a grid
page listing all of the items. However, if there is just one of that
type, it is shown in-line.

Trailers still have on their own row. And theme songs & theme videos are
not shown.

## Issues
Closes #123
2025-11-15 13:25:44 -05:00
damontecres
2f56a3a114
Add a few more sort options (#223)
Adds parental rating, runtime, & play count sorting options

Closes #198
2025-11-14 19:48:47 -05:00
damontecres
72fb732e63
Fix & refactor some image aspect ratios (#222)
Fix image aspect ratios for episode cards that differ from the video's
aspect ratio.

Also use the video's aspect ratio for chapter cards instead of assuming
16x9.

Dev: Create constants for the main ratios used

Fixes #215
2025-11-14 16:13:18 -05:00
Damontecres
00521578d5
Another fix for server/user list 2025-11-14 14:01:20 -05:00
Damontecres
b7dfb2ca5f
Always initialize server/user view models 2025-11-14 13:33:33 -05:00
damontecres
c5a5345f6c
Fix focusing before loading on recommended pages (#220)
Basically now will wait until a row is loaded before sending the focus
request
2025-11-14 11:40:38 -05:00
damontecres
b7cb6efc4f
Dev: Move services into their own package (#214)
Moves service classes into their own files and package for easier
organization and discovery

No user facing changes in the PR
2025-11-13 19:39:37 -05:00
damontecres
76b7a33328
Fix two issues on recommended pages (#213)
Fix an issue where if there are no items for the "Continue Watching"
row, the tab row would disappear

Fix an issue where some rows (eg Recently released, recently added,
suggestions, etc) on the recommended pages might never show up

Fixes #207
2025-11-13 18:40:52 -05:00
damontecres
fe29b0cd88
Show local & remote trailers for TV Shows (#212)
Shows local & remote trailers for TV Shows similar to how its shown for
Movies

Closes #141
2025-11-13 18:31:23 -05:00
Jakub Syty
f61e819a98
Add FLAG_ACTIVITY_NEW_TASK to fix updates for some older devices (#211)
Without this the installation intent is crashing with an error on my
Xiaomi Mi Box S (Android 8.1)
2025-11-13 17:27:20 -05:00
damontecres
19b712d54b
More favorite tabs & add people to favorites (#210)
Adds Video, Playlists, & People tabs to the favorites page

Also adds ability to add people to favorites via context menu or on
their page

Closes #199
2025-11-13 16:12:42 -05:00
Damontecres
655720fc05
Small fix for deleting current server or user 2025-11-13 11:52:52 -05:00
damontecres
5061277fd1
Keep activity tracking alive even after errors (#209)
Previously if the activity tracker got an error from the server during
one of the reports, the timer thread would stop and no further reports
would be sent.

This PR fixes that so it will continue to attempt to send reports since
if playback is continuing without error, the report error is likely
transient. For example, I observed the server returning an error during
its DB optimization scheduled task.

I think this will fix #208
2025-11-13 11:36:57 -05:00
damontecres
58395e9adf
Refactoring switching server or user (#205)
Now when initiating a user or server switch, you can't back out of it
and must select a user/server. This will be useful when PIN code are
implemented down the road.

The app will now disconnect the web socket when backgrounded.

Also lots of internal refactoring
2025-11-12 17:44:16 -05:00
damontecres
2e3e4e3f5f
Add long clicking context menus everywhere (#202)
Adds long click context menus to just about every card throughout the
app. Previously only a few pages had this.

Closes #196
2025-11-12 15:36:36 -05:00
damontecres
5e2c75bb70
Log while navigating around the app (#195)
Just adds some logging while navigating around the app. If an error or
crash occurs and users want to share their logs, this information is
useful to know what page.

Logs are never sent without explicit user content and they are only
shared with the Jellyfin server the app is currently connected to. [See
here for more
details](https://github.com/damontecres/Wholphin/wiki/Gathering-app-logs#privacy)

Also stops theme music when the app is paused similar to #191
2025-11-11 20:10:16 -05:00
Damontecres
5b1c46f0b7
Fix focus on recommended 2025-11-11 15:45:22 -05:00
damontecres
f8a2bb1545
Fix showing home page refreshes (#194)
Fixes the UI not showing that a refresh is in progress
2025-11-11 13:32:01 -05:00
Damontecres
d6c9b236ef
Fix reversed logic 2025-11-10 18:45:31 -05:00
damontecres
fbf77b9376
Better playback lifecycle handling (#191)
Refactors lifecycle event observers

When the app is "paused", aka not actively focused, but still visible
(such as when opening Android TV OS menu), playback will pause.

When the app is "stopped", aka not visible (such as pressing Home
button), playback will stop, report playback progress, and return to the
previous screen.

I think this will fix #181, but I don't have a controller to test with
2025-11-10 17:55:58 -05:00
damontecres
ce8cab0d1f
Home page improvements (#190)
Separates the loading logic into two groups:
1. Continue Watching & Next Up
2. Latest media

The home page displays once the first group is ready and shows
placeholders while the latest media is fetched. This also speeds up
refreshes when returning home after watching an episode.

Also ensure grouped Movie/TV libraries are displayed as Movie/TV
libraries instead of falling back to a generic grid display.

Fixes #189
2025-11-10 13:18:36 -05:00
damontecres
98fc996bd5
Load movie & tv recommendations asynchronously (#183)
Previously all of the rows on the recommended tab for Movies & TV Shows
were loaded sequentially before any results were shown. This is not a
great experience because some of the queries (eg top rated unwatched)
can take a while sometimes.

This PR starts displaying content once the first 1 or 2 rows is loaded
and then shows placeholders while the rest are querying.

Finally the row queries are now mostly independent so if one errors out,
the rest of the rows will still be displayed.

Closes #180
2025-11-09 17:40:47 -05:00
damontecres
0fb1a69556
Fix only loading 100 episode in a season (#187)
Fixes #184

Data was being fetched, but the UI wasn't being properly notified to
display the data.

This PR also adjusts so that "focused episode header" still takes up the
space even if the focused episode hasn't fully loaded yet. This prevents
the UI from jumping up and down.

Also #42 is _not_ fixed by this PR because it is a different issue.
2025-11-09 17:40:13 -05:00
damontecres
5720603447
Add ability to style subtitles (#177)
Adds settings for styling text subtitles such as srt/subrip

## Issues
Closes #11
2025-11-08 19:54:51 -05:00
damontecres
762e8f287d
When scrubbing show position's time even without preview images (#175)
When scrubbing along the seek bar, always show the position's time even
if there is no trickplay/preview image to display.
2025-11-08 09:34:12 -05:00
Damontecres
76a46bfeb7
Fix subtitle search crash 2025-11-07 17:49:24 -05:00
damontecres
44825d0c25
Several UI changes (#171)
## Changes:
- Hopefully finally fixes next up card image issues
- Remove the slider wraparound behavior in settings
- Removes the shadows/blurry effect on movie & person titles
- Adds the official rating to the home page
- Consistently order the official rating on home, movie, & series pages
- Add 1.75x speed for playback
- Don't time out the audio track selection/playback speed/video scale
dialogs


## Issues
Closes #166 
Closes #168
Closes #169
Related to #162
Follow up to #167
2025-11-07 10:51:31 -05:00
damontecres
18556b5058
Bump dependency versions (#170)
Also tries out using assisted injection for item IDs

No user facing changes
2025-11-07 10:09:59 -05:00
damontecres
bdc475e7b6
Fix next up image showing very small (#167)
Fixes #163 

Should fix the next up images rendering very small. Also tweaks some
padding and background for the popup.
2025-11-06 18:58:35 -05:00
damontecres
5d085a3ab4
Show update download progress (#165)
Shows a simple dialog while the app update is downloading to show
progress
2025-11-06 18:15:25 -05:00
Damontecres
0d48fd67cf
Fix clock not updating 2025-11-06 08:41:05 -05:00
damontecres
b6df72c3c9
Optional setting for one click pause w/ d-pad center (#160)
Closes #152 

Adds a setting to enable one-click-pausing via the D-Pad center button.
It is disabled by default.

If enabled, when the video is playing, it will be pause and show the
controls which is just like pressing the Pause or Play/Pause button.

If enable, when the video is paused and controls is not showing, it will
resume playback including using the skip back on resume setting.
2025-11-05 16:35:20 -05:00
damontecres
f12785aaee
Various UI fixes & improvements (#159)
Various fixes:
* Fixes misnamed "Continue watching" home row title
* Fix person page layout to account for the new clock
* Switch the 5 star rating to a decimal & icon

Additionally, the tab row has been rewritten to allow for: 
* Always left justify tab rows
* Always scroll tab rows to ensure the currently selected index is
showing
* Always start focus on currently selected index when entering tab rows
2025-11-05 12:08:45 -05:00
damontecres
77c787b51f
Add settings to show the current time (#155)
Closes #154 

Adds a settings to show the current time in the upper right corner.

If enabled, it will also show the end time for the playback on the
overlay.
2025-11-04 15:27:38 -05:00
damontecres
40a8249469
Support basic adding to playlists (#157)
Closes #143 

Adds option in the "More" menu to add the item to a playlist. Can also
create a playlist if needed.
2025-11-04 15:27:26 -05:00
damontecres
86977f846c
Handle larger TV guide data (#132)
Fixes #110 

Switches loading the EPG/TV Guide data to lazy loading. The app will
load all of the channels, but only keep ~100 channels worth of data in
memory. As the user scrolls up and down, new channel program data will
be fetched as needed.

Eventually this technique can be applied to supporting more than 48
hours of data.

The logic for determine which program to focus on is also simplified and
more of it is delegated to composition.

Credit to @joshjryan for #131 hinting to use a different API endpoint to
avoid 414 errors.
2025-11-04 13:33:32 -05:00
damontecres
13c2bb32d2
Fix favorites not loading (#156)
Fixes bug introduced in #150 that prevented the favorites page from
loading anything

Also remembers the sort for each favorites tab
2025-11-04 13:33:03 -05:00
damontecres
a0b9ac7673
Add option to play item forcing transcoding (#153)
Closes #97 

Adds an option to force an item to play by transcoding. This can be
useful in the few cases where the device reports that it supports direct
play for a file, but it really doesn't.

Also rearranges the "More" dialog list to move picking audio & subtitle
track near the top.
2025-11-03 20:34:46 -05:00