show shared medias/files + expand button on chat participant list

This commit is contained in:
Gaelle Braud 2025-07-03 12:07:18 +02:00
parent c015375ae9
commit a5851855d9
27 changed files with 816 additions and 316 deletions

View file

@ -54,6 +54,7 @@
#include "core/call/CallProxy.hpp"
#include "core/camera/CameraGui.hpp"
#include "core/chat/ChatProxy.hpp"
#include "core/chat/files/ChatMessageFileProxy.hpp"
#include "core/chat/message/ChatMessageGui.hpp"
#include "core/chat/message/EventLogGui.hpp"
#include "core/chat/message/EventLogList.hpp"
@ -678,6 +679,7 @@ void App::initCppInterfaces() {
qmlRegisterType<EventLogList>(Constants::MainQmlUri, 1, 0, "EventLogList");
qmlRegisterType<EventLogProxy>(Constants::MainQmlUri, 1, 0, "EventLogProxy");
qmlRegisterType<ChatMessageContentProxy>(Constants::MainQmlUri, 1, 0, "ChatMessageContentProxy");
qmlRegisterType<ChatMessageFileProxy>(Constants::MainQmlUri, 1, 0, "ChatMessageFileProxy");
qmlRegisterType<ChatMessageContentGui>(Constants::MainQmlUri, 1, 0, "ChatMessageContentGui");
qmlRegisterUncreatableType<ConferenceCore>(Constants::MainQmlUri, 1, 0, "ConferenceCore",
QLatin1String("Uncreatable"));

View file

@ -33,6 +33,8 @@ list(APPEND _LINPHONEAPP_SOURCES
core/chat/message/content/ChatMessageContentGui.cpp
core/chat/message/content/ChatMessageContentList.cpp
core/chat/message/content/ChatMessageContentProxy.cpp
core/chat/files/ChatMessageFileList.cpp
core/chat/files/ChatMessageFileProxy.cpp
core/chat/message/imdn/ImdnStatusList.cpp
core/chat/message/imdn/ImdnStatusProxy.cpp
core/emoji/EmojiList.cpp

View file

@ -92,6 +92,13 @@ ChatCore::ChatCore(const std::shared_ptr<linphone::ChatRoom> &chatRoom) : QObjec
for (auto &event : lHistory) {
auto eventLogCore = EventLogCore::create(event);
eventList.append(eventLogCore);
if (auto isMessage = eventLogCore->getChatMessageCore()) {
for (auto content : isMessage->getChatMessageContentList()) {
if (content->isFile() && !content->isVoiceRecording()) {
mFileList.append(content);
}
}
}
}
resetEventLogList(eventList);
mIdentifier = Utils::coreStringToAppString(chatRoom->getIdentifier());
@ -105,6 +112,22 @@ ChatCore::ChatCore(const std::shared_ptr<linphone::ChatRoom> &chatRoom) : QObjec
connect(this, &ChatCore::eventListChanged, this, &ChatCore::lUpdateLastMessage);
connect(this, &ChatCore::eventsInserted, this, &ChatCore::lUpdateLastMessage);
connect(this, &ChatCore::eventRemoved, this, &ChatCore::lUpdateLastMessage);
auto resetFileListLambda = [this] {
QList<QSharedPointer<ChatMessageContentCore>> fileList;
for (auto &eventLogCore : mEventLogList) {
if (auto isMessage = eventLogCore->getChatMessageCore()) {
for (auto content : isMessage->getChatMessageContentList()) {
if (content->isFile() && !content->isVoiceRecording()) {
fileList.append(content);
}
}
}
}
resetFileList(fileList);
};
connect(this, &ChatCore::eventListChanged, this, resetFileListLambda);
connect(this, &ChatCore::eventsInserted, this, resetFileListLambda);
connect(this, &ChatCore::eventRemoved, this, resetFileListLambda);
mEphemeralEnabled = chatRoom->ephemeralEnabled();
mEphemeralLifetime = chatRoom->ephemeralEnabled() ? chatRoom->getEphemeralLifetime() : 0;
mIsMuted = chatRoom->getMuted();
@ -114,6 +137,7 @@ ChatCore::ChatCore(const std::shared_ptr<linphone::ChatRoom> &chatRoom) : QObjec
ChatCore::~ChatCore() {
lDebug() << "[ChatCore] delete" << this;
mustBeInMainThread("~" + getClassName());
mChatModelConnection->disconnect();
emit mChatModel->removeListener();
}
@ -555,6 +579,15 @@ QString ChatCore::getComposingAddress() const {
return mComposingAddress;
}
QList<QSharedPointer<ChatMessageContentCore>> ChatCore::getFileList() const {
return mFileList;
}
void ChatCore::resetFileList(QList<QSharedPointer<ChatMessageContentCore>> list) {
mFileList = list;
emit fileListChanged();
}
std::shared_ptr<ChatModel> ChatCore::getModel() const {
return mChatModel;
}

View file

@ -64,6 +64,7 @@ public:
Q_PROPERTY(QVariantList participants READ getParticipantsGui NOTIFY participantsChanged)
Q_PROPERTY(QStringList participantsAddresses READ getParticipantsAddresses WRITE lSetParticipantsAddresses NOTIFY
participantsChanged)
Q_PROPERTY(QList<QSharedPointer<ChatMessageContentCore>> fileList READ getFileList NOTIFY fileListChanged)
// Should be call from model Thread. Will be automatically in App thread after initialization
static QSharedPointer<ChatCore> create(const std::shared_ptr<linphone::ChatRoom> &chatRoom);
@ -94,6 +95,9 @@ public:
ChatMessageGui *getLastMessage() const;
QString getLastMessageText() const;
QList<QSharedPointer<ChatMessageContentCore>> getFileList() const;
void resetFileList(QList<QSharedPointer<ChatMessageContentCore>> list);
LinphoneEnums::ChatMessageState getLastMessageState() const;
LinphoneEnums::ChatRoomState getChatRoomState() const;
@ -157,6 +161,7 @@ signals:
void ephemeralLifetimeChanged();
void meAdminChanged();
void participantsChanged();
void fileListChanged();
void lDeleteMessage(ChatMessageGui *message);
void lDelete();
@ -195,6 +200,7 @@ private:
bool mIsReadOnly = false;
bool mEphemeralEnabled = false;
int mEphemeralLifetime = 0;
QList<QSharedPointer<ChatMessageContentCore>> mFileList;
bool mIsMuted = false;
bool mMeAdmin = false;
QList<QSharedPointer<ParticipantCore>> mParticipants;

View file

@ -0,0 +1,73 @@
/*
* Copyright (c) 2010-2024 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ChatMessageFileList.hpp"
#include "core/App.hpp"
#include "core/chat/message/content/ChatMessageContentCore.hpp"
#include <QSharedPointer>
#include <linphone++/linphone.hh>
// =============================================================================
DEFINE_ABSTRACT_OBJECT(ChatMessageFileList)
QSharedPointer<ChatMessageFileList> ChatMessageFileList::create() {
auto model = QSharedPointer<ChatMessageFileList>(new ChatMessageFileList(), &QObject::deleteLater);
model->moveToThread(App::getInstance()->thread());
return model;
}
ChatMessageFileList::ChatMessageFileList(QObject *parent) : ListProxy(parent) {
mustBeInMainThread(getClassName());
App::getInstance()->mEngine->setObjectOwnership(this, QQmlEngine::CppOwnership);
}
ChatMessageFileList::~ChatMessageFileList() {
mustBeInMainThread("~" + getClassName());
mList.clear();
}
QSharedPointer<ChatCore> ChatMessageFileList::getChatCore() const {
return mChat;
}
void ChatMessageFileList::setChatCore(QSharedPointer<ChatCore> chatCore) {
if (mChat != chatCore) {
if (mChat) disconnect(mChat.get());
mChat = chatCore;
auto lUpdate = [this] {
auto fileList = mChat->getFileList();
resetData<ChatMessageContentCore>(fileList);
};
if (mChat) connect(mChat.get(), &ChatCore::fileListChanged, this, lUpdate);
lUpdate();
emit chatChanged();
}
}
QVariant ChatMessageFileList::data(const QModelIndex &index, int role) const {
int row = index.row();
if (!index.isValid() || row < 0 || row >= mList.count()) return QVariant();
if (role == Qt::DisplayRole)
return QVariant::fromValue(new ChatMessageContentGui(mList[row].objectCast<ChatMessageContentCore>()));
return QVariant();
}

View file

@ -0,0 +1,52 @@
/*
* Copyright (c) 2010-2024 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CHAT_MESSAGE_FILE_LIST_H_
#define CHAT_MESSAGE_FILE_LIST_H_
#include "core/chat/ChatCore.hpp"
#include "core/proxy/ListProxy.hpp"
#include "tool/AbstractObject.hpp"
#include "tool/thread/SafeConnection.hpp"
#include <QLocale>
// =============================================================================
class ChatMessageFileList : public ListProxy, public AbstractObject {
Q_OBJECT
public:
static QSharedPointer<ChatMessageFileList> create();
ChatMessageFileList(QObject *parent = Q_NULLPTR);
~ChatMessageFileList();
QSharedPointer<ChatCore> getChatCore() const;
void setChatCore(QSharedPointer<ChatCore> chatCore);
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
signals:
void chatChanged();
private:
QSharedPointer<ChatCore> mChat;
DECLARE_ABSTRACT_OBJECT
};
#endif

View file

@ -0,0 +1,65 @@
/*
* Copyright (c) 2010-2024 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ChatMessageFileProxy.hpp"
#include "core/App.hpp"
#include "core/chat/ChatGui.hpp"
DEFINE_ABSTRACT_OBJECT(ChatMessageFileProxy)
ChatMessageFileProxy::ChatMessageFileProxy(QObject *parent) : LimitProxy(parent) {
mList = ChatMessageFileList::create();
connect(mList.get(), &ChatMessageFileList::chatChanged, this, &ChatMessageFileProxy::chatGuiChanged);
connect(this, &ChatMessageFileProxy::filterTypeChanged, this, [this] { invalidate(); });
setSourceModels(new SortFilterList(mList.get()));
}
ChatMessageFileProxy::~ChatMessageFileProxy() {
}
ChatGui *ChatMessageFileProxy::getChatGui() const {
return mList && mList->getChatCore() ? new ChatGui(mList->getChatCore()) : nullptr;
}
void ChatMessageFileProxy::setChatGui(ChatGui *chat) const {
if (mList) mList->setChatCore(chat ? chat->mCore : nullptr);
}
bool ChatMessageFileProxy::SortFilterList::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const {
if (getFilterType() == (int)FilterContentType::All) return true;
else {
auto contentCore = getItemAtSource<ChatMessageFileList, ChatMessageContentCore>(sourceRow);
if (!contentCore) return false;
bool isMedia = Utils::isVideo(contentCore->getFilePath()) || Utils::isImage(contentCore->getFilePath()) ||
Utils::isAnimatedImage(contentCore->getFilePath());
if (getFilterType() == (int)FilterContentType::Medias) {
return isMedia;
} else {
return !isMedia;
}
return false;
}
}
bool ChatMessageFileProxy::SortFilterList::lessThan(const QModelIndex &sourceLeft,
const QModelIndex &sourceRight) const {
return true;
}

View file

@ -0,0 +1,56 @@
/*
* Copyright (c) 2010-2024 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CHAT_MESSAGE_FILE_PROXY_H_
#define CHAT_MESSAGE_FILE_PROXY_H_
#include "ChatMessageFileList.hpp"
#include "core/chat/message/ChatMessageCore.hpp"
#include "core/proxy/LimitProxy.hpp"
#include "tool/AbstractObject.hpp"
// =============================================================================
class ChatMessageFileProxy : public LimitProxy, public AbstractObject {
Q_OBJECT
Q_PROPERTY(ChatGui *chat READ getChatGui WRITE setChatGui NOTIFY chatGuiChanged)
public:
enum class FilterContentType { All = 0, Medias = 1, Documents = 2 };
Q_ENUM(FilterContentType)
DECLARE_SORTFILTER_CLASS()
ChatMessageFileProxy(QObject *parent = Q_NULLPTR);
~ChatMessageFileProxy();
ChatGui *getChatGui() const;
void setChatGui(ChatGui *chat) const;
signals:
void chatGuiChanged();
void filterChanged();
protected:
QSharedPointer<ChatMessageFileList> mList;
DECLARE_ABSTRACT_OBJECT
};
#endif

View file

@ -20,7 +20,6 @@
#include "ChatMessageCore.hpp"
#include "core/App.hpp"
#include "core/chat/ChatCore.hpp"
#include "model/tool/ToolModel.hpp"
DEFINE_ABSTRACT_OBJECT(ChatMessageCore)
@ -406,6 +405,10 @@ bool ChatMessageCore::isFromChatGroup() const {
return mIsFromChatGroup;
}
bool ChatMessageCore::hasFileContent() const {
return mHasFileContent;
}
bool ChatMessageCore::isRead() const {
return mIsRead;
}

View file

@ -131,6 +131,8 @@ public:
bool isRemoteMessage() const;
bool isFromChatGroup() const;
bool hasFileContent() const;
bool isRead() const;
void setIsRead(bool read);

View file

@ -47,7 +47,6 @@ EventLogList::EventLogList(QObject *parent) : ListProxy(parent) {
EventLogList::~EventLogList() {
mustBeInMainThread("~" + getClassName());
mModelConnection = nullptr;
}
ChatGui *EventLogList::getChat() const {
@ -97,9 +96,7 @@ int EventLogList::findFirstUnreadIndex() {
}
void EventLogList::setSelf(QSharedPointer<EventLogList> me) {
mModelConnection = SafeConnection<EventLogList, CoreModel>::create(me, CoreModel::getInstance());
mModelConnection->makeConnectToCore(&EventLogList::lUpdate, [this]() {
connect(this, &EventLogList::lUpdate, this, [this]() {
for (auto &event : getSharedList<EventLogCore>()) {
auto message = event->getChatMessageCore();
if (message) disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr);

View file

@ -58,7 +58,6 @@ signals:
private:
QString mFilter;
QSharedPointer<ChatCore> mChatCore;
QSharedPointer<SafeConnection<EventLogList, CoreModel>> mModelConnection;
DECLARE_ABSTRACT_OBJECT
};

View file

@ -53,8 +53,6 @@ public:
signals:
void chatChanged();
void filterChanged();
void messageInserted(int index, ChatMessageGui *message);
protected:
QSharedPointer<ChatMessageContentList> mList;

View file

@ -523,74 +523,74 @@
<context>
<name>App</name>
<message>
<location filename="../../core/App.cpp" line="340"/>
<location filename="../../core/App.cpp" line="341"/>
<source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
<translation>Möchten Sie die Remote-Konfiguration von dieser Adresse herunterladen und anwenden?</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="816"/>
<location filename="../../core/App.cpp" line="818"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>Ein kostenloses Open-Source SIP Video-Telefon.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="818"/>
<location filename="../../core/App.cpp" line="820"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Kommandozeilen-Befehl an die Anwendung schicken</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="822"/>
<location filename="../../core/App.cpp" line="824"/>
<source>command_line_option_show_help</source>
<translation>Zeige Hilfe</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="827"/>
<location filename="../../core/App.cpp" line="829"/>
<source>command_line_option_show_app_version</source>
<translation type="unfinished">Zeige App-Version</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="834"/>
<location filename="../../core/App.cpp" line="836"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="836"/>
<location filename="../../core/App.cpp" line="838"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, Pfad oder Datei</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="841"/>
<location filename="../../core/App.cpp" line="843"/>
<source>command_line_option_minimized</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/App.cpp" line="844"/>
<location filename="../../core/App.cpp" line="846"/>
<source>command_line_option_log_to_stdout</source>
<translation>Debug-Informationen auf der Standardausgabe ausgeben</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="847"/>
<location filename="../../core/App.cpp" line="849"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Nur Anwendungs-Logs ausgeben</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1217"/>
<location filename="../../core/App.cpp" line="1219"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Ausblenden</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1217"/>
<location filename="../../core/App.cpp" line="1219"/>
<source>show_action</source>
<translation>Zeigen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1232"/>
<location filename="../../core/App.cpp" line="1234"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Beenden</translation>
@ -1728,13 +1728,13 @@
<context>
<name>ChatCore</name>
<message>
<location filename="../../core/chat/ChatCore.cpp" line="140"/>
<location filename="../../core/chat/ChatCore.cpp" line="163"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/chat/ChatCore.cpp" line="142"/>
<location filename="../../core/chat/ChatCore.cpp" line="165"/>
<source>info_toast_deleted_message_history</source>
<extracomment>Message history has been deleted</extracomment>
<translation type="unfinished"></translation>
@ -1743,13 +1743,13 @@
<context>
<name>ChatDroppableTextArea</name>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="149"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="157"/>
<source>chat_view_send_area_placeholder_text</source>
<extracomment>Say something : placeholder text for sending message text area</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="184"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="192"/>
<source>cannot_record_while_in_call_tooltip</source>
<extracomment>Cannot record a message while a call is ongoing</extracomment>
<translation type="unfinished"></translation>
@ -1957,19 +1957,19 @@ Error</extracomment>
<context>
<name>ChatMessageCore</name>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="136"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="135"/>
<source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="190"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="189"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="192"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="191"/>
<source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment>
<translation type="unfinished"></translation>
@ -2022,20 +2022,20 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="91"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="92"/>
<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="101"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="102"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="230"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="231"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation type="unfinished"></translation>
@ -3070,55 +3070,55 @@ Error</extracomment>
<context>
<name>GroupChatInfoParticipants</name>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="80"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="91"/>
<source>group_infos_participant_is_admin</source>
<translation>Admin</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="193"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="204"/>
<source>group_infos_manage_participants_title</source>
<extracomment>&quot;Gérer des participants&quot;</extracomment>
<translation>Manage Participants</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="110"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="121"/>
<source>menu_see_existing_contact</source>
<extracomment>&quot;Show contact&quot;</extracomment>
<translation>Kontakt anzeigen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="112"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="123"/>
<source>menu_add_address_to_contacts</source>
<extracomment>&quot;Add to contacts&quot;</extracomment>
<translation>Zu Kontakten hinzufügen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="129"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="140"/>
<source>group_infos_give_admin_rights</source>
<translation>Give admin rights</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="129"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="140"/>
<source>group_infos_remove_admin_rights</source>
<translation>Remove admin rights</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="141"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="152"/>
<source>group_infos_copy_sip_address</source>
<translation>Copy SIP Address</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="161"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="172"/>
<source>group_infos_remove_participant</source>
<translation>Remove participant</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="168"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="179"/>
<source>group_infos_remove_participants_toast_title</source>
<translation>Remove participant ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="169"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="180"/>
<source>group_infos_remove_participants_toast_message</source>
<translation>Participant will be removed from chat room.</translation>
</message>
@ -3126,37 +3126,37 @@ Error</extracomment>
<context>
<name>GroupConversationInfos</name>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="142"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="143"/>
<source>group_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment>
<translation>Anrufen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="127"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="128"/>
<source>group_infos_mute</source>
<translation>Stummschalten</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="127"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="128"/>
<source>group_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Unmute</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="157"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="158"/>
<source>group_infos_meeting</source>
<extracomment>&quot;Réunion&quot;</extracomment>
<translation>Meeting</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="168"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="169"/>
<source>group_infos_participants</source>
<translation>Participants (%1)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="204"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="209"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="206"/>
<source>group_infos_media_docs</source>
<extracomment>Medias &amp; documents</extracomment>
<translation>Medien &amp; Dokumente</translation>
</message>
<message>
@ -3165,55 +3165,62 @@ Error</extracomment>
<translation type="vanished">Geteilte Medien</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="219"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="223"/>
<source>group_infos_shared_docs</source>
<extracomment>Shared documents</extracomment>
<translation>Geteilte Dokumente</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="231"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="235"/>
<source>group_infos_other_actions</source>
<translation>Weitere Aktionen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="236"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="240"/>
<source>group_infos_enable_ephemerals</source>
<translation>Flüchtige Nachrichten aktivieren</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="236"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="240"/>
<source>group_infos_ephemerals</source>
<translation>Ephemeral messages : </translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="246"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="250"/>
<source>group_infos_leave_room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="265"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="269"/>
<source>group_infos_delete_history</source>
<translation>Verlauf löschen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="270"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="274"/>
<source>group_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment>
<translation>Verlauf löschen?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="272"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="276"/>
<source>group_infos_delete_history_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="251"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="255"/>
<source>group_infos_leave_room_toast_title</source>
<extracomment>Leave Chat Room ?</extracomment>
<translation>Chatraum verlassen?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="253"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="212"/>
<source>group_infos_shared_medias</source>
<extracomment>Shared medias</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="257"/>
<source>group_infos_leave_room_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation>
@ -4324,82 +4331,82 @@ Error</extracomment>
<context>
<name>OneOneConversationInfos</name>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="72"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="73"/>
<source>one_one_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment>
<translation>Anrufen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="86"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="87"/>
<source>one_one_infos_mute</source>
<translation>Stummschalten</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="86"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="87"/>
<source>one_one_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Unmute</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="102"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="103"/>
<source>one_one_infos_search</source>
<extracomment>&quot;Rechercher&quot;</extracomment>
<translation>Suchen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="113"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="114"/>
<source>one_one_infos_media_docs</source>
<translation>Medien &amp; Dokumente</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="118"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="119"/>
<source>one_one_infos_shared_media</source>
<translation>Geteilte Medien</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="128"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="129"/>
<source>one_one_infos_shared_docs</source>
<translation>Geteilte Dokumente</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="142"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="143"/>
<source>one_one_infos_other_actions</source>
<translation>Weitere Aktionen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="161"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="162"/>
<source>one_one_infos_enable_ephemerals</source>
<translation>Flüchtige Nachrichten aktivieren</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="161"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="162"/>
<source>one_one_infos_ephemerals</source>
<translation>Ephemeral messages : </translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="171"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="172"/>
<source>one_one_infos_delete_history</source>
<translation>Verlauf löschen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="176"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="177"/>
<source>one_one_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment>
<translation>Verlauf löschen?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="178"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="179"/>
<source>one_one_infos_delete_history_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="147"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="148"/>
<source>one_one_infos_open_contact</source>
<translation>Kontakt öffnen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="147"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="148"/>
<source>one_one_infos_create_contact</source>
<translation>Kontakt erstellen</translation>
</message>
@ -4952,6 +4959,18 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
<extracomment>Reply to %1</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="517"/>
<source>shared_medias_title</source>
<extracomment>Shared medias</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="519"/>
<source>shared_documents_title</source>
<extracomment>Shared documents</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -523,74 +523,74 @@
<context>
<name>App</name>
<message>
<location filename="../../core/App.cpp" line="340"/>
<location filename="../../core/App.cpp" line="341"/>
<source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
<translation>Do you want to download and apply remote provisioning from this address ?</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="816"/>
<location filename="../../core/App.cpp" line="818"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="818"/>
<location filename="../../core/App.cpp" line="820"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Send an order to the application towards a command line</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="822"/>
<location filename="../../core/App.cpp" line="824"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="827"/>
<location filename="../../core/App.cpp" line="829"/>
<source>command_line_option_show_app_version</source>
<translation>Show app version</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="834"/>
<location filename="../../core/App.cpp" line="836"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="836"/>
<location filename="../../core/App.cpp" line="838"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="841"/>
<location filename="../../core/App.cpp" line="843"/>
<source>command_line_option_minimized</source>
<translation>Minimize</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="844"/>
<location filename="../../core/App.cpp" line="846"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="847"/>
<location filename="../../core/App.cpp" line="849"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1217"/>
<location filename="../../core/App.cpp" line="1219"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Hide</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1217"/>
<location filename="../../core/App.cpp" line="1219"/>
<source>show_action</source>
<translation>Show</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1232"/>
<location filename="../../core/App.cpp" line="1234"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quit</translation>
@ -1690,13 +1690,13 @@
<context>
<name>ChatCore</name>
<message>
<location filename="../../core/chat/ChatCore.cpp" line="140"/>
<location filename="../../core/chat/ChatCore.cpp" line="163"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation>Deleted</translation>
</message>
<message>
<location filename="../../core/chat/ChatCore.cpp" line="142"/>
<location filename="../../core/chat/ChatCore.cpp" line="165"/>
<source>info_toast_deleted_message_history</source>
<extracomment>Message history has been deleted</extracomment>
<translation>Message history has been deleted</translation>
@ -1705,13 +1705,13 @@
<context>
<name>ChatDroppableTextArea</name>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="149"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="157"/>
<source>chat_view_send_area_placeholder_text</source>
<extracomment>Say something : placeholder text for sending message text area</extracomment>
<translation>Say something</translation>
</message>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="184"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="192"/>
<source>cannot_record_while_in_call_tooltip</source>
<extracomment>Cannot record a message while a call is ongoing</extracomment>
<translation>Cannot record a message while a call is ongoing</translation>
@ -1919,19 +1919,19 @@ Error</extracomment>
<context>
<name>ChatMessageCore</name>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="136"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="135"/>
<source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation>Reactions</translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="190"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="189"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation>Deleted</translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="192"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="191"/>
<source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment>
<translation>The message has been deleted</translation>
@ -1984,13 +1984,13 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="91"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="92"/>
<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="101"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="102"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
@ -1998,7 +1998,7 @@ Error</extracomment>
Only your correspondent can decrypt them.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="230"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="231"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 is writing</translation>
@ -2995,55 +2995,55 @@ Expiration : %1</translation>
<context>
<name>GroupChatInfoParticipants</name>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="193"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="204"/>
<source>group_infos_manage_participants_title</source>
<extracomment>&quot;Gérer des participants&quot;</extracomment>
<translation>Manage participants</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="80"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="91"/>
<source>group_infos_participant_is_admin</source>
<translation>Admin</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="110"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="121"/>
<source>menu_see_existing_contact</source>
<extracomment>&quot;Show contact&quot;</extracomment>
<translation>Show contact</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="112"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="123"/>
<source>menu_add_address_to_contacts</source>
<extracomment>&quot;Add to contacts&quot;</extracomment>
<translation>Add to contacts</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="129"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="140"/>
<source>group_infos_give_admin_rights</source>
<translation>Give admin rights</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="129"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="140"/>
<source>group_infos_remove_admin_rights</source>
<translation>Remove admin rights</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="141"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="152"/>
<source>group_infos_copy_sip_address</source>
<translation>Copy SIP Address</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="161"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="172"/>
<source>group_infos_remove_participant</source>
<translation>Remove participant</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="168"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="179"/>
<source>group_infos_remove_participants_toast_title</source>
<translation>Remove participant ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="169"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="180"/>
<source>group_infos_remove_participants_toast_message</source>
<translation>Participant will be removed from chat room.</translation>
</message>
@ -3051,89 +3051,96 @@ Expiration : %1</translation>
<context>
<name>GroupConversationInfos</name>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="142"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="143"/>
<source>group_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment>
<translation>Call</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="127"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="128"/>
<source>group_infos_mute</source>
<translation>Mute</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="127"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="128"/>
<source>group_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Unmute</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="157"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="158"/>
<source>group_infos_meeting</source>
<extracomment>&quot;Réunion&quot;</extracomment>
<translation>Meeting</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="168"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="169"/>
<source>group_infos_participants</source>
<translation>Participants (%1)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="204"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="209"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="206"/>
<source>group_infos_media_docs</source>
<extracomment>Medias &amp; documents</extracomment>
<translation>Medias &amp; documents</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="219"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="212"/>
<source>group_infos_shared_medias</source>
<extracomment>Shared medias</extracomment>
<translation>Shared medias</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="223"/>
<source>group_infos_shared_docs</source>
<extracomment>Shared documents</extracomment>
<translation>Shared documents</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="231"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="235"/>
<source>group_infos_other_actions</source>
<translation>Other actions</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="236"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="240"/>
<source>group_infos_enable_ephemerals</source>
<translation>Enable ephemeral messages</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="236"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="240"/>
<source>group_infos_ephemerals</source>
<translation>Ephemeral messages : </translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="265"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="269"/>
<source>group_infos_delete_history</source>
<translation>Delete history</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="270"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="274"/>
<source>group_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment>
<translation>Delete history ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="272"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="276"/>
<source>group_infos_delete_history_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>All the messages will be removed from the chat room. Do you want to continue ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="246"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="250"/>
<source>group_infos_leave_room</source>
<translation>Leave Chat Room</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="251"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="255"/>
<source>group_infos_leave_room_toast_title</source>
<extracomment>Leave Chat Room ?</extracomment>
<translation>Leave Chat Room ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="253"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="257"/>
<source>group_infos_leave_room_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>All the messages will be removed from the chat room. Do you want to continue ?</translation>
@ -3983,11 +3990,6 @@ Expiration : %1</translation>
<extracomment>Message status</extracomment>
<translation>Message status</translation>
</message>
<message>
<source>click_to_delete_reaction_info</source>
<extracomment>Click to delete</extracomment>
<translation type="vanished">Click to delete</translation>
</message>
</context>
<context>
<name>MessageReactionsInfos</name>
@ -4235,82 +4237,82 @@ Expiration : %1</translation>
<context>
<name>OneOneConversationInfos</name>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="72"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="73"/>
<source>one_one_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment>
<translation>Call</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="86"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="87"/>
<source>one_one_infos_mute</source>
<translation>Mute</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="86"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="87"/>
<source>one_one_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Unmute</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="102"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="103"/>
<source>one_one_infos_search</source>
<extracomment>&quot;Rechercher&quot;</extracomment>
<translation>Search</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="113"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="114"/>
<source>one_one_infos_media_docs</source>
<translation>Medias &amp; documents</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="118"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="119"/>
<source>one_one_infos_shared_media</source>
<translation>Shared medias</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="128"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="129"/>
<source>one_one_infos_shared_docs</source>
<translation>Shared documents</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="142"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="143"/>
<source>one_one_infos_other_actions</source>
<translation>Other actions</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="161"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="162"/>
<source>one_one_infos_enable_ephemerals</source>
<translation>Enable ephemeral messages</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="161"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="162"/>
<source>one_one_infos_ephemerals</source>
<translation>Ephemeral messages : </translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="171"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="172"/>
<source>one_one_infos_delete_history</source>
<translation>Delete history</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="176"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="177"/>
<source>one_one_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment>
<translation>Delete history ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="178"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="179"/>
<source>one_one_infos_delete_history_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>All the messages will be removed from the chat room. Do you want to continue ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="147"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="148"/>
<source>one_one_infos_open_contact</source>
<translation>Show contact</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="147"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="148"/>
<source>one_one_infos_create_contact</source>
<translation>Create contact</translation>
</message>
@ -4851,6 +4853,18 @@ To enable them in a commercial project, please contact us.</translation>
<extracomment>Reply to %1</extracomment>
<translation>Reply to %1</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="517"/>
<source>shared_medias_title</source>
<extracomment>Shared medias</extracomment>
<translation>Shared medias</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="519"/>
<source>shared_documents_title</source>
<extracomment>Shared documents</extracomment>
<translation>Shared documents</translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -523,74 +523,74 @@
<context>
<name>App</name>
<message>
<location filename="../../core/App.cpp" line="340"/>
<location filename="../../core/App.cpp" line="341"/>
<source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
<translation>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="816"/>
<location filename="../../core/App.cpp" line="818"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="818"/>
<location filename="../../core/App.cpp" line="820"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Send an order to the application towards a command line</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="822"/>
<location filename="../../core/App.cpp" line="824"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="827"/>
<location filename="../../core/App.cpp" line="829"/>
<source>command_line_option_show_app_version</source>
<translation>Afficher la version de l&apos;application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="834"/>
<location filename="../../core/App.cpp" line="836"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="836"/>
<location filename="../../core/App.cpp" line="838"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="841"/>
<location filename="../../core/App.cpp" line="843"/>
<source>command_line_option_minimized</source>
<translation>Minimiser</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="844"/>
<location filename="../../core/App.cpp" line="846"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="847"/>
<location filename="../../core/App.cpp" line="849"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1217"/>
<location filename="../../core/App.cpp" line="1219"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Cacher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1217"/>
<location filename="../../core/App.cpp" line="1219"/>
<source>show_action</source>
<translation>Afficher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1232"/>
<location filename="../../core/App.cpp" line="1234"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quitter</translation>
@ -1690,13 +1690,13 @@
<context>
<name>ChatCore</name>
<message>
<location filename="../../core/chat/ChatCore.cpp" line="140"/>
<location filename="../../core/chat/ChatCore.cpp" line="163"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation>Supprimé</translation>
</message>
<message>
<location filename="../../core/chat/ChatCore.cpp" line="142"/>
<location filename="../../core/chat/ChatCore.cpp" line="165"/>
<source>info_toast_deleted_message_history</source>
<extracomment>Message history has been deleted</extracomment>
<translation>L&apos;historique des messages a é supprimé</translation>
@ -1705,13 +1705,13 @@
<context>
<name>ChatDroppableTextArea</name>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="149"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="157"/>
<source>chat_view_send_area_placeholder_text</source>
<extracomment>Say something : placeholder text for sending message text area</extracomment>
<translation>Dites quelque chose</translation>
</message>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="184"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="192"/>
<source>cannot_record_while_in_call_tooltip</source>
<extracomment>Cannot record a message while a call is ongoing</extracomment>
<translation>Impossible d&apos;enregistrer un message vocal pendant un appel</translation>
@ -1919,19 +1919,19 @@ Error</extracomment>
<context>
<name>ChatMessageCore</name>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="136"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="135"/>
<source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation>Réactions</translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="190"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="189"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation>Supprimé</translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="192"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="191"/>
<source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment>
<translation>Le message a é supprimé</translation>
@ -1984,13 +1984,13 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="91"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="92"/>
<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="101"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="102"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
@ -1998,7 +1998,7 @@ Error</extracomment>
en bout. Seul votre correspondant peut les déchiffrer.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="230"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="231"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 est en train d&apos;écrire</translation>
@ -2995,55 +2995,55 @@ Expiration : %1</translation>
<context>
<name>GroupChatInfoParticipants</name>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="193"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="204"/>
<source>group_infos_manage_participants_title</source>
<extracomment>&quot;Gérer des participants&quot;</extracomment>
<translation>Gérer les participants</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="80"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="91"/>
<source>group_infos_participant_is_admin</source>
<translation>Admin</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="110"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="121"/>
<source>menu_see_existing_contact</source>
<extracomment>&quot;Show contact&quot;</extracomment>
<translation>Voir le contact</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="112"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="123"/>
<source>menu_add_address_to_contacts</source>
<extracomment>&quot;Add to contacts&quot;</extracomment>
<translation>Ajouter aux contacts</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="129"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="140"/>
<source>group_infos_give_admin_rights</source>
<translation>Donner les droits admins</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="129"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="140"/>
<source>group_infos_remove_admin_rights</source>
<translation>Retirer les droits admins</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="141"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="152"/>
<source>group_infos_copy_sip_address</source>
<translation>Copier ladresse SIP</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="161"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="172"/>
<source>group_infos_remove_participant</source>
<translation>Retirer le participant</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="168"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="179"/>
<source>group_infos_remove_participants_toast_title</source>
<translation>Retirer le participant ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="169"/>
<location filename="../../view/Page/Layout/Chat/GroupChatInfoParticipants.qml" line="180"/>
<source>group_infos_remove_participants_toast_message</source>
<translation>La participant sere retiré de la conversation</translation>
</message>
@ -3051,89 +3051,96 @@ Expiration : %1</translation>
<context>
<name>GroupConversationInfos</name>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="142"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="143"/>
<source>group_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment>
<translation>Appel</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="127"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="128"/>
<source>group_infos_mute</source>
<translation>Sourdine</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="127"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="128"/>
<source>group_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Réactiver les notifications</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="157"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="158"/>
<source>group_infos_meeting</source>
<extracomment>&quot;Réunion&quot;</extracomment>
<translation>Réunion</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="168"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="169"/>
<source>group_infos_participants</source>
<translation>Participants (%1)</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="204"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="209"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="206"/>
<source>group_infos_media_docs</source>
<extracomment>Medias &amp; documents</extracomment>
<translation>Medias &amp; documents</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="219"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="212"/>
<source>group_infos_shared_medias</source>
<extracomment>Shared medias</extracomment>
<translation>Médias partagés</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="223"/>
<source>group_infos_shared_docs</source>
<extracomment>Shared documents</extracomment>
<translation>Documents partagés</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="231"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="235"/>
<source>group_infos_other_actions</source>
<translation>Autres actions</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="236"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="240"/>
<source>group_infos_enable_ephemerals</source>
<translation>Activer les messages éphémères</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="236"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="240"/>
<source>group_infos_ephemerals</source>
<translation>Messages éphémères : </translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="265"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="269"/>
<source>group_infos_delete_history</source>
<translation>Supprimer l&apos;historique</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="270"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="274"/>
<source>group_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment>
<translation>Supprimer l&apos;historique ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="272"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="276"/>
<source>group_infos_delete_history_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Tous les messages seront supprimés. Souhaitez-vous continuer ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="246"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="250"/>
<source>group_infos_leave_room</source>
<translation>Quitter la conversation</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="251"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="255"/>
<source>group_infos_leave_room_toast_title</source>
<extracomment>Leave Chat Room ?</extracomment>
<translation>Quitter la conversation ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="253"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="257"/>
<source>group_infos_leave_room_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Vous ne recevrez ni pourrez envoyer des messages dans cette conversation, quitter ?</translation>
@ -4230,82 +4237,82 @@ Expiration : %1</translation>
<context>
<name>OneOneConversationInfos</name>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="72"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="73"/>
<source>one_one_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment>
<translation>Appel</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="86"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="87"/>
<source>one_one_infos_mute</source>
<translation>Sourdine</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="86"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="87"/>
<source>one_one_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Réactiver les notifications</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="102"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="103"/>
<source>one_one_infos_search</source>
<extracomment>&quot;Rechercher&quot;</extracomment>
<translation>Rechercher</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="113"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="114"/>
<source>one_one_infos_media_docs</source>
<translation>Medias &amp; documents</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="118"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="119"/>
<source>one_one_infos_shared_media</source>
<translation>Médias partagés</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="128"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="129"/>
<source>one_one_infos_shared_docs</source>
<translation>Documents partagés</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="142"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="143"/>
<source>one_one_infos_other_actions</source>
<translation>Autres actions</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="161"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="162"/>
<source>one_one_infos_enable_ephemerals</source>
<translation>Activer les messages éphémères</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="161"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="162"/>
<source>one_one_infos_ephemerals</source>
<translation>Messages éphémères : </translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="171"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="172"/>
<source>one_one_infos_delete_history</source>
<translation>Supprimer l&apos;historique</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="176"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="177"/>
<source>one_one_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment>
<translation>Supprimer l&apos;historique ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="178"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="179"/>
<source>one_one_infos_delete_history_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Tous les messages seront supprimés. Souhaitez-vous continuer ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="147"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="148"/>
<source>one_one_infos_open_contact</source>
<translation>Voir le contact</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="147"/>
<location filename="../../view/Page/Layout/Chat/OneOneConversationInfos.qml" line="148"/>
<source>one_one_infos_create_contact</source>
<translation>Créer un contact</translation>
</message>
@ -4846,6 +4853,18 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<extracomment>Reply to %1</extracomment>
<translation>Réponse à %1</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="517"/>
<source>shared_medias_title</source>
<extracomment>Shared medias</extracomment>
<translation>Médias partagés</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="519"/>
<source>shared_documents_title</source>
<extracomment>Shared documents</extracomment>
<translation>Documents partagés</translation>
</message>
</context>
<context>
<name>SettingsPage</name>

View file

@ -159,6 +159,7 @@ list(APPEND _LINPHONEAPP_QML_FILES
view/Page/Layout/Chat/MessageImdnStatusInfos.qml
view/Page/Layout/Chat/MessageInfosLayout.qml
view/Page/Layout/Chat/MessageReactionsInfos.qml
view/Page/Layout/Chat/MessageSharedFilesInfos.qml
view/Page/Layout/Chat/OneOneConversationInfos.qml
view/Page/Layout/Chat/ChatInfoActionsGroup.qml
view/Page/Layout/Chat/GroupChatInfoParticipants.qml

View file

@ -68,9 +68,8 @@ ColumnLayout {
Layout.fillHeight: true
// Layout.preferredHeight: contentHeight
chatMessageGui: mainItem.chatMessageGui
// onIsHoveringFileChanged: mainItem.isHoveringFile = isHoveringFile
onIsHoveringFileChanged: mainItem.isFileHoveringChanged(isHoveringFile)
// borderWidth: mainItem.fileBorderWidth
// borderWidth: mainItem.fileBorderWidth
// property int availableSection: mainItem.availableWidth / mainItem.filesBestWidth
// property int bestFitSection: mainItem.bestWidth / mainItem.filesBestWidth
// columns: Math.max(1, Math.min(availableSection , bestFitSection))

View file

@ -28,6 +28,8 @@ Item {
property bool isThumbnail: isVideo || isImage || isPdf
property int overriddenWidth
property int overriddenHeight
// property to change default view display
property bool showAsSquare: true
Connections {
enabled: contentGui
@ -116,6 +118,7 @@ Item {
anchors.fill: parent
Image {
anchors.fill: parent
z: parent.z + 1
visible: parent.status !== Image.Ready
source: AppIcons.fileImage
sourceSize.width: mainItem.width
@ -187,101 +190,177 @@ Item {
// ---------------------------------------------------------------------
Component {
id: defaultFileView
Control.Control {
id: defaultView
leftPadding: Math.round(4 * DefaultStyle.dp)
rightPadding: Math.round(4 * DefaultStyle.dp)
topPadding: Math.round(23 * DefaultStyle.dp)
bottomPadding: Math.round(4 * DefaultStyle.dp)
hoverEnabled: false
background: Rectangle {
anchors.fill: parent
color: FileViewStyle.extension.background.color
radius: FileViewStyle.extension.radius
Rectangle {
color: DefaultStyle.main2_200
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: Math.round(23 * DefaultStyle.dp)
EffectImage {
anchors.centerIn: parent
imageSource: contentGui
? UtilsCpp.isImage(mainItem.filePath)
? AppIcons.fileImage
: UtilsCpp.isPdf(mainItem.filePath)
? AppIcons.filePdf
: UtilsCpp.isText(mainItem.filePath)
? AppIcons.fileText
: AppIcons.file
: ''
imageWidth: Math.round(14 * DefaultStyle.dp)
imageHeight: Math.round(14 * DefaultStyle.dp)
colorizationColor: DefaultStyle.main2_600
Control.StackView {
id: defaultViewStack
width: childrenRect.width
height: childrenRect.height
initialItem: mainItem.showAsSquare ? defaultSquareView : defaultView
Connections {
target: mainItem
function onShowAsSquareChanged() {
if (mainItem.showAsSquare) defaultViewStack.replace(defaultSquareView)
else defaultViewStack.replace(defaultView)
}
}
property var imageSource: mainItem.contentGui
? UtilsCpp.isImage(mainItem.filePath)
? AppIcons.fileImage
: UtilsCpp.isPdf(mainItem.filePath)
? AppIcons.filePdf
: UtilsCpp.isText(mainItem.filePath)
? AppIcons.fileText
: AppIcons.file
: ''
Component {
id: defaultSquareView
Control.Control {
leftPadding: Math.round(4 * DefaultStyle.dp)
rightPadding: Math.round(4 * DefaultStyle.dp)
topPadding: Math.round(23 * DefaultStyle.dp)
bottomPadding: Math.round(4 * DefaultStyle.dp)
hoverEnabled: false
background: Rectangle {
anchors.fill: parent
color: FileViewStyle.extension.background.color
radius: FileViewStyle.extension.radius
Rectangle {
color: DefaultStyle.main2_200
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: Math.round(23 * DefaultStyle.dp)
EffectImage {
anchors.centerIn: parent
imageSource: defaultViewStack.imageSource
imageWidth: Math.round(14 * DefaultStyle.dp)
imageHeight: Math.round(14 * DefaultStyle.dp)
colorizationColor: DefaultStyle.main2_600
}
}
}
contentItem: Item {
Text {
id: fileName
visible: !progressBar.visible
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
// visible: mainItem.contentGui && !mainItem.isAnimatedImage
font.pixelSize: Typography.f1.pixelSize
font.weight: Typography.f1l.weight
wrapMode: Text.WrapAnywhere
maximumLineCount: 2
text: mainItem.name
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
}
Text {
id: fileSizeText
visible: !progressBar.visible
anchors.bottom: parent.bottom
anchors.right: parent.right
text: Utils.formatSize(mainItem.fileSize)
font.pixelSize: Typography.f1l.pixelSize
font.weight: Typography.f1l.weight
}
RoundProgressBar {
id: progressBar
anchors.centerIn: parent
to: 100
value: mainItem.contentGui ? (mainItem.fileSize>0 ? Math.floor(100 * mainItem.contentGui.core.fileOffset / mainItem.fileSize) : 0) : to
visible: mainItem.isTransferring && value != 0
/* Change format? Current is %
text: if(mainRow.contentGui){
var mainItem.fileSize = Utils.formatSize(mainRow.contentGui.core.mainItem.fileSize)
return progressBar.visible
? Utils.formatSize(mainRow.contentGui.core.fileOffset) + '/' + mainItem.fileSize
: mainItem.fileSize
}else
return ''
*/
}
Rectangle {
visible: thumbnailProvider.state === 'hovered' && mainItem.contentGui && (/*!mainItem.isOutgoing &&*/ !mainItem.contentGui.core.wasDownloaded)
color: DefaultStyle.grey_0
opacity: 0.5
anchors.fill: parent
}
EffectImage {
visible: thumbnailProvider.state === 'hovered' && mainItem.contentGui && (/*!mainItem.isOutgoing &&*/ !mainItem.contentGui.core.wasDownloaded)
anchors.centerIn: parent
imageSource: AppIcons.download
width: Math.round(24 * DefaultStyle.dp)
height: Math.round(24 * DefaultStyle.dp)
colorizationColor: DefaultStyle.main2_600
}
}
}
}
contentItem: Item {
Text {
id: fileName
visible: !progressBar.visible
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
// visible: mainItem.contentGui && !mainItem.isAnimatedImage
font.pixelSize: Typography.f1.pixelSize
font.weight: Typography.f1l.weight
wrapMode: Text.WrapAnywhere
maximumLineCount: 2
text: mainItem.name
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
}
Text {
id: fileSizeText
visible: !progressBar.visible
anchors.bottom: parent.bottom
anchors.right: parent.right
text: Utils.formatSize(mainItem.fileSize)
font.pixelSize: Typography.f1l.pixelSize
font.weight: Typography.f1l.weight
}
RoundProgressBar {
id: progressBar
anchors.centerIn: parent
to: 100
value: mainItem.contentGui ? (mainItem.fileSize>0 ? Math.floor(100 * mainItem.contentGui.core.fileOffset / mainItem.fileSize) : 0) : to
visible: mainItem.isTransferring && value != 0
/* Change format? Current is %
text: if(mainRow.contentGui){
var mainItem.fileSize = Utils.formatSize(mainRow.contentGui.core.mainItem.fileSize)
return progressBar.visible
? Utils.formatSize(mainRow.contentGui.core.fileOffset) + '/' + mainItem.fileSize
: mainItem.fileSize
}else
return ''
*/
}
Rectangle {
visible: thumbnailProvider.state === 'hovered' && mainItem.contentGui && (/*!mainItem.isOutgoing &&*/ !mainItem.contentGui.core.wasDownloaded)
color: DefaultStyle.grey_0
opacity: 0.5
anchors.fill: parent
}
EffectImage {
visible: thumbnailProvider.state === 'hovered' && mainItem.contentGui && (/*!mainItem.isOutgoing &&*/ !mainItem.contentGui.core.wasDownloaded)
anchors.centerIn: parent
imageSource: AppIcons.download
width: Math.round(24 * DefaultStyle.dp)
height: Math.round(24 * DefaultStyle.dp)
colorizationColor: DefaultStyle.main2_600
Component {
id: defaultView
Control.Control {
rightPadding: Math.round(17*DefaultStyle.dp)
background: Rectangle {
id: bg
color: DefaultStyle.grey_100
width: mainItem.width
height: mainItem.height
radius: Math.round(10 * DefaultStyle.dp)
}
contentItem: RowLayout {
spacing: Math.round(16 * DefaultStyle.dp)
Rectangle {
color: DefaultStyle.main2_200
width: Math.round(58 * DefaultStyle.dp)
height: bg.height
radius: bg.radius
Rectangle {
anchors.right: parent.right
color: DefaultStyle.main2_200
width: parent.width / 2
height: parent.height
radius: parent.radius
}
EffectImage {
z: parent.z + 1
anchors.centerIn: parent
imageSource: defaultViewStack.imageSource
width: Math.round(22 * DefaultStyle.dp)
height: width
colorizationColor: DefaultStyle.main2_600
}
}
ColumnLayout {
spacing: Math.round(1 * DefaultStyle.dp)
Text {
text: mainItem.name
Layout.fillWidth: true
font {
pixelSize: Typography.p2.pixelSize
weight: Typography.p2.weight
}
}
Text {
text: mainItem.fileSize
Layout.fillWidth: true
font {
pixelSize: Typography.p4.pixelSize
weight: Typography.p4.weight
}
}
}
}
}
}
}
}
Loader {

View file

@ -67,7 +67,6 @@ Control.Control {
contentItem: Control.StackView {
id: sendingAreaStackView
initialItem: textAreaComp
width: currentItem.width
onHeightChanged: {
mainItem.height = height + mainItem.topPadding + mainItem.bottomPadding
}

View file

@ -434,6 +434,8 @@ RowLayout {
contentItem: Loader {
id: contentLoader
property bool showingMessageReactions: false
property bool showingSharedFiles: false
property bool showingMedias: false
property bool showingImdnStatus: false
property bool showingManageParticipants: false
property bool showingEphemeralSettings: false
@ -445,11 +447,13 @@ RowLayout {
? messageReactionsComponent
: showingImdnStatus
? messageImdnStatusComponent
: showingManageParticipants
? manageParticipantsComponent
: mainItem.chat.core.isGroupChat
? groupInfoComponent
: oneToOneInfoComponent
: showingSharedFiles
? sharedFilesComponent
: showingManageParticipants
? manageParticipantsComponent
: mainItem.chat.core.isGroupChat
? groupInfoComponent
: oneToOneInfoComponent
active: detailsPanel.visible
onLoaded: {
if (contentLoader.item && contentLoader.item.parentView) {
@ -463,6 +467,10 @@ RowLayout {
OneOneConversationInfos {
chatGui: mainItem.chat
onEphemeralSettingsRequested: contentLoader.showingEphemeralSettings = true
onShowSharedFilesRequested: (showMedias) => {
contentLoader.showingSharedFiles = true
contentLoader.showingMedias = showMedias
}
}
}
@ -471,6 +479,10 @@ RowLayout {
GroupConversationInfos {
chatGui: mainItem.chat
onManageParticipantsRequested: contentLoader.showingManageParticipants = true
onShowSharedFilesRequested: (showMedias) => {
contentLoader.showingSharedFiles = true
contentLoader.showingMedias = showMedias
}
onEphemeralSettingsRequested: contentLoader.showingEphemeralSettings = true
}
}
@ -495,6 +507,23 @@ RowLayout {
}
}
}
Component {
id: sharedFilesComponent
MessageSharedFilesInfos {
chatGui: mainItem.chat
title: contentLoader.showingMedias
//: Shared medias
? qsTr("shared_medias_title")
//: Shared documents
: qsTr("shared_documents_title")
filter: contentLoader.showingMedias ? ChatMessageFileProxy.FilterContentType.Medias : ChatMessageFileProxy.FilterContentType.Documents
onGoBackRequested: {
// detailsPanel.visible = false
contentLoader.showingSharedFiles = false
}
}
}
Component {
id: manageParticipantsComponent

View file

@ -21,14 +21,25 @@ ColumnLayout {
return chatCore && chatCore.meAdmin && !chatCore.isReadOnly
}
Text {
font: Typography.h4
color: DefaultStyle.main2_600
text: title
Layout.topMargin: Math.round(5 * DefaultStyle.dp)
}
RowLayout {
Text {
font: Typography.h4
color: DefaultStyle.main2_600
text: title
Layout.topMargin: Math.round(5 * DefaultStyle.dp)
}
Item{Layout.fillWidth: true}
BigButton {
id: expandButton
style: ButtonStyle.noBackground
checkable: true
checked: true
icon.source: checked ? AppIcons.upArrow : AppIcons.downArrow
}
}
Rectangle {
visible: expandButton.checked
Layout.fillWidth: true
Layout.topMargin: Math.round(9 * DefaultStyle.dp)
color: DefaultStyle.grey_100

View file

@ -17,6 +17,7 @@ ColumnLayout {
property bool manageParticipants: false
signal manageParticipantsRequested()
signal ephemeralSettingsRequested()
signal showSharedFilesRequested(bool showMedias)
spacing: 0
@ -201,26 +202,29 @@ ColumnLayout {
ChatInfoActionsGroup {
Layout.topMargin: Math.round(30 * DefaultStyle.dp)
//: Medias & documents
title: qsTr("group_infos_media_docs")
entries: [
{
icon: AppIcons.photo,
visible: true,
text: qsTr("group_infos_media_docs"),
//: Shared medias
text: qsTr("group_infos_shared_medias"),
color: DefaultStyle.main2_600,
showRightArrow: true,
action: function() {
console.log("group_infos_shared_media")
mainItem.showSharedFilesRequested(true)
}
},
{
icon: AppIcons.pdf,
visible: true,
//: Shared documents
text: qsTr("group_infos_shared_docs"),
color: DefaultStyle.main2_600,
showRightArrow: true,
action: function() {
console.log("Opening shared documents")
mainItem.showSharedFilesRequested(false)
}
}
]

View file

@ -20,6 +20,7 @@ ColumnLayout {
property alias tabbar: tabbar
property alias listView: listView
property var parentView
property alias content: contentLayout.children
spacing: Math.round(25 * DefaultStyle.dp)
@ -41,6 +42,7 @@ ColumnLayout {
}
ColumnLayout {
id: contentLayout
spacing: Math.round(21 * DefaultStyle.dp)
Layout.leftMargin: Math.round(16 * DefaultStyle.dp)
Layout.rightMargin: Math.round(16 * DefaultStyle.dp)

View file

@ -0,0 +1,35 @@
import QtCore
import QtQuick
import QtQuick.Layouts
import Linphone
import UtilsCpp
MessageInfosLayout {
id: mainItem
spacing: Math.round(25 * DefaultStyle.dp)
property ChatGui chatGui
property int filter
tabbar.visible: false
content: [
GridView {
id: gridView
Layout.fillWidth: true
Layout.fillHeight: true
Layout.preferredHeight: contentHeight
cellWidth: mainItem.filter === ChatMessageFileProxy.FilterContentType.Documents ? width : width / 4
cellHeight: mainItem.filter === ChatMessageFileProxy.FilterContentType.Documents ? Math.round(69 * DefaultStyle.dp) : width / 4
model: ChatMessageFileProxy {
chat: mainItem.chatGui
filterType: mainItem.filter
}
delegate: FileView {
contentGui: modelData
showAsSquare: false
width: gridView.cellWidth - Math.round(2 * DefaultStyle.dp)
height: gridView.cellHeight - Math.round(2 * DefaultStyle.dp)
}
},
Item{Layout.fillHeight: true}
]
}

View file

@ -17,6 +17,7 @@ ColumnLayout {
property var parentView
spacing: 0
signal ephemeralSettingsRequested()
signal showSharedFilesRequested()
Avatar {
@ -119,7 +120,7 @@ ColumnLayout {
color: DefaultStyle.main2_600,
showRightArrow: true,
action: function() {
console.log("Opening shared media")
mainItem.showSharedFilesRequested(true)
}
},
{
@ -129,7 +130,7 @@ ColumnLayout {
color: DefaultStyle.main2_600,
showRightArrow: true,
action: function() {
console.log("Opening shared documents")
mainItem.showSharedFilesRequested(false)
}
}
]

View file

@ -113,7 +113,7 @@ AbstractMainPage {
height: Math.round(24 * DefaultStyle.dp)
focus: true
popup.x: 0
KeyNavigation.right: newCallButton
KeyNavigation.right: newChatButton
KeyNavigation.down: listStackView
popup.contentItem: ColumnLayout {
IconLabelButton {