diff --git a/linphone-desktop/CMakeLists.txt b/linphone-desktop/CMakeLists.txt
index e933c547a..eacfd3d75 100644
--- a/linphone-desktop/CMakeLists.txt
+++ b/linphone-desktop/CMakeLists.txt
@@ -92,8 +92,9 @@ set(SOURCES
src/components/camera/MSFunctions.cpp
src/components/chat/ChatModel.cpp
src/components/chat/ChatProxyModel.cpp
- src/components/codecs/CodecsModel.cpp
+ src/components/codecs/AbstractCodecsModel.cpp
src/components/codecs/AudioCodecsModel.cpp
+ src/components/codecs/CodecsModel.cpp
src/components/codecs/VideoCodecsModel.cpp
src/components/contact/ContactModel.cpp
src/components/contact/VcardModel.cpp
@@ -129,9 +130,10 @@ set(HEADERS
src/components/calls/CallsListModel.hpp
src/components/chat/ChatModel.hpp
src/components/chat/ChatProxyModel.hpp
- src/components/codecs/CodecsModel.cpp
- src/components/codecs/AudioCodecsModel.cpp
- src/components/codecs/VideoCodecsModel.cpp
+ src/components/codecs/CodecsModel.hpp
+ src/components/codecs/AbstractCodecsModel.hpp
+ src/components/codecs/AudioCodecsModel.hpp
+ src/components/codecs/VideoCodecsModel.hpp
src/components/contact/ContactModel.hpp
src/components/contact/VcardModel.hpp
src/components/contacts/ContactsListModel.hpp
diff --git a/linphone-desktop/assets/languages/en.ts b/linphone-desktop/assets/languages/en.ts
index dfb1dc257..b633334b6 100644
--- a/linphone-desktop/assets/languages/en.ts
+++ b/linphone-desktop/assets/languages/en.ts
@@ -236,6 +236,33 @@
Server url not configured.
+
+ CodecsViewer
+
+ codecMime
+
+
+
+ codecEncoderDescription
+
+
+
+ codecEncoderClockRate
+
+
+
+ codecBitrate
+
+
+
+ codecRecvFmtp
+
+
+
+ codecStatus
+
+
+
ConfirmDialog
diff --git a/linphone-desktop/assets/languages/fr.ts b/linphone-desktop/assets/languages/fr.ts
index f8f014b64..7d05b9ef1 100644
--- a/linphone-desktop/assets/languages/fr.ts
+++ b/linphone-desktop/assets/languages/fr.ts
@@ -236,6 +236,33 @@
Url du serveur non configurée.
+
+ CodecsViewer
+
+ codecMime
+
+
+
+ codecEncoderDescription
+
+
+
+ codecEncoderClockRate
+
+
+
+ codecBitrate
+
+
+
+ codecRecvFmtp
+
+
+
+ codecStatus
+
+
+
ConfirmDialog
diff --git a/linphone-desktop/src/components/codecs/AbstractCodecsModel.cpp b/linphone-desktop/src/components/codecs/AbstractCodecsModel.cpp
new file mode 100644
index 000000000..c402a5e29
--- /dev/null
+++ b/linphone-desktop/src/components/codecs/AbstractCodecsModel.cpp
@@ -0,0 +1,34 @@
+/*
+ * AbstractCodecsModel.cpp
+ * Copyright (C) 2017 Belledonne Communications, Grenoble, France
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Created on: April 4, 2017
+ * Author: Ronan Abhamon
+ */
+
+#include "CodecsModel.hpp"
+
+#include "AbstractCodecsModel.hpp"
+
+// =============================================================================
+
+AbstractCodecsModel::AbstractCodecsModel (QObject *parent) : QSortFilterProxyModel(parent) {}
+
+void AbstractCodecsModel::enableCodec (int id, bool status) {
+ QModelIndex source_index = mapToSource(index(id, 0));
+ static_cast(sourceModel())->enableCodec(source_index.row(), status);
+}
diff --git a/linphone-desktop/src/components/codecs/AbstractCodecsModel.hpp b/linphone-desktop/src/components/codecs/AbstractCodecsModel.hpp
new file mode 100644
index 000000000..eec6584ef
--- /dev/null
+++ b/linphone-desktop/src/components/codecs/AbstractCodecsModel.hpp
@@ -0,0 +1,43 @@
+/*
+ * AbstractCodecsModel.hpp
+ * Copyright (C) 2017 Belledonne Communications, Grenoble, France
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Created on: April 4, 2017
+ * Author: Ronan Abhamon
+ */
+
+#ifndef ABSTRACT_CODECS_MODEL_H_
+#define ABSTRACT_CODECS_MODEL_H_
+
+#include
+
+// =============================================================================
+
+class AbstractCodecsModel : public QSortFilterProxyModel {
+ Q_OBJECT;
+
+public:
+ AbstractCodecsModel (QObject *parent = Q_NULLPTR);
+ virtual ~AbstractCodecsModel () = default;
+
+ Q_INVOKABLE void enableCodec (int id, bool status);
+
+protected:
+ virtual bool filterAcceptsRow (int source_row, const QModelIndex &source_parent) const override = 0;
+};
+
+#endif // ABSTRACT_CODECS_MODEL_H_
diff --git a/linphone-desktop/src/components/codecs/AudioCodecsModel.cpp b/linphone-desktop/src/components/codecs/AudioCodecsModel.cpp
index 172ec88fe..3e9243cd3 100644
--- a/linphone-desktop/src/components/codecs/AudioCodecsModel.cpp
+++ b/linphone-desktop/src/components/codecs/AudioCodecsModel.cpp
@@ -26,7 +26,7 @@
// =============================================================================
-AudioCodecsModel::AudioCodecsModel (QObject *parent) : QSortFilterProxyModel(parent) {
+AudioCodecsModel::AudioCodecsModel (QObject *parent) : AbstractCodecsModel(parent) {
setSourceModel(CoreManager::getInstance()->getCodecsModel());
}
diff --git a/linphone-desktop/src/components/codecs/AudioCodecsModel.hpp b/linphone-desktop/src/components/codecs/AudioCodecsModel.hpp
index a840f769c..406a1eac3 100644
--- a/linphone-desktop/src/components/codecs/AudioCodecsModel.hpp
+++ b/linphone-desktop/src/components/codecs/AudioCodecsModel.hpp
@@ -23,11 +23,11 @@
#ifndef AUDIO_CODECS_MODEL_H_
#define AUDIO_CODECS_MODEL_H_
-#include
+#include "AbstractCodecsModel.hpp"
// =============================================================================
-class AudioCodecsModel : public QSortFilterProxyModel {
+class AudioCodecsModel : public AbstractCodecsModel {
Q_OBJECT;
public:
diff --git a/linphone-desktop/src/components/codecs/CodecsModel.cpp b/linphone-desktop/src/components/codecs/CodecsModel.cpp
index 36e9bd855..8d34d4214 100644
--- a/linphone-desktop/src/components/codecs/CodecsModel.cpp
+++ b/linphone-desktop/src/components/codecs/CodecsModel.cpp
@@ -83,3 +83,9 @@ QVariant CodecsModel::data (const QModelIndex &index, int role) const {
return QVariant();
}
+
+// -----------------------------------------------------------------------------
+
+void CodecsModel::enableCodec (int id, bool status) {
+ // TODO.
+}
diff --git a/linphone-desktop/src/components/codecs/CodecsModel.hpp b/linphone-desktop/src/components/codecs/CodecsModel.hpp
index 8c19c8030..0c0ab53de 100644
--- a/linphone-desktop/src/components/codecs/CodecsModel.hpp
+++ b/linphone-desktop/src/components/codecs/CodecsModel.hpp
@@ -47,6 +47,8 @@ public:
QHash roleNames () const override;
QVariant data (const QModelIndex &index, int role = Qt::DisplayRole) const override;
+ void enableCodec (int id, bool status);
+
private:
QVariantList m_codecs;
};
diff --git a/linphone-desktop/src/components/codecs/VideoCodecsModel.cpp b/linphone-desktop/src/components/codecs/VideoCodecsModel.cpp
index 996a509ca..db4f80ead 100644
--- a/linphone-desktop/src/components/codecs/VideoCodecsModel.cpp
+++ b/linphone-desktop/src/components/codecs/VideoCodecsModel.cpp
@@ -26,7 +26,7 @@
// =============================================================================
-VideoCodecsModel::VideoCodecsModel (QObject *parent) : QSortFilterProxyModel(parent) {
+VideoCodecsModel::VideoCodecsModel (QObject *parent) : AbstractCodecsModel(parent) {
setSourceModel(CoreManager::getInstance()->getCodecsModel());
}
diff --git a/linphone-desktop/src/components/codecs/VideoCodecsModel.hpp b/linphone-desktop/src/components/codecs/VideoCodecsModel.hpp
index 3962445cd..88dd7919b 100644
--- a/linphone-desktop/src/components/codecs/VideoCodecsModel.hpp
+++ b/linphone-desktop/src/components/codecs/VideoCodecsModel.hpp
@@ -23,11 +23,11 @@
#ifndef VIDEO_CODECS_MODEL_H_
#define VIDEO_CODECS_MODEL_H_
-#include
+#include "AbstractCodecsModel.hpp"
// =============================================================================
-class VideoCodecsModel : public QSortFilterProxyModel {
+class VideoCodecsModel : public AbstractCodecsModel {
Q_OBJECT;
public:
diff --git a/linphone-desktop/ui/modules/Linphone/Codecs/CodecsViewer.qml b/linphone-desktop/ui/modules/Linphone/Codecs/CodecsViewer.qml
index fb9531c35..699ea6931 100644
--- a/linphone-desktop/ui/modules/Linphone/Codecs/CodecsViewer.qml
+++ b/linphone-desktop/ui/modules/Linphone/Codecs/CodecsViewer.qml
@@ -21,6 +21,36 @@ Column {
}
height: CodecsViewerStyle.legend.height
+ spacing: CodecsViewerStyle.column.spacing
+
+ CodecLegend {
+ Layout.preferredWidth: CodecsViewerStyle.column.mimeWidth
+ text: qsTr('codecMime')
+ }
+
+ CodecLegend {
+ Layout.preferredWidth: CodecsViewerStyle.column.encoderDescriptionWidth
+ text: qsTr('codecEncoderDescription')
+ }
+
+ CodecLegend {
+ Layout.preferredWidth: CodecsViewerStyle.column.clockRateWidth
+ text: qsTr('codecEncoderClockRate')
+ }
+
+ CodecLegend {
+ Layout.preferredWidth: CodecsViewerStyle.column.bitrateWidth
+ text: qsTr('codecBitrate')
+ }
+
+ CodecLegend {
+ Layout.preferredWidth: CodecsViewerStyle.column.recvFmtpWidth
+ text: qsTr('codecRecvFmtp')
+ }
+
+ CodecLegend {
+ text: qsTr('codecStatus')
+ }
}
// ---------------------------------------------------------------------------
@@ -78,7 +108,9 @@ Column {
}
Switch {
+ checked: $codec.enabled
+ onClicked: view.model.enableCodec(index, !checked)
}
}
diff --git a/submodules/cmake-builder b/submodules/cmake-builder
index adfd9bf28..bc6df3cfa 160000
--- a/submodules/cmake-builder
+++ b/submodules/cmake-builder
@@ -1 +1 @@
-Subproject commit adfd9bf2811f94337364642d2115c93c8ef5d05f
+Subproject commit bc6df3cfa2c2f8cc54fb225735374c246b68721b