mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 03:18:07 +00:00
Fixes:
fix get size with screen ratio function fix chat sending area ui #LINQT-2068 print debug logs in linphone files for futur debugging fix call history details ui when no video conference factory set use remote name of each call if in local conference #LINQT-2058
This commit is contained in:
parent
7825646edd
commit
b17bc8cc27
38 changed files with 597 additions and 545 deletions
|
|
@ -435,10 +435,10 @@ void App::setSelf(QSharedPointer<App>(me)) {
|
|||
mCliModelConnection->makeConnectToCore(&App::receivedMessage, [this](int, const QByteArray &byteArray) {
|
||||
QString command(byteArray);
|
||||
if (command.isEmpty()) {
|
||||
lDebug() << log().arg("Check with CliModel for commands");
|
||||
lInfo() << log().arg("Check with CliModel for commands");
|
||||
mCliModelConnection->invokeToModel([]() { CliModel::getInstance()->runProcess(); });
|
||||
} else {
|
||||
qInfo() << QStringLiteral("Received command from other application: `%1`.").arg(command);
|
||||
lInfo() << log().arg("Received command from other application: `%1`.").arg(command);
|
||||
mCliModelConnection->invokeToModel([command]() { CliModel::getInstance()->executeCommand(command); });
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@ AccountCore::AccountCore(const std::shared_ptr<linphone::Account> &account) : QO
|
|||
mRegisterEnabled = params->registerEnabled();
|
||||
mMwiServerAddress =
|
||||
params->getMwiServerAddress() ? Utils::coreStringToAppString(params->getMwiServerAddress()->asString()) : "";
|
||||
mTransports << "UDP" << "TCP" << "TLS" << "DTLS";
|
||||
mTransports << "UDP"
|
||||
<< "TCP"
|
||||
<< "TLS"
|
||||
<< "DTLS";
|
||||
mTransport = LinphoneEnums::toString(LinphoneEnums::fromLinphone(params->getTransport()));
|
||||
mRegistrarUri =
|
||||
params->getServerAddress() ? Utils::coreStringToAppString(params->getServerAddress()->asString()) : "";
|
||||
|
|
@ -384,7 +387,7 @@ void AccountCore::onRegistrationStateChanged(const std::shared_ptr<linphone::Acc
|
|||
linphone::RegistrationState state,
|
||||
const std::string &message) {
|
||||
mRegistrationState = LinphoneEnums::fromLinphone(state);
|
||||
lDebug() << log().arg(Q_FUNC_INFO) << mRegistrationState;
|
||||
qDebug() << log().arg(Q_FUNC_INFO) << mRegistrationState;
|
||||
emit registrationStateChanged(Utils::coreStringToAppString(message));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#include "CallCore.hpp"
|
||||
#include "CallGui.hpp"
|
||||
#include "core/App.hpp"
|
||||
#include "model/tool/ToolModel.hpp"
|
||||
#include <QSharedPointer>
|
||||
#include <linphone++/linphone.hh>
|
||||
|
||||
|
|
@ -96,34 +97,26 @@ void CallList::setSelf(QSharedPointer<CallList> me) {
|
|||
bool enablingVideo = false;
|
||||
if (currentCall) enablingVideo = currentCall->getCurrentParams()->videoEnabled();
|
||||
if (!conference) {
|
||||
auto parameters = core->createConferenceParams(conference);
|
||||
auto audioVideoConfFactoryUri =
|
||||
core->getDefaultAccount()->getParams()->getAudioVideoConferenceFactoryAddress();
|
||||
if (audioVideoConfFactoryUri) {
|
||||
parameters->setConferenceFactoryAddress(audioVideoConfFactoryUri);
|
||||
parameters->setSubject("Meeting");
|
||||
QString subject = audioVideoConfFactoryUri
|
||||
//: Remote group call
|
||||
? tr("remote_group_call")
|
||||
//: "Local group call"
|
||||
: tr("local_group_call");
|
||||
auto conference = ToolModel::createConference(subject, nullptr);
|
||||
if (!conference) {
|
||||
lWarning() << log().arg("Failed to merge calls");
|
||||
mModelConnection->invokeToCore([] {
|
||||
Utils::showInformationPopup(tr("info_popup_error_title"),
|
||||
//: Failed to merge calls !
|
||||
tr("info_popup_merge_calls_failed_message"), false);
|
||||
});
|
||||
return;
|
||||
} else {
|
||||
parameters->setSubject("Local meeting");
|
||||
}
|
||||
parameters->enableVideo(enablingVideo);
|
||||
conference = core->createConferenceWithParams(parameters);
|
||||
}
|
||||
|
||||
std::list<std::shared_ptr<linphone::Address>> allLinphoneAddresses;
|
||||
std::list<std::shared_ptr<linphone::Address>> newCalls;
|
||||
std::list<std::shared_ptr<linphone::Call>> runningCallsToAdd;
|
||||
|
||||
for (auto call : currentCalls) {
|
||||
if (!call->getConference()) {
|
||||
runningCallsToAdd.push_back(call);
|
||||
conference->addParticipants(currentCalls);
|
||||
}
|
||||
}
|
||||
|
||||
// 1) Add running calls
|
||||
if (runningCallsToAdd.size() > 0) {
|
||||
conference->addParticipants(runningCallsToAdd);
|
||||
}
|
||||
|
||||
// emit lUpdate();
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -323,16 +323,16 @@ void ChatMessageCore::setSelf(QSharedPointer<ChatMessageCore> me) {
|
|||
mChatMessageModelConnection->makeConnectToModel(
|
||||
&ChatMessageModel::fileTransferRecv,
|
||||
[this](const std::shared_ptr<linphone::ChatMessage> &message, const std::shared_ptr<linphone::Content> &content,
|
||||
const std::shared_ptr<const linphone::Buffer> &buffer) { qDebug() << "transfer received"; });
|
||||
const std::shared_ptr<const linphone::Buffer> &buffer) { lInfo() << log().arg("transfer received"); });
|
||||
mChatMessageModelConnection->makeConnectToModel(
|
||||
&ChatMessageModel::fileTransferSend,
|
||||
[this](const std::shared_ptr<linphone::ChatMessage> &message, const std::shared_ptr<linphone::Content> &content,
|
||||
size_t offset, size_t size) { qDebug() << "transfer send"; });
|
||||
size_t offset, size_t size) { lInfo() << log().arg("transfer send"); });
|
||||
mChatMessageModelConnection->makeConnectToModel(
|
||||
&ChatMessageModel::fileTransferSendChunk,
|
||||
[this](const std::shared_ptr<linphone::ChatMessage> &message, const std::shared_ptr<linphone::Content> &content,
|
||||
size_t offset, size_t size,
|
||||
const std::shared_ptr<linphone::Buffer> &buffer) { qDebug() << "transfer send chunk"; });
|
||||
const std::shared_ptr<linphone::Buffer> &buffer) { lInfo() << log().arg("transfer send chunk"); });
|
||||
mChatMessageModelConnection->makeConnectToModel(
|
||||
&ChatMessageModel::participantImdnStateChanged,
|
||||
[this](const std::shared_ptr<linphone::ChatMessage> &message,
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ void ChatMessageContentList::addFiles(const QStringList &paths) {
|
|||
qint64 fileSize = file.size();
|
||||
if (fileSize > Constants::FileSizeLimit) {
|
||||
++nbTooBig;
|
||||
qWarning() << QString("Unable to send file. (Size limit=%1)").arg(Constants::FileSizeLimit);
|
||||
lWarning() << log().arg("Unable to send file. (Size limit=%1)").arg(Constants::FileSizeLimit);
|
||||
continue;
|
||||
}
|
||||
auto name = file.fileName().toStdString();
|
||||
|
|
@ -149,7 +149,7 @@ void ChatMessageContentList::addFiles(const QStringList &paths) {
|
|||
if (mimeType.length() != 2) {
|
||||
++nbMimeError;
|
||||
lastMimeError = path;
|
||||
qWarning() << QString("Unable to get supported mime type for: `%1`.").arg(path);
|
||||
lWarning() << log().arg("Unable to get supported mime type for: `%1`.").arg(path);
|
||||
continue;
|
||||
}
|
||||
content->setType(Utils::appStringToCoreString(mimeType[0]));
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ void ConferenceInfoList::setSelf(QSharedPointer<ConferenceInfoList> me) {
|
|||
&CoreModel::conferenceInfoReceived,
|
||||
[this](const std::shared_ptr<linphone::Core> &core,
|
||||
const std::shared_ptr<const linphone::ConferenceInfo> &conferenceInfo) {
|
||||
lDebug() << log().arg("conference info received") << conferenceInfo->getSubject();
|
||||
lInfo() << log().arg("conference info received") << conferenceInfo->getSubject();
|
||||
// We must refresh all the conference infos cause we are not able to determine
|
||||
// which account is concerned by the signal if multiple accounts are connected
|
||||
emit lUpdate();
|
||||
|
|
|
|||
|
|
@ -282,8 +282,8 @@ void Notifier::notifyReceivedCall(const shared_ptr<linphone::Call> &call) {
|
|||
auto accountModel = Utils::makeQObject_ptr<AccountModel>(account);
|
||||
accountModel->setSelf(accountModel);
|
||||
if (!accountModel->getNotificationsAllowed()) {
|
||||
qInfo()
|
||||
<< "Notifications have been disabled for this account - not creating a notification for incoming call";
|
||||
lInfo() << log().arg(
|
||||
"Notifications have been disabled for this account - not creating a notification for incoming call");
|
||||
if (accountModel->forwardToVoiceMailInDndPresence()) {
|
||||
lInfo() << log().arg("Transferring call to voicemail");
|
||||
auto voicemailAddress = linphone::Factory::get()->createAddress(
|
||||
|
|
@ -341,8 +341,9 @@ void Notifier::notifyReceivedMessages(const std::shared_ptr<linphone::ChatRoom>
|
|||
auto accountModel = Utils::makeQObject_ptr<AccountModel>(receiverAccount);
|
||||
accountModel->setSelf(accountModel);
|
||||
if (!accountModel->getNotificationsAllowed()) {
|
||||
qInfo() << "Notifications have been disabled for this account - not creating a notification for "
|
||||
"incoming message";
|
||||
lInfo() << log().arg(
|
||||
"Notifications have been disabled for this account - not creating a notification for "
|
||||
"incoming message");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ static inline QString getAppRootCaFilePath() {
|
|||
if (Paths::filePathExists(rootca)) { // Packaged
|
||||
return rootca;
|
||||
} else {
|
||||
qDebug() << "Root ca path does not exist. Create it";
|
||||
lInfo() << "Root ca path does not exist. Create it";
|
||||
QFileInfo rootcaInfo(rootca);
|
||||
if (!rootcaInfo.absoluteDir().exists()) {
|
||||
QDir dataDir(getAppPackageDataDirPath());
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ void MagicSearchList::setSelf(QSharedPointer<MagicSearchList> me) {
|
|||
emit resultsProcessed();
|
||||
});
|
||||
});
|
||||
qDebug() << log().arg("Initialized");
|
||||
lDebug() << log().arg("Initialized");
|
||||
emit initialized();
|
||||
});
|
||||
});
|
||||
|
|
@ -157,7 +157,7 @@ void MagicSearchList::setResults(const QList<QSharedPointer<FriendCore>> &contac
|
|||
if (!isFriendCore) continue;
|
||||
disconnect(isFriendCore.get());
|
||||
}
|
||||
qDebug() << log().arg("SetResults: %1").arg(contacts.size());
|
||||
lDebug() << log().arg("SetResults: %1").arg(contacts.size());
|
||||
resetData<FriendCore>(contacts);
|
||||
for (auto it : contacts) {
|
||||
connectContact(it.get());
|
||||
|
|
|
|||
|
|
@ -39,45 +39,45 @@
|
|||
<context>
|
||||
<name>AccountCore</name>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="435"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="446"/>
|
||||
<source>drawer_menu_account_connection_status_connected</source>
|
||||
<extracomment>"Connecté"</extracomment>
|
||||
<translation>Verbunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="438"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="449"/>
|
||||
<source>drawer_menu_account_connection_status_refreshing</source>
|
||||
<translation>Aktualisiere…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="441"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="452"/>
|
||||
<source>drawer_menu_account_connection_status_progress</source>
|
||||
<translation>Verbinde…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="444"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="455"/>
|
||||
<source>drawer_menu_account_connection_status_failed</source>
|
||||
<translation>Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="448"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="459"/>
|
||||
<source>drawer_menu_account_connection_status_cleared</source>
|
||||
<translation>Deaktiviert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="482"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="493"/>
|
||||
<source>manage_account_status_connected_summary</source>
|
||||
<extracomment>"Vous êtes en ligne et joignable."</extracomment>
|
||||
<translation>Sie sind online und erreichbar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="485"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="496"/>
|
||||
<source>manage_account_status_failed_summary</source>
|
||||
<extracomment>"Erreur de connexion, vérifiez vos paramètres."</extracomment>
|
||||
<translation>Verbindungsfehler, überprüfen Sie Ihre Einstellungen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="489"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="500"/>
|
||||
<source>manage_account_status_cleared_summary</source>
|
||||
<extracomment>"Compte désactivé, vous ne recevrez ni appel ni message."</extracomment>
|
||||
<translation>Konto deaktiviert, Sie erhalten keine Anrufe oder Nachrichten.</translation>
|
||||
|
|
@ -634,102 +634,101 @@
|
|||
<context>
|
||||
<name>App</name>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="357"/>
|
||||
<location filename="../../core/App.cpp" line="356"/>
|
||||
<source>remote_provisioning_dialog</source>
|
||||
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
|
||||
<translation>Möchten Sie die Remote-Konfiguration von dieser Adresse herunterladen und anwenden?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="394"/>
|
||||
<location filename="../../core/App.cpp" line="648"/>
|
||||
<location filename="../../core/App.cpp" line="393"/>
|
||||
<location filename="../../core/App.cpp" line="658"/>
|
||||
<source>info_popup_error_title</source>
|
||||
<extracomment>Error</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="395"/>
|
||||
<location filename="../../core/App.cpp" line="650"/>
|
||||
<location filename="../../core/App.cpp" line="394"/>
|
||||
<location filename="../../core/App.cpp" line="660"/>
|
||||
<source>info_popup_configuration_failed_message</source>
|
||||
<extracomment>Remote provisioning failed : %1</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="644"/>
|
||||
<location filename="../../core/App.cpp" line="654"/>
|
||||
<source>configuration_error_detail</source>
|
||||
<extracomment>not reachable</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="916"/>
|
||||
<location filename="../../core/App.cpp" line="926"/>
|
||||
<source>application_description</source>
|
||||
<extracomment>"A free and open source SIP video-phone."</extracomment>
|
||||
<translation>Ein kostenloses Open-Source SIP Video-Telefon.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="918"/>
|
||||
<location filename="../../core/App.cpp" line="928"/>
|
||||
<source>command_line_arg_order</source>
|
||||
<extracomment>"Send an order to the application towards a command line"</extracomment>
|
||||
<translation>Kommandozeilen-Befehl an die Anwendung schicken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="922"/>
|
||||
<location filename="../../core/App.cpp" line="932"/>
|
||||
<source>command_line_option_show_help</source>
|
||||
<translation>Zeige Hilfe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="927"/>
|
||||
<location filename="../../core/App.cpp" line="937"/>
|
||||
<source>command_line_option_show_app_version</source>
|
||||
<translation type="unfinished">Zeige App-Version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="935"/>
|
||||
<location filename="../../core/App.cpp" line="945"/>
|
||||
<source>command_line_option_config_to_fetch</source>
|
||||
<extracomment>"Specify the linphone configuration file to be fetched. It will be merged with the current configuration."</extracomment>
|
||||
<translation>Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="937"/>
|
||||
<location filename="../../core/App.cpp" line="947"/>
|
||||
<source>command_line_option_config_to_fetch_arg</source>
|
||||
<extracomment>"URL, path or file"</extracomment>
|
||||
<translation>URL, Pfad oder Datei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="942"/>
|
||||
<location filename="../../core/App.cpp" line="952"/>
|
||||
<source>command_line_option_minimized</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="945"/>
|
||||
<location filename="../../core/App.cpp" line="955"/>
|
||||
<source>command_line_option_log_to_stdout</source>
|
||||
<translation>Debug-Informationen auf der Standardausgabe ausgeben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="948"/>
|
||||
<location filename="../../core/App.cpp" line="958"/>
|
||||
<source>command_line_option_print_app_logs_only</source>
|
||||
<extracomment>"Print only logs from the application"</extracomment>
|
||||
<translation>Nur Anwendungs-Logs ausgeben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1318"/>
|
||||
<location filename="../../core/App.cpp" line="1329"/>
|
||||
<source>hide_action</source>
|
||||
<extracomment>"Cacher" "Afficher"</extracomment>
|
||||
<translation>Ausblenden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1318"/>
|
||||
<location filename="../../core/App.cpp" line="1329"/>
|
||||
<source>show_action</source>
|
||||
<translation>Zeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1333"/>
|
||||
<location filename="../../core/App.cpp" line="1344"/>
|
||||
<source>quit_action</source>
|
||||
<extracomment>"Quitter"</extracomment>
|
||||
<translation>Beenden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1337"/>
|
||||
<location filename="../../core/App.cpp" line="1448"/>
|
||||
<source>mark_all_read_action</source>
|
||||
<extracomment>"Mark all as read"</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
|
@ -946,7 +945,7 @@
|
|||
<translation type="vanished">Offline</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Container/Call/CallHistoryLayout.qml" line="116"/>
|
||||
<location filename="../../view/Control/Container/Call/CallHistoryLayout.qml" line="111"/>
|
||||
<source>meeting_info_join_title</source>
|
||||
<extracomment>"Rejoindre la réunion"</extracomment>
|
||||
<translation>Besprechung beitreten</translation>
|
||||
|
|
@ -1023,52 +1022,77 @@
|
|||
<translation>Der Besprechungs-Link wurde in die Zwischenablage kopiert</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CallList</name>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="104"/>
|
||||
<source>remote_group_call</source>
|
||||
<extracomment>Remote group call</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="106"/>
|
||||
<source>local_group_call</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="111"/>
|
||||
<source>info_popup_error_title</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="113"/>
|
||||
<source>info_popup_merge_calls_failed_message</source>
|
||||
<extracomment>Failed to merge calls !</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CallListView</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="55"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="59"/>
|
||||
<source>meeting</source>
|
||||
<extracomment>"Réunion</extracomment>
|
||||
<translation>Besprechung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="57"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="61"/>
|
||||
<source>call</source>
|
||||
<extracomment>"Appel"</extracomment>
|
||||
<translation>Anruf</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="62"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="66"/>
|
||||
<source>paused_call_or_meeting</source>
|
||||
<extracomment>"%1 en pause"</extracomment>
|
||||
<translation>%1 pausiert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="64"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="68"/>
|
||||
<source>ongoing_call_or_meeting</source>
|
||||
<extracomment>"%1 en cours"</extracomment>
|
||||
<translation>%1 laufend</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="84"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="88"/>
|
||||
<source>transfer_call_name_accessible_name</source>
|
||||
<extracomment>Transfer call %1</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="112"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="116"/>
|
||||
<source>resume_call_name_accessible_name</source>
|
||||
<extracomment>Resume %1 call</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="114"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="118"/>
|
||||
<source>pause_call_name_accessible_name</source>
|
||||
<extracomment>Pause %1 call</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="137"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="141"/>
|
||||
<source>end_call_name_accessible_name</source>
|
||||
<extracomment>End %1 call</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
@ -2032,13 +2056,13 @@
|
|||
<context>
|
||||
<name>ChatDroppableTextArea</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="152"/>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="154"/>
|
||||
<source>chat_view_send_area_placeholder_text</source>
|
||||
<extracomment>Say something… : placeholder text for sending message text area</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="187"/>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="190"/>
|
||||
<source>cannot_record_while_in_call_tooltip</source>
|
||||
<extracomment>Cannot record a message while a call is ongoing</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
@ -2261,13 +2285,13 @@ Error</extracomment>
|
|||
<context>
|
||||
<name>ChatMessageContentModel</name>
|
||||
<message>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="104"/>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="105"/>
|
||||
<source>popup_error_title</source>
|
||||
<extracomment>Error</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="107"/>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="108"/>
|
||||
<source>popup_download_error_message</source>
|
||||
<extracomment>This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
@ -4874,36 +4898,36 @@ Error</extracomment>
|
|||
<context>
|
||||
<name>Notifier</name>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="309"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="310"/>
|
||||
<source>new_call_alert_accessible_name</source>
|
||||
<extracomment>New call from %1</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="361"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="363"/>
|
||||
<source>new_voice_message</source>
|
||||
<extracomment>'Voice message received!' : message to warn the user in a notofication for voice messages.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="362"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="364"/>
|
||||
<source>new_file_message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="365"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="367"/>
|
||||
<source>new_conference_invitation</source>
|
||||
<extracomment>'Conference invitation received!' : Notification about receiving an invitation to a conference.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="385"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="387"/>
|
||||
<source>new_chat_room_messages</source>
|
||||
<extracomment>'New messages received!' Notification that warn the user of new messages.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="392"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="394"/>
|
||||
<source>new_message_alert_accessible_name</source>
|
||||
<extracomment>New message on chatroom %1</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
@ -4923,102 +4947,102 @@ Error</extracomment>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="123"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="125"/>
|
||||
<source>oidc_authentication_granted_message</source>
|
||||
<extracomment>Authentication granted</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="130"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="132"/>
|
||||
<source>oidc_authentication_not_authenticated_message</source>
|
||||
<extracomment>Not authenticated</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="136"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="138"/>
|
||||
<source>oidc_authentication_refresh_message</source>
|
||||
<extracomment>Refreshing token</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="141"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="143"/>
|
||||
<source>oidc_authentication_temporary_credentials_message</source>
|
||||
<extracomment>Temporary credentials received</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="159"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="161"/>
|
||||
<source>oidc_authentication_network_error</source>
|
||||
<extracomment>Network error</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="163"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="165"/>
|
||||
<source>oidc_authentication_server_error</source>
|
||||
<extracomment>Server error</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="167"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="169"/>
|
||||
<source>oidc_authentication_token_not_found_error</source>
|
||||
<extracomment>OAuth token not found</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="171"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="173"/>
|
||||
<source>oidc_authentication_token_secret_not_found_error</source>
|
||||
<extracomment>OAuth token secret not found</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="175"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="177"/>
|
||||
<source>oidc_authentication_callback_not_verified_error</source>
|
||||
<extracomment>OAuth callback not verified</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="186"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="188"/>
|
||||
<source>oidc_authentication_request_auth_message</source>
|
||||
<extracomment>Requesting authorization from browser</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="217"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="219"/>
|
||||
<source>oidc_authentication_no_token_found_error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="230"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="232"/>
|
||||
<source>oidc_authentication_request_token_message</source>
|
||||
<extracomment>Requesting access token</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="235"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="237"/>
|
||||
<source>oidc_authentication_refresh_token_message</source>
|
||||
<extracomment>Refreshing access token</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="240"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="242"/>
|
||||
<source>oidc_authentication_request_authorization_message</source>
|
||||
<extracomment>Requesting authorization</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="245"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="247"/>
|
||||
<source>oidc_authentication_request_temporary_credentials_message</source>
|
||||
<extracomment>Requesting temporary credentials</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="272"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="274"/>
|
||||
<source>oidc_authentication_no_auth_found_in_config_error</source>
|
||||
<extracomment>No authorization endpoint found in OpenID configuration</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="287"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="289"/>
|
||||
<source>oidc_authentication_no_token_found_in_config_error</source>
|
||||
<extracomment>No token endpoint found in OpenID configuration</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
@ -5690,37 +5714,37 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
|
|||
<translation>Start a group call ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="118"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="121"/>
|
||||
<source>unencrypted_conversation_warning</source>
|
||||
<extracomment>This conversation is not encrypted !</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="436"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="407"/>
|
||||
<source>reply_to_label</source>
|
||||
<extracomment>Reply to %1</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="637"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="607"/>
|
||||
<source>shared_medias_title</source>
|
||||
<extracomment>Shared medias</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="639"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="609"/>
|
||||
<source>shared_documents_title</source>
|
||||
<extracomment>Shared documents</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="668"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="638"/>
|
||||
<source>forward_to_title</source>
|
||||
<extracomment>Forward to…</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="702"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="672"/>
|
||||
<source>conversations_title</source>
|
||||
<extracomment>Conversations</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
@ -5859,38 +5883,38 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="408"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="413"/>
|
||||
<source>group_call_error_participants_invite</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="412"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="417"/>
|
||||
<source>group_call_error_creation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="512"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="517"/>
|
||||
<source>voice_recording_duration</source>
|
||||
<extracomment>"Voice recording (%1)" : %1 is the duration formated in mm:ss</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="520"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="525"/>
|
||||
<source>conference_invitation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="522"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="527"/>
|
||||
<source>conference_invitation_updated</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="524"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="529"/>
|
||||
<source>conference_invitation_cancelled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="585"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="591"/>
|
||||
<source>unknown_audio_device_name</source>
|
||||
<translation>Unbekannter Gerätename</translation>
|
||||
</message>
|
||||
|
|
|
|||
|
|
@ -39,45 +39,45 @@
|
|||
<context>
|
||||
<name>AccountCore</name>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="435"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="446"/>
|
||||
<source>drawer_menu_account_connection_status_connected</source>
|
||||
<extracomment>"Connecté"</extracomment>
|
||||
<translation>Connected</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="438"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="449"/>
|
||||
<source>drawer_menu_account_connection_status_refreshing</source>
|
||||
<translation>Refreshing…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="441"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="452"/>
|
||||
<source>drawer_menu_account_connection_status_progress</source>
|
||||
<translation>Connecting…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="444"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="455"/>
|
||||
<source>drawer_menu_account_connection_status_failed</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="448"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="459"/>
|
||||
<source>drawer_menu_account_connection_status_cleared</source>
|
||||
<translation>Disabled</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="482"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="493"/>
|
||||
<source>manage_account_status_connected_summary</source>
|
||||
<extracomment>"Vous êtes en ligne et joignable."</extracomment>
|
||||
<translation>You are online and reachable.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="485"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="496"/>
|
||||
<source>manage_account_status_failed_summary</source>
|
||||
<extracomment>"Erreur de connexion, vérifiez vos paramètres."</extracomment>
|
||||
<translation>Connection error, check your settings.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="489"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="500"/>
|
||||
<source>manage_account_status_cleared_summary</source>
|
||||
<extracomment>"Compte désactivé, vous ne recevrez ni appel ni message."</extracomment>
|
||||
<translation>Account disabled, you will not receive calls or messages.</translation>
|
||||
|
|
@ -428,11 +428,6 @@
|
|||
<extracomment>"If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it."</extracomment>
|
||||
<translation>If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>account_settings_outbound_proxy_title</source>
|
||||
<extracomment>"Outbound proxy enabled"</extracomment>
|
||||
<translation type="vanished">Outbound proxy server enabled</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="157"/>
|
||||
<source>account_settings_stun_server_url_title</source>
|
||||
|
|
@ -634,103 +629,102 @@
|
|||
<context>
|
||||
<name>App</name>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="357"/>
|
||||
<location filename="../../core/App.cpp" line="356"/>
|
||||
<source>remote_provisioning_dialog</source>
|
||||
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
|
||||
<translation>Do you want to download and apply remote provisioning from this address ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="394"/>
|
||||
<location filename="../../core/App.cpp" line="648"/>
|
||||
<location filename="../../core/App.cpp" line="393"/>
|
||||
<location filename="../../core/App.cpp" line="658"/>
|
||||
<source>info_popup_error_title</source>
|
||||
<extracomment>Error</extracomment>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="395"/>
|
||||
<location filename="../../core/App.cpp" line="650"/>
|
||||
<location filename="../../core/App.cpp" line="394"/>
|
||||
<location filename="../../core/App.cpp" line="660"/>
|
||||
<source>info_popup_configuration_failed_message</source>
|
||||
<extracomment>Remote provisioning failed : %1</extracomment>
|
||||
<translation>Remote provisioning failed : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="644"/>
|
||||
<location filename="../../core/App.cpp" line="654"/>
|
||||
<source>configuration_error_detail</source>
|
||||
<extracomment>not reachable</extracomment>
|
||||
<translation>not reachable</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="916"/>
|
||||
<location filename="../../core/App.cpp" line="926"/>
|
||||
<source>application_description</source>
|
||||
<extracomment>"A free and open source SIP video-phone."</extracomment>
|
||||
<translation>A free and open source SIP video-phone.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="918"/>
|
||||
<location filename="../../core/App.cpp" line="928"/>
|
||||
<source>command_line_arg_order</source>
|
||||
<extracomment>"Send an order to the application towards a command line"</extracomment>
|
||||
<translation>Send an order to the application towards a command line</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="922"/>
|
||||
<location filename="../../core/App.cpp" line="932"/>
|
||||
<source>command_line_option_show_help</source>
|
||||
<translation>Show this help</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="927"/>
|
||||
<location filename="../../core/App.cpp" line="937"/>
|
||||
<source>command_line_option_show_app_version</source>
|
||||
<translation>Show app version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="935"/>
|
||||
<location filename="../../core/App.cpp" line="945"/>
|
||||
<source>command_line_option_config_to_fetch</source>
|
||||
<extracomment>"Specify the linphone configuration file to be fetched. It will be merged with the current configuration."</extracomment>
|
||||
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="937"/>
|
||||
<location filename="../../core/App.cpp" line="947"/>
|
||||
<source>command_line_option_config_to_fetch_arg</source>
|
||||
<extracomment>"URL, path or file"</extracomment>
|
||||
<translation>URL, path or file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="942"/>
|
||||
<location filename="../../core/App.cpp" line="952"/>
|
||||
<source>command_line_option_minimized</source>
|
||||
<translation>Minimize</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="945"/>
|
||||
<location filename="../../core/App.cpp" line="955"/>
|
||||
<source>command_line_option_log_to_stdout</source>
|
||||
<translation>Log to stdout some debug information while running</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="948"/>
|
||||
<location filename="../../core/App.cpp" line="958"/>
|
||||
<source>command_line_option_print_app_logs_only</source>
|
||||
<extracomment>"Print only logs from the application"</extracomment>
|
||||
<translation>Print only logs from the application</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1318"/>
|
||||
<location filename="../../core/App.cpp" line="1329"/>
|
||||
<source>hide_action</source>
|
||||
<extracomment>"Cacher" "Afficher"</extracomment>
|
||||
<translation>Hide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1318"/>
|
||||
<location filename="../../core/App.cpp" line="1329"/>
|
||||
<source>show_action</source>
|
||||
<translation>Show</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1333"/>
|
||||
<location filename="../../core/App.cpp" line="1344"/>
|
||||
<source>quit_action</source>
|
||||
<extracomment>"Quitter"</extracomment>
|
||||
<translation>Quit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1337"/>
|
||||
<location filename="../../core/App.cpp" line="1448"/>
|
||||
<source>mark_all_read_action</source>
|
||||
<extracomment>"Mark all as read"</extracomment>
|
||||
<translation>Mark all as read</translation>
|
||||
<translation>Marquer tout comme lu</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
|
@ -926,7 +920,7 @@
|
|||
<context>
|
||||
<name>CallHistoryLayout</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Container/Call/CallHistoryLayout.qml" line="116"/>
|
||||
<location filename="../../view/Control/Container/Call/CallHistoryLayout.qml" line="111"/>
|
||||
<source>meeting_info_join_title</source>
|
||||
<extracomment>"Rejoindre la réunion"</extracomment>
|
||||
<translation>Join meeting</translation>
|
||||
|
|
@ -1003,52 +997,77 @@
|
|||
<translation>The meeting link has been copied to the clipboard</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CallList</name>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="104"/>
|
||||
<source>remote_group_call</source>
|
||||
<extracomment>Remote group call</extracomment>
|
||||
<translation>Remote group call</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="106"/>
|
||||
<source>local_group_call</source>
|
||||
<translation>Local group call</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="111"/>
|
||||
<source>info_popup_error_title</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="113"/>
|
||||
<source>info_popup_merge_calls_failed_message</source>
|
||||
<extracomment>Failed to merge calls !</extracomment>
|
||||
<translation>Failed to merge calls !</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CallListView</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="55"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="59"/>
|
||||
<source>meeting</source>
|
||||
<extracomment>"Réunion</extracomment>
|
||||
<translation>Meeting</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="57"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="61"/>
|
||||
<source>call</source>
|
||||
<extracomment>"Appel"</extracomment>
|
||||
<translation>Call</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="62"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="66"/>
|
||||
<source>paused_call_or_meeting</source>
|
||||
<extracomment>"%1 en pause"</extracomment>
|
||||
<translation>%1 paused</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="64"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="68"/>
|
||||
<source>ongoing_call_or_meeting</source>
|
||||
<extracomment>"%1 en cours"</extracomment>
|
||||
<translation>Ongoing %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="84"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="88"/>
|
||||
<source>transfer_call_name_accessible_name</source>
|
||||
<extracomment>Transfer call %1</extracomment>
|
||||
<translation>Transfer call %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="112"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="116"/>
|
||||
<source>resume_call_name_accessible_name</source>
|
||||
<extracomment>Resume %1 call</extracomment>
|
||||
<translation>Resume %1 call</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="114"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="118"/>
|
||||
<source>pause_call_name_accessible_name</source>
|
||||
<extracomment>Pause %1 call</extracomment>
|
||||
<translation>Pause %1 call</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="137"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="141"/>
|
||||
<source>end_call_name_accessible_name</source>
|
||||
<extracomment>End %1 call</extracomment>
|
||||
<translation>End %1 call</translation>
|
||||
|
|
@ -1994,13 +2013,13 @@
|
|||
<context>
|
||||
<name>ChatDroppableTextArea</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="152"/>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="154"/>
|
||||
<source>chat_view_send_area_placeholder_text</source>
|
||||
<extracomment>Say something… : placeholder text for sending message text area</extracomment>
|
||||
<translation>Say something…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="187"/>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="190"/>
|
||||
<source>cannot_record_while_in_call_tooltip</source>
|
||||
<extracomment>Cannot record a message while a call is ongoing</extracomment>
|
||||
<translation>Cannot record a message while a call is ongoing</translation>
|
||||
|
|
@ -2223,13 +2242,13 @@ Error</extracomment>
|
|||
<context>
|
||||
<name>ChatMessageContentModel</name>
|
||||
<message>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="104"/>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="105"/>
|
||||
<source>popup_error_title</source>
|
||||
<extracomment>Error</extracomment>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="107"/>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="108"/>
|
||||
<source>popup_download_error_message</source>
|
||||
<extracomment>This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it</extracomment>
|
||||
<translation>This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it</translation>
|
||||
|
|
@ -4771,36 +4790,36 @@ Expiration : %1</translation>
|
|||
<context>
|
||||
<name>Notifier</name>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="309"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="310"/>
|
||||
<source>new_call_alert_accessible_name</source>
|
||||
<extracomment>New call from %1</extracomment>
|
||||
<translation>New call from %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="361"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="363"/>
|
||||
<source>new_voice_message</source>
|
||||
<extracomment>'Voice message received!' : message to warn the user in a notofication for voice messages.</extracomment>
|
||||
<translation>Voice message received!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="362"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="364"/>
|
||||
<source>new_file_message</source>
|
||||
<translation>File received!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="365"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="367"/>
|
||||
<source>new_conference_invitation</source>
|
||||
<extracomment>'Conference invitation received!' : Notification about receiving an invitation to a conference.</extracomment>
|
||||
<translation>Conference invitation received !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="385"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="387"/>
|
||||
<source>new_chat_room_messages</source>
|
||||
<extracomment>'New messages received!' Notification that warn the user of new messages.</extracomment>
|
||||
<translation>New messages received !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="392"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="394"/>
|
||||
<source>new_message_alert_accessible_name</source>
|
||||
<extracomment>New message on chatroom %1</extracomment>
|
||||
<translation>New message on chatroom %1</translation>
|
||||
|
|
@ -4820,102 +4839,102 @@ Expiration : %1</translation>
|
|||
<translation>Timeout: Not authenticated</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="123"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="125"/>
|
||||
<source>oidc_authentication_granted_message</source>
|
||||
<extracomment>Authentication granted</extracomment>
|
||||
<translation>Authentication granted</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="130"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="132"/>
|
||||
<source>oidc_authentication_not_authenticated_message</source>
|
||||
<extracomment>Not authenticated</extracomment>
|
||||
<translation>Not authenticated</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="136"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="138"/>
|
||||
<source>oidc_authentication_refresh_message</source>
|
||||
<extracomment>Refreshing token</extracomment>
|
||||
<translation>Refreshing token</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="141"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="143"/>
|
||||
<source>oidc_authentication_temporary_credentials_message</source>
|
||||
<extracomment>Temporary credentials received</extracomment>
|
||||
<translation>Temporary credentials received</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="159"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="161"/>
|
||||
<source>oidc_authentication_network_error</source>
|
||||
<extracomment>Network error</extracomment>
|
||||
<translation>Network error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="163"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="165"/>
|
||||
<source>oidc_authentication_server_error</source>
|
||||
<extracomment>Server error</extracomment>
|
||||
<translation>Server error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="167"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="169"/>
|
||||
<source>oidc_authentication_token_not_found_error</source>
|
||||
<extracomment>OAuth token not found</extracomment>
|
||||
<translation>OAuth token not found</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="171"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="173"/>
|
||||
<source>oidc_authentication_token_secret_not_found_error</source>
|
||||
<extracomment>OAuth token secret not found</extracomment>
|
||||
<translation>OAuth token secret not found</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="175"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="177"/>
|
||||
<source>oidc_authentication_callback_not_verified_error</source>
|
||||
<extracomment>OAuth callback not verified</extracomment>
|
||||
<translation>OAuth callback not verified</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="186"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="188"/>
|
||||
<source>oidc_authentication_request_auth_message</source>
|
||||
<extracomment>Requesting authorization from browser</extracomment>
|
||||
<translation>Requesting authorization from browser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="217"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="219"/>
|
||||
<source>oidc_authentication_no_token_found_error</source>
|
||||
<translation>No token found</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="230"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="232"/>
|
||||
<source>oidc_authentication_request_token_message</source>
|
||||
<extracomment>Requesting access token</extracomment>
|
||||
<translation>Requesting access token</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="235"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="237"/>
|
||||
<source>oidc_authentication_refresh_token_message</source>
|
||||
<extracomment>Refreshing access token</extracomment>
|
||||
<translation>Refreshing access token</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="240"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="242"/>
|
||||
<source>oidc_authentication_request_authorization_message</source>
|
||||
<extracomment>Requesting authorization</extracomment>
|
||||
<translation>Requesting authorization</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="245"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="247"/>
|
||||
<source>oidc_authentication_request_temporary_credentials_message</source>
|
||||
<extracomment>Requesting temporary credentials</extracomment>
|
||||
<translation>Requesting temporary credentials</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="272"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="274"/>
|
||||
<source>oidc_authentication_no_auth_found_in_config_error</source>
|
||||
<extracomment>No authorization endpoint found in OpenID configuration</extracomment>
|
||||
<translation>No authorization endpoint found in OpenID configuration</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="287"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="289"/>
|
||||
<source>oidc_authentication_no_token_found_in_config_error</source>
|
||||
<extracomment>No token endpoint found in OpenID configuration</extracomment>
|
||||
<translation>No token endpoint found in OpenID configuration</translation>
|
||||
|
|
@ -5575,37 +5594,37 @@ To enable them in a commercial project, please contact us.</translation>
|
|||
<translation>Start a group call ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="118"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="121"/>
|
||||
<source>unencrypted_conversation_warning</source>
|
||||
<extracomment>This conversation is not encrypted !</extracomment>
|
||||
<translation>This conversation is not encrypted !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="436"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="407"/>
|
||||
<source>reply_to_label</source>
|
||||
<extracomment>Reply to %1</extracomment>
|
||||
<translation>Reply to %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="637"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="607"/>
|
||||
<source>shared_medias_title</source>
|
||||
<extracomment>Shared medias</extracomment>
|
||||
<translation>Shared medias</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="639"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="609"/>
|
||||
<source>shared_documents_title</source>
|
||||
<extracomment>Shared documents</extracomment>
|
||||
<translation>Shared documents</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="668"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="638"/>
|
||||
<source>forward_to_title</source>
|
||||
<extracomment>Forward to…</extracomment>
|
||||
<translation>Froward to…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="702"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="672"/>
|
||||
<source>conversations_title</source>
|
||||
<extracomment>Conversations</extracomment>
|
||||
<translation>Conversations</translation>
|
||||
|
|
@ -5658,11 +5677,6 @@ To enable them in a commercial project, please contact us.</translation>
|
|||
<extracomment>"Réunions"</extracomment>
|
||||
<translation>Meetings</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>settings_security_title</source>
|
||||
<extracomment>"Affichage" "Security"</extracomment>
|
||||
<translation type="vanished">Security / Encryption</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Settings/SettingsPage.qml" line="29"/>
|
||||
<source>settings_network_title</source>
|
||||
|
|
@ -5744,38 +5758,38 @@ To enable them in a commercial project, please contact us.</translation>
|
|||
<translation>No default account found, can't create group call</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="408"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="413"/>
|
||||
<source>group_call_error_participants_invite</source>
|
||||
<translation>Couldn't invite participants to group call</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="412"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="417"/>
|
||||
<source>group_call_error_creation</source>
|
||||
<translation>Group call couldn't be created</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="512"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="517"/>
|
||||
<source>voice_recording_duration</source>
|
||||
<extracomment>"Voice recording (%1)" : %1 is the duration formated in mm:ss</extracomment>
|
||||
<translation>Voice recording (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="585"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="591"/>
|
||||
<source>unknown_audio_device_name</source>
|
||||
<translation>Unknown device name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="520"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="525"/>
|
||||
<source>conference_invitation</source>
|
||||
<translation>Meeting invitation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="524"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="529"/>
|
||||
<source>conference_invitation_cancelled</source>
|
||||
<translation>Meeting cancellation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="522"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="527"/>
|
||||
<source>conference_invitation_updated</source>
|
||||
<translation>Meeting modification</translation>
|
||||
</message>
|
||||
|
|
|
|||
|
|
@ -39,45 +39,45 @@
|
|||
<context>
|
||||
<name>AccountCore</name>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="435"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="446"/>
|
||||
<source>drawer_menu_account_connection_status_connected</source>
|
||||
<extracomment>"Connecté"</extracomment>
|
||||
<translation>Connecté</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="438"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="449"/>
|
||||
<source>drawer_menu_account_connection_status_refreshing</source>
|
||||
<translation>En cours de rafraîchissement…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="441"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="452"/>
|
||||
<source>drawer_menu_account_connection_status_progress</source>
|
||||
<translation>Connexion…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="444"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="455"/>
|
||||
<source>drawer_menu_account_connection_status_failed</source>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="448"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="459"/>
|
||||
<source>drawer_menu_account_connection_status_cleared</source>
|
||||
<translation>Désactivé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="482"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="493"/>
|
||||
<source>manage_account_status_connected_summary</source>
|
||||
<extracomment>"Vous êtes en ligne et joignable."</extracomment>
|
||||
<translation>Vous êtes en ligne et joignable.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="485"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="496"/>
|
||||
<source>manage_account_status_failed_summary</source>
|
||||
<extracomment>"Erreur de connexion, vérifiez vos paramètres."</extracomment>
|
||||
<translation>Erreur de connexion, vérifiez vos paramètres.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="489"/>
|
||||
<location filename="../../core/account/AccountCore.cpp" line="500"/>
|
||||
<source>manage_account_status_cleared_summary</source>
|
||||
<extracomment>"Compte désactivé, vous ne recevrez ni appel ni message."</extracomment>
|
||||
<translation>Compte désactivé, vous ne recevrez ni appel ni message.</translation>
|
||||
|
|
@ -428,11 +428,6 @@
|
|||
<extracomment>"If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it."</extracomment>
|
||||
<translation>Si ce champ est rempli, l’outbound proxy sera activé automatiquement. Laissez-le vide pour le désactiver.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>account_settings_outbound_proxy_title</source>
|
||||
<extracomment>"Outbound proxy enabled"</extracomment>
|
||||
<translation type="vanished">Serveur mandataire sortant</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="157"/>
|
||||
<source>account_settings_stun_server_url_title</source>
|
||||
|
|
@ -634,103 +629,102 @@
|
|||
<context>
|
||||
<name>App</name>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="357"/>
|
||||
<location filename="../../core/App.cpp" line="356"/>
|
||||
<source>remote_provisioning_dialog</source>
|
||||
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
|
||||
<translation>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="394"/>
|
||||
<location filename="../../core/App.cpp" line="648"/>
|
||||
<location filename="../../core/App.cpp" line="393"/>
|
||||
<location filename="../../core/App.cpp" line="658"/>
|
||||
<source>info_popup_error_title</source>
|
||||
<extracomment>Error</extracomment>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="395"/>
|
||||
<location filename="../../core/App.cpp" line="650"/>
|
||||
<location filename="../../core/App.cpp" line="394"/>
|
||||
<location filename="../../core/App.cpp" line="660"/>
|
||||
<source>info_popup_configuration_failed_message</source>
|
||||
<extracomment>Remote provisioning failed : %1</extracomment>
|
||||
<translation>La configuration distante a échoué : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="644"/>
|
||||
<location filename="../../core/App.cpp" line="654"/>
|
||||
<source>configuration_error_detail</source>
|
||||
<extracomment>not reachable</extracomment>
|
||||
<translation>indisponible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="916"/>
|
||||
<location filename="../../core/App.cpp" line="926"/>
|
||||
<source>application_description</source>
|
||||
<extracomment>"A free and open source SIP video-phone."</extracomment>
|
||||
<translation>A free and open source SIP video-phone.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="918"/>
|
||||
<location filename="../../core/App.cpp" line="928"/>
|
||||
<source>command_line_arg_order</source>
|
||||
<extracomment>"Send an order to the application towards a command line"</extracomment>
|
||||
<translation>Send an order to the application towards a command line</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="922"/>
|
||||
<location filename="../../core/App.cpp" line="932"/>
|
||||
<source>command_line_option_show_help</source>
|
||||
<translation>Show this help</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="927"/>
|
||||
<location filename="../../core/App.cpp" line="937"/>
|
||||
<source>command_line_option_show_app_version</source>
|
||||
<translation>Afficher la version de l'application</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="935"/>
|
||||
<location filename="../../core/App.cpp" line="945"/>
|
||||
<source>command_line_option_config_to_fetch</source>
|
||||
<extracomment>"Specify the linphone configuration file to be fetched. It will be merged with the current configuration."</extracomment>
|
||||
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="937"/>
|
||||
<location filename="../../core/App.cpp" line="947"/>
|
||||
<source>command_line_option_config_to_fetch_arg</source>
|
||||
<extracomment>"URL, path or file"</extracomment>
|
||||
<translation>URL, path or file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="942"/>
|
||||
<location filename="../../core/App.cpp" line="952"/>
|
||||
<source>command_line_option_minimized</source>
|
||||
<translation>Minimiser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="945"/>
|
||||
<location filename="../../core/App.cpp" line="955"/>
|
||||
<source>command_line_option_log_to_stdout</source>
|
||||
<translation>Log to stdout some debug information while running</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="948"/>
|
||||
<location filename="../../core/App.cpp" line="958"/>
|
||||
<source>command_line_option_print_app_logs_only</source>
|
||||
<extracomment>"Print only logs from the application"</extracomment>
|
||||
<translation>Print only logs from the application</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1318"/>
|
||||
<location filename="../../core/App.cpp" line="1329"/>
|
||||
<source>hide_action</source>
|
||||
<extracomment>"Cacher" "Afficher"</extracomment>
|
||||
<translation>Cacher</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1318"/>
|
||||
<location filename="../../core/App.cpp" line="1329"/>
|
||||
<source>show_action</source>
|
||||
<translation>Afficher</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1333"/>
|
||||
<location filename="../../core/App.cpp" line="1344"/>
|
||||
<source>quit_action</source>
|
||||
<extracomment>"Quitter"</extracomment>
|
||||
<translation>Quitter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/App.cpp" line="1337"/>
|
||||
<location filename="../../core/App.cpp" line="1448"/>
|
||||
<source>mark_all_read_action</source>
|
||||
<extracomment>"Mark all as read"</extracomment>
|
||||
<translation>Marquer tout comme lu</translation>
|
||||
<translation>Mark all as read</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
|
@ -926,7 +920,7 @@
|
|||
<context>
|
||||
<name>CallHistoryLayout</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Container/Call/CallHistoryLayout.qml" line="116"/>
|
||||
<location filename="../../view/Control/Container/Call/CallHistoryLayout.qml" line="111"/>
|
||||
<source>meeting_info_join_title</source>
|
||||
<extracomment>"Rejoindre la réunion"</extracomment>
|
||||
<translation>Rejoindre la réunion</translation>
|
||||
|
|
@ -1003,52 +997,77 @@
|
|||
<translation>Le lien de la réunion a été copié dans le presse-papier</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CallList</name>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="104"/>
|
||||
<source>remote_group_call</source>
|
||||
<extracomment>Remote group call</extracomment>
|
||||
<translation>Appel de groupe distant</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="106"/>
|
||||
<source>local_group_call</source>
|
||||
<translation>Appel de groupe local</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="111"/>
|
||||
<source>info_popup_error_title</source>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/call/CallList.cpp" line="113"/>
|
||||
<source>info_popup_merge_calls_failed_message</source>
|
||||
<extracomment>Failed to merge calls !</extracomment>
|
||||
<translation>La fusion des appels a échoué !</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CallListView</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="55"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="59"/>
|
||||
<source>meeting</source>
|
||||
<extracomment>"Réunion</extracomment>
|
||||
<translation>Réunion</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="57"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="61"/>
|
||||
<source>call</source>
|
||||
<extracomment>"Appel"</extracomment>
|
||||
<translation>Appel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="62"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="66"/>
|
||||
<source>paused_call_or_meeting</source>
|
||||
<extracomment>"%1 en pause"</extracomment>
|
||||
<translation>%1 en pause</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="64"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="68"/>
|
||||
<source>ongoing_call_or_meeting</source>
|
||||
<extracomment>"%1 en cours"</extracomment>
|
||||
<translation>%1 en cours</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="84"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="88"/>
|
||||
<source>transfer_call_name_accessible_name</source>
|
||||
<extracomment>Transfer call %1</extracomment>
|
||||
<translation>Transférer l'appel %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="112"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="116"/>
|
||||
<source>resume_call_name_accessible_name</source>
|
||||
<extracomment>Resume %1 call</extracomment>
|
||||
<translation>Reprendre l'appel %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="114"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="118"/>
|
||||
<source>pause_call_name_accessible_name</source>
|
||||
<extracomment>Pause %1 call</extracomment>
|
||||
<translation>Mettre l'appel %1 en pause</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="137"/>
|
||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="141"/>
|
||||
<source>end_call_name_accessible_name</source>
|
||||
<extracomment>End %1 call</extracomment>
|
||||
<translation>Terminer l'appel %1</translation>
|
||||
|
|
@ -1994,13 +2013,13 @@
|
|||
<context>
|
||||
<name>ChatDroppableTextArea</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="152"/>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="154"/>
|
||||
<source>chat_view_send_area_placeholder_text</source>
|
||||
<extracomment>Say something… : placeholder text for sending message text area</extracomment>
|
||||
<translation>Dites quelque chose…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="187"/>
|
||||
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="190"/>
|
||||
<source>cannot_record_while_in_call_tooltip</source>
|
||||
<extracomment>Cannot record a message while a call is ongoing</extracomment>
|
||||
<translation>Impossible d'enregistrer un message vocal pendant un appel</translation>
|
||||
|
|
@ -2223,13 +2242,13 @@ Error</extracomment>
|
|||
<context>
|
||||
<name>ChatMessageContentModel</name>
|
||||
<message>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="104"/>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="105"/>
|
||||
<source>popup_error_title</source>
|
||||
<extracomment>Error</extracomment>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="107"/>
|
||||
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="108"/>
|
||||
<source>popup_download_error_message</source>
|
||||
<extracomment>This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it</extracomment>
|
||||
<translation>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.</translation>
|
||||
|
|
@ -4771,36 +4790,36 @@ Expiration : %1</translation>
|
|||
<context>
|
||||
<name>Notifier</name>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="309"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="310"/>
|
||||
<source>new_call_alert_accessible_name</source>
|
||||
<extracomment>New call from %1</extracomment>
|
||||
<translation>Nouvel appel de %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="361"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="363"/>
|
||||
<source>new_voice_message</source>
|
||||
<extracomment>'Voice message received!' : message to warn the user in a notofication for voice messages.</extracomment>
|
||||
<translation>Message vocal reçu !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="362"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="364"/>
|
||||
<source>new_file_message</source>
|
||||
<translation>Fichier reçu !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="365"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="367"/>
|
||||
<source>new_conference_invitation</source>
|
||||
<extracomment>'Conference invitation received!' : Notification about receiving an invitation to a conference.</extracomment>
|
||||
<translation>Nouvelle invitation à une conférence !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="385"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="387"/>
|
||||
<source>new_chat_room_messages</source>
|
||||
<extracomment>'New messages received!' Notification that warn the user of new messages.</extracomment>
|
||||
<translation>Nouveaux messages reçus !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="392"/>
|
||||
<location filename="../../core/notifier/Notifier.cpp" line="394"/>
|
||||
<source>new_message_alert_accessible_name</source>
|
||||
<extracomment>New message on chatroom %1</extracomment>
|
||||
<translation>Nouveau message sur la conversation %1</translation>
|
||||
|
|
@ -4820,102 +4839,102 @@ Expiration : %1</translation>
|
|||
<translation>Timeout : non authentifié</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="123"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="125"/>
|
||||
<source>oidc_authentication_granted_message</source>
|
||||
<extracomment>Authentication granted</extracomment>
|
||||
<translation>Authentification accordée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="130"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="132"/>
|
||||
<source>oidc_authentication_not_authenticated_message</source>
|
||||
<extracomment>Not authenticated</extracomment>
|
||||
<translation>Non authentifié</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="136"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="138"/>
|
||||
<source>oidc_authentication_refresh_message</source>
|
||||
<extracomment>Refreshing token</extracomment>
|
||||
<translation>Token en cours de rafraîchissement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="141"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="143"/>
|
||||
<source>oidc_authentication_temporary_credentials_message</source>
|
||||
<extracomment>Temporary credentials received</extracomment>
|
||||
<translation>Identifiants temporaires reçus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="159"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="161"/>
|
||||
<source>oidc_authentication_network_error</source>
|
||||
<extracomment>Network error</extracomment>
|
||||
<translation>Erreur réseau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="163"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="165"/>
|
||||
<source>oidc_authentication_server_error</source>
|
||||
<extracomment>Server error</extracomment>
|
||||
<translation>Erreur de serveur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="167"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="169"/>
|
||||
<source>oidc_authentication_token_not_found_error</source>
|
||||
<extracomment>OAuth token not found</extracomment>
|
||||
<translation>Token OAuth non trouvé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="171"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="173"/>
|
||||
<source>oidc_authentication_token_secret_not_found_error</source>
|
||||
<extracomment>OAuth token secret not found</extracomment>
|
||||
<translation>Token OAuth secret non trouvé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="175"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="177"/>
|
||||
<source>oidc_authentication_callback_not_verified_error</source>
|
||||
<extracomment>OAuth callback not verified</extracomment>
|
||||
<translation>Retour OAuth non vérifié</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="186"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="188"/>
|
||||
<source>oidc_authentication_request_auth_message</source>
|
||||
<extracomment>Requesting authorization from browser</extracomment>
|
||||
<translation>En attente d'autorisation du navigateur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="217"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="219"/>
|
||||
<source>oidc_authentication_no_token_found_error</source>
|
||||
<translation>Token non trouvé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="230"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="232"/>
|
||||
<source>oidc_authentication_request_token_message</source>
|
||||
<extracomment>Requesting access token</extracomment>
|
||||
<translation>En attente du token d'accès</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="235"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="237"/>
|
||||
<source>oidc_authentication_refresh_token_message</source>
|
||||
<extracomment>Refreshing access token</extracomment>
|
||||
<translation>Token en cours de rafraîchissement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="240"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="242"/>
|
||||
<source>oidc_authentication_request_authorization_message</source>
|
||||
<extracomment>Requesting authorization</extracomment>
|
||||
<translation>Autorisation en cours</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="245"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="247"/>
|
||||
<source>oidc_authentication_request_temporary_credentials_message</source>
|
||||
<extracomment>Requesting temporary credentials</extracomment>
|
||||
<translation>En attente d'identifiants temporaires</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="272"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="274"/>
|
||||
<source>oidc_authentication_no_auth_found_in_config_error</source>
|
||||
<extracomment>No authorization endpoint found in OpenID configuration</extracomment>
|
||||
<translation>Pas d'autorisation trouvé dans la configuration OpenID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="287"/>
|
||||
<location filename="../../model/auth/OIDCModel.cpp" line="289"/>
|
||||
<source>oidc_authentication_no_token_found_in_config_error</source>
|
||||
<extracomment>No token endpoint found in OpenID configuration</extracomment>
|
||||
<translation>Pas de token trouvé dans la configuration OpenID</translation>
|
||||
|
|
@ -5575,37 +5594,37 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
|
|||
<translation>Démarrer un appel de groupe ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="118"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="121"/>
|
||||
<source>unencrypted_conversation_warning</source>
|
||||
<extracomment>This conversation is not encrypted !</extracomment>
|
||||
<translation>Cette conversation n'est pas chiffrée !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="436"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="407"/>
|
||||
<source>reply_to_label</source>
|
||||
<extracomment>Reply to %1</extracomment>
|
||||
<translation>Réponse à %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="637"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="607"/>
|
||||
<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="639"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="609"/>
|
||||
<source>shared_documents_title</source>
|
||||
<extracomment>Shared documents</extracomment>
|
||||
<translation>Documents partagés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="668"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="638"/>
|
||||
<source>forward_to_title</source>
|
||||
<extracomment>Forward to…</extracomment>
|
||||
<translation>Transférer à…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="702"/>
|
||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="672"/>
|
||||
<source>conversations_title</source>
|
||||
<extracomment>Conversations</extracomment>
|
||||
<translation>Conversations</translation>
|
||||
|
|
@ -5658,11 +5677,6 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
|
|||
<extracomment>"Réunions"</extracomment>
|
||||
<translation>Réunions</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>settings_security_title</source>
|
||||
<extracomment>"Affichage" "Security"</extracomment>
|
||||
<translation type="vanished">Sécurité / Chiffrement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Page/Form/Settings/SettingsPage.qml" line="29"/>
|
||||
<source>settings_network_title</source>
|
||||
|
|
@ -5744,38 +5758,38 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
|
|||
<translation>Impossible de créer l'appel de groupe, le compte par défaut n'est pas défini</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="408"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="413"/>
|
||||
<source>group_call_error_participants_invite</source>
|
||||
<translation>Impossible d'inviter les participants à l'appel de groupe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="412"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="417"/>
|
||||
<source>group_call_error_creation</source>
|
||||
<translation>L'appel de groupe n'a pas pu être créé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="512"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="517"/>
|
||||
<source>voice_recording_duration</source>
|
||||
<extracomment>"Voice recording (%1)" : %1 is the duration formated in mm:ss</extracomment>
|
||||
<translation>Message vocal (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="585"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="591"/>
|
||||
<source>unknown_audio_device_name</source>
|
||||
<translation>Appareil inconnu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="520"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="525"/>
|
||||
<source>conference_invitation</source>
|
||||
<translation>Invitation à une réunion</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="524"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="529"/>
|
||||
<source>conference_invitation_cancelled</source>
|
||||
<translation>Annulation d'une réunion</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="522"/>
|
||||
<location filename="../../model/tool/ToolModel.cpp" line="527"/>
|
||||
<source>conference_invitation_updated</source>
|
||||
<translation>Modification d'une réunion</translation>
|
||||
</message>
|
||||
|
|
|
|||
|
|
@ -49,19 +49,19 @@ int main(int argc, char *argv[]) {
|
|||
#endif
|
||||
*/
|
||||
// Useful to share camera on Fullscreen (other context) or multiscreens
|
||||
qDebug() << "[Main] Setting ShareOpenGLContexts";
|
||||
lDebug() << "[Main] Setting ShareOpenGLContexts";
|
||||
QApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
|
||||
qDebug() << "[Main] Disabling VSync";
|
||||
lDebug() << "[Main] Disabling VSync";
|
||||
// Ignore vertical sync. This way, we avoid blinking on resizes(and other refresh like layouts etc.).
|
||||
auto ignoreVSync = QSurfaceFormat::defaultFormat();
|
||||
ignoreVSync.setSwapInterval(0);
|
||||
QSurfaceFormat::setDefaultFormat(ignoreVSync);
|
||||
// Disable QML cache. Avoid malformed cache.
|
||||
qDebug() << "[Main] Disabling QML disk cache";
|
||||
lDebug() << "[Main] Disabling QML disk cache";
|
||||
qputenv("QML_DISABLE_DISK_CACHE", "true");
|
||||
qDebug() << "[Main] Setting application to UTF8";
|
||||
lDebug() << "[Main] Setting application to UTF8";
|
||||
setlocale(LC_CTYPE, ".UTF8");
|
||||
qDebug() << "[Main] Creating application";
|
||||
lDebug() << "[Main] Creating application";
|
||||
auto app = QSharedPointer<App>::create(argc, argv);
|
||||
#ifdef ACCESSBILITY_WORKAROUND
|
||||
QAccessible::installUpdateHandler(DummyUpdateHandler);
|
||||
|
|
@ -69,29 +69,29 @@ int main(int argc, char *argv[]) {
|
|||
#endif
|
||||
|
||||
if (app->isSecondary()) {
|
||||
qDebug() << "[Main] Sending command from secondary application";
|
||||
lDebug() << "[Main] Sending command from secondary application";
|
||||
app->sendCommand();
|
||||
qInfo() << QStringLiteral("[Main] Running secondary app success. Kill it now.");
|
||||
app->clean();
|
||||
cleanStream();
|
||||
return EXIT_SUCCESS;
|
||||
} else {
|
||||
qDebug() << "[Main] Initializing core for primary application";
|
||||
lDebug() << "[Main] Initializing core for primary application";
|
||||
app->initCore();
|
||||
qDebug() << "[Main] Preparing application's connections";
|
||||
lDebug() << "[Main] Preparing application's connections";
|
||||
app->setSelf(app);
|
||||
}
|
||||
|
||||
int result = 0;
|
||||
do {
|
||||
qDebug() << "[Main] Sending command from primary application";
|
||||
lDebug() << "[Main] Sending command from primary application";
|
||||
app->sendCommand();
|
||||
qInfo() << "[Main] Running application";
|
||||
lInfo() << "[Main] Running application";
|
||||
result = app->exec();
|
||||
} while (result == (int)App::StatusCode::gRestartCode);
|
||||
QString message = "[Main] Exiting app with the code : " + QString::number(result);
|
||||
if (!result) qInfo() << message;
|
||||
else qWarning() << message;
|
||||
if (!result) lInfo() << message;
|
||||
else lWarning() << message;
|
||||
app->clean();
|
||||
app = nullptr;
|
||||
cleanStream();
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ void AccountManager::registerNewAccount(const QString &username,
|
|||
const std::shared_ptr<const linphone::AccountManagerServicesRequest> &request, const std::string &data) {
|
||||
if (request->getType() == linphone::AccountManagerServicesRequest::Type::AccountCreationRequestToken) {
|
||||
QString verifyTokenUrl = Utils::coreStringToAppString(data);
|
||||
qDebug() << "[AccountManager] request token succeed" << verifyTokenUrl;
|
||||
lInfo() << "[AccountManager] request token succeed" << verifyTokenUrl;
|
||||
|
||||
QDesktopServices::openUrl(verifyTokenUrl);
|
||||
auto creationToken = verifyTokenUrl.mid(verifyTokenUrl.lastIndexOf("/") + 1);
|
||||
|
|
@ -206,7 +206,7 @@ void AccountManager::registerNewAccount(const QString &username,
|
|||
|
||||
} else if (request->getType() == linphone::AccountManagerServicesRequest::Type::
|
||||
AccountCreationTokenFromAccountCreationRequestToken) {
|
||||
qDebug() << "[AccountManager] request token conversion succeed" << data;
|
||||
lInfo() << "[AccountManager] request token conversion succeed" << data;
|
||||
emit tokenConversionSucceed(Utils::coreStringToAppString(data));
|
||||
timer.stop();
|
||||
mAccountManagerServicesModel->createAccountUsingToken(Utils::appStringToCoreString(username),
|
||||
|
|
@ -225,24 +225,24 @@ void AccountManager::registerNewAccount(const QString &username,
|
|||
createdSipIdentityAddress->getDomain() // Domain.
|
||||
));
|
||||
if (type == RegisterType::Email) {
|
||||
qDebug() << "[AccountManager] creation succeed, email verification" << registerAddress;
|
||||
lInfo() << "[AccountManager] creation succeed, email verification" << registerAddress;
|
||||
mAccountManagerServicesModel->linkEmailByEmail(
|
||||
ToolModel::interpretUrl(Utils::coreStringToAppString(data)),
|
||||
Utils::appStringToCoreString(registerAddress));
|
||||
} else {
|
||||
qDebug() << "[AccountManager] creation succeed, sms verification" << registerAddress;
|
||||
lInfo() << "[AccountManager] creation succeed, sms verification" << registerAddress;
|
||||
mAccountManagerServicesModel->linkPhoneNumberBySms(
|
||||
ToolModel::interpretUrl(Utils::coreStringToAppString(data)),
|
||||
Utils::appStringToCoreString(registerAddress));
|
||||
}
|
||||
} else if (request->getType() ==
|
||||
linphone::AccountManagerServicesRequest::Type::SendEmailLinkingCodeByEmail) {
|
||||
qDebug() << "[AccountManager] send email succeed, link account using code";
|
||||
lInfo() << "[AccountManager] send email succeed, link account using code";
|
||||
emit newAccountCreationSucceed(mCreatedSipAddress, type, registerAddress);
|
||||
mCreatedSipAddress.clear();
|
||||
} else if (request->getType() ==
|
||||
linphone::AccountManagerServicesRequest::Type::SendPhoneNumberLinkingCodeBySms) {
|
||||
qDebug() << "[AccountManager] send phone number succeed, link account using code";
|
||||
lInfo() << "[AccountManager] send phone number succeed, link account using code";
|
||||
emit newAccountCreationSucceed(mCreatedSipAddress, type, registerAddress);
|
||||
mCreatedSipAddress.clear();
|
||||
}
|
||||
|
|
@ -252,11 +252,11 @@ void AccountManager::registerNewAccount(const QString &username,
|
|||
[this](const std::shared_ptr<const linphone::AccountManagerServicesRequest> &request, int statusCode,
|
||||
const std::string &errorMessage, const std::shared_ptr<const linphone::Dictionary> ¶meterErrors) {
|
||||
if (request->getType() == linphone::AccountManagerServicesRequest::Type::AccountCreationRequestToken) {
|
||||
qDebug() << "[AccountManager] error creating request token :" << errorMessage;
|
||||
lInfo() << "[AccountManager] error creating request token :" << errorMessage;
|
||||
emit registerNewAccountFailed(Utils::coreStringToAppString(errorMessage));
|
||||
} else if (request->getType() == linphone::AccountManagerServicesRequest::Type::
|
||||
AccountCreationTokenFromAccountCreationRequestToken) {
|
||||
qDebug() << "[AccountManager] error converting token into creation token :" << errorMessage;
|
||||
lInfo() << "[AccountManager] error converting token into creation token :" << errorMessage;
|
||||
if (parameterErrors) {
|
||||
timer.stop();
|
||||
emit registerNewAccountFailed(Utils::coreStringToAppString(errorMessage));
|
||||
|
|
@ -264,7 +264,7 @@ void AccountManager::registerNewAccount(const QString &username,
|
|||
timer.start();
|
||||
}
|
||||
} else if (request->getType() == linphone::AccountManagerServicesRequest::Type::CreateAccountUsingToken) {
|
||||
qDebug() << "[AccountManager] error creating account :" << errorMessage;
|
||||
lInfo() << "[AccountManager] error creating account :" << errorMessage;
|
||||
if (parameterErrors) {
|
||||
for (const std::string &key : parameterErrors->getKeys()) {
|
||||
emit errorInField(Utils::coreStringToAppString(key),
|
||||
|
|
@ -275,7 +275,7 @@ void AccountManager::registerNewAccount(const QString &username,
|
|||
}
|
||||
} else if (request->getType() ==
|
||||
linphone::AccountManagerServicesRequest::Type::SendEmailLinkingCodeByEmail) {
|
||||
qDebug() << "[AccountManager] error sending code to email" << errorMessage;
|
||||
lInfo() << "[AccountManager] error sending code to email" << errorMessage;
|
||||
if (parameterErrors) {
|
||||
for (const std::string &key : parameterErrors->getKeys()) {
|
||||
emit errorInField(Utils::coreStringToAppString(key),
|
||||
|
|
@ -286,7 +286,7 @@ void AccountManager::registerNewAccount(const QString &username,
|
|||
}
|
||||
} else if (request->getType() ==
|
||||
linphone::AccountManagerServicesRequest::Type::SendPhoneNumberLinkingCodeBySms) {
|
||||
qDebug() << "[AccountManager] error sending code to phone number" << errorMessage;
|
||||
lInfo() << "[AccountManager] error sending code to phone number" << errorMessage;
|
||||
if (parameterErrors) {
|
||||
for (const std::string &key : parameterErrors->getKeys()) {
|
||||
emit errorInField(Utils::coreStringToAppString(key),
|
||||
|
|
@ -320,10 +320,10 @@ void AccountManager::linkNewAccountUsingCode(const QString &code,
|
|||
mAccountManagerServicesModel.get(), &AccountManagerServicesModel::requestSuccessfull, this,
|
||||
[this](const std::shared_ptr<const linphone::AccountManagerServicesRequest> &request, const std::string &data) {
|
||||
if (request->getType() == linphone::AccountManagerServicesRequest::Type::LinkEmailUsingCode) {
|
||||
qDebug() << "[AccountManager] link email to account succeed" << data;
|
||||
lInfo() << "[AccountManager] link email to account succeed" << data;
|
||||
emit linkingNewAccountWithCodeSucceed();
|
||||
} else if (request->getType() == linphone::AccountManagerServicesRequest::Type::LinkPhoneNumberUsingCode) {
|
||||
qDebug() << "[AccountManager] link phone number to account succeed" << data;
|
||||
lInfo() << "[AccountManager] link phone number to account succeed" << data;
|
||||
emit linkingNewAccountWithCodeSucceed();
|
||||
}
|
||||
});
|
||||
|
|
@ -332,9 +332,9 @@ void AccountManager::linkNewAccountUsingCode(const QString &code,
|
|||
[this](const std::shared_ptr<const linphone::AccountManagerServicesRequest> &request, int statusCode,
|
||||
const std::string &errorMessage, const std::shared_ptr<const linphone::Dictionary> ¶meterErrors) {
|
||||
if (request->getType() == linphone::AccountManagerServicesRequest::Type::LinkEmailUsingCode) {
|
||||
qDebug() << "[AccountManager] error linking email to account" << errorMessage;
|
||||
lInfo() << "[AccountManager] error linking email to account" << errorMessage;
|
||||
} else if (request->getType() == linphone::AccountManagerServicesRequest::Type::LinkPhoneNumberUsingCode) {
|
||||
qDebug() << "[AccountManager] error linking phone number to account" << errorMessage;
|
||||
lInfo() << "[AccountManager] error linking phone number to account" << errorMessage;
|
||||
}
|
||||
emit linkingNewAccountWithCodeFailed(Utils::coreStringToAppString(errorMessage));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
|
|||
qDebug() << "OIDC Redirect URI Port set to [" << port << "]";
|
||||
auto replyHandler = new OAuthHttpServerReplyHandler(port, this);
|
||||
if (!replyHandler->isListening()) {
|
||||
qWarning() << "OAuthHttpServerReplyHandler is not listening on port" << port;
|
||||
lWarning() << log().arg("OAuthHttpServerReplyHandler is not listening on port") << port;
|
||||
emit requestFailed(tr("OAuthHttpServerReplyHandler is not listening"));
|
||||
emit finished();
|
||||
return;
|
||||
|
|
@ -99,7 +99,7 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
|
|||
mTimeout.setInterval(1000 * 60 * 2); // 2minutes
|
||||
|
||||
connect(&mTimeout, &QTimer::timeout, [this]() {
|
||||
qWarning() << log().arg("Timeout reached for OpenID connection.");
|
||||
lWarning() << log().arg("Timeout reached for OpenID connection.");
|
||||
dynamic_cast<OAuthHttpServerReplyHandler *>(mOidc.replyHandler())->close();
|
||||
CoreModel::getInstance()->getCore()->abortAuthentication(mAuthInfo);
|
||||
//: Timeout: Not authenticated
|
||||
|
|
@ -108,11 +108,13 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
|
|||
});
|
||||
connect(mOidc.networkAccessManager(), &QNetworkAccessManager::authenticationRequired,
|
||||
[=](QNetworkReply *reply, QAuthenticator *authenticator) {
|
||||
lDebug() << "authenticationRequired url [" << reply->url() << "]";
|
||||
lInfo() << "authenticationRequired url [" << reply->url() << "]";
|
||||
if (mOidc.clientIdentifierSharedKey().isEmpty() == false) {
|
||||
authenticator->setUser(mOidc.clientIdentifier());
|
||||
authenticator->setPassword(mOidc.clientIdentifierSharedKey());
|
||||
} else lWarning() << "client secret not found for client id [" << mOidc.clientIdentifier() << "]";
|
||||
} else
|
||||
lWarning() << log().arg("client secret not found for client id [") << mOidc.clientIdentifier()
|
||||
<< "]";
|
||||
});
|
||||
|
||||
connect(&mOidc, &QOAuth2AuthorizationCodeFlow::statusChanged, [=](QAbstractOAuth::Status status) {
|
||||
|
|
@ -152,7 +154,7 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
|
|||
const QMetaObject metaObject = QAbstractOAuth::staticMetaObject;
|
||||
int index = metaObject.indexOfEnumerator("Error");
|
||||
QMetaEnum metaEnum = metaObject.enumerator(index);
|
||||
qWarning() << "RequestFailed:" << metaEnum.valueToKey(static_cast<int>(error));
|
||||
lWarning() << log().arg("RequestFailed:") << metaEnum.valueToKey(static_cast<int>(error));
|
||||
switch (error) {
|
||||
case QAbstractOAuth::Error::NetworkError:
|
||||
//: Network error
|
||||
|
|
@ -213,7 +215,7 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
|
|||
|
||||
} else {
|
||||
mIdToken.clear();
|
||||
qWarning() << "No ID Token or Access Token found in the tokens.";
|
||||
lWarning() << "No ID Token or Access Token found in the tokens.";
|
||||
emit requestFailed(tr("oidc_authentication_no_token_found_error"));
|
||||
emit finished();
|
||||
}
|
||||
|
|
@ -267,7 +269,7 @@ void OIDCModel::openIdConfigReceived() {
|
|||
if (rootArray.contains("authorization_endpoint")) {
|
||||
mOidc.setAuthorizationUrl(QUrl(rootArray["authorization_endpoint"].toString()));
|
||||
} else {
|
||||
qWarning() << "No authorization endpoint found in OpenID configuration";
|
||||
lWarning() << log().arg("No authorization endpoint found in OpenID configuration");
|
||||
//: No authorization endpoint found in OpenID configuration
|
||||
emit requestFailed(tr("oidc_authentication_no_auth_found_in_config_error"));
|
||||
emit finished();
|
||||
|
|
@ -282,7 +284,7 @@ void OIDCModel::openIdConfigReceived() {
|
|||
mAuthInfo->setTokenEndpointUri(
|
||||
Utils::appStringToCoreString(QUrl(rootArray["token_endpoint"].toString()).toString()));
|
||||
} else {
|
||||
qWarning() << "No token endpoint found in OpenID configuration";
|
||||
lWarning() << log().arg("No token endpoint found in OpenID configuration");
|
||||
//: No token endpoint found in OpenID configuration
|
||||
emit requestFailed(tr("oidc_authentication_no_token_found_in_config_error"));
|
||||
emit finished();
|
||||
|
|
@ -307,7 +309,7 @@ void OIDCModel::setBearers() {
|
|||
mAuthInfo->setRefreshToken(refreshBearer);
|
||||
|
||||
} else {
|
||||
qWarning() << "No refresh token found";
|
||||
lWarning() << log().arg("No refresh token found");
|
||||
}
|
||||
CoreModel::getInstance()->getCore()->addAuthInfo(mAuthInfo);
|
||||
emit CoreModel::getInstance()->bearerAccountAdded();
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ void CallModel::setPaused(bool paused) {
|
|||
void CallModel::transferTo(const std::shared_ptr<linphone::Address> &address) {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
if (mMonitor->transferTo(address) == -1)
|
||||
qWarning() << log()
|
||||
lWarning() << log()
|
||||
.arg(QStringLiteral("Unable to transfer: `%1`."))
|
||||
.arg(Utils::coreStringToAppString(address->asStringUriOnly()));
|
||||
}
|
||||
|
|
@ -105,7 +105,7 @@ void CallModel::transferTo(const std::shared_ptr<linphone::Address> &address) {
|
|||
void CallModel::transferToAnother(const std::shared_ptr<linphone::Call> &call) {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
if (mMonitor->transferToAnother(call) == -1)
|
||||
qWarning() << log()
|
||||
lWarning() << log()
|
||||
.arg(QStringLiteral("Unable to transfer: `%1`."))
|
||||
.arg(Utils::coreStringToAppString(call->getRemoteAddress()->asStringUriOnly()));
|
||||
}
|
||||
|
|
@ -331,14 +331,14 @@ void CallModel::setVideoSourceDescriptorModel(std::shared_ptr<VideoSourceDescrip
|
|||
|
||||
void CallModel::sendDtmf(const QString &dtmf) {
|
||||
const char key = dtmf.constData()[0].toLatin1();
|
||||
qInfo() << QStringLiteral("Send dtmf: `%1`.").arg(key);
|
||||
lInfo() << log().arg("Send dtmf: `%1`.").arg(key);
|
||||
if (mMonitor) mMonitor->sendDtmf(key);
|
||||
CoreModel::getInstance()->getCore()->playDtmf(key, gDtmfSoundDelay);
|
||||
}
|
||||
|
||||
void CallModel::updateCallErrorFromReason(linphone::Reason reason) {
|
||||
QString error;
|
||||
qDebug() << "call Error reason" << (int)reason;
|
||||
lDebug() << log().arg("call Error reason") << (int)reason;
|
||||
switch (reason) {
|
||||
case linphone::Reason::None:
|
||||
error = "";
|
||||
|
|
@ -391,7 +391,7 @@ void CallModel::updateCallErrorFromReason(linphone::Reason reason) {
|
|||
break;
|
||||
}
|
||||
|
||||
if (!error.isEmpty()) qInfo() << QStringLiteral("Call terminated with error (%1):").arg(error) << this;
|
||||
if (!error.isEmpty()) lInfo() << log().arg("Call terminated with error (%1):").arg(error) << this;
|
||||
emit errorMessageChanged(error);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ void ChatMessageContentModel::downloadFile(const QString &name) {
|
|||
case linphone::ChatMessage::State::FileTransferInProgress:
|
||||
return;
|
||||
default:
|
||||
qWarning() << QStringLiteral("Wrong message state when requesting downloading, state=.")
|
||||
lWarning() << QStringLiteral("Wrong message state when requesting downloading, state=.")
|
||||
<< LinphoneEnums::fromLinphone(mChatMessageModel->getState());
|
||||
}
|
||||
bool soFarSoGood;
|
||||
|
|
@ -93,12 +93,13 @@ void ChatMessageContentModel::downloadFile(const QString &name) {
|
|||
QStringLiteral("%1%2").arg(App::getInstance()->getSettings()->getDownloadFolder()).arg(name), &soFarSoGood);
|
||||
|
||||
if (!soFarSoGood) {
|
||||
qWarning() << QStringLiteral("Unable to create safe file path for: %1.").arg(name);
|
||||
lWarning() << QStringLiteral("Unable to create safe file path for: %1.").arg(name);
|
||||
return;
|
||||
}
|
||||
mContent->setFilePath(Utils::appStringToCoreString(safeFilePath));
|
||||
|
||||
if (!mContent->isFileTransfer()) {
|
||||
lWarning() << QStringLiteral("file transfer is not available");
|
||||
Utils::showInformationPopup(
|
||||
//: Error
|
||||
tr("popup_error_title"),
|
||||
|
|
@ -107,7 +108,7 @@ void ChatMessageContentModel::downloadFile(const QString &name) {
|
|||
tr("popup_download_error_message"), false);
|
||||
} else {
|
||||
if (!mChatMessageModel->getMonitor()->downloadContent(mContent))
|
||||
qWarning() << QStringLiteral("Unable to download file of entry %1.").arg(name);
|
||||
lWarning() << QStringLiteral("Unable to download file of entry %1.").arg(name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ QString CliModel::parseFunctionName(const QString &command, bool isOptional) {
|
|||
// mRegExpFunctionName.indexIn(command.toLower());
|
||||
// if (mRegExpFunctionName.pos(1) == -1) {
|
||||
if (!match.hasMatch()) {
|
||||
if (!isOptional) qWarning() << QStringLiteral("Unable to parse function name of command: `%1`.").arg(command);
|
||||
if (!isOptional) lWarning() << QStringLiteral("Unable to parse function name of command: `%1`.").arg(command);
|
||||
return QString("");
|
||||
}
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ QString CliModel::parseFunctionName(const QString &command, bool isOptional) {
|
|||
|
||||
const QString functionName = texts[1];
|
||||
if (!mCommands.contains(functionName)) {
|
||||
if (!isOptional) qWarning() << QStringLiteral("This command doesn't exist: `%1`.").arg(functionName);
|
||||
if (!isOptional) lWarning() << QStringLiteral("This command doesn't exist: `%1`.").arg(functionName);
|
||||
return QString("");
|
||||
}
|
||||
|
||||
|
|
@ -344,7 +344,7 @@ void CliModel::executeCommand(const QString &command) { //, CommandFormat *forma
|
|||
const QString &functionName = parseFunctionName(command, false);
|
||||
const QString configURI = QString(EXECUTABLE_NAME).toLower() + "-config";
|
||||
if (!functionName.isEmpty()) { // It is a CLI
|
||||
qInfo() << QStringLiteral("Detecting cli command: `%1`…").arg(command);
|
||||
lInfo() << log().arg("Detecting cli command: `%1`…").arg(command);
|
||||
QHash<QString, QString> args = parseArgs(command);
|
||||
QHash<QString, QString> argsToProcess;
|
||||
for (auto it = args.begin(); it != args.end(); ++it) {
|
||||
|
|
@ -410,7 +410,7 @@ void CliModel::executeCommand(const QString &command) { //, CommandFormat *forma
|
|||
address = linphone::Factory::get()->createAddress(
|
||||
Utils::appStringToCoreString(transformedCommand)); // Test if command is an address
|
||||
// if (format) *format = UriFormat;
|
||||
qInfo() << QStringLiteral("Detecting URI command: `%1`…").arg(command);
|
||||
lInfo() << log().arg("Detecting URI command: `%1`…").arg(command);
|
||||
QString functionName;
|
||||
if (address) {
|
||||
functionName = Utils::coreStringToAppString(address->getHeader("method")).isEmpty()
|
||||
|
|
@ -429,10 +429,10 @@ void CliModel::executeCommand(const QString &command) { //, CommandFormat *forma
|
|||
}
|
||||
functionName = functionName.toLower();
|
||||
if (functionName.isEmpty()) {
|
||||
qWarning() << QStringLiteral("There is no method set in `%1`.").arg(command);
|
||||
lWarning() << log().arg("There is no method set in `%1`.").arg(command);
|
||||
return;
|
||||
} else if (!mCommands.contains(functionName)) {
|
||||
qWarning() << QStringLiteral("This command doesn't exist: `%1`.").arg(functionName);
|
||||
lWarning() << log().arg("This command doesn't exist: `%1`.").arg(functionName);
|
||||
return;
|
||||
}
|
||||
QHash<QString, QString> headers;
|
||||
|
|
|
|||
|
|
@ -183,20 +183,20 @@ void ConferenceModel::onActiveSpeakerParticipantDevice(
|
|||
|
||||
void ConferenceModel::onParticipantAdded(const std::shared_ptr<linphone::Conference> &conference,
|
||||
const std::shared_ptr<linphone::Participant> &participant) {
|
||||
lDebug() << "onParticipant Added" << participant->getAddress()->asStringUriOnly();
|
||||
lInfo() << "onParticipant Added" << participant->getAddress()->asStringUriOnly();
|
||||
emit participantAdded(participant);
|
||||
emit participantDeviceCountChanged(conference, getParticipantDeviceCount());
|
||||
}
|
||||
void ConferenceModel::onParticipantRemoved(const std::shared_ptr<linphone::Conference> &conference,
|
||||
const std::shared_ptr<const linphone::Participant> &participant) {
|
||||
lDebug() << "onParticipant Removed" << participant->getAddress()->asStringUriOnly();
|
||||
lInfo() << "onParticipant Removed" << participant->getAddress()->asStringUriOnly();
|
||||
emit participantRemoved(participant);
|
||||
emit participantDeviceCountChanged(conference, getParticipantDeviceCount());
|
||||
}
|
||||
void ConferenceModel::onParticipantDeviceAdded(const std::shared_ptr<linphone::Conference> &conference,
|
||||
const std::shared_ptr<linphone::ParticipantDevice> &participantDevice) {
|
||||
lDebug() << "onParticipantDeviceAdded";
|
||||
lDebug() << "Me devices : " << conference->getMe()->getDevices().size();
|
||||
lInfo() << "onParticipantDeviceAdded";
|
||||
lInfo() << "Me devices : " << conference->getMe()->getDevices().size();
|
||||
if (conference->getMe()->getDevices().size() > 1)
|
||||
for (auto d : conference->getMe()->getDevices())
|
||||
lDebug() << "\t--> " << d->getAddress()->asString().c_str();
|
||||
|
|
@ -222,13 +222,13 @@ void ConferenceModel::onParticipantDeviceStateChanged(const std::shared_ptr<linp
|
|||
}
|
||||
void ConferenceModel::onParticipantAdminStatusChanged(const std::shared_ptr<linphone::Conference> &conference,
|
||||
const std::shared_ptr<const linphone::Participant> &participant) {
|
||||
lDebug() << "onParticipantAdminStatusChanged";
|
||||
lInfo() << "onParticipantAdminStatusChanged";
|
||||
emit participantAdminStatusChanged(participant);
|
||||
}
|
||||
void ConferenceModel::onParticipantDeviceMediaCapabilityChanged(
|
||||
const std::shared_ptr<linphone::Conference> &conference,
|
||||
const std::shared_ptr<const linphone::ParticipantDevice> &participantDevice) {
|
||||
lDebug() << "onParticipantDeviceMediaCapabilityChanged: "
|
||||
lInfo() << "onParticipantDeviceMediaCapabilityChanged: "
|
||||
<< (int)participantDevice->getStreamCapability(linphone::StreamType::Video)
|
||||
<< ". Device: " << participantDevice->getAddress()->asString().c_str();
|
||||
emit participantDeviceMediaCapabilityChanged(participantDevice);
|
||||
|
|
@ -236,7 +236,7 @@ void ConferenceModel::onParticipantDeviceMediaCapabilityChanged(
|
|||
void ConferenceModel::onParticipantDeviceMediaAvailabilityChanged(
|
||||
const std::shared_ptr<linphone::Conference> &conference,
|
||||
const std::shared_ptr<const linphone::ParticipantDevice> &participantDevice) {
|
||||
lDebug() << "onParticipantDeviceMediaAvailabilityChanged: "
|
||||
lInfo() << "onParticipantDeviceMediaAvailabilityChanged: "
|
||||
<< (int)participantDevice->getStreamAvailability(linphone::StreamType::Video)
|
||||
<< ". Device: " << participantDevice->getAddress()->asString().c_str();
|
||||
emit participantDeviceMediaAvailabilityChanged(participantDevice);
|
||||
|
|
@ -254,7 +254,7 @@ void ConferenceModel::onParticipantDeviceScreenSharingChanged(
|
|||
const std::shared_ptr<linphone::Conference> &conference,
|
||||
const std::shared_ptr<const linphone::ParticipantDevice> &device,
|
||||
bool enabled) {
|
||||
qDebug() << "onParticipantDeviceScreenSharingChanged: " << device->getAddress()->asString().c_str()
|
||||
lInfo() << log().arg("onParticipantDeviceScreenSharingChanged: ") << device->getAddress()->asString().c_str()
|
||||
<< ". Enabled:" << enabled;
|
||||
emit participantDeviceScreenSharingChanged(device, enabled);
|
||||
if (ToolModel::isLocal(mMonitor, device)) {
|
||||
|
|
@ -265,7 +265,7 @@ void ConferenceModel::onParticipantDeviceScreenSharingChanged(
|
|||
|
||||
void ConferenceModel::onStateChanged(const std::shared_ptr<linphone::Conference> &conference,
|
||||
linphone::Conference::State newState) {
|
||||
lDebug() << log().arg("onStateChanged:") << (int)newState;
|
||||
lInfo() << log().arg("onStateChanged:") << (int)newState;
|
||||
if (newState == linphone::Conference::State::Created) {
|
||||
emit participantDeviceCountChanged(conference, mMonitor->getParticipantDeviceList().size());
|
||||
if (mMonitor->getScreenSharingParticipant()) emit isScreenSharingEnabledChanged(true);
|
||||
|
|
@ -275,7 +275,7 @@ void ConferenceModel::onStateChanged(const std::shared_ptr<linphone::Conference>
|
|||
}
|
||||
void ConferenceModel::onSubjectChanged(const std::shared_ptr<linphone::Conference> &conference,
|
||||
const std::string &subject) {
|
||||
lDebug() << "onSubjectChanged";
|
||||
lInfo() << "onSubjectChanged";
|
||||
emit subjectChanged(subject);
|
||||
}
|
||||
void ConferenceModel::onAudioDeviceChanged(const std::shared_ptr<linphone::Conference> &conference,
|
||||
|
|
@ -286,7 +286,7 @@ void ConferenceModel::onAudioDeviceChanged(const std::shared_ptr<linphone::Confe
|
|||
void ConferenceModel::onIsScreenSharingEnabledChanged() {
|
||||
auto call = mMonitor->getCall();
|
||||
std::shared_ptr<linphone::CallParams> params = CoreModel::getInstance()->getCore()->createCallParams(call);
|
||||
lDebug() << log().arg("Old Layout=%1").arg((int)params->getConferenceVideoLayout());
|
||||
lInfo() << log().arg("Old Layout=%1").arg((int)params->getConferenceVideoLayout());
|
||||
if (params->getConferenceVideoLayout() == linphone::Conference::Layout::Grid && params->videoEnabled()) {
|
||||
params->setConferenceVideoLayout(linphone::Conference::Layout::ActiveSpeaker);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,11 @@ void MagicSearchModel::search(QString filter,
|
|||
// sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::ChatRooms;
|
||||
// sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::ConferencesInfo;
|
||||
}
|
||||
qInfo() << log().arg("Searching ") << filter << " from " << sourceFlags << " with limit " << maxResults;
|
||||
if (((sourceFlags & (int)LinphoneEnums::MagicSearchSource::RemoteCardDAV) > 0) &&
|
||||
SettingsModel::getInstance()->getCardDAVMinCharResearch() > filter.size()) {
|
||||
sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::RemoteCardDAV;
|
||||
}
|
||||
lInfo() << log().arg("Searching ") << filter << " from " << sourceFlags << " with limit " << maxResults;
|
||||
mMonitor->getContactsListAsync(filter != "*" ? Utils::appStringToCoreString(filter) : "", "", sourceFlags,
|
||||
LinphoneEnums::toLinphone(aggregation));
|
||||
}
|
||||
|
|
@ -80,7 +84,7 @@ void MagicSearchModel::setMaxResults(int maxResults) {
|
|||
|
||||
void MagicSearchModel::onSearchResultsReceived(const std::shared_ptr<linphone::MagicSearch> &magicSearch) {
|
||||
auto results = magicSearch->getLastSearch();
|
||||
qInfo() << log().arg("SDK send callback: onSearchResultsReceived : %1 results.").arg(results.size());
|
||||
lInfo() << log().arg("SDK send callback: onSearchResultsReceived : %1 results.").arg(results.size());
|
||||
auto appFriends = ToolModel::getAppFriendList();
|
||||
auto ldapFriends = ToolModel::getLdapFriendList();
|
||||
emit searchResultsReceived(results);
|
||||
|
|
|
|||
|
|
@ -156,18 +156,18 @@ void SettingsModel::startCaptureGraph() {
|
|||
// Media cards must not be used twice (capture card + call) else we will get latencies issues and bad echo
|
||||
// calibrations in call.
|
||||
if (!getIsInCall() && !mSimpleCaptureGraph) {
|
||||
qDebug() << log().arg("Starting capture graph [%1]").arg(mCaptureGraphListenerCount);
|
||||
lDebug() << log().arg("Starting capture graph [%1]").arg(mCaptureGraphListenerCount);
|
||||
createCaptureGraph();
|
||||
} else qDebug() << log().arg("Adding capture graph reference [%1]").arg(mCaptureGraphListenerCount);
|
||||
} else lDebug() << log().arg("Adding capture graph reference [%1]").arg(mCaptureGraphListenerCount);
|
||||
++mCaptureGraphListenerCount;
|
||||
}
|
||||
void SettingsModel::stopCaptureGraph() {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
if (--mCaptureGraphListenerCount == 0) {
|
||||
qDebug() << log().arg("Stopping capture graph [%1]").arg(mCaptureGraphListenerCount);
|
||||
lDebug() << log().arg("Stopping capture graph [%1]").arg(mCaptureGraphListenerCount);
|
||||
deleteCaptureGraph();
|
||||
} else if (mCaptureGraphListenerCount > 0)
|
||||
qDebug() << log().arg("Removing capture graph reference [%1]").arg(mCaptureGraphListenerCount);
|
||||
lDebug() << log().arg("Removing capture graph reference [%1]").arg(mCaptureGraphListenerCount);
|
||||
else qCritical() << log().arg("Removing too much capture graph reference [%1]").arg(mCaptureGraphListenerCount);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ bool SoundPlayerModel::play(QString source, bool fromStart) {
|
|||
if (source == "") return false;
|
||||
if (fromStart) stop();
|
||||
if (!open(source)) {
|
||||
qWarning() << QStringLiteral("Unable to open: `%1`").arg(source);
|
||||
lWarning() << QStringLiteral("[SoundPlayerModel] %1 Unable to open: `%2`").arg(Q_FUNC_INFO).arg(source);
|
||||
//: Unable to open: `%1`
|
||||
emit errorChanged(QString("sound_player_open_error").arg(source));
|
||||
return false;
|
||||
|
|
@ -102,7 +102,7 @@ bool SoundPlayerModel::play(QString source, bool fromStart) {
|
|||
|
||||
void SoundPlayerModel::seek(QString source, int offset) {
|
||||
if (!open(source)) {
|
||||
qWarning() << QStringLiteral("Unable to open: `%1`").arg(source);
|
||||
lWarning() << QStringLiteral("[SoundPlayerModel] %1 Unable to open: `%2`").arg(Q_FUNC_INFO).arg(source);
|
||||
//: Unable to open: `%1`
|
||||
emit errorChanged(QString("sound_player_open_error").arg(source));
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -373,7 +373,7 @@ bool ToolModel::createCall(const QString &sipAddress,
|
|||
*/
|
||||
}
|
||||
|
||||
bool ToolModel::createGroupCall(QString subject, const std::list<QString> &participantAddresses, QString *message) {
|
||||
std::shared_ptr<linphone::Conference> ToolModel::createConference(QString subject, QString *message) {
|
||||
auto core = CoreModel::getInstance()->getCore();
|
||||
auto conferenceParams = core->createConferenceParams(nullptr);
|
||||
conferenceParams->enableVideo(true);
|
||||
|
|
@ -381,7 +381,7 @@ bool ToolModel::createGroupCall(QString subject, const std::list<QString> &parti
|
|||
if (!account) {
|
||||
qWarning() << "No default account found, can't create group call";
|
||||
*message = tr("group_call_error_no_account");
|
||||
return false;
|
||||
return nullptr;
|
||||
}
|
||||
conferenceParams->setAccount(account);
|
||||
conferenceParams->setSubject(Utils::appStringToCoreString(subject));
|
||||
|
|
@ -392,8 +392,13 @@ bool ToolModel::createGroupCall(QString subject, const std::list<QString> &parti
|
|||
|
||||
conferenceParams->enableChat(true);
|
||||
|
||||
auto conference = core->createConferenceWithParams(conferenceParams);
|
||||
return core->createConferenceWithParams(conferenceParams);
|
||||
}
|
||||
|
||||
bool ToolModel::createGroupCall(QString subject, const std::list<QString> &participantAddresses, QString *message) {
|
||||
auto conference = createConference(subject, message);
|
||||
if (conference) {
|
||||
auto core = CoreModel::getInstance()->getCore();
|
||||
auto callParams = core->createCallParams(nullptr);
|
||||
callParams->enableVideo(true);
|
||||
callParams->setVideoDirection(linphone::MediaDirection::RecvOnly);
|
||||
|
|
@ -409,7 +414,7 @@ bool ToolModel::createGroupCall(QString subject, const std::list<QString> &parti
|
|||
}
|
||||
} else {
|
||||
qWarning() << "Could not create group call";
|
||||
*message = tr("group_call_error_creation");
|
||||
if (message->isEmpty()) *message = tr("group_call_error_creation");
|
||||
}
|
||||
return conference != nullptr;
|
||||
}
|
||||
|
|
@ -534,7 +539,7 @@ QString ToolModel::getMessageFromContent(std::list<std::shared_ptr<linphone::Con
|
|||
void ToolModel::loadDownloadedCodecs() {
|
||||
mustBeInLinphoneThread(sLog().arg(Q_FUNC_INFO));
|
||||
#if defined(Q_OS_LINUX) || defined(Q_OS_WIN)
|
||||
qInfo() << QStringLiteral("Loading downloaded codecs in folder %1…").arg(Paths::getCodecsDirPath());
|
||||
lInfo() << QStringLiteral("[ToolModel] Loading downloaded codecs in folder %1…").arg(Paths::getCodecsDirPath());
|
||||
QDirIterator it(Paths::getCodecsDirPath());
|
||||
while (it.hasNext()) {
|
||||
QFileInfo info(it.next());
|
||||
|
|
@ -543,9 +548,10 @@ void ToolModel::loadDownloadedCodecs() {
|
|||
qInfo() << QStringLiteral("Loading `%1` symbols…").arg(filename);
|
||||
auto library = QLibrary(info.filePath());
|
||||
if (!library.load()) // lib.load())
|
||||
qWarning() << QStringLiteral("Failed to load `%1` symbols.").arg(filename) << library.errorString();
|
||||
else qInfo() << QStringLiteral("Loaded `%1` symbols…").arg(filename);
|
||||
} else qWarning() << QStringLiteral("Found codec file `%1` that is not a library").arg(filename);
|
||||
lWarning() << QStringLiteral("[ToolModel] Failed to load `%1` symbols.").arg(filename)
|
||||
<< library.errorString();
|
||||
else lInfo() << QStringLiteral("[ToolModel] Loaded `%1` symbols…").arg(filename);
|
||||
} else lWarning() << QStringLiteral("[ToolModel] Found codec file `%1` that is not a library").arg(filename);
|
||||
}
|
||||
CoreModel::getInstance()->getCore()->reloadMsPlugins("");
|
||||
qInfo() << QStringLiteral("Finished loading downloaded codecs.");
|
||||
|
|
@ -664,11 +670,11 @@ std::shared_ptr<linphone::ChatRoom> ToolModel::lookupCurrentCallChat(std::shared
|
|||
auto localAddress = call->getCallLog()->getLocalAddress();
|
||||
std::list<std::shared_ptr<linphone::Address>> participants;
|
||||
participants.push_back(remoteaddress->clone());
|
||||
qDebug() << "Looking for chat with local address" << localAddress->asStringUriOnly() << "and participant"
|
||||
<< remoteaddress->asStringUriOnly();
|
||||
lInfo() << "[ToolModel] Looking for chat with local address" << localAddress->asStringUriOnly()
|
||||
<< "and participant" << remoteaddress->asStringUriOnly();
|
||||
auto existingChat = core->searchChatRoom(params, localAddress, nullptr, participants);
|
||||
if (existingChat) qDebug() << "Found existing chat";
|
||||
else qDebug() << "Did not find existing chat";
|
||||
if (existingChat) lInfo() << "[ToolModel] Found existing chat";
|
||||
else lInfo() << "[ToolModel] Did not find existing chat";
|
||||
return existingChat;
|
||||
}
|
||||
}
|
||||
|
|
@ -708,11 +714,11 @@ std::shared_ptr<linphone::ChatRoom> ToolModel::lookupChatForAddress(std::shared_
|
|||
remoteAddress->clean();
|
||||
participants.push_back(remoteAddress);
|
||||
|
||||
qDebug() << "Looking for chat with local address" << localAddress->asStringUriOnly() << "and participant"
|
||||
lInfo() << "Looking for chat with local address" << localAddress->asStringUriOnly() << "and participant"
|
||||
<< remoteAddress->asStringUriOnly();
|
||||
auto existingChat = core->searchChatRoom(params, localAddress, nullptr, participants);
|
||||
if (existingChat) qDebug() << "Found existing chat";
|
||||
else qDebug() << "Did not find existing chat";
|
||||
if (existingChat) lInfo() << "Found existing chat";
|
||||
else lInfo() << "Did not find existing chat";
|
||||
return existingChat;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ public:
|
|||
linphone::MediaEncryption = linphone::MediaEncryption::None,
|
||||
QString *errorMessage = nullptr);
|
||||
|
||||
static std::shared_ptr<linphone::Conference> createConference(QString subject, QString *message = nullptr);
|
||||
static bool
|
||||
createGroupCall(QString subject, const std::list<QString> &participantAddresses, QString *message = nullptr);
|
||||
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ void Utils::createCall(const QString &sipAddress,
|
|||
if (mediaEncryption == LinphoneEnums::MediaEncryption::None)
|
||||
mediaEncryption =
|
||||
App::getInstance()->getSettings()->getMediaEncryption()["id"].value<LinphoneEnums::MediaEncryption>();
|
||||
lDebug() << "[Utils] create call with uri :" << sipAddress << mediaEncryption;
|
||||
lInfo() << "[Utils] create call with uri :" << sipAddress << mediaEncryption;
|
||||
App::postModelAsync([sipAddress, options, mediaEncryption, prepareTransfertAddress, headers]() {
|
||||
QString errorMessage;
|
||||
bool success = ToolModel::createCall(sipAddress, options, prepareTransfertAddress, headers,
|
||||
|
|
@ -1586,15 +1586,15 @@ VariantObject *Utils::getCurrentCallChat(CallGui *call) {
|
|||
auto chatCore = ChatCore::create(linphoneChatRoom);
|
||||
return QVariant::fromValue(new ChatGui(chatCore));
|
||||
} else {
|
||||
qDebug() << "Did not find existing chat room, create one";
|
||||
lInfo() << "[Utils] Did not find existing chat room, create one";
|
||||
linphoneChatRoom = ToolModel::createCurrentCallChat(callModel);
|
||||
if (linphoneChatRoom != nullptr) {
|
||||
qDebug() << "Chatroom created with" << callModel->getRemoteAddress()->asStringUriOnly();
|
||||
lInfo() << "[Utils] Chatroom created with" << callModel->getRemoteAddress()->asStringUriOnly();
|
||||
auto id = linphoneChatRoom->getIdentifier();
|
||||
auto chatCore = ChatCore::create(linphoneChatRoom);
|
||||
return QVariant::fromValue(new ChatGui(chatCore));
|
||||
} else {
|
||||
qWarning() << "Failed to create 1-1 conversation with"
|
||||
lWarning() << "[Utils] Failed to create 1-1 conversation with"
|
||||
<< callModel->getRemoteAddress()->asStringUriOnly() << "!";
|
||||
data->mConnection->invokeToCore([] {
|
||||
//: Error
|
||||
|
|
@ -1623,14 +1623,14 @@ VariantObject *Utils::getChatForAddress(QString address) {
|
|||
auto chatCore = ChatCore::create(linphoneChatRoom);
|
||||
return QVariant::fromValue(new ChatGui(chatCore));
|
||||
} else {
|
||||
qDebug() << "Did not find existing chat room, create one";
|
||||
lInfo() << "[Utils] Did not find existing chat room, create one";
|
||||
linphoneChatRoom = ToolModel::createChatForAddress(linAddr);
|
||||
if (linphoneChatRoom != nullptr) {
|
||||
qDebug() << "Chatroom created with" << linAddr->asStringUriOnly();
|
||||
lInfo() << "[Utils] Chatroom created with" << linAddr->asStringUriOnly();
|
||||
auto chatCore = ChatCore::create(linphoneChatRoom);
|
||||
return QVariant::fromValue(new ChatGui(chatCore));
|
||||
} else {
|
||||
qWarning() << "Failed to create 1-1 conversation with" << linAddr->asStringUriOnly() << "!";
|
||||
lWarning() << "[Utils] Failed to create 1-1 conversation with" << linAddr->asStringUriOnly() << "!";
|
||||
//: Failed to create 1-1 conversation with %1 !
|
||||
data->mConnection->invokeToCore([] {
|
||||
showInformationPopup(tr("information_popup_error_title"),
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ void KeyboardShortcuts::onAcceptCallShortcut() {
|
|||
auto callList = App::getInstance()->getCallList();
|
||||
auto currentPendingCall = callList->getFirstIncommingPendingCall();
|
||||
if (!currentPendingCall.isNull()) {
|
||||
lDebug() << "Accept call with shortcut :" << currentPendingCall;
|
||||
lInfo() << "Accept call with shortcut :" << currentPendingCall;
|
||||
auto gui = new CallGui(currentPendingCall);
|
||||
Utils::openCallsWindow(gui);
|
||||
currentPendingCall->lAccept(false);
|
||||
|
|
@ -82,7 +82,7 @@ void KeyboardShortcuts::onDeclineCallShortcut() {
|
|||
auto callList = App::getInstance()->getCallList();
|
||||
auto currentPendingCall = callList->getFirstIncommingPendingCall();
|
||||
if (!currentPendingCall.isNull()) {
|
||||
lDebug() << "Dcline call with shortcut :" << currentPendingCall;
|
||||
lInfo() << "Decline call with shortcut :" << currentPendingCall;
|
||||
currentPendingCall->lDecline();
|
||||
}
|
||||
}
|
||||
|
|
@ -26,6 +26,8 @@
|
|||
|
||||
#include "FileDownloader.hpp"
|
||||
|
||||
DEFINE_ABSTRACT_OBJECT(FileDownloader)
|
||||
|
||||
// =============================================================================
|
||||
|
||||
static QString getDownloadFilePath(const QString &folder, const QUrl &url, const bool &overwrite) {
|
||||
|
|
@ -63,7 +65,7 @@ static bool isHttpRedirect(QNetworkReply *reply) {
|
|||
|
||||
void FileDownloader::download() {
|
||||
if (mDownloading) {
|
||||
qWarning() << "Unable to download file. Already downloading!";
|
||||
lWarning() << log().arg("Unable to download file. Already downloading!");
|
||||
return;
|
||||
}
|
||||
setDownloading(true);
|
||||
|
|
@ -102,7 +104,8 @@ bool FileDownloader::remove() {
|
|||
}
|
||||
|
||||
void FileDownloader::emitOutputError() {
|
||||
qWarning() << QStringLiteral("Could not write into `%1` (%2).")
|
||||
lWarning() << log()
|
||||
.arg("Could not write into `%1` (%2).")
|
||||
.arg(mDestinationFile.fileName())
|
||||
.arg(mDestinationFile.errorString());
|
||||
mNetworkReply->abort();
|
||||
|
|
@ -123,18 +126,18 @@ void FileDownloader::handleDownloadFinished() {
|
|||
if (mNetworkReply->error() != QNetworkReply::NoError) return;
|
||||
|
||||
if (isHttpRedirect(mNetworkReply)) {
|
||||
qWarning() << QStringLiteral("Request was redirected.");
|
||||
lWarning() << log().arg("Request was redirected.");
|
||||
mDestinationFile.remove();
|
||||
cleanDownloadEnd();
|
||||
emit downloadFailed();
|
||||
} else {
|
||||
qInfo() << QStringLiteral("Download of %1 finished to %2").arg(mUrl.toString(), mDestinationFile.fileName());
|
||||
lInfo() << log().arg("Download of %1 finished to %2").arg(mUrl.toString(), mDestinationFile.fileName());
|
||||
mDestinationFile.close();
|
||||
cleanDownloadEnd();
|
||||
QString fileChecksum = Utils::getFileChecksum(mDestinationFile.fileName());
|
||||
if (mCheckSum.isEmpty() || fileChecksum == mCheckSum) emit downloadFinished(mDestinationFile.fileName());
|
||||
else {
|
||||
qCritical() << "File cannot be downloaded : Bad checksum " << fileChecksum;
|
||||
lCritical() << log().arg("File cannot be downloaded : Bad checksum ") << fileChecksum;
|
||||
mDestinationFile.remove();
|
||||
emit downloadFailed();
|
||||
}
|
||||
|
|
@ -143,8 +146,7 @@ void FileDownloader::handleDownloadFinished() {
|
|||
|
||||
void FileDownloader::handleError(QNetworkReply::NetworkError code) {
|
||||
if (code != QNetworkReply::OperationCanceledError)
|
||||
qWarning()
|
||||
<< QStringLiteral("Download of %1 failed: %2").arg(mUrl.toString()).arg(mNetworkReply->errorString());
|
||||
lWarning() << log().arg("Download of %1 failed: %2").arg(mUrl.toString()).arg(mNetworkReply->errorString());
|
||||
mDestinationFile.remove();
|
||||
|
||||
cleanDownloadEnd();
|
||||
|
|
@ -155,7 +157,7 @@ void FileDownloader::handleError(QNetworkReply::NetworkError code) {
|
|||
void FileDownloader::handleSslErrors(const QList<QSslError> &sslErrors) {
|
||||
#if QT_CONFIG(ssl)
|
||||
for (const QSslError &error : sslErrors)
|
||||
qWarning() << QStringLiteral("SSL error: %1").arg(error.errorString());
|
||||
lWarning() << log().arg("SSL error: %1").arg(error.errorString());
|
||||
#else
|
||||
Q_UNUSED(sslErrors);
|
||||
#endif
|
||||
|
|
@ -163,7 +165,7 @@ void FileDownloader::handleSslErrors(const QList<QSslError> &sslErrors) {
|
|||
|
||||
void FileDownloader::handleTimeout() {
|
||||
if (mReadBytes == mTimeoutReadBytes) {
|
||||
qWarning() << QStringLiteral("Download of %1 failed: timeout.").arg(mUrl.toString());
|
||||
lWarning() << log().arg("Download of %1 failed: timeout.").arg(mUrl.toString());
|
||||
mNetworkReply->abort();
|
||||
} else mTimeoutReadBytes = mReadBytes;
|
||||
}
|
||||
|
|
@ -181,15 +183,16 @@ QUrl FileDownloader::getUrl() const {
|
|||
|
||||
void FileDownloader::setUrl(const QUrl &url) {
|
||||
if (mDownloading) {
|
||||
qWarning() << QStringLiteral("Unable to set url, a file is downloading.");
|
||||
lWarning() << log().arg("Unable to set url, a file is downloading.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (mUrl != url) {
|
||||
mUrl = url;
|
||||
if (!QSslSocket::supportsSsl() && mUrl.scheme() == "https") {
|
||||
qWarning() << "Https has been requested but SSL is not supported. Fallback to http. Install manually "
|
||||
"OpenSSL libraries in your PATH.";
|
||||
lWarning() << log().arg(
|
||||
"Https has been requested but SSL is not supported. Fallback to http. Install manually "
|
||||
"OpenSSL libraries in your PATH.");
|
||||
mUrl.setScheme("http");
|
||||
}
|
||||
emit urlChanged(mUrl);
|
||||
|
|
@ -202,7 +205,7 @@ QString FileDownloader::getDownloadFolder() const {
|
|||
|
||||
void FileDownloader::setDownloadFolder(const QString &downloadFolder) {
|
||||
if (mDownloading) {
|
||||
qWarning() << QStringLiteral("Unable to set download folder, a file is downloading.");
|
||||
lWarning() << log().arg("Unable to set download folder, a file is downloading.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -224,7 +227,7 @@ QString
|
|||
FileDownloader::synchronousDownload(const QUrl &url, const QString &destinationFolder, const bool &overwriteFile) {
|
||||
QString filePath;
|
||||
FileDownloader downloader;
|
||||
if (url.isRelative()) qWarning() << "FileDownloader: The specified URL is not valid";
|
||||
if (url.isRelative()) lWarning() << QStringLiteral("FileDownloader: The specified URL is not valid");
|
||||
else {
|
||||
bool isOver = false;
|
||||
bool *pIsOver = &isOver;
|
||||
|
|
@ -238,7 +241,7 @@ FileDownloader::synchronousDownload(const QUrl &url, const QString &destinationF
|
|||
filePath = downloader.getDestinationFileName();
|
||||
if (!QFile::exists(filePath)) {
|
||||
filePath = "";
|
||||
qWarning() << "FileDownloader: Cannot download the specified file";
|
||||
lWarning() << QStringLiteral("FileDownloader: Cannot download the specified file");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
#ifndef FILE_DOWNLOADER_H_
|
||||
#define FILE_DOWNLOADER_H_
|
||||
|
||||
#include "tool/AbstractObject.hpp"
|
||||
|
||||
#include <QObject>
|
||||
#include <QThread>
|
||||
#include <QtNetwork>
|
||||
|
|
@ -29,7 +31,7 @@
|
|||
|
||||
class QSslError;
|
||||
|
||||
class FileDownloader : public QObject {
|
||||
class FileDownloader : public QObject, public AbstractObject {
|
||||
Q_OBJECT;
|
||||
|
||||
// TODO: Add an error property to use in UI.
|
||||
|
|
@ -121,6 +123,8 @@ private:
|
|||
QTimer mTimeout;
|
||||
|
||||
static constexpr int DefaultTimeout = 5000;
|
||||
|
||||
DECLARE_ABSTRACT_OBJECT
|
||||
};
|
||||
|
||||
#endif // FILE_DOWNLOADER_H_
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@
|
|||
#include "tool/Constants.hpp"
|
||||
#include "tool/Utils.hpp"
|
||||
|
||||
DEFINE_ABSTRACT_OBJECT(FileExtractor)
|
||||
|
||||
// =============================================================================
|
||||
|
||||
using namespace std;
|
||||
|
|
@ -41,7 +43,7 @@ FileExtractor::~FileExtractor() {
|
|||
|
||||
void FileExtractor::extract() {
|
||||
if (mExtracting) {
|
||||
qWarning() << "Unable to extract file. Already extracting!";
|
||||
lWarning() << log().arg("Unable to extract file. Already extracting!");
|
||||
return;
|
||||
}
|
||||
setExtracting(true);
|
||||
|
|
@ -117,7 +119,7 @@ QString FileExtractor::getFile() const {
|
|||
|
||||
void FileExtractor::setFile(const QString &file) {
|
||||
if (mExtracting) {
|
||||
qWarning() << QStringLiteral("Unable to set file, a file is extracting.");
|
||||
lWarning() << log().arg("Unable to set file, a file is extracting.");
|
||||
return;
|
||||
}
|
||||
if (mFile != file) {
|
||||
|
|
@ -132,7 +134,7 @@ QString FileExtractor::getExtractFolder() const {
|
|||
|
||||
void FileExtractor::setExtractFolder(const QString &extractFolder) {
|
||||
if (mExtracting) {
|
||||
qWarning() << QStringLiteral("Unable to set extract folder, a file is extracting.");
|
||||
lWarning() << log().arg("Unable to set extract folder, a file is extracting.");
|
||||
return;
|
||||
}
|
||||
if (mExtractFolder != extractFolder) {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
#ifndef FILE_EXTRACTOR_H_
|
||||
#define FILE_EXTRACTOR_H_
|
||||
|
||||
#include "tool/AbstractObject.hpp"
|
||||
|
||||
#include <QFile>
|
||||
|
||||
// =============================================================================
|
||||
|
|
@ -28,7 +30,7 @@
|
|||
class QTimer;
|
||||
|
||||
// Supports only bzip file.
|
||||
class FileExtractor : public QObject {
|
||||
class FileExtractor : public QObject, public AbstractObject {
|
||||
|
||||
Q_OBJECT;
|
||||
|
||||
|
|
@ -99,6 +101,8 @@ private:
|
|||
qint64 mTotalBytes = 0;
|
||||
|
||||
QTimer *mTimer = nullptr;
|
||||
|
||||
DECLARE_ABSTRACT_OBJECT
|
||||
};
|
||||
|
||||
#endif // FILE_EXTRACTOR_H_
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ Control.Button {
|
|||
property var checkedImageColor: style?.image?.checked || Qt.darker(contentImageColor, 1.1)
|
||||
property var pressedImageColor: style?.image?.pressed || Qt.darker(contentImageColor, 1.1)
|
||||
icon.source: style?.iconSource || ""
|
||||
property color colorizationColor: mainItem.checkable && mainItem.checked ? mainItem.checkedImageColor || mainItem.checkedColor || mainItem.pressedColor : mainItem.pressed ? mainItem.pressedImageColor : mainItem.hovered ? mainItem.hoveredImageColor : mainItem.contentImageColor
|
||||
property color colorizationColor: mainItem.checkable && mainItem.checked ? mainItem.checkedImageColor : mainItem.pressed ? mainItem.pressedImageColor : mainItem.hovered ? mainItem.hoveredImageColor : mainItem.contentImageColor
|
||||
// Size properties
|
||||
spacing: Utils.getSizeWithScreenRatio(5)
|
||||
property real radius: Math.ceil(height / 2)
|
||||
|
|
|
|||
|
|
@ -104,11 +104,6 @@ ColumnLayout {
|
|||
}
|
||||
}
|
||||
}
|
||||
RowLayout {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
spacing: Math.round(72 * DefaultStyle.dp)
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: childrenRect.height
|
||||
MediumButton {
|
||||
visible: mainItem.isConference && !SettingsCpp.disableMeetingsFeature
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
|
@ -123,8 +118,13 @@ ColumnLayout {
|
|||
}
|
||||
}
|
||||
}
|
||||
LabelButton {
|
||||
RowLayout {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
spacing: Math.round(72 * DefaultStyle.dp)
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: childrenRect.height
|
||||
visible: !mainItem.isConference
|
||||
LabelButton {
|
||||
width: Math.round(56 * DefaultStyle.dp)
|
||||
height: Math.round(56 * DefaultStyle.dp)
|
||||
button.icon.width: Math.round(24 * DefaultStyle.dp)
|
||||
|
|
@ -138,7 +138,7 @@ ColumnLayout {
|
|||
}
|
||||
}
|
||||
LabelButton {
|
||||
visible: !mainItem.isConference && !SettingsCpp.disableChatFeature
|
||||
visible: !SettingsCpp.disableChatFeature
|
||||
width: Math.round(56 * DefaultStyle.dp)
|
||||
height: Math.round(56 * DefaultStyle.dp)
|
||||
button.icon.width: Math.round(24 * DefaultStyle.dp)
|
||||
|
|
@ -158,7 +158,7 @@ ColumnLayout {
|
|||
}
|
||||
}
|
||||
LabelButton {
|
||||
visible: !mainItem.isConference && SettingsCpp.videoEnabled
|
||||
visible: SettingsCpp.videoEnabled
|
||||
width: Math.round(56 * DefaultStyle.dp)
|
||||
height: Math.round(56 * DefaultStyle.dp)
|
||||
button.icon.width: Math.round(24 * DefaultStyle.dp)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import QtQuick.Effects
|
|||
|
||||
import Linphone
|
||||
import QtQml
|
||||
import SettingsCpp
|
||||
import UtilsCpp 1.0
|
||||
import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
|
||||
|
||||
|
|
@ -29,7 +30,11 @@ ListView {
|
|||
width: mainItem.width
|
||||
height: Math.round(45 * DefaultStyle.dp)
|
||||
property var remoteNameObj: UtilsCpp.getDisplayName(modelData.core.remoteAddress)
|
||||
property var callName : modelData.core.isConference ? modelData.core.conference.core.subject : remoteNameObj ? remoteNameObj.value : ""
|
||||
property var callName : (modelData && !SettingsCpp.disableMeetingsFeature && modelData.core.isConference)
|
||||
? modelData.core.conference.core.subject
|
||||
: remoteNameObj
|
||||
? remoteNameObj.value
|
||||
: ""
|
||||
Avatar {
|
||||
id: delegateAvatar
|
||||
Layout.preferredWidth: Math.round(45 * DefaultStyle.dp)
|
||||
|
|
@ -43,7 +48,6 @@ ListView {
|
|||
spacing: 0
|
||||
Text {
|
||||
id: delegateName
|
||||
property var remoteNameObj: UtilsCpp.getDisplayName(modelData.core.remoteAddress)
|
||||
text: callInformationItem.callName
|
||||
font.pixelSize: Math.round(14 * DefaultStyle.dp)
|
||||
Layout.fillWidth: true
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ Control.Control {
|
|||
property var msgState: chatMessage ? chatMessage.core.messageState : LinphoneEnums.ChatMessageState.StateIdle
|
||||
hoverEnabled: true
|
||||
property bool linkHovered: false
|
||||
property real maxWidth: parent?.width || Math.round(300 * DefaultStyle.dp)
|
||||
property real maxWidth: parent?.width || Utils.getSizeWithScreenRatio(300)
|
||||
|
||||
leftPadding: isRemoteMessage ? Math.round(5 * DefaultStyle.dp) : 0
|
||||
leftPadding: isRemoteMessage ? Utils.getSizeWithScreenRatio(5) : 0
|
||||
|
||||
signal messageDeletionRequested()
|
||||
signal isFileHoveringChanged(bool isFileHovering)
|
||||
|
|
@ -63,11 +63,11 @@ Control.Control {
|
|||
}
|
||||
|
||||
contentItem: ColumnLayout {
|
||||
spacing: Math.round(5 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(5)
|
||||
Text {
|
||||
id: fromNameText
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Layout.leftMargin: mainItem.isFromChatGroup ? Math.round(9 * DefaultStyle.dp) + avatar.width : 0
|
||||
Layout.leftMargin: mainItem.isFromChatGroup ? Utils.getSizeWithScreenRatio(9) + avatar.width : 0
|
||||
visible: mainItem.isFromChatGroup && mainItem.isRemoteMessage && mainItem.isFirstMessage && !replyLayout.visible
|
||||
maximumLineCount: 1
|
||||
width: implicitWidth
|
||||
|
|
@ -81,15 +81,15 @@ Control.Control {
|
|||
}
|
||||
RowLayout {
|
||||
id: forwardLayout
|
||||
spacing: Math.round(8 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(8)
|
||||
visible: mainItem.isForward
|
||||
Layout.leftMargin: mainItem.isFromChatGroup ? Math.round(9 * DefaultStyle.dp) + avatar.width : 0
|
||||
Layout.leftMargin: mainItem.isFromChatGroup ? Utils.getSizeWithScreenRatio(9) + avatar.width : 0
|
||||
Layout.alignment: mainItem.isRemoteMessage ? Qt.AlignLeft: Qt.AlignRight
|
||||
EffectImage {
|
||||
imageSource: AppIcons.forward
|
||||
colorizationColor: DefaultStyle.main2_500_main
|
||||
Layout.preferredWidth: Math.round(12 * DefaultStyle.dp)
|
||||
Layout.preferredHeight: Math.round(12 * DefaultStyle.dp)
|
||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(12)
|
||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(12)
|
||||
}
|
||||
Text {
|
||||
//: Forwarded
|
||||
|
|
@ -104,20 +104,20 @@ Control.Control {
|
|||
RowLayout {
|
||||
id: replyLayout
|
||||
visible: mainItem.isReply
|
||||
Layout.leftMargin: mainItem.isFromChatGroup ? Math.round(9 * DefaultStyle.dp) + avatar.width : 0
|
||||
Layout.leftMargin: mainItem.isFromChatGroup ? Utils.getSizeWithScreenRatio(9) + avatar.width : 0
|
||||
layoutDirection: mainItem.isRemoteMessage ? Qt.LeftToRight : Qt.RightToLeft
|
||||
ColumnLayout {
|
||||
spacing: Math.round(5 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(5)
|
||||
RowLayout {
|
||||
id: replyLabel
|
||||
spacing: Math.round(8 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(8)
|
||||
Layout.fillWidth: false
|
||||
Layout.alignment: mainItem.isRemoteMessage ? Qt.AlignLeft : Qt.AlignRight
|
||||
EffectImage {
|
||||
imageSource: AppIcons.reply
|
||||
colorizationColor: DefaultStyle.main2_500_main
|
||||
Layout.preferredWidth: Math.round(12 * DefaultStyle.dp)
|
||||
Layout.preferredHeight: Math.round(12 * DefaultStyle.dp)
|
||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(12)
|
||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(12)
|
||||
}
|
||||
Text {
|
||||
Layout.alignment: mainItem.isRemoteMessage ? Qt.AlignLeft: Qt.AlignRight
|
||||
|
|
@ -143,16 +143,16 @@ Control.Control {
|
|||
id: replyMessage
|
||||
visible: mainItem.replyText !== ""
|
||||
Layout.alignment: mainItem.isRemoteMessage ? Qt.AlignLeft : Qt.AlignRight
|
||||
spacing: Math.round(5 * DefaultStyle.dp)
|
||||
topPadding: Math.round(12 * DefaultStyle.dp)
|
||||
bottomPadding: Math.round(19 * DefaultStyle.dp)
|
||||
leftPadding: Math.round(18 * DefaultStyle.dp)
|
||||
rightPadding: Math.round(18 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(5)
|
||||
topPadding: Utils.getSizeWithScreenRatio(12)
|
||||
bottomPadding: Utils.getSizeWithScreenRatio(19)
|
||||
leftPadding: Utils.getSizeWithScreenRatio(18)
|
||||
rightPadding: Utils.getSizeWithScreenRatio(18)
|
||||
Layout.preferredWidth: Math.min(implicitWidth, mainItem.maxWidth - avatar.implicitWidth)
|
||||
background: Rectangle {
|
||||
anchors.fill: parent
|
||||
color: DefaultStyle.grey_200
|
||||
radius: Math.round(16 * DefaultStyle.dp)
|
||||
radius: Utils.getSizeWithScreenRatio(16)
|
||||
}
|
||||
contentItem: Text {
|
||||
Layout.fillWidth: true
|
||||
|
|
@ -172,30 +172,30 @@ Control.Control {
|
|||
z: replyLayout.z + 1
|
||||
spacing: 0
|
||||
layoutDirection: mainItem.isRemoteMessage ? Qt.LeftToRight : Qt.RightToLeft
|
||||
Layout.topMargin: replyMessage.visible ? Math.round(-20 * DefaultStyle.dp) : 0
|
||||
Layout.topMargin: replyMessage.visible ? Utils.getSizeWithScreenRatio(-20) : 0
|
||||
|
||||
Avatar {
|
||||
id: avatar
|
||||
visible: mainItem.isFromChatGroup && mainItem.isRemoteMessage
|
||||
Layout.preferredWidth: mainItem.isRemoteMessage ? 26 * DefaultStyle.dp : 0
|
||||
Layout.preferredHeight: 26 * DefaultStyle.dp
|
||||
Layout.preferredWidth: mainItem.isRemoteMessage ? 26 : 0
|
||||
Layout.preferredHeight: 26
|
||||
Layout.alignment: Qt.AlignTop
|
||||
_address: chatMessage ? chatMessage.core.fromAddress : ""
|
||||
}
|
||||
Item {
|
||||
id: bubbleContainer
|
||||
// Layout.topMargin: isFirstMessage ? 16 * DefaultStyle.dp : 0
|
||||
Layout.leftMargin: mainItem.isFromChatGroup ? Math.round(9 * DefaultStyle.dp) : 0
|
||||
// Layout.topMargin: isFirstMessage ? 16 : 0
|
||||
Layout.leftMargin: mainItem.isFromChatGroup ? Utils.getSizeWithScreenRatio(9) : 0
|
||||
Layout.preferredHeight: childrenRect.height
|
||||
Layout.preferredWidth: childrenRect.width
|
||||
|
||||
Control.Control {
|
||||
id: chatBubble
|
||||
spacing: Math.round(2 * DefaultStyle.dp)
|
||||
topPadding: Math.round(12 * DefaultStyle.dp)
|
||||
bottomPadding: Math.round(6 * DefaultStyle.dp)
|
||||
leftPadding: Math.round(18 * DefaultStyle.dp)
|
||||
rightPadding: Math.round(18 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(2)
|
||||
topPadding: Utils.getSizeWithScreenRatio(12)
|
||||
bottomPadding: Utils.getSizeWithScreenRatio(6)
|
||||
leftPadding: Utils.getSizeWithScreenRatio(18)
|
||||
rightPadding: Utils.getSizeWithScreenRatio(18)
|
||||
width: Math.min(implicitWidth, mainItem.maxWidth - avatar.implicitWidth)
|
||||
|
||||
MouseArea { // Default mouse area. Each sub bubble can control the mouse and pass on to the main mouse handler. Child bubble mouse area must cover the entire bubble.
|
||||
|
|
@ -211,31 +211,31 @@ Control.Control {
|
|||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: mainItem.backgroundColor
|
||||
radius: Math.round(16 * DefaultStyle.dp)
|
||||
radius: Utils.getSizeWithScreenRatio(16)
|
||||
}
|
||||
Rectangle {
|
||||
visible: mainItem.isFirstMessage && mainItem.isRemoteMessage
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
width: Math.round(parent.width / 4)
|
||||
height: Math.round(parent.height / 4)
|
||||
width: Utils.getSizeWithScreenRatio(parent.width / 4)
|
||||
height: Utils.getSizeWithScreenRatio(parent.height / 4)
|
||||
color: mainItem.backgroundColor
|
||||
}
|
||||
Rectangle {
|
||||
visible: mainItem.isFirstMessage && !mainItem.isRemoteMessage
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: parent.right
|
||||
width: Math.round(parent.width / 4)
|
||||
height: Math.round(parent.height / 4)
|
||||
width: Utils.getSizeWithScreenRatio(parent.width / 4)
|
||||
height: Utils.getSizeWithScreenRatio(parent.height / 4)
|
||||
color: mainItem.backgroundColor
|
||||
}
|
||||
Rectangle {
|
||||
id: highlightRectangle
|
||||
anchors.fill: parent
|
||||
radius: Math.round(16 * DefaultStyle.dp)
|
||||
radius: Utils.getSizeWithScreenRatio(16)
|
||||
color: Qt.lighter(mainItem.backgroundColor, 2)
|
||||
border.color: mainItem.backgroundColor
|
||||
border.width: Math.round(2 * DefaultStyle.dp)
|
||||
border.width: Utils.getSizeWithScreenRatio(2)
|
||||
opacity: 0
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
|
|
@ -246,7 +246,7 @@ Control.Control {
|
|||
}
|
||||
}
|
||||
contentItem: ColumnLayout {
|
||||
spacing: Math.round(5 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(5)
|
||||
ChatMessageContent {
|
||||
id: chatBubbleContent
|
||||
Layout.fillWidth: true
|
||||
|
|
@ -263,9 +263,9 @@ Control.Control {
|
|||
Layout.preferredHeight: childrenRect.height
|
||||
Layout.alignment: mainItem.isRemoteMessage ? Qt.AlignLeft : Qt.AlignRight
|
||||
layoutDirection: mainItem.isRemoteMessage ? Qt.RightToLeft : Qt.LeftToRight
|
||||
spacing: Math.round(7 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(7)
|
||||
RowLayout {
|
||||
spacing: Math.round(3 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(3)
|
||||
Layout.preferredHeight: childrenRect.height
|
||||
Text {
|
||||
id: ephemeralTime
|
||||
|
|
@ -281,12 +281,12 @@ Control.Control {
|
|||
visible: mainItem.chatMessage.core.isEphemeral
|
||||
imageSource: AppIcons.clockCountDown
|
||||
colorizationColor: DefaultStyle.main2_500_main
|
||||
Layout.preferredWidth: visible ? 14 * DefaultStyle.dp : 0
|
||||
Layout.preferredHeight: visible ? 14 * DefaultStyle.dp : 0
|
||||
Layout.preferredWidth: visible ? 14 : 0
|
||||
Layout.preferredHeight: visible ? 14 : 0
|
||||
}
|
||||
}
|
||||
RowLayout {
|
||||
spacing: mainItem.isRemoteMessage ? 0 : Math.round(5 * DefaultStyle.dp)
|
||||
spacing: mainItem.isRemoteMessage ? 0 : Utils.getSizeWithScreenRatio(5)
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
Layout.preferredHeight: childrenRect.height
|
||||
Text {
|
||||
|
|
@ -301,8 +301,8 @@ Control.Control {
|
|||
EffectImage {
|
||||
// Imdn status icon
|
||||
visible: !mainItem.isRemoteMessage
|
||||
Layout.preferredWidth: visible ? 14 * DefaultStyle.dp : 0
|
||||
Layout.preferredHeight: visible ? 14 * DefaultStyle.dp : 0
|
||||
Layout.preferredWidth: visible ? 14 : 0
|
||||
Layout.preferredHeight: visible ? 14 : 0
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
colorizationColor: DefaultStyle.main1_500_main
|
||||
imageSource: mainItem.msgState === LinphoneEnums.ChatMessageState.StateDelivered
|
||||
|
|
@ -318,8 +318,8 @@ Control.Control {
|
|||
: ""
|
||||
BusyIndicator {
|
||||
anchors.fill: parent
|
||||
Layout.preferredWidth: visible ? 14 * DefaultStyle.dp : 0
|
||||
Layout.preferredHeight: visible ? 14 * DefaultStyle.dp : 0
|
||||
Layout.preferredWidth: visible ? 14 : 0
|
||||
Layout.preferredHeight: visible ? 14 : 0
|
||||
visible: mainItem.msgState === LinphoneEnums.ChatMessageState.StateIdle
|
||||
|| mainItem.msgState === LinphoneEnums.ChatMessageState.StateInProgress
|
||||
|| mainItem.msgState === LinphoneEnums.ChatMessageState.StateFileTransferInProgress
|
||||
|
|
@ -346,30 +346,30 @@ Control.Control {
|
|||
value: chatBubble.right
|
||||
}
|
||||
onClicked: mainItem.showReactionsForMessageRequested()
|
||||
anchors.topMargin: Math.round(-6 * DefaultStyle.dp)
|
||||
topPadding: Math.round(8 * DefaultStyle.dp)
|
||||
bottomPadding: Math.round(8 * DefaultStyle.dp)
|
||||
leftPadding: Math.round(8 * DefaultStyle.dp)
|
||||
rightPadding: Math.round(8 * DefaultStyle.dp)
|
||||
anchors.topMargin: Utils.getSizeWithScreenRatio(-6)
|
||||
topPadding: Utils.getSizeWithScreenRatio(8)
|
||||
bottomPadding: Utils.getSizeWithScreenRatio(8)
|
||||
leftPadding: Utils.getSizeWithScreenRatio(8)
|
||||
rightPadding: Utils.getSizeWithScreenRatio(8)
|
||||
background: Rectangle {
|
||||
color: DefaultStyle.grey_100
|
||||
border.color: DefaultStyle.grey_0
|
||||
border.width: Math.round(2 * DefaultStyle.dp)
|
||||
radius: Math.round(20 * DefaultStyle.dp)
|
||||
border.width: Utils.getSizeWithScreenRatio(2)
|
||||
radius: Utils.getSizeWithScreenRatio(20)
|
||||
}
|
||||
contentItem: RowLayout {
|
||||
spacing: Math.round(6 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(6)
|
||||
Repeater {
|
||||
id: reactionList
|
||||
model: mainItem.chatMessage ? mainItem.chatMessage.core.reactionsSingleton : []
|
||||
delegate: RowLayout {
|
||||
spacing: Math.round(3 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(3)
|
||||
Text {
|
||||
text: UtilsCpp.encodeEmojiToQmlRichFormat(modelData.body)
|
||||
textFormat: Text.RichText
|
||||
font {
|
||||
pixelSize: Math.round(15 * DefaultStyle.dp)
|
||||
weight: Math.round(400 * DefaultStyle.dp)
|
||||
pixelSize: Utils.getSizeWithScreenRatio(15)
|
||||
weight: Utils.getSizeWithScreenRatio(400)
|
||||
}
|
||||
}
|
||||
Text {
|
||||
|
|
@ -389,11 +389,11 @@ Control.Control {
|
|||
RowLayout {
|
||||
id: actionsLayout
|
||||
visible: mainItem.hovered || optionsMenu.hovered || optionsMenu.popup.opened || emojiButton.hovered || emojiButton.popup.opened
|
||||
Layout.leftMargin: Math.round(8 * DefaultStyle.dp)
|
||||
Layout.rightMargin: Math.round(8 * DefaultStyle.dp)
|
||||
Layout.leftMargin: Utils.getSizeWithScreenRatio(8)
|
||||
Layout.rightMargin: Utils.getSizeWithScreenRatio(8)
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
// Layout.fillWidth: true
|
||||
spacing: Math.round(7 * DefaultStyle.dp)
|
||||
spacing: Utils.getSizeWithScreenRatio(7)
|
||||
layoutDirection: mainItem.isRemoteMessage ? Qt.LeftToRight : Qt.RightToLeft
|
||||
PopupButton {
|
||||
id: optionsMenu
|
||||
|
|
@ -406,7 +406,7 @@ Control.Control {
|
|||
text: qsTr("chat_message_reception_info")
|
||||
icon.source: AppIcons.chatTeardropText
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
|
||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
||||
onClicked: {
|
||||
mainItem.showImdnStatusForMessageRequested()
|
||||
optionsMenu.close()
|
||||
|
|
@ -418,7 +418,7 @@ Control.Control {
|
|||
text: qsTr("chat_message_reply")
|
||||
icon.source: AppIcons.reply
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
|
||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
||||
onClicked: {
|
||||
mainItem.replyToMessageRequested()
|
||||
optionsMenu.close()
|
||||
|
|
@ -432,9 +432,9 @@ Control.Control {
|
|||
//: "Copy"
|
||||
: qsTr("chat_message_copy")
|
||||
icon.source: AppIcons.copy
|
||||
// spacing: Math.round(10 * DefaultStyle.dp)
|
||||
// spacing: Utils.getSizeWithScreenRatio(10)
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
|
||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
||||
onClicked: {
|
||||
var success = UtilsCpp.copyToClipboard(chatBubbleContent.selectedText != "" ? chatBubbleContent.selectedText : mainItem.chatMessage.core.text)
|
||||
//: Copied
|
||||
|
|
@ -450,7 +450,7 @@ Control.Control {
|
|||
text: qsTr("chat_message_forward")
|
||||
icon.source: AppIcons.forward
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
|
||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
||||
onClicked: {
|
||||
mainItem.forwardMessageRequested()
|
||||
optionsMenu.close()
|
||||
|
|
@ -458,7 +458,7 @@ Control.Control {
|
|||
}
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: Math.min(1, Math.round(1 * DefaultStyle.dp))
|
||||
Layout.preferredHeight: Math.min(1, Utils.getSizeWithScreenRatio(1))
|
||||
color: DefaultStyle.main2_400
|
||||
}
|
||||
IconLabelButton {
|
||||
|
|
@ -466,9 +466,9 @@ Control.Control {
|
|||
//: "Delete"
|
||||
text: qsTr("chat_message_delete")
|
||||
icon.source: AppIcons.trashCan
|
||||
// spacing: Math.round(10 * DefaultStyle.dp)
|
||||
// spacing: Utils.getSizeWithScreenRatio(10)
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
|
||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
||||
onClicked: {
|
||||
mainItem.messageDeletionRequested()
|
||||
optionsMenu.close()
|
||||
|
|
@ -504,8 +504,8 @@ Control.Control {
|
|||
PopupButton {
|
||||
id: emojiPickerButton
|
||||
icon.source: AppIcons.plusCircle
|
||||
popup.width: Math.round(393 * DefaultStyle.dp)
|
||||
popup.height: Math.round(291 * DefaultStyle.dp)
|
||||
popup.width: Utils.getSizeWithScreenRatio(393)
|
||||
popup.height: Utils.getSizeWithScreenRatio(291)
|
||||
popup.contentItem: EmojiPicker {
|
||||
id: emojiPicker
|
||||
onEmojiClicked: (emoji) => {
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ ColumnLayout {
|
|||
id: list
|
||||
width: mainItem.width
|
||||
height: Math.round(250 * DefaultStyle.dp)
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
model: mainItem.categories
|
||||
spacing: Math.round(30 * DefaultStyle.dp)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ Control.Control {
|
|||
property var textArea
|
||||
property int selectedFilesCount: 0
|
||||
// property alias cursorPosition: sendingTextArea.cursorPosition
|
||||
property Popup emojiPicker
|
||||
|
||||
property bool dropEnabled: true
|
||||
property bool isEphemeral : false
|
||||
|
|
@ -77,14 +76,14 @@ Control.Control {
|
|||
id: textAreaComp
|
||||
RowLayout {
|
||||
spacing: Math.round(16 * DefaultStyle.dp)
|
||||
BigButton {
|
||||
PopupButton {
|
||||
id: emojiPickerButton
|
||||
style: ButtonStyle.noBackground
|
||||
checked: mainItem.emojiPicker?.visible || false
|
||||
icon.source: checked ? AppIcons.closeX : AppIcons.smiley
|
||||
onPressed: {
|
||||
if (!checked) mainItem.emojiPicker.open()
|
||||
else mainItem.emojiPicker.close()
|
||||
popup.width: Math.round(393 * DefaultStyle.dp)
|
||||
popup.height: Math.round(291 * DefaultStyle.dp)
|
||||
popup.contentItem: EmojiPicker {
|
||||
editor: sendingTextArea
|
||||
}
|
||||
}
|
||||
BigButton {
|
||||
|
|
@ -121,7 +120,9 @@ Control.Control {
|
|||
id: sendingAreaFlickable
|
||||
Layout.preferredHeight: Math.min(Math.round(100 * DefaultStyle.dp), contentHeight)
|
||||
Layout.fillHeight: true
|
||||
width: sendingControl.width - sendingControl.leftPadding - sendingControl.rightPadding
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
contentHeight: sendingTextArea.contentHeight
|
||||
contentWidth: width
|
||||
|
||||
|
|
@ -138,8 +139,9 @@ Control.Control {
|
|||
|
||||
TextArea {
|
||||
id: sendingTextArea
|
||||
// RectangleTest{anchors.fill: parent}
|
||||
width: sendingAreaFlickable.width
|
||||
height: sendingAreaFlickable.height
|
||||
height: implicitHeight// sendingAreaFlickable.height
|
||||
textFormat: TextEdit.AutoText
|
||||
onTextChanged: {
|
||||
mainItem.text = text
|
||||
|
|
@ -180,6 +182,7 @@ Control.Control {
|
|||
RowLayout {
|
||||
id: stackButton
|
||||
spacing: 0
|
||||
Layout.preferredHeight: Math.max(recordButton.height, sendMessageButton.height)
|
||||
BigButton {
|
||||
id: recordButton
|
||||
ToolTip.visible: !enabled && hovered
|
||||
|
|
@ -196,6 +199,7 @@ Control.Control {
|
|||
}
|
||||
BigButton {
|
||||
id: sendMessageButton
|
||||
Layout.preferredHeight: height
|
||||
visible: sendingTextArea.text.length !== 0 || mainItem.selectedFilesCount > 0
|
||||
style: ButtonStyle.noBackgroundOrange
|
||||
icon.source: AppIcons.paperPlaneRight
|
||||
|
|
|
|||
|
|
@ -874,5 +874,7 @@ function getSizeWithScreenRatio(size){
|
|||
if (size == 0) {
|
||||
return size;
|
||||
}
|
||||
return Math.max(Math.round(size * Linphone.DefaultStyle.dp), 1);
|
||||
return size > 0
|
||||
? Math.max(Math.round(size * Linphone.DefaultStyle.dp), 1)
|
||||
: Math.min(Math.round(size * Linphone.DefaultStyle.dp), -1);
|
||||
}
|
||||
|
|
@ -295,40 +295,6 @@ FocusScope {
|
|||
contentLoader.panelType = SelectedChatView.PanelType.ForwardToList
|
||||
detailsPanel.visible = true
|
||||
}
|
||||
|
||||
Popup {
|
||||
id: emojiPickerPopup
|
||||
y: Math.round(chatMessagesListView.y + chatMessagesListView.height - height - 8*DefaultStyle.dp)
|
||||
x: Math.round(chatMessagesListView.x + 8*DefaultStyle.dp)
|
||||
width: Math.round(393 * DefaultStyle.dp)
|
||||
height: Math.round(291 * DefaultStyle.dp)
|
||||
visible: false
|
||||
modal: true
|
||||
dim: false
|
||||
closePolicy: Popup.CloseOnReleaseOutside
|
||||
padding: 10 * DefaultStyle.dp
|
||||
background: Item {
|
||||
anchors.fill: parent
|
||||
Rectangle {
|
||||
id: buttonBackground
|
||||
anchors.fill: parent
|
||||
color: DefaultStyle.grey_0
|
||||
radius: Math.round(20 * DefaultStyle.dp)
|
||||
}
|
||||
MultiEffect {
|
||||
anchors.fill: buttonBackground
|
||||
source: buttonBackground
|
||||
shadowEnabled: true
|
||||
shadowColor: DefaultStyle.grey_1000
|
||||
shadowBlur: 0.1
|
||||
shadowOpacity: 0.5
|
||||
}
|
||||
}
|
||||
contentItem: EmojiPicker {
|
||||
id: emojiPicker
|
||||
editor: messageSender.textArea
|
||||
}
|
||||
}
|
||||
}
|
||||
ScrollBar {
|
||||
id: scrollbar
|
||||
|
|
@ -512,7 +478,6 @@ FocusScope {
|
|||
Control.SplitView.minimumHeight: mainItem.chat?.core.isReadOnly ? 0 : Math.round(79 * DefaultStyle.dp)
|
||||
chat: mainItem.chat
|
||||
selectedFilesCount: contents.count
|
||||
emojiPicker: emojiPickerPopup
|
||||
callOngoing: mainItem.call != null
|
||||
onChatChanged: {
|
||||
if (chat) messageSender.text = mainItem.chat.core.sendingText
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue