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