Commit Graph

103 Commits

Author SHA1 Message Date
Arkadiusz Fal
5758417293 Fix SwiftLint and SwiftFormat violations
- Run SwiftFormat to fix indentation, spacing, and formatting issues
- Replace CGFloat with Double and NSRect with CGRect per style guide
- Remove redundant .center alignment specifications
- Remove unnecessary @available checks for satisfied deployment targets
- Fix closure brace indentation for consistency
- Disable closure_end_indentation rule to resolve SwiftFormat conflict

All linting checks now pass with zero errors and warnings.
2025-11-15 19:42:37 +01:00
Arkadiusz Fal
7812fc6a8d Add horizontal padding to player controls in non-fullscreen iPad windows
When the iPad window is resized (not fullscreen), player controls now have 10px horizontal padding from the edges for better spacing and visual comfort.
2025-11-15 11:39:14 +01:00
Arkadiusz Fal
ccdfdf781d Add window fullscreen detection and improve iPad controls spacing
Adds fullscreen detection utility to Constants.swift to determine if the window occupies the full screen on iOS. Uses this to conditionally add leading padding to player controls on iPad in non-fullscreen windows, preventing overlap with system window controls.
2025-11-15 00:04:30 +01:00
Arkadiusz Fal
2ca08c8af5 Hide orientation lock controls on iPad
The orientation lock feature is not applicable on iPad devices, so the lock orientation button and settings are now hidden when running on iPad.
2025-11-14 23:08:11 +01:00
Arkadiusz Fal
8f97c40257 Refactor player controls and improve custom controls visibility
Restructured PlayerControls view hierarchy by extracting controls content into a separate computed property for better code organization. Added shouldShowCustomControls property to VideoPlayerView to properly determine when custom controls should be shown vs system controls. Updated hover logic to only show/hide custom controls when appropriate.
2025-11-14 18:58:28 +01:00
Arkadiusz Fal
e3ac11c172 Merge pull request #786 from stonerl/simplified-fullscreen-and-orientation
iOS: Simplified fullscreen and orientation
2024-09-05 22:59:54 +02:00
Toni Förster
322a550666 simplified fullscreen and orientation handling
- iPad: rotate to device orientation on startup
- fixed controls in portrait fullscreen
- iOS: don’t call setNeedsDrawing multiple times
- On iOS we call set needs drawing only once.
- Added cooldown time to MPV.Client setNeedsDrawing to avoid multiple successive calls
- make fullscreen animation smoother
- dragGesture now calls toggleFullScreenAction
- fix tvOS and macOS build

Signed-off-by: Toni Förster <toni.foerster@gmail.com>
2024-09-05 18:17:14 +02:00
Toni Förster
5313e4ead0 player controls: add background opacity selection
Signed-off-by: Toni Förster <toni.foerster@gmail.com>
2024-09-05 15:14:39 +02:00
Toni Förster
d56ef74a99 fix picture in picture
Signed-off-by: Toni Förster <toni.foerster@gmail.com>
2024-09-03 21:17:20 +02:00
Toni Förster
1cb695848c make thumbnail fill the view in music mode
Signed-off-by: Toni Förster <toni.foerster@gmail.com>
2024-08-30 03:43:00 +02:00
Toni Förster
35534bcbb1 Improved thumbnail handling
- ThumbnailsModel optionally returns the quality
- Have constants for 4:3 and 16:9 aspect ratio
- Add high quality options for thumbnails
- Rename Highest quality to Best quality
- make 4:3 thumbnails fill the VideoCell
- use .maxes instead of .maxresdefault (the latter sometimes returns white images)

Signed-off-by: Toni Förster <toni.foerster@gmail.com>
2024-08-19 16:35:29 +02:00
Arkadiusz Fal
3fd99f464a Revert change to OSD positions 2024-07-06 13:44:40 +02:00
Toni Förster
6eba2a45c8 Conditional proxying
I added a new feature. When instances are not proxied, Yattee first checks the URL to make sure it is not a restricted video. Usually, music videos and sports content can only be played back by the same IP address that requested the URL in the first place. That is why some videos do not play when the proxy is disabled.

This approach has multiple advantages. First and foremost, It reduced the load on Invidious/Piped instances, since users can now directly access the videos without going through the instance, which might be severely bandwidth limited. Secondly, users don't need to manually turn on the proxy when they want to watch IP address bound content, since Yattee automatically proxies such content.

Furthermore, adding the proxy option allows mitigating some severe playback issues with invidious instances. Invidious by default returns proxied URLs for videos, and due to some bug in the Invidious proxy, scrubbing or continuing playback at a random timestamp can lead to severe wait times for the users.

This should fix numerous playback issues: #666, #626, #590, #585, #498, #457, #400
2024-05-16 19:35:31 +02:00
Arkadiusz Fal
94915b0496 Revert "Drop iOS 14 and macOS 11 support"
This reverts commit dcef7f47ff.
2023-10-15 13:35:23 +02:00
Arkadiusz Fal
dcef7f47ff Drop iOS 14 and macOS 11 support 2023-07-24 19:45:30 +02:00
Arkadiusz Fal
e827b97cd5 Fix lint issues 2023-07-24 19:45:30 +02:00
Arkadiusz Fal
2583be9401 Fix music mode controls 2023-05-25 18:36:03 +02:00
Arkadiusz Fal
c6798be167 Show stream opening status with AVPlayer 2023-05-21 19:13:42 +02:00
Arkadiusz Fal
f67b1d4feb Improve orientation and safe area handling
Fix #369
Fix #382
2023-05-21 19:13:42 +02:00
Arkadiusz Fal
f45001da78 Codestyle fixes 2023-05-07 22:06:50 +02:00
Arkadiusz Fal
8f9fb7ba82 New actions buttons 2023-04-22 23:39:42 +02:00
Arkadiusz Fal
a7763c5802 Fix controls buttons settings 2023-04-22 23:10:28 +02:00
Arkadiusz Fal
28f346dee2 Remove Watch Next 2023-04-22 23:10:27 +02:00
Arkadiusz Fal
8ef016d792 Minor performance improvement 2023-04-22 23:10:27 +02:00
Arkadiusz Fal
809bcd183a New playback settings sheet 2023-02-05 14:24:16 +01:00
Arkadiusz Fal
ce9c3fbd74 Fix gradient 2023-02-05 14:24:15 +01:00
Arkadiusz Fal
d80929bd88 Player controls settings 2023-02-05 14:24:15 +01:00
Arkadiusz Fal
8631389b8f Seek settings 2023-02-05 14:24:15 +01:00
Arkadiusz Fal
3de18da7a7 Controls gradient 2023-02-05 14:24:14 +01:00
Arkadiusz Fal
39fc23c5dc Watch Next behavior and settings 2023-02-05 14:24:14 +01:00
Arkadiusz Fal
ba1ec7c559 Player layout changes 2023-02-05 14:24:14 +01:00
Arkadiusz Fal
eca685ae29 Watch next view 2023-02-05 14:24:14 +01:00
Arkadiusz Fal
fcf527fa87 Player bar visibility modes and settings 2023-02-05 14:24:13 +01:00
Arkadiusz Fal
037d3a0481 Add channels thumbnails to cells and list 2023-02-05 14:24:11 +01:00
Arkadiusz Fal
909f035399 Minor controls changes 2022-12-05 10:13:19 +01:00
Arkadiusz Fal
53620c4d35 Fix default alignment swiftlint offense 2022-12-05 10:13:19 +01:00
Arkadiusz Fal
0d333b5583 Replace environment objects with observed objects 2022-12-05 10:13:19 +01:00
Arkadiusz Fal
09de2cbbab Add overlay model visibility methods 2022-12-04 13:32:27 +01:00
Arkadiusz Fal
4ee1383f3a New video details 2022-12-04 13:32:26 +01:00
Arkadiusz Fal
80d8d66986 Local videos fixes 2022-12-04 13:32:24 +01:00
Arkadiusz Fal
99e20f54a2 Attempt to fix orientation lock on iOS 16 2022-12-04 13:32:24 +01:00
Arkadiusz Fal
4d94126abd Load images with low priority 2022-12-04 13:32:22 +01:00
Arkadiusz Fal
a086a0f440 Use Swift 5.7 if-let style 2022-10-27 18:03:57 +02:00
Arkadiusz Fal
1c926f276b Use WebImage fix 2022-10-27 18:03:57 +02:00
Arkadiusz Fal
b94dc08b68 Revert "Add CachedAsyncImage"
This reverts commit 50c77325f6.
2022-10-27 18:03:57 +02:00
Arkadiusz Fal
f607e6e276 Model improvements 2022-10-27 18:03:57 +02:00
Arkadiusz Fal
418dae9dbe Add CachedAsyncImage 2022-10-27 18:03:57 +02:00
Arkadiusz Fal
b8380b2528 Minor fixes 2022-10-27 18:03:57 +02:00
Arkadiusz Fal
0d3ccc00ce Model improvements 2022-10-27 18:03:57 +02:00
Arkadiusz Fal
e444dc3c79 Improve seek gesture 2022-10-27 18:03:57 +02:00