diff --git a/linphone-app/assets/images/ics_copy_custom.svg b/linphone-app/assets/images/ics_copy_custom.svg new file mode 100644 index 000000000..7f3336f28 --- /dev/null +++ b/linphone-app/assets/images/ics_copy_custom.svg @@ -0,0 +1,46 @@ + + + + + + + + diff --git a/linphone-app/assets/images/ics_edit_custom.svg b/linphone-app/assets/images/ics_edit_custom.svg new file mode 100644 index 000000000..ad5ec6c72 --- /dev/null +++ b/linphone-app/assets/images/ics_edit_custom.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + diff --git a/linphone-app/assets/languages/en.ts b/linphone-app/assets/languages/en.ts index a12ef5d7c..1094da6c2 100644 --- a/linphone-app/assets/languages/en.ts +++ b/linphone-app/assets/languages/en.ts @@ -1757,6 +1757,20 @@ Click here: <a href="%1">%1</a> Conversation's devices + + ParticipantsListView + + participantList + 'Participant list' + Participant list + + + adminStatus + 'Admin' : Admin(istrator) + Admin + word for admin status + + ParticipantsView diff --git a/linphone-app/resources.qrc b/linphone-app/resources.qrc index 11eb802cd..480825098 100644 --- a/linphone-app/resources.qrc +++ b/linphone-app/resources.qrc @@ -92,6 +92,8 @@ assets/images/home_custom.svg assets/images/home_invite_friends.svg assets/images/home_use_linphone.svg + assets/images/ics_copy_custom.svg + assets/images/ics_edit_custom.svg assets/images/incoming_call_custom.svg assets/images/led_green.svg assets/images/led_orange.svg @@ -174,6 +176,7 @@ ui/modules/Common/Form/Buttons/SmallButton.qml ui/modules/Common/Form/Buttons/TextButtonA.qml ui/modules/Common/Form/Buttons/TextButtonB.qml + ui/modules/Common/Form/Buttons/TextButtonC.qml ui/modules/Common/Form/CheckBoxText.qml ui/modules/Common/Form/ComboBox.js ui/modules/Common/Form/ComboBox.qml @@ -243,6 +246,7 @@ ui/modules/Common/Styles/Form/Buttons/SmallButtonStyle.qml ui/modules/Common/Styles/Form/Buttons/TextButtonAStyle.qml ui/modules/Common/Styles/Form/Buttons/TextButtonBStyle.qml + ui/modules/Common/Styles/Form/Buttons/TextButtonCStyle.qml ui/modules/Common/Styles/Form/CheckBoxTextStyle.qml ui/modules/Common/Styles/Form/ComboBoxStyle.qml ui/modules/Common/Styles/Form/CommonItemDelegateStyle.qml diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.cpp b/linphone-app/src/components/chat-room/ChatRoomModel.cpp index e87169efd..90b45831e 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.cpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.cpp @@ -155,7 +155,7 @@ ChatRoomModel::ChatRoomModel (std::shared_ptr chatRoom, QObj if(mChatRoom){ mParticipantListModel = QSharedPointer::create(this); connect(mParticipantListModel.get(), &ParticipantListModel::participantsChanged, this, &ChatRoomModel::fullPeerAddressChanged); - auto participants = mChatRoom->getParticipants(); + auto participants = getParticipants(); for(auto participant : participants){ auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(Utils::coreStringToAppString((participant)->getAddress()->asString())); if(contact) { @@ -182,7 +182,7 @@ ChatRoomModel::~ChatRoomModel () { if(mDeleteChatRoom){ mDeleteChatRoom = false; if(CoreManager::getInstance()->getCore() ){ - auto participants = mChatRoom->getParticipants(); + auto participants = getParticipants(); std::list> participantsAddress; for(auto p : participants) participantsAddress.push_back(p->getAddress()->clone()); @@ -348,7 +348,7 @@ QString ChatRoomModel::getUsername () const { QString ChatRoomModel::getAvatar () const { if( mChatRoom && mChatRoom->getNbParticipants() == 1){ - auto participants = mChatRoom->getParticipants(); + auto participants = getParticipants(); auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(Utils::coreStringToAppString((*participants.begin())->getAddress()->asString())); if(contact) return contact->getVcardModel()->getAvatar(); @@ -358,7 +358,7 @@ QString ChatRoomModel::getAvatar () const { int ChatRoomModel::getPresenceStatus() const { if( mChatRoom && mChatRoom->getNbParticipants() == 1 && !isGroupEnabled()){ - auto participants = mChatRoom->getParticipants(); + auto participants = getParticipants(); auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(Utils::coreStringToAppString((*participants.begin())->getAddress()->asString())); if(contact) { return contact->getPresenceLevel(); @@ -369,10 +369,18 @@ int ChatRoomModel::getPresenceStatus() const { return -1; } -ParticipantListModel* ChatRoomModel::getParticipants() const{ +ParticipantListModel* ChatRoomModel::getParticipantListModel() const{ return mParticipantListModel.get(); } +std::list> ChatRoomModel::getParticipants() const{ + auto participantList = mChatRoom->getParticipants(); + auto me = mChatRoom->getMe(); + if( me ) + participantList.push_front(me); + return participantList; +} + int ChatRoomModel::getState() const { return mChatRoom ? (int)mChatRoom->getState() : 0; } @@ -476,7 +484,7 @@ QString ChatRoomModel::getParticipantAddress(){ return ""; } }else{ - auto participants = getParticipants(); + auto participants = getParticipantListModel(); if(participants->getCount() > 1) return participants->getAt(1)->getSipAddress(); else @@ -1110,7 +1118,7 @@ void ChatRoomModel::handlePresenceStatusReceived(std::shared_ptrclean(); canUpdatePresence = mChatRoom->getLocalAddress()->weakEqual(*itContactAddress); if(!canUpdatePresence && !isGroupEnabled() && mChatRoom->getNbParticipants() == 1){ - auto participants = mChatRoom->getParticipants(); + auto participants = getParticipants(); auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(Utils::coreStringToAppString((*participants.begin())->getAddress()->asString())); if(contact){ auto friendsAddresses = contact->getVcardModel()->getSipAddresses(); diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.hpp b/linphone-app/src/components/chat-room/ChatRoomModel.hpp index 44c40af02..44f69722d 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.hpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.hpp @@ -86,7 +86,7 @@ public: Q_PROPERTY(bool canBeEphemeral READ canBeEphemeral NOTIFY canBeEphemeralChanged) Q_PROPERTY(bool markAsReadEnabled READ markAsReadEnabled WRITE enableMarkAsRead NOTIFY markAsReadEnabledChanged) - Q_PROPERTY(ParticipantListModel* participants READ getParticipants CONSTANT) + Q_PROPERTY(ParticipantListModel* participants READ getParticipantListModel CONSTANT) Q_PROPERTY(ChatMessageModel * reply READ getReply WRITE setReply NOTIFY replyChanged) @@ -133,7 +133,8 @@ public: bool getIsRemoteComposing () const; bool isEntriesLoading() const; bool isBasic() const; - ParticipantListModel* getParticipants() const; + ParticipantListModel* getParticipantListModel() const; + std::list> getParticipants() const; std::shared_ptr getChatRoom(); QList getComposers(); QString getParticipantAddress(); // return peerAddress if not secure else return the first participant SIP address. diff --git a/linphone-app/src/components/conference/ConferenceAddModel.cpp b/linphone-app/src/components/conference/ConferenceAddModel.cpp index 724c3ae64..65889b886 100644 --- a/linphone-app/src/components/conference/ConferenceAddModel.cpp +++ b/linphone-app/src/components/conference/ConferenceAddModel.cpp @@ -114,7 +114,7 @@ bool ConferenceHelperModel::ConferenceAddModel::addToConference (const QString & } void ConferenceHelperModel::ConferenceAddModel::addParticipants(ChatRoomModel * model){ - auto participants = model->getChatRoom()->getParticipants(); + auto participants = model->getParticipants(); for( auto participant : participants){ if(participant){ addToConference(Utils::coreStringToAppString(participant->getAddress()->asString())); diff --git a/linphone-app/src/components/conference/ConferenceListener.cpp b/linphone-app/src/components/conference/ConferenceListener.cpp index 21b8a28c8..2228b6262 100644 --- a/linphone-app/src/components/conference/ConferenceListener.cpp +++ b/linphone-app/src/components/conference/ConferenceListener.cpp @@ -86,7 +86,7 @@ void ConferenceListener::onParticipantDeviceIsSpeakingChanged(const std::shared_ emit participantDeviceIsSpeakingChanged(participantDevice, isSpeaking); } void ConferenceListener::onStateChanged(const std::shared_ptr & conference, linphone::Conference::State newState){ - qDebug() << "onStateChanged"; + qDebug() << "onStateChanged:" << (int)newState; emit conferenceStateChanged(newState); } void ConferenceListener::onSubjectChanged(const std::shared_ptr & conference, const std::string & subject){ diff --git a/linphone-app/src/components/conference/ConferenceModel.cpp b/linphone-app/src/components/conference/ConferenceModel.cpp index db5043b88..1d596c7bf 100644 --- a/linphone-app/src/components/conference/ConferenceModel.cpp +++ b/linphone-app/src/components/conference/ConferenceModel.cpp @@ -110,15 +110,22 @@ ParticipantModel* ConferenceModel::getLocalParticipant() const{ return mLocalParticipant.get(); } -ParticipantListModel* ConferenceModel::getParticipants() const{ +ParticipantListModel* ConferenceModel::getParticipantListModel() const{ return mParticipantListModel.get(); } +std::list> ConferenceModel::getParticipantList()const{ + auto participantList = mConference->getParticipantList(); + auto me = mConference->getMe(); + if( me ) + participantList.push_front(me); + return participantList; +} //----------------------------------------------------------------------------------------------------------------------- // LINPHONE LISTENERS //----------------------------------------------------------------------------------------------------------------------- void ConferenceModel::onParticipantAdded(const std::shared_ptr & participant){ - qDebug() << "Added call, participant count: " << mConference->getParticipantList().size(); + qDebug() << "Added call, participant count: " << getParticipantList().size(); if(!mLocalParticipant){ if(updateLocalParticipant()) emit localParticipantChanged(); diff --git a/linphone-app/src/components/conference/ConferenceModel.hpp b/linphone-app/src/components/conference/ConferenceModel.hpp index 269d7d704..afa9d5d4c 100644 --- a/linphone-app/src/components/conference/ConferenceModel.hpp +++ b/linphone-app/src/components/conference/ConferenceModel.hpp @@ -39,7 +39,7 @@ public: Q_PROPERTY(QString subject READ getSubject NOTIFY subjectChanged) Q_PROPERTY(QDateTime startDate READ getStartDate CONSTANT) - Q_PROPERTY(ParticipantListModel* participants READ getParticipants CONSTANT) + Q_PROPERTY(ParticipantListModel* participants READ getParticipantListModel CONSTANT) Q_PROPERTY(ParticipantModel* localParticipant READ getLocalParticipant NOTIFY localParticipantChanged) @@ -54,7 +54,8 @@ public: QDateTime getStartDate() const; Q_INVOKABLE qint64 getElapsedSeconds() const; Q_INVOKABLE ParticipantModel* getLocalParticipant() const; - ParticipantListModel* getParticipants() const; + ParticipantListModel* getParticipantListModel() const; + std::list> getParticipantList() const; // SDK exclude me. We want to get ALL participants. virtual void onParticipantAdded(const std::shared_ptr & participant); virtual void onParticipantRemoved(const std::shared_ptr & participant); diff --git a/linphone-app/src/components/other/colors/ColorListModel.hpp b/linphone-app/src/components/other/colors/ColorListModel.hpp index c296b242f..1ae8788f9 100644 --- a/linphone-app/src/components/other/colors/ColorListModel.hpp +++ b/linphone-app/src/components/other/colors/ColorListModel.hpp @@ -87,6 +87,7 @@ class ColorListModel : public ProxyListModel { ADD_COLOR("s", "#96be64", "Security") + ADD_COLOR("t", "#C2C2C2", "Title Header") ADD_COLOR("u", "#D2D2D2", "Menu border (message)") ADD_COLOR("v", "#E7E7E7", "Menu pressed (message)") @@ -117,6 +118,11 @@ class ColorListModel : public ProxyListModel { ADD_COLOR("conference_out_avatar_bg", "#A1A1A1", "Conferences: Background avatar") ADD_COLOR("conference_bg", "#798791", "Conferences: Background") + ADD_COLOR("validation", "#96C11F", "Background for validation on buttons") + ADD_COLOR("validation_h", "#7B9D1B", "Hovered background for validation on buttons") + + ADD_COLOR("readonly_fg", "#B1B1B1", "Chat text area Readonly foreground") + // Standard actions // diff --git a/linphone-app/src/components/participant/ParticipantListModel.cpp b/linphone-app/src/components/participant/ParticipantListModel.cpp index 1800c299c..ae21133df 100644 --- a/linphone-app/src/components/participant/ParticipantListModel.cpp +++ b/linphone-app/src/components/participant/ParticipantListModel.cpp @@ -62,7 +62,8 @@ ParticipantListModel::ParticipantListModel (ConferenceModel * conferenceModel, Q connect(mConferenceModel, &ConferenceModel::participantAdded, this, QOverload &>::of(&ParticipantListModel::onParticipantAdded)); connect(mConferenceModel, &ConferenceModel::participantRemoved, this, QOverload &>::of(&ParticipantListModel::onParticipantRemoved)); connect(mConferenceModel, &ConferenceModel::participantAdminStatusChanged, this, QOverload &>::of(&ParticipantListModel::onParticipantAdminStatusChanged)); - + + connect(mConferenceModel, &ConferenceModel::conferenceStateChanged, this, &ParticipantListModel::onStateChanged); //connect(mConferenceModel, &ConferenceModel::participantDeviceAdded, this, &ParticipantListModel::onParticipantDeviceAdded); //connect(mConferenceModel, &ConferenceModel::participantDeviceRemoved, this, &ParticipantListModel::onParticipantDeviceRemoved); @@ -147,7 +148,8 @@ bool ParticipantListModel::contains(const QString& address) const{ void ParticipantListModel::updateParticipants () { if( mChatRoomModel || mConferenceModel) { bool changed = false; - auto dbParticipants = (mChatRoomModel ? mChatRoomModel->getChatRoom()->getParticipants() : mConferenceModel->getConference()->getParticipantList()); + auto dbParticipants = (mChatRoomModel ? mChatRoomModel->getParticipants() : mConferenceModel->getParticipantList()); + /* std::shared_ptr me; if( mChatRoomModel ) me = mChatRoomModel->getChatRoom()->getMe(); @@ -155,7 +157,7 @@ void ParticipantListModel::updateParticipants () { me = mConferenceModel->getLocalParticipant()->getParticipant(); if(me) dbParticipants.push_front(me); - + */ //Remove left participants //for(auto participant : mList){ auto itParticipant = mList.begin(); @@ -359,3 +361,11 @@ void ParticipantListModel::onParticipantRegistrationSubscriptionRequested(const } void ParticipantListModel::onParticipantRegistrationUnsubscriptionRequested(const std::shared_ptr & participantAddress){ } + +void ParticipantListModel::onStateChanged(){ + if(mConferenceModel){ + if(mConferenceModel->getConference()->getState() == linphone::Conference::State::Created){ + updateParticipants(); + } + } +} diff --git a/linphone-app/src/components/participant/ParticipantListModel.hpp b/linphone-app/src/components/participant/ParticipantListModel.hpp index efe0d89e0..8c78ba2b2 100644 --- a/linphone-app/src/components/participant/ParticipantListModel.hpp +++ b/linphone-app/src/components/participant/ParticipantListModel.hpp @@ -82,6 +82,7 @@ public slots: void onParticipantDeviceRemoved(const std::shared_ptr & eventLog); void onParticipantRegistrationSubscriptionRequested(const std::shared_ptr & participantAddress); void onParticipantRegistrationUnsubscriptionRequested(const std::shared_ptr & participantAddress); + void onStateChanged(); signals: void securityLevelChanged(); diff --git a/linphone-app/src/components/participant/ParticipantModel.hpp b/linphone-app/src/components/participant/ParticipantModel.hpp index bb237b8c4..a7595c43f 100644 --- a/linphone-app/src/components/participant/ParticipantModel.hpp +++ b/linphone-app/src/components/participant/ParticipantModel.hpp @@ -42,6 +42,7 @@ public: Q_PROPERTY(ContactModel *contactModel READ getContactModel CONSTANT) Q_PROPERTY(QString sipAddress READ getSipAddress WRITE setSipAddress NOTIFY sipAddressChanged) Q_PROPERTY(bool adminStatus READ getAdminStatus WRITE setAdminStatus NOTIFY adminStatusChanged) + Q_PROPERTY(bool isMe READ isMe CONSTANT) Q_PROPERTY(QDateTime creationTime READ getCreationTime CONSTANT) Q_PROPERTY(bool focus READ isFocus CONSTANT) Q_PROPERTY(int securityLevel READ getSecurityLevel NOTIFY securityLevelChanged) diff --git a/linphone-app/src/components/participant/ParticipantProxyModel.cpp b/linphone-app/src/components/participant/ParticipantProxyModel.cpp index cc8b4949a..b6cc37171 100644 --- a/linphone-app/src/components/participant/ParticipantProxyModel.cpp +++ b/linphone-app/src/components/participant/ParticipantProxyModel.cpp @@ -70,7 +70,8 @@ QVariantList ParticipantProxyModel::getParticipants() const{ } int ParticipantProxyModel::getCount() const{ - return qobject_cast(sourceModel())->rowCount(); + auto model = getParticipantListModel(); + return model ? model->rowCount() : 0; } bool ParticipantProxyModel::getShowMe() const{ @@ -83,7 +84,7 @@ void ParticipantProxyModel::setChatRoomModel(ChatRoomModel * chatRoomModel){ if(!mChatRoomModel || mChatRoomModel != chatRoomModel){ mChatRoomModel = chatRoomModel; if(mChatRoomModel) { - auto participants = mChatRoomModel->getParticipants(); + auto participants = mChatRoomModel->getParticipantListModel(); setSourceModel(participants); emit participantListModelChanged(); for(int i = 0 ; i < participants->getCount() ; ++i) @@ -101,7 +102,7 @@ void ParticipantProxyModel::setConferenceModel(ConferenceModel * conferenceModel if(!mConferenceModel || mConferenceModel != conferenceModel){ mConferenceModel = conferenceModel; if(mConferenceModel) { - auto participants = mConferenceModel->getParticipants(); + auto participants = mConferenceModel->getParticipantListModel(); setSourceModel(participants); emit participantListModelChanged(); for(int i = 0 ; i < participants->getCount() ; ++i) @@ -134,6 +135,16 @@ void ParticipantProxyModel::addAddress(const QString& address){ connect(participant.get(), &ParticipantModel::invitationTimeout, this, &ParticipantProxyModel::removeModel); participant->startInvitation(); } + if( mConferenceModel && mConferenceModel->getConference()){ + //mConferenceModel->getConference()->addParticipant(Utils::interpretUrl(address)); + std::list> addressesToInvite; + addressesToInvite.push_back(Utils::interpretUrl(address)); + auto callParameters = CoreManager::getInstance()->getCore()->createCallParams(mConferenceModel->getConference()->getCall()); + + mConferenceModel->getConference()->inviteParticipants(addressesToInvite, callParameters); + connect(participant.get(), &ParticipantModel::invitationTimeout, this, &ParticipantProxyModel::removeModel); + participant->startInvitation(); + } emit countChanged(); emit addressAdded(address); } diff --git a/linphone-app/src/utils/LinphoneEnums.cpp b/linphone-app/src/utils/LinphoneEnums.cpp index 3d1f2d332..dc5c07ac3 100644 --- a/linphone-app/src/utils/LinphoneEnums.cpp +++ b/linphone-app/src/utils/LinphoneEnums.cpp @@ -30,6 +30,7 @@ void LinphoneEnums::registerMetaTypes(){ qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); + qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); } diff --git a/linphone-app/ui/modules/Common/Form/Buttons/TextButtonC.qml b/linphone-app/ui/modules/Common/Form/Buttons/TextButtonC.qml new file mode 100644 index 000000000..1dbf90208 --- /dev/null +++ b/linphone-app/ui/modules/Common/Form/Buttons/TextButtonC.qml @@ -0,0 +1,22 @@ +import Common.Styles 1.0 + +// ============================================================================= + +AbstractTextButton { + property var textButtonStyle : TextButtonCStyle + + colorDisabled: textButtonStyle.backgroundColor.disabled + colorHovered: textButtonStyle.backgroundColor.hovered + colorNormal: textButtonStyle.backgroundColor.normal + colorPressed: textButtonStyle.backgroundColor.pressed + + textColorDisabled: textButtonStyle.textColor.disabled + textColorHovered: textButtonStyle.textColor.hovered + textColorNormal: textButtonStyle.textColor.normal + textColorPressed: textButtonStyle.textColor.pressed + + borderColorDisabled: (textButtonStyle.borderColor?textButtonStyle.borderColor.disabled:colorDisabled) + borderColorHovered: (textButtonStyle.borderColor?textButtonStyle.borderColor.hovered:colorHovered) + borderColorNormal: (textButtonStyle.borderColor?textButtonStyle.borderColor.normal:colorNormal) + borderColorPressed: (textButtonStyle.borderColor?textButtonStyle.borderColor.pressed:colorPressed) +} diff --git a/linphone-app/ui/modules/Common/Form/Fields/TextField.qml b/linphone-app/ui/modules/Common/Form/Fields/TextField.qml index 239160499..2c3c74efe 100644 --- a/linphone-app/ui/modules/Common/Form/Fields/TextField.qml +++ b/linphone-app/ui/modules/Common/Form/Fields/TextField.qml @@ -70,7 +70,7 @@ Controls.TextField { } } - color: textFieldStyle.text.color + color: textField.readOnly ? textFieldStyle.text.readOnly : textFieldStyle.text.normal font.pointSize: textFieldStyle.text.pointSize rightPadding: textFieldStyle.text.rightPadding + toolsContainer.width selectByMouse: true diff --git a/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonAStyle.qml b/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonAStyle.qml index ea0adee6b..ac5babecb 100644 --- a/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonAStyle.qml +++ b/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonAStyle.qml @@ -1,6 +1,6 @@ pragma Singleton import QtQml 2.2 - +// TextButtonAStyle (Grey) import ColorsList 1.0 // ============================================================================= diff --git a/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonBStyle.qml b/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonBStyle.qml index 710527c77..96e940ed1 100644 --- a/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonBStyle.qml +++ b/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonBStyle.qml @@ -1,4 +1,4 @@ -// TextButtonBStyle +// TextButtonBStyle (Primary) pragma Singleton import QtQml 2.2 import ColorsList 1.0 diff --git a/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonCStyle.qml b/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonCStyle.qml new file mode 100644 index 000000000..fb1fc563e --- /dev/null +++ b/linphone-app/ui/modules/Common/Styles/Form/Buttons/TextButtonCStyle.qml @@ -0,0 +1,23 @@ +// TextButtonCStyle (Green) +pragma Singleton +import QtQml 2.2 +import ColorsList 1.0 +// ============================================================================= + +QtObject { + property string sectionName: 'TextButtonC' + property QtObject backgroundColor: QtObject { + property color disabled: ColorsList.add(sectionName+'_bg_d', 'i30').color + property color hovered: ColorsList.add(sectionName+'_bg_h', 'validation_h').color + property color normal: ColorsList.add(sectionName+'_bg_n', 'validation').color + property color pressed: ColorsList.add(sectionName+'_bg_p', 'i').color + } + + property QtObject textColor: QtObject { + property color disabled: ColorsList.add(sectionName+'_text_d', 'q').color + property color hovered: ColorsList.add(sectionName+'_text_h', 'q').color + property color normal: ColorsList.add(sectionName+'_text_n', 'q').color + property color pressed: ColorsList.add(sectionName+'_text_p', 'q').color + } + property QtObject borderColor : backgroundColor +} diff --git a/linphone-app/ui/modules/Common/Styles/Form/Fields/TextFieldStyle.qml b/linphone-app/ui/modules/Common/Styles/Form/Fields/TextFieldStyle.qml index 76e6b3745..abd894e8e 100644 --- a/linphone-app/ui/modules/Common/Styles/Form/Fields/TextFieldStyle.qml +++ b/linphone-app/ui/modules/Common/Styles/Form/Fields/TextFieldStyle.qml @@ -9,89 +9,122 @@ QtObject { property string sectionName: 'TextField' property QtObject normal : QtObject { property QtObject background: QtObject { - property int height: 36 - property int width: 200 - - property int radius: 4 - - property QtObject border: QtObject { - property QtObject color: QtObject { - property color error: ColorsList.add(sectionName+'_n_bg_border_error', 'error').color - property color normal: ColorsList.add(sectionName+'_n_bg_border_n', 'c').color - property color selected: ColorsList.add(sectionName+'_n_bg_border_c', 'i').color + property int height: 36 + property int width: 200 + + property int radius: 4 + + property QtObject border: QtObject { + property QtObject color: QtObject { + property color error: ColorsList.add(sectionName+'_n_bg_border_error', 'error').color + property color normal: ColorsList.add(sectionName+'_n_bg_border_n', 'c').color + property color selected: ColorsList.add(sectionName+'_n_bg_border_c', 'i').color + } + + property int width: 1 + } + + property QtObject color: QtObject { + property color normal: ColorsList.add(sectionName+'_n_bg_n', 'q').color + property color readOnly: ColorsList.add(sectionName+'_n_bg_readonly', 'e').color } - - property int width: 1 - } - - property QtObject color: QtObject { - property color normal: ColorsList.add(sectionName+'_n_bg_n', 'q').color - property color readOnly: ColorsList.add(sectionName+'_n_bg_readonly', 'e').color - } } - + property QtObject text: QtObject { - property color color: ColorsList.add(sectionName+'_n_text', 'd').color - property int pointSize: Units.dp * 10 - property int rightPadding: 10 + property color normal: ColorsList.add(sectionName+'_n_text', 'd').color + property color readOnly: ColorsList.add(sectionName+'_n_text_readonly', 'd').color + property int pointSize: Units.dp * 10 + property int rightPadding: 10 } } property QtObject unbordered : QtObject { property QtObject background: QtObject { - property int height: 36 - property int width: 200 - - property int radius: 4 - - property QtObject border: QtObject { - property QtObject color: QtObject { - property color error: 'black' - property color normal: 'black' - property color selected: 'black' + property int height: 36 + property int width: 200 + + property int radius: 4 + + property QtObject border: QtObject { + property QtObject color: QtObject { + property color error: 'black' + property color normal: 'black' + property color selected: 'black' + } + + property int width: 0 + } + + property QtObject color: QtObject { + property color normal: ColorsList.add(sectionName+'_unbordered_bg_n', 'q').color + property color readOnly: ColorsList.add(sectionName+'_unbordered_bg_readonly', 'e').color } - - property int width: 0 - } - - property QtObject color: QtObject { - property color normal: ColorsList.add(sectionName+'_unbordered_bg_n', 'q').color - property color readOnly: ColorsList.add(sectionName+'_unbordered_bg_readonly', 'e').color - } } - + property QtObject text: QtObject { - property color color: ColorsList.add(sectionName+'_unbordered_text', 'd').color - property int pointSize: Units.dp * 10 - property int rightPadding: 10 + property color normal: ColorsList.add(sectionName+'_unbordered_text', 'd').color + property color readOnly: ColorsList.add(sectionName+'_unbordered_text_readonly', 'd').color + property int pointSize: Units.dp * 10 + property int rightPadding: 10 } } property QtObject flat : QtObject { property QtObject background: QtObject { - property int height: 36 - property int width: 200 - - property int radius: 0 - - property QtObject border: QtObject { - property QtObject color: QtObject { - property color error: 'black' - property color normal: 'black' - property color selected: 'black' + property int height: 36 + property int width: 200 + + property int radius: 0 + + property QtObject border: QtObject { + property QtObject color: QtObject { + property color error: 'black' + property color normal: 'black' + property color selected: 'black' + } + + property int width: 0 + } + + property QtObject color: QtObject { + property color normal: ColorsList.add(sectionName+'_flat_bg_n', 'q').color + property color readOnly: ColorsList.add(sectionName+'_flat_bg_readonly', 'e').color } - - property int width: 0 - } - - property QtObject color: QtObject { - property color normal: ColorsList.add(sectionName+'_flat_bg_n', 'q').color - property color readOnly: ColorsList.add(sectionName+'_flat_bg_readonly', 'e').color - } } - + property QtObject text: QtObject { - property color color: ColorsList.add(sectionName+'_flat_text', 'd').color - property int pointSize: Units.dp * 10 - property int rightPadding: 10 + property color normal: ColorsList.add(sectionName+'_flat_text', 'd').color + property color readonly: ColorsList.add(sectionName+'_flat_text_readonly', 'd').color + property int pointSize: Units.dp * 10 + property int rightPadding: 10 + } + } + property QtObject flatInverse : QtObject { + property QtObject background: QtObject { + property int height: 36 + property int width: 200 + + property int radius: 0 + + property QtObject border: QtObject { + property QtObject color: QtObject { + property color error: 'black' + property color normal: 'black' + property color selected: 'black' + } + + property int width: 0 + } + + property QtObject color: QtObject { + property color normal: ColorsList.add(sectionName+'_flat_inv_bg_n', 'q').color + property color readOnly: ColorsList.add(sectionName+'_flat_inv_bg_readonly', 'q').color + } + } + + property QtObject text: QtObject { + property color color: ColorsList.add(sectionName+'_flat_inv_text', 'd').color + property color readOnly: ColorsList.add(sectionName+'_flat_inv_readonly', 'readonly_fg').color + property int pointSize: Units.dp * 10 + property int rightPadding: 10 } } } diff --git a/linphone-app/ui/modules/Common/Styles/qmldir b/linphone-app/ui/modules/Common/Styles/qmldir index fb1e8ea95..b2ac69445 100644 --- a/linphone-app/ui/modules/Common/Styles/qmldir +++ b/linphone-app/ui/modules/Common/Styles/qmldir @@ -28,6 +28,7 @@ singleton FileChooserButtonStyle 1.0 Form/Buttons/FileChooserButtonStyle.qml singleton SmallButtonStyle 1.0 Form/Buttons/SmallButtonStyle.qml singleton TextButtonAStyle 1.0 Form/Buttons/TextButtonAStyle.qml singleton TextButtonBStyle 1.0 Form/Buttons/TextButtonBStyle.qml +singleton TextButtonCStyle 1.0 Form/Buttons/TextButtonCStyle.qml singleton NumericFieldStyle 1.0 Form/Fields/NumericFieldStyle.qml singleton TextAreaFieldStyle 1.0 Form/Fields/TextAreaFieldStyle.qml diff --git a/linphone-app/ui/modules/Common/qmldir b/linphone-app/ui/modules/Common/qmldir index da5bed353..c59156153 100644 --- a/linphone-app/ui/modules/Common/qmldir +++ b/linphone-app/ui/modules/Common/qmldir @@ -39,6 +39,7 @@ ExclusiveButtons 1.0 Form/Buttons/ExclusiveButtons.qml FileChooserButton 1.0 Form/Buttons/FileChooserButton.qml TextButtonA 1.0 Form/Buttons/TextButtonA.qml TextButtonB 1.0 Form/Buttons/TextButtonB.qml +TextButtonC 1.0 Form/Buttons/TextButtonC.qml HexField 1.0 Form/Fields/HexField.qml NumericField 1.0 Form/Fields/NumericField.qml diff --git a/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml b/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml index 890ae25ac..f86c78e63 100644 --- a/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml +++ b/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml @@ -193,6 +193,7 @@ Loader{ font.weight: Font.Bold text: 'Description :' + visible: description.text != '' } TextAreaField{ id: description @@ -204,12 +205,67 @@ Loader{ textColor: ChatCalendarMessageStyle.description.color font.pointSize: ChatCalendarMessageStyle.description.pointSize border.width: 0 + visible: description.text != '' + //font.weight: Font.Bold //elide: Text.ElideRight //wrapMode: TextEdit.WordWrap text: mainItem.conferenceInfoModel.description } + Text{ + id: linkTitle + Layout.fillWidth: true + Layout.leftMargin: 10 + color: ChatCalendarMessageStyle.subject.color + font.pointSize: ChatCalendarMessageStyle.subject.pointSize + font.weight: Font.Bold + + text: 'Lien de la conférence' + } + RowLayout{ + Layout.fillWidth: true + Layout.fillHeight: true + Layout.leftMargin: 10 + Layout.rightMargin: 60 + spacing: 10 + TextField{ + id: uriField + readOnly: true + Layout.fillWidth: true + textFieldStyle: TextFieldStyle.flatInverse + text: mainItem.conferenceInfoModel.uri + + } + ActionButton{ + iconSize: uriField.height + isCustom: true + colorSet: ChatCalendarMessageStyle.copyLinkButton + backgroundRadius: width/2 + } + } + RowLayout{ + Layout.fillWidth: true + Layout.topMargin: 10 + Layout.rightMargin: 10 + spacing: 10 + Item{ + Layout.fillWidth: true + } + TextButtonC{ + text: 'REJOINDRE' + } + ActionButton{ + isCustom: true + colorSet: ChatCalendarMessageStyle.editButton + backgroundRadius: width/2 + } + ActionButton{ + isCustom: true + colorSet: ChatCalendarMessageStyle.deleteButton + backgroundRadius: width/2 + } + } } } } diff --git a/linphone-app/ui/modules/Linphone/Styles/Chat/ChatCalendarMessageStyle.qml b/linphone-app/ui/modules/Linphone/Styles/Chat/ChatCalendarMessageStyle.qml index e57443f62..edae3c1c9 100644 --- a/linphone-app/ui/modules/Linphone/Styles/Chat/ChatCalendarMessageStyle.qml +++ b/linphone-app/ui/modules/Linphone/Styles/Chat/ChatCalendarMessageStyle.qml @@ -11,101 +11,120 @@ QtObject { property int topMargin: 0 property int widthMargin: 5 property int minWidth: 300 - - property int actionButtonsSize: 36 - property int avatarSize: 30 - property int deleteButtonSize: 22 - property int height: 50 - property int leftMargin: 40 - property int bottomMargin: 10 - property int presenceLevelSize: 12 - property int rightMargin: 25 - property int spacing: 15 - property int lineHeight: 20 - - property QtObject backgroundColor: QtObject { - property color normal: ColorsList.add(sectionName+'_conference_bg_n', 'conference_entry_bg').color - property color hovered: ColorsList.add(sectionName+'_conference_bg_h', 'g10').color - } - - property QtObject border: QtObject { - property color color: ColorsList.add(sectionName+'_conference_border', 'f').color - property int width: 1 - } - - property QtObject indicator: QtObject { - property color color: ColorsList.add(sectionName+'_conference_indicator', 'i').color - property int width: 5 - } - - property QtObject schedule: QtObject { - property int spacing: 0 - property int pointSize: Units.dp * 9 - property string icon : 'schedule_custom' - property int iconSize: 30 - property color color: ColorsList.add(sectionName+'_schedule', 'j').color - } - property QtObject subject: QtObject { - property int spacing: 5 - property int pointSize: Units.dp * 11 - property color color: ColorsList.add(sectionName+'_subject', 'j').color - } - property QtObject description: QtObject { - property int spacing: 5 - property int pointSize: Units.dp * 9 - property color color: ColorsList.add(sectionName+'_description', 'j').color - } - property QtObject participants: QtObject { - property int spacing: 5 - property int pointSize: Units.dp * 9 - property string icon : 'calendar_participants_custom' - property int iconSize: 30 - property color color: ColorsList.add(sectionName+'_participants', 'j').color - } - - property QtObject gotoButton: QtObject{ - property int iconSize: 20 - property string name : 'goto' - property string icon : 'transfer_custom' - property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_n', icon, 's_n_b_bg').color - property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_h', icon, 's_h_b_bg').color - property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_p', icon, 's_p_b_bg').color - property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_n', icon, 's_n_b_fg').color - property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_h', icon, 's_h_b_fg').color - property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_p', icon, 's_p_b_fg').color - } - property QtObject infoButton: QtObject{ - property int iconSize: 35 - property string name : 'info' - property string icon : 'menu_info_custom' - property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_n', icon, 'me_n_b_bg').color - property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_h', icon, 'me_h_b_bg').color - property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_p', icon, 'me_p_b_bg').color - property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_n', icon, 'me_n_b_fg').color - property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_h', icon, 'me_h_b_fg').color - property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_p', icon, 'me_p_b_fg').color - } - - property QtObject organizer: QtObject { - property color color: ColorsList.add(sectionName+'_conference_organizer', 'j').color - property int pointSize: Units.dp * 9 - property int width: 220 - } + property int actionButtonsSize: 36 + property int avatarSize: 30 + property int deleteButtonSize: 22 + property int height: 50 + property int leftMargin: 40 + property int bottomMargin: 10 + property int presenceLevelSize: 12 + property int rightMargin: 25 + property int spacing: 15 + property int lineHeight: 20 + //property color : ColorsList.add(sectionName+'_conference_bg_n', 'conference_entry_bg').color - /* - property color color: ColorsList.add(sectionName, 'q').color - property QtObject header: QtObject{ - property color color: ColorsList.add(sectionName+'_header', 'h').color - property int pointSizeOffset: -3 - property QtObject forwardIcon: QtObject{ - property string icon : 'menu_forward_custom' - property int iconSize: 22 - } + property QtObject backgroundColor: QtObject { + property color normal: ColorsList.add(sectionName+'_conference_bg_n', 'conference_entry_bg').color + property color hovered: ColorsList.add(sectionName+'_conference_bg_h', 'g10').color + } + + property QtObject border: QtObject { + property color color: ColorsList.add(sectionName+'_conference_border', 'f').color + property int width: 1 + } + + property QtObject indicator: QtObject { + property color color: ColorsList.add(sectionName+'_conference_indicator', 'i').color + property int width: 5 + } + + property QtObject schedule: QtObject { + property int spacing: 0 + property int pointSize: Units.dp * 9 + property string icon : 'schedule_custom' + property int iconSize: 30 + property color color: ColorsList.add(sectionName+'_schedule', 'j').color + } + property QtObject subject: QtObject { + property int spacing: 5 + property int pointSize: Units.dp * 11 + property color color: ColorsList.add(sectionName+'_subject', 'j').color + } + property QtObject description: QtObject { + property int spacing: 5 + property int pointSize: Units.dp * 9 + property color color: ColorsList.add(sectionName+'_description', 'j').color + } + property QtObject participants: QtObject { + property int spacing: 5 + property int pointSize: Units.dp * 9 + property string icon : 'calendar_participants_custom' + property int iconSize: 30 + property color color: ColorsList.add(sectionName+'_participants', 'j').color + } + + property QtObject gotoButton: QtObject{ + property int iconSize: 20 + property string name : 'goto' + property string icon : 'transfer_custom' + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_n', icon, 's_n_b_bg').color + property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_h', icon, 's_h_b_bg').color + property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_p', icon, 's_p_b_bg').color + property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_n', icon, 's_n_b_fg').color + property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_h', icon, 's_h_b_fg').color + property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_p', icon, 's_p_b_fg').color + } + property QtObject infoButton: QtObject{ + property int iconSize: 35 + property string name : 'info' + property string icon : 'menu_info_custom' + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_n', icon, 'me_n_b_bg').color + property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_h', icon, 'me_h_b_bg').color + property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_p', icon, 'me_p_b_bg').color + property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_n', icon, 'me_n_b_fg').color + property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_h', icon, 'me_h_b_fg').color + property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_p', icon, 'me_p_b_fg').color + } + + property QtObject organizer: QtObject { + property color color: ColorsList.add(sectionName+'_conference_organizer', 'j').color + property int pointSize: Units.dp * 9 + property int width: 220 + } + property QtObject copyLinkButton: QtObject{ + property int iconSize: 20 + property string name : 'copy' + property string icon : 'ics_copy_custom' + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_n', icon, 's_n_b_bg').color + property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_h', icon, 's_h_b_bg').color + property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_p', icon, 's_p_b_bg').color + property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_n', icon, 's_n_b_fg').color + property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_h', icon, 's_h_b_fg').color + property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_p', icon, 's_p_b_fg').color + } + property QtObject editButton: QtObject{ + property int iconSize: 40 + property string name : 'edit' + property string icon : 'ics_edit_custom' + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_n', icon, 's_n_b_bg').color + property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_h', icon, 's_h_b_bg').color + property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_p', icon, 's_p_b_bg').color + property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_n', icon, 's_n_b_fg').color + property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_h', icon, 's_h_b_fg').color + property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_p', icon, 's_p_b_fg').color + } + property QtObject deleteButton: QtObject{ + property int iconSize: 40 + property string name : 'delete' + property string icon : 'delete_custom' + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_n', icon, 's_n_b_bg').color + property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_h', icon, 's_h_b_bg').color + property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_b_p', icon, 's_p_b_bg').color + property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_n', icon, 's_n_b_fg').color + property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_h', icon, 's_h_b_fg').color + property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_f_p', icon, 's_p_b_fg').color } - - property int padding: 8 - */ } diff --git a/linphone-app/ui/modules/Linphone/View/ParticipantsListView.qml b/linphone-app/ui/modules/Linphone/View/ParticipantsListView.qml index 93d064e13..ad21b310d 100644 --- a/linphone-app/ui/modules/Linphone/View/ParticipantsListView.qml +++ b/linphone-app/ui/modules/Linphone/View/ParticipantsListView.qml @@ -22,6 +22,7 @@ ColumnLayout { property ParticipantModel me: conferenceModel && conferenceModel.localParticipant + property int count: selectedParticipants.count property bool isAdmin : (chatRoomModel && chatRoomModel.isMeAdmin && !chatRoomModel.isReadOnly) || (me && me.adminStatus) property bool canHandleParticipants : isAdmin && ( (chatRoomModel && chatRoomModel.canHandleParticipants) || conferenceModel) property bool haveEncryption: chatRoomModel && chatRoomModel.haveEncryption @@ -70,7 +71,7 @@ ColumnLayout { Layout.bottomMargin: 5 //readOnly: toAddView.count >= conferenceManager.maxParticipants - textFieldStyle: TextFieldStyle.normal + textFieldStyle: TextFieldStyle.unbordered ColumnLayout{ anchors.fill:parent @@ -134,8 +135,7 @@ ColumnLayout { conferenceModel: mainLayout.conferenceModel onAddressAdded: smartSearchBar.addAddressToIgnore(sipAddress) onAddressRemoved: smartSearchBar.removeAddressToIgnore(sipAddress) - showMe: mainLayout.isAdmin - + showMe: true } onEntryClicked: { diff --git a/linphone-app/ui/modules/Linphone/View/ParticipantsView.qml b/linphone-app/ui/modules/Linphone/View/ParticipantsView.qml index 3f1ea4500..27a4991a5 100644 --- a/linphone-app/ui/modules/Linphone/View/ParticipantsView.qml +++ b/linphone-app/ui/modules/Linphone/View/ParticipantsView.qml @@ -237,9 +237,20 @@ ScrollableListView { Layout.fillHeight: true Layout.fillWidth: true showContactAddress: sipAddressesView.showContactAddress + function getStatus(){ + var count = 0; + var txt = '' + if( $modelData.adminStatus) { //: '(Admin)' : One word for Admin(istrator) //~ Context Little Header in one word for a column in participant - statusText : showAdminStatus && $modelData.adminStatus ? qsTr('participantsAdminHeader') : '' + txt += qsTr('participantsAdminHeader') + ++count + } + if( $modelData.isMe) + txt += (count++ > 0 ? ' - ' : '') + 'Me' + return txt + } + statusText : showAdminStatus ? getStatus() : '' entry: $modelData diff --git a/linphone-app/ui/views/App/Calls/VideoConferenceMenu.qml b/linphone-app/ui/views/App/Calls/VideoConferenceMenu.qml index 076753c1e..c8d6eb9b0 100644 --- a/linphone-app/ui/views/App/Calls/VideoConferenceMenu.qml +++ b/linphone-app/ui/views/App/Calls/VideoConferenceMenu.qml @@ -40,7 +40,7 @@ Rectangle{ // HEADER Borders{ Layout.fillWidth: true - Layout.preferredHeight: Math.max(VideoConferenceMenuStyle.header.height, title.implicitHeight+20) + Layout.preferredHeight: Math.max(VideoConferenceMenuStyle.header.height, titleMenu.implicitHeight+20) bottomColor: VideoConferenceMenuStyle.list.border.color bottomWidth: VideoConferenceMenuStyle.list.border.width RowLayout{ @@ -55,8 +55,8 @@ Rectangle{ visible: contentsStack.nViews > 1 } Text{ - id: title - text: 'Paramètres' + id: titleMenu + text: contentsStack.currentItem.title //'Paramètres' Layout.fillWidth: true Layout.preferredHeight: implicitHeight horizontalAlignment: Qt.AlignCenter @@ -81,27 +81,37 @@ Rectangle{ initialItem: settingsMenuComponent Layout.fillHeight: true Layout.fillWidth: true - onPopEnterChanged: if(nViews <= 1 ) title.text = 'Paramètres' + //onPopEnterChanged: if(nViews <= 1 ) title.text = 'Paramètres' } Component{ id: settingsMenuComponent ColumnLayout{ property string objectName: 'settingsMenu' + property string title: 'Paramètres' Layout.fillHeight: true Layout.fillWidth: true + +// List of title texts in order to allow bindings between all components + property var menuTitles: [ + 'Régler les périphériques' + , 'Modifier la mise en page' + , mainItem.isMeAdmin ? 'Inviter des participants' : 'Participants' + + ] + Repeater{ model: [ - {text: 'Régler les périphériques' - , icon: VideoConferenceMenuStyle.settingsIcons.mediaIcon + {titleIndex: 0 + ,icon: VideoConferenceMenuStyle.settingsIcons.mediaIcon , nextPage:mediaMenu}, - {text: 'Modifier la mise en page' + {titleIndex: 1 , icon: (mainItem.callModel.videoEnabled ? (mainItem.callModel.conferenceVideoLayout == LinphoneEnums.ConferenceLayoutGrid ? VideoConferenceMenuStyle.settingsIcons.gridIcon : VideoConferenceMenuStyle.settingsIcons.activeSpeakerIcon) : VideoConferenceMenuStyle.settingsIcons.audioOnlyIcon) , nextPage:layoutMenu}, - {text: mainItem.isMeAdmin ? 'Inviter des participants' : 'Participants' + { titleIndex: 2 , icon: VideoConferenceMenuStyle.settingsIcons.participantsIcon , nextPage:participantsMenu} ] @@ -130,7 +140,7 @@ Rectangle{ wrapMode: Text.WordWrap elide: Text.ElideRight - text: modelData.text + text: menuTitles[modelData.titleIndex] font.pointSize: VideoConferenceMenuStyle.list.pointSize color: VideoConferenceMenuStyle.list.color } @@ -146,8 +156,7 @@ Rectangle{ MouseArea{ anchors.fill: parent onClicked: { - title.text = modelData.text - contentsStack.push(modelData.nextPage) + contentsStack.push(modelData.nextPage, {title:Qt.binding(function() { return settingsDescription.text})}) } } } @@ -162,6 +171,7 @@ Rectangle{ Component{ id: mediaMenu ColumnLayout{ + property string title Layout.fillHeight: true Layout.fillWidth: true MultimediaParametersDialog{ @@ -185,6 +195,7 @@ Rectangle{ Component{ id: layoutMenu ColumnLayout{ + property string title Layout.fillHeight: true Layout.fillWidth: true Repeater{ @@ -238,13 +249,21 @@ Rectangle{ Component{ id: participantsMenu ColumnLayout{ + property string title Layout.fillHeight: true Layout.fillWidth: true ParticipantsListView{ Layout.fillHeight: true Layout.fillWidth: true + Layout.leftMargin: 10 + Layout.rightMargin: 10 //Layout.minimumHeight: fitHeight conferenceModel: mainItem.conferenceModel + isAdmin: mainItem.isMeAdmin + Text{ + text: 'Vous êtes actuellement seul dans cette conférence' + visible: parent.count + } } Item{// Spacer Layout.fillWidth: true diff --git a/linphone-sdk b/linphone-sdk index 074802f6c..438e41d95 160000 --- a/linphone-sdk +++ b/linphone-sdk @@ -1 +1 @@ -Subproject commit 074802f6c0bcc7f095e94faad804ce083de3bcc3 +Subproject commit 438e41d95550c5fb9dc1bb7385cafcd323fd0698