mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 01:10:09 +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() {
|
@objc public func rateButtonPressed() {
|
||||||
|
var changeType: MediaNavigationAccessoryPanel.ChangeType = .preset
|
||||||
let nextRate: AudioPlaybackRate
|
let nextRate: AudioPlaybackRate
|
||||||
if let rate = self.playbackBaseRate {
|
if let rate = self.playbackBaseRate {
|
||||||
switch rate {
|
switch rate {
|
||||||
@ -511,11 +512,12 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, UIScrollVi
|
|||||||
} else {
|
} else {
|
||||||
nextRate = .x1
|
nextRate = .x1
|
||||||
}
|
}
|
||||||
|
changeType = .sliderCommit(rate.doubleValue, nextRate.doubleValue)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nextRate = .x1_5
|
nextRate = .x1_5
|
||||||
}
|
}
|
||||||
self.setRate?(nextRate, .preset)
|
self.setRate?(nextRate, changeType)
|
||||||
|
|
||||||
let frame = self.rateButton.view.convert(self.rateButton.bounds, to: nil)
|
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> {
|
private func contextMenuSpeedItems(scheduleTooltip: @escaping (MediaNavigationAccessoryPanel.ChangeType?) -> Void) -> Signal<ContextController.Items, NoError> {
|
||||||
var presetItems: [ContextMenuItem] = []
|
var presetItems: [ContextMenuItem] = []
|
||||||
|
|
||||||
|
let previousRate = self.playbackBaseRate
|
||||||
let previousValue = self.playbackBaseRate?.doubleValue ?? 1.0
|
let previousValue = self.playbackBaseRate?.doubleValue ?? 1.0
|
||||||
let sliderValuePromise = ValuePromise<Double?>(nil)
|
let sliderValuePromise = ValuePromise<Double?>(nil)
|
||||||
let sliderItem: ContextMenuItem = .custom(SliderContextItem(minValue: 0.2, maxValue: 2.5, value: previousValue, valueChanged: { [weak self] newValue, finished in
|
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)
|
scheduleTooltip(nil)
|
||||||
f(.default)
|
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> {
|
private func contextMenuSpeedItems(scheduleTooltip: @escaping (MediaNavigationAccessoryPanel.ChangeType?) -> Void) -> Signal<ContextController.Items, NoError> {
|
||||||
var presetItems: [ContextMenuItem] = []
|
var presetItems: [ContextMenuItem] = []
|
||||||
|
|
||||||
|
let previousRate = self.currentRate
|
||||||
let previousValue = self.currentRate?.doubleValue ?? 1.0
|
let previousValue = self.currentRate?.doubleValue ?? 1.0
|
||||||
let sliderValuePromise = ValuePromise<Double?>(nil)
|
let sliderValuePromise = ValuePromise<Double?>(nil)
|
||||||
let sliderItem: ContextMenuItem = .custom(SliderContextItem(minValue: 0.2, maxValue: 2.5, value: previousValue, valueChanged: { [weak self] newValue, finished in
|
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)
|
f(.default)
|
||||||
|
|
||||||
self?.control?(.setBaseRate(rate))
|
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 x16
|
||||||
case custom(Int32)
|
case custom(Int32)
|
||||||
|
|
||||||
|
public var isPreset: Bool {
|
||||||
|
switch self {
|
||||||
|
case .x1, .x1_5, .x2:
|
||||||
|
return true
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public var doubleValue: Double {
|
public var doubleValue: Double {
|
||||||
return Double(self.rawValue) / 1000.0
|
return Double(self.rawValue) / 1000.0
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user