diff --git a/linphone-desktop/src/components/codecs/AbstractCodecsModel.cpp b/linphone-desktop/src/components/codecs/AbstractCodecsModel.cpp index 20724dc89..1d648ea2f 100644 --- a/linphone-desktop/src/components/codecs/AbstractCodecsModel.cpp +++ b/linphone-desktop/src/components/codecs/AbstractCodecsModel.cpp @@ -23,6 +23,7 @@ #include #include "../../utils.hpp" +#include "../core/CoreManager.hpp" #include "AbstractCodecsModel.hpp" @@ -96,6 +97,7 @@ bool AbstractCodecsModel::moveRows ( beginMoveRows(source_parent, source_row, limit, destination_parent, destination_child); + // Update UI. if (destination_child > source_row) { --destination_child; for (int i = source_row; i <= limit; ++i) { @@ -106,6 +108,12 @@ bool AbstractCodecsModel::moveRows ( m_codecs.move(source_row + i - source_row, destination_child + i - source_row); } + // Update linphone codecs list. + list > codecs; + for (const auto &map : m_codecs) + codecs.push_back(map.value("__codec").value >()); + updateCodecs(codecs); + endMoveRows(); return true; diff --git a/linphone-desktop/src/components/codecs/AbstractCodecsModel.hpp b/linphone-desktop/src/components/codecs/AbstractCodecsModel.hpp index 448d813d1..586bfd985 100644 --- a/linphone-desktop/src/components/codecs/AbstractCodecsModel.hpp +++ b/linphone-desktop/src/components/codecs/AbstractCodecsModel.hpp @@ -59,6 +59,8 @@ protected: void addCodec (std::shared_ptr &codec); + virtual void updateCodecs (std::list > &codecs) = 0; + private: QList m_codecs; }; diff --git a/linphone-desktop/src/components/codecs/AudioCodecsModel.cpp b/linphone-desktop/src/components/codecs/AudioCodecsModel.cpp index 3353e0e14..8741c42ec 100644 --- a/linphone-desktop/src/components/codecs/AudioCodecsModel.cpp +++ b/linphone-desktop/src/components/codecs/AudioCodecsModel.cpp @@ -24,9 +24,15 @@ #include "AudioCodecsModel.hpp" +using namespace std; + // ============================================================================= AudioCodecsModel::AudioCodecsModel (QObject *parent) : AbstractCodecsModel(parent) { for (auto &codec : CoreManager::getInstance()->getCore()->getAudioPayloadTypes()) addCodec(codec); } + +void AudioCodecsModel::updateCodecs (list > &codecs) { + CoreManager::getInstance()->getCore()->setAudioPayloadTypes(codecs); +} diff --git a/linphone-desktop/src/components/codecs/AudioCodecsModel.hpp b/linphone-desktop/src/components/codecs/AudioCodecsModel.hpp index 56875918c..ec15beb79 100644 --- a/linphone-desktop/src/components/codecs/AudioCodecsModel.hpp +++ b/linphone-desktop/src/components/codecs/AudioCodecsModel.hpp @@ -33,6 +33,9 @@ class AudioCodecsModel : public AbstractCodecsModel { public: AudioCodecsModel (QObject *parent = Q_NULLPTR); ~AudioCodecsModel () = default; + +protected: + void updateCodecs (std::list > &codecs) override; }; #endif // AUDIO_CODECS_MODEL_H_ diff --git a/linphone-desktop/src/components/codecs/VideoCodecsModel.cpp b/linphone-desktop/src/components/codecs/VideoCodecsModel.cpp index d6d5d8178..603cf53ca 100644 --- a/linphone-desktop/src/components/codecs/VideoCodecsModel.cpp +++ b/linphone-desktop/src/components/codecs/VideoCodecsModel.cpp @@ -24,9 +24,15 @@ #include "VideoCodecsModel.hpp" +using namespace std; + // ============================================================================= VideoCodecsModel::VideoCodecsModel (QObject *parent) : AbstractCodecsModel(parent) { for (auto &codec : CoreManager::getInstance()->getCore()->getVideoPayloadTypes()) addCodec(codec); } + +void VideoCodecsModel::updateCodecs (list > &codecs) { + CoreManager::getInstance()->getCore()->setVideoPayloadTypes(codecs); +} diff --git a/linphone-desktop/src/components/codecs/VideoCodecsModel.hpp b/linphone-desktop/src/components/codecs/VideoCodecsModel.hpp index 012022b50..9e6dee0fc 100644 --- a/linphone-desktop/src/components/codecs/VideoCodecsModel.hpp +++ b/linphone-desktop/src/components/codecs/VideoCodecsModel.hpp @@ -33,6 +33,9 @@ class VideoCodecsModel : public AbstractCodecsModel { public: VideoCodecsModel (QObject *parent = Q_NULLPTR); ~VideoCodecsModel () = default; + +protected: + void updateCodecs (std::list > &codecs) override; }; #endif // VIDEO_CODECS_MODEL_H_