Add options to set camera modes for mosaic/gric/calls.

Change waiting room design to fit camera preview size.
Fix avatar sizes.
Fix preview size to be 16/9 and below main view in call.
This commit is contained in:
Julien Wadel 2022-07-01 15:38:19 +02:00
parent b555c27f43
commit 9f3115d3da
30 changed files with 548 additions and 133 deletions

View file

@ -3035,11 +3035,6 @@ Klik her: <a href="%1">%1</a>
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3070,6 +3065,26 @@ Klik her: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3035,11 +3035,6 @@ Klicken Sie hier: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3070,6 +3065,26 @@ Klicken Sie hier: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3058,11 +3058,6 @@ Click here: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation>Video display</translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation>Camera mode</translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3093,6 +3088,26 @@ Click here: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation>Mosaic</translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation>Mosaic</translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation>Active speaker</translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation>Calls</translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation>Camera modes</translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3035,11 +3035,6 @@ Haga clic aquí: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3070,6 +3065,26 @@ Haga clic aquí: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3035,11 +3035,6 @@ Cliquez ici : &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3070,6 +3065,26 @@ Cliquez ici : &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3022,11 +3022,6 @@ Kattintson ide: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3057,6 +3052,26 @@ Kattintson ide: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3035,11 +3035,6 @@ Clicca: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3070,6 +3065,26 @@ Clicca: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3022,11 +3022,6 @@
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3057,6 +3052,26 @@
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3048,11 +3048,6 @@ Spustelėkite čia: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3083,6 +3078,26 @@ Spustelėkite čia: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3035,11 +3035,6 @@ Clique aqui: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3070,6 +3065,26 @@ Clique aqui: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3048,11 +3048,6 @@
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3083,6 +3078,26 @@
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3035,11 +3035,6 @@ Klicka här: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3070,6 +3065,26 @@ Klicka här: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3022,11 +3022,6 @@ Buraya tıklayın: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3057,6 +3052,26 @@ Buraya tıklayın: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3048,11 +3048,6 @@
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3083,6 +3078,26 @@
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -3022,11 +3022,6 @@
<extracomment>&apos;Video display&apos; : Title for display parameters</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera mode&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoHybrid</source>
<extracomment>&apos;Hybrid&apos; : Hybrid mode for camera.</extracomment>
@ -3057,6 +3052,26 @@
<extracomment>&apos;Mosaic&apos; : Mosaic layout invideo conference.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoGridModeLabel</source>
<extracomment>&apos;Mosaic&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoActiveSpeakerModeLabel</source>
<extracomment>&apos;Active speaker&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoCallsModeLabel</source>
<extracomment>&apos;Calls&apos; : Label to choose a camera mode.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>videoModeLabel</source>
<extracomment>&apos;Camera modes&apos; : Label to choose a camera modes.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsVideoPreview</name>

View file

@ -51,18 +51,28 @@ constexpr char AutoAnswerObjectName[] = "auto-answer-timer";
}
CallModel::CallModel (shared_ptr<linphone::Call> call){
CoreManager *coreManager = CoreManager::getInstance();
SettingsModel *settings = coreManager->getSettingsModel();
connect(this, &CallModel::callIdChanged, this, &CallModel::chatRoomModelChanged);// When the call Id change, the chat room change.
mCall = call;
if(mCall)
mCall->setData("call-model", *this);
updateIsInConference();
mConferenceVideoLayout = LinphoneEnums::fromLinphone(call->getParams()->getConferenceVideoLayout());
CoreManager *coreManager = CoreManager::getInstance();
if(mCall) {
mConferenceVideoLayout = LinphoneEnums::fromLinphone(mCall->getParams()->getConferenceVideoLayout());
if(mCall->getConference()){
if( mConferenceVideoLayout == LinphoneEnums::ConferenceLayoutGrid)
settings->setCameraMode(settings->getGridCameraMode());
else
settings->setCameraMode(settings->getActiveSpeakerCameraMode());
}else
settings->setCameraMode(settings->getCallCameraMode());
}
// Deal with auto-answer.
if (!isOutgoing()) {
SettingsModel *settings = coreManager->getSettingsModel();
if (settings->getAutoAnswerStatus()) {
QTimer *timer = new QTimer(this);
@ -922,13 +932,26 @@ LinphoneEnums::ConferenceLayout CallModel::getConferenceVideoLayout() const{
}
void CallModel::changeConferenceVideoLayout(LinphoneEnums::ConferenceLayout layout){
shared_ptr<linphone::CallParams> params = CoreManager::getInstance()->getCore()->createCallParams(mCall);
auto coreManager = CoreManager::getInstance();
if( layout == LinphoneEnums::ConferenceLayoutGrid)
coreManager->getSettingsModel()->setCameraMode(coreManager->getSettingsModel()->getGridCameraMode());
else
coreManager->getSettingsModel()->setCameraMode(coreManager->getSettingsModel()->getActiveSpeakerCameraMode());
shared_ptr<linphone::CallParams> params = coreManager->getCore()->createCallParams(mCall);
params->setConferenceVideoLayout(LinphoneEnums::toLinphone(layout));
params->enableVideo(true);
mCall->update(params);
}
void CallModel::setConferenceVideoLayout(LinphoneEnums::ConferenceLayout layout){
auto settings = CoreManager::getInstance()->getSettingsModel();
if(mCall->getConference()){
if( layout == LinphoneEnums::ConferenceLayoutGrid)
settings->setCameraMode(settings->getGridCameraMode());
else
settings->setCameraMode(settings->getActiveSpeakerCameraMode());
}else
settings->setCameraMode(settings->getCallCameraMode());
if( mConferenceVideoLayout != layout){
mConferenceVideoLayout = layout;
emit conferenceVideoLayoutChanged();

View file

@ -26,6 +26,7 @@
#include "components/call/CallModel.hpp"
#include "components/core/CoreManager.hpp"
#include "components/participant/ParticipantDeviceModel.hpp"
#include "components/settings/SettingsModel.hpp"
#include "Camera.hpp"
#include "CameraDummy.hpp"
@ -58,6 +59,9 @@ Camera::Camera (QQuickItem *parent) : QQuickFramebufferObject(parent) {
);
mRefreshTimer->start();
mLastVideoDefinitionChecker.setInterval(500);
QObject::connect(&mLastVideoDefinitionChecker, &QTimer::timeout, this, &Camera::checkVideoDefinition, Qt::QueuedConnection);
}
Camera::~Camera(){
@ -102,11 +106,26 @@ void Camera::resetWindowId() const{
mIsWindowIdSet = false;
}
}
void Camera::checkVideoDefinition(){
if( mWindowIdLocation == WindowIdLocation::CorePreview){
auto videoDefinition = CoreManager::getInstance()->getSettingsModel()->getCurrentPreviewVideoDefinition();
if(videoDefinition["width"] != mLastVideoDefinition["width"] || videoDefinition["height"] != mLastVideoDefinition["height"]){
mLastVideoDefinition = videoDefinition;
emit videoDefinitionChanged();
}
}
}
void Camera::setWindowIdLocation(const WindowIdLocation& location){
if( mWindowIdLocation != location){
resetWindowId();// Location change: Reset old window ID.
mWindowIdLocation = location;
if( mWindowIdLocation == WindowIdLocation::CorePreview){
mLastVideoDefinition = CoreManager::getInstance()->getSettingsModel()->getCurrentPreviewVideoDefinition();
emit videoDefinitionChanged();
mLastVideoDefinitionChecker.start();
}else
mLastVideoDefinitionChecker.stop();
}
}
void Camera::updateWindowIdLocation(){

View file

@ -26,6 +26,7 @@
#include <QQuickFramebufferObject>
#include <mediastreamer2/msogl.h>
#include <QMutex>
#include <QTimer>
// =============================================================================
@ -60,6 +61,7 @@ public:
QQuickFramebufferObject::Renderer *createRenderer () const override;
Q_INVOKABLE void resetWindowId() const; // const to be used from createRenderer()
void checkVideoDefinition();
static QMutex mPreviewCounterMutex;
static int mPreviewCounter;
@ -73,6 +75,7 @@ signals:
void isReadyChanged();
void participantDeviceModelChanged(ParticipantDeviceModel *participantDeviceModel);
void requestNewRenderer();
void videoDefinitionChanged();
private:
CallModel *getCallModel () const;
@ -91,6 +94,9 @@ private:
void updateWindowIdLocation();
void removeParticipantDeviceModel();
QVariantMap mLastVideoDefinition;
QTimer mLastVideoDefinitionChecker;
bool mIsPreview = false;
bool mIsReady = false;
CallModel *mCallModel = nullptr;

View file

@ -560,6 +560,18 @@ QVariantMap SettingsModel::getVideoDefinition () const {
return createMapFromVideoDefinition(CoreManager::getInstance()->getCore()->getPreferredVideoDefinition());
}
QVariantMap SettingsModel::getCurrentPreviewVideoDefinition () const {
auto definition = CoreManager::getInstance()->getCore()->getCurrentPreviewVideoDefinition();
if(definition)
return createMapFromVideoDefinition(definition);
else {
QVariantMap map;
map["width"] = 0;
map["height"] = 0;
return map;
}
}
void SettingsModel::setVideoDefinition (const QVariantMap &definition) {
CoreManager::getInstance()->getCore()->setPreferredVideoDefinition(
definition.value("__definition").value<shared_ptr<const linphone::VideoDefinition>>()->clone()
@ -590,8 +602,7 @@ void SettingsModel::updateCameraMode(){
mConfig->setString("video", "other_display_mode", mode);
}
SettingsModel::CameraMode SettingsModel::getCameraMode() const{
auto mode = mConfig->getString("video", "main_display_mode", "OccupyAllSpace");
SettingsModel::CameraMode SettingsModel::cameraModefromString(const std::string& mode){
if( mode == "Hybrid")
return CameraMode::CameraMode_Hybrid;
else if( mode == "BlackBars")
@ -599,6 +610,18 @@ SettingsModel::CameraMode SettingsModel::getCameraMode() const{
else
return CameraMode::CameraMode_OccupyAllSpace;
}
std::string SettingsModel::toString(const CameraMode& mode){
std::string modeStr;
switch(mode){
case CameraMode::CameraMode_Hybrid : modeStr = "Hybrid";break;
case CameraMode::CameraMode_BlackBars: modeStr = "BlackBars";break;
default: modeStr = "OccupyAllSpace";
}
return modeStr;
}
SettingsModel::CameraMode SettingsModel::getCameraMode() const{
return cameraModefromString(mConfig->getString("video", "main_display_mode", "OccupyAllSpace"));
}
void SettingsModel::setCameraMode(CameraMode mode){
std::string modeToSet;
@ -612,6 +635,31 @@ void SettingsModel::setCameraMode(CameraMode mode){
emit cameraModeChanged();
}
SettingsModel::CameraMode SettingsModel::getGridCameraMode() const{
return cameraModefromString(mConfig->getString(UiSection, "main_grid_display_mode", "OccupyAllSpace"));
}
void SettingsModel::setGridCameraMode(CameraMode mode){
auto modeStd = toString(mode);
mConfig->setString(UiSection, "main_grid_display_mode", modeStd);
emit gridCameraModeChanged();
}
SettingsModel::CameraMode SettingsModel::getActiveSpeakerCameraMode() const{
return cameraModefromString(mConfig->getString(UiSection, "main_active_speaker_display_mode", "Hybrid"));
}
void SettingsModel::setActiveSpeakerCameraMode(CameraMode mode){
auto modeStd = toString(mode);
mConfig->setString(UiSection, "main_active_speaker_display_mode", modeStd);
emit activeSpeakerCameraModeChanged();
}
SettingsModel::CameraMode SettingsModel::getCallCameraMode() const{
return cameraModefromString(mConfig->getString(UiSection, "main_call_display_mode", "Hybrid"));
}
void SettingsModel::setCallCameraMode(CameraMode mode){
auto modeStd = toString(mode);
mConfig->setString(UiSection, "main_call_display_mode", modeStd);
emit callCameraModeChanged();
}
LinphoneEnums::ConferenceLayout SettingsModel::getVideoConferenceLayout() const{
return (LinphoneEnums::ConferenceLayout) mConfig->getInt(UiSection, "video_conference_layout", (int)LinphoneEnums::ConferenceLayoutActiveSpeaker);
}

View file

@ -96,7 +96,9 @@ class SettingsModel : public QObject {
Q_PROPERTY(bool showVideoCodecs READ getShowVideoCodecs WRITE setShowVideoCodecs NOTIFY showVideoCodecsChanged)
Q_PROPERTY(CameraMode cameraMode READ getCameraMode WRITE setCameraMode NOTIFY cameraModeChanged)
Q_PROPERTY(CameraMode gridCameraMode READ getGridCameraMode WRITE setGridCameraMode NOTIFY gridCameraModeChanged)
Q_PROPERTY(CameraMode activeSpeakerCameraMode READ getActiveSpeakerCameraMode WRITE setActiveSpeakerCameraMode NOTIFY activeSpeakerCameraModeChanged)
Q_PROPERTY(CameraMode callCameraMode READ getCallCameraMode WRITE setCallCameraMode NOTIFY callCameraModeChanged)
Q_PROPERTY(LinphoneEnums::ConferenceLayout videoConferenceLayout READ getVideoConferenceLayout WRITE setVideoConferenceLayout NOTIFY videoConferenceLayoutChanged)
@ -239,6 +241,8 @@ public:
CameraMode_BlackBars = 2
};
Q_ENUM(CameraMode);
static SettingsModel::CameraMode cameraModefromString(const std::string& mode);
static std::string toString(const CameraMode& mode);
SettingsModel (QObject *parent = Q_NULLPTR);
@ -350,6 +354,7 @@ public:
QVariantList getSupportedVideoDefinitions () const;
QVariantMap getVideoDefinition () const;
Q_INVOKABLE QVariantMap getCurrentPreviewVideoDefinition () const;
void setVideoDefinition (const QVariantMap &definition);
bool getVideoSupported () const;
@ -359,7 +364,14 @@ public:
void updateCameraMode();
CameraMode getCameraMode() const;
void setCameraMode(CameraMode mode);
Q_INVOKABLE void setCameraMode(CameraMode mode);
// Custom modes to set default for setCameraMode
CameraMode getGridCameraMode() const;
void setGridCameraMode(CameraMode mode);
CameraMode getActiveSpeakerCameraMode() const;
void setActiveSpeakerCameraMode(CameraMode mode);
CameraMode getCallCameraMode() const;
void setCallCameraMode(CameraMode mode);
LinphoneEnums::ConferenceLayout getVideoConferenceLayout() const;
void setVideoConferenceLayout(LinphoneEnums::ConferenceLayout layout);
@ -658,6 +670,9 @@ signals:
void showVideoCodecsChanged (bool status);
void cameraModeChanged();
void gridCameraModeChanged();
void activeSpeakerCameraModeChanged();
void callCameraModeChanged();
void videoConferenceLayoutChanged();
// Chat & calls. -------------------------------------------------------------

View file

@ -9,6 +9,8 @@ Loader {
// ---------------------------------------------------------------------------
property string label
property var labelFont: item ? item.labelFont : Application.font
property bool fitLabel: false
readonly property int orientation: parent.orientation
default property var _content: null
@ -27,6 +29,7 @@ Loader {
_content: loader._content
label: loader.label
maxWidth: loader.maxWidth
fitLabel: loader.fitLabel
}
}

View file

@ -8,9 +8,11 @@ import Common.Styles 1.0
RowLayout {
property alias label: label.text
property alias labelFont: label.font
default property var _content: null
property int maxWidth: FormHGroupStyle.content.maxWidth
property bool fitLabel : false
// ---------------------------------------------------------------------------
spacing: FormHGroupStyle.spacing
@ -19,9 +21,9 @@ RowLayout {
Text {
id: label
computeFitWidth: parent.fitLabel
Layout.preferredHeight: FormHGroupStyle.legend.height
Layout.preferredWidth: FormHGroupStyle.legend.width
Layout.preferredWidth: fitLabel ? Math.min(label.fitWidth, FormHGroupStyle.legend.width) : FormHGroupStyle.legend.width
color: FormHGroupStyle.legend.color
elide: Text.ElideRight

View file

@ -5,8 +5,9 @@ import Common.Styles 1.0
// =============================================================================
Row {
property int childrenCount: children.length
property double maxItemWidth: {
var n = children.length
var n = childrenCount
var curWidth = width / n - (n - 1) * spacing
var maxWidth = orientation === Qt.Horizontal
? FormHGroupStyle.legend.width + FormHGroupStyle.content.maxWidth + FormHGroupStyle.spacing

View file

@ -8,6 +8,7 @@ import Common.Styles 1.0
ColumnLayout {
property alias label: label.text
property alias labelFont: label.font
default property var _content: null
property int maxWidth: FormVGroupStyle.content.maxWidth

View file

@ -33,6 +33,8 @@ Item {
property bool d : callModel && callModel.cameraEnabled
property bool isReady: cameraLoader.item && cameraLoader.item.isReady
signal videoDefinitionChanged()
onCurrentDeviceChanged: {if(container.isCameraFromDevice) resetActive()}
function resetActive(){
resetTimer.resetActive()
@ -71,6 +73,7 @@ Item {
isPreview: container.isPreview
onRequestNewRenderer: {resetTimer.resetActive()}
onVideoDefinitionChanged: container.videoDefinitionChanged()
}
}
}

View file

@ -24,6 +24,7 @@ Item{
property bool showActiveSpeakerOverlay: true
property color color : camera.isReady ? CameraViewStyle.cameraBackgroundColor : CameraViewStyle.outBackgroundColor
signal closeRequested()
signal videoDefinitionChanged()
MouseArea{
anchors.fill: parent
@ -74,6 +75,7 @@ Item{
anchors.centerIn: parent
anchors.fill: parent
visible: false
onVideoDefinitionChanged: mainItem.videoDefinitionChanged()
}
OpacityMask{
id: renderedCamera

View file

@ -744,8 +744,7 @@ function write (fileName, text) {
function computeAvatarSize (container, maxSize) {
var height = 2*container.height/3
var width = 2*container.width/3
var width = 2*container.width/3
var size = height < maxSize && height > 0 ? height : maxSize
return size < width ? size : width
}

View file

@ -396,8 +396,8 @@ Rectangle {
id: cameraPreviewLoader
anchors.centerIn: parent
height: CallStyle.actionArea.userVideo.height
width: CallStyle.actionArea.userVideo.width
height: CallStyle.actionArea.height
width: 16*height/9
active: incall.width >= CallStyle.actionArea.lowWidth && incall.call.videoEnabled && !isFullScreen
sourceComponent: cameraPreview
Component {

View file

@ -10,7 +10,7 @@ import UtilsCpp 1.0
import Common.Styles 1.0
import App.Styles 1.0
import 'qrc:/ui/scripts/Utils/utils.js' as Utils
// =============================================================================
@ -39,11 +39,18 @@ Rectangle {
ColumnLayout {
anchors.fill: parent
RowLayout{
ColumnLayout{
Layout.preferredHeight: 60
Layout.alignment: Qt.AlignCenter
Layout.topMargin: 15
spacing: 20
spacing: 5
BusyIndicator {
Layout.alignment: Qt.AlignCenter
Layout.preferredHeight: WaitingRoomStyle.header.busyIndicator.height
Layout.preferredWidth: WaitingRoomStyle.header.busyIndicator.width
color: WaitingRoomStyle.header.busyIndicator.color
visible: mainItem.callModel && mainItem.callModel.isOutgoing
}
Text{
Layout.preferredHeight: 60
Layout.alignment: Qt.AlignCenter
@ -54,13 +61,6 @@ Rectangle {
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignVCenter
}
BusyIndicator {
Layout.alignment: Qt.AlignCenter
Layout.preferredHeight: WaitingRoomStyle.header.busyIndicator.height
Layout.preferredWidth: WaitingRoomStyle.header.busyIndicator.width
color: WaitingRoomStyle.header.busyIndicator.color
visible: mainItem.callModel && mainItem.callModel.isOutgoing
}
}
Text {
Layout.fillWidth: true
@ -77,7 +77,12 @@ Rectangle {
id: loader
Layout.fillWidth: true
Layout.fillHeight: true
property var previewDefinition: SettingsModel.getCurrentPreviewVideoDefinition()
onPreviewDefinitionChanged: console.log(Utils.printObject(previewDefinition))
property real cameraRatio: previewDefinition.height > 0 ? previewDefinition.width/previewDefinition.height : 1.0
property int minSize: Math.min( loader.height, loader.width)
property int cameraHeight: Math.min(Math.min(cameraRatio * minSize, loader.width) / cameraRatio, minSize)
property int cameraWidth: cameraRatio * cameraHeight
Item{
Layout.fillHeight: true
Layout.fillWidth: true
@ -85,8 +90,8 @@ Rectangle {
Flipable{
id: contentsStack
anchors.centerIn: parent
height: loader.minSize
width : height
height: loader.cameraHeight
width : loader.cameraWidth
property bool flipped: false
transform: Rotation {
@ -111,8 +116,9 @@ Rectangle {
id: previewLoader
showCloseButton: false
enabled: mainItem.previewLoaderEnabled
height: loader.minSize
width : height
height: loader.cameraHeight
width : loader.cameraWidth
onVideoDefinitionChanged: loader.previewDefinition = SettingsModel.getCurrentPreviewVideoDefinition()
ActionButton{
anchors.top: parent.top
anchors.right: parent.right
@ -125,12 +131,13 @@ Rectangle {
onClicked: mediaMenu.visible = !mediaMenu.visible
}
}
back: Avatar {
back: IncallAvatar {
id: avatar
height: Math.min( loader.height, loader.width)
width : height
anchors.centerIn: parent
height: Utils.computeAvatarSize(loader, CallStyle.container.avatar.maxSize)
width: height
backgroundColor: WaitingRoomStyle.avatar.backgroundColor
image: mainItem._sipAddressObserver && _sipAddressObserver.contact && mainItem._sipAddressObserver.contact.vcard.avatar
image: mainItem._sipAddressObserver && mainItem._sipAddressObserver.contact && mainItem._sipAddressObserver.contact.vcard.avatar
username: mainItem.conferenceInfoModel ? mainItem.conferenceInfoModel.subject
: (mainItem._sipAddressObserver ? UtilsCpp.getDisplayName(mainItem._sipAddressObserver.peerAddress) : '')
}
@ -160,7 +167,6 @@ Rectangle {
Layout.bottomMargin: 25
Layout.leftMargin: 25
Layout.rightMargin: 25
enabled: !mainItem.callModel
// Action buttons
RowLayout{
anchors.centerIn: parent
@ -169,6 +175,7 @@ Rectangle {
id: micro
visible: SettingsModel.muteMicrophoneEnabled
property bool microMuted: false
onMicroMutedChanged: if(mainItem.callModel) mainItem.callModel.microMuted = microMuted
isCustom: true
backgroundRadius: 90
colorSet: microMuted ? WaitingRoomStyle.buttons.microOff : WaitingRoomStyle.buttons.microOn
@ -187,6 +194,7 @@ Rectangle {
ActionSwitch {
id: speaker
property bool speakerMuted: false
onSpeakerMutedChanged: if(mainItem.callModel) mainItem.callModel.speakerMuted = speakerMuted
isCustom: true
backgroundRadius: 90
colorSet: speakerMuted ? WaitingRoomStyle.buttons.speakerOff : WaitingRoomStyle.buttons.speakerOn
@ -195,6 +203,7 @@ Rectangle {
ActionSwitch {
id: camera
property bool cameraEnabled: true
visible: !mainItem.callModel
isCustom: true
backgroundRadius: 90
colorSet: cameraEnabled ? WaitingRoomStyle.buttons.cameraOn : WaitingRoomStyle.buttons.cameraOff
@ -204,8 +213,8 @@ Rectangle {
}
RowLayout{
anchors.centerIn: parent
anchors.horizontalCenterOffset: loader.minSize/2 - modeChoice.width/2
anchors.horizontalCenterOffset: loader.cameraWidth/2 - modeChoice.width/2
visible: !mainItem.callModel
ActionButton{
id: modeChoice
property int selectedMode: SettingsModel.videoConferenceLayout
@ -239,7 +248,7 @@ Rectangle {
//: 'Start' : Button label for starting the conference.
text: qsTr('startButton')
capitalization: Font.AllUppercase
enabled: !mainItem.callModel
visible: !mainItem.callModel
onClicked: {CallsListModel.launchVideoCall(conferenceInfoModel.uri, '', 0,
{ video: modeChoice.selectedMode != 2

View file

@ -189,31 +189,90 @@ TabContainer {
// Diplay Video.
// -------------------------------------------------------------------------
Form {
id: videoDisplayForm
//: 'Video display' : Title for display parameters
title: qsTr('videoDisplayTitle')
width: parent.width
FormLine {
FormGroup {
//: 'Camera mode' : Label to choose a camera mode.
label: qsTr('videoModeLabel')
property var cameraModel:
//: 'Hybrid' : Hybrid mode for camera.
[{displayText:qsTr('videoHybrid')}
//: 'Occupy all space' : Camera mode for a centered cropping view.
, {displayText:qsTr('videoOccupyAllSpace')}
//: 'Black bars' : Camera mode for a fit view with black bars to keep ratio.
, {displayText:qsTr('videoBlackBars')}
]
function getId(index){
if(index == 0 )
return SettingsModel.CameraMode_Hybrid
else if(index == 1)
return SettingsModel.CameraMode_OccupyAllSpace
else
return SettingsModel.CameraMode_BlackBars
}
Row{
property int orientation: Qt.Horizontal
width: parent.width
Text{
id: videoModeLabel
height: parent.height
//: 'Camera modes' : Label to choose a camera modes.
text: qsTr('videoModeLabel')
font: videoGridMode.labelFont
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
ComboBox {
//: 'Hybrid' : Hybrid mode for camera.
model:[{text:qsTr('videoHybrid'), value: SettingsModel.CameraMode_Hybrid}
//: 'Occupy all space' : Camera mode for a centered cropping view.
, {text:qsTr('videoOccupyAllSpace'), value:SettingsModel.CameraMode_OccupyAllSpace}
//: 'Black bars' : Camera mode for a fit view with black bars to keep ratio.
,{text:qsTr('videoBlackBars'), value:SettingsModel.CameraMode_BlackBars}
]
textRole: 'text'
currentIndex: SettingsModel.cameraMode == SettingsModel.CameraMode_Hybrid
? 0
: SettingsModel.cameraMode == SettingsModel.CameraMode_OccupyAllSpace
? 1
: 2
onActivated: SettingsModel.cameraMode = model[index].value
}
FormLine {
spacing: 5
width: parent.width-videoModeLabel.implicitWidth
FormGroup {
id: videoGridMode
//: 'Mosaic' : Label to choose a camera mode.
label: qsTr('videoGridModeLabel') + ':'
fitLabel: true
ComboBox {
model: videoDisplayForm.cameraModel
textRole: 'displayText'
currentIndex: SettingsModel.gridCameraMode == SettingsModel.CameraMode_Hybrid
? 0
: SettingsModel.gridCameraMode == SettingsModel.CameraMode_OccupyAllSpace
? 1
: 2
onActivated: SettingsModel.gridCameraMode = videoDisplayForm.getId(index)
}
}
FormGroup {
//: 'Active speaker' : Label to choose a camera mode.
label: qsTr('videoActiveSpeakerModeLabel') + ':'
fitLabel: true
ComboBox {
model: videoDisplayForm.cameraModel
textRole: 'displayText'
currentIndex: SettingsModel.activeSpeakerCameraMode == SettingsModel.CameraMode_Hybrid
? 0
: SettingsModel.activeSpeakerCameraMode == SettingsModel.CameraMode_OccupyAllSpace
? 1
: 2
onActivated: SettingsModel.activeSpeakerCameraMode = videoDisplayForm.getId(index)
}
}
FormGroup {
//: 'Calls' : Label to choose a camera mode.
label: qsTr('videoCallsModeLabel') + ':'
fitLabel: true
ComboBox {
model: videoDisplayForm.cameraModel
textRole: 'displayText'
currentIndex: SettingsModel.callCameraMode == SettingsModel.CameraMode_Hybrid
? 0
: SettingsModel.callCameraMode == SettingsModel.CameraMode_OccupyAllSpace
? 1
: 2
onActivated: SettingsModel.callCameraMode = videoDisplayForm.getId(index)
}
}
}
}
@ -221,7 +280,7 @@ TabContainer {
FormGroup {
//: 'Default video layout' : Label to choose the default layout in video conference.
label: qsTr('videoLayout')
fitLabel: true
ComboBox {
//: 'Mosaic' : Mosaic layout invideo conference.
model:[{text:qsTr('videoMosaicLayout'), value:LinphoneEnums.ConferenceLayoutGrid}