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