Commit graph

1032 commits

Author SHA1 Message Date
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
damontecres
2840fa3f2a
Extract strings into resources (#151)
Move all strings into resource files to make future translating easier

No user facing changes in this PR
2025-11-03 15:38:12 -05:00
damontecres
40267be633
Remember library/collection sorting (#150)
Closes #148 
Closes #83

Remember the chosen sort order & direction per user profile on device.
Also adds a few more sort options.

This is only saved on the device and not saved/loaded from the server.
2025-11-03 12:15:41 -05:00
damontecres
08577b8a31
Play theme song for movies (#149)
Closes #133 
Fixes #142 

Theme songs will play for both TV shows and movies, if available. Also,
if there are multiple theme songs, one will be picked randomly instead
of always playing the first.

Additionally, the music now waits to start until the UI has loaded.
2025-11-03 11:50:47 -05:00
damontecres
78322ab0a5
Fix deserialization error during login (#145)
Fixes #144 

The error was occurring when querying for server information. The
endpoint used returns information about previous installations and seems
some may be missing a field marked as required in the API. This causes
the deserialization error.

Since the query is just to get the server's name for the UI, we can use
the public server info endpoint instead and also wrap it in a try-catch
since it's not absolutely required.

Additionally, this PR adds exceptions for cases when necessary
information is not available (user id, access token, etc).
2025-11-02 17:28:18 -05:00
damontecres
fe0f96d413
Revert nav drawer on focus #127 (#140)
Temporarily reverts #127 and reopens #95

It needs more refinement.
2025-11-02 17:06:06 -05:00
damontecres
d76f829804
Option to show next up during credits/outros (#130)
Adds an option to the show the next up during the end credits (outro)
instead of at the very end of the video.

The next up pushes up from the bottom and the video scales down to fit
above.

Still a WIP though

### Sample screenshot
<img width="1280" height="771" alt="next_up_credits Large"
src="https://github.com/user-attachments/assets/9a03d0ec-325d-4efe-a28e-51270ddaaa89"
/>
2025-11-02 10:51:59 -05:00
damontecres
715dc1abda
Fix network on main during letter position lookups (#136)
Maybe fixes #135

Yet another network-on-main exception fix.
2025-11-01 19:25:19 -04:00
damontecres
efde6deb58
Adjust audio index when downloading subtitles (#129)
If the user has picked a specific audio track, then downloads a new
external subtitle, the audio track index must be adjusted (add 1) to
account for the shift in track indices.

This is because external subtitles are always indexed first.
2025-10-31 22:20:00 -04:00
damontecres
9f3691fd1b
Optional to automatically go to new page on focus instead of clicking (#127)
Closes #95 

Adds a setting (defaults to enabled) to automatically go to a page when
the navigation drawer item is focused after a brief delay.

Basically, if you open the left nav drawer, and scroll down to "Movies"
after a brief delay (600ms), the app will switch to the Movies page
without having to click.

It can be disabled in advanced settings.
2025-10-31 15:09:13 -04:00
Damontecres
26cc092402
Enable subtitles button when no subtitle tracks 2025-10-31 14:37:30 -04:00
damontecres
e9e5aee01c
Follow up to #122 for selecting subtitles tracks (#124)
Handles selecting subtitle tracks when transcoding now too

Also fixes the adjustment if there's many external subtitles
2025-10-31 13:56:42 -04:00
damontecres
1508fa1ea3
Show file details in overview dialog (#126)
When clicking the overview for an item, the dialog now shows details
about each file/media source including video, audio, & subtitle
information.

It only shows the full file path if the user is an administrator.
2025-10-31 12:27:30 -04:00
damontecres
799255814f
Fix selecting subtitle tracks (#122)
Fixes subtitle track selection especially when there is a mix of
embedded & external subtitles

Fixes #116
2025-10-30 22:37:28 -04:00