mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Fix audio rate tooltips
This commit is contained in:
parent
d754df2b1a
commit
4f5e7548d9
@ -490,6 +490,7 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, UIScrollVi
|
||||
}
|
||||
|
||||
@objc public func rateButtonPressed() {
|
||||
var changeType: MediaNavigationAccessoryPanel.ChangeType = .preset
|
||||
let nextRate: AudioPlaybackRate
|
||||
if let rate = self.playbackBaseRate {
|
||||
switch rate {
|
||||
@ -511,11 +512,12 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, UIScrollVi
|
||||
} else {
|
||||
nextRate = .x1
|
||||
}
|
||||
changeType = .sliderCommit(rate.doubleValue, nextRate.doubleValue)
|
||||
}
|
||||
} else {
|
||||
nextRate = .x1_5
|
||||
}
|
||||
self.setRate?(nextRate, .preset)
|
||||
self.setRate?(nextRate, changeType)
|
||||
|
||||
let frame = self.rateButton.view.convert(self.rateButton.bounds, to: nil)
|
||||
|
||||
@ -542,6 +544,7 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, UIScrollVi
|
||||
private func contextMenuSpeedItems(scheduleTooltip: @escaping (MediaNavigationAccessoryPanel.ChangeType?) -> Void) -> Signal<ContextController.Items, NoError> {
|
||||
var presetItems: [ContextMenuItem] = []
|
||||
|
||||
let previousRate = self.playbackBaseRate
|
||||
let previousValue = self.playbackBaseRate?.doubleValue ?? 1.0
|
||||
let sliderValuePromise = ValuePromise<Double?>(nil)
|
||||
let sliderItem: ContextMenuItem = .custom(SliderContextItem(minValue: 0.2, maxValue: 2.5, value: previousValue, valueChanged: { [weak self] newValue, finished in
|
||||
@ -567,7 +570,11 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, UIScrollVi
|
||||
scheduleTooltip(nil)
|
||||
f(.default)
|
||||
|
||||
self?.setRate?(rate, .preset)
|
||||
if let previousRate, previousRate.isPreset {
|
||||
self?.setRate?(rate, .preset)
|
||||
} else {
|
||||
self?.setRate?(rate, .sliderCommit(previousValue, rate.doubleValue))
|
||||
}
|
||||
})))
|
||||
}
|
||||
|
||||
|
@ -1045,6 +1045,7 @@ final class OverlayPlayerControlsNode: ASDisplayNode {
|
||||
private func contextMenuSpeedItems(scheduleTooltip: @escaping (MediaNavigationAccessoryPanel.ChangeType?) -> Void) -> Signal<ContextController.Items, NoError> {
|
||||
var presetItems: [ContextMenuItem] = []
|
||||
|
||||
let previousRate = self.currentRate
|
||||
let previousValue = self.currentRate?.doubleValue ?? 1.0
|
||||
let sliderValuePromise = ValuePromise<Double?>(nil)
|
||||
let sliderItem: ContextMenuItem = .custom(SliderContextItem(minValue: 0.2, maxValue: 2.5, value: previousValue, valueChanged: { [weak self] newValue, finished in
|
||||
@ -1071,7 +1072,11 @@ final class OverlayPlayerControlsNode: ASDisplayNode {
|
||||
f(.default)
|
||||
|
||||
self?.control?(.setBaseRate(rate))
|
||||
self?.presentAudioRateTooltip(baseRate: rate, changeType: .preset)
|
||||
if let previousRate, previousRate.isPreset {
|
||||
self?.presentAudioRateTooltip(baseRate: rate, changeType: .preset)
|
||||
} else {
|
||||
self?.presentAudioRateTooltip(baseRate: rate, changeType: .sliderCommit(previousValue, rate.doubleValue))
|
||||
}
|
||||
})))
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,15 @@ public enum AudioPlaybackRate: Equatable {
|
||||
case x16
|
||||
case custom(Int32)
|
||||
|
||||
public var isPreset: Bool {
|
||||
switch self {
|
||||
case .x1, .x1_5, .x2:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
public var doubleValue: Double {
|
||||
return Double(self.rawValue) / 1000.0
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user