hide group call button if no videoconference uri set

avoid displaying more messages when the list is not yet initialized

fix meeting form end hour combobox list display #LINQT-2127

check if at least one participant when creating group chat #LINQT-2134

display all the errors at a time if they all occur #LINQT-2133

add signal to add chat to list when state Created #LINQT-2131

fix chat deletion
This commit is contained in:
Gaelle Braud 2025-11-14 10:38:57 +01:00
parent a4b38e4fd1
commit e113058ae9
17 changed files with 220 additions and 159 deletions

View file

@ -167,6 +167,30 @@ void ChatList::setSelf(QSharedPointer<ChatList> me) {
addChatToList(core, room, message);
});
mModelConnection->makeConnectToModel(
&CoreModel::chatRoomStateChanged,
[this](const std::shared_ptr<linphone::Core> &core, const std::shared_ptr<linphone::ChatRoom> &chatRoom,
linphone::ChatRoom::State state) {
auto chatRoomAccount = chatRoom->getAccount();
auto currentAccount = CoreModel::getInstance()->getCore()->getDefaultAccount();
if (!chatRoomAccount || !currentAccount || !chatRoomAccount->getParams() || !currentAccount->getParams() ||
!chatRoomAccount->getParams()->getIdentityAddress()->weakEqual(
currentAccount->getParams()->getIdentityAddress())) {
lInfo() << "ChatRoom state of another account changed, return";
return;
}
if (chatRoom->getState() == linphone::ChatRoom::State::Created) {
lInfo() << "ChatRoom created, add it to the list" << chatRoom.get();
auto chatCore = ChatCore::create(chatRoom);
mModelConnection->invokeToCore([this, chatCore] {
if (chatCore) {
bool added = addChatInList(chatCore);
if (added) emit chatCreated(new ChatGui(chatCore));
}
});
}
});
connect(this, &ChatList::filterChanged, [this](QString filter) {
mFilter = filter;
lUpdate();
@ -184,7 +208,8 @@ int ChatList::findChatIndex(ChatGui *chatGui) {
return it == chatList.end() ? -1 : std::distance(chatList.begin(), it);
}
void ChatList::addChatInList(QSharedPointer<ChatCore> chatCore) {
bool ChatList::addChatInList(QSharedPointer<ChatCore> chatCore) {
mustBeInMainThread(log().arg(Q_FUNC_INFO));
auto chatList = getSharedList<ChatCore>();
auto it = std::find_if(chatList.begin(), chatList.end(), [chatCore](const QSharedPointer<ChatCore> item) {
return item && chatCore && item->getModel() && chatCore->getModel() &&
@ -193,8 +218,10 @@ void ChatList::addChatInList(QSharedPointer<ChatCore> chatCore) {
if (it == chatList.end()) {
connectItem(chatCore);
add(chatCore);
return true;
emit chatAdded();
}
return false;
}
QVariant ChatList::data(const QModelIndex &index, int role) const {

View file

@ -42,7 +42,7 @@ public:
void connectItem(QSharedPointer<ChatCore> chat);
int findChatIndex(ChatGui *chat);
void addChatInList(QSharedPointer<ChatCore> chatCore);
bool addChatInList(QSharedPointer<ChatCore> chatCore);
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
signals:
@ -50,6 +50,9 @@ signals:
void filterChanged(QString filter);
void chatAdded();
void chatUpdated();
// emit this signal to force selection when
// newly created chat added to the list
void chatCreated(ChatGui *chatGui);
private:
QString mFilter;

View file

@ -46,6 +46,10 @@ void ChatProxy::setSourceModel(QAbstractItemModel *model) {
connect(this, &ChatProxy::filterTextChanged, newChatList,
[this, newChatList] { emit newChatList->filterChanged(getFilterText()); });
connect(newChatList, &ChatList::chatAdded, this, [this] { invalidate(); });
connect(newChatList, &ChatList::chatCreated, this, [this](ChatGui *chatGui) {
invalidate();
emit chatCreated(chatGui);
});
connect(newChatList, &ChatList::dataChanged, this, [this] { invalidate(); });
}
auto firstList = new SortFilterList(model, Qt::AscendingOrder);

View file

@ -41,6 +41,8 @@ public:
Q_INVOKABLE int findChatIndex(ChatGui *chatGui);
Q_INVOKABLE void addChatInList(ChatGui *chatGui);
signals:
void chatCreated(ChatGui *chatGui);
protected:
QSharedPointer<ChatList> mList;

View file

@ -2112,65 +2112,65 @@
<context>
<name>ChatListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="285"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="280"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="287"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="282"/>
<source>chat_message_draft_sending_text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="430"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="425"/>
<source>chat_room_delete</source>
<extracomment>&quot;Delete&quot;</extracomment>
<translation>Löschen</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="369"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="364"/>
<source>chat_room_mute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="368"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="363"/>
<source>chat_room_unmute</source>
<extracomment>&quot;Mute&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="382"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="377"/>
<source>chat_room_mark_as_read</source>
<extracomment>&quot;Mark as read&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="401"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="396"/>
<source>chat_room_leave</source>
<extracomment>&quot;leave&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="407"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="402"/>
<source>chat_list_leave_chat_popup_title</source>
<extracomment>leave the conversation ?</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="409"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="404"/>
<source>chat_list_leave_chat_popup_message</source>
<extracomment>You will not be able to send or receive messages in this conversation anymore. Do You want to continue ?</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="436"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="431"/>
<source>chat_list_delete_chat_popup_title</source>
<extracomment>Delete the conversation ?</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="438"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="433"/>
<source>chat_list_delete_chat_popup_message</source>
<extracomment>This conversation and all its messages will be deleted. Do You want to continue ?</extracomment>
<translation type="unfinished"></translation>
@ -2453,58 +2453,58 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="126"/>
<source>popup_info_find_message_title</source>
<extracomment>Find message</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="125"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="128"/>
<source>info_popup_no_result_message</source>
<extracomment>No result found</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="117"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="120"/>
<source>info_popup_first_result_message</source>
<extracomment>First result reached</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="118"/>
<source>info_popup_last_result_message</source>
<extracomment>Last result reached</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="165"/>
<source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="164"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="167"/>
<source>unencrypted_conversation_warning</source>
<extracomment>This conversation is not encrypted !</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="178"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Messages in this conversation are e2e encrypted.
Only your correspondent can decrypt them.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="177"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="180"/>
<source>chat_message_list_not_encrypted_header_message</source>
<extracomment>Messages are not end to end encrypted,
may sure you don&apos;t share any sensitive information !</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="217"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="220"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation type="unfinished"></translation>
@ -2567,32 +2567,32 @@ Error</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="253"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="255"/>
<source>chat_action_start_new_chat</source>
<extracomment>&quot;New chat&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="290"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="292"/>
<source>chat_start_group_chat_title</source>
<extracomment>&quot;Nouveau groupe&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="292"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="294"/>
<source>chat_action_start_group_chat</source>
<extracomment>&quot;Créer&quot;</extracomment>
<translation>Erstellen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="308"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="326"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="330"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="310"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="333"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="338"/>
<source>information_popup_error_title</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="310"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="312"/>
<source>information_popup_chat_creation_failed_message</source>
<extracomment>&quot;La création a échoué&quot;</extracomment>
<translation type="unfinished"></translation>
@ -2603,19 +2603,25 @@ Error</extracomment>
<translation type="obsolete">Der Codec konnte nicht installiert werden.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="328"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="330"/>
<source>group_chat_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné au groupe</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="332"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="335"/>
<source>group_chat_error_no_participant</source>
<extracomment>&quot;Please select at least one participant</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="340"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>Sie sind nicht verbunden</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="336"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="346"/>
<source>chat_creation_in_progress</source>
<extracomment>Creation de la conversation en cours </extracomment>
<translation type="unfinished"></translation>
@ -3543,7 +3549,7 @@ Error</extracomment>
<context>
<name>CreationFormLayout</name>
<message>
<location filename="../../view/Control/Container/CreationFormLayout.qml" line="46"/>
<location filename="../../view/Control/Container/CreationFormLayout.qml" line="47"/>
<source>search_bar_look_for_contact_text</source>
<extracomment>&quot;Rechercher un contact&quot;</extracomment>
<translation>Kontakt suchen</translation>
@ -3930,20 +3936,20 @@ Error</extracomment>
<translation type="obsolete">Gruppenname</translation>
</message>
<message>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="39"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="40"/>
<source>return_accessible_name</source>
<extracomment>Return</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="76"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="95"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="85"/>
<source>group_start_dialog_subject_hint</source>
<extracomment>&quot;Nom du groupe&quot;</extracomment>
<translation>Gruppenname</translation>
</message>
<message>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="85"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="78"/>
<source>required</source>
<extracomment>&quot;Requis&quot;</extracomment>
<translation>Erforderlich</translation>
@ -4955,7 +4961,7 @@ Error</extracomment>
<context>
<name>NewCallForm</name>
<message>
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="23"/>
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="24"/>
<source>call_transfer_active_calls_label</source>
<extracomment>&quot;Appels en cours&quot;</extracomment>
<translation>Laufender Anruf</translation>

View file

@ -2089,65 +2089,65 @@
<context>
<name>ChatListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="285"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="280"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 is writing</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="287"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="282"/>
<source>chat_message_draft_sending_text</source>
<translation>Draft : %1</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="430"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="425"/>
<source>chat_room_delete</source>
<extracomment>&quot;Delete&quot;</extracomment>
<translation>Delete</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="369"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="364"/>
<source>chat_room_mute</source>
<translation>Mute</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="368"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="363"/>
<source>chat_room_unmute</source>
<extracomment>&quot;Mute&quot;</extracomment>
<translation>Unmute</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="382"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="377"/>
<source>chat_room_mark_as_read</source>
<extracomment>&quot;Mark as read&quot;</extracomment>
<translation>Mark as read</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="401"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="396"/>
<source>chat_room_leave</source>
<extracomment>&quot;leave&quot;</extracomment>
<translation>Leave</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="407"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="402"/>
<source>chat_list_leave_chat_popup_title</source>
<extracomment>leave the conversation ?</extracomment>
<translation>Leave the conversation ?</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="409"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="404"/>
<source>chat_list_leave_chat_popup_message</source>
<extracomment>You will not be able to send or receive messages in this conversation anymore. Do You want to continue ?</extracomment>
<translation>You will not be able to send or receive messages in this conversation anymore. Do You want to continue ?</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="436"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="431"/>
<source>chat_list_delete_chat_popup_title</source>
<extracomment>Delete the conversation ?</extracomment>
<translation>Delete the conversation ?</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="438"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="433"/>
<source>chat_list_delete_chat_popup_message</source>
<extracomment>This conversation and all its messages will be deleted. Do You want to continue ?</extracomment>
<translation>This conversation and all its messages will be deleted. Do You want to continue ?</translation>
@ -2425,44 +2425,44 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="126"/>
<source>popup_info_find_message_title</source>
<extracomment>Find message</extracomment>
<translation>Find message</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="125"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="128"/>
<source>info_popup_no_result_message</source>
<extracomment>No result found</extracomment>
<translation>No result found</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="117"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="120"/>
<source>info_popup_first_result_message</source>
<extracomment>First result reached</extracomment>
<translation>First result reached</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="118"/>
<source>info_popup_last_result_message</source>
<extracomment>Last result reached</extracomment>
<translation>Last result reached</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="165"/>
<source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment>
<translation>End to end encrypted chat</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="164"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="167"/>
<source>unencrypted_conversation_warning</source>
<extracomment>This conversation is not encrypted !</extracomment>
<translation>This conversation is not encrypted !</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="178"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Messages in this conversation are e2e encrypted.
Only your correspondent can decrypt them.</extracomment>
@ -2470,7 +2470,7 @@ Error</extracomment>
Only your correspondent can decrypt them.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="177"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="180"/>
<source>chat_message_list_not_encrypted_header_message</source>
<extracomment>Messages are not end to end encrypted,
may sure you don&apos;t share any sensitive information !</extracomment>
@ -2478,7 +2478,7 @@ Only your correspondent can decrypt them.</translation>
may sure you don&apos;t share any sensitive information !</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="217"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="220"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 is writing</translation>
@ -2541,50 +2541,56 @@ Only your correspondent can decrypt them.</translation>
<translation>No conversation in history</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="253"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="255"/>
<source>chat_action_start_new_chat</source>
<extracomment>&quot;New chat&quot;</extracomment>
<translation>New conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="290"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="292"/>
<source>chat_start_group_chat_title</source>
<extracomment>&quot;Nouveau groupe&quot;</extracomment>
<translation>New group</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="292"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="294"/>
<source>chat_action_start_group_chat</source>
<extracomment>&quot;Créer&quot;</extracomment>
<translation>Create</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="308"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="326"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="330"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="310"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="333"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="338"/>
<source>information_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="310"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="312"/>
<source>information_popup_chat_creation_failed_message</source>
<extracomment>&quot;La création a échoué&quot;</extracomment>
<translation>Creation failed</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="328"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="330"/>
<source>group_chat_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné au groupe</extracomment>
<translation>A name must be set for the group</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="332"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="335"/>
<source>group_chat_error_no_participant</source>
<extracomment>&quot;Please select at least one participant</extracomment>
<translation>Please select at least one participant</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="340"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>You are not connected</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="336"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="346"/>
<source>chat_creation_in_progress</source>
<extracomment>Creation de la conversation en cours </extracomment>
<translation>Chat creation pending</translation>
@ -3462,7 +3468,7 @@ Only your correspondent can decrypt them.</translation>
<context>
<name>CreationFormLayout</name>
<message>
<location filename="../../view/Control/Container/CreationFormLayout.qml" line="46"/>
<location filename="../../view/Control/Container/CreationFormLayout.qml" line="47"/>
<source>search_bar_look_for_contact_text</source>
<extracomment>&quot;Rechercher un contact&quot;</extracomment>
<translation>Find contact</translation>
@ -3846,20 +3852,20 @@ Expiration : %1</translation>
<context>
<name>GroupCreationFormLayout</name>
<message>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="39"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="40"/>
<source>return_accessible_name</source>
<extracomment>Return</extracomment>
<translation>Return</translation>
</message>
<message>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="76"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="95"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="85"/>
<source>group_start_dialog_subject_hint</source>
<extracomment>&quot;Nom du groupe&quot;</extracomment>
<translation>Group name</translation>
</message>
<message>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="85"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="78"/>
<source>required</source>
<extracomment>&quot;Requis&quot;</extracomment>
<translation>Required</translation>
@ -4867,7 +4873,7 @@ Expiration : %1</translation>
<context>
<name>NewCallForm</name>
<message>
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="23"/>
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="24"/>
<source>call_transfer_active_calls_label</source>
<extracomment>&quot;Appels en cours&quot;</extracomment>
<translation>Ongoing call</translation>

View file

@ -2089,65 +2089,65 @@
<context>
<name>ChatListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="285"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="280"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 est en train d&apos;écrire</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="287"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="282"/>
<source>chat_message_draft_sending_text</source>
<translation>Brouillon : %1</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="430"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="425"/>
<source>chat_room_delete</source>
<extracomment>&quot;Delete&quot;</extracomment>
<translation>Supprimer</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="369"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="364"/>
<source>chat_room_mute</source>
<translation>Mettre en sourdine</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="368"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="363"/>
<source>chat_room_unmute</source>
<extracomment>&quot;Mute&quot;</extracomment>
<translation>Enlever la sourdine </translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="382"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="377"/>
<source>chat_room_mark_as_read</source>
<extracomment>&quot;Mark as read&quot;</extracomment>
<translation>Marquer comme lu</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="401"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="396"/>
<source>chat_room_leave</source>
<extracomment>&quot;leave&quot;</extracomment>
<translation>Quitter la conversation</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="407"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="402"/>
<source>chat_list_leave_chat_popup_title</source>
<extracomment>leave the conversation ?</extracomment>
<translation>Quitter la conversation ?</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="409"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="404"/>
<source>chat_list_leave_chat_popup_message</source>
<extracomment>You will not be able to send or receive messages in this conversation anymore. Do You want to continue ?</extracomment>
<translation>Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ?</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="436"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="431"/>
<source>chat_list_delete_chat_popup_title</source>
<extracomment>Delete the conversation ?</extracomment>
<translation>Supprimer la conversation ?</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="438"/>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="433"/>
<source>chat_list_delete_chat_popup_message</source>
<extracomment>This conversation and all its messages will be deleted. Do You want to continue ?</extracomment>
<translation>La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ?</translation>
@ -2425,44 +2425,44 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="126"/>
<source>popup_info_find_message_title</source>
<extracomment>Find message</extracomment>
<translation>Trouver un message</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="125"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="128"/>
<source>info_popup_no_result_message</source>
<extracomment>No result found</extracomment>
<translation>Aucun résultat trouvé</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="117"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="120"/>
<source>info_popup_first_result_message</source>
<extracomment>First result reached</extracomment>
<translation>Premier résultat atteint</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="118"/>
<source>info_popup_last_result_message</source>
<extracomment>Last result reached</extracomment>
<translation>Dernier résultat atteint</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="165"/>
<source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment>
<translation>Conversation chiffrée de bout en bout</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="164"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="167"/>
<source>unencrypted_conversation_warning</source>
<extracomment>This conversation is not encrypted !</extracomment>
<translation>Cette conversation n&apos;est pas chiffrée !</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="178"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Messages in this conversation are e2e encrypted.
Only your correspondent can decrypt them.</extracomment>
@ -2470,7 +2470,7 @@ Error</extracomment>
en bout. Seul votre correspondant peut les déchiffrer.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="177"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="180"/>
<source>chat_message_list_not_encrypted_header_message</source>
<extracomment>Messages are not end to end encrypted,
may sure you don&apos;t share any sensitive information !</extracomment>
@ -2478,7 +2478,7 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
assurez-vous de ne pas partager dinformations sensibles !</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="217"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="220"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 est en train d&apos;écrire</translation>
@ -2541,50 +2541,56 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<translation>Aucune conversation dans votre historique</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="253"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="255"/>
<source>chat_action_start_new_chat</source>
<extracomment>&quot;New chat&quot;</extracomment>
<translation>Nouvelle conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="290"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="292"/>
<source>chat_start_group_chat_title</source>
<extracomment>&quot;Nouveau groupe&quot;</extracomment>
<translation>Nouveau groupe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="292"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="294"/>
<source>chat_action_start_group_chat</source>
<extracomment>&quot;Créer&quot;</extracomment>
<translation>Créer</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="308"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="326"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="330"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="310"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="333"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="338"/>
<source>information_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="310"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="312"/>
<source>information_popup_chat_creation_failed_message</source>
<extracomment>&quot;La création a échoué&quot;</extracomment>
<translation>La création a échoué</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="328"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="330"/>
<source>group_chat_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné au groupe</extracomment>
<translation>Un nom doit être donné au groupe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="332"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="335"/>
<source>group_chat_error_no_participant</source>
<extracomment>&quot;Please select at least one participant</extracomment>
<translation>Veuillez sélectionner au moins un participant</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="340"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>Vous n&apos;êtes pas connecté</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="336"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="346"/>
<source>chat_creation_in_progress</source>
<extracomment>Creation de la conversation en cours </extracomment>
<translation>Création de la conversation en cours</translation>
@ -3462,7 +3468,7 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<context>
<name>CreationFormLayout</name>
<message>
<location filename="../../view/Control/Container/CreationFormLayout.qml" line="46"/>
<location filename="../../view/Control/Container/CreationFormLayout.qml" line="47"/>
<source>search_bar_look_for_contact_text</source>
<extracomment>&quot;Rechercher un contact&quot;</extracomment>
<translation>Rechercher un contact</translation>
@ -3846,20 +3852,20 @@ Expiration : %1</translation>
<context>
<name>GroupCreationFormLayout</name>
<message>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="39"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="40"/>
<source>return_accessible_name</source>
<extracomment>Return</extracomment>
<translation>Retour</translation>
</message>
<message>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="76"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="95"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="85"/>
<source>group_start_dialog_subject_hint</source>
<extracomment>&quot;Nom du groupe&quot;</extracomment>
<translation>Nom du groupe</translation>
</message>
<message>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="85"/>
<location filename="../../view/Control/Container/GroupCreationFormLayout.qml" line="78"/>
<source>required</source>
<extracomment>&quot;Requis&quot;</extracomment>
<translation>Requis</translation>
@ -4867,7 +4873,7 @@ Expiration : %1</translation>
<context>
<name>NewCallForm</name>
<message>
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="23"/>
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="24"/>
<source>call_transfer_active_calls_label</source>
<extracomment>&quot;Appels en cours&quot;</extracomment>
<translation>Appels en cours</translation>

View file

@ -760,6 +760,7 @@ ToolModel::createGroupChatRoom(QString subject, std::list<std::shared_ptr<linpho
auto accountParams = account->getParams();
auto chatRoom = core->createChatRoom(params, participantsAddresses);
if (!chatRoom) lWarning() << ("[ToolModel] Failed to create group chat");
return chatRoom;
}

View file

@ -1435,9 +1435,9 @@ QDateTime Utils::addYears(QDateTime date, int years) {
return date;
}
int Utils::timeOffset(QDateTime start, QDateTime end) {
int Utils::timeOffset(QTime start, QTime end) {
int offset = start.secsTo(end);
return std::min(offset, INT_MAX);
return std::max(std::min(offset, INT_MAX), INT_MIN);
}
int Utils::daysOffset(QDateTime start, QDateTime end) {

View file

@ -126,7 +126,7 @@ public:
Q_INVOKABLE static int secsTo(const QString &start, const QString &end);
Q_INVOKABLE static QDateTime addSecs(QDateTime date, int secs);
Q_INVOKABLE static QDateTime addYears(QDateTime date, int years);
Q_INVOKABLE static int timeOffset(QDateTime start, QDateTime end);
Q_INVOKABLE static int timeOffset(QTime start, QTime end);
Q_INVOKABLE static int daysOffset(QDateTime start, QDateTime end);
Q_INVOKABLE static VariantObject *interpretUrl(QString uri);
Q_INVOKABLE static bool isValidURL(const QString &url);

View file

@ -14,6 +14,7 @@ FocusScope {
property color searchBarBorderColor: "transparent"
property alias searchBar: searchBar
property string startGroupButtonText
property bool startGroupButtonVisible: true
property NumericPadPopup numPadPopup
signal groupCreationRequested()
signal contactClicked(FriendGui contact)
@ -52,6 +53,7 @@ FocusScope {
spacing: Utils.getSizeWithScreenRatio(32)
Button {
id: groupCreationButton
visible: mainItem.startGroupButtonVisible
Layout.preferredWidth: Utils.getSizeWithScreenRatio(320)
Layout.preferredHeight: Utils.getSizeWithScreenRatio(44)
padding: 0

View file

@ -9,6 +9,7 @@ FocusScope{
id: mainItem
property alias contentItem: contentItem.data
property string label: ""
property string labelIndication
property string tooltip: ""
property bool mandatory: false
@ -73,6 +74,12 @@ FocusScope{
text: mainItem.tooltip
}
}
Text {
visible: mainItem.labelIndication !== undefined
font.pixelSize: Utils.getSizeWithScreenRatio(12)
font.weight: Utils.getSizeWithScreenRatio(300)
text: mainItem.labelIndication
}
}
Item {

View file

@ -12,6 +12,7 @@ import "qrc:/qt/qml/Linphone/view/Style/buttonStyle.js" as ButtonStyle
FocusScope {
id: mainItem
property alias addParticipantsLayout: addParticipantsLayout
property alias groupNameItem: groupNameItem
property alias groupName: groupName
property string formTitle
property string createGroupButtonText
@ -65,34 +66,24 @@ FocusScope {
}
}
}
RowLayout {
spacing: 0
FormItemLayout {
id: groupNameItem
enableErrorText: true
Layout.fillWidth: true
Layout.topMargin: Utils.getSizeWithScreenRatio(18)
Layout.rightMargin: Utils.getSizeWithScreenRatio(38)
Text {
font.pixelSize: Typography.p2.pixelSize
font.weight: Typography.p2.weight
//: "Nom du groupe"
text: qsTr("group_start_dialog_subject_hint")
}
Item {
//: "Nom du groupe"
label: qsTr("group_start_dialog_subject_hint")
//: "Requis"
labelIndication: qsTr("required")
contentItem: TextField {
id: groupName
Layout.fillWidth: true
Layout.preferredHeight: Utils.getSizeWithScreenRatio(49)
focus: true
KeyNavigation.down: addParticipantsLayout //participantList.count > 0 ? participantList : searchbar
Accessible.name: qsTr("group_start_dialog_subject_hint")
}
Text {
font.pixelSize: Utils.getSizeWithScreenRatio(12)
font.weight: Utils.getSizeWithScreenRatio(300)
//: "Requis"
text: qsTr("required")
}
}
TextField {
id: groupName
Layout.fillWidth: true
Layout.rightMargin: Utils.getSizeWithScreenRatio(38)
Layout.preferredHeight: Utils.getSizeWithScreenRatio(49)
focus: true
KeyNavigation.down: addParticipantsLayout //participantList.count > 0 ? participantList : searchbar
Accessible.name: qsTr("group_start_dialog_subject_hint")
}
AddParticipantsForm {
id: addParticipantsLayout

View file

@ -60,6 +60,9 @@ ListView {
onLayoutChanged: {
selectChat(mainItem.currentChatGui)
}
onChatCreated: (chat) => {
selectChat(chat)
}
}
// flickDeceleration: 10000
spacing: Utils.getSizeWithScreenRatio(10)
@ -67,14 +70,6 @@ ListView {
function selectChat(chatGui) {
var index = chatProxy.findChatIndex(chatGui)
mainItem.currentIndex = index
// if the chat exists, it may not be displayed
// in list if hide_empty_chatrooms is set. Thus, we need
// to force adding it in the list so it is displayed
if (index === -1 && chatGui) {
chatProxy.addChatInList(chatGui)
var index = chatProxy.findChatIndex(chatGui)
mainItem.currentIndex = index
}
}
Component.onCompleted: cacheBuffer = Math.max(contentHeight, 0) //contentHeight>0 ? contentHeight : 0// cache all items

View file

@ -73,7 +73,10 @@ ListView {
onAtYEndChanged: if (atYEnd && chat) {
chat.core.lMarkAsRead()
}
onAtYBeginningChanged: if (atYBeginning) {
// Workaround : check if there is already items in the list
// so this function is only called when the user actually scroll
// the view till the begining
onAtYBeginningChanged: if (atYBeginning && count !== 0) {
eventLogProxy.displayMore()
}

View file

@ -15,6 +15,7 @@ CreationFormLayout {
//: Appel de groupe
startGroupButtonText: qsTr("call_start_group_call_title")
startGroupButtonVisible: !SettingsCpp.disableMeetingsFeature
topLayoutVisible: mainItem.displayCurrentCalls && callList.count > 0
topContent: [

View file

@ -198,8 +198,8 @@ AbstractMainPage {
Connections {
target: mainItem
function onSelectedChatGuiChanged() {
chatListView.selectChat(mainItem.selectedChatGui)
function onRemoteChatChanged() {
if (mainItem.remoteChat) chatListView.chatToSelect = mainItem.remoteChat
}
function onOpenChatRequested(chat) {
chatListView.chatToSelect = chat
@ -322,22 +322,29 @@ AbstractMainPage {
}
onGroupCreationRequested: {
var hasError = false
if (groupName.text.length === 0) {
//: "Un nom doit être donné au groupe
groupNameItem.errorMessage = qsTr("group_chat_error_must_have_name")
hasError = true
} if (addParticipantsLayout.selectedParticipantsCount === 0) {
UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"),
//: "Un nom doit être donné au groupe
qsTr("group_chat_error_must_have_name"), false)
} else if (!mainItem.isRegistered) {
//: "Please select at least one participant
qsTr("group_chat_error_no_participant"), false)
hasError = true
} if (!mainItem.isRegistered) {
UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"),
//: "Vous n'etes pas connecté"
qsTr("group_call_error_not_connected"), false)
} else {
console.log("create group chat")
//: Creation de la conversation en cours
mainWindow.showLoadingPopup(qsTr("chat_creation_in_progress"), true, function () {
if (chatCreationLayout.groupChat) chatCreationLayout.groupChat.core.lDelete()
})
chatCreationLayout.groupChatObj = UtilsCpp.createGroupChat(chatCreationLayout.groupName.text, addParticipantsLayout.selectedParticipants)
}
hasError = true
}
if (hasError) return
console.log("Create group chat")
//: Creation de la conversation en cours
mainWindow.showLoadingPopup(qsTr("chat_creation_in_progress"), true, function () {
if (chatCreationLayout.groupChat) chatCreationLayout.groupChat.core.lDelete()
})
chatCreationLayout.groupChatObj = UtilsCpp.createGroupChat(chatCreationLayout.groupName.text, addParticipantsLayout.selectedParticipants)
}
}
}