add setting : create end to end meetings and group calls

This commit is contained in:
Gaelle Braud 2025-04-01 15:34:22 +02:00
parent 1c23fc44ff
commit 21ee3a5414
5 changed files with 75 additions and 18 deletions

View file

@ -68,6 +68,7 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
LinphoneEnums::toVariant(LinphoneEnums::fromLinphone(settingsModel->getDefaultMediaEncryption()));
mMediaEncryptionMandatory = settingsModel->getMediaEncryptionMandatory();
mCreateEndToEndEncryptedMeetingsAndGroupCalls = settingsModel->getCreateEndToEndEncryptedMeetingsAndGroupCalls();
mCaptureGain = settingsModel->getCaptureGain();
mPlaybackGain = settingsModel->getPlaybackGain();
@ -129,6 +130,7 @@ SettingsCore::SettingsCore(const SettingsCore &settingsCore) {
mMediaEncryptions = settingsCore.mMediaEncryptions;
mMediaEncryption = settingsCore.mMediaEncryption;
mMediaEncryptionMandatory = settingsCore.mMediaEncryptionMandatory;
mCreateEndToEndEncryptedMeetingsAndGroupCalls = settingsCore.mCreateEndToEndEncryptedMeetingsAndGroupCalls;
// Call
mVideoEnabled = settingsCore.mVideoEnabled;
@ -323,6 +325,13 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
mSettingsModelConnection->invokeToCore([this, mandatory]() { setMediaEncryptionMandatory(mandatory); });
});
mSettingsModelConnection->makeConnectToModel(&SettingsModel::createEndToEndEncryptedMeetingsAndGroupCallsChanged,
[this](bool endtoend) {
mSettingsModelConnection->invokeToCore([this, endtoend]() {
setCreateEndToEndEncryptedMeetingsAndGroupCalls(endtoend);
});
});
mSettingsModelConnection->makeConnectToModel(
&SettingsModel::videoDevicesChanged, [this](const QStringList devices) {
mSettingsModelConnection->invokeToCore([this, devices]() { setVideoDevices(devices); });
@ -413,15 +422,15 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
}
});
});
coreModelConnection->makeConnectToModel(&CoreModel::defaultAccountChanged, [this] (const std::shared_ptr<linphone::Core> &core,
const std::shared_ptr<linphone::Account> &account) {
coreModelConnection->makeConnectToModel(
&CoreModel::defaultAccountChanged,
[this](const std::shared_ptr<linphone::Core> &core, const std::shared_ptr<linphone::Account> &account) {
QString accountDomain;
if (account) {
accountDomain = Utils::coreStringToAppString(account->getParams()->getDomain());
}
mSettingsModelConnection->invokeToCore([this, accountDomain]() {
setShowAccountDevices(accountDomain == mDefaultDomain);
});
mSettingsModelConnection->invokeToCore(
[this, accountDomain]() { setShowAccountDevices(accountDomain == mDefaultDomain); });
});
}
@ -448,6 +457,7 @@ void SettingsCore::reset(const SettingsCore &settingsCore) {
setMediaEncryption(settingsCore.mMediaEncryption);
setMediaEncryptionMandatory(settingsCore.mMediaEncryptionMandatory);
setCreateEndToEndEncryptedMeetingsAndGroupCalls(settingsCore.mCreateEndToEndEncryptedMeetingsAndGroupCalls);
setCaptureGain(settingsCore.mCaptureGain);
setPlaybackGain(settingsCore.mPlaybackGain);
@ -592,6 +602,18 @@ void SettingsCore::setMediaEncryptionMandatory(bool mandatory) {
}
}
bool SettingsCore::getCreateEndToEndEncryptedMeetingsAndGroupCalls() const {
return mCreateEndToEndEncryptedMeetingsAndGroupCalls;
}
void SettingsCore::setCreateEndToEndEncryptedMeetingsAndGroupCalls(bool endtoend) {
if (mCreateEndToEndEncryptedMeetingsAndGroupCalls != endtoend) {
mCreateEndToEndEncryptedMeetingsAndGroupCalls = endtoend;
emit createEndToEndEncryptedMeetingsAndGroupCallsChanged(endtoend);
setIsSaved(false);
}
}
bool SettingsCore::isSaved() const {
return mIsSaved;
}
@ -911,6 +933,7 @@ void SettingsCore::writeIntoModel(std::shared_ptr<SettingsModel> model) const {
LinphoneEnums::toLinphone(LinphoneEnums::MediaEncryption(mMediaEncryption["id"].toInt())));
model->setMediaEncryptionMandatory(mMediaEncryptionMandatory);
model->setCreateEndToEndEncryptedMeetingsAndGroupCalls(mCreateEndToEndEncryptedMeetingsAndGroupCalls);
model->setCaptureGain(mCaptureGain);
model->setPlaybackGain(mPlaybackGain);
@ -973,6 +996,7 @@ void SettingsCore::writeFromModel(const std::shared_ptr<SettingsModel> &model) {
mMediaEncryption = LinphoneEnums::toVariant(LinphoneEnums::fromLinphone(model->getDefaultMediaEncryption()));
mMediaEncryptionMandatory = model->getMediaEncryptionMandatory();
mCreateEndToEndEncryptedMeetingsAndGroupCalls = model->getCreateEndToEndEncryptedMeetingsAndGroupCalls();
mCaptureGain = model->getCaptureGain();
mPlaybackGain = model->getPlaybackGain();

View file

@ -66,6 +66,9 @@ public:
QVariantMap mediaEncryption READ getMediaEncryption WRITE setMediaEncryption NOTIFY mediaEncryptionChanged)
Q_PROPERTY(bool mediaEncryptionMandatory READ isMediaEncryptionMandatory WRITE setMediaEncryptionMandatory NOTIFY
mediaEncryptionMandatoryChanged)
Q_PROPERTY(
bool createEndToEndEncryptedMeetingsAndGroupCalls READ getCreateEndToEndEncryptedMeetingsAndGroupCalls WRITE
setCreateEndToEndEncryptedMeetingsAndGroupCalls NOTIFY createEndToEndEncryptedMeetingsAndGroupCallsChanged)
Q_PROPERTY(QStringList videoDevices READ getVideoDevices NOTIFY videoDevicesChanged)
Q_PROPERTY(QString videoDevice READ getVideoDevice WRITE setVideoDevice NOTIFY videoDeviceChanged)
@ -80,7 +83,8 @@ public:
Q_PROPERTY(bool dnd READ dndEnabled WRITE lEnableDnd NOTIFY dndChanged)
Q_PROPERTY(bool isSaved READ isSaved WRITE setIsSaved NOTIFY isSavedChanged)
Q_PROPERTY(bool showAccountDevices READ showAccountDevices WRITE setShowAccountDevices NOTIFY showAccountDevicesChanged)
Q_PROPERTY(
bool showAccountDevices READ showAccountDevices WRITE setShowAccountDevices NOTIFY showAccountDevicesChanged)
static QSharedPointer<SettingsCore> create();
SettingsCore(QObject *parent = Q_NULLPTR);
@ -154,6 +158,8 @@ public:
void setMediaEncryption(QVariantMap encryption);
bool isMediaEncryptionMandatory() const;
void setMediaEncryptionMandatory(bool mandatory);
bool getCreateEndToEndEncryptedMeetingsAndGroupCalls() const;
void setCreateEndToEndEncryptedMeetingsAndGroupCalls(bool endtoend);
bool isSaved() const;
void setIsSaved(bool saved);
@ -259,6 +265,8 @@ signals:
void mediaEncryptionMandatoryChanged(bool mandatory);
void createEndToEndEncryptedMeetingsAndGroupCallsChanged(bool endtoend);
void isSavedChanged();
void lSetPlaybackDevice(QVariantMap device);
@ -305,6 +313,7 @@ private:
QVariantList mMediaEncryptions;
QVariantMap mMediaEncryption;
bool mMediaEncryptionMandatory;
bool mCreateEndToEndEncryptedMeetingsAndGroupCalls;
// Call
bool mVideoEnabled;
@ -345,7 +354,7 @@ private:
QSettings mAppSettings;
QSharedPointer<SafeConnection<SettingsCore, SettingsModel>> mSettingsModelConnection;
//Account
// Account
QString mDefaultDomain;
bool mShowAccountDevices = false;

View file

@ -63,7 +63,8 @@ SettingsModel::SettingsModel() {
notifyConfigReady();
}
});
QObject::connect(CoreModel::getInstance().get(), &CoreModel::defaultAccountChanged, this,
QObject::connect(
CoreModel::getInstance().get(), &CoreModel::defaultAccountChanged, this,
[this](const std::shared_ptr<linphone::Core> &core, const std::shared_ptr<linphone::Account> account) {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
setDisableMeetingsFeature(account && !account->getParams()->getAudioVideoConferenceFactoryAddress());
@ -350,6 +351,17 @@ void SettingsModel::setMediaEncryptionMandatory(bool mandatory) {
emit mediaEncryptionMandatoryChanged();
}
bool SettingsModel::getCreateEndToEndEncryptedMeetingsAndGroupCalls() const {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
return !!mConfig->getBool(SettingsModel::AppSection, "create_e2e_encrypted_conferences", false);
}
void SettingsModel::setCreateEndToEndEncryptedMeetingsAndGroupCalls(bool endtoend) {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
mConfig->setBool(SettingsModel::AppSection, "create_e2e_encrypted_conferences", endtoend);
emit createEndToEndEncryptedMeetingsAndGroupCallsChanged(endtoend);
}
// -----------------------------------------------------------------------------
QVariantMap SettingsModel::getPlaybackDevice() const {
@ -690,7 +702,8 @@ void SettingsModel::setShortcuts(QVariantList data) {
}
QString SettingsModel::getDefaultDomain() const {
return Utils::coreStringToAppString(mConfig->getString(SettingsModel::AppSection, "default_domain", "sip.linphone.org"));
return Utils::coreStringToAppString(
mConfig->getString(SettingsModel::AppSection, "default_domain", "sip.linphone.org"));
}
// clang-format off

View file

@ -103,6 +103,9 @@ public:
bool getMediaEncryptionMandatory() const;
void setMediaEncryptionMandatory(bool mandatory);
bool getCreateEndToEndEncryptedMeetingsAndGroupCalls() const;
void setCreateEndToEndEncryptedMeetingsAndGroupCalls(bool endtoend);
QVariantMap getRingerDevice() const;
void setRingerDevice(QVariantMap device);
@ -209,6 +212,7 @@ signals:
void conferenceLayoutChanged();
void mediaEncryptionChanged();
void mediaEncryptionMandatoryChanged();
void createEndToEndEncryptedMeetingsAndGroupCallsChanged(bool endtoend);
void echoCancellationEnabledChanged(bool enabled);
void automaticallyRecordCallsEnabledChanged(bool enabled);

View file

@ -133,6 +133,13 @@ AbstractSettingsLayout {
propertyName: "mediaEncryptionMandatory"
propertyOwner: SettingsCpp
}
SwitchSetting {
Layout.fillWidth: true
//: Create end to end encrypted meetings and group calls
titleText: qsTr("settings_advanced_create_endtoend_encrypted_meetings_title")
propertyName: "createEndToEndEncryptedMeetingsAndGroupCalls"
propertyOwner: SettingsCpp
}
}
}