diff --git a/linphone-desktop/src/components/conference/ConferenceModel.cpp b/linphone-desktop/src/components/conference/ConferenceModel.cpp index 1e854ad25..e4830e647 100644 --- a/linphone-desktop/src/components/conference/ConferenceModel.cpp +++ b/linphone-desktop/src/components/conference/ConferenceModel.cpp @@ -24,7 +24,6 @@ #include "../../Utils.hpp" #include "../core/CoreManager.hpp" -#include "ConferenceHelperModel.hpp" #include "ConferenceModel.hpp" @@ -32,28 +31,13 @@ using namespace std; // ============================================================================= -ConferenceModel::ConferenceModel (QObject *parent) : QAbstractListModel(parent) {} +ConferenceModel::ConferenceModel (QObject *parent) : QSortFilterProxyModel(parent) {} -int ConferenceModel::rowCount (const QModelIndex &index) const { - return mSipAddresses.count(); -} +bool ConferenceModel::filterAcceptsRow (int sourceRow, const QModelIndex &sourceParent) const { + const QModelIndex &index = sourceModel()->index(sourceRow, 0, sourceParent); + const CallModel *callModel = index.data().value(); -QHash ConferenceModel::roleNames () const { - QHash roles; - roles[Qt::DisplayRole] = "$sipAddress"; - return roles; -} - -QVariant ConferenceModel::data (const QModelIndex &index, int role) const { - int row = index.row(); - - if (!index.isValid() || row < 0 || row >= mSipAddresses.count()) - return QVariant(); - - if (role == Qt::DisplayRole) - return mSipAddresses[row]; - - return QVariant(); + return callModel->getCall()->getParams()->getLocalConferenceMode(); } // ----------------------------------------------------------------------------- diff --git a/linphone-desktop/src/components/conference/ConferenceModel.hpp b/linphone-desktop/src/components/conference/ConferenceModel.hpp index 79568a9be..1c9b5a809 100644 --- a/linphone-desktop/src/components/conference/ConferenceModel.hpp +++ b/linphone-desktop/src/components/conference/ConferenceModel.hpp @@ -23,11 +23,13 @@ #ifndef CONFERENCE_MODEL_H_ #define CONFERENCE_MODEL_H_ -#include +#include // ============================================================================= -class ConferenceModel : public QAbstractListModel { +class CallModel; + +class ConferenceModel : public QSortFilterProxyModel { Q_OBJECT; Q_PROPERTY(bool microMuted READ getMicroMuted WRITE setMicroMuted NOTIFY microMutedChanged); @@ -38,10 +40,8 @@ public: ConferenceModel (QObject *parent = Q_NULLPTR); ~ConferenceModel () = default; - int rowCount (const QModelIndex &index = QModelIndex()) const override; - - QHash roleNames () const override; - QVariant data (const QModelIndex &index, int role = Qt::DisplayRole) const override; +protected: + bool filterAcceptsRow (int sourceRow, const QModelIndex &sourceParent) const override; Q_INVOKABLE void terminate (); @@ -59,8 +59,6 @@ private: bool getRecording () const; bool mRecording = false; - - QStringList mSipAddresses; }; #endif // CONFERENCE_MODEL_H_ diff --git a/linphone-desktop/ui/views/App/Calls/Conference.qml b/linphone-desktop/ui/views/App/Calls/Conference.qml index ebb1de707..83e2db95e 100644 --- a/linphone-desktop/ui/views/App/Calls/Conference.qml +++ b/linphone-desktop/ui/views/App/Calls/Conference.qml @@ -11,15 +11,13 @@ import App.Styles 1.0 // ============================================================================= Rectangle { - property var call: null // TODO: Remove me - color: CallStyle.backgroundColor // --------------------------------------------------------------------------- - ConferenceModel { - id: conference - } + ConferenceModel { + id: conference + } ColumnLayout { anchors { @@ -30,7 +28,7 @@ Rectangle { spacing: 0 // ------------------------------------------------------------------------- - // Call info. + // Conference info. // ------------------------------------------------------------------------- Item { @@ -53,7 +51,14 @@ Rectangle { anchors.centerIn: parent horizontalAlignment: Text.AlignHCenter - text: qsTr('conferenceTitle') + text: qsTr('conferenceTitle') + + color: CallStyle.header.conferenceDescription.color + + font { + bold: true + pointSize: CallStyle.header.conferenceDescription.fontSize + } height: parent.height width: parent.width - rightActions.width - leftActions.width - CallStyle.header.conferenceDescription.width @@ -75,30 +80,12 @@ Rectangle { useStates: false onClicked: !enabled - ? conference.startRecording() + ? conference.startRecording() : conference.stopRecording() } } } - Text { - id: elapsedTime - - Layout.fillWidth: true - color: CallStyle.header.elapsedTime.color - font.pointSize: CallStyle.header.elapsedTime.fontSize - horizontalAlignment: Text.AlignHCenter - - Timer { - interval: 1000 - repeat: true - running: true - triggeredOnStart: true - - onTriggered: elapsedTime.text = Utils.formatElapsedTime(conference.duration) - } - } - // ------------------------------------------------------------------------- // Contacts visual. // ------------------------------------------------------------------------- @@ -153,32 +140,6 @@ Rectangle { onClicked: conference.microMuted = enabled } } - - Row { - spacing: CallStyle.actionArea.vu.spacing - - VuMeter { - Timer { - interval: 50 - repeat: true - running: speaker.enabled - - onTriggered: parent.value = conference.speakerVu - } - - enabled: speaker.enabled - } - - ActionSwitch { - id: speaker - - enabled: true - icon: 'speaker' - iconSize: CallStyle.actionArea.iconSize - - onClicked: console.log('TODO') - } - } } ActionBar { diff --git a/linphone-desktop/ui/views/App/Styles/Calls/CallStyle.qml b/linphone-desktop/ui/views/App/Styles/Calls/CallStyle.qml index 8b762f51d..81c70edc2 100644 --- a/linphone-desktop/ui/views/App/Styles/Calls/CallStyle.qml +++ b/linphone-desktop/ui/views/App/Styles/Calls/CallStyle.qml @@ -66,6 +66,13 @@ QtObject { property int width: 150 } + property QtObject conferenceDescription: QtObject { + property color color: Colors.x + property int fontSize: 12 + property int height: 60 + property int width: 150 + } + property QtObject elapsedTime: QtObject { property color color: Colors.j property int fontSize: 10