mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-14 13:17:08 +02:00
Fix menu in case speed isn't controlled.
This commit is contained in:
parent
cbd2b8f428
commit
4d2cda0692
3 changed files with 43 additions and 21 deletions
|
@ -740,9 +740,10 @@ SpeedController::SpeedController(
|
|||
current->otherEnter();
|
||||
}
|
||||
});
|
||||
|
||||
setSpeed(_lookup(false));
|
||||
_speed = _lookup(true);
|
||||
if (const auto lookup = _lookup) {
|
||||
setSpeed(lookup(false));
|
||||
_speed = lookup(true);
|
||||
}
|
||||
}
|
||||
|
||||
rpl::producer<> SpeedController::saved() const {
|
||||
|
@ -778,7 +779,9 @@ void SpeedController::setSpeed(float64 newSpeed) {
|
|||
}
|
||||
|
||||
void SpeedController::save() {
|
||||
_change(speed());
|
||||
if (const auto change = _change) {
|
||||
change(speed());
|
||||
}
|
||||
_saved.fire({});
|
||||
}
|
||||
|
||||
|
@ -788,26 +791,33 @@ void SpeedController::setQuality(int quality) {
|
|||
}
|
||||
|
||||
void SpeedController::fillMenu(not_null<Ui::DropdownMenu*> menu) {
|
||||
FillSpeedMenu(
|
||||
menu->menu(),
|
||||
_st.menu,
|
||||
_speedChanged.events_starting_with(speed()),
|
||||
[=](float64 speed) { setSpeed(speed); save(); },
|
||||
!_qualities.empty());
|
||||
if (_lookup) {
|
||||
FillSpeedMenu(
|
||||
menu->menu(),
|
||||
_st.menu,
|
||||
_speedChanged.events_starting_with(speed()),
|
||||
[=](float64 speed) { setSpeed(speed); save(); },
|
||||
!_qualities.empty());
|
||||
}
|
||||
if (_qualities.empty()) {
|
||||
return;
|
||||
}
|
||||
_quality = _lookupQuality();
|
||||
const auto raw = menu->menu();
|
||||
const auto &st = _st.menu;
|
||||
raw->addSeparator(&st.dropdown.menu.separator);
|
||||
if (_lookup) {
|
||||
raw->addSeparator(&st.dropdown.menu.separator);
|
||||
}
|
||||
|
||||
const auto add = [&](int quality) {
|
||||
const auto text = quality ? u"%1p"_q.arg(quality) : u"Original"_q;
|
||||
auto action = base::make_unique_q<Ui::Menu::Action>(
|
||||
raw,
|
||||
st.qualityMenu,
|
||||
Ui::Menu::CreateAction(raw, text, [=] { _changeQuality(quality); }),
|
||||
Ui::Menu::CreateAction(
|
||||
raw,
|
||||
text,
|
||||
[=] { _changeQuality(quality); }),
|
||||
nullptr,
|
||||
nullptr);
|
||||
const auto raw = action.get();
|
||||
|
|
|
@ -29,13 +29,14 @@ PlaybackControls::PlaybackControls(
|
|||
not_null<Delegate*> delegate)
|
||||
: RpWidget(parent)
|
||||
, _delegate(delegate)
|
||||
, _speedControllable(Media::Audio::SupportsSpeedControl())
|
||||
, _qualitiesList(_delegate->playbackControlsQualities())
|
||||
, _playPauseResume(this, st::mediaviewPlayButton)
|
||||
, _playbackSlider(this, st::mediaviewPlayback)
|
||||
, _playbackProgress(std::make_unique<PlaybackProgress>())
|
||||
, _volumeToggle(this, st::mediaviewVolumeToggle)
|
||||
, _volumeController(this, st::mediaviewPlayback)
|
||||
, _speedToggle((Media::Audio::SupportsSpeedControl()
|
||||
|| !_delegate->playbackControlsQualities().empty())
|
||||
, _speedToggle((_speedControllable || !_qualitiesList.empty())
|
||||
? object_ptr<Player::SettingsButton>(this, st::mediaviewSpeedButton)
|
||||
: nullptr)
|
||||
, _fullScreenToggle(this, st::mediaviewFullScreenButton)
|
||||
|
@ -48,9 +49,15 @@ PlaybackControls::PlaybackControls(
|
|||
_speedToggle->st(),
|
||||
parent,
|
||||
[=](bool) {},
|
||||
[=](bool lastNonDefault) { return speedLookup(lastNonDefault); },
|
||||
[=](float64 speed) { saveSpeed(speed); },
|
||||
_delegate->playbackControlsQualities(),
|
||||
(_speedControllable
|
||||
? [=](bool lastNonDefault) {
|
||||
return speedLookup(lastNonDefault);
|
||||
}
|
||||
: Fn<float64(bool)>()),
|
||||
(_speedControllable
|
||||
? [=](float64 speed) { saveSpeed(speed); }
|
||||
: Fn<void(float64)>()),
|
||||
_qualitiesList,
|
||||
[=] { return _delegate->playbackControlsCurrentQuality(); },
|
||||
[=](int quality) { saveQuality(quality); })
|
||||
: nullptr)
|
||||
|
@ -63,10 +70,12 @@ PlaybackControls::PlaybackControls(
|
|||
fadeUpdated(opacity);
|
||||
});
|
||||
|
||||
_speedController->menuToggledValue(
|
||||
) | rpl::start_with_next([=](bool toggled) {
|
||||
_speedToggle->setActive(toggled);
|
||||
}, _speedToggle->lifetime());
|
||||
if (const auto controller = _speedController.get()) {
|
||||
controller->menuToggledValue(
|
||||
) | rpl::start_with_next([=](bool toggled) {
|
||||
_speedToggle->setActive(toggled);
|
||||
}, _speedToggle->lifetime());
|
||||
}
|
||||
|
||||
_pictureInPicture->addClickHandler([=] {
|
||||
_delegate->playbackControlsToPictureInPicture();
|
||||
|
|
|
@ -98,6 +98,9 @@ private:
|
|||
|
||||
const not_null<Delegate*> _delegate;
|
||||
|
||||
bool _speedControllable = false;
|
||||
std::vector<int> _qualitiesList;
|
||||
|
||||
bool _inFullScreen = false;
|
||||
bool _showPause = false;
|
||||
bool _childrenHidden = false;
|
||||
|
|
Loading…
Add table
Reference in a new issue