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

View file

@ -33,6 +33,8 @@ list(APPEND _LINPHONEAPP_SOURCES
core/chat/message/content/ChatMessageContentGui.cpp core/chat/message/content/ChatMessageContentGui.cpp
core/chat/message/content/ChatMessageContentList.cpp core/chat/message/content/ChatMessageContentList.cpp
core/chat/message/content/ChatMessageContentProxy.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/ImdnStatusList.cpp
core/chat/message/imdn/ImdnStatusProxy.cpp core/chat/message/imdn/ImdnStatusProxy.cpp
core/emoji/EmojiList.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) { for (auto &event : lHistory) {
auto eventLogCore = EventLogCore::create(event); auto eventLogCore = EventLogCore::create(event);
eventList.append(eventLogCore); eventList.append(eventLogCore);
if (auto isMessage = eventLogCore->getChatMessageCore()) {
for (auto content : isMessage->getChatMessageContentList()) {
if (content->isFile() && !content->isVoiceRecording()) {
mFileList.append(content);
}
}
}
} }
resetEventLogList(eventList); resetEventLogList(eventList);
mIdentifier = Utils::coreStringToAppString(chatRoom->getIdentifier()); 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::eventListChanged, this, &ChatCore::lUpdateLastMessage);
connect(this, &ChatCore::eventsInserted, this, &ChatCore::lUpdateLastMessage); connect(this, &ChatCore::eventsInserted, this, &ChatCore::lUpdateLastMessage);
connect(this, &ChatCore::eventRemoved, 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(); mEphemeralEnabled = chatRoom->ephemeralEnabled();
mEphemeralLifetime = chatRoom->ephemeralEnabled() ? chatRoom->getEphemeralLifetime() : 0; mEphemeralLifetime = chatRoom->ephemeralEnabled() ? chatRoom->getEphemeralLifetime() : 0;
mIsMuted = chatRoom->getMuted(); mIsMuted = chatRoom->getMuted();
@ -114,6 +137,7 @@ ChatCore::ChatCore(const std::shared_ptr<linphone::ChatRoom> &chatRoom) : QObjec
ChatCore::~ChatCore() { ChatCore::~ChatCore() {
lDebug() << "[ChatCore] delete" << this; lDebug() << "[ChatCore] delete" << this;
mustBeInMainThread("~" + getClassName()); mustBeInMainThread("~" + getClassName());
mChatModelConnection->disconnect();
emit mChatModel->removeListener(); emit mChatModel->removeListener();
} }
@ -555,6 +579,15 @@ QString ChatCore::getComposingAddress() const {
return mComposingAddress; 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 { std::shared_ptr<ChatModel> ChatCore::getModel() const {
return mChatModel; return mChatModel;
} }

View file

@ -64,6 +64,7 @@ public:
Q_PROPERTY(QVariantList participants READ getParticipantsGui NOTIFY participantsChanged) Q_PROPERTY(QVariantList participants READ getParticipantsGui NOTIFY participantsChanged)
Q_PROPERTY(QStringList participantsAddresses READ getParticipantsAddresses WRITE lSetParticipantsAddresses NOTIFY Q_PROPERTY(QStringList participantsAddresses READ getParticipantsAddresses WRITE lSetParticipantsAddresses NOTIFY
participantsChanged) 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 // 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); static QSharedPointer<ChatCore> create(const std::shared_ptr<linphone::ChatRoom> &chatRoom);
@ -94,6 +95,9 @@ public:
ChatMessageGui *getLastMessage() const; ChatMessageGui *getLastMessage() const;
QString getLastMessageText() const; QString getLastMessageText() const;
QList<QSharedPointer<ChatMessageContentCore>> getFileList() const;
void resetFileList(QList<QSharedPointer<ChatMessageContentCore>> list);
LinphoneEnums::ChatMessageState getLastMessageState() const; LinphoneEnums::ChatMessageState getLastMessageState() const;
LinphoneEnums::ChatRoomState getChatRoomState() const; LinphoneEnums::ChatRoomState getChatRoomState() const;
@ -157,6 +161,7 @@ signals:
void ephemeralLifetimeChanged(); void ephemeralLifetimeChanged();
void meAdminChanged(); void meAdminChanged();
void participantsChanged(); void participantsChanged();
void fileListChanged();
void lDeleteMessage(ChatMessageGui *message); void lDeleteMessage(ChatMessageGui *message);
void lDelete(); void lDelete();
@ -195,6 +200,7 @@ private:
bool mIsReadOnly = false; bool mIsReadOnly = false;
bool mEphemeralEnabled = false; bool mEphemeralEnabled = false;
int mEphemeralLifetime = 0; int mEphemeralLifetime = 0;
QList<QSharedPointer<ChatMessageContentCore>> mFileList;
bool mIsMuted = false; bool mIsMuted = false;
bool mMeAdmin = false; bool mMeAdmin = false;
QList<QSharedPointer<ParticipantCore>> mParticipants; 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 "ChatMessageCore.hpp"
#include "core/App.hpp" #include "core/App.hpp"
#include "core/chat/ChatCore.hpp"
#include "model/tool/ToolModel.hpp" #include "model/tool/ToolModel.hpp"
DEFINE_ABSTRACT_OBJECT(ChatMessageCore) DEFINE_ABSTRACT_OBJECT(ChatMessageCore)
@ -406,6 +405,10 @@ bool ChatMessageCore::isFromChatGroup() const {
return mIsFromChatGroup; return mIsFromChatGroup;
} }
bool ChatMessageCore::hasFileContent() const {
return mHasFileContent;
}
bool ChatMessageCore::isRead() const { bool ChatMessageCore::isRead() const {
return mIsRead; return mIsRead;
} }

View file

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

View file

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

View file

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

View file

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

View file

@ -523,74 +523,74 @@
<context> <context>
<name>App</name> <name>App</name>
<message> <message>
<location filename="../../core/App.cpp" line="340"/> <location filename="../../core/App.cpp" line="341"/>
<source>remote_provisioning_dialog</source> <source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment> <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> <translation>Möchten Sie die Remote-Konfiguration von dieser Adresse herunterladen und anwenden?</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="816"/> <location filename="../../core/App.cpp" line="818"/>
<source>application_description</source> <source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment> <extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>Ein kostenloses Open-Source SIP Video-Telefon.</translation> <translation>Ein kostenloses Open-Source SIP Video-Telefon.</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="818"/> <location filename="../../core/App.cpp" line="820"/>
<source>command_line_arg_order</source> <source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment> <extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Kommandozeilen-Befehl an die Anwendung schicken</translation> <translation>Kommandozeilen-Befehl an die Anwendung schicken</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="822"/> <location filename="../../core/App.cpp" line="824"/>
<source>command_line_option_show_help</source> <source>command_line_option_show_help</source>
<translation>Zeige Hilfe</translation> <translation>Zeige Hilfe</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="827"/> <location filename="../../core/App.cpp" line="829"/>
<source>command_line_option_show_app_version</source> <source>command_line_option_show_app_version</source>
<translation type="unfinished">Zeige App-Version</translation> <translation type="unfinished">Zeige App-Version</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="834"/> <location filename="../../core/App.cpp" line="836"/>
<source>command_line_option_config_to_fetch</source> <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> <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> <translation>Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt.</translation>
</message> </message>
<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> <source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment> <extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, Pfad oder Datei</translation> <translation>URL, Pfad oder Datei</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="841"/> <location filename="../../core/App.cpp" line="843"/>
<source>command_line_option_minimized</source> <source>command_line_option_minimized</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="844"/> <location filename="../../core/App.cpp" line="846"/>
<source>command_line_option_log_to_stdout</source> <source>command_line_option_log_to_stdout</source>
<translation>Debug-Informationen auf der Standardausgabe ausgeben</translation> <translation>Debug-Informationen auf der Standardausgabe ausgeben</translation>
</message> </message>
<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> <source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment> <extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Nur Anwendungs-Logs ausgeben</translation> <translation>Nur Anwendungs-Logs ausgeben</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="1217"/> <location filename="../../core/App.cpp" line="1219"/>
<source>hide_action</source> <source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment> <extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Ausblenden</translation> <translation>Ausblenden</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="1217"/> <location filename="../../core/App.cpp" line="1219"/>
<source>show_action</source> <source>show_action</source>
<translation>Zeigen</translation> <translation>Zeigen</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="1232"/> <location filename="../../core/App.cpp" line="1234"/>
<source>quit_action</source> <source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment> <extracomment>&quot;Quitter&quot;</extracomment>
<translation>Beenden</translation> <translation>Beenden</translation>
@ -1728,13 +1728,13 @@
<context> <context>
<name>ChatCore</name> <name>ChatCore</name>
<message> <message>
<location filename="../../core/chat/ChatCore.cpp" line="140"/> <location filename="../../core/chat/ChatCore.cpp" line="163"/>
<source>info_toast_deleted_title</source> <source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment> <extracomment>Deleted</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>info_toast_deleted_message_history</source>
<extracomment>Message history has been deleted</extracomment> <extracomment>Message history has been deleted</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1743,13 +1743,13 @@
<context> <context>
<name>ChatDroppableTextArea</name> <name>ChatDroppableTextArea</name>
<message> <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> <source>chat_view_send_area_placeholder_text</source>
<extracomment>Say something : placeholder text for sending message text area</extracomment> <extracomment>Say something : placeholder text for sending message text area</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>cannot_record_while_in_call_tooltip</source>
<extracomment>Cannot record a message while a call is ongoing</extracomment> <extracomment>Cannot record a message while a call is ongoing</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1957,19 +1957,19 @@ Error</extracomment>
<context> <context>
<name>ChatMessageCore</name> <name>ChatMessageCore</name>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="136"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="135"/>
<source>all_reactions_label</source> <source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment> <extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment> <extracomment>Deleted</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment> <extracomment>The message has been deleted</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -2022,20 +2022,20 @@ Error</extracomment>
<context> <context>
<name>ChatMessagesListView</name> <name>ChatMessagesListView</name>
<message> <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> <source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment> <extracomment>End to end encrypted chat</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout <extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment> en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment> <extracomment>%1 is writing</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -3070,55 +3070,55 @@ Error</extracomment>
<context> <context>
<name>GroupChatInfoParticipants</name> <name>GroupChatInfoParticipants</name>
<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> <source>group_infos_participant_is_admin</source>
<translation>Admin</translation> <translation>Admin</translation>
</message> </message>
<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> <source>group_infos_manage_participants_title</source>
<extracomment>&quot;Gérer des participants&quot;</extracomment> <extracomment>&quot;Gérer des participants&quot;</extracomment>
<translation>Manage Participants</translation> <translation>Manage Participants</translation>
</message> </message>
<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> <source>menu_see_existing_contact</source>
<extracomment>&quot;Show contact&quot;</extracomment> <extracomment>&quot;Show contact&quot;</extracomment>
<translation>Kontakt anzeigen</translation> <translation>Kontakt anzeigen</translation>
</message> </message>
<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> <source>menu_add_address_to_contacts</source>
<extracomment>&quot;Add to contacts&quot;</extracomment> <extracomment>&quot;Add to contacts&quot;</extracomment>
<translation>Zu Kontakten hinzufügen</translation> <translation>Zu Kontakten hinzufügen</translation>
</message> </message>
<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> <source>group_infos_give_admin_rights</source>
<translation>Give admin rights</translation> <translation>Give admin rights</translation>
</message> </message>
<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> <source>group_infos_remove_admin_rights</source>
<translation>Remove admin rights</translation> <translation>Remove admin rights</translation>
</message> </message>
<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> <source>group_infos_copy_sip_address</source>
<translation>Copy SIP Address</translation> <translation>Copy SIP Address</translation>
</message> </message>
<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> <source>group_infos_remove_participant</source>
<translation>Remove participant</translation> <translation>Remove participant</translation>
</message> </message>
<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> <source>group_infos_remove_participants_toast_title</source>
<translation>Remove participant ?</translation> <translation>Remove participant ?</translation>
</message> </message>
<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> <source>group_infos_remove_participants_toast_message</source>
<translation>Participant will be removed from chat room.</translation> <translation>Participant will be removed from chat room.</translation>
</message> </message>
@ -3126,37 +3126,37 @@ Error</extracomment>
<context> <context>
<name>GroupConversationInfos</name> <name>GroupConversationInfos</name>
<message> <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> <source>group_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment> <extracomment>&quot;Appel&quot;</extracomment>
<translation>Anrufen</translation> <translation>Anrufen</translation>
</message> </message>
<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> <source>group_infos_mute</source>
<translation>Stummschalten</translation> <translation>Stummschalten</translation>
</message> </message>
<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> <source>group_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment> <extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Unmute</translation> <translation>Unmute</translation>
</message> </message>
<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> <source>group_infos_meeting</source>
<extracomment>&quot;Réunion&quot;</extracomment> <extracomment>&quot;Réunion&quot;</extracomment>
<translation>Meeting</translation> <translation>Meeting</translation>
</message> </message>
<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> <source>group_infos_participants</source>
<translation>Participants (%1)</translation> <translation>Participants (%1)</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="204"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="206"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="209"/>
<source>group_infos_media_docs</source> <source>group_infos_media_docs</source>
<extracomment>Medias &amp; documents</extracomment>
<translation>Medien &amp; Dokumente</translation> <translation>Medien &amp; Dokumente</translation>
</message> </message>
<message> <message>
@ -3165,55 +3165,62 @@ Error</extracomment>
<translation type="vanished">Geteilte Medien</translation> <translation type="vanished">Geteilte Medien</translation>
</message> </message>
<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> <source>group_infos_shared_docs</source>
<extracomment>Shared documents</extracomment>
<translation>Geteilte Dokumente</translation> <translation>Geteilte Dokumente</translation>
</message> </message>
<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> <source>group_infos_other_actions</source>
<translation>Weitere Aktionen</translation> <translation>Weitere Aktionen</translation>
</message> </message>
<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> <source>group_infos_enable_ephemerals</source>
<translation>Flüchtige Nachrichten aktivieren</translation> <translation>Flüchtige Nachrichten aktivieren</translation>
</message> </message>
<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> <source>group_infos_ephemerals</source>
<translation>Ephemeral messages : </translation> <translation>Ephemeral messages : </translation>
</message> </message>
<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> <source>group_infos_leave_room</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>group_infos_delete_history</source>
<translation>Verlauf löschen</translation> <translation>Verlauf löschen</translation>
</message> </message>
<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> <source>group_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment> <extracomment>Delete history ?</extracomment>
<translation>Verlauf löschen?</translation> <translation>Verlauf löschen?</translation>
</message> </message>
<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> <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> <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> <translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation>
</message> </message>
<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> <source>group_infos_leave_room_toast_title</source>
<extracomment>Leave Chat Room ?</extracomment> <extracomment>Leave Chat Room ?</extracomment>
<translation>Chatraum verlassen?</translation> <translation>Chatraum verlassen?</translation>
</message> </message>
<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> <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> <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> <translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation>
@ -4324,82 +4331,82 @@ Error</extracomment>
<context> <context>
<name>OneOneConversationInfos</name> <name>OneOneConversationInfos</name>
<message> <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> <source>one_one_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment> <extracomment>&quot;Appel&quot;</extracomment>
<translation>Anrufen</translation> <translation>Anrufen</translation>
</message> </message>
<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> <source>one_one_infos_mute</source>
<translation>Stummschalten</translation> <translation>Stummschalten</translation>
</message> </message>
<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> <source>one_one_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment> <extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Unmute</translation> <translation>Unmute</translation>
</message> </message>
<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> <source>one_one_infos_search</source>
<extracomment>&quot;Rechercher&quot;</extracomment> <extracomment>&quot;Rechercher&quot;</extracomment>
<translation>Suchen</translation> <translation>Suchen</translation>
</message> </message>
<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> <source>one_one_infos_media_docs</source>
<translation>Medien &amp; Dokumente</translation> <translation>Medien &amp; Dokumente</translation>
</message> </message>
<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> <source>one_one_infos_shared_media</source>
<translation>Geteilte Medien</translation> <translation>Geteilte Medien</translation>
</message> </message>
<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> <source>one_one_infos_shared_docs</source>
<translation>Geteilte Dokumente</translation> <translation>Geteilte Dokumente</translation>
</message> </message>
<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> <source>one_one_infos_other_actions</source>
<translation>Weitere Aktionen</translation> <translation>Weitere Aktionen</translation>
</message> </message>
<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> <source>one_one_infos_enable_ephemerals</source>
<translation>Flüchtige Nachrichten aktivieren</translation> <translation>Flüchtige Nachrichten aktivieren</translation>
</message> </message>
<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> <source>one_one_infos_ephemerals</source>
<translation>Ephemeral messages : </translation> <translation>Ephemeral messages : </translation>
</message> </message>
<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> <source>one_one_infos_delete_history</source>
<translation>Verlauf löschen</translation> <translation>Verlauf löschen</translation>
</message> </message>
<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> <source>one_one_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment> <extracomment>Delete history ?</extracomment>
<translation>Verlauf löschen?</translation> <translation>Verlauf löschen?</translation>
</message> </message>
<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> <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> <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> <translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation>
</message> </message>
<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> <source>one_one_infos_open_contact</source>
<translation>Kontakt öffnen</translation> <translation>Kontakt öffnen</translation>
</message> </message>
<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> <source>one_one_infos_create_contact</source>
<translation>Kontakt erstellen</translation> <translation>Kontakt erstellen</translation>
</message> </message>
@ -4952,6 +4959,18 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
<extracomment>Reply to %1</extracomment> <extracomment>Reply to %1</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </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>
<context> <context>
<name>SettingsPage</name> <name>SettingsPage</name>

View file

@ -523,74 +523,74 @@
<context> <context>
<name>App</name> <name>App</name>
<message> <message>
<location filename="../../core/App.cpp" line="340"/> <location filename="../../core/App.cpp" line="341"/>
<source>remote_provisioning_dialog</source> <source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment> <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> <translation>Do you want to download and apply remote provisioning from this address ?</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="816"/> <location filename="../../core/App.cpp" line="818"/>
<source>application_description</source> <source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment> <extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation> <translation>A free and open source SIP video-phone.</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="818"/> <location filename="../../core/App.cpp" line="820"/>
<source>command_line_arg_order</source> <source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment> <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> <translation>Send an order to the application towards a command line</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="822"/> <location filename="../../core/App.cpp" line="824"/>
<source>command_line_option_show_help</source> <source>command_line_option_show_help</source>
<translation>Show this help</translation> <translation>Show this help</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="827"/> <location filename="../../core/App.cpp" line="829"/>
<source>command_line_option_show_app_version</source> <source>command_line_option_show_app_version</source>
<translation>Show app version</translation> <translation>Show app version</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="834"/> <location filename="../../core/App.cpp" line="836"/>
<source>command_line_option_config_to_fetch</source> <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> <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> <translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message> </message>
<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> <source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment> <extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation> <translation>URL, path or file</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="841"/> <location filename="../../core/App.cpp" line="843"/>
<source>command_line_option_minimized</source> <source>command_line_option_minimized</source>
<translation>Minimize</translation> <translation>Minimize</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="844"/> <location filename="../../core/App.cpp" line="846"/>
<source>command_line_option_log_to_stdout</source> <source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation> <translation>Log to stdout some debug information while running</translation>
</message> </message>
<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> <source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment> <extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation> <translation>Print only logs from the application</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="1217"/> <location filename="../../core/App.cpp" line="1219"/>
<source>hide_action</source> <source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment> <extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Hide</translation> <translation>Hide</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="1217"/> <location filename="../../core/App.cpp" line="1219"/>
<source>show_action</source> <source>show_action</source>
<translation>Show</translation> <translation>Show</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="1232"/> <location filename="../../core/App.cpp" line="1234"/>
<source>quit_action</source> <source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment> <extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quit</translation> <translation>Quit</translation>
@ -1690,13 +1690,13 @@
<context> <context>
<name>ChatCore</name> <name>ChatCore</name>
<message> <message>
<location filename="../../core/chat/ChatCore.cpp" line="140"/> <location filename="../../core/chat/ChatCore.cpp" line="163"/>
<source>info_toast_deleted_title</source> <source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment> <extracomment>Deleted</extracomment>
<translation>Deleted</translation> <translation>Deleted</translation>
</message> </message>
<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> <source>info_toast_deleted_message_history</source>
<extracomment>Message history has been deleted</extracomment> <extracomment>Message history has been deleted</extracomment>
<translation>Message history has been deleted</translation> <translation>Message history has been deleted</translation>
@ -1705,13 +1705,13 @@
<context> <context>
<name>ChatDroppableTextArea</name> <name>ChatDroppableTextArea</name>
<message> <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> <source>chat_view_send_area_placeholder_text</source>
<extracomment>Say something : placeholder text for sending message text area</extracomment> <extracomment>Say something : placeholder text for sending message text area</extracomment>
<translation>Say something</translation> <translation>Say something</translation>
</message> </message>
<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> <source>cannot_record_while_in_call_tooltip</source>
<extracomment>Cannot record a message while a call is ongoing</extracomment> <extracomment>Cannot record a message while a call is ongoing</extracomment>
<translation>Cannot record a message while a call is ongoing</translation> <translation>Cannot record a message while a call is ongoing</translation>
@ -1919,19 +1919,19 @@ Error</extracomment>
<context> <context>
<name>ChatMessageCore</name> <name>ChatMessageCore</name>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="136"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="135"/>
<source>all_reactions_label</source> <source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment> <extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation>Reactions</translation> <translation>Reactions</translation>
</message> </message>
<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> <source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment> <extracomment>Deleted</extracomment>
<translation>Deleted</translation> <translation>Deleted</translation>
</message> </message>
<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> <source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment> <extracomment>The message has been deleted</extracomment>
<translation>The message has been deleted</translation> <translation>The message has been deleted</translation>
@ -1984,13 +1984,13 @@ Error</extracomment>
<context> <context>
<name>ChatMessagesListView</name> <name>ChatMessagesListView</name>
<message> <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> <source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment> <extracomment>End to end encrypted chat</extracomment>
<translation>End to end encrypted chat</translation> <translation>End to end encrypted chat</translation>
</message> </message>
<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> <source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout <extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment> en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
@ -1998,7 +1998,7 @@ Error</extracomment>
Only your correspondent can decrypt them.</translation> Only your correspondent can decrypt them.</translation>
</message> </message>
<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> <source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment> <extracomment>%1 is writing</extracomment>
<translation>%1 is writing</translation> <translation>%1 is writing</translation>
@ -2995,55 +2995,55 @@ Expiration : %1</translation>
<context> <context>
<name>GroupChatInfoParticipants</name> <name>GroupChatInfoParticipants</name>
<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> <source>group_infos_manage_participants_title</source>
<extracomment>&quot;Gérer des participants&quot;</extracomment> <extracomment>&quot;Gérer des participants&quot;</extracomment>
<translation>Manage participants</translation> <translation>Manage participants</translation>
</message> </message>
<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> <source>group_infos_participant_is_admin</source>
<translation>Admin</translation> <translation>Admin</translation>
</message> </message>
<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> <source>menu_see_existing_contact</source>
<extracomment>&quot;Show contact&quot;</extracomment> <extracomment>&quot;Show contact&quot;</extracomment>
<translation>Show contact</translation> <translation>Show contact</translation>
</message> </message>
<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> <source>menu_add_address_to_contacts</source>
<extracomment>&quot;Add to contacts&quot;</extracomment> <extracomment>&quot;Add to contacts&quot;</extracomment>
<translation>Add to contacts</translation> <translation>Add to contacts</translation>
</message> </message>
<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> <source>group_infos_give_admin_rights</source>
<translation>Give admin rights</translation> <translation>Give admin rights</translation>
</message> </message>
<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> <source>group_infos_remove_admin_rights</source>
<translation>Remove admin rights</translation> <translation>Remove admin rights</translation>
</message> </message>
<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> <source>group_infos_copy_sip_address</source>
<translation>Copy SIP Address</translation> <translation>Copy SIP Address</translation>
</message> </message>
<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> <source>group_infos_remove_participant</source>
<translation>Remove participant</translation> <translation>Remove participant</translation>
</message> </message>
<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> <source>group_infos_remove_participants_toast_title</source>
<translation>Remove participant ?</translation> <translation>Remove participant ?</translation>
</message> </message>
<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> <source>group_infos_remove_participants_toast_message</source>
<translation>Participant will be removed from chat room.</translation> <translation>Participant will be removed from chat room.</translation>
</message> </message>
@ -3051,89 +3051,96 @@ Expiration : %1</translation>
<context> <context>
<name>GroupConversationInfos</name> <name>GroupConversationInfos</name>
<message> <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> <source>group_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment> <extracomment>&quot;Appel&quot;</extracomment>
<translation>Call</translation> <translation>Call</translation>
</message> </message>
<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> <source>group_infos_mute</source>
<translation>Mute</translation> <translation>Mute</translation>
</message> </message>
<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> <source>group_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment> <extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Unmute</translation> <translation>Unmute</translation>
</message> </message>
<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> <source>group_infos_meeting</source>
<extracomment>&quot;Réunion&quot;</extracomment> <extracomment>&quot;Réunion&quot;</extracomment>
<translation>Meeting</translation> <translation>Meeting</translation>
</message> </message>
<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> <source>group_infos_participants</source>
<translation>Participants (%1)</translation> <translation>Participants (%1)</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="204"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="206"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="209"/>
<source>group_infos_media_docs</source> <source>group_infos_media_docs</source>
<extracomment>Medias &amp; documents</extracomment>
<translation>Medias &amp; documents</translation> <translation>Medias &amp; documents</translation>
</message> </message>
<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> <source>group_infos_shared_docs</source>
<extracomment>Shared documents</extracomment>
<translation>Shared documents</translation> <translation>Shared documents</translation>
</message> </message>
<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> <source>group_infos_other_actions</source>
<translation>Other actions</translation> <translation>Other actions</translation>
</message> </message>
<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> <source>group_infos_enable_ephemerals</source>
<translation>Enable ephemeral messages</translation> <translation>Enable ephemeral messages</translation>
</message> </message>
<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> <source>group_infos_ephemerals</source>
<translation>Ephemeral messages : </translation> <translation>Ephemeral messages : </translation>
</message> </message>
<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> <source>group_infos_delete_history</source>
<translation>Delete history</translation> <translation>Delete history</translation>
</message> </message>
<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> <source>group_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment> <extracomment>Delete history ?</extracomment>
<translation>Delete history ?</translation> <translation>Delete history ?</translation>
</message> </message>
<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> <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> <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> <translation>All the messages will be removed from the chat room. Do you want to continue ?</translation>
</message> </message>
<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> <source>group_infos_leave_room</source>
<translation>Leave Chat Room</translation> <translation>Leave Chat Room</translation>
</message> </message>
<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> <source>group_infos_leave_room_toast_title</source>
<extracomment>Leave Chat Room ?</extracomment> <extracomment>Leave Chat Room ?</extracomment>
<translation>Leave Chat Room ?</translation> <translation>Leave Chat Room ?</translation>
</message> </message>
<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> <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> <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> <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> <extracomment>Message status</extracomment>
<translation>Message status</translation> <translation>Message status</translation>
</message> </message>
<message>
<source>click_to_delete_reaction_info</source>
<extracomment>Click to delete</extracomment>
<translation type="vanished">Click to delete</translation>
</message>
</context> </context>
<context> <context>
<name>MessageReactionsInfos</name> <name>MessageReactionsInfos</name>
@ -4235,82 +4237,82 @@ Expiration : %1</translation>
<context> <context>
<name>OneOneConversationInfos</name> <name>OneOneConversationInfos</name>
<message> <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> <source>one_one_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment> <extracomment>&quot;Appel&quot;</extracomment>
<translation>Call</translation> <translation>Call</translation>
</message> </message>
<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> <source>one_one_infos_mute</source>
<translation>Mute</translation> <translation>Mute</translation>
</message> </message>
<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> <source>one_one_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment> <extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Unmute</translation> <translation>Unmute</translation>
</message> </message>
<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> <source>one_one_infos_search</source>
<extracomment>&quot;Rechercher&quot;</extracomment> <extracomment>&quot;Rechercher&quot;</extracomment>
<translation>Search</translation> <translation>Search</translation>
</message> </message>
<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> <source>one_one_infos_media_docs</source>
<translation>Medias &amp; documents</translation> <translation>Medias &amp; documents</translation>
</message> </message>
<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> <source>one_one_infos_shared_media</source>
<translation>Shared medias</translation> <translation>Shared medias</translation>
</message> </message>
<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> <source>one_one_infos_shared_docs</source>
<translation>Shared documents</translation> <translation>Shared documents</translation>
</message> </message>
<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> <source>one_one_infos_other_actions</source>
<translation>Other actions</translation> <translation>Other actions</translation>
</message> </message>
<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> <source>one_one_infos_enable_ephemerals</source>
<translation>Enable ephemeral messages</translation> <translation>Enable ephemeral messages</translation>
</message> </message>
<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> <source>one_one_infos_ephemerals</source>
<translation>Ephemeral messages : </translation> <translation>Ephemeral messages : </translation>
</message> </message>
<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> <source>one_one_infos_delete_history</source>
<translation>Delete history</translation> <translation>Delete history</translation>
</message> </message>
<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> <source>one_one_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment> <extracomment>Delete history ?</extracomment>
<translation>Delete history ?</translation> <translation>Delete history ?</translation>
</message> </message>
<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> <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> <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> <translation>All the messages will be removed from the chat room. Do you want to continue ?</translation>
</message> </message>
<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> <source>one_one_infos_open_contact</source>
<translation>Show contact</translation> <translation>Show contact</translation>
</message> </message>
<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> <source>one_one_infos_create_contact</source>
<translation>Create contact</translation> <translation>Create contact</translation>
</message> </message>
@ -4851,6 +4853,18 @@ To enable them in a commercial project, please contact us.</translation>
<extracomment>Reply to %1</extracomment> <extracomment>Reply to %1</extracomment>
<translation>Reply to %1</translation> <translation>Reply to %1</translation>
</message> </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>
<context> <context>
<name>SettingsPage</name> <name>SettingsPage</name>

View file

@ -523,74 +523,74 @@
<context> <context>
<name>App</name> <name>App</name>
<message> <message>
<location filename="../../core/App.cpp" line="340"/> <location filename="../../core/App.cpp" line="341"/>
<source>remote_provisioning_dialog</source> <source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment> <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> <translation>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="816"/> <location filename="../../core/App.cpp" line="818"/>
<source>application_description</source> <source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment> <extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation> <translation>A free and open source SIP video-phone.</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="818"/> <location filename="../../core/App.cpp" line="820"/>
<source>command_line_arg_order</source> <source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment> <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> <translation>Send an order to the application towards a command line</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="822"/> <location filename="../../core/App.cpp" line="824"/>
<source>command_line_option_show_help</source> <source>command_line_option_show_help</source>
<translation>Show this help</translation> <translation>Show this help</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="827"/> <location filename="../../core/App.cpp" line="829"/>
<source>command_line_option_show_app_version</source> <source>command_line_option_show_app_version</source>
<translation>Afficher la version de l&apos;application</translation> <translation>Afficher la version de l&apos;application</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="834"/> <location filename="../../core/App.cpp" line="836"/>
<source>command_line_option_config_to_fetch</source> <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> <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> <translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message> </message>
<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> <source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment> <extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation> <translation>URL, path or file</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="841"/> <location filename="../../core/App.cpp" line="843"/>
<source>command_line_option_minimized</source> <source>command_line_option_minimized</source>
<translation>Minimiser</translation> <translation>Minimiser</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="844"/> <location filename="../../core/App.cpp" line="846"/>
<source>command_line_option_log_to_stdout</source> <source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation> <translation>Log to stdout some debug information while running</translation>
</message> </message>
<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> <source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment> <extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation> <translation>Print only logs from the application</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="1217"/> <location filename="../../core/App.cpp" line="1219"/>
<source>hide_action</source> <source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment> <extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Cacher</translation> <translation>Cacher</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="1217"/> <location filename="../../core/App.cpp" line="1219"/>
<source>show_action</source> <source>show_action</source>
<translation>Afficher</translation> <translation>Afficher</translation>
</message> </message>
<message> <message>
<location filename="../../core/App.cpp" line="1232"/> <location filename="../../core/App.cpp" line="1234"/>
<source>quit_action</source> <source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment> <extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quitter</translation> <translation>Quitter</translation>
@ -1690,13 +1690,13 @@
<context> <context>
<name>ChatCore</name> <name>ChatCore</name>
<message> <message>
<location filename="../../core/chat/ChatCore.cpp" line="140"/> <location filename="../../core/chat/ChatCore.cpp" line="163"/>
<source>info_toast_deleted_title</source> <source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment> <extracomment>Deleted</extracomment>
<translation>Supprimé</translation> <translation>Supprimé</translation>
</message> </message>
<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> <source>info_toast_deleted_message_history</source>
<extracomment>Message history has been deleted</extracomment> <extracomment>Message history has been deleted</extracomment>
<translation>L&apos;historique des messages a é supprimé</translation> <translation>L&apos;historique des messages a é supprimé</translation>
@ -1705,13 +1705,13 @@
<context> <context>
<name>ChatDroppableTextArea</name> <name>ChatDroppableTextArea</name>
<message> <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> <source>chat_view_send_area_placeholder_text</source>
<extracomment>Say something : placeholder text for sending message text area</extracomment> <extracomment>Say something : placeholder text for sending message text area</extracomment>
<translation>Dites quelque chose</translation> <translation>Dites quelque chose</translation>
</message> </message>
<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> <source>cannot_record_while_in_call_tooltip</source>
<extracomment>Cannot record a message while a call is ongoing</extracomment> <extracomment>Cannot record a message while a call is ongoing</extracomment>
<translation>Impossible d&apos;enregistrer un message vocal pendant un appel</translation> <translation>Impossible d&apos;enregistrer un message vocal pendant un appel</translation>
@ -1919,19 +1919,19 @@ Error</extracomment>
<context> <context>
<name>ChatMessageCore</name> <name>ChatMessageCore</name>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="136"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="135"/>
<source>all_reactions_label</source> <source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment> <extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation>Réactions</translation> <translation>Réactions</translation>
</message> </message>
<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> <source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment> <extracomment>Deleted</extracomment>
<translation>Supprimé</translation> <translation>Supprimé</translation>
</message> </message>
<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> <source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment> <extracomment>The message has been deleted</extracomment>
<translation>Le message a é supprimé</translation> <translation>Le message a é supprimé</translation>
@ -1984,13 +1984,13 @@ Error</extracomment>
<context> <context>
<name>ChatMessagesListView</name> <name>ChatMessagesListView</name>
<message> <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> <source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment> <extracomment>End to end encrypted chat</extracomment>
<translation>Conversation chiffrée de bout en bout</translation> <translation>Conversation chiffrée de bout en bout</translation>
</message> </message>
<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> <source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout <extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment> 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> en bout. Seul votre correspondant peut les déchiffrer.</translation>
</message> </message>
<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> <source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment> <extracomment>%1 is writing</extracomment>
<translation>%1 est en train d&apos;écrire</translation> <translation>%1 est en train d&apos;écrire</translation>
@ -2995,55 +2995,55 @@ Expiration : %1</translation>
<context> <context>
<name>GroupChatInfoParticipants</name> <name>GroupChatInfoParticipants</name>
<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> <source>group_infos_manage_participants_title</source>
<extracomment>&quot;Gérer des participants&quot;</extracomment> <extracomment>&quot;Gérer des participants&quot;</extracomment>
<translation>Gérer les participants</translation> <translation>Gérer les participants</translation>
</message> </message>
<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> <source>group_infos_participant_is_admin</source>
<translation>Admin</translation> <translation>Admin</translation>
</message> </message>
<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> <source>menu_see_existing_contact</source>
<extracomment>&quot;Show contact&quot;</extracomment> <extracomment>&quot;Show contact&quot;</extracomment>
<translation>Voir le contact</translation> <translation>Voir le contact</translation>
</message> </message>
<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> <source>menu_add_address_to_contacts</source>
<extracomment>&quot;Add to contacts&quot;</extracomment> <extracomment>&quot;Add to contacts&quot;</extracomment>
<translation>Ajouter aux contacts</translation> <translation>Ajouter aux contacts</translation>
</message> </message>
<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> <source>group_infos_give_admin_rights</source>
<translation>Donner les droits admins</translation> <translation>Donner les droits admins</translation>
</message> </message>
<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> <source>group_infos_remove_admin_rights</source>
<translation>Retirer les droits admins</translation> <translation>Retirer les droits admins</translation>
</message> </message>
<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> <source>group_infos_copy_sip_address</source>
<translation>Copier ladresse SIP</translation> <translation>Copier ladresse SIP</translation>
</message> </message>
<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> <source>group_infos_remove_participant</source>
<translation>Retirer le participant</translation> <translation>Retirer le participant</translation>
</message> </message>
<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> <source>group_infos_remove_participants_toast_title</source>
<translation>Retirer le participant ?</translation> <translation>Retirer le participant ?</translation>
</message> </message>
<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> <source>group_infos_remove_participants_toast_message</source>
<translation>La participant sere retiré de la conversation</translation> <translation>La participant sere retiré de la conversation</translation>
</message> </message>
@ -3051,89 +3051,96 @@ Expiration : %1</translation>
<context> <context>
<name>GroupConversationInfos</name> <name>GroupConversationInfos</name>
<message> <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> <source>group_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment> <extracomment>&quot;Appel&quot;</extracomment>
<translation>Appel</translation> <translation>Appel</translation>
</message> </message>
<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> <source>group_infos_mute</source>
<translation>Sourdine</translation> <translation>Sourdine</translation>
</message> </message>
<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> <source>group_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment> <extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Réactiver les notifications</translation> <translation>Réactiver les notifications</translation>
</message> </message>
<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> <source>group_infos_meeting</source>
<extracomment>&quot;Réunion&quot;</extracomment> <extracomment>&quot;Réunion&quot;</extracomment>
<translation>Réunion</translation> <translation>Réunion</translation>
</message> </message>
<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> <source>group_infos_participants</source>
<translation>Participants (%1)</translation> <translation>Participants (%1)</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="204"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="206"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="209"/>
<source>group_infos_media_docs</source> <source>group_infos_media_docs</source>
<extracomment>Medias &amp; documents</extracomment>
<translation>Medias &amp; documents</translation> <translation>Medias &amp; documents</translation>
</message> </message>
<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> <source>group_infos_shared_docs</source>
<extracomment>Shared documents</extracomment>
<translation>Documents partagés</translation> <translation>Documents partagés</translation>
</message> </message>
<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> <source>group_infos_other_actions</source>
<translation>Autres actions</translation> <translation>Autres actions</translation>
</message> </message>
<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> <source>group_infos_enable_ephemerals</source>
<translation>Activer les messages éphémères</translation> <translation>Activer les messages éphémères</translation>
</message> </message>
<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> <source>group_infos_ephemerals</source>
<translation>Messages éphémères : </translation> <translation>Messages éphémères : </translation>
</message> </message>
<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> <source>group_infos_delete_history</source>
<translation>Supprimer l&apos;historique</translation> <translation>Supprimer l&apos;historique</translation>
</message> </message>
<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> <source>group_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment> <extracomment>Delete history ?</extracomment>
<translation>Supprimer l&apos;historique ?</translation> <translation>Supprimer l&apos;historique ?</translation>
</message> </message>
<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> <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> <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> <translation>Tous les messages seront supprimés. Souhaitez-vous continuer ?</translation>
</message> </message>
<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> <source>group_infos_leave_room</source>
<translation>Quitter la conversation</translation> <translation>Quitter la conversation</translation>
</message> </message>
<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> <source>group_infos_leave_room_toast_title</source>
<extracomment>Leave Chat Room ?</extracomment> <extracomment>Leave Chat Room ?</extracomment>
<translation>Quitter la conversation ?</translation> <translation>Quitter la conversation ?</translation>
</message> </message>
<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> <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> <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> <translation>Vous ne recevrez ni pourrez envoyer des messages dans cette conversation, quitter ?</translation>
@ -4230,82 +4237,82 @@ Expiration : %1</translation>
<context> <context>
<name>OneOneConversationInfos</name> <name>OneOneConversationInfos</name>
<message> <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> <source>one_one_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment> <extracomment>&quot;Appel&quot;</extracomment>
<translation>Appel</translation> <translation>Appel</translation>
</message> </message>
<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> <source>one_one_infos_mute</source>
<translation>Sourdine</translation> <translation>Sourdine</translation>
</message> </message>
<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> <source>one_one_infos_unmute</source>
<extracomment>&quot;Sourdine&quot;</extracomment> <extracomment>&quot;Sourdine&quot;</extracomment>
<translation>Réactiver les notifications</translation> <translation>Réactiver les notifications</translation>
</message> </message>
<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> <source>one_one_infos_search</source>
<extracomment>&quot;Rechercher&quot;</extracomment> <extracomment>&quot;Rechercher&quot;</extracomment>
<translation>Rechercher</translation> <translation>Rechercher</translation>
</message> </message>
<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> <source>one_one_infos_media_docs</source>
<translation>Medias &amp; documents</translation> <translation>Medias &amp; documents</translation>
</message> </message>
<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> <source>one_one_infos_shared_media</source>
<translation>Médias partagés</translation> <translation>Médias partagés</translation>
</message> </message>
<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> <source>one_one_infos_shared_docs</source>
<translation>Documents partagés</translation> <translation>Documents partagés</translation>
</message> </message>
<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> <source>one_one_infos_other_actions</source>
<translation>Autres actions</translation> <translation>Autres actions</translation>
</message> </message>
<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> <source>one_one_infos_enable_ephemerals</source>
<translation>Activer les messages éphémères</translation> <translation>Activer les messages éphémères</translation>
</message> </message>
<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> <source>one_one_infos_ephemerals</source>
<translation>Messages éphémères : </translation> <translation>Messages éphémères : </translation>
</message> </message>
<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> <source>one_one_infos_delete_history</source>
<translation>Supprimer l&apos;historique</translation> <translation>Supprimer l&apos;historique</translation>
</message> </message>
<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> <source>one_one_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment> <extracomment>Delete history ?</extracomment>
<translation>Supprimer l&apos;historique ?</translation> <translation>Supprimer l&apos;historique ?</translation>
</message> </message>
<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> <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> <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> <translation>Tous les messages seront supprimés. Souhaitez-vous continuer ?</translation>
</message> </message>
<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> <source>one_one_infos_open_contact</source>
<translation>Voir le contact</translation> <translation>Voir le contact</translation>
</message> </message>
<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> <source>one_one_infos_create_contact</source>
<translation>Créer un contact</translation> <translation>Créer un contact</translation>
</message> </message>
@ -4846,6 +4853,18 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<extracomment>Reply to %1</extracomment> <extracomment>Reply to %1</extracomment>
<translation>Réponse à %1</translation> <translation>Réponse à %1</translation>
</message> </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>
<context> <context>
<name>SettingsPage</name> <name>SettingsPage</name>

View file

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

View file

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

View file

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

View file

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

View file

@ -434,6 +434,8 @@ RowLayout {
contentItem: Loader { contentItem: Loader {
id: contentLoader id: contentLoader
property bool showingMessageReactions: false property bool showingMessageReactions: false
property bool showingSharedFiles: false
property bool showingMedias: false
property bool showingImdnStatus: false property bool showingImdnStatus: false
property bool showingManageParticipants: false property bool showingManageParticipants: false
property bool showingEphemeralSettings: false property bool showingEphemeralSettings: false
@ -445,11 +447,13 @@ RowLayout {
? messageReactionsComponent ? messageReactionsComponent
: showingImdnStatus : showingImdnStatus
? messageImdnStatusComponent ? messageImdnStatusComponent
: showingManageParticipants : showingSharedFiles
? manageParticipantsComponent ? sharedFilesComponent
: mainItem.chat.core.isGroupChat : showingManageParticipants
? groupInfoComponent ? manageParticipantsComponent
: oneToOneInfoComponent : mainItem.chat.core.isGroupChat
? groupInfoComponent
: oneToOneInfoComponent
active: detailsPanel.visible active: detailsPanel.visible
onLoaded: { onLoaded: {
if (contentLoader.item && contentLoader.item.parentView) { if (contentLoader.item && contentLoader.item.parentView) {
@ -463,6 +467,10 @@ RowLayout {
OneOneConversationInfos { OneOneConversationInfos {
chatGui: mainItem.chat chatGui: mainItem.chat
onEphemeralSettingsRequested: contentLoader.showingEphemeralSettings = true onEphemeralSettingsRequested: contentLoader.showingEphemeralSettings = true
onShowSharedFilesRequested: (showMedias) => {
contentLoader.showingSharedFiles = true
contentLoader.showingMedias = showMedias
}
} }
} }
@ -471,6 +479,10 @@ RowLayout {
GroupConversationInfos { GroupConversationInfos {
chatGui: mainItem.chat chatGui: mainItem.chat
onManageParticipantsRequested: contentLoader.showingManageParticipants = true onManageParticipantsRequested: contentLoader.showingManageParticipants = true
onShowSharedFilesRequested: (showMedias) => {
contentLoader.showingSharedFiles = true
contentLoader.showingMedias = showMedias
}
onEphemeralSettingsRequested: contentLoader.showingEphemeralSettings = true 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 { Component {
id: manageParticipantsComponent id: manageParticipantsComponent

View file

@ -21,14 +21,25 @@ ColumnLayout {
return chatCore && chatCore.meAdmin && !chatCore.isReadOnly return chatCore && chatCore.meAdmin && !chatCore.isReadOnly
} }
Text { RowLayout {
font: Typography.h4 Text {
color: DefaultStyle.main2_600 font: Typography.h4
text: title color: DefaultStyle.main2_600
Layout.topMargin: Math.round(5 * DefaultStyle.dp) 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 { Rectangle {
visible: expandButton.checked
Layout.fillWidth: true Layout.fillWidth: true
Layout.topMargin: Math.round(9 * DefaultStyle.dp) Layout.topMargin: Math.round(9 * DefaultStyle.dp)
color: DefaultStyle.grey_100 color: DefaultStyle.grey_100

View file

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

View file

@ -20,6 +20,7 @@ ColumnLayout {
property alias tabbar: tabbar property alias tabbar: tabbar
property alias listView: listView property alias listView: listView
property var parentView property var parentView
property alias content: contentLayout.children
spacing: Math.round(25 * DefaultStyle.dp) spacing: Math.round(25 * DefaultStyle.dp)
@ -41,6 +42,7 @@ ColumnLayout {
} }
ColumnLayout { ColumnLayout {
id: contentLayout
spacing: Math.round(21 * DefaultStyle.dp) spacing: Math.round(21 * DefaultStyle.dp)
Layout.leftMargin: Math.round(16 * DefaultStyle.dp) Layout.leftMargin: Math.round(16 * DefaultStyle.dp)
Layout.rightMargin: 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 property var parentView
spacing: 0 spacing: 0
signal ephemeralSettingsRequested() signal ephemeralSettingsRequested()
signal showSharedFilesRequested()
Avatar { Avatar {
@ -119,7 +120,7 @@ ColumnLayout {
color: DefaultStyle.main2_600, color: DefaultStyle.main2_600,
showRightArrow: true, showRightArrow: true,
action: function() { action: function() {
console.log("Opening shared media") mainItem.showSharedFilesRequested(true)
} }
}, },
{ {
@ -129,7 +130,7 @@ ColumnLayout {
color: DefaultStyle.main2_600, color: DefaultStyle.main2_600,
showRightArrow: true, showRightArrow: true,
action: function() { action: function() {
console.log("Opening shared documents") mainItem.showSharedFilesRequested(false)
} }
} }
] ]

View file

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