Fixes, read description (#168)

* Fixed episodecells getting stuck sliding

* Enabled device scaling for ipad

not good enough yet, not applied everywhere cuz idk where to apply exactly 💯

* Fixed blur in continue watching cells

* Keyboard controls player

* fixed downloadview buttons

* Reduced tab bar outline opacity

---------

Co-authored-by: cranci <100066266+cranci1@users.noreply.github.com>
This commit is contained in:
50/50 2025-06-10 20:37:54 +02:00 committed by GitHub
parent fd9e68513d
commit 440ec57d59
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 92 additions and 44 deletions

View file

@ -71,6 +71,9 @@
},
"App Data" : {
},
"Are you sure you want to clear all cached data? This will help free up storage space." : {
},
"Are you sure you want to delete '%@'?" : {
@ -90,6 +93,9 @@
},
"Are you sure you want to erase all app data? This action cannot be undone." : {
},
"Are you sure you want to remove all downloaded media files (.mov, .mp4, .pkg)? This action cannot be undone." : {
},
"Are you sure you want to remove all files in the Documents folder? This will remove all modules." : {
@ -112,10 +118,10 @@
"Clear" : {
},
"Clear All Caches" : {
"Clear All Downloads" : {
},
"Clear All Downloads" : {
"Clear Cache" : {
},
"Clear Library Only" : {
@ -138,9 +144,6 @@
},
"cranci1" : {
},
"Current Cache Size" : {
},
"DATA/LOGS" : {
@ -255,6 +258,9 @@
},
"Mark as Watched" : {
},
"Mark watched" : {
},
"Match with AniList" : {
@ -333,9 +339,15 @@
},
"Remove" : {
},
"Remove All Caches" : {
},
"Remove Documents" : {
},
"Remove Downloaded Media" : {
},
"Remove from Bookmarks" : {
@ -348,9 +360,15 @@
},
"Reset AniList ID" : {
},
"Reset progress" : {
},
"Reset Progress" : {
},
"Revert Module Poster" : {
},
"Running Sora %@ - cranci1" : {
@ -372,6 +390,9 @@
},
"Season %lld" : {
},
"Segments Color" : {
},
"Select Module" : {

View file

@ -2701,6 +2701,57 @@ class CustomMediaPlayerViewController: UIViewController, UIGestureRecognizerDele
default: return .white
}
}
override var canBecomeFirstResponder: Bool {
return true
}
override var keyCommands: [UIKeyCommand]? {
return [
UIKeyCommand(input: " ", modifierFlags: [], action: #selector(handleSpaceKey), discoverabilityTitle: "Play/Pause"),
UIKeyCommand(input: UIKeyCommand.inputLeftArrow, modifierFlags: [], action: #selector(handleLeftArrow), discoverabilityTitle: "Seek Backward 10s"),
UIKeyCommand(input: UIKeyCommand.inputRightArrow, modifierFlags: [], action: #selector(handleRightArrow), discoverabilityTitle: "Seek Forward 10s"),
UIKeyCommand(input: UIKeyCommand.inputUpArrow, modifierFlags: [], action: #selector(handleUpArrow), discoverabilityTitle: "Seek Forward 60s"),
UIKeyCommand(input: UIKeyCommand.inputDownArrow, modifierFlags: [], action: #selector(handleDownArrow), discoverabilityTitle: "Seek Backward 60s"),
UIKeyCommand(input: UIKeyCommand.inputEscape, modifierFlags: [], action: #selector(handleEscape), discoverabilityTitle: "Dismiss Player")
]
}
@objc private func handleSpaceKey() {
togglePlayPause()
}
@objc private func handleLeftArrow() {
let skipValue = 10.0
currentTimeVal = max(currentTimeVal - skipValue, 0)
player.seek(to: CMTime(seconds: currentTimeVal, preferredTimescale: 600))
animateButtonRotation(backwardButton, clockwise: false)
}
@objc private func handleRightArrow() {
let skipValue = 10.0
currentTimeVal = min(currentTimeVal + skipValue, duration)
player.seek(to: CMTime(seconds: currentTimeVal, preferredTimescale: 600))
animateButtonRotation(forwardButton)
}
@objc private func handleUpArrow() {
let skipValue = 60.0
currentTimeVal = min(currentTimeVal + skipValue, duration)
player.seek(to: CMTime(seconds: currentTimeVal, preferredTimescale: 600))
animateButtonRotation(forwardButton)
}
@objc private func handleDownArrow() {
let skipValue = 60.0
currentTimeVal = max(currentTimeVal - skipValue, 0)
player.seek(to: CMTime(seconds: currentTimeVal, preferredTimescale: 600))
animateButtonRotation(backwardButton, clockwise: false)
}
@objc private func handleEscape() {
dismiss(animated: true, completion: nil)
}
}
class GradientOverlayButton: UIButton {

View file

@ -90,7 +90,7 @@ struct TabBar: View {
.stroke(
LinearGradient(
gradient: Gradient(stops: [
.init(color: Color.accentColor.opacity(gradientOpacity), location: 0),
.init(color: Color.accentColor.opacity(0.25), location: 0),
.init(color: Color.accentColor.opacity(0), location: 1)
]),
startPoint: .top,

View file

@ -293,29 +293,15 @@ struct CustomDownloadHeader: View {
Image(systemName: isSearchActive ? "xmark.circle.fill" : "magnifyingglass")
.resizable()
.scaledToFit()
.frame(width: 24, height: 24)
.frame(width: 18, height: 18)
.foregroundColor(.accentColor)
.padding(6)
.padding(10)
.background(
Circle()
.fill(Color.gray.opacity(0.2))
.shadow(color: .accentColor.opacity(0.2), radius: 2)
)
.overlay(
Circle()
.stroke(
LinearGradient(
gradient: Gradient(stops: [
.init(color: Color.accentColor.opacity(0.25), location: 0),
.init(color: Color.accentColor.opacity(0), location: 1)
]),
startPoint: .top,
endPoint: .bottom
),
lineWidth: 0.5
)
.frame(width: 32, height: 32)
)
.circularGradientOutline()
}
if showSortMenu {
@ -336,28 +322,15 @@ struct CustomDownloadHeader: View {
Image(systemName: "arrow.up.arrow.down")
.resizable()
.scaledToFit()
.frame(width: 24, height: 24)
.frame(width: 18, height: 18)
.foregroundColor(.accentColor)
.padding(6)
.padding(10)
.background(
Circle()
.fill(Color.gray.opacity(0.2))
.shadow(color: .accentColor.opacity(0.2), radius: 2)
)
.overlay(
Circle()
.stroke(
LinearGradient(
gradient: Gradient(stops: [
.init(color: Color.accentColor.opacity(0.25), location: 0),
.init(color: Color.accentColor.opacity(0), location: 1)
]),
startPoint: .top,
endPoint: .bottom
),
lineWidth: 0.5
)
)
.circularGradientOutline()
}
}
}
@ -370,8 +343,10 @@ struct CustomDownloadHeader: View {
HStack(spacing: 12) {
HStack(spacing: 12) {
Image(systemName: "magnifyingglass")
.resizable()
.scaledToFit()
.frame(width: 18, height: 18)
.foregroundColor(.secondary)
.font(.body)
TextField("Search downloads", text: $searchText)
.textFieldStyle(PlainTextFieldStyle())
@ -382,8 +357,10 @@ struct CustomDownloadHeader: View {
searchText = ""
}) {
Image(systemName: "xmark.circle.fill")
.resizable()
.scaledToFit()
.frame(width: 18, height: 18)
.foregroundColor(.secondary)
.font(.body)
}
}
}

View file

@ -303,8 +303,6 @@ struct ContinueWatchingCell: View {
}
.overlay(
ZStack {
ProgressiveBlurView()
.cornerRadius(10, corners: [.bottomLeft, .bottomRight])
VStack(alignment: .leading, spacing: 4) {
Spacer()

View file

@ -1,4 +1,5 @@
{
"originHash" : "e12f82ce5205016ea66a114308acd41450cfe950ccb1aacfe0e26181d2036fa4",
"pins" : [
{
"identity" : "drops",
@ -28,5 +29,5 @@
}
}
],
"version" : 2
"version" : 3
}