From 2d9f568e3d70a8a17433560f3a6d57688d97330b Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 27 Oct 2025 14:09:34 +0100 Subject: [PATCH] Fixes : rename fr translation set enableVideo to false if audio call #LINQT-2086 try to fix crash on macos when switching from call window to main window (#LINQT-2077 and #LINQT-2087) set error message when not able to download attached file fix remove chat from list fix new chat connection after first message sent #LINQT-2090 clean code + invalidate() for Qt6.10 compatibility fix translations --- Linphone/core/chat/ChatCore.cpp | 12 +- Linphone/core/chat/ChatCore.hpp | 1 - Linphone/core/chat/ChatList.cpp | 23 +- Linphone/core/chat/ChatList.hpp | 1 - Linphone/core/chat/ChatProxy.cpp | 5 +- Linphone/core/chat/ChatProxy.hpp | 3 - Linphone/core/chat/message/EventLogList.cpp | 11 +- Linphone/core/chat/message/EventLogList.hpp | 1 - Linphone/core/chat/message/EventLogProxy.cpp | 6 +- .../content/ChatMessageContentCore.cpp | 13 +- .../content/ChatMessageContentList.cpp | 3 +- .../core/participant/ParticipantProxy.cpp | 2 +- Linphone/core/proxy/LimitProxy.cpp | 10 +- Linphone/core/proxy/SortFilterProxy.cpp | 3 +- Linphone/data/languages/de.ts | 624 +++++++++-------- Linphone/data/languages/en.ts | 623 +++++++++-------- Linphone/data/languages/fr.ts | 625 +++++++++--------- .../content/ChatMessageContentModel.cpp | 38 +- .../content/ChatMessageContentModel.hpp | 12 +- Linphone/tool/LinphoneEnums.cpp | 3 + Linphone/tool/Utils.cpp | 9 +- .../Control/Display/Chat/ChatListView.qml | 6 +- .../Control/Display/Chat/ImageFileView.qml | 4 +- .../Display/Meeting/MeetingListView.qml | 2 - .../view/Page/Form/Chat/SelectedChatView.qml | 3 +- .../Page/Main/Account/AccountListView.qml | 2 +- Linphone/view/Page/Main/Chat/ChatPage.qml | 2 +- .../view/Page/Window/Call/CallsWindow.qml | 12 +- 28 files changed, 1091 insertions(+), 968 deletions(-) diff --git a/Linphone/core/chat/ChatCore.cpp b/Linphone/core/chat/ChatCore.cpp index a29e08bf..30547bb6 100644 --- a/Linphone/core/chat/ChatCore.cpp +++ b/Linphone/core/chat/ChatCore.cpp @@ -207,7 +207,7 @@ void ChatCore::setSelf(QSharedPointer me) { &ChatModel::newEvent, [this](const std::shared_ptr &chatRoom, const std::shared_ptr &eventLog) { if (mChatModel->getMonitor() != chatRoom) return; - qDebug() << "EVENT LOG RECEIVED IN CHATROOM" << mChatModel->getTitle(); + lDebug() << "EVENT LOG RECEIVED IN CHATROOM" << mChatModel->getTitle(); auto event = EventLogCore::create(eventLog); if (event->isHandled()) { mChatModelConnection->invokeToCore([this, event]() { emit eventsInserted({event}); }); @@ -220,7 +220,7 @@ void ChatCore::setSelf(QSharedPointer me) { &ChatModel::chatMessagesReceived, [this](const std::shared_ptr &chatRoom, const std::list> &eventsLog) { if (mChatModel->getMonitor() != chatRoom) return; - qDebug() << "CHAT MESSAGE RECEIVED IN CHATROOM" << mChatModel->getTitle(); + lDebug() << "CHAT MESSAGE RECEIVED IN CHATROOM" << mChatModel->getTitle(); QList> list; for (auto &e : eventsLog) { auto event = EventLogCore::create(e); @@ -491,7 +491,7 @@ ChatMessageGui *ChatCore::getLastMessage() const { void ChatCore::setLastMessage(QSharedPointer lastMessage) { if (mLastMessage != lastMessage) { - disconnect(mLastMessage.get()); + if (mLastMessage) disconnect(mLastMessage.get(), &ChatMessageCore::messageStateChanged, this, nullptr); mLastMessage = lastMessage; connect(mLastMessage.get(), &ChatMessageCore::messageStateChanged, this, &ChatCore::lastMessageChanged); emit lastMessageChanged(); @@ -544,10 +544,6 @@ std::shared_ptr ChatCore::getModel() const { return mChatModel; } -QSharedPointer> ChatCore::getChatModelConnection() const { - return mChatModelConnection; -} - bool ChatCore::isMuted() const { return mIsMuted; } @@ -681,4 +677,4 @@ void ChatCore::updateInfo(const std::shared_ptr &updatedFriend } } } -} \ No newline at end of file +} diff --git a/Linphone/core/chat/ChatCore.hpp b/Linphone/core/chat/ChatCore.hpp index 9ec75805..c3fe9e9a 100644 --- a/Linphone/core/chat/ChatCore.hpp +++ b/Linphone/core/chat/ChatCore.hpp @@ -142,7 +142,6 @@ public: void setComposingAddress(QString composingAddress); std::shared_ptr getModel() const; - QSharedPointer> getChatModelConnection() const; void setParticipants(QList> participants); QList> buildParticipants(const std::shared_ptr &chatRoom) const; diff --git a/Linphone/core/chat/ChatList.cpp b/Linphone/core/chat/ChatList.cpp index 222a1e1f..ba0fbc84 100644 --- a/Linphone/core/chat/ChatList.cpp +++ b/Linphone/core/chat/ChatList.cpp @@ -55,11 +55,11 @@ ChatList::~ChatList() { void ChatList::connectItem(QSharedPointer chat) { connect(chat.get(), &ChatCore::deleted, this, [this, chat] { - disconnect(chat.get()); + disconnect(chat.get(), &ChatCore::unreadMessagesCountChanged, this, nullptr); + disconnect(chat.get(), &ChatCore::lastUpdatedTimeChanged, this, nullptr); + disconnect(chat.get(), &ChatCore::lastMessageChanged, this, nullptr); + disconnect(chat.get(), &ChatCore::deleted, this, nullptr); remove(chat); - // We cannot use countChanged here because it is called before mList - // really has removed the item, then emit specific signal - emit chatRemoved(chat ? new ChatGui(chat) : nullptr); }); auto dataChange = [this, chat] { int i = -1; @@ -94,7 +94,6 @@ void ChatList::setSelf(QSharedPointer me) { mModelConnection->invokeToModel([this]() { mustBeInLinphoneThread(getClassName()); beginResetModel(); - mList.clear(); // Avoid copy to lambdas QList> *chats = new QList>(); auto currentAccount = CoreModel::getInstance()->getCore()->getDefaultAccount(); @@ -118,6 +117,7 @@ void ChatList::setSelf(QSharedPointer me) { disconnect(chat.get(), &ChatCore::lastMessageChanged, this, nullptr); } } + mList.clear(); for (auto &chat : *chats) { connectItem(chat); } @@ -143,18 +143,7 @@ void ChatList::setSelf(QSharedPointer me) { return; } auto chatCore = ChatCore::create(room); - mModelConnection->invokeToCore([this, chatCore] { - auto chatList = getSharedList(); - auto it = std::find_if(chatList.begin(), chatList.end(), [chatCore](const QSharedPointer item) { - return item && chatCore && item->getModel() && chatCore->getModel() && - item->getModel()->getMonitor() == chatCore->getModel()->getMonitor(); - }); - if (it == chatList.end()) { - connectItem(chatCore); - add(chatCore); - emit chatAdded(); - } - }); + addChatInList(chatCore); }; mModelConnection->makeConnectToModel(&CoreModel::messageReceived, [this, addChatToList](const std::shared_ptr &core, diff --git a/Linphone/core/chat/ChatList.hpp b/Linphone/core/chat/ChatList.hpp index b6fad074..335e06a2 100644 --- a/Linphone/core/chat/ChatList.hpp +++ b/Linphone/core/chat/ChatList.hpp @@ -48,7 +48,6 @@ public: signals: void lUpdate(); void filterChanged(QString filter); - void chatRemoved(ChatGui *chat); void chatAdded(); void chatUpdated(); diff --git a/Linphone/core/chat/ChatProxy.cpp b/Linphone/core/chat/ChatProxy.cpp index c5a84714..b5077815 100644 --- a/Linphone/core/chat/ChatProxy.cpp +++ b/Linphone/core/chat/ChatProxy.cpp @@ -37,13 +37,14 @@ ChatProxy::~ChatProxy() { void ChatProxy::setSourceModel(QAbstractItemModel *model) { auto oldChatList = getListModel(); if (oldChatList) { - disconnect(oldChatList); + disconnect(this, &ChatProxy::filterTextChanged, oldChatList, nullptr); + disconnect(oldChatList, &ChatList::chatAdded, this, nullptr); + disconnect(oldChatList, &ChatList::dataChanged, this, nullptr); } auto newChatList = dynamic_cast(model); if (newChatList) { connect(this, &ChatProxy::filterTextChanged, newChatList, [this, newChatList] { emit newChatList->filterChanged(getFilterText()); }); - connect(newChatList, &ChatList::chatRemoved, this, &ChatProxy::chatRemoved); connect(newChatList, &ChatList::chatAdded, this, [this] { invalidate(); }); connect(newChatList, &ChatList::dataChanged, this, [this] { invalidate(); }); } diff --git a/Linphone/core/chat/ChatProxy.hpp b/Linphone/core/chat/ChatProxy.hpp index 02a980ed..c90548f3 100644 --- a/Linphone/core/chat/ChatProxy.hpp +++ b/Linphone/core/chat/ChatProxy.hpp @@ -42,9 +42,6 @@ public: Q_INVOKABLE int findChatIndex(ChatGui *chatGui); Q_INVOKABLE void addChatInList(ChatGui *chatGui); -signals: - void chatRemoved(ChatGui *chat); - protected: QSharedPointer mList; DECLARE_ABSTRACT_OBJECT diff --git a/Linphone/core/chat/message/EventLogList.cpp b/Linphone/core/chat/message/EventLogList.cpp index 4fca6b2b..8b233359 100644 --- a/Linphone/core/chat/message/EventLogList.cpp +++ b/Linphone/core/chat/message/EventLogList.cpp @@ -64,7 +64,6 @@ void EventLogList::disconnectItem(const QSharedPointer &item) { if (message) { disconnect(message.get(), &ChatMessageCore::isReadChanged, this, nullptr); disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr); - disconnect(message.get(), &ChatMessageCore::ephemeralDurationChanged, this, nullptr); } } @@ -277,6 +276,9 @@ void EventLogList::setSelf(QSharedPointer me) { } setIsUpdating(true); beginResetModel(); + for (auto &event : getSharedList()) { + disconnectItem(event); + } mList.clear(); if (!mChatCore) { endResetModel(); @@ -298,13 +300,6 @@ void EventLogList::setSelf(QSharedPointer me) { events->push_back(model); } mCoreModelConnection->invokeToCore([this, events] { - for (auto &event : getSharedList()) { - auto message = event->getChatMessageCore(); - if (message) { - disconnect(message.get(), &ChatMessageCore::ephemeralDurationChanged, this, nullptr); - disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr); - } - } for (auto &event : *events) { connectItem(event); mList.append(event); diff --git a/Linphone/core/chat/message/EventLogList.hpp b/Linphone/core/chat/message/EventLogList.hpp index 65118edd..67973818 100644 --- a/Linphone/core/chat/message/EventLogList.hpp +++ b/Linphone/core/chat/message/EventLogList.hpp @@ -79,7 +79,6 @@ signals: private: QString mFilter; QSharedPointer mChatCore; - QSharedPointer> mChatModelConnection; QSharedPointer> mCoreModelConnection; int mDisplayItemsStep = 0; int mItemsToLoadBeforeSearchResult = 3; diff --git a/Linphone/core/chat/message/EventLogProxy.cpp b/Linphone/core/chat/message/EventLogProxy.cpp index 2069ba1e..f42d5335 100644 --- a/Linphone/core/chat/message/EventLogProxy.cpp +++ b/Linphone/core/chat/message/EventLogProxy.cpp @@ -37,7 +37,11 @@ EventLogProxy::~EventLogProxy() { void EventLogProxy::setSourceModel(QAbstractItemModel *model) { auto oldEventLogList = getListModel(); if (oldEventLogList) { - disconnect(oldEventLogList); + disconnect(oldEventLogList, &EventLogList::listAboutToBeReset, this, nullptr); + disconnect(oldEventLogList, &EventLogList::chatGuiChanged, this, nullptr); + disconnect(oldEventLogList, &EventLogList::displayItemsStepChanged, this, nullptr); + disconnect(oldEventLogList, &EventLogList::eventInserted, this, nullptr); + disconnect(oldEventLogList, &EventLogList::messageWithFilterFound, this, nullptr); } auto newEventLogList = dynamic_cast(model); if (newEventLogList) { diff --git a/Linphone/core/chat/message/content/ChatMessageContentCore.cpp b/Linphone/core/chat/message/content/ChatMessageContentCore.cpp index 8fe773e2..bc48c291 100644 --- a/Linphone/core/chat/message/content/ChatMessageContentCore.cpp +++ b/Linphone/core/chat/message/content/ChatMessageContentCore.cpp @@ -96,7 +96,18 @@ void ChatMessageContentCore::setSelf(QSharedPointer me) }); mChatMessageContentModelConnection->makeConnectToCore(&ChatMessageContentCore::lDownloadFile, [this]() { - mChatMessageContentModelConnection->invokeToModel([this] { mChatMessageContentModel->downloadFile(mName); }); + mChatMessageContentModelConnection->invokeToModel([this] { + QString error; + bool downloaded = mChatMessageContentModel->downloadFile(mName, &error); + if (!downloaded) { + mChatMessageContentModelConnection->invokeToCore([this, &error] { + QString message = error; + //: Error downloading file %1 + if (error.isEmpty()) error = tr("download_file_default_error").arg(mName); + Utils::showInformationPopup(tr("info_popup_error_titile"), message, false); + }); + } + }); }); mChatMessageContentModelConnection->makeConnectToModel( &ChatMessageContentModel::wasDownloadedChanged, diff --git a/Linphone/core/chat/message/content/ChatMessageContentList.cpp b/Linphone/core/chat/message/content/ChatMessageContentList.cpp index 652ab84a..c776f071 100644 --- a/Linphone/core/chat/message/content/ChatMessageContentList.cpp +++ b/Linphone/core/chat/message/content/ChatMessageContentList.cpp @@ -197,7 +197,8 @@ void ChatMessageContentList::setSelf(QSharedPointer me) mModelConnection->makeConnectToCore(&ChatMessageContentList::lUpdate, [this]() { for (auto &content : getSharedList()) { - if (content) disconnect(content.get()); + if (content) disconnect(content.get(), &ChatMessageContentCore::wasDownloadedChanged, this, nullptr); + if (content) disconnect(content.get(), &ChatMessageContentCore::thumbnailChanged, this, nullptr); } if (!mChatMessageCore) return; auto contents = mChatMessageCore->getChatMessageContentList(); diff --git a/Linphone/core/participant/ParticipantProxy.cpp b/Linphone/core/participant/ParticipantProxy.cpp index e4f83cda..7d3e5ba6 100644 --- a/Linphone/core/participant/ParticipantProxy.cpp +++ b/Linphone/core/participant/ParticipantProxy.cpp @@ -109,7 +109,7 @@ void ParticipantProxy::setShowMe(const bool &show) { if (list->mShowMe != show) { list->mShowMe = show; emit showMeChanged(); - invalidateFilter(); + invalidate(); } } diff --git a/Linphone/core/proxy/LimitProxy.cpp b/Linphone/core/proxy/LimitProxy.cpp index 9ec8f0b2..9563a5b9 100644 --- a/Linphone/core/proxy/LimitProxy.cpp +++ b/Linphone/core/proxy/LimitProxy.cpp @@ -43,7 +43,7 @@ void LimitProxy::setSourceModels(SortFilterProxy *firstList) { if (secondList) { connect(secondList, &QAbstractItemModel::rowsInserted, this, &LimitProxy::onAdded); connect(secondList, &QAbstractItemModel::rowsRemoved, this, &LimitProxy::onRemoved); - connect(secondList, &QAbstractItemModel::modelReset, this, &LimitProxy::invalidateRowsFilter); + connect(secondList, &QAbstractItemModel::modelReset, this, &LimitProxy::invalidate); } connect(firstList, &SortFilterProxy::filterTextChanged, this, &LimitProxy::filterTextChanged); connect(firstList, &SortFilterProxy::filterTypeChanged, this, &LimitProxy::filterTypeChanged); @@ -60,8 +60,8 @@ void LimitProxy::setSourceModels(SortFilterProxy *firstList) { /* void LimitProxy::setSourceModels(SortFilterProxy *firstList, QAbstractItemModel *secondList) { - connect(secondList, &QAbstractItemModel::rowsInserted, this, &LimitProxy::invalidateFilter); - connect(secondList, &QAbstractItemModel::rowsRemoved, this, &LimitProxy::invalidateFilter); + connect(secondList, &QAbstractItemModel::rowsInserted, this, &LimitProxy::invalidate); + connect(secondList, &QAbstractItemModel::rowsRemoved, this, &LimitProxy::invalidate); connect(firstList, &SortFilterProxy::filterTextChanged, this, &LimitProxy::filterTextChanged); setSourceModel(firstList); }*/ @@ -119,7 +119,7 @@ void LimitProxy::setMaxDisplayItems(int maxItems) { emit maxDisplayItemsChanged(); if (model && getDisplayCount(modelCount) != oldCount) { - invalidateFilter(); + invalidate(); } } } @@ -178,6 +178,6 @@ void LimitProxy::onAdded() { void LimitProxy::onRemoved() { int count = sourceModel()->rowCount(); if (mMaxDisplayItems > 0 && mMaxDisplayItems <= count) { - invalidateFilter(); + invalidate(); } } diff --git a/Linphone/core/proxy/SortFilterProxy.cpp b/Linphone/core/proxy/SortFilterProxy.cpp index cfeff829..35047a6a 100644 --- a/Linphone/core/proxy/SortFilterProxy.cpp +++ b/Linphone/core/proxy/SortFilterProxy.cpp @@ -90,5 +90,6 @@ void SortFilterProxy::remove(int index, int count) { } void SortFilterProxy::invalidateFilter() { - QSortFilterProxyModel::invalidateFilter(); + // TODO : replace by begin/endFilterChanged when ci uses Qt6.10 + invalidate(); } diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index be3f41b3..60bfe166 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2199,13 +2199,24 @@ ChatMessageContentCore - + + download_file_default_error + Error downloading file %1 + + + + + info_popup_error_titile + + + + popup_error_title Error Fehler - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 @@ -2265,17 +2276,40 @@ Error ChatMessageContentModel - popup_error_title Error - Fehler + Fehler - - popup_download_error_message + + download_error_object_doesnt_exist + Internal error : message object does not exist anymore ! + + + + + download_file_error_wrong_state + Wrong message state when requesting downloading, state = %1 + + + + + download_file_error_no_safe_file_path + Unable to create safe file path for: %1 + + + + + download_file_error_file_transfer_unavailable This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + download_file_error_unable_to_download + Unable to download file of entry %1 + + ChatMessageCore @@ -4495,7 +4529,7 @@ Error Heute keine Besprechungen - + meeting_info_delete "Supprimer la réunion" Besprechung löschen @@ -5173,90 +5207,96 @@ Error + message_state_idle + "idle" + + + + message_state_in_progress "delivery in progress" - + message_state_delivered sent - + message_state_not_delivered error - + message_state_file_transfer_error cannot get file from server - + message_state_file_transfer_done file transfer has been completed successfully - + message_state_delivered_to_user received - + message_state_displayed read - + message_state_file_transfer__in_progress file transfer in progress - + message_state_pending_delivery pending delivery - + message_state_file_transfer_cancelling file transfer canceled - + incoming "Entrant" Eingehend - + outgoing "Sortant" Ausgehend - + conference_layout_active_speaker "Participant actif" Aktiver Sprecher - + conference_layout_grid "Mosaïque" Raster - + conference_layout_audio_only "Audio uniquement" Nur Audio @@ -5708,37 +5748,37 @@ Pour les activer dans un projet commercial, merci de nous contacter. Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! - + reply_to_label Reply to %1 - + shared_medias_title Shared medias - + shared_documents_title Shared documents - + forward_to_title Forward to… - + conversations_title Conversations Konversationen @@ -5916,7 +5956,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. Utils - + nMinute @@ -5924,7 +5964,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nHour @@ -5932,8 +5972,8 @@ Pour les activer dans un projet commercial, merci de nous contacter. - - + + nDay @@ -5941,7 +5981,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nWeek @@ -5949,7 +5989,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nSeconds @@ -5965,8 +6005,8 @@ Pour les activer dans un projet commercial, merci de nous contacter. - - + + information_popup_error_title Error ---------- @@ -5979,7 +6019,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_years %n an(s) @@ -5988,7 +6028,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_month "%n mois" @@ -5997,7 +6037,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_weeks %n semaine(s) @@ -6006,7 +6046,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_days %n jour(s) @@ -6015,25 +6055,25 @@ Failed to create 1-1 conversation with %1 ! - + today "Aujourd'hui" Heute - + yesterday "Hier Gestern - + duration_tomorrow Tomorrow - + duration_number_of_days %1 jour(s) @@ -6042,111 +6082,111 @@ Failed to create 1-1 conversation with %1 ! - + call_zrtp_token_verification_possible_characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - - + + information_popup_chatroom_creation_error_message Failed to create 1-1 conversation with %1 ! - + contact_presence_status_available Verfügbar - + contact_presence_status_away Abwesend - + contact_presence_status_busy Beschäftigt - + contact_presence_status_do_not_disturb Nicht stören - + contact_presence_status_offline Offline - + recorder_error Error with the recorder - - - + + + chat_error - + chat_message_forward_error Cannot forward an invalid message - - - - - - + + + + + + info_popup_error_title Error Fehler - + info_popup_forward_message_error Could not forward message : %1 - + info_popup_send_forward_message_error_message Failed to create forward message - + chat_message_reply_error Cannot reply to invalid message - + info_popup_reply_message_error Could not send reply message : %1 - + info_popup_send_reply_message_error_message Failed to create reply message - + info_popup_send_voice_message_error_message Could not send voice message : %1 - + info_popup_send_voice_message_sending_error_message Failed to create message from record @@ -6315,1117 +6355,1117 @@ Failed to create 1-1 conversation with %1 ! country - + Afghanistan Afghanistan - + Albania Albanien - + Algeria Algerien - + AmericanSamoa Amerikanisch-Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + AntiguaAndBarbuda Antigua und Barbuda - + Argentina Argentinien - + Armenia Armenien - + Aruba Aruba - + Australia Australien - + Austria Österreich - + Azerbaijan Aserbaidschan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesch - + Barbados Barbados - + Belarus Belarus - + Belgium Belgien - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivien - + BosniaAndHerzegowina Bosnien und Herzegowina - + Botswana Botswana - + Brazil Brasilien - + Brunei Brunei - + Bulgaria Bulgarien - + BurkinaFaso Burkina Faso - + Burundi Burundi - + Cambodia Kambodscha - + Cameroon Kamerun - + Canada Kanada - + CapeVerde Kap Verde - + CaymanIslands Caymaninseln - + CentralAfricanRepublic Zentralafrikanische Republik - + Chad Tschad - + Chile Chile - + China China - + Colombia Kolumbien - + Comoros Komoren - + PeoplesRepublicOfCongo Volksrepublik Kongo - + CookIslands Cookinseln - + CostaRica Kosta Rica - + IvoryCoast Elfenbeinküste - + Croatia Kroatien - + Cuba Kuba - + Cyprus Zypern - + CzechRepublic Tschechische Republik - + Denmark Dänemark - + Djibouti Dschibuti - + Dominica Dominica - + DominicanRepublic Dominikanische Republik - + Ecuador Ecuador - + Egypt Ägypten - + ElSalvador El Salvador - + EquatorialGuinea Äquatorialguinea - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Äthiopien - + FalklandIslands Falklandinseln - + FaroeIslands Färöer-Inseln - + Fiji Fidschi - + Finland Finnland - + France Frankreich - + FrenchGuiana Französisch-Guayana - + FrenchPolynesia Französisch-Polynesien - + Gabon Gabon - + Gambia Gambia - + Georgia Georgien - + Germany Deutschland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griechenland - + Greenland Grönland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guinea Guinea - + GuineaBissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Honduras Honduras - + DemocraticRepublicOfCongo Demokratische Republik Kongo - + HongKong Hongkong - + Hungary Ungarn - + Iceland Island - + India Indien - + Indonesia Indonesien - + Iran Iran - + Iraq Irak - + Ireland Irland - + Israel Israel - + Italy Italien - + Jamaica Jamaika - + Japan Japan - + Jordan Jordanien - + Kazakhstan Kasachstan - + Kenya Kenia - + Kiribati Kiribati - + DemocraticRepublicOfKorea Demokratische Volksrepublik Korea - + RepublicOfKorea Republik Korea - + Kuwait Kuwait - + Kyrgyzstan Kirgisistan - + Laos Laos - + Latvia Lettland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberien - + Libya Libyen - + Liechtenstein Liechtenstein - + Lithuania Litauen - + Luxembourg Luxemburg - + Macau Macau - + Macedonia Mazedonien - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Malaysien - + Maldives Malediven - + Mali Mali - + Malta Malta - + MarshallIslands Marshallinseln - + Martinique Martinique - + Mauritania Mauretanien - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexiko - + Micronesia Föderierte Staaten von Mikronesien - + Moldova Moldawien - + Monaco Monaco - + Mongolia Mongolei - + Montenegro Montenegro - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambik - + Myanmar Myanmar - + Namibia Namibia - + NauruCountry Nauru - + Nepal Nepal - + Netherlands Niederlande - + NewCaledonia Neukaledonien - + NewZealand Neuseeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + NorfolkIsland Norfolkinsel - + NorthernMarianaIslands Nördliche Marianeninseln - + Norway Norwegen - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + PalestinianTerritories Palästinensische Gebiete - + Panama Panama - + PapuaNewGuinea Papua-Neuguinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippinen - + Poland Polen - + Portugal Portugal - + PuertoRico Puerto Rico - + Qatar Katar - + Reunion Réunion - + Romania Rumänien - + RussianFederation Russische Föderation - + Rwanda Ruanda - + SaintHelena Sankt Helena - + SaintKittsAndNevis Sankt Kitts und Nevis - + SaintLucia Sankt Lucia - + SaintPierreAndMiquelon Sankt Pierre und Miquelon - + SaintVincentAndTheGrenadines Sankt Vincent und die Grenadinen - + Samoa Samoa - + SanMarino San Marino - + SaoTomeAndPrincipe São Tomé und Príncipe - + SaudiArabia Saudi-Arabien - + Senegal Senegal - + Serbia Serbien - + Seychelles Seychellen - + SierraLeone Sierra Leone - + Singapore Singapur - + Slovakia Slowakei - + Slovenia Slowenien - + SolomonIslands Salomonen - + Somalia Somalia - + SouthAfrica Südafrika - + Spain Spanien - + SriLanka Sri Lanka - + Sudan Sudan - + Suriname Suriname - + Swaziland Eswatini - + Sweden Schweden - + Switzerland Schweiz - + Syria Syrien - + Taiwan Taiwan - + Tajikistan Tadschikistan - + Tanzania Tansania - + Thailand Thailand - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + TrinidadAndTobago Trinidad und Tobago - + Tunisia Tunesien - + Turkey Türkei - + Turkmenistan Turkmenistan - + TurksAndCaicosIslands Turks- und Caicosinseln - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ukraine - + UnitedArabEmirates Vereinigte Arabische Emirate - + UnitedKingdom Vereinigtes Königreich - + UnitedStates Vereinigte Staaten - + Uruguay Uruguay - + Uzbekistan Usbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Vietnam Vietnam - + WallisAndFutunaIslands Wallis und Futuna Inseln - + Yemen Jemen - + Zambia Sambia - + Zimbabwe Simbabwe diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index fda47b38..53fcad50 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2176,13 +2176,24 @@ ChatMessageContentCore - + + download_file_default_error + Error downloading file %1 + Error downloading file %1 + + + + info_popup_error_titile + Error + + + popup_error_title Error Error - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 Could not open file : unknown path %1 @@ -2242,17 +2253,35 @@ Error ChatMessageContentModel - - popup_error_title - Error - Error + + download_error_object_doesnt_exist + Internal error : message object does not exist anymore ! + Internal error : message object does not exist anymore ! - - popup_download_error_message + + download_file_error_wrong_state + Wrong message state when requesting downloading, state = %1 + Wrong message state when requesting downloading, state = %1 + + + + download_file_error_no_safe_file_path + Unable to create safe file path for: %1 + Unable to create safe file path for: %1 + + + + download_file_error_file_transfer_unavailable This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + download_file_error_unable_to_download + Unable to download file of entry %1 + Unable to download file of entry %1 + ChatMessageCore @@ -4416,7 +4445,7 @@ Expiration : %1 No meeting for today - + meeting_info_delete "Supprimer la réunion" Delete meeting @@ -5073,90 +5102,96 @@ Expiration : %1 + message_state_idle + "idle" + idle + + + message_state_in_progress "delivery in progress" delivery in progress - + message_state_delivered sent sent - + message_state_not_delivered error error - + message_state_file_transfer_error cannot get file from server cannot get file from server - + message_state_file_transfer_done file transfer has been completed successfully file transfer has been completed successfully - + message_state_delivered_to_user received received - + message_state_displayed read read - + message_state_file_transfer__in_progress file transfer in progress file transfer in progress - + message_state_pending_delivery pending delivery pending delivery - + message_state_file_transfer_cancelling file transfer canceled file transfer canceled - + incoming "Entrant" Incoming - + outgoing "Sortant" Outgoing - + conference_layout_active_speaker "Participant actif" Active speaker - + conference_layout_grid "Mosaïque" Grid - + conference_layout_audio_only "Audio uniquement" Audio only @@ -5608,37 +5643,37 @@ To enable them in a commercial project, please contact us. Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! This conversation is not encrypted ! - + reply_to_label Reply to %1 Reply to %1 - + shared_medias_title Shared medias Shared medias - + shared_documents_title Shared documents Shared documents - + forward_to_title Forward to… Froward to… - + conversations_title Conversations Conversations @@ -5811,7 +5846,7 @@ To enable them in a commercial project, please contact us. Utils - + nSeconds %1 second @@ -5819,7 +5854,7 @@ To enable them in a commercial project, please contact us. - + nMinute %1 minute @@ -5827,43 +5862,43 @@ To enable them in a commercial project, please contact us. - + chat_message_forward_error Cannot forward an invalid message Cannot forward an invalid message - + info_popup_forward_message_error Could not forward message : %1 Could not forward message : %1 - + info_popup_send_forward_message_error_message Failed to create forward message Failed to create forward message - + chat_message_reply_error Cannot reply to invalid message Cannot reply to invalid message - + info_popup_reply_message_error Could not send reply message : %1 Could not send reply message : %1 - + info_popup_send_reply_message_error_message Failed to create reply message Failed to create reply message - + nHour %1 hour @@ -5871,8 +5906,8 @@ To enable them in a commercial project, please contact us. - - + + nDay %1 day @@ -5880,7 +5915,7 @@ To enable them in a commercial project, please contact us. - + nWeek %1 week @@ -5888,27 +5923,27 @@ To enable them in a commercial project, please contact us. - + contact_presence_status_available Available - + contact_presence_status_busy Busy - + contact_presence_status_do_not_disturb Do not disturb - + contact_presence_status_offline Offline - + contact_presence_status_away Idle/Away @@ -5921,8 +5956,8 @@ To enable them in a commercial project, please contact us. - - + + information_popup_error_title Error ---------- @@ -5935,7 +5970,7 @@ Failed to create 1-1 conversation with %1 ! Group call couldn't be created - + number_of_years %n an(s) @@ -5944,7 +5979,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_month "%n mois" @@ -5953,7 +5988,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_weeks %n semaine(s) @@ -5962,7 +5997,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_days %n jour(s) @@ -5971,25 +6006,25 @@ Failed to create 1-1 conversation with %1 ! - + today "Aujourd'hui" Today - + yesterday "Hier Yesterday - + duration_tomorrow Tomorrow Tomorrow - + duration_number_of_days %1 jour(s) @@ -5998,50 +6033,50 @@ Failed to create 1-1 conversation with %1 ! - + call_zrtp_token_verification_possible_characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - - + + information_popup_chatroom_creation_error_message Failed to create 1-1 conversation with %1 ! Failed to create 1-1 conversation with %1 ! - + recorder_error Error with the recorder Error with the recorder - - - + + + chat_error Error in the chat - - - - - - + + + + + + info_popup_error_title Error Error - + info_popup_send_voice_message_error_message Could not send voice message : %1 Could not send voice message : %1 - + info_popup_send_voice_message_sending_error_message Failed to create message from record Failed to create message from record @@ -6210,1117 +6245,1117 @@ Failed to create 1-1 conversation with %1 ! country - + Afghanistan Afghanistan - + Albania Albania - + Algeria Algeria - + AmericanSamoa American Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + AntiguaAndBarbuda Antigua-et-Barbuda - + Argentina Argentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbaijan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Belarus - + Belgium Belgium - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivia - + BosniaAndHerzegowina Bosnia And Herzegowina - + Botswana Botswana - + Brazil Brazil - + Brunei Brunei - + Bulgaria Bulgaria - + BurkinaFaso Burkina Faso - + Burundi Burundi - + Cambodia Cambodia - + Cameroon Cameroon - + Canada Canada - + CapeVerde Cape Verde - + CaymanIslands Cayman Islands - + CentralAfricanRepublic Central African Republic - + Chad Chad - + Chile Chile - + China China - + Colombia Colombia - + Comoros Comoros - + PeoplesRepublicOfCongo Peoples Republic Of Congo - + CookIslands Cook Islands - + CostaRica Costa Rica - + IvoryCoast Ivory Coast - + Croatia Croatia - + Cuba Cuba - + Cyprus Cyprus - + CzechRepublic Czech Republic - + Denmark Denmark - + Djibouti Djibouti - + Dominica Dominica - + DominicanRepublic Dominican Republic - + Ecuador Ecuador - + Egypt Egypt - + ElSalvador El Salvador - + EquatorialGuinea Equatorial Guinea - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Ethiopia - + FalklandIslands Falkland Islands - + FaroeIslands Faroe Islands - + Fiji Fiji - + Finland Finland - + France France - + FrenchGuiana French Guiana - + FrenchPolynesia French Polynesia - + Gabon Gabon - + Gambia Gambia - + Georgia Georgia - + Germany Germany - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Greece - + Greenland Greenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guinea Guinea - + GuineaBissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Honduras Honduras - + DemocraticRepublicOfCongo Democratic Republic Of Congo - + HongKong Hong Kong - + Hungary Hungary - + Iceland Iceland - + India India - + Indonesia Indonesia - + Iran Iran - + Iraq Iraq - + Ireland Ireland - + Israel Israel - + Italy Italie - + Jamaica Jamaica - + Japan Japan - + Jordan Jordan - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + DemocraticRepublicOfKorea Democratic Republic Of Korea - + RepublicOfKorea Republic Of Korea - + Kuwait Kuwait - + Kyrgyzstan Kyrgyzstan - + Laos Laos - + Latvia Latvia - + Lebanon Lebanon - + Lesotho Lesotho - + Liberia Liberia - + Libya Libya - + Liechtenstein Liechtenstein - + Lithuania Lithuania - + Luxembourg Luxembourg - + Macau Macau - + Macedonia Macedonia - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaysia - + Maldives Maldives - + Mali Mali - + Malta Malta - + MarshallIslands Marshall Islands - + Martinique Martinique - + Mauritania Mauritania - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexico - + Micronesia Micronesia - + Moldova Moldova - + Monaco Monaco - + Mongolia Mongolia - + Montenegro Montenegro - + Montserrat Montserrat - + Morocco Morocco - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibia - + NauruCountry Nauru Country - + Nepal Nepal - + Netherlands Netherlands - + NewCaledonia New-Caledonia - + NewZealand New-Zealand - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + NorfolkIsland Norfolk Island - + NorthernMarianaIslands Northern Mariana Islands - + Norway Norway - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + PalestinianTerritories Palestinian Territories - + Panama Panama - + PapuaNewGuinea Papua-New-Guinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippines - + Poland Poland - + Portugal Portugal - + PuertoRico Puerto Rico - + Qatar Qatar - + Reunion Reunion - + Romania Romania - + RussianFederation Russian Federation - + Rwanda Rwanda - + SaintHelena Saint-Helena - + SaintKittsAndNevis Saint-Kitts-And-Nevis - + SaintLucia Saint-Lucia - + SaintPierreAndMiquelon Saint-Pierre-And-Miquelon - + SaintVincentAndTheGrenadines Saint-Vincent And The Grenadines - + Samoa Samoa - + SanMarino San-Marino - + SaoTomeAndPrincipe Sao Tome-And-Principe - + SaudiArabia Saudi Arabia - + Senegal Senegal - + Serbia Serbia - + Seychelles Seychelles - + SierraLeone Sierra Leone - + Singapore Singapore - + Slovakia Slovakia - + Slovenia Slovenia - + SolomonIslands Solomon Islands - + Somalia Somalia - + SouthAfrica South Africa - + Spain Spain - + SriLanka Sri Lanka - + Sudan Sudan - + Suriname Suriname - + Swaziland Swaziland - + Sweden Sweden - + Switzerland Switzerland - + Syria Syria - + Taiwan Taiwan - + Tajikistan Tajikistan - + Tanzania Tanzania - + Thailand Thailand - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + TrinidadAndTobago Trinidad-And-Tobago - + Tunisia Tunisia - + Turkey Turkey - + Turkmenistan Turkmenistan - + TurksAndCaicosIslands Turks And Caicos Islands - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ukraine - + UnitedArabEmirates United Arab Emirates - + UnitedKingdom United-Kingdom - + UnitedStates United-States - + Uruguay Uruguay - + Uzbekistan Uzbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Vietnam Vietnam - + WallisAndFutunaIslands Wallis And Futuna Islands - + Yemen Yemen - + Zambia Zambia - + Zimbabwe Zimbabwe diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index c804a246..bf5310bf 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2176,13 +2176,24 @@ ChatMessageContentCore - + + download_file_default_error + Error downloading file %1 + Erreur de téléchargement du fichier %1 + + + + info_popup_error_titile + Erreur + + + popup_error_title Error Erreur - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 Impossible d'ouvrir le fichier : chemin inconnu (%1) @@ -2242,16 +2253,34 @@ Error ChatMessageContentModel - - popup_error_title - Error - Erreur + + download_error_object_doesnt_exist + Internal error : message object does not exist anymore ! + Erreur interne : l'objet ChatMessage n'existe plus ! - - popup_download_error_message + + download_file_error_wrong_state + Wrong message state when requesting downloading, state = %1 + Erreur dans l'état du message lors de la requête de téléchargement (state = %1) + + + + download_file_error_no_safe_file_path + Unable to create safe file path for: %1 + Impossible de créer le chemin : %1 + + + + download_file_error_file_transfer_unavailable This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - Ce fichier a déjà été téléchargé et n'est plus sur le serveur. Votre correspondant devra vous le renvoyer si vous voulez y avoir accès. + Le fichier a déjà été téléchargé et n'est plus disponible sur le serveur. Votre correspondant devra vous le renvoyez si vous souhaitez l'obtenir + + + + download_file_error_unable_to_download + Unable to download file of entry %1 + Impossible de télécharger le fichier : %1 @@ -4416,7 +4445,7 @@ Expiration : %1 Aucune réunion aujourd'hui - + meeting_info_delete "Supprimer la réunion" Supprimer la réunion @@ -5073,90 +5102,96 @@ Expiration : %1 + message_state_idle + "idle" + inactif + + + message_state_in_progress "delivery in progress" envoi en cours - + message_state_delivered sent envoyé - + message_state_not_delivered error en erreur - + message_state_file_transfer_error cannot get file from server impossible de récupérer le fichier depuis le serveur - + message_state_file_transfer_done file transfer has been completed successfully fichier transféré avec succès - + message_state_delivered_to_user received reçu - + message_state_displayed read lu - + message_state_file_transfer__in_progress file transfer in progress transfert du fichier en cours - + message_state_pending_delivery pending delivery envoi en attente - + message_state_file_transfer_cancelling file transfer canceled transfert du fichier annulé - + incoming "Entrant" Entrant - + outgoing "Sortant" Sortant - + conference_layout_active_speaker "Participant actif" Intervenant actif - + conference_layout_grid "Mosaïque" Mosaïque - + conference_layout_audio_only "Audio uniquement" Audio uniquement @@ -5608,37 +5643,37 @@ Pour les activer dans un projet commercial, merci de nous contacter.Démarrer un appel de groupe ? - + unencrypted_conversation_warning This conversation is not encrypted ! Cette conversation n'est pas chiffrée ! - + reply_to_label Reply to %1 Réponse à %1 - + shared_medias_title Shared medias Médias partagés - + shared_documents_title Shared documents Documents partagés - + forward_to_title Forward to… Transférer à… - + conversations_title Conversations Conversations @@ -5811,7 +5846,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. Utils - + nMinute %1 minute @@ -5819,7 +5854,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nHour %1 heure @@ -5827,8 +5862,8 @@ Pour les activer dans un projet commercial, merci de nous contacter. - - + + nDay %1 jour @@ -5836,7 +5871,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nWeek %1 semaine @@ -5844,7 +5879,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nSeconds %1 seconde @@ -5852,27 +5887,27 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + contact_presence_status_available Disponible - + contact_presence_status_busy Occupé - + contact_presence_status_do_not_disturb Ne pas déranger - + contact_presence_status_offline Hors ligne - + contact_presence_status_away Inactif/Absent @@ -5885,8 +5920,8 @@ Pour les activer dans un projet commercial, merci de nous contacter. - - + + information_popup_error_title Error ---------- @@ -5899,7 +5934,7 @@ Failed to create 1-1 conversation with %1 ! L'appel de groupe n'a pas pu être créé - + number_of_years %n an(s) @@ -5908,7 +5943,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_month "%n mois" @@ -5917,7 +5952,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_weeks %n semaine(s) @@ -5926,7 +5961,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_days %n jour(s) @@ -5935,25 +5970,25 @@ Failed to create 1-1 conversation with %1 ! - + today "Aujourd'hui" Aujourd'hui - + yesterday "Hier Hier - + duration_tomorrow Tomorrow Demain - + duration_number_of_days %1 jour(s) @@ -5962,86 +5997,86 @@ Failed to create 1-1 conversation with %1 ! - + call_zrtp_token_verification_possible_characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - - + + information_popup_chatroom_creation_error_message Failed to create 1-1 conversation with %1 ! Erreur lors de la création de la conversation avec %1 - + recorder_error Error with the recorder Erreur avec l'enregistreur - - - + + + chat_error Erreur dans le chat - + chat_message_forward_error Cannot forward an invalid message Impossible de transférer : message invalide - - - - - - + + + + + + info_popup_error_title Error Erreur - + info_popup_forward_message_error Could not forward message : %1 Impossible de transférer le message : %1 - + info_popup_send_forward_message_error_message Failed to create forward message Impossible de créer le message - + chat_message_reply_error Cannot reply to invalid message Impossible de répondre : message invalide - + info_popup_reply_message_error Could not send reply message : %1 Impossible d'envoyer la réponse : %1 - + info_popup_send_reply_message_error_message Failed to create reply message Impossible de créer le message - + info_popup_send_voice_message_error_message Could not send voice message : %1 Impossible d'envoyer le message vocal : %1 - + info_popup_send_voice_message_sending_error_message Failed to create message from record Impossible de créer le message vocal @@ -6210,1117 +6245,1117 @@ Failed to create 1-1 conversation with %1 ! country - + Afghanistan Afghanistan - + Albania Albanie - + Algeria Algérie - + AmericanSamoa Samoa américaines - + Andorra Andorre - + Angola Angola - + Anguilla Anguilla - + AntiguaAndBarbuda Antigua-et-Barbuda - + Argentina Argentine - + Armenia Arménie - + Aruba Aruba - + Australia Australie - + Austria Autriche - + Azerbaijan Azerbaïdjan - + Bahamas Bahamas - + Bahrain Bahreïn - + Bangladesh Bangladesh - + Barbados Barbade - + Belarus Biélorussie - + Belgium Belgique - + Belize Belize - + Benin Bénin - + Bermuda Bermudes - + Bhutan Bhoutan - + Bolivia Bolivie - + BosniaAndHerzegowina Bosnie-Herzégovine - + Botswana Botswana - + Brazil Brésil - + Brunei Brunéi - + Bulgaria Bulgarie - + BurkinaFaso Burkina Faso - + Burundi Burundi - + Cambodia Cambodge - + Cameroon Cameroun - + Canada Canada - + CapeVerde Cap-Vert - + CaymanIslands Îles Caïmans - + CentralAfricanRepublic République centrafricaine - + Chad Tchad - + Chile Chili - + China Chine - + Colombia Colombie - + Comoros Comores - + PeoplesRepublicOfCongo République populaire du Congo - + CookIslands Îles Cook - + CostaRica Costa Rica - + IvoryCoast Côte d'Ivoire - + Croatia Croatie - + Cuba Cuba - + Cyprus Chypre - + CzechRepublic République Tchèque - + Denmark Danemark - + Djibouti Djibouti - + Dominica Dominique - + DominicanRepublic République dominicaine - + Ecuador Équateur - + Egypt Égypte - + ElSalvador El Salvador - + EquatorialGuinea Guinée équatoriale - + Eritrea Érythrée - + Estonia Estonie - + Ethiopia Éthiopie - + FalklandIslands Îles Falkland - + FaroeIslands Îles Féroé - + Fiji Fidji - + Finland Finlande - + France France - + FrenchGuiana Guyane française - + FrenchPolynesia Polynésie française - + Gabon Gabon - + Gambia Gambie - + Georgia Géorgie - + Germany Allemagne - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grèce - + Greenland Groenland - + Grenada Grenade - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guinea Guinée - + GuineaBissau Guinée-Bissau - + Guyana Guyana - + Haiti Haïti - + Honduras Honduras - + DemocraticRepublicOfCongo République démocratique du Congo - + HongKong Hong Kong - + Hungary Hongrie - + Iceland Islande - + India Inde - + Indonesia Indonésie - + Iran Iran - + Iraq Irak - + Ireland Irlande - + Israel Israël - + Italy Italie - + Jamaica Jamaïque - + Japan Japon - + Jordan Jordanie - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + DemocraticRepublicOfKorea Corée du Nord - + RepublicOfKorea Corée du Sud - + Kuwait Koweït - + Kyrgyzstan Kirghizistan - + Laos Laos - + Latvia Lettonie - + Lebanon Liban - + Lesotho Lesotho - + Liberia Libéria - + Libya Libye - + Liechtenstein Liechtenstein - + Lithuania Lituanie - + Luxembourg Luxembourg - + Macau Macao - + Macedonia Macédoine - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaisie - + Maldives Maldives - + Mali Mali - + Malta Malte - + MarshallIslands Îles Marshall - + Martinique Martinique - + Mauritania Mauritanie - + Mauritius Maurice - + Mayotte Mayotte - + Mexico Mexique - + Micronesia Micronésie - + Moldova Moldavie - + Monaco Monaco - + Mongolia Mongolie - + Montenegro Montenegro - + Montserrat Montserrat - + Morocco Maroc - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibie - + NauruCountry Nauru - + Nepal Népal - + Netherlands Pays-Bas - + NewCaledonia Nouvelle-Calédonie - + NewZealand Nouvelle-Zélande - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niué - + NorfolkIsland Île Norfolk - + NorthernMarianaIslands Îles Mariannes du Nord - + Norway Norvège - + Oman Oman - + Pakistan Pakistan - + Palau Palaos - + PalestinianTerritories Palestine - + Panama Panama - + PapuaNewGuinea Papouasie-Nouvelle-Guinée - + Paraguay Paraguay - + Peru Pérou - + Philippines Philippines - + Poland Pologne - + Portugal Portugal - + PuertoRico Porto Rico - + Qatar Qatar - + Reunion La Réunion - + Romania Roumanie - + RussianFederation Russie - + Rwanda Rwanda - + SaintHelena Sainte-Hélène - + SaintKittsAndNevis Saint-Christophe-et-Niévès - + SaintLucia Sainte-Lucie - + SaintPierreAndMiquelon Saint-Pierre-et-Miquelon - + SaintVincentAndTheGrenadines Saint-Vincent et les Grenadines - + Samoa Samoa - + SanMarino Saint-Marin - + SaoTomeAndPrincipe Sao Tomé-et-Principe - + SaudiArabia Arabie saoudite - + Senegal Sénégal - + Serbia Serbie - + Seychelles Seychelles - + SierraLeone Sierra Leone - + Singapore Singapour - + Slovakia Slovaquie - + Slovenia Slovénie - + SolomonIslands Îles Salomon - + Somalia Somalie - + SouthAfrica Afrique du Sud - + Spain Espagne - + SriLanka Sri Lanka - + Sudan Soudan - + Suriname Suriname - + Swaziland Eswatini - + Sweden Suède - + Switzerland Suisse - + Syria Syrie - + Taiwan Taïwan - + Tajikistan Tadjikistan - + Tanzania Tanzanie - + Thailand Thaïlande - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + TrinidadAndTobago Trinité-et-Tobago - + Tunisia Tunisie - + Turkey Turquie - + Turkmenistan Turkménistan - + TurksAndCaicosIslands Îles Turks et Caïques - + Tuvalu Tuvalu - + Uganda Ouganda - + Ukraine Ukraine - + UnitedArabEmirates Émirats arabes unis - + UnitedKingdom Royaume-Uni - + UnitedStates États-Unis - + Uruguay Uruguay - + Uzbekistan Ouzbékistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Vietnam Vietnam - + WallisAndFutunaIslands Wallis et Futuna - + Yemen Yémen - + Zambia Zambie - + Zimbabwe Zimbabwe diff --git a/Linphone/model/chat/message/content/ChatMessageContentModel.cpp b/Linphone/model/chat/message/content/ChatMessageContentModel.cpp index be340464..48bd283e 100644 --- a/Linphone/model/chat/message/content/ChatMessageContentModel.cpp +++ b/Linphone/model/chat/message/content/ChatMessageContentModel.cpp @@ -74,8 +74,12 @@ void ChatMessageContentModel::removeDownloadedFile(QString filePath) { } } -void ChatMessageContentModel::downloadFile(const QString &name) { - if (!mChatMessageModel) return; +bool ChatMessageContentModel::downloadFile(const QString &name, QString *error) { + if (!mChatMessageModel) { + //: Internal error : message object does not exist anymore ! + if (error) *error = tr("download_error_object_doesnt_exist"); + return false; + } switch (mChatMessageModel->getState()) { case linphone::ChatMessage::State::Delivered: case linphone::ChatMessage::State::DeliveredToUser: @@ -83,10 +87,13 @@ void ChatMessageContentModel::downloadFile(const QString &name) { case linphone::ChatMessage::State::FileTransferDone: break; case linphone::ChatMessage::State::FileTransferInProgress: - return; + return true; default: - lWarning() << QStringLiteral("Wrong message state when requesting downloading, state=.") - << LinphoneEnums::fromLinphone(mChatMessageModel->getState()); + auto state = LinphoneEnums::fromLinphone(mChatMessageModel->getState()); + lWarning() << QStringLiteral("Wrong message state when requesting downloading, state=") << state; + //: Wrong message state when requesting downloading, state = %1 + if (error) *error = tr("download_file_error_wrong_state").arg(LinphoneEnums::toString(state)); + return false; } bool soFarSoGood; const QString safeFilePath = Utils::getSafeFilePath( @@ -94,21 +101,26 @@ void ChatMessageContentModel::downloadFile(const QString &name) { if (!soFarSoGood) { lWarning() << QStringLiteral("Unable to create safe file path for: %1.").arg(name); - return; + //: Unable to create safe file path for: %1 + if (error) *error = tr("download_file_error_no_safe_file_path").arg(name); + return false; } mContent->setFilePath(Utils::appStringToCoreString(safeFilePath)); if (!mContent->isFileTransfer()) { lWarning() << QStringLiteral("file transfer is not available"); - Utils::showInformationPopup( - //: Error - tr("popup_error_title"), - //: This file was already downloaded and is no more on the server. Your peer have to resend it if you want - //: to get it - tr("popup_download_error_message"), false); + //: This file was already downloaded and is no more on the server. Your peer have to resend it if you want + //: to get it + if (error) *error = tr("download_file_error_file_transfer_unavailable"); + return false; } else { - if (!mChatMessageModel->getMonitor()->downloadContent(mContent)) + auto downloaded = mChatMessageModel->getMonitor()->downloadContent(mContent); + if (!downloaded && error) { lWarning() << QStringLiteral("Unable to download file of entry %1.").arg(name); + //: Unable to download file of entry %1 + *error = tr("download_file_error_unable_to_download").arg(name); + } + return downloaded; } } diff --git a/Linphone/model/chat/message/content/ChatMessageContentModel.hpp b/Linphone/model/chat/message/content/ChatMessageContentModel.hpp index cb94cfb6..b552f536 100644 --- a/Linphone/model/chat/message/content/ChatMessageContentModel.hpp +++ b/Linphone/model/chat/message/content/ChatMessageContentModel.hpp @@ -40,17 +40,21 @@ public: std::shared_ptr chatMessageModel); ~ChatMessageContentModel(); - QString getThumbnail() const; - void setThumbnail(const QString &data); void setWasDownloaded(bool wasDownloaded); void createThumbnail(); void removeDownloadedFile(QString filePath); - void downloadFile(const QString &name); + /** + * Returns true if download succeed, false otherwise + */ + bool downloadFile(const QString &name, QString *error = nullptr); void cancelDownloadFile(); void openFile(const QString &name, bool wasDownloaded, bool showDirectory = false); + /** + * Returns true if file saved successfully, false otherwise + */ bool saveAs(const QString &path); const std::shared_ptr &getContent() const; @@ -70,4 +74,4 @@ private: QSharedPointer mConferenceInfoModel; }; -#endif \ No newline at end of file +#endif diff --git a/Linphone/tool/LinphoneEnums.cpp b/Linphone/tool/LinphoneEnums.cpp index 77619551..c64d82dd 100644 --- a/Linphone/tool/LinphoneEnums.cpp +++ b/Linphone/tool/LinphoneEnums.cpp @@ -120,6 +120,9 @@ LinphoneEnums::ChatMessageState LinphoneEnums::fromLinphone(const linphone::Chat QString LinphoneEnums::toString(const LinphoneEnums::ChatMessageState &data) { switch (data) { + case LinphoneEnums::ChatMessageState::StateIdle: + //: "idle" + return QObject::tr("message_state_idle"); case LinphoneEnums::ChatMessageState::StateInProgress: //: "delivery in progress" return QObject::tr("message_state_in_progress"); diff --git a/Linphone/tool/Utils.cpp b/Linphone/tool/Utils.cpp index e476433e..77bec472 100644 --- a/Linphone/tool/Utils.cpp +++ b/Linphone/tool/Utils.cpp @@ -269,11 +269,14 @@ VariantObject *Utils::haveAccount() { void Utils::smartShowWindow(QQuickWindow *window) { if (!window) return; - if (window->visibility() == QWindow::Maximized) // Avoid to change visibility mode - window->showMaximized(); - else window->show(); + // if (window->visibility() == QWindow::Maximized) // Avoid to change visibility mode + // window->showMaximized(); + lInfo() << "[Utils] : show window" << window; + window->show(); App::getInstance()->setLastActiveWindow(window); + lInfo() << "[Utils] : raise window" << window; window->raise(); // Raise ensure to get focus on Mac + lInfo() << "[Utils] : request activate"; window->requestActivate(); } diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index 8d237364..a0b2244f 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -52,10 +52,10 @@ ListView { onModelAboutToBeReset: { loading = true } - onChatRemoved: { - var currentChat = model.getAt(currentIndex) + onRowsRemoved: { + var index = mainItem.currentIndex mainItem.currentIndex = -1 - selectChat(currentChat) + mainItem.currentIndex = index } onLayoutChanged: { selectChat(mainItem.currentChatGui) diff --git a/Linphone/view/Control/Display/Chat/ImageFileView.qml b/Linphone/view/Control/Display/Chat/ImageFileView.qml index c7d6b93c..5aeba83b 100644 --- a/Linphone/view/Control/Display/Chat/ImageFileView.qml +++ b/Linphone/view/Control/Display/Chat/ImageFileView.qml @@ -21,6 +21,8 @@ Image { id: mainItem property ChatMessageContentGui contentGui + RectangleTest{anchors.fill: parent} + mipmap: false//SettingsModel.mipmapEnabled autoTransform: true fillMode: Image.PreserveAspectFit @@ -53,4 +55,4 @@ Image { mainItem.contentGui.core.lOpenFile() } } -} \ No newline at end of file +} diff --git a/Linphone/view/Control/Display/Meeting/MeetingListView.qml b/Linphone/view/Control/Display/Meeting/MeetingListView.qml index cf6ad3d2..f22a5102 100644 --- a/Linphone/view/Control/Display/Meeting/MeetingListView.qml +++ b/Linphone/view/Control/Display/Meeting/MeetingListView.qml @@ -317,9 +317,7 @@ ListView { visible: itemDelegate.haveModel acceptedButtons: Qt.LeftButton | Qt.RightButton onClicked: (mouse) => { - console.log("clicked", mouse.button) if (mouse.button === Qt.RightButton) { - console.log("open popup") deletePopup.x = mouse.x deletePopup.y = mouse.y deletePopup.open() diff --git a/Linphone/view/Page/Form/Chat/SelectedChatView.qml b/Linphone/view/Page/Form/Chat/SelectedChatView.qml index ab8826e3..ddd71235 100644 --- a/Linphone/view/Page/Form/Chat/SelectedChatView.qml +++ b/Linphone/view/Page/Form/Chat/SelectedChatView.qml @@ -100,7 +100,6 @@ FocusScope { font { pixelSize: Typography.h4.pixelSize weight: Utils.getSizeWithScreenRatio(400) - capitalization: Font.Capitalize } } RowLayout { @@ -310,7 +309,7 @@ FocusScope { Control.Control { id: participantListPopup width: parent.width - height: Math.min(participantInfoList.height, Utils.getSizeWithScreenRatio(200)) + height: visible ? Math.min(participantInfoList.height, Utils.getSizeWithScreenRatio(200)) : 0 visible: false anchors.bottom: chatMessagesListView.bottom anchors.left: chatMessagesListView.left diff --git a/Linphone/view/Page/Main/Account/AccountListView.qml b/Linphone/view/Page/Main/Account/AccountListView.qml index a7554c50..8026ace4 100644 --- a/Linphone/view/Page/Main/Account/AccountListView.qml +++ b/Linphone/view/Page/Main/Account/AccountListView.qml @@ -32,7 +32,7 @@ ColumnLayout{ property var popupId Component{ id: contactDelegate - Contact{ + Contact { id: contactItem Layout.preferredWidth: mainItem.childrenWidth account: modelData diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index d530b3f4..26fbd82d 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -391,4 +391,4 @@ AbstractMainPage { } } } -} \ No newline at end of file +} diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index 51a242b8..68e82b67 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -1215,11 +1215,11 @@ AbstractWindow { } } onJoinConfRequested: uri => { - mainWindow.joinConference(uri, { - "microEnabled": microEnabled, - "localVideoEnabled": localVideoEnabled - }) - } + mainWindow.joinConference(uri, { + "microEnabled": microEnabled, + "localVideoEnabled": localVideoEnabled + }) + } onCancelJoiningRequested: mainWindow.cancelJoinConference() onCancelAfterJoinRequested: mainWindow.cancelAfterJoin() } @@ -1734,4 +1734,4 @@ AbstractWindow { } } } -} \ No newline at end of file +}