Moved common GroupCall structs to separate file.
This commit is contained in:
parent
36ad24bfcd
commit
827c950468
|
@ -269,6 +269,7 @@ PRIVATE
|
|||
calls/calls_call.h
|
||||
calls/calls_group_call.cpp
|
||||
calls/calls_group_call.h
|
||||
calls/calls_group_common.h
|
||||
calls/calls_group_members.cpp
|
||||
calls/calls_group_members.h
|
||||
calls/calls_group_panel.cpp
|
||||
|
|
|
@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
*/
|
||||
#include "calls/calls_group_call.h"
|
||||
|
||||
#include "calls/calls_group_common.h"
|
||||
#include "main/main_session.h"
|
||||
#include "api/api_send_progress.h"
|
||||
#include "apiwrap.h"
|
||||
|
@ -263,14 +264,14 @@ void GroupCall::join(const MTPInputGroupCall &inputCall) {
|
|||
const auto &was = update.was;
|
||||
const auto volumeChanged = was
|
||||
? (was->volume != now.volume || was->mutedByMe != now.mutedByMe)
|
||||
: (now.volume != Data::GroupCall::kDefaultVolume || now.mutedByMe);
|
||||
: (now.volume != Group::kDefaultVolume || now.mutedByMe);
|
||||
if (volumeChanged) {
|
||||
_instance->setVolume(
|
||||
now.ssrc,
|
||||
(now.mutedByMe
|
||||
? 0.
|
||||
: (now.volume
|
||||
/ float64(Data::GroupCall::kDefaultVolume))));
|
||||
/ float64(Group::kDefaultVolume))));
|
||||
}
|
||||
}
|
||||
}, _lifetime);
|
||||
|
@ -392,7 +393,7 @@ void GroupCall::applySelfInCallLocally() {
|
|||
MTP_int(date),
|
||||
MTP_int(lastActive),
|
||||
MTP_int(_mySsrc),
|
||||
MTP_int(10000))), // volume
|
||||
MTP_int(Group::kDefaultVolume))), // volume
|
||||
MTP_int(0)).c_updateGroupCallParticipants());
|
||||
}
|
||||
|
||||
|
@ -689,14 +690,13 @@ void GroupCall::updateInstanceVolumes() {
|
|||
const auto &participants = real->participants();
|
||||
for (const auto &participant : participants) {
|
||||
const auto setVolume = participant.mutedByMe
|
||||
|| (participant.volume != Data::GroupCall::kDefaultVolume);
|
||||
|| (participant.volume != Group::kDefaultVolume);
|
||||
if (setVolume && participant.ssrc) {
|
||||
_instance->setVolume(
|
||||
participant.ssrc,
|
||||
(participant.mutedByMe
|
||||
? 0.
|
||||
: (participant.volume
|
||||
/ float64(Data::GroupCall::kDefaultVolume))));
|
||||
: (participant.volume / float64(Group::kDefaultVolume))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -896,7 +896,7 @@ void GroupCall::editParticipant(
|
|||
MTP_flags(flags),
|
||||
inputCall(),
|
||||
user->inputUser,
|
||||
MTP_int(std::clamp(volume.value_or(0), 1, 20000))
|
||||
MTP_int(std::clamp(volume.value_or(0), 1, Group::kMaxVolume))
|
||||
)).done([=](const MTPUpdates &result) {
|
||||
_peer->session().api().applyUpdates(result);
|
||||
}).fail([=](const RPCError &error) {
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop application for the Telegram messaging service.
|
||||
|
||||
For license and copyright information please follow this link:
|
||||
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
class UserData;
|
||||
|
||||
namespace Calls::Group {
|
||||
|
||||
constexpr auto kDefaultVolume = 10000;
|
||||
constexpr auto kMaxVolume = 20000;
|
||||
|
||||
struct MuteRequest {
|
||||
not_null<UserData*> user;
|
||||
bool mute = false;
|
||||
};
|
||||
struct VolumeRequest {
|
||||
not_null<UserData*> user;
|
||||
int volume = kDefaultVolume;
|
||||
bool finalized = true;
|
||||
};
|
||||
|
||||
} // namespace Calls::Group
|
|
@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "calls/calls_group_members.h"
|
||||
|
||||
#include "calls/calls_group_call.h"
|
||||
#include "calls/calls_group_common.h"
|
||||
#include "data/data_channel.h"
|
||||
#include "data/data_chat.h"
|
||||
#include "data/data_user.h"
|
||||
|
@ -196,7 +197,7 @@ private:
|
|||
Ui::Animations::Simple _mutedAnimation; // For gray/red icon.
|
||||
Ui::Animations::Simple _activeAnimation; // For icon cross animation.
|
||||
uint32 _ssrc = 0;
|
||||
int _volume = Data::GroupCall::kDefaultVolume;
|
||||
int _volume = Group::kDefaultVolume;
|
||||
bool _sounding = false;
|
||||
bool _speaking = false;
|
||||
bool _skipLevelUpdate = false;
|
||||
|
@ -213,8 +214,8 @@ public:
|
|||
not_null<QWidget*> menuParent);
|
||||
~MembersController();
|
||||
|
||||
using MuteRequest = GroupMembers::MuteRequest;
|
||||
using VolumeRequest = GroupMembers::VolumeRequest;
|
||||
using MuteRequest = Group::MuteRequest;
|
||||
using VolumeRequest = Group::VolumeRequest;
|
||||
|
||||
Main::Session &session() const override;
|
||||
void prepare() override;
|
||||
|
@ -318,7 +319,7 @@ void Row::updateState(const Data::GroupCall::Participant *participant) {
|
|||
setSsrc(participant ? participant->ssrc : 0);
|
||||
setVolume(participant
|
||||
? participant->volume
|
||||
: Data::GroupCall::kDefaultVolume);
|
||||
: Group::kDefaultVolume);
|
||||
if (!participant) {
|
||||
setState(State::Invited);
|
||||
setSounding(false);
|
||||
|
@ -1160,15 +1161,15 @@ base::unique_qptr<Ui::PopupMenu> MembersController::createRowContextMenu(
|
|||
? (muteState == Row::State::Active)
|
||||
: (muteState != Row::State::Muted);
|
||||
const auto toggleMute = crl::guard(this, [=] {
|
||||
_toggleMuteRequests.fire(MuteRequest{
|
||||
_toggleMuteRequests.fire(Group::MuteRequest{
|
||||
.user = user,
|
||||
.mute = mute,
|
||||
});
|
||||
});
|
||||
const auto changeVolume = crl::guard(this, [=](int volume) {
|
||||
_changeVolumeRequests.fire(VolumeRequest{
|
||||
_changeVolumeRequests.fire(Group::VolumeRequest{
|
||||
.user = user,
|
||||
.volume = std::clamp(volume, 1, 20000),
|
||||
.volume = std::clamp(volume, 1, Group::kMaxVolume),
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1303,8 +1304,6 @@ std::unique_ptr<Row> MembersController::createInvitedRow(
|
|||
} // namespace
|
||||
|
||||
|
||||
const int GroupMembers::kDefaultVolume = Data::GroupCall::kDefaultVolume;
|
||||
|
||||
GroupMembers::GroupMembers(
|
||||
not_null<QWidget*> parent,
|
||||
not_null<GroupCall*> call)
|
||||
|
@ -1320,13 +1319,13 @@ GroupMembers::GroupMembers(
|
|||
}
|
||||
|
||||
auto GroupMembers::toggleMuteRequests() const
|
||||
-> rpl::producer<GroupMembers::MuteRequest> {
|
||||
-> rpl::producer<Group::MuteRequest> {
|
||||
return static_cast<MembersController*>(
|
||||
_listController.get())->toggleMuteRequests();
|
||||
}
|
||||
|
||||
auto GroupMembers::changeVolumeRequests() const
|
||||
-> rpl::producer<GroupMembers::VolumeRequest> {
|
||||
-> rpl::producer<Group::VolumeRequest> {
|
||||
return static_cast<MembersController*>(
|
||||
_listController.get())->changeVolumeRequests();
|
||||
}
|
||||
|
|
|
@ -20,6 +20,11 @@ class GroupCall;
|
|||
|
||||
namespace Calls {
|
||||
|
||||
namespace Group {
|
||||
struct VolumeRequest;
|
||||
struct MuteRequest;
|
||||
} // namespace Group
|
||||
|
||||
class GroupCall;
|
||||
|
||||
class GroupMembers final
|
||||
|
@ -30,23 +35,13 @@ public:
|
|||
not_null<QWidget*> parent,
|
||||
not_null<GroupCall*> call);
|
||||
|
||||
static const int kDefaultVolume;/* = Data::GroupCall::kDefaultVolume*/
|
||||
|
||||
struct MuteRequest {
|
||||
not_null<UserData*> user;
|
||||
bool mute = false;
|
||||
};
|
||||
struct VolumeRequest {
|
||||
not_null<UserData*> user;
|
||||
int volume = kDefaultVolume;
|
||||
bool finalized = true;
|
||||
};
|
||||
|
||||
[[nodiscard]] int desiredHeight() const;
|
||||
[[nodiscard]] rpl::producer<int> desiredHeightValue() const override;
|
||||
[[nodiscard]] rpl::producer<int> fullCountValue() const;
|
||||
[[nodiscard]] rpl::producer<MuteRequest> toggleMuteRequests() const;
|
||||
[[nodiscard]] rpl::producer<VolumeRequest> changeVolumeRequests() const;
|
||||
[[nodiscard]] auto toggleMuteRequests() const
|
||||
-> rpl::producer<Group::MuteRequest>;
|
||||
[[nodiscard]] auto changeVolumeRequests() const
|
||||
-> rpl::producer<Group::VolumeRequest>;
|
||||
[[nodiscard]] auto kickMemberRequests() const
|
||||
-> rpl::producer<not_null<UserData*>>;
|
||||
[[nodiscard]] rpl::producer<> addMembersRequests() const {
|
||||
|
|
|
@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
*/
|
||||
#include "calls/calls_group_panel.h"
|
||||
|
||||
#include "calls/calls_group_common.h"
|
||||
#include "calls/calls_group_members.h"
|
||||
#include "calls/calls_group_settings.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
|
@ -505,14 +506,14 @@ void GroupPanel::initWithCall(GroupCall *call) {
|
|||
}, _callLifetime);
|
||||
|
||||
_members->toggleMuteRequests(
|
||||
) | rpl::start_with_next([=](GroupMembers::MuteRequest request) {
|
||||
) | rpl::start_with_next([=](Group::MuteRequest request) {
|
||||
if (_call) {
|
||||
_call->toggleMute(request.user, request.mute);
|
||||
}
|
||||
}, _callLifetime);
|
||||
|
||||
_members->changeVolumeRequests(
|
||||
) | rpl::start_with_next([=](GroupMembers::VolumeRequest request) {
|
||||
) | rpl::start_with_next([=](Group::VolumeRequest request) {
|
||||
if (_call) {
|
||||
_call->changeVolume(request.user, request.volume);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "main/main_session.h"
|
||||
#include "calls/calls_instance.h"
|
||||
#include "calls/calls_group_call.h"
|
||||
#include "calls/calls_group_common.h"
|
||||
#include "core/application.h"
|
||||
#include "apiwrap.h"
|
||||
|
||||
|
@ -275,12 +276,13 @@ void GroupCall::applyParticipantsSlice(
|
|||
&& ((was ? was->speaking : false)
|
||||
|| (!amInCall
|
||||
&& (lastActive + speakingAfterActive > now)));
|
||||
const auto defaultVolume = Calls::Group::kDefaultVolume;
|
||||
const auto value = Participant{
|
||||
.user = user,
|
||||
.date = data.vdate().v,
|
||||
.lastActive = lastActive,
|
||||
.ssrc = uint32(data.vsource().v),
|
||||
.volume = data.vvolume().value_or(kDefaultVolume),
|
||||
.volume = data.vvolume().value_or(defaultVolume),
|
||||
.speaking = canSelfUnmute && (was ? was->speaking : false),
|
||||
.muted = data.is_muted(),
|
||||
.mutedByMe = data.is_muted_by_you(),
|
||||
|
|
|
@ -32,7 +32,6 @@ public:
|
|||
|
||||
void setPeer(not_null<PeerData*> peer);
|
||||
|
||||
static constexpr auto kDefaultVolume = 10000;
|
||||
struct Participant {
|
||||
not_null<UserData*> user;
|
||||
TimeId date = 0;
|
||||
|
|
Loading…
Reference in New Issue