Skip to content
Snippets Groups Projects
Unverified Commit 31340bc2 authored by Sébastien Blin's avatar Sébastien Blin
Browse files

participantoverlay: add recording state

jami-daemon#699

Change-Id: Ia480eef38ee054750ffbaf08ae0aed84090dc9a5
parent 6c8a5d7b
Branches
Tags
No related merge requests found
...@@ -87,6 +87,8 @@ CallParticipantsModel::data(const QModelIndex& index, int role) const ...@@ -87,6 +87,8 @@ CallParticipantsModel::data(const QModelIndex& index, int role) const
return QVariant(item.value(HANDRAISED).toBool()); return QVariant(item.value(HANDRAISED).toBool());
case Role::VoiceActivity: case Role::VoiceActivity:
return QVariant(item.value(VOICEACTIVITY).toBool()); return QVariant(item.value(VOICEACTIVITY).toBool());
case Role::IsRecording:
return QVariant(item.value(ISRECORDING).toBool());
} }
return QVariant(); return QVariant();
} }
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
X(IsLocal) \ X(IsLocal) \
X(IsContact) \ X(IsContact) \
X(VoiceActivity) \ X(VoiceActivity) \
X(IsRecording) \
X(HandRaised) X(HandRaised)
namespace CallParticipant { namespace CallParticipant {
......
...@@ -322,6 +322,10 @@ Item { ...@@ -322,6 +322,10 @@ Item {
property real lineEditContextMenuItemsWidth: 100 property real lineEditContextMenuItemsWidth: 100
property real lineEditContextMenuSeparatorsHeight: 2 property real lineEditContextMenuSeparatorsHeight: 2
// Recording
property real recordingBtnSize: 12
property real recordingIndicatorSize: 24
//TimestampInfo //TimestampInfo
property int timestampLinePadding: 40 property int timestampLinePadding: 40
property int dayTimestampTopMargin: 30 property int dayTimestampTopMargin: 30
......
...@@ -58,6 +58,7 @@ Item { ...@@ -58,6 +58,7 @@ Item {
property bool videoMuted: true property bool videoMuted: true
property bool voiceActive: false property bool voiceActive: false
property bool isLocalMuted: true property bool isLocalMuted: true
property bool isRecording: false
property bool meHost: CallAdapter.isCurrentHost() property bool meHost: CallAdapter.isCurrentHost()
property bool meModerator: CallAdapter.isModerator() property bool meModerator: CallAdapter.isModerator()
...@@ -331,6 +332,45 @@ Item { ...@@ -331,6 +332,45 @@ Item {
radius: 5 radius: 5
} }
Item {
id: recordingIndicator
visible: root.isRecording
z: participantRect.z + 1
width: JamiTheme.recordingIndicatorSize
height: shapeHeight
anchors.right: isRaiseHandIndicator.visible ? isRaiseHandIndicator.left : participantRect.right
anchors.top: participantRect.top
Rectangle {
anchors.centerIn: parent
height: JamiTheme.recordingBtnSize
width: JamiTheme.recordingBtnSize
radius: height / 2
color: JamiTheme.recordIconColor
SequentialAnimation on color {
loops: Animation.Infinite
running: recordingIndicator.visible
ColorAnimation {
from: JamiTheme.recordIconColor
to: "transparent"
duration: JamiTheme.recordBlinkDuration
}
ColorAnimation {
from: "transparent"
to: JamiTheme.recordIconColor
duration: JamiTheme.recordBlinkDuration
}
}
}
}
Rectangle { Rectangle {
id: alertMessage id: alertMessage
......
...@@ -65,6 +65,7 @@ Item { ...@@ -65,6 +65,7 @@ Item {
participantIsActive: active_ participantIsActive: active_
isLocalMuted: audioLocalMuted_ isLocalMuted: audioLocalMuted_
voiceActive: voiceActive_ voiceActive: voiceActive_
isRecording: isRecording_
participantIsModeratorMuted: audioModeratorMuted_ participantIsModeratorMuted: audioModeratorMuted_
participantHandIsRaised: isHandRaised_ participantHandIsRaised: isHandRaised_
......
...@@ -121,6 +121,7 @@ SplitView { ...@@ -121,6 +121,7 @@ SplitView {
property bool audioModeratorMuted_: AudioModeratorMuted property bool audioModeratorMuted_: AudioModeratorMuted
property bool isHandRaised_: HandRaised property bool isHandRaised_: HandRaised
property bool voiceActive_: VoiceActivity property bool voiceActive_: VoiceActivity
property bool isRecording_: IsRecording
} }
} }
} }
...@@ -309,6 +310,7 @@ SplitView { ...@@ -309,6 +310,7 @@ SplitView {
property bool audioModeratorMuted_: AudioModeratorMuted property bool audioModeratorMuted_: AudioModeratorMuted
property bool isHandRaised_: HandRaised property bool isHandRaised_: HandRaised
property bool voiceActive_: VoiceActivity property bool voiceActive_: VoiceActivity
property bool isRecording_: IsRecording
} }
} }
} }
......
...@@ -216,6 +216,7 @@ SplitView { ...@@ -216,6 +216,7 @@ SplitView {
property bool audioModeratorMuted_: AudioModeratorMuted property bool audioModeratorMuted_: AudioModeratorMuted
property bool isHandRaised_: HandRaised property bool isHandRaised_: HandRaised
property bool voiceActive_: VoiceActivity property bool voiceActive_: VoiceActivity
property bool isRecording_: IsRecording
} }
} }
} }
...@@ -290,6 +291,7 @@ SplitView { ...@@ -290,6 +291,7 @@ SplitView {
property bool audioModeratorMuted_: AudioModeratorMuted property bool audioModeratorMuted_: AudioModeratorMuted
property bool isHandRaised_: HandRaised property bool isHandRaised_: HandRaised
property bool voiceActive_: VoiceActivity property bool voiceActive_: VoiceActivity
property bool isRecording_: IsRecording
} }
} }
} }
......
...@@ -53,6 +53,7 @@ const QString AUDIOMODERATORMUTED = "audioModeratorMuted"; ...@@ -53,6 +53,7 @@ const QString AUDIOMODERATORMUTED = "audioModeratorMuted";
const QString ISMODERATOR = "isModerator"; const QString ISMODERATOR = "isModerator";
const QString HANDRAISED = "handRaised"; const QString HANDRAISED = "handRaised";
const QString VOICEACTIVITY = "voiceActivity"; const QString VOICEACTIVITY = "voiceActivity";
const QString ISRECORDING = "recording";
const QString STREAMID = "sinkId"; // TODO update const QString STREAMID = "sinkId"; // TODO update
const QString BESTNAME = "bestName"; const QString BESTNAME = "bestName";
const QString ISLOCAL = "isLocal"; const QString ISLOCAL = "isLocal";
...@@ -83,6 +84,7 @@ struct ParticipantInfos ...@@ -83,6 +84,7 @@ struct ParticipantInfos
isModerator = infos[ParticipantsInfosStrings::ISMODERATOR] == "true"; isModerator = infos[ParticipantsInfosStrings::ISMODERATOR] == "true";
handRaised = infos[ParticipantsInfosStrings::HANDRAISED] == "true"; handRaised = infos[ParticipantsInfosStrings::HANDRAISED] == "true";
voiceActivity = infos[ParticipantsInfosStrings::VOICEACTIVITY] == "true"; voiceActivity = infos[ParticipantsInfosStrings::VOICEACTIVITY] == "true";
isRecording = infos[ParticipantsInfosStrings::ISRECORDING] == "true";
if (infos[ParticipantsInfosStrings::STREAMID].isEmpty()) if (infos[ParticipantsInfosStrings::STREAMID].isEmpty())
sinkId = callId + uri + device; sinkId = callId + uri + device;
...@@ -110,6 +112,7 @@ struct ParticipantInfos ...@@ -110,6 +112,7 @@ struct ParticipantInfos
bool isContact {false}; bool isContact {false};
bool handRaised {false}; bool handRaised {false};
bool voiceActivity {false}; bool voiceActivity {false};
bool isRecording {false};
bool operator==(const ParticipantInfos& other) const bool operator==(const ParticipantInfos& other) const
{ {
...@@ -118,7 +121,8 @@ struct ParticipantInfos ...@@ -118,7 +121,8 @@ struct ParticipantInfos
&& audioModeratorMuted == other.audioModeratorMuted && avatar == other.avatar && audioModeratorMuted == other.audioModeratorMuted && avatar == other.avatar
&& bestName == other.bestName && isContact == other.isContact && bestName == other.bestName && isContact == other.isContact
&& islocal == other.islocal && videoMuted == other.videoMuted && islocal == other.islocal && videoMuted == other.videoMuted
&& handRaised == other.handRaised && voiceActivity == other.voiceActivity; && handRaised == other.handRaised && voiceActivity == other.voiceActivity
&& isRecording == other.isRecording;
} }
}; };
......
...@@ -201,6 +201,7 @@ CallParticipants::toQJsonObject(uint index) const ...@@ -201,6 +201,7 @@ CallParticipants::toQJsonObject(uint index) const
ret[ParticipantsInfosStrings::ISCONTACT] = participant->isContact; ret[ParticipantsInfosStrings::ISCONTACT] = participant->isContact;
ret[ParticipantsInfosStrings::HANDRAISED] = participant->handRaised; ret[ParticipantsInfosStrings::HANDRAISED] = participant->handRaised;
ret[ParticipantsInfosStrings::VOICEACTIVITY] = participant->voiceActivity; ret[ParticipantsInfosStrings::VOICEACTIVITY] = participant->voiceActivity;
ret[ParticipantsInfosStrings::ISRECORDING] = participant->isRecording;
ret[ParticipantsInfosStrings::CALLID] = callId_; ret[ParticipantsInfosStrings::CALLID] = callId_;
return ret; return ret;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment