From c3b160ec3ef0409fb655bb9f8e2330da839f935b Mon Sep 17 00:00:00 2001 From: Christophe Deschamps Date: Wed, 17 Dec 2025 15:36:34 +0100 Subject: [PATCH] Move Codecs under the save scope in settings --- .../core/payload-type/PayloadTypeCore.cpp | 21 ++++++++++++++++-- .../core/payload-type/PayloadTypeCore.hpp | 8 ++++++- .../Settings/AdvancedSettingsLayout.qml | 22 +++++++++++++++++++ 3 files changed, 48 insertions(+), 3 deletions(-) diff --git a/Linphone/core/payload-type/PayloadTypeCore.cpp b/Linphone/core/payload-type/PayloadTypeCore.cpp index c612442f7..fceec3344 100644 --- a/Linphone/core/payload-type/PayloadTypeCore.cpp +++ b/Linphone/core/payload-type/PayloadTypeCore.cpp @@ -51,8 +51,25 @@ PayloadTypeCore::~PayloadTypeCore() { void PayloadTypeCore::setSelf(QSharedPointer me) { mPayloadTypeModelConnection = SafeConnection::create(me, mPayloadTypeModel); - DEFINE_CORE_GETSET_CONNECT(mPayloadTypeModelConnection, PayloadTypeCore, PayloadTypeModel, mPayloadTypeModel, bool, - enabled, Enabled) + mPayloadTypeModelConnection->makeConnectToCore(&PayloadTypeCore::setEnabled, [this](bool enabled) { + if (enabled != mEnabled) { + mChanged = true; + emit changed(); + } + mEnabled = enabled; + }); + mPayloadTypeModelConnection->makeConnectToModel(&PayloadTypeModel::enabledChanged, [this](bool enabled) { + mPayloadTypeModelConnection->invokeToCore([this, enabled]() { + if (mEnabled != enabled) { + mEnabled = enabled; + emit enabledChanged(); + } + }); + }); +} + +void PayloadTypeCore::save() { + if (mChanged) mPayloadTypeModelConnection->invokeToModel([this]() { mPayloadTypeModel->setEnabled(mEnabled); }); } PayloadTypeCore::Family PayloadTypeCore::getFamily() { diff --git a/Linphone/core/payload-type/PayloadTypeCore.hpp b/Linphone/core/payload-type/PayloadTypeCore.hpp index 8c66324e2..0ef736e4e 100644 --- a/Linphone/core/payload-type/PayloadTypeCore.hpp +++ b/Linphone/core/payload-type/PayloadTypeCore.hpp @@ -43,7 +43,7 @@ public: const std::shared_ptr &payloadType); PayloadTypeCore(Family family, const std::shared_ptr &payloadType); - PayloadTypeCore(){}; + PayloadTypeCore() {}; ~PayloadTypeCore(); void setSelf(QSharedPointer me); @@ -51,9 +51,15 @@ public: bool isDownloadable(); QString getMimeType(); + Q_INVOKABLE void save(); + +signals: + void changed(); + protected: Family mFamily; bool mDownloadable = false; + bool mChanged = false; DECLARE_CORE_GETSET_MEMBER(bool, enabled, Enabled) DECLARE_CORE_MEMBER(QString, mimeType, MimeType) DECLARE_CORE_MEMBER(QString, encoderDescription, EncoderDescription) diff --git a/Linphone/view/Page/Layout/Settings/AdvancedSettingsLayout.qml b/Linphone/view/Page/Layout/Settings/AdvancedSettingsLayout.qml index c48a06830..303b82dde 100644 --- a/Linphone/view/Page/Layout/Settings/AdvancedSettingsLayout.qml +++ b/Linphone/view/Page/Layout/Settings/AdvancedSettingsLayout.qml @@ -167,6 +167,17 @@ AbstractSettingsLayout { subTitleText: modelData.core.clockRate + " Hz" propertyName: "enabled" propertyOwnerGui: modelData + Connections { + target: modelData.core + function onChanged() { SettingsCpp.isSaved = false } + } + Connections { + target: SettingsCpp + function onIsSavedChanged(saved) { + if (saved) + modelData.core.save() + } + } } } } @@ -194,6 +205,17 @@ AbstractSettingsLayout { subTitleText: modelData.core.encoderDescription propertyName: "enabled" propertyOwnerGui: modelData + Connections { + target: modelData.core + function onChanged() { SettingsCpp.isSaved = false } + } + Connections { + target: SettingsCpp + function onIsSavedChanged(saved) { + if (saved) + modelData.core.save() + } + } } } ListView {