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