mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-24 15:18:07 +00:00
Compare commits
No commits in common. "master" and "6.2.0-alpha" have entirely different histories.
master
...
6.2.0-alph
56 changed files with 190 additions and 995 deletions
|
|
@ -30,10 +30,10 @@
|
||||||
rm -f file.key
|
rm -f file.key
|
||||||
|
|
||||||
.deploy_linux: &deploy_linux |
|
.deploy_linux: &deploy_linux |
|
||||||
rsync -rlv --chmod=Fu=rw,Fg=r,Fo=r --ignore-existing build/OUTPUT/Packages/*.AppImage $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM/$APP_FOLDER
|
rsync -rlv --ignore-existing build/OUTPUT/Packages/*.AppImage $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM/$APP_FOLDER
|
||||||
if [[ $MAKE_RELEASE_FILE_URL != "" ]]; then
|
if [[ $MAKE_RELEASE_FILE_URL != "" ]]; then
|
||||||
rsync -rlv --chmod=Fu=rw,Fg=r,Fo=r build/OUTPUT/Packages/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM
|
rsync -rlv build/OUTPUT/Packages/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM
|
||||||
rsync -rlv --chmod=Fu=rw,Fg=r,Fo=r build/OUTPUT/Packages/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM
|
rsync -rlv build/OUTPUT/Packages/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM
|
||||||
fi
|
fi
|
||||||
|
|
||||||
.linux-desktop:
|
.linux-desktop:
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
.macosx-desktop:
|
.macosx-desktop:
|
||||||
stage: build
|
stage: build
|
||||||
tags: [ "macmini-m1-xcode15-flat" ]
|
tags: [ "macmini-m1-xcode15" ]
|
||||||
rules:
|
rules:
|
||||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_MACOSX == null
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_MACOSX == null
|
||||||
- if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_MACOSX == null
|
- if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_MACOSX == null
|
||||||
|
|
@ -93,7 +93,7 @@ macosx-ninja-novideo:
|
||||||
# WAIT for QT6 for arm64
|
# WAIT for QT6 for arm64
|
||||||
macosx-ninja-package:
|
macosx-ninja-package:
|
||||||
stage: package
|
stage: package
|
||||||
tags: [ "macmini-m1-xcode15-flat" ]
|
tags: [ "macmini-m1-xcode15" ]
|
||||||
needs: []
|
needs: []
|
||||||
rules:
|
rules:
|
||||||
- !reference [.rules-merge-request-manual, rules]
|
- !reference [.rules-merge-request-manual, rules]
|
||||||
|
|
@ -117,7 +117,7 @@ macosx-ninja-package:
|
||||||
|
|
||||||
macosx-codesigning:
|
macosx-codesigning:
|
||||||
stage: signing
|
stage: signing
|
||||||
tags: [ "macmini-m1-xcode15-flat" ]
|
tags: [ "macmini-m1-xcode15" ]
|
||||||
needs:
|
needs:
|
||||||
- macosx-ninja-package
|
- macosx-ninja-package
|
||||||
rules:
|
rules:
|
||||||
|
|
@ -142,7 +142,7 @@ macosx-codesigning:
|
||||||
|
|
||||||
macosx-deploy:
|
macosx-deploy:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
tags: [ "macmini-m1-xcode15-flat" ]
|
tags: [ "macmini-m1-xcode15" ]
|
||||||
needs:
|
needs:
|
||||||
- macosx-codesigning
|
- macosx-codesigning
|
||||||
only:
|
only:
|
||||||
|
|
@ -160,7 +160,7 @@ macosx-deploy:
|
||||||
|
|
||||||
macosx-makefile-plugins-deploy:
|
macosx-makefile-plugins-deploy:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
tags: [ "macmini-m1-xcode15-flat" ]
|
tags: [ "macmini-m1-xcode15" ]
|
||||||
needs:
|
needs:
|
||||||
- macosx-makefile
|
- macosx-makefile
|
||||||
only:
|
only:
|
||||||
|
|
|
||||||
|
|
@ -238,9 +238,9 @@ win64-codesigning:
|
||||||
- if: $DEPLOY_WINDOWS
|
- if: $DEPLOY_WINDOWS
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- rsync --perms --chmod=Fu=rw,Fg=r,Fo=r build-desktop/OUTPUT/Packages/*.exe ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/${APP_FOLDER}
|
- scp -pr build-desktop/OUTPUT/Packages/*.exe ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/${APP_FOLDER}
|
||||||
- if ($MAKE_RELEASE_FILE_URL) { rsync --perms --chmod=Fu=rw,Fg=r,Fo=r build-desktop/OUTPUT/Packages/RELEASE ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
|
- if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/Packages/RELEASE ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
|
||||||
- if ($MAKE_RELEASE_FILE_URL) { rsync --perms --chmod=Fu=rw,Fg=r,Fo=r build-desktop/OUTPUT/Packages/RELEASE ${MAIN_DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
|
- if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/Packages/RELEASE ${MAIN_DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
|
||||||
|
|
||||||
win64-ninja-vs2022-upload:
|
win64-ninja-vs2022-upload:
|
||||||
extends:
|
extends:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(Linphone VERSION 6.2.0 LANGUAGES CXX)
|
project(Linphone VERSION 6.1.0 LANGUAGES CXX)
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# PACKAGES
|
# PACKAGES
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ AccountCore::AccountCore(const std::shared_ptr<linphone::Account> &account) : QO
|
||||||
? Utils::coreStringToAppString(params->getAudioVideoConferenceFactoryAddress()->asString())
|
? Utils::coreStringToAppString(params->getAudioVideoConferenceFactoryAddress()->asString())
|
||||||
: "";
|
: "";
|
||||||
mLimeServerUrl = Utils::coreStringToAppString(params->getLimeServerUrl());
|
mLimeServerUrl = Utils::coreStringToAppString(params->getLimeServerUrl());
|
||||||
mCcmpServerUrl = Utils::coreStringToAppString(params->getCcmpServerUrl());
|
|
||||||
|
|
||||||
// Add listener
|
// Add listener
|
||||||
mAccountModel = Utils::makeQObject_ptr<AccountModel>(account); // OK
|
mAccountModel = Utils::makeQObject_ptr<AccountModel>(account); // OK
|
||||||
|
|
@ -149,7 +148,6 @@ AccountCore::AccountCore(const AccountCore &accountCore) {
|
||||||
mConferenceFactoryAddress = accountCore.mConferenceFactoryAddress;
|
mConferenceFactoryAddress = accountCore.mConferenceFactoryAddress;
|
||||||
mAudioVideoConferenceFactoryAddress = accountCore.mAudioVideoConferenceFactoryAddress;
|
mAudioVideoConferenceFactoryAddress = accountCore.mAudioVideoConferenceFactoryAddress;
|
||||||
mLimeServerUrl = accountCore.mLimeServerUrl;
|
mLimeServerUrl = accountCore.mLimeServerUrl;
|
||||||
mCcmpServerUrl = accountCore.mCcmpServerUrl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AccountCore::setSelf(QSharedPointer<AccountCore> me) {
|
void AccountCore::setSelf(QSharedPointer<AccountCore> me) {
|
||||||
|
|
@ -238,10 +236,6 @@ void AccountCore::setSelf(QSharedPointer<AccountCore> me) {
|
||||||
mAccountModelConnection->makeConnectToModel(&AccountModel::limeServerUrlChanged, [this](QString value) {
|
mAccountModelConnection->makeConnectToModel(&AccountModel::limeServerUrlChanged, [this](QString value) {
|
||||||
mAccountModelConnection->invokeToCore([this, value]() { onLimeServerUrlChanged(value); });
|
mAccountModelConnection->invokeToCore([this, value]() { onLimeServerUrlChanged(value); });
|
||||||
});
|
});
|
||||||
mAccountModelConnection->makeConnectToModel(&AccountModel::ccmpServerUrlChanged, [this](QString value) {
|
|
||||||
mAccountModelConnection->invokeToCore([this, value]() { onCcmpServerUrlChanged(value); });
|
|
||||||
});
|
|
||||||
|
|
||||||
mAccountModelConnection->makeConnectToModel(
|
mAccountModelConnection->makeConnectToModel(
|
||||||
&AccountModel::removed, [this]() { mAccountModelConnection->invokeToCore([this]() { emit removed(); }); });
|
&AccountModel::removed, [this]() { mAccountModelConnection->invokeToCore([this]() { emit removed(); }); });
|
||||||
|
|
||||||
|
|
@ -333,7 +327,6 @@ void AccountCore::reset(const AccountCore &accountCore) {
|
||||||
setConferenceFactoryAddress(accountCore.mConferenceFactoryAddress);
|
setConferenceFactoryAddress(accountCore.mConferenceFactoryAddress);
|
||||||
setAudioVideoConferenceFactoryAddress(accountCore.mAudioVideoConferenceFactoryAddress);
|
setAudioVideoConferenceFactoryAddress(accountCore.mAudioVideoConferenceFactoryAddress);
|
||||||
setLimeServerUrl(accountCore.mLimeServerUrl);
|
setLimeServerUrl(accountCore.mLimeServerUrl);
|
||||||
setCcmpServerUrl(accountCore.mCcmpServerUrl);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::shared_ptr<AccountModel> &AccountCore::getModel() const {
|
const std::shared_ptr<AccountModel> &AccountCore::getModel() const {
|
||||||
|
|
@ -581,10 +574,6 @@ QString AccountCore::getLimeServerUrl() {
|
||||||
return mLimeServerUrl;
|
return mLimeServerUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString AccountCore::getCcmpServerUrl() {
|
|
||||||
return mCcmpServerUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccountCore::setMwiServerAddress(QString value) {
|
void AccountCore::setMwiServerAddress(QString value) {
|
||||||
if (mMwiServerAddress != value) {
|
if (mMwiServerAddress != value) {
|
||||||
mMwiServerAddress = value;
|
mMwiServerAddress = value;
|
||||||
|
|
@ -689,14 +678,6 @@ void AccountCore::setLimeServerUrl(QString value) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AccountCore::setCcmpServerUrl(QString value) {
|
|
||||||
if (mCcmpServerUrl != value) {
|
|
||||||
mCcmpServerUrl = value;
|
|
||||||
emit ccmpServerUrlChanged();
|
|
||||||
setIsSaved(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool AccountCore::isSaved() const {
|
bool AccountCore::isSaved() const {
|
||||||
return mIsSaved;
|
return mIsSaved;
|
||||||
}
|
}
|
||||||
|
|
@ -809,13 +790,6 @@ void AccountCore::onLimeServerUrlChanged(QString value) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AccountCore::onCcmpServerUrlChanged(QString value) {
|
|
||||||
if (value != mCcmpServerUrl) {
|
|
||||||
mCcmpServerUrl = value;
|
|
||||||
emit ccmpServerUrlChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccountCore::writeIntoModel(std::shared_ptr<AccountModel> model) const {
|
void AccountCore::writeIntoModel(std::shared_ptr<AccountModel> model) const {
|
||||||
mustBeInLinphoneThread(getClassName() + Q_FUNC_INFO);
|
mustBeInLinphoneThread(getClassName() + Q_FUNC_INFO);
|
||||||
model->setMwiServerAddress(mMwiServerAddress);
|
model->setMwiServerAddress(mMwiServerAddress);
|
||||||
|
|
@ -832,7 +806,6 @@ void AccountCore::writeIntoModel(std::shared_ptr<AccountModel> model) const {
|
||||||
model->setConferenceFactoryAddress(mConferenceFactoryAddress);
|
model->setConferenceFactoryAddress(mConferenceFactoryAddress);
|
||||||
model->setAudioVideoConferenceFactoryAddress(mAudioVideoConferenceFactoryAddress);
|
model->setAudioVideoConferenceFactoryAddress(mAudioVideoConferenceFactoryAddress);
|
||||||
model->setLimeServerUrl(mLimeServerUrl);
|
model->setLimeServerUrl(mLimeServerUrl);
|
||||||
model->setCcmpServerUrl(mCcmpServerUrl);
|
|
||||||
model->setVoicemailAddress(mVoicemailAddress);
|
model->setVoicemailAddress(mVoicemailAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -852,7 +825,6 @@ void AccountCore::writeFromModel(const std::shared_ptr<AccountModel> &model) {
|
||||||
onConferenceFactoryAddressChanged(model->getConferenceFactoryAddress());
|
onConferenceFactoryAddressChanged(model->getConferenceFactoryAddress());
|
||||||
onAudioVideoConferenceFactoryAddressChanged(model->getAudioVideoConferenceFactoryAddress());
|
onAudioVideoConferenceFactoryAddressChanged(model->getAudioVideoConferenceFactoryAddress());
|
||||||
onLimeServerUrlChanged(model->getLimeServerUrl());
|
onLimeServerUrlChanged(model->getLimeServerUrl());
|
||||||
onCcmpServerUrlChanged(model->getCcmpServerUrl());
|
|
||||||
onVoicemailAddressChanged(model->getVoicemailAddress());
|
onVoicemailAddressChanged(model->getVoicemailAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ public:
|
||||||
Q_PROPERTY(LinphoneEnums::Presence explicitPresence MEMBER mExplicitPresence NOTIFY presenceChanged)
|
Q_PROPERTY(LinphoneEnums::Presence explicitPresence MEMBER mExplicitPresence NOTIFY presenceChanged)
|
||||||
Q_PROPERTY(QString presenceNote READ getPresenceNote WRITE setPresenceNote NOTIFY presenceChanged)
|
Q_PROPERTY(QString presenceNote READ getPresenceNote WRITE setPresenceNote NOTIFY presenceChanged)
|
||||||
Q_PROPERTY(int maxPresenceNoteSize MEMBER mMaxPresenceNoteSize CONSTANT)
|
Q_PROPERTY(int maxPresenceNoteSize MEMBER mMaxPresenceNoteSize CONSTANT)
|
||||||
Q_PROPERTY(QString ccmpServerUrl READ getCcmpServerUrl WRITE setCcmpServerUrl NOTIFY ccmpServerUrlChanged)
|
|
||||||
|
|
||||||
DECLARE_CORE_GET(int, voicemailCount, VoicemailCount)
|
DECLARE_CORE_GET(int, voicemailCount, VoicemailCount)
|
||||||
static QSharedPointer<AccountCore> create(const std::shared_ptr<linphone::Account> &account);
|
static QSharedPointer<AccountCore> create(const std::shared_ptr<linphone::Account> &account);
|
||||||
|
|
@ -144,7 +143,6 @@ public:
|
||||||
QString getAudioVideoConferenceFactoryAddress();
|
QString getAudioVideoConferenceFactoryAddress();
|
||||||
QString getLimeServerUrl();
|
QString getLimeServerUrl();
|
||||||
QString getVoicemailAddress();
|
QString getVoicemailAddress();
|
||||||
QString getCcmpServerUrl();
|
|
||||||
|
|
||||||
void setMwiServerAddress(QString value);
|
void setMwiServerAddress(QString value);
|
||||||
void setTransport(QString value);
|
void setTransport(QString value);
|
||||||
|
|
@ -159,7 +157,6 @@ public:
|
||||||
void setAudioVideoConferenceFactoryAddress(QString value);
|
void setAudioVideoConferenceFactoryAddress(QString value);
|
||||||
void setLimeServerUrl(QString value);
|
void setLimeServerUrl(QString value);
|
||||||
void setVoicemailAddress(QString value);
|
void setVoicemailAddress(QString value);
|
||||||
void setCcmpServerUrl(QString value);
|
|
||||||
|
|
||||||
bool isSaved() const;
|
bool isSaved() const;
|
||||||
void setIsSaved(bool saved);
|
void setIsSaved(bool saved);
|
||||||
|
|
@ -178,7 +175,6 @@ public:
|
||||||
void onConferenceFactoryAddressChanged(QString value);
|
void onConferenceFactoryAddressChanged(QString value);
|
||||||
void onAudioVideoConferenceFactoryAddressChanged(QString value);
|
void onAudioVideoConferenceFactoryAddressChanged(QString value);
|
||||||
void onLimeServerUrlChanged(QString value);
|
void onLimeServerUrlChanged(QString value);
|
||||||
void onCcmpServerUrlChanged(QString value);
|
|
||||||
|
|
||||||
DECLARE_CORE_GET(bool, showMwi, ShowMwi)
|
DECLARE_CORE_GET(bool, showMwi, ShowMwi)
|
||||||
|
|
||||||
|
|
@ -224,7 +220,6 @@ signals:
|
||||||
void isSavedChanged();
|
void isSavedChanged();
|
||||||
void voicemailAddressChanged();
|
void voicemailAddressChanged();
|
||||||
void presenceChanged();
|
void presenceChanged();
|
||||||
void ccmpServerUrlChanged();
|
|
||||||
|
|
||||||
void setValueFailed(const QString &error);
|
void setValueFailed(const QString &error);
|
||||||
|
|
||||||
|
|
@ -273,7 +268,6 @@ private:
|
||||||
QString mAudioVideoConferenceFactoryAddress;
|
QString mAudioVideoConferenceFactoryAddress;
|
||||||
QString mLimeServerUrl;
|
QString mLimeServerUrl;
|
||||||
QString mVoicemailAddress;
|
QString mVoicemailAddress;
|
||||||
QString mCcmpServerUrl;
|
|
||||||
LinphoneEnums::Presence mPresence = LinphoneEnums::Presence::Undefined;
|
LinphoneEnums::Presence mPresence = LinphoneEnums::Presence::Undefined;
|
||||||
LinphoneEnums::Presence mExplicitPresence;
|
LinphoneEnums::Presence mExplicitPresence;
|
||||||
QString mPresenceNote;
|
QString mPresenceNote;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2010-2026 Belledonne Communications SARL.
|
* Copyright (c) 2010-2024 Belledonne Communications SARL.
|
||||||
*
|
*
|
||||||
* This file is part of linphone-desktop
|
* This file is part of linphone-desktop
|
||||||
* (see https://www.linphone.org).
|
* (see https://www.linphone.org).
|
||||||
|
|
@ -28,8 +28,6 @@
|
||||||
#include "tool/Utils.hpp"
|
#include "tool/Utils.hpp"
|
||||||
#include "tool/thread/SafeConnection.hpp"
|
#include "tool/thread/SafeConnection.hpp"
|
||||||
|
|
||||||
#include <QQuickWindow>
|
|
||||||
|
|
||||||
DEFINE_ABSTRACT_OBJECT(CallCore)
|
DEFINE_ABSTRACT_OBJECT(CallCore)
|
||||||
|
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
|
|
@ -451,44 +449,6 @@ void CallCore::setSelf(QSharedPointer<CallCore> me) {
|
||||||
setVideoStats(videoStats);
|
setVideoStats(videoStats);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mCallModelConnection->makeConnectToModel(&CallModel::headsetAnswerCallRequested, [this]() {
|
|
||||||
mCallModelConnection->invokeToCore([this]() {
|
|
||||||
const auto callList = App::getInstance()->getCallList();
|
|
||||||
const auto currentPendingCall = callList->getFirstIncommingPendingCall();
|
|
||||||
if (!currentPendingCall.isNull()) {
|
|
||||||
const auto gui = new CallGui(currentPendingCall);
|
|
||||||
Utils::openCallsWindow(gui);
|
|
||||||
currentPendingCall->lAccept(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
mCallModelConnection->makeConnectToModel(&CallModel::headsetEndCallRequested, [this]() {
|
|
||||||
mCallModelConnection->invokeToCore([this]() {
|
|
||||||
const auto window = Utils::getOrCreateCallsWindow();
|
|
||||||
window->setProperty("callTerminatedByUser", true);
|
|
||||||
lTerminate();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
mCallModelConnection->makeConnectToModel(&CallModel::headsetHoldCallRequested, [this]() {
|
|
||||||
mCallModelConnection->invokeToCore([this]() { lSetPaused(true); });
|
|
||||||
});
|
|
||||||
mCallModelConnection->makeConnectToModel(&CallModel::headsetMicrophoneMuteToggled, [this](bool mute) {
|
|
||||||
mCallModelConnection->invokeToCore([this, mute]() { lSetMicrophoneMuted(mute); });
|
|
||||||
});
|
|
||||||
mCallModelConnection->makeConnectToModel(&CallModel::headsetRejectCallRequested, [this]() {
|
|
||||||
mCallModelConnection->invokeToCore([this]() {
|
|
||||||
const auto callList = App::getInstance()->getCallList();
|
|
||||||
const auto currentPendingCall = callList->getFirstIncommingPendingCall();
|
|
||||||
if (!currentPendingCall.isNull()) {
|
|
||||||
currentPendingCall->lDecline();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
mCallModelConnection->makeConnectToModel(&CallModel::headsetResumeCallRequested, [this]() {
|
|
||||||
mCallModelConnection->invokeToCore([this]() { lSetPaused(false); });
|
|
||||||
});
|
|
||||||
|
|
||||||
if (mShouldFindRemoteFriend) findRemoteFriend(me);
|
if (mShouldFindRemoteFriend) findRemoteFriend(me);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,32 +25,20 @@
|
||||||
|
|
||||||
DEFINE_ABSTRACT_OBJECT(CallProxy)
|
DEFINE_ABSTRACT_OBJECT(CallProxy)
|
||||||
|
|
||||||
CallProxy::CallProxy() : SortFilterProxy() {
|
CallProxy::CallProxy(QObject *parent) : LimitProxy(parent) {
|
||||||
mShowCurrentCall = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CallProxy::~CallProxy() {
|
CallProxy::~CallProxy() {
|
||||||
}
|
}
|
||||||
|
|
||||||
CallGui *CallProxy::getCurrentCall() {
|
CallGui *CallProxy::getCurrentCall() {
|
||||||
auto model = qobject_cast<CallList *>(sourceModel());
|
auto model = getListModel<CallList>();
|
||||||
if (!mCurrentCall && model) mCurrentCall = model->getCurrentCall();
|
if (!mCurrentCall && model) mCurrentCall = model->getCurrentCall();
|
||||||
return mCurrentCall;
|
return mCurrentCall;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CallProxy::setShowCurrentCall(bool show) {
|
|
||||||
if (mShowCurrentCall != show) {
|
|
||||||
mShowCurrentCall = show;
|
|
||||||
emit showCurrentCallChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CallProxy::showCurrentCall() const {
|
|
||||||
return mShowCurrentCall;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CallProxy::setCurrentCall(CallGui *call) {
|
void CallProxy::setCurrentCall(CallGui *call) {
|
||||||
qobject_cast<CallList *>(sourceModel())->setCurrentCall(call);
|
getListModel<CallList>()->setCurrentCall(call);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset the default account to let UI build its new object if needed.
|
// Reset the default account to let UI build its new object if needed.
|
||||||
|
|
@ -60,12 +48,12 @@ void CallProxy::resetCurrentCall() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CallProxy::getHaveCall() const {
|
bool CallProxy::getHaveCall() const {
|
||||||
auto model = qobject_cast<CallList *>(sourceModel());
|
auto model = getListModel<CallList>();
|
||||||
return model ? model->getHaveCall() : false;
|
return model ? model->getHaveCall() : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CallProxy::setSourceModel(QAbstractItemModel *model) {
|
void CallProxy::setSourceModel(QAbstractItemModel *model) {
|
||||||
auto oldCallList = qobject_cast<CallList *>(sourceModel());
|
auto oldCallList = getListModel<CallList>();
|
||||||
if (oldCallList) {
|
if (oldCallList) {
|
||||||
disconnect(oldCallList);
|
disconnect(oldCallList);
|
||||||
}
|
}
|
||||||
|
|
@ -75,24 +63,24 @@ void CallProxy::setSourceModel(QAbstractItemModel *model) {
|
||||||
connect(newCallList, &CallList::haveCallChanged, this, &CallProxy::haveCallChanged, Qt::QueuedConnection);
|
connect(newCallList, &CallList::haveCallChanged, this, &CallProxy::haveCallChanged, Qt::QueuedConnection);
|
||||||
connect(this, &CallProxy::lMergeAll, newCallList, &CallList::lMergeAll);
|
connect(this, &CallProxy::lMergeAll, newCallList, &CallList::lMergeAll);
|
||||||
}
|
}
|
||||||
QSortFilterProxyModel::setSourceModel(model);
|
setSourceModels(new SortFilterList(model));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CallProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const {
|
bool CallProxy::SortFilterList::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const {
|
||||||
bool show = (mFilterText.isEmpty() || mFilterText == "*");
|
bool show = (mFilterText.isEmpty() || mFilterText == "*");
|
||||||
auto callList = qobject_cast<CallList *>(sourceModel());
|
|
||||||
auto call = callList->getAt<CallCore>(sourceRow);
|
|
||||||
if (!mShowCurrentCall && call == callList->getCurrentCallCore()) return false;
|
|
||||||
if (!show) {
|
if (!show) {
|
||||||
QRegularExpression search(QRegularExpression::escape(mFilterText),
|
QRegularExpression search(QRegularExpression::escape(mFilterText),
|
||||||
QRegularExpression::CaseInsensitiveOption |
|
QRegularExpression::CaseInsensitiveOption |
|
||||||
QRegularExpression::UseUnicodePropertiesOption);
|
QRegularExpression::UseUnicodePropertiesOption);
|
||||||
|
auto call = qobject_cast<CallList *>(sourceModel())->getAt<CallCore>(sourceRow);
|
||||||
|
|
||||||
show = call->getRemoteAddress().contains(search);
|
show = call->getRemoteAddress().contains(search);
|
||||||
}
|
}
|
||||||
|
|
||||||
return show;
|
return show;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CallProxy::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const {
|
bool CallProxy::SortFilterList::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const {
|
||||||
auto l = getItemAtSource<CallList, CallCore>(sourceLeft.row());
|
auto l = getItemAtSource<CallList, CallCore>(sourceLeft.row());
|
||||||
auto r = getItemAtSource<CallList, CallCore>(sourceRight.row());
|
auto r = getItemAtSource<CallList, CallCore>(sourceRight.row());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,14 +28,15 @@
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
||||||
class CallProxy : public SortFilterProxy, public AbstractObject {
|
class CallProxy : public LimitProxy, public AbstractObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(CallGui *currentCall READ getCurrentCall WRITE setCurrentCall NOTIFY currentCallChanged)
|
Q_PROPERTY(CallGui *currentCall READ getCurrentCall WRITE setCurrentCall NOTIFY currentCallChanged)
|
||||||
Q_PROPERTY(bool haveCall READ getHaveCall NOTIFY haveCallChanged)
|
Q_PROPERTY(bool haveCall READ getHaveCall NOTIFY haveCallChanged)
|
||||||
Q_PROPERTY(bool showCurrentCall READ showCurrentCall WRITE setShowCurrentCall NOTIFY showCurrentCallChanged)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CallProxy();
|
DECLARE_SORTFILTER_CLASS()
|
||||||
|
|
||||||
|
CallProxy(QObject *parent = Q_NULLPTR);
|
||||||
~CallProxy();
|
~CallProxy();
|
||||||
|
|
||||||
// Get a new object from List or give the stored one.
|
// Get a new object from List or give the stored one.
|
||||||
|
|
@ -47,23 +48,15 @@ public:
|
||||||
|
|
||||||
bool getHaveCall() const;
|
bool getHaveCall() const;
|
||||||
|
|
||||||
void setShowCurrentCall(bool show);
|
|
||||||
bool showCurrentCall() const;
|
|
||||||
|
|
||||||
void setSourceModel(QAbstractItemModel *sourceModel) override;
|
void setSourceModel(QAbstractItemModel *sourceModel) override;
|
||||||
|
|
||||||
virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
|
|
||||||
virtual bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void lMergeAll();
|
void lMergeAll();
|
||||||
void currentCallChanged();
|
void currentCallChanged();
|
||||||
void haveCallChanged();
|
void haveCallChanged();
|
||||||
void showCurrentCallChanged();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CallGui *mCurrentCall = nullptr; // When null, a new UI object is build from List
|
CallGui *mCurrentCall = nullptr; // When null, a new UI object is build from List
|
||||||
bool mShowCurrentCall = false;
|
|
||||||
|
|
||||||
DECLARE_ABSTRACT_OBJECT
|
DECLARE_ABSTRACT_OBJECT
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -394,7 +394,6 @@ void ChatCore::setSelf(QSharedPointer<ChatCore> me) {
|
||||||
[this](std::shared_ptr<linphone::Friend> f) { updateInfo(f); });
|
[this](std::shared_ptr<linphone::Friend> f) { updateInfo(f); });
|
||||||
mCoreModelConnection->makeConnectToModel(&CoreModel::friendRemoved,
|
mCoreModelConnection->makeConnectToModel(&CoreModel::friendRemoved,
|
||||||
[this](std::shared_ptr<linphone::Friend> f) { updateInfo(f, true); });
|
[this](std::shared_ptr<linphone::Friend> f) { updateInfo(f, true); });
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QDateTime ChatCore::getLastUpdatedTime() const {
|
QDateTime ChatCore::getLastUpdatedTime() const {
|
||||||
|
|
|
||||||
|
|
@ -115,17 +115,11 @@ ChatMessageCore::ChatMessageCore(const std::shared_ptr<linphone::ChatMessage> &c
|
||||||
if (chatmessage) {
|
if (chatmessage) {
|
||||||
mChatMessageModel = Utils::makeQObject_ptr<ChatMessageModel>(chatmessage);
|
mChatMessageModel = Utils::makeQObject_ptr<ChatMessageModel>(chatmessage);
|
||||||
mChatMessageModel->setSelf(mChatMessageModel);
|
mChatMessageModel->setSelf(mChatMessageModel);
|
||||||
mText = ToolModel::getMessageFromMessage(chatmessage);
|
mText = ToolModel::getMessageFromContent(chatmessage->getContents());
|
||||||
mUtf8Text = mChatMessageModel->getUtf8Text();
|
mUtf8Text = mChatMessageModel->getUtf8Text();
|
||||||
mHasTextContent = mChatMessageModel->getHasTextContent();
|
mHasTextContent = mChatMessageModel->getHasTextContent();
|
||||||
mTimestamp = QDateTime::fromSecsSinceEpoch(chatmessage->getTime());
|
mTimestamp = QDateTime::fromSecsSinceEpoch(chatmessage->getTime());
|
||||||
mIsOutgoing = chatmessage->isOutgoing();
|
mIsOutgoing = chatmessage->isOutgoing();
|
||||||
mIsRetractable =
|
|
||||||
chatmessage->isOutgoing() && chatmessage->isRetractable() && !chatmessage->getChatRoom()->isReadOnly();
|
|
||||||
mIsRetracted = chatmessage->isRetracted();
|
|
||||||
mIsEditable =
|
|
||||||
chatmessage->isOutgoing() && chatmessage->isEditable() && !chatmessage->getChatRoom()->isReadOnly();
|
|
||||||
mIsEdited = chatmessage->isEdited();
|
|
||||||
mIsRemoteMessage = !chatmessage->isOutgoing();
|
mIsRemoteMessage = !chatmessage->isOutgoing();
|
||||||
mPeerAddress = Utils::coreStringToAppString(chatmessage->getPeerAddress()->asStringUriOnly());
|
mPeerAddress = Utils::coreStringToAppString(chatmessage->getPeerAddress()->asStringUriOnly());
|
||||||
mPeerName = ToolModel::getDisplayName(chatmessage->getPeerAddress());
|
mPeerName = ToolModel::getDisplayName(chatmessage->getPeerAddress());
|
||||||
|
|
@ -197,7 +191,7 @@ ChatMessageCore::ChatMessageCore(const std::shared_ptr<linphone::ChatMessage> &c
|
||||||
if (mIsReply) {
|
if (mIsReply) {
|
||||||
auto replymessage = chatmessage->getReplyMessage();
|
auto replymessage = chatmessage->getReplyMessage();
|
||||||
if (replymessage) {
|
if (replymessage) {
|
||||||
mReplyText = ToolModel::getMessageFromMessage(replymessage);
|
mReplyText = ToolModel::getMessageFromContent(replymessage->getContents());
|
||||||
if (mIsFromChatGroup) mRepliedToName = ToolModel::getDisplayName(replymessage->getFromAddress());
|
if (mIsFromChatGroup) mRepliedToName = ToolModel::getDisplayName(replymessage->getFromAddress());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -213,9 +207,6 @@ void ChatMessageCore::setSelf(QSharedPointer<ChatMessageCore> me) {
|
||||||
mChatMessageModelConnection->makeConnectToCore(&ChatMessageCore::lDelete, [this] {
|
mChatMessageModelConnection->makeConnectToCore(&ChatMessageCore::lDelete, [this] {
|
||||||
mChatMessageModelConnection->invokeToModel([this] { mChatMessageModel->deleteMessageFromChatRoom(true); });
|
mChatMessageModelConnection->invokeToModel([this] { mChatMessageModel->deleteMessageFromChatRoom(true); });
|
||||||
});
|
});
|
||||||
mChatMessageModelConnection->makeConnectToCore(&ChatMessageCore::lRetract, [this] {
|
|
||||||
mChatMessageModelConnection->invokeToModel([this] { mChatMessageModel->retractMessageFromChatRoom(); });
|
|
||||||
});
|
|
||||||
mChatMessageModelConnection->makeConnectToModel(&ChatMessageModel::messageDeleted, [this](bool deletedByUser) {
|
mChatMessageModelConnection->makeConnectToModel(&ChatMessageModel::messageDeleted, [this](bool deletedByUser) {
|
||||||
mChatMessageModelConnection->invokeToCore([this, deletedByUser] {
|
mChatMessageModelConnection->invokeToCore([this, deletedByUser] {
|
||||||
//: Deleted
|
//: Deleted
|
||||||
|
|
@ -359,22 +350,6 @@ void ChatMessageCore::setSelf(QSharedPointer<ChatMessageCore> me) {
|
||||||
int duration = now.secsTo(QDateTime::fromSecsSinceEpoch(expireTime));
|
int duration = now.secsTo(QDateTime::fromSecsSinceEpoch(expireTime));
|
||||||
mChatMessageModelConnection->invokeToCore([this, duration] { setEphemeralDuration(duration); });
|
mChatMessageModelConnection->invokeToCore([this, duration] { setEphemeralDuration(duration); });
|
||||||
});
|
});
|
||||||
|
|
||||||
mChatMessageModelConnection->makeConnectToModel(&ChatMessageModel::retracted,
|
|
||||||
[this](const std::shared_ptr<linphone::ChatMessage> &message) {
|
|
||||||
QString text = ToolModel::getMessageFromMessage(message);
|
|
||||||
mChatMessageModelConnection->invokeToCore([this, text] {
|
|
||||||
setText(text);
|
|
||||||
setRetracted();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
mChatMessageModelConnection->makeConnectToModel(&ChatMessageModel::contentEdited,
|
|
||||||
[this](const std::shared_ptr<linphone::ChatMessage> &message) {
|
|
||||||
mChatMessageModelConnection->invokeToCore([this] {
|
|
||||||
mIsEdited = true;
|
|
||||||
emit edited();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ImdnStatus> ChatMessageCore::computeDeliveryStatus(const std::shared_ptr<linphone::ChatMessage> &message) {
|
QList<ImdnStatus> ChatMessageCore::computeDeliveryStatus(const std::shared_ptr<linphone::ChatMessage> &message) {
|
||||||
|
|
@ -497,22 +472,6 @@ void ChatMessageCore::setIsRead(bool read) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatMessageCore::setRetracted() {
|
|
||||||
if (!mIsRetracted) {
|
|
||||||
mIsRetracted = true;
|
|
||||||
emit isRetractedChanged();
|
|
||||||
emit messageStateChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ChatMessageCore::isRetracted() const {
|
|
||||||
return mIsRetracted;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ChatMessageCore::isEdited() const {
|
|
||||||
return mIsEdited;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString ChatMessageCore::getOwnReaction() const {
|
QString ChatMessageCore::getOwnReaction() const {
|
||||||
return mOwnReaction;
|
return mOwnReaction;
|
||||||
}
|
}
|
||||||
|
|
@ -691,4 +650,4 @@ std::shared_ptr<ChatMessageModel> ChatMessageCore::getModel() const {
|
||||||
|
|
||||||
ChatMessageContentGui *ChatMessageCore::getVoiceRecordingContent() const {
|
ChatMessageContentGui *ChatMessageCore::getVoiceRecordingContent() const {
|
||||||
return new ChatMessageContentGui(mVoiceRecordingContent);
|
return new ChatMessageContentGui(mVoiceRecordingContent);
|
||||||
}
|
}
|
||||||
|
|
@ -111,11 +111,6 @@ class ChatMessageCore : public QObject, public AbstractObject {
|
||||||
Q_PROPERTY(bool hasFileContent MEMBER mHasFileContent CONSTANT)
|
Q_PROPERTY(bool hasFileContent MEMBER mHasFileContent CONSTANT)
|
||||||
Q_PROPERTY(bool isVoiceRecording MEMBER mIsVoiceRecording CONSTANT)
|
Q_PROPERTY(bool isVoiceRecording MEMBER mIsVoiceRecording CONSTANT)
|
||||||
Q_PROPERTY(bool isCalendarInvite MEMBER mIsCalendarInvite CONSTANT)
|
Q_PROPERTY(bool isCalendarInvite MEMBER mIsCalendarInvite CONSTANT)
|
||||||
Q_PROPERTY(bool isOutgoing MEMBER mIsOutgoing CONSTANT)
|
|
||||||
Q_PROPERTY(bool isRetractable MEMBER mIsRetractable CONSTANT)
|
|
||||||
Q_PROPERTY(bool isRetracted READ isRetracted NOTIFY isRetractedChanged)
|
|
||||||
Q_PROPERTY(bool isEditable MEMBER mIsEditable CONSTANT)
|
|
||||||
Q_PROPERTY(bool isEdited READ isEdited NOTIFY edited)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static QSharedPointer<ChatMessageCore> create(const std::shared_ptr<linphone::ChatMessage> &chatmessage);
|
static QSharedPointer<ChatMessageCore> create(const std::shared_ptr<linphone::ChatMessage> &chatmessage);
|
||||||
|
|
@ -148,10 +143,6 @@ public:
|
||||||
bool isRead() const;
|
bool isRead() const;
|
||||||
void setIsRead(bool read);
|
void setIsRead(bool read);
|
||||||
|
|
||||||
bool isRetracted() const;
|
|
||||||
void setRetracted();
|
|
||||||
bool isEdited() const;
|
|
||||||
|
|
||||||
QString getOwnReaction() const;
|
QString getOwnReaction() const;
|
||||||
void setOwnReaction(const QString &reaction);
|
void setOwnReaction(const QString &reaction);
|
||||||
QString getTotalReactionsLabel() const;
|
QString getTotalReactionsLabel() const;
|
||||||
|
|
@ -185,12 +176,9 @@ signals:
|
||||||
void messageReactionChanged();
|
void messageReactionChanged();
|
||||||
void singletonReactionMapChanged();
|
void singletonReactionMapChanged();
|
||||||
void ephemeralDurationChanged(int duration);
|
void ephemeralDurationChanged(int duration);
|
||||||
void isRetractedChanged();
|
|
||||||
void edited();
|
|
||||||
|
|
||||||
void lDelete();
|
void lDelete();
|
||||||
void deleted();
|
void deleted();
|
||||||
void lRetract();
|
|
||||||
void lMarkAsRead();
|
void lMarkAsRead();
|
||||||
void readChanged();
|
void readChanged();
|
||||||
void lSendReaction(const QString &reaction);
|
void lSendReaction(const QString &reaction);
|
||||||
|
|
@ -226,10 +214,6 @@ private:
|
||||||
bool mIsVoiceRecording = false;
|
bool mIsVoiceRecording = false;
|
||||||
bool mIsEphemeral = false;
|
bool mIsEphemeral = false;
|
||||||
int mEphemeralDuration = 0;
|
int mEphemeralDuration = 0;
|
||||||
bool mIsRetractable = false;
|
|
||||||
bool mIsRetracted = false;
|
|
||||||
bool mIsEditable = false;
|
|
||||||
bool mIsEdited = false;
|
|
||||||
|
|
||||||
bool mIsOutgoing = false;
|
bool mIsOutgoing = false;
|
||||||
QString mTotalReactionsLabel;
|
QString mTotalReactionsLabel;
|
||||||
|
|
|
||||||
|
|
@ -64,8 +64,6 @@ void EventLogList::disconnectItem(const QSharedPointer<EventLogCore> &item) {
|
||||||
if (message) {
|
if (message) {
|
||||||
disconnect(message.get(), &ChatMessageCore::isReadChanged, this, nullptr);
|
disconnect(message.get(), &ChatMessageCore::isReadChanged, this, nullptr);
|
||||||
disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr);
|
disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr);
|
||||||
disconnect(message.get(), &ChatMessageCore::edited, this, nullptr);
|
|
||||||
disconnect(message.get(), &ChatMessageCore::isRetractedChanged, this, nullptr);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -79,23 +77,6 @@ void EventLogList::connectItem(const QSharedPointer<EventLogCore> &item) {
|
||||||
if (mChatCore) emit mChatCore->lUpdateLastMessage();
|
if (mChatCore) emit mChatCore->lUpdateLastMessage();
|
||||||
remove(item);
|
remove(item);
|
||||||
});
|
});
|
||||||
connect(message.get(), &ChatMessageCore::isRetractedChanged, this, [this, item] {
|
|
||||||
if (mChatCore) emit mChatCore->lUpdateUnreadCount();
|
|
||||||
});
|
|
||||||
connect(message.get(), &ChatMessageCore::edited, this, [this, item] {
|
|
||||||
auto eventLogModel = item->getModel();
|
|
||||||
mCoreModelConnection->invokeToModel([this, eventLogModel, item]() {
|
|
||||||
auto chatRoom = mChatCore->getModel()->getMonitor();
|
|
||||||
auto newEventLog = EventLogCore::create(eventLogModel->getEventLog(), chatRoom);
|
|
||||||
bool wasLastMessage =
|
|
||||||
mChatCore->getModel()->getLastChatMessage() == eventLogModel->getEventLog()->getChatMessage();
|
|
||||||
mCoreModelConnection->invokeToCore([this, newEventLog, wasLastMessage, item] {
|
|
||||||
connectItem(newEventLog);
|
|
||||||
replace(item, newEventLog);
|
|
||||||
if (wasLastMessage) mChatCore->setLastMessage(newEventLog->getChatMessageCore());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -205,4 +205,4 @@ void EventLogProxy::findIndexCorrespondingToFilter(int startIndex, bool forward,
|
||||||
auto listIndex = mapToSource(index(startIndex, 0)).row();
|
auto listIndex = mapToSource(index(startIndex, 0)).row();
|
||||||
eventLogList->findChatMessageWithFilter(filter, listIndex, forward, isFirstResearch);
|
eventLogList->findChatMessageWithFilter(filter, listIndex, forward, isFirstResearch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -21,15 +21,12 @@
|
||||||
#include "ConferenceInfoCore.hpp"
|
#include "ConferenceInfoCore.hpp"
|
||||||
|
|
||||||
#include "core/App.hpp"
|
#include "core/App.hpp"
|
||||||
#include "core/path/Paths.hpp"
|
|
||||||
#include "core/proxy/ListProxy.hpp"
|
#include "core/proxy/ListProxy.hpp"
|
||||||
#include "model/object/VariantObject.hpp"
|
#include "model/object/VariantObject.hpp"
|
||||||
#include "model/tool/ToolModel.hpp"
|
#include "model/tool/ToolModel.hpp"
|
||||||
#include "tool/Utils.hpp"
|
#include "tool/Utils.hpp"
|
||||||
#include "tool/thread/SafeConnection.hpp"
|
#include "tool/thread/SafeConnection.hpp"
|
||||||
|
|
||||||
#include <QDesktopServices>
|
|
||||||
|
|
||||||
DEFINE_ABSTRACT_OBJECT(ConferenceInfoCore)
|
DEFINE_ABSTRACT_OBJECT(ConferenceInfoCore)
|
||||||
|
|
||||||
QSharedPointer<ConferenceInfoCore>
|
QSharedPointer<ConferenceInfoCore>
|
||||||
|
|
@ -72,7 +69,6 @@ ConferenceInfoCore::ConferenceInfoCore(std::shared_ptr<linphone::ConferenceInfo>
|
||||||
mUri = address && address->isValid() && !address->getDomain().empty()
|
mUri = address && address->isValid() && !address->getDomain().empty()
|
||||||
? Utils::coreStringToAppString(address->asStringUriOnly())
|
? Utils::coreStringToAppString(address->asStringUriOnly())
|
||||||
: "";
|
: "";
|
||||||
mIcalendarString = Utils::coreStringToAppString(conferenceInfo->getIcalendarString());
|
|
||||||
mDateTime = QDateTime::fromMSecsSinceEpoch(conferenceInfo->getDateTime() * 1000);
|
mDateTime = QDateTime::fromMSecsSinceEpoch(conferenceInfo->getDateTime() * 1000);
|
||||||
mDuration = conferenceInfo->getDuration();
|
mDuration = conferenceInfo->getDuration();
|
||||||
mEndDateTime = mDateTime.addSecs(mDuration * 60);
|
mEndDateTime = mDateTime.addSecs(mDuration * 60);
|
||||||
|
|
@ -127,7 +123,6 @@ ConferenceInfoCore::ConferenceInfoCore(const ConferenceInfoCore &conferenceInfoC
|
||||||
mIsEnded = conferenceInfoCore.mIsEnded;
|
mIsEnded = conferenceInfoCore.mIsEnded;
|
||||||
mInviteEnabled = conferenceInfoCore.mInviteEnabled;
|
mInviteEnabled = conferenceInfoCore.mInviteEnabled;
|
||||||
mConferenceInfoState = conferenceInfoCore.mConferenceInfoState;
|
mConferenceInfoState = conferenceInfoCore.mConferenceInfoState;
|
||||||
mIcalendarString = conferenceInfoCore.mIcalendarString;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ConferenceInfoCore::~ConferenceInfoCore() {
|
ConferenceInfoCore::~ConferenceInfoCore() {
|
||||||
|
|
@ -606,9 +601,6 @@ void ConferenceInfoCore::save() {
|
||||||
} else lCritical() << "No default account";
|
} else lCritical() << "No default account";
|
||||||
// Add text capability for chat in conf
|
// Add text capability for chat in conf
|
||||||
linphoneConf->setCapability(linphone::StreamType::Text, true);
|
linphoneConf->setCapability(linphone::StreamType::Text, true);
|
||||||
if (SettingsModel::getInstance()->getCreateEndToEndEncryptedMeetingsAndGroupCalls())
|
|
||||||
linphoneConf->setSecurityLevel(linphone::Conference::SecurityLevel::EndToEnd);
|
|
||||||
else linphoneConf->setSecurityLevel(linphone::Conference::SecurityLevel::PointToPoint);
|
|
||||||
auto confInfoModel = Utils::makeQObject_ptr<ConferenceInfoModel>(linphoneConf);
|
auto confInfoModel = Utils::makeQObject_ptr<ConferenceInfoModel>(linphoneConf);
|
||||||
auto confSchedulerModel = confInfoModel->getConferenceScheduler();
|
auto confSchedulerModel = confInfoModel->getConferenceScheduler();
|
||||||
if (!confSchedulerModel) {
|
if (!confSchedulerModel) {
|
||||||
|
|
@ -658,14 +650,3 @@ bool ConferenceInfoCore::isAllDayConf() const {
|
||||||
return mDateTime.time().hour() == 0 && mDateTime.time().minute() == 0 && mEndDateTime.time().hour() == 23 &&
|
return mDateTime.time().hour() == 0 && mDateTime.time().minute() == 0 && mEndDateTime.time().hour() == 23 &&
|
||||||
mEndDateTime.time().minute() == 59;
|
mEndDateTime.time().minute() == 59;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConferenceInfoCore::exportConferenceToICS() const {
|
|
||||||
QString filePath(Paths::getAppLocalDirPath() + "conference.ics");
|
|
||||||
QFile file(filePath);
|
|
||||||
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
|
||||||
QTextStream out(&file);
|
|
||||||
out << mIcalendarString;
|
|
||||||
file.close();
|
|
||||||
}
|
|
||||||
QDesktopServices::openUrl(QUrl::fromLocalFile(filePath));
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2022 Belledonne Communications SARL.
|
* Copyright (c) 2022 Belledonne Communications SARL.
|
||||||
*
|
*
|
||||||
* This file is part of linphone-desktop
|
* This file is part of linphone-desktop
|
||||||
|
|
@ -135,8 +135,6 @@ public:
|
||||||
|
|
||||||
Q_INVOKABLE bool isAllDayConf() const;
|
Q_INVOKABLE bool isAllDayConf() const;
|
||||||
|
|
||||||
Q_INVOKABLE void exportConferenceToICS() const;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void dateTimeChanged();
|
void dateTimeChanged();
|
||||||
void endDateTimeChanged();
|
void endDateTimeChanged();
|
||||||
|
|
@ -179,7 +177,6 @@ private:
|
||||||
QString mSubject;
|
QString mSubject;
|
||||||
QString mDescription;
|
QString mDescription;
|
||||||
QString mUri;
|
QString mUri;
|
||||||
QString mIcalendarString;
|
|
||||||
QVariantList mParticipants;
|
QVariantList mParticipants;
|
||||||
QSharedPointer<TimeZoneModel> mTimeZoneModel;
|
QSharedPointer<TimeZoneModel> mTimeZoneModel;
|
||||||
LinphoneEnums::ConferenceSchedulerState mConferenceSchedulerState;
|
LinphoneEnums::ConferenceSchedulerState mConferenceSchedulerState;
|
||||||
|
|
|
||||||
|
|
@ -51,25 +51,8 @@ PayloadTypeCore::~PayloadTypeCore() {
|
||||||
|
|
||||||
void PayloadTypeCore::setSelf(QSharedPointer<PayloadTypeCore> me) {
|
void PayloadTypeCore::setSelf(QSharedPointer<PayloadTypeCore> me) {
|
||||||
mPayloadTypeModelConnection = SafeConnection<PayloadTypeCore, PayloadTypeModel>::create(me, mPayloadTypeModel);
|
mPayloadTypeModelConnection = SafeConnection<PayloadTypeCore, PayloadTypeModel>::create(me, mPayloadTypeModel);
|
||||||
mPayloadTypeModelConnection->makeConnectToCore(&PayloadTypeCore::setEnabled, [this](bool enabled) {
|
DEFINE_CORE_GETSET_CONNECT(mPayloadTypeModelConnection, PayloadTypeCore, PayloadTypeModel, mPayloadTypeModel, bool,
|
||||||
if (enabled != mEnabled) {
|
enabled, Enabled)
|
||||||
mChanged = true;
|
|
||||||
emit changed();
|
|
||||||
}
|
|
||||||
mEnabled = enabled;
|
|
||||||
});
|
|
||||||
mPayloadTypeModelConnection->makeConnectToModel(&PayloadTypeModel::enabledChanged, [this](bool enabled) {
|
|
||||||
mPayloadTypeModelConnection->invokeToCore([this, enabled]() {
|
|
||||||
if (mEnabled != enabled) {
|
|
||||||
mEnabled = enabled;
|
|
||||||
emit enabledChanged();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void PayloadTypeCore::save() {
|
|
||||||
if (mChanged) mPayloadTypeModelConnection->invokeToModel([this]() { mPayloadTypeModel->setEnabled(mEnabled); });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PayloadTypeCore::Family PayloadTypeCore::getFamily() {
|
PayloadTypeCore::Family PayloadTypeCore::getFamily() {
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ public:
|
||||||
const std::shared_ptr<linphone::PayloadType> &payloadType);
|
const std::shared_ptr<linphone::PayloadType> &payloadType);
|
||||||
|
|
||||||
PayloadTypeCore(Family family, const std::shared_ptr<linphone::PayloadType> &payloadType);
|
PayloadTypeCore(Family family, const std::shared_ptr<linphone::PayloadType> &payloadType);
|
||||||
PayloadTypeCore() {};
|
PayloadTypeCore(){};
|
||||||
~PayloadTypeCore();
|
~PayloadTypeCore();
|
||||||
|
|
||||||
void setSelf(QSharedPointer<PayloadTypeCore> me);
|
void setSelf(QSharedPointer<PayloadTypeCore> me);
|
||||||
|
|
@ -51,15 +51,9 @@ public:
|
||||||
bool isDownloadable();
|
bool isDownloadable();
|
||||||
QString getMimeType();
|
QString getMimeType();
|
||||||
|
|
||||||
Q_INVOKABLE void save();
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void changed();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Family mFamily;
|
Family mFamily;
|
||||||
bool mDownloadable = false;
|
bool mDownloadable = false;
|
||||||
bool mChanged = false;
|
|
||||||
DECLARE_CORE_GETSET_MEMBER(bool, enabled, Enabled)
|
DECLARE_CORE_GETSET_MEMBER(bool, enabled, Enabled)
|
||||||
DECLARE_CORE_MEMBER(QString, mimeType, MimeType)
|
DECLARE_CORE_MEMBER(QString, mimeType, MimeType)
|
||||||
DECLARE_CORE_MEMBER(QString, encoderDescription, EncoderDescription)
|
DECLARE_CORE_MEMBER(QString, encoderDescription, EncoderDescription)
|
||||||
|
|
|
||||||
|
|
@ -61,13 +61,6 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
|
||||||
mRingtoneFolder = mRingtonePath.left(mRingtonePath.lastIndexOf(QDir::separator()));
|
mRingtoneFolder = mRingtonePath.left(mRingtonePath.lastIndexOf(QDir::separator()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Network
|
|
||||||
mIpv6Enabled = settingsModel->getIpv6Enabled();
|
|
||||||
|
|
||||||
// Advanced
|
|
||||||
mAutoStart = settingsModel->getAutoStart();
|
|
||||||
mHideFps = settingsModel->getHideFps();
|
|
||||||
|
|
||||||
// Audio
|
// Audio
|
||||||
mCaptureDevices = settingsModel->getCaptureDevices();
|
mCaptureDevices = settingsModel->getCaptureDevices();
|
||||||
mPlaybackDevices = settingsModel->getPlaybackDevices();
|
mPlaybackDevices = settingsModel->getPlaybackDevices();
|
||||||
|
|
@ -123,6 +116,7 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
|
||||||
INIT_CORE_MEMBER(DisableBroadcastFeature, settingsModel)
|
INIT_CORE_MEMBER(DisableBroadcastFeature, settingsModel)
|
||||||
INIT_CORE_MEMBER(HideSettings, settingsModel)
|
INIT_CORE_MEMBER(HideSettings, settingsModel)
|
||||||
INIT_CORE_MEMBER(HideAccountSettings, settingsModel)
|
INIT_CORE_MEMBER(HideAccountSettings, settingsModel)
|
||||||
|
INIT_CORE_MEMBER(HideFps, settingsModel)
|
||||||
INIT_CORE_MEMBER(DisableCallRecordings, settingsModel)
|
INIT_CORE_MEMBER(DisableCallRecordings, settingsModel)
|
||||||
INIT_CORE_MEMBER(AssistantHideCreateAccount, settingsModel)
|
INIT_CORE_MEMBER(AssistantHideCreateAccount, settingsModel)
|
||||||
INIT_CORE_MEMBER(AssistantHideCreateAccount, settingsModel)
|
INIT_CORE_MEMBER(AssistantHideCreateAccount, settingsModel)
|
||||||
|
|
@ -138,6 +132,7 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
|
||||||
INIT_CORE_MEMBER(AutoStart, settingsModel)
|
INIT_CORE_MEMBER(AutoStart, settingsModel)
|
||||||
INIT_CORE_MEMBER(ExitOnClose, settingsModel)
|
INIT_CORE_MEMBER(ExitOnClose, settingsModel)
|
||||||
INIT_CORE_MEMBER(SyncLdapContacts, settingsModel)
|
INIT_CORE_MEMBER(SyncLdapContacts, settingsModel)
|
||||||
|
INIT_CORE_MEMBER(Ipv6Enabled, settingsModel)
|
||||||
INIT_CORE_MEMBER(ConfigLocale, settingsModel)
|
INIT_CORE_MEMBER(ConfigLocale, settingsModel)
|
||||||
INIT_CORE_MEMBER(DownloadFolder, settingsModel)
|
INIT_CORE_MEMBER(DownloadFolder, settingsModel)
|
||||||
|
|
||||||
|
|
@ -146,6 +141,7 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
|
||||||
INIT_CORE_MEMBER(CallToneIndicationsEnabled, settingsModel)
|
INIT_CORE_MEMBER(CallToneIndicationsEnabled, settingsModel)
|
||||||
INIT_CORE_MEMBER(CommandLine, settingsModel)
|
INIT_CORE_MEMBER(CommandLine, settingsModel)
|
||||||
INIT_CORE_MEMBER(DisableCommandLine, settingsModel)
|
INIT_CORE_MEMBER(DisableCommandLine, settingsModel)
|
||||||
|
INIT_CORE_MEMBER(DisableCallForward, settingsModel)
|
||||||
INIT_CORE_MEMBER(CallForwardToAddress, settingsModel)
|
INIT_CORE_MEMBER(CallForwardToAddress, settingsModel)
|
||||||
|
|
||||||
INIT_CORE_MEMBER(ThemeMainColor, settingsModel)
|
INIT_CORE_MEMBER(ThemeMainColor, settingsModel)
|
||||||
|
|
@ -214,10 +210,10 @@ SettingsCore::SettingsCore(const SettingsCore &settingsCore) {
|
||||||
mAssistantGoDirectlyToThirdPartySipAccountLogin = settingsCore.mAssistantGoDirectlyToThirdPartySipAccountLogin;
|
mAssistantGoDirectlyToThirdPartySipAccountLogin = settingsCore.mAssistantGoDirectlyToThirdPartySipAccountLogin;
|
||||||
mAssistantThirdPartySipAccountDomain = settingsCore.mAssistantThirdPartySipAccountDomain;
|
mAssistantThirdPartySipAccountDomain = settingsCore.mAssistantThirdPartySipAccountDomain;
|
||||||
mAssistantThirdPartySipAccountTransport = settingsCore.mAssistantThirdPartySipAccountTransport;
|
mAssistantThirdPartySipAccountTransport = settingsCore.mAssistantThirdPartySipAccountTransport;
|
||||||
|
mAutoStart = settingsCore.mAutoStart;
|
||||||
mExitOnClose = settingsCore.mExitOnClose;
|
mExitOnClose = settingsCore.mExitOnClose;
|
||||||
mSyncLdapContacts = settingsCore.mSyncLdapContacts;
|
mSyncLdapContacts = settingsCore.mSyncLdapContacts;
|
||||||
mIpv6Enabled = settingsCore.mIpv6Enabled;
|
mIpv6Enabled = settingsCore.mIpv6Enabled;
|
||||||
mAutoStart = settingsCore.mAutoStart;
|
|
||||||
mConfigLocale = settingsCore.mConfigLocale;
|
mConfigLocale = settingsCore.mConfigLocale;
|
||||||
mDownloadFolder = settingsCore.mDownloadFolder;
|
mDownloadFolder = settingsCore.mDownloadFolder;
|
||||||
mShortcutCount = settingsCore.mShortcutCount;
|
mShortcutCount = settingsCore.mShortcutCount;
|
||||||
|
|
@ -225,7 +221,7 @@ SettingsCore::SettingsCore(const SettingsCore &settingsCore) {
|
||||||
mCallToneIndicationsEnabled = settingsCore.mCallToneIndicationsEnabled;
|
mCallToneIndicationsEnabled = settingsCore.mCallToneIndicationsEnabled;
|
||||||
mCommandLine = settingsCore.mCommandLine;
|
mCommandLine = settingsCore.mCommandLine;
|
||||||
mDisableCommandLine = settingsCore.mDisableCommandLine;
|
mDisableCommandLine = settingsCore.mDisableCommandLine;
|
||||||
mCallForwardToAddress = settingsCore.mCallForwardToAddress;
|
mDisableCallForward = settingsCore.mDisableCallForward;
|
||||||
|
|
||||||
mDefaultDomain = settingsCore.mDefaultDomain;
|
mDefaultDomain = settingsCore.mDefaultDomain;
|
||||||
mShowAccountDevices = settingsCore.mShowAccountDevices;
|
mShowAccountDevices = settingsCore.mShowAccountDevices;
|
||||||
|
|
@ -264,31 +260,6 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
||||||
mSettingsModelConnection->invokeToCore([this, enabled]() { setEchoCancellationEnabled(enabled); });
|
mSettingsModelConnection->invokeToCore([this, enabled]() { setEchoCancellationEnabled(enabled); });
|
||||||
});
|
});
|
||||||
|
|
||||||
// IPV6
|
|
||||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::ipv6EnabledChanged, [this](const bool enabled) {
|
|
||||||
mSettingsModelConnection->invokeToCore([this, enabled]() { setIpv6Enabled(enabled); });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Call Forward
|
|
||||||
mSettingsModelConnection->makeConnectToModel(
|
|
||||||
&SettingsModel::callForwardToAddressChanged, [this](const QString address) {
|
|
||||||
mSettingsModelConnection->invokeToCore([this, address]() { setCallForwardToAddress(address); });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Hide FPS
|
|
||||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::hideFpsChanged, [this](const bool hide) {
|
|
||||||
mSettingsModelConnection->invokeToCore([this, hide]() { setHideFps(hide); });
|
|
||||||
});
|
|
||||||
|
|
||||||
// AutoStart
|
|
||||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::autoStartChanged, [this](const bool enabled) {
|
|
||||||
mSettingsModelConnection->invokeToCore([this, enabled]() {
|
|
||||||
bool emitSignal = mAutoStart != enabled;
|
|
||||||
setAutoStart(enabled);
|
|
||||||
if (emitSignal) emit autoStartChanged();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Auto download incoming files
|
// Auto download incoming files
|
||||||
mSettingsModelConnection->makeConnectToModel(
|
mSettingsModelConnection->makeConnectToModel(
|
||||||
&SettingsModel::autoDownloadReceivedFilesChanged, [this](const bool enabled) {
|
&SettingsModel::autoDownloadReceivedFilesChanged, [this](const bool enabled) {
|
||||||
|
|
@ -333,7 +304,7 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::playbackGainChanged, [this](const float value) {
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::playbackGainChanged, [this](const float value) {
|
||||||
mSettingsModelConnection->invokeToCore([this, value]() { setPlaybackGainFromModel(value); });
|
mSettingsModelConnection->invokeToCore([this, value]() { setPlaybackGain(value); });
|
||||||
});
|
});
|
||||||
|
|
||||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetCaptureGain, [this](const float value) {
|
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetCaptureGain, [this](const float value) {
|
||||||
|
|
@ -343,7 +314,7 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::captureGainChanged, [this](const float value) {
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::captureGainChanged, [this](const float value) {
|
||||||
mSettingsModelConnection->invokeToCore([this, value]() { setCaptureGainFromModel(value); });
|
mSettingsModelConnection->invokeToCore([this, value]() { setCaptureGain(value); });
|
||||||
});
|
});
|
||||||
|
|
||||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::micVolumeChanged, [this](const float value) {
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::micVolumeChanged, [this](const float value) {
|
||||||
|
|
@ -479,6 +450,8 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
||||||
ExitOnClose)
|
ExitOnClose)
|
||||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool,
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool,
|
||||||
syncLdapContacts, SyncLdapContacts)
|
syncLdapContacts, SyncLdapContacts)
|
||||||
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool, ipv6Enabled,
|
||||||
|
Ipv6Enabled)
|
||||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
||||||
configLocale, ConfigLocale)
|
configLocale, ConfigLocale)
|
||||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
||||||
|
|
@ -493,6 +466,10 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
||||||
commandLine, CommandLine)
|
commandLine, CommandLine)
|
||||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool,
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool,
|
||||||
disableCommandLine, DisableCommandLine)
|
disableCommandLine, DisableCommandLine)
|
||||||
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool,
|
||||||
|
disableCallForward, DisableCallForward)
|
||||||
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
||||||
|
callForwardToAddress, CallForwardToAddress)
|
||||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
||||||
themeAboutPictureUrl, ThemeAboutPictureUrl)
|
themeAboutPictureUrl, ThemeAboutPictureUrl)
|
||||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
|
||||||
|
|
@ -582,14 +559,13 @@ void SettingsCore::reset(const SettingsCore &settingsCore) {
|
||||||
setAssistantGoDirectlyToThirdPartySipAccountLogin(settingsCore.mAssistantGoDirectlyToThirdPartySipAccountLogin);
|
setAssistantGoDirectlyToThirdPartySipAccountLogin(settingsCore.mAssistantGoDirectlyToThirdPartySipAccountLogin);
|
||||||
setAssistantThirdPartySipAccountDomain(settingsCore.mAssistantThirdPartySipAccountDomain);
|
setAssistantThirdPartySipAccountDomain(settingsCore.mAssistantThirdPartySipAccountDomain);
|
||||||
setAssistantThirdPartySipAccountTransport(settingsCore.mAssistantThirdPartySipAccountTransport);
|
setAssistantThirdPartySipAccountTransport(settingsCore.mAssistantThirdPartySipAccountTransport);
|
||||||
|
setAutoStart(settingsCore.mAutoStart);
|
||||||
setExitOnClose(settingsCore.mExitOnClose);
|
setExitOnClose(settingsCore.mExitOnClose);
|
||||||
setSyncLdapContacts(settingsCore.mSyncLdapContacts);
|
setSyncLdapContacts(settingsCore.mSyncLdapContacts);
|
||||||
setCardDAVMinCharForResearch(settingsCore.mCardDAVMinCharForResearch);
|
setCardDAVMinCharForResearch(settingsCore.mCardDAVMinCharForResearch);
|
||||||
setIpv6Enabled(settingsCore.mIpv6Enabled);
|
setIpv6Enabled(settingsCore.mIpv6Enabled);
|
||||||
setAutoStart(settingsCore.mAutoStart);
|
|
||||||
setConfigLocale(settingsCore.mConfigLocale);
|
setConfigLocale(settingsCore.mConfigLocale);
|
||||||
setDownloadFolder(settingsCore.mDownloadFolder);
|
setDownloadFolder(settingsCore.mDownloadFolder);
|
||||||
setCallForwardToAddress(settingsCore.mCallForwardToAddress);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString SettingsCore::getConfigPath(const QCommandLineParser &parser) {
|
QString SettingsCore::getConfigPath(const QCommandLineParser &parser) {
|
||||||
|
|
@ -648,36 +624,6 @@ void SettingsCore::setEchoCancellationEnabled(bool enabled) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsCore::setIpv6Enabled(bool enabled) {
|
|
||||||
if (mIpv6Enabled != enabled) {
|
|
||||||
mIpv6Enabled = enabled;
|
|
||||||
emit ipv6EnabledChanged();
|
|
||||||
setIsSaved(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SettingsCore::setAutoStart(bool enabled) {
|
|
||||||
if (mAutoStart != enabled) {
|
|
||||||
mAutoStart = enabled;
|
|
||||||
setIsSaved(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SettingsCore::setCallForwardToAddress(QString address) {
|
|
||||||
if (mCallForwardToAddress != address) {
|
|
||||||
mCallForwardToAddress = address;
|
|
||||||
setIsSaved(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SettingsCore::setHideFps(bool hide) {
|
|
||||||
if (mHideFps != hide) {
|
|
||||||
mHideFps = hide;
|
|
||||||
emit hideFpsChanged();
|
|
||||||
setIsSaved(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SettingsCore::setAutoDownloadReceivedFiles(bool enabled) {
|
void SettingsCore::setAutoDownloadReceivedFiles(bool enabled) {
|
||||||
if (mAutoDownloadReceivedFiles != enabled) {
|
if (mAutoDownloadReceivedFiles != enabled) {
|
||||||
mAutoDownloadReceivedFiles = enabled;
|
mAutoDownloadReceivedFiles = enabled;
|
||||||
|
|
@ -770,7 +716,7 @@ bool SettingsCore::isSaved() const {
|
||||||
void SettingsCore::setIsSaved(bool saved) {
|
void SettingsCore::setIsSaved(bool saved) {
|
||||||
if (mIsSaved != saved) {
|
if (mIsSaved != saved) {
|
||||||
mIsSaved = saved;
|
mIsSaved = saved;
|
||||||
emit isSavedChanged(saved);
|
emit isSavedChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -821,13 +767,6 @@ void SettingsCore::setCaptureGain(float gain) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsCore::setCaptureGainFromModel(float gain) {
|
|
||||||
if (mCaptureGain != gain) {
|
|
||||||
mCaptureGain = gain;
|
|
||||||
emit captureGainChanged(gain);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap SettingsCore::getConferenceLayout() const {
|
QVariantMap SettingsCore::getConferenceLayout() const {
|
||||||
return mConferenceLayout;
|
return mConferenceLayout;
|
||||||
}
|
}
|
||||||
|
|
@ -872,13 +811,6 @@ void SettingsCore::setPlaybackGain(float gain) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsCore::setPlaybackGainFromModel(float gain) {
|
|
||||||
if (mPlaybackGain != gain) {
|
|
||||||
mPlaybackGain = gain;
|
|
||||||
emit playbackGainChanged(gain);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap SettingsCore::getCaptureDevice() const {
|
QVariantMap SettingsCore::getCaptureDevice() const {
|
||||||
return mCaptureDevice;
|
return mCaptureDevice;
|
||||||
}
|
}
|
||||||
|
|
@ -1076,6 +1008,10 @@ void SettingsCore::setShowAccountDevices(bool show) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SettingsCore::getAutoStart() const {
|
||||||
|
return mAutoStart;
|
||||||
|
}
|
||||||
|
|
||||||
bool SettingsCore::getExitOnClose() const {
|
bool SettingsCore::getExitOnClose() const {
|
||||||
return mExitOnClose;
|
return mExitOnClose;
|
||||||
}
|
}
|
||||||
|
|
@ -1163,13 +1099,12 @@ void SettingsCore::writeIntoModel(std::shared_ptr<SettingsModel> model) const {
|
||||||
model->setAssistantGoDirectlyToThirdPartySipAccountLogin(mAssistantGoDirectlyToThirdPartySipAccountLogin);
|
model->setAssistantGoDirectlyToThirdPartySipAccountLogin(mAssistantGoDirectlyToThirdPartySipAccountLogin);
|
||||||
model->setAssistantThirdPartySipAccountDomain(mAssistantThirdPartySipAccountDomain);
|
model->setAssistantThirdPartySipAccountDomain(mAssistantThirdPartySipAccountDomain);
|
||||||
model->setAssistantThirdPartySipAccountTransport(mAssistantThirdPartySipAccountTransport);
|
model->setAssistantThirdPartySipAccountTransport(mAssistantThirdPartySipAccountTransport);
|
||||||
|
model->setAutoStart(mAutoStart);
|
||||||
model->setExitOnClose(mExitOnClose);
|
model->setExitOnClose(mExitOnClose);
|
||||||
model->setSyncLdapContacts(mSyncLdapContacts);
|
model->setSyncLdapContacts(mSyncLdapContacts);
|
||||||
model->setIpv6Enabled(mIpv6Enabled);
|
model->setIpv6Enabled(mIpv6Enabled);
|
||||||
model->setAutoStart(mAutoStart);
|
|
||||||
model->setConfigLocale(mConfigLocale);
|
model->setConfigLocale(mConfigLocale);
|
||||||
model->setDownloadFolder(mDownloadFolder);
|
model->setDownloadFolder(mDownloadFolder);
|
||||||
model->setCallForwardToAddress(mCallForwardToAddress);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsCore::writeFromModel(const std::shared_ptr<SettingsModel> &model) {
|
void SettingsCore::writeFromModel(const std::shared_ptr<SettingsModel> &model) {
|
||||||
|
|
@ -1188,9 +1123,6 @@ void SettingsCore::writeFromModel(const std::shared_ptr<SettingsModel> &model) {
|
||||||
mRingtoneFileName =
|
mRingtoneFileName =
|
||||||
ringtone.exists() ? ringtone.fileName() : mRingtonePath.right(mRingtonePath.lastIndexOf(QDir::separator()));
|
ringtone.exists() ? ringtone.fileName() : mRingtonePath.right(mRingtonePath.lastIndexOf(QDir::separator()));
|
||||||
|
|
||||||
// Advanced
|
|
||||||
mAutoStart = model->getAutoStart();
|
|
||||||
|
|
||||||
// Chat
|
// Chat
|
||||||
mAutoDownloadReceivedFiles = model->getAutoDownloadReceivedFiles();
|
mAutoDownloadReceivedFiles = model->getAutoDownloadReceivedFiles();
|
||||||
|
|
||||||
|
|
@ -1249,10 +1181,8 @@ void SettingsCore::writeFromModel(const std::shared_ptr<SettingsModel> &model) {
|
||||||
mSyncLdapContacts = model->getSyncLdapContacts();
|
mSyncLdapContacts = model->getSyncLdapContacts();
|
||||||
mCardDAVMinCharForResearch = model->getCardDAVMinCharResearch();
|
mCardDAVMinCharForResearch = model->getCardDAVMinCharResearch();
|
||||||
mIpv6Enabled = model->getIpv6Enabled();
|
mIpv6Enabled = model->getIpv6Enabled();
|
||||||
mAutoStart = model->getAutoStart();
|
|
||||||
mConfigLocale = model->getConfigLocale();
|
mConfigLocale = model->getConfigLocale();
|
||||||
mDownloadFolder = model->getDownloadFolder();
|
mDownloadFolder = model->getDownloadFolder();
|
||||||
mCallForwardToAddress = model->getCallForwardToAddress();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SettingsCore::isCheckForUpdateAvailable() const {
|
bool SettingsCore::isCheckForUpdateAvailable() const {
|
||||||
|
|
@ -1262,7 +1192,6 @@ bool SettingsCore::isCheckForUpdateAvailable() const {
|
||||||
void SettingsCore::save() {
|
void SettingsCore::save() {
|
||||||
mustBeInMainThread(getClassName() + Q_FUNC_INFO);
|
mustBeInMainThread(getClassName() + Q_FUNC_INFO);
|
||||||
SettingsCore *thisCopy = new SettingsCore(*this);
|
SettingsCore *thisCopy = new SettingsCore(*this);
|
||||||
emit autoStartChanged();
|
|
||||||
if (SettingsModel::getInstance()) {
|
if (SettingsModel::getInstance()) {
|
||||||
mSettingsModelConnection->invokeToModel([this, thisCopy] {
|
mSettingsModelConnection->invokeToModel([this, thisCopy] {
|
||||||
mustBeInLinphoneThread(getClassName() + Q_FUNC_INFO);
|
mustBeInLinphoneThread(getClassName() + Q_FUNC_INFO);
|
||||||
|
|
|
||||||
|
|
@ -62,17 +62,6 @@ public:
|
||||||
Q_PROPERTY(QVariantMap playbackDevice READ getPlaybackDevice WRITE setPlaybackDevice NOTIFY playbackDeviceChanged)
|
Q_PROPERTY(QVariantMap playbackDevice READ getPlaybackDevice WRITE setPlaybackDevice NOTIFY playbackDeviceChanged)
|
||||||
Q_PROPERTY(QVariantMap ringerDevice READ getRingerDevice WRITE setRingerDevice NOTIFY ringerDeviceChanged)
|
Q_PROPERTY(QVariantMap ringerDevice READ getRingerDevice WRITE setRingerDevice NOTIFY ringerDeviceChanged)
|
||||||
|
|
||||||
// Call Forward
|
|
||||||
Q_PROPERTY(QString callForwardToAddress READ getCallForwardToAddress WRITE setCallForwardToAddress NOTIFY
|
|
||||||
callForwardToAddressChanged)
|
|
||||||
|
|
||||||
// Network
|
|
||||||
Q_PROPERTY(bool ipv6Enabled READ getIpv6Enabled WRITE setIpv6Enabled NOTIFY ipv6EnabledChanged)
|
|
||||||
Q_PROPERTY(bool hideFps READ getHideFps WRITE setHideFps NOTIFY hideFpsChanged)
|
|
||||||
|
|
||||||
// Advanced
|
|
||||||
Q_PROPERTY(bool autoStart READ getAutoStart WRITE setAutoStart NOTIFY autoStartChanged)
|
|
||||||
|
|
||||||
Q_PROPERTY(
|
Q_PROPERTY(
|
||||||
QVariantMap conferenceLayout READ getConferenceLayout WRITE setConferenceLayout NOTIFY conferenceLayoutChanged)
|
QVariantMap conferenceLayout READ getConferenceLayout WRITE setConferenceLayout NOTIFY conferenceLayoutChanged)
|
||||||
Q_PROPERTY(
|
Q_PROPERTY(
|
||||||
|
|
@ -155,11 +144,9 @@ public:
|
||||||
|
|
||||||
float getPlaybackGain() const;
|
float getPlaybackGain() const;
|
||||||
void setPlaybackGain(float gain);
|
void setPlaybackGain(float gain);
|
||||||
void setPlaybackGainFromModel(float gain);
|
|
||||||
|
|
||||||
float getCaptureGain() const;
|
float getCaptureGain() const;
|
||||||
void setCaptureGain(float gain);
|
void setCaptureGain(float gain);
|
||||||
void setCaptureGainFromModel(float gain);
|
|
||||||
|
|
||||||
QVariantList getCaptureDevices() const;
|
QVariantList getCaptureDevices() const;
|
||||||
void setCaptureDevices(QVariantList devices);
|
void setCaptureDevices(QVariantList devices);
|
||||||
|
|
@ -206,32 +193,6 @@ public:
|
||||||
Q_INVOKABLE void closeCallSettings();
|
Q_INVOKABLE void closeCallSettings();
|
||||||
Q_INVOKABLE void updateMicVolume() const;
|
Q_INVOKABLE void updateMicVolume() const;
|
||||||
|
|
||||||
// Call Forward. --------------------------------------------------------------------
|
|
||||||
|
|
||||||
QString getCallForwardToAddress() {
|
|
||||||
return mCallForwardToAddress;
|
|
||||||
}
|
|
||||||
void setCallForwardToAddress(QString address);
|
|
||||||
|
|
||||||
// Network. --------------------------------------------------------------------
|
|
||||||
|
|
||||||
bool getIpv6Enabled() {
|
|
||||||
return mIpv6Enabled;
|
|
||||||
}
|
|
||||||
void setIpv6Enabled(bool enabled);
|
|
||||||
|
|
||||||
// Advanced. --------------------------------------------------------------------
|
|
||||||
|
|
||||||
bool getAutoStart() {
|
|
||||||
return mAutoStart;
|
|
||||||
}
|
|
||||||
void setAutoStart(bool enabled);
|
|
||||||
|
|
||||||
bool getHideFps() {
|
|
||||||
return mHideFps;
|
|
||||||
}
|
|
||||||
void setHideFps(bool hide);
|
|
||||||
|
|
||||||
bool getLogsEnabled() const;
|
bool getLogsEnabled() const;
|
||||||
void setLogsEnabled(bool enabled);
|
void setLogsEnabled(bool enabled);
|
||||||
|
|
||||||
|
|
@ -266,6 +227,7 @@ public:
|
||||||
DECLARE_CORE_GETSET_MEMBER(bool, disableBroadcastFeature, DisableBroadcastFeature)
|
DECLARE_CORE_GETSET_MEMBER(bool, disableBroadcastFeature, DisableBroadcastFeature)
|
||||||
DECLARE_CORE_GETSET_MEMBER(bool, hideSettings, HideSettings)
|
DECLARE_CORE_GETSET_MEMBER(bool, hideSettings, HideSettings)
|
||||||
DECLARE_CORE_GETSET_MEMBER(bool, hideAccountSettings, HideAccountSettings)
|
DECLARE_CORE_GETSET_MEMBER(bool, hideAccountSettings, HideAccountSettings)
|
||||||
|
DECLARE_CORE_GETSET_MEMBER(bool, hideFps, HideFps)
|
||||||
DECLARE_CORE_GETSET_MEMBER(bool, disableCallRecordings, DisableCallRecordings)
|
DECLARE_CORE_GETSET_MEMBER(bool, disableCallRecordings, DisableCallRecordings)
|
||||||
DECLARE_CORE_GETSET_MEMBER(bool, assistantHideCreateAccount, AssistantHideCreateAccount)
|
DECLARE_CORE_GETSET_MEMBER(bool, assistantHideCreateAccount, AssistantHideCreateAccount)
|
||||||
DECLARE_CORE_GETSET_MEMBER(bool, assistantDisableQrCode, AssistantDisableQrCode)
|
DECLARE_CORE_GETSET_MEMBER(bool, assistantDisableQrCode, AssistantDisableQrCode)
|
||||||
|
|
@ -278,8 +240,10 @@ public:
|
||||||
AssistantGoDirectlyToThirdPartySipAccountLogin)
|
AssistantGoDirectlyToThirdPartySipAccountLogin)
|
||||||
DECLARE_CORE_GETSET_MEMBER(QString, assistantThirdPartySipAccountDomain, AssistantThirdPartySipAccountDomain)
|
DECLARE_CORE_GETSET_MEMBER(QString, assistantThirdPartySipAccountDomain, AssistantThirdPartySipAccountDomain)
|
||||||
DECLARE_CORE_GETSET_MEMBER(QString, assistantThirdPartySipAccountTransport, AssistantThirdPartySipAccountTransport)
|
DECLARE_CORE_GETSET_MEMBER(QString, assistantThirdPartySipAccountTransport, AssistantThirdPartySipAccountTransport)
|
||||||
|
DECLARE_CORE_GETSET(bool, autoStart, AutoStart)
|
||||||
DECLARE_CORE_GETSET(bool, exitOnClose, ExitOnClose)
|
DECLARE_CORE_GETSET(bool, exitOnClose, ExitOnClose)
|
||||||
DECLARE_CORE_GETSET(bool, syncLdapContacts, SyncLdapContacts)
|
DECLARE_CORE_GETSET(bool, syncLdapContacts, SyncLdapContacts)
|
||||||
|
DECLARE_CORE_GETSET_MEMBER(bool, ipv6Enabled, Ipv6Enabled)
|
||||||
DECLARE_CORE_GETSET(QString, configLocale, ConfigLocale)
|
DECLARE_CORE_GETSET(QString, configLocale, ConfigLocale)
|
||||||
DECLARE_CORE_GETSET(QString, downloadFolder, DownloadFolder)
|
DECLARE_CORE_GETSET(QString, downloadFolder, DownloadFolder)
|
||||||
// Read-only
|
// Read-only
|
||||||
|
|
@ -288,6 +252,8 @@ public:
|
||||||
DECLARE_CORE_GETSET_MEMBER(bool, callToneIndicationsEnabled, CallToneIndicationsEnabled)
|
DECLARE_CORE_GETSET_MEMBER(bool, callToneIndicationsEnabled, CallToneIndicationsEnabled)
|
||||||
DECLARE_CORE_GETSET_MEMBER(bool, disableCommandLine, DisableCommandLine)
|
DECLARE_CORE_GETSET_MEMBER(bool, disableCommandLine, DisableCommandLine)
|
||||||
DECLARE_CORE_GETSET_MEMBER(QString, commandLine, CommandLine)
|
DECLARE_CORE_GETSET_MEMBER(QString, commandLine, CommandLine)
|
||||||
|
DECLARE_CORE_GETSET_MEMBER(bool, disableCallForward, DisableCallForward)
|
||||||
|
DECLARE_CORE_GETSET_MEMBER(QString, callForwardToAddress, CallForwardToAddress)
|
||||||
DECLARE_CORE_GET_CONSTANT(QFont, emojiFont, EmojiFont)
|
DECLARE_CORE_GET_CONSTANT(QFont, emojiFont, EmojiFont)
|
||||||
DECLARE_CORE_GET_CONSTANT(QFont, textMessageFont, TextMessageFont)
|
DECLARE_CORE_GET_CONSTANT(QFont, textMessageFont, TextMessageFont)
|
||||||
// Theme
|
// Theme
|
||||||
|
|
@ -317,17 +283,6 @@ signals:
|
||||||
void captureDevicesChanged(const QVariantList &devices);
|
void captureDevicesChanged(const QVariantList &devices);
|
||||||
void playbackDevicesChanged(const QVariantList &devices);
|
void playbackDevicesChanged(const QVariantList &devices);
|
||||||
void ringerDevicesChanged(const QVariantList &devices);
|
void ringerDevicesChanged(const QVariantList &devices);
|
||||||
|
|
||||||
// Network
|
|
||||||
void ipv6EnabledChanged();
|
|
||||||
|
|
||||||
// Call Forward
|
|
||||||
void callForwardToAddressChanged();
|
|
||||||
|
|
||||||
// Advanced
|
|
||||||
void autoStartChanged();
|
|
||||||
void hideFpsChanged();
|
|
||||||
|
|
||||||
void conferenceLayoutsChanged(const QVariantList &layouts);
|
void conferenceLayoutsChanged(const QVariantList &layouts);
|
||||||
void mediaEncryptionsChanged(const QVariantList &encryptions);
|
void mediaEncryptionsChanged(const QVariantList &encryptions);
|
||||||
|
|
||||||
|
|
@ -348,7 +303,7 @@ signals:
|
||||||
|
|
||||||
void createEndToEndEncryptedMeetingsAndGroupCallsChanged(bool endtoend);
|
void createEndToEndEncryptedMeetingsAndGroupCallsChanged(bool endtoend);
|
||||||
|
|
||||||
void isSavedChanged(bool saved);
|
void isSavedChanged();
|
||||||
|
|
||||||
void lSetPlaybackDevice(QVariantMap device);
|
void lSetPlaybackDevice(QVariantMap device);
|
||||||
void playbackDeviceChanged(const QVariantMap &device);
|
void playbackDeviceChanged(const QVariantMap &device);
|
||||||
|
|
@ -426,16 +381,6 @@ private:
|
||||||
float mPlaybackGain;
|
float mPlaybackGain;
|
||||||
int mEchoCancellationCalibration;
|
int mEchoCancellationCalibration;
|
||||||
|
|
||||||
// Network
|
|
||||||
bool mIpv6Enabled;
|
|
||||||
|
|
||||||
// Call Forward
|
|
||||||
QString mCallForwardToAddress;
|
|
||||||
|
|
||||||
// Advanced
|
|
||||||
bool mAutoStart;
|
|
||||||
bool mHideFps;
|
|
||||||
|
|
||||||
// Debug logs
|
// Debug logs
|
||||||
bool mLogsEnabled;
|
bool mLogsEnabled;
|
||||||
bool mFullLogsEnabled;
|
bool mFullLogsEnabled;
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM72,48v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80H48V48ZM208,208H48V96H208V208Zm-48-56a8,8,0,0,1-8,8H136v16a8,8,0,0,1-16,0V160H104a8,8,0,0,1,0-16h16V128a8,8,0,0,1,16,0v16h16A8,8,0,0,1,160,152Z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 464 B |
|
|
@ -1078,49 +1078,49 @@
|
||||||
<context>
|
<context>
|
||||||
<name>CallListView</name>
|
<name>CallListView</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="62"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="60"/>
|
||||||
<source>meeting</source>
|
<source>meeting</source>
|
||||||
<extracomment>"Réunion</extracomment>
|
<extracomment>"Réunion</extracomment>
|
||||||
<translation>Besprechung</translation>
|
<translation>Besprechung</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="64"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="62"/>
|
||||||
<source>call</source>
|
<source>call</source>
|
||||||
<extracomment>"Appel"</extracomment>
|
<extracomment>"Appel"</extracomment>
|
||||||
<translation>Anruf</translation>
|
<translation>Anruf</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="69"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="67"/>
|
||||||
<source>paused_call_or_meeting</source>
|
<source>paused_call_or_meeting</source>
|
||||||
<extracomment>"%1 en pause"</extracomment>
|
<extracomment>"%1 en pause"</extracomment>
|
||||||
<translation>%1 pausiert</translation>
|
<translation>%1 pausiert</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="71"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="69"/>
|
||||||
<source>ongoing_call_or_meeting</source>
|
<source>ongoing_call_or_meeting</source>
|
||||||
<extracomment>"%1 en cours"</extracomment>
|
<extracomment>"%1 en cours"</extracomment>
|
||||||
<translation>%1 laufend</translation>
|
<translation>%1 laufend</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="91"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="89"/>
|
||||||
<source>transfer_call_name_accessible_name</source>
|
<source>transfer_call_name_accessible_name</source>
|
||||||
<extracomment>Transfer call %1</extracomment>
|
<extracomment>Transfer call %1</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="119"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="117"/>
|
||||||
<source>resume_call_name_accessible_name</source>
|
<source>resume_call_name_accessible_name</source>
|
||||||
<extracomment>Resume %1 call</extracomment>
|
<extracomment>Resume %1 call</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="121"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="119"/>
|
||||||
<source>pause_call_name_accessible_name</source>
|
<source>pause_call_name_accessible_name</source>
|
||||||
<extracomment>Pause %1 call</extracomment>
|
<extracomment>Pause %1 call</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="144"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="142"/>
|
||||||
<source>end_call_name_accessible_name</source>
|
<source>end_call_name_accessible_name</source>
|
||||||
<extracomment>End %1 call</extracomment>
|
<extracomment>End %1 call</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
|
@ -2225,12 +2225,6 @@
|
||||||
<extracomment>"Reception info"</extracomment>
|
<extracomment>"Reception info"</extracomment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="407"/>
|
|
||||||
<source>menu_edit_chat_message</source>
|
|
||||||
<extracomment>"Edit"</extracomment>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="419"/>
|
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="419"/>
|
||||||
<source>chat_message_reply</source>
|
<source>chat_message_reply</source>
|
||||||
|
|
@ -4971,7 +4965,7 @@ Error</extracomment>
|
||||||
<context>
|
<context>
|
||||||
<name>NewCallForm</name>
|
<name>NewCallForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="25"/>
|
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="24"/>
|
||||||
<source>call_transfer_active_calls_label</source>
|
<source>call_transfer_active_calls_label</source>
|
||||||
<extracomment>"Appels en cours"</extracomment>
|
<extracomment>"Appels en cours"</extracomment>
|
||||||
<translation>Laufender Anruf</translation>
|
<translation>Laufender Anruf</translation>
|
||||||
|
|
|
||||||
|
|
@ -493,12 +493,6 @@
|
||||||
<extracomment>"URL du serveur d’échange de clés de chiffrement"</extracomment>
|
<extracomment>"URL du serveur d’échange de clés de chiffrement"</extracomment>
|
||||||
<translation>Lime server URL</translation>
|
<translation>Lime server URL</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml"/>
|
|
||||||
<source>account_settings_ccmp_server_url_title</source>
|
|
||||||
<extracomment>"URL du serveur CCMP"</extracomment>
|
|
||||||
<translation>CCMP server URL</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>AddParticipantsForm</name>
|
<name>AddParticipantsForm</name>
|
||||||
|
|
@ -1089,49 +1083,49 @@
|
||||||
<context>
|
<context>
|
||||||
<name>CallListView</name>
|
<name>CallListView</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="62"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="60"/>
|
||||||
<source>meeting</source>
|
<source>meeting</source>
|
||||||
<extracomment>"Réunion</extracomment>
|
<extracomment>"Réunion</extracomment>
|
||||||
<translation>Meeting</translation>
|
<translation>Meeting</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="64"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="62"/>
|
||||||
<source>call</source>
|
<source>call</source>
|
||||||
<extracomment>"Appel"</extracomment>
|
<extracomment>"Appel"</extracomment>
|
||||||
<translation>Call</translation>
|
<translation>Call</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="69"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="67"/>
|
||||||
<source>paused_call_or_meeting</source>
|
<source>paused_call_or_meeting</source>
|
||||||
<extracomment>"%1 en pause"</extracomment>
|
<extracomment>"%1 en pause"</extracomment>
|
||||||
<translation>%1 paused</translation>
|
<translation>%1 paused</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="71"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="69"/>
|
||||||
<source>ongoing_call_or_meeting</source>
|
<source>ongoing_call_or_meeting</source>
|
||||||
<extracomment>"%1 en cours"</extracomment>
|
<extracomment>"%1 en cours"</extracomment>
|
||||||
<translation>Ongoing %1</translation>
|
<translation>Ongoing %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="91"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="89"/>
|
||||||
<source>transfer_call_name_accessible_name</source>
|
<source>transfer_call_name_accessible_name</source>
|
||||||
<extracomment>Transfer call %1</extracomment>
|
<extracomment>Transfer call %1</extracomment>
|
||||||
<translation>Transfer call %1</translation>
|
<translation>Transfer call %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="119"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="117"/>
|
||||||
<source>resume_call_name_accessible_name</source>
|
<source>resume_call_name_accessible_name</source>
|
||||||
<extracomment>Resume %1 call</extracomment>
|
<extracomment>Resume %1 call</extracomment>
|
||||||
<translation>Resume %1 call</translation>
|
<translation>Resume %1 call</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="121"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="119"/>
|
||||||
<source>pause_call_name_accessible_name</source>
|
<source>pause_call_name_accessible_name</source>
|
||||||
<extracomment>Pause %1 call</extracomment>
|
<extracomment>Pause %1 call</extracomment>
|
||||||
<translation>Pause %1 call</translation>
|
<translation>Pause %1 call</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="144"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="142"/>
|
||||||
<source>end_call_name_accessible_name</source>
|
<source>end_call_name_accessible_name</source>
|
||||||
<extracomment>End %1 call</extracomment>
|
<extracomment>End %1 call</extracomment>
|
||||||
<translation>End %1 call</translation>
|
<translation>End %1 call</translation>
|
||||||
|
|
@ -2218,12 +2212,6 @@
|
||||||
<extracomment>"Reception info"</extracomment>
|
<extracomment>"Reception info"</extracomment>
|
||||||
<translation>Reception info</translation>
|
<translation>Reception info</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="407"/>
|
|
||||||
<source>menu_edit_chat_message</source>
|
|
||||||
<extracomment>"Edit"</extracomment>
|
|
||||||
<translation>Edit</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="419"/>
|
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="419"/>
|
||||||
<source>chat_message_reply</source>
|
<source>chat_message_reply</source>
|
||||||
|
|
@ -2242,12 +2230,6 @@
|
||||||
<extracomment>"Delete"</extracomment>
|
<extracomment>"Delete"</extracomment>
|
||||||
<translation>Delete</translation>
|
<translation>Delete</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="469"/>
|
|
||||||
<source>conversation_message_edited_label</source>
|
|
||||||
<extracomment>"Edited"</extracomment>
|
|
||||||
<translation>Edited</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatMessageContentCore</name>
|
<name>ChatMessageContentCore</name>
|
||||||
|
|
@ -2498,42 +2480,6 @@ Only your correspondent can decrypt them.</translation>
|
||||||
<extracomment>%1 is writing…</extracomment>
|
<extracomment>%1 is writing…</extracomment>
|
||||||
<translation>%1 is writing…</translation>
|
<translation>%1 is writing…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="470"/>
|
|
||||||
<source>conversation_dialog_delete_chat_message_title</source>
|
|
||||||
<extracomment>"Delete this message?"</extracomment>
|
|
||||||
<translation>Delete this message?</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="471"/>
|
|
||||||
<source>conversation_dialog_delete_locally_label</source>
|
|
||||||
<extracomment>"For me"</extracomment>
|
|
||||||
<translation>For me</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
|
|
||||||
<source>conversation_dialog_delete_for_everyone_label</source>
|
|
||||||
<extracomment>"For everyone"</extracomment>
|
|
||||||
<translation>For everyone</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
|
|
||||||
<source>dialog_cancel</source>
|
|
||||||
<extracomment>"Cancel"</extracomment>
|
|
||||||
<translation>Cancel</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
|
|
||||||
<source>info_toast_deleted_title</source>
|
|
||||||
<extracomment>Deleted</extracomment>
|
|
||||||
<translation>Deleted</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
|
|
||||||
<source>info_toast_deleted_message</source>
|
|
||||||
<extracomment>The message has been deleted</extracomment>
|
|
||||||
<translation>The message has been deleted</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
|
@ -4941,7 +4887,7 @@ Expiration : %1</translation>
|
||||||
<context>
|
<context>
|
||||||
<name>NewCallForm</name>
|
<name>NewCallForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="25"/>
|
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="24"/>
|
||||||
<source>call_transfer_active_calls_label</source>
|
<source>call_transfer_active_calls_label</source>
|
||||||
<extracomment>"Appels en cours"</extracomment>
|
<extracomment>"Appels en cours"</extracomment>
|
||||||
<translation>Ongoing call</translation>
|
<translation>Ongoing call</translation>
|
||||||
|
|
@ -5807,12 +5753,6 @@ To enable them in a commercial project, please contact us.</translation>
|
||||||
<extracomment>Reply to %1</extracomment>
|
<extracomment>Reply to %1</extracomment>
|
||||||
<translation>Reply to %1</translation>
|
<translation>Reply to %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="417"/>
|
|
||||||
<source>conversation_editing_message_title</source>
|
|
||||||
<extracomment>Message beeing edited</extracomment>
|
|
||||||
<translation>Message beeing edited</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="617"/>
|
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="617"/>
|
||||||
<source>shared_medias_title</source>
|
<source>shared_medias_title</source>
|
||||||
|
|
@ -6001,18 +5941,6 @@ To enable them in a commercial project, please contact us.</translation>
|
||||||
<source>conference_invitation_updated</source>
|
<source>conference_invitation_updated</source>
|
||||||
<translation>Meeting modification</translation>
|
<translation>Meeting modification</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../model/tool/ToolModel.cpp" line="530"/>
|
|
||||||
<source>conversation_message_content_deleted_label</source>
|
|
||||||
<extracomment>"<i>This message has been deleted</i>"</extracomment>
|
|
||||||
<translation><i>This message has been deleted</i></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../model/tool/ToolModel.cpp" line="530"/>
|
|
||||||
<source>conversation_message_content_deleted_by_us_label</source>
|
|
||||||
<extracomment>"<i>You have deleted this message</i>"</extracomment>
|
|
||||||
<translation><i>You have deleted this message</i></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>Utils</name>
|
<name>Utils</name>
|
||||||
|
|
@ -6056,36 +5984,18 @@ To enable them in a commercial project, please contact us.</translation>
|
||||||
<extracomment>Cannot reply to invalid message</extracomment>
|
<extracomment>Cannot reply to invalid message</extracomment>
|
||||||
<translation>Cannot reply to invalid message</translation>
|
<translation>Cannot reply to invalid message</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../tool/Utils.cpp" line="2123"/>
|
|
||||||
<source>chat_message_edit_error</source>
|
|
||||||
<extracomment>Cannot modify invalid message</extracomment>
|
|
||||||
<translation>Cannot modify invalid message</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../tool/Utils.cpp" line="2129"/>
|
<location filename="../../tool/Utils.cpp" line="2129"/>
|
||||||
<source>info_popup_reply_message_error</source>
|
<source>info_popup_reply_message_error</source>
|
||||||
<extracomment>Could not send reply message : %1</extracomment>
|
<extracomment>Could not send reply message : %1</extracomment>
|
||||||
<translation>Could not send reply message : %1</translation>
|
<translation>Could not send reply message : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../tool/Utils.cpp" line="2129"/>
|
|
||||||
<source>info_popup_edited_message_error</source>
|
|
||||||
<extracomment>Could not send edited message : %1</extracomment>
|
|
||||||
<translation>Could not send edited message : %1</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../tool/Utils.cpp" line="2156"/>
|
<location filename="../../tool/Utils.cpp" line="2156"/>
|
||||||
<source>info_popup_send_reply_message_error_message</source>
|
<source>info_popup_send_reply_message_error_message</source>
|
||||||
<extracomment>Failed to create reply message</extracomment>
|
<extracomment>Failed to create reply message</extracomment>
|
||||||
<translation>Failed to create reply message</translation>
|
<translation>Failed to create reply message</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../tool/Utils.cpp" line="2156"/>
|
|
||||||
<source>info_popup_send_edited_message_error_message</source>
|
|
||||||
<extracomment>Failed to create edited message</extracomment>
|
|
||||||
<translation>Failed to create edited message</translation>
|
|
||||||
</message>
|
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../../tool/Utils.cpp" line="2278"/>
|
<location filename="../../tool/Utils.cpp" line="2278"/>
|
||||||
<source>nHour</source>
|
<source>nHour</source>
|
||||||
|
|
|
||||||
|
|
@ -493,12 +493,6 @@
|
||||||
<extracomment>"URL du serveur d’échange de clés de chiffrement"</extracomment>
|
<extracomment>"URL du serveur d’échange de clés de chiffrement"</extracomment>
|
||||||
<translation>URL du serveur d’échange de clés de chiffrement</translation>
|
<translation>URL du serveur d’échange de clés de chiffrement</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml"/>
|
|
||||||
<source>account_settings_ccmp_server_url_title</source>
|
|
||||||
<extracomment>"URL du serveur CCMP"</extracomment>
|
|
||||||
<translation>URL du serveur CCMP</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>AddParticipantsForm</name>
|
<name>AddParticipantsForm</name>
|
||||||
|
|
@ -1089,49 +1083,49 @@
|
||||||
<context>
|
<context>
|
||||||
<name>CallListView</name>
|
<name>CallListView</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="62"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="60"/>
|
||||||
<source>meeting</source>
|
<source>meeting</source>
|
||||||
<extracomment>"Réunion</extracomment>
|
<extracomment>"Réunion</extracomment>
|
||||||
<translation>Réunion</translation>
|
<translation>Réunion</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="64"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="62"/>
|
||||||
<source>call</source>
|
<source>call</source>
|
||||||
<extracomment>"Appel"</extracomment>
|
<extracomment>"Appel"</extracomment>
|
||||||
<translation>Appel</translation>
|
<translation>Appel</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="69"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="67"/>
|
||||||
<source>paused_call_or_meeting</source>
|
<source>paused_call_or_meeting</source>
|
||||||
<extracomment>"%1 en pause"</extracomment>
|
<extracomment>"%1 en pause"</extracomment>
|
||||||
<translation>%1 en pause</translation>
|
<translation>%1 en pause</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="71"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="69"/>
|
||||||
<source>ongoing_call_or_meeting</source>
|
<source>ongoing_call_or_meeting</source>
|
||||||
<extracomment>"%1 en cours"</extracomment>
|
<extracomment>"%1 en cours"</extracomment>
|
||||||
<translation>%1 en cours</translation>
|
<translation>%1 en cours</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="91"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="89"/>
|
||||||
<source>transfer_call_name_accessible_name</source>
|
<source>transfer_call_name_accessible_name</source>
|
||||||
<extracomment>Transfer call %1</extracomment>
|
<extracomment>Transfer call %1</extracomment>
|
||||||
<translation>Transférer l'appel %1</translation>
|
<translation>Transférer l'appel %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="119"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="117"/>
|
||||||
<source>resume_call_name_accessible_name</source>
|
<source>resume_call_name_accessible_name</source>
|
||||||
<extracomment>Resume %1 call</extracomment>
|
<extracomment>Resume %1 call</extracomment>
|
||||||
<translation>Reprendre l'appel %1</translation>
|
<translation>Reprendre l'appel %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="121"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="119"/>
|
||||||
<source>pause_call_name_accessible_name</source>
|
<source>pause_call_name_accessible_name</source>
|
||||||
<extracomment>Pause %1 call</extracomment>
|
<extracomment>Pause %1 call</extracomment>
|
||||||
<translation>Mettre l'appel %1 en pause</translation>
|
<translation>Mettre l'appel %1 en pause</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Call/CallListView.qml" line="144"/>
|
<location filename="../../view/Control/Display/Call/CallListView.qml" line="142"/>
|
||||||
<source>end_call_name_accessible_name</source>
|
<source>end_call_name_accessible_name</source>
|
||||||
<extracomment>End %1 call</extracomment>
|
<extracomment>End %1 call</extracomment>
|
||||||
<translation>Terminer l'appel %1</translation>
|
<translation>Terminer l'appel %1</translation>
|
||||||
|
|
@ -2218,12 +2212,6 @@
|
||||||
<extracomment>"Reception info"</extracomment>
|
<extracomment>"Reception info"</extracomment>
|
||||||
<translation>Info de réception</translation>
|
<translation>Info de réception</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="407"/>
|
|
||||||
<source>menu_edit_chat_message</source>
|
|
||||||
<extracomment>"Edit"</extracomment>
|
|
||||||
<translation>Modifier</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="419"/>
|
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="419"/>
|
||||||
<source>chat_message_reply</source>
|
<source>chat_message_reply</source>
|
||||||
|
|
@ -2242,12 +2230,6 @@
|
||||||
<extracomment>"Delete"</extracomment>
|
<extracomment>"Delete"</extracomment>
|
||||||
<translation>Supprimer</translation>
|
<translation>Supprimer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="469"/>
|
|
||||||
<source>conversation_message_edited_label</source>
|
|
||||||
<extracomment>"Edited"</extracomment>
|
|
||||||
<translation>Modifié</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatMessageContentCore</name>
|
<name>ChatMessageContentCore</name>
|
||||||
|
|
@ -2498,42 +2480,6 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
|
||||||
<extracomment>%1 is writing…</extracomment>
|
<extracomment>%1 is writing…</extracomment>
|
||||||
<translation>%1 est en train d'écrire…</translation>
|
<translation>%1 est en train d'écrire…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="470"/>
|
|
||||||
<source>conversation_dialog_delete_chat_message_title</source>
|
|
||||||
<extracomment>"Delete this message?"</extracomment>
|
|
||||||
<translation>Supprimer le message ?</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="471"/>
|
|
||||||
<source>conversation_dialog_delete_locally_label</source>
|
|
||||||
<extracomment>"For me"</extracomment>
|
|
||||||
<translation>Pour moi</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
|
|
||||||
<source>conversation_dialog_delete_for_everyone_label</source>
|
|
||||||
<extracomment>"For everyone"</extracomment>
|
|
||||||
<translation>Pour tout le monde</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
|
|
||||||
<source>dialog_cancel</source>
|
|
||||||
<extracomment>"Cancel"</extracomment>
|
|
||||||
<translation>Annuler</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
|
|
||||||
<source>info_toast_deleted_title</source>
|
|
||||||
<extracomment>Deleted</extracomment>
|
|
||||||
<translation>Supprimé</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
|
|
||||||
<source>info_toast_deleted_message</source>
|
|
||||||
<extracomment>The message has been deleted</extracomment>
|
|
||||||
<translation>Le message a été supprimé</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
|
@ -4941,7 +4887,7 @@ Expiration : %1</translation>
|
||||||
<context>
|
<context>
|
||||||
<name>NewCallForm</name>
|
<name>NewCallForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="25"/>
|
<location filename="../../view/Page/Form/Call/NewCallForm.qml" line="24"/>
|
||||||
<source>call_transfer_active_calls_label</source>
|
<source>call_transfer_active_calls_label</source>
|
||||||
<extracomment>"Appels en cours"</extracomment>
|
<extracomment>"Appels en cours"</extracomment>
|
||||||
<translation>Appels en cours</translation>
|
<translation>Appels en cours</translation>
|
||||||
|
|
@ -5807,12 +5753,6 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
|
||||||
<extracomment>Reply to %1</extracomment>
|
<extracomment>Reply to %1</extracomment>
|
||||||
<translation>Réponse à %1</translation>
|
<translation>Réponse à %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="417"/>
|
|
||||||
<source>conversation_editing_message_title</source>
|
|
||||||
<extracomment>Message beeing edited</extracomment>
|
|
||||||
<translation>Modification du message</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="617"/>
|
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="617"/>
|
||||||
<source>shared_medias_title</source>
|
<source>shared_medias_title</source>
|
||||||
|
|
@ -6001,18 +5941,6 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
|
||||||
<source>conference_invitation_updated</source>
|
<source>conference_invitation_updated</source>
|
||||||
<translation>Modification d'une réunion</translation>
|
<translation>Modification d'une réunion</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../model/tool/ToolModel.cpp" line="530"/>
|
|
||||||
<source>conversation_message_content_deleted_label</source>
|
|
||||||
<extracomment>"<i>This message has been deleted</i>"</extracomment>
|
|
||||||
<translation><i>Le message a été supprimé</i></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../../model/tool/ToolModel.cpp" line="530"/>
|
|
||||||
<source>conversation_message_content_deleted_by_us_label</source>
|
|
||||||
<extracomment>"<i>You have deleted this message</i>"</extracomment>
|
|
||||||
<translation><i>Vous avez supprimé le message</i></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>Utils</name>
|
<name>Utils</name>
|
||||||
|
|
@ -6228,36 +6156,18 @@ Failed to create 1-1 conversation with %1 !</extracomment>
|
||||||
<extracomment>Cannot reply to invalid message</extracomment>
|
<extracomment>Cannot reply to invalid message</extracomment>
|
||||||
<translation>Impossible de répondre : message invalide</translation>
|
<translation>Impossible de répondre : message invalide</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../tool/Utils.cpp" line="2123"/>
|
|
||||||
<source>chat_message_edit_error</source>
|
|
||||||
<extracomment>Cannot modify invalid message</extracomment>
|
|
||||||
<translation>Impossible de modifier le message : message invalide</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../tool/Utils.cpp" line="2129"/>
|
<location filename="../../tool/Utils.cpp" line="2129"/>
|
||||||
<source>info_popup_reply_message_error</source>
|
<source>info_popup_reply_message_error</source>
|
||||||
<extracomment>Could not send reply message : %1</extracomment>
|
<extracomment>Could not send reply message : %1</extracomment>
|
||||||
<translation>Impossible d'envoyer la réponse : %1</translation>
|
<translation>Impossible d'envoyer la réponse : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../tool/Utils.cpp" line="2129"/>
|
|
||||||
<source>info_popup_edited_message_error</source>
|
|
||||||
<extracomment>Could not send edited message : %1</extracomment>
|
|
||||||
<translation>Impossible d'envoyer le message modifié : %1</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../tool/Utils.cpp" line="2156"/>
|
<location filename="../../tool/Utils.cpp" line="2156"/>
|
||||||
<source>info_popup_send_reply_message_error_message</source>
|
<source>info_popup_send_reply_message_error_message</source>
|
||||||
<extracomment>Failed to create reply message</extracomment>
|
<extracomment>Failed to create reply message</extracomment>
|
||||||
<translation>Impossible de créer le message</translation>
|
<translation>Impossible de créer le message</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../../tool/Utils.cpp" line="2156"/>
|
|
||||||
<source>info_popup_send_edited_message_error_message</source>
|
|
||||||
<extracomment>Failed to create edited message</extracomment>
|
|
||||||
<translation>Impossible de créer le message modifié</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../tool/Utils.cpp" line="2194"/>
|
<location filename="../../tool/Utils.cpp" line="2194"/>
|
||||||
<source>info_popup_send_voice_message_error_message</source>
|
<source>info_popup_send_voice_message_error_message</source>
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@ void AccountModel::removeAccount() {
|
||||||
? Utils::coreStringToAppString(params->getIdentityAddress()->asString())
|
? Utils::coreStringToAppString(params->getIdentityAddress()->asString())
|
||||||
: "Null");
|
: "Null");
|
||||||
mToRemove = true;
|
mToRemove = true;
|
||||||
if (mMonitor) core->removeAccountWithData(mMonitor);
|
if (mMonitor) core->removeAccount(mMonitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<linphone::Account> AccountModel::getAccount() const {
|
std::shared_ptr<linphone::Account> AccountModel::getAccount() const {
|
||||||
|
|
@ -605,16 +605,4 @@ bool AccountModel::forwardToVoiceMailInDndPresence() {
|
||||||
|
|
||||||
std::list<std::shared_ptr<linphone::ChatRoom>> AccountModel::getChatRooms() {
|
std::list<std::shared_ptr<linphone::ChatRoom>> AccountModel::getChatRooms() {
|
||||||
return mMonitor->getChatRooms();
|
return mMonitor->getChatRooms();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString AccountModel::getCcmpServerUrl() const {
|
|
||||||
return Utils::coreStringToAppString(mMonitor->getParams()->getCcmpServerUrl());
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccountModel::setCcmpServerUrl(QString value) {
|
|
||||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
|
||||||
auto params = mMonitor->getParams()->clone();
|
|
||||||
params->setCcmpServerUrl(Utils::appStringToCoreString(value));
|
|
||||||
mMonitor->setParams(params);
|
|
||||||
emit ccmpServerUrlChanged(value);
|
|
||||||
}
|
|
||||||
|
|
@ -91,8 +91,6 @@ public:
|
||||||
std::string configAccountSection();
|
std::string configAccountSection();
|
||||||
bool forwardToVoiceMailInDndPresence();
|
bool forwardToVoiceMailInDndPresence();
|
||||||
std::list<std::shared_ptr<linphone::ChatRoom>> getChatRooms();
|
std::list<std::shared_ptr<linphone::ChatRoom>> getChatRooms();
|
||||||
QString getCcmpServerUrl() const;
|
|
||||||
void setCcmpServerUrl(QString value);
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void registrationStateChanged(const std::shared_ptr<linphone::Account> &account,
|
void registrationStateChanged(const std::shared_ptr<linphone::Account> &account,
|
||||||
|
|
@ -128,7 +126,6 @@ signals:
|
||||||
void showMwiChanged(bool show);
|
void showMwiChanged(bool show);
|
||||||
void voicemailAddressChanged(QString value);
|
void voicemailAddressChanged(QString value);
|
||||||
void presenceChanged(LinphoneEnums::Presence presence, bool userInitiated);
|
void presenceChanged(LinphoneEnums::Presence presence, bool userInitiated);
|
||||||
void ccmpServerUrlChanged(QString value);
|
|
||||||
|
|
||||||
void setValueFailed(const QString &errorMessage);
|
void setValueFailed(const QString &errorMessage);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2010-2026 Belledonne Communications SARL.
|
* Copyright (c) 2010-2024 Belledonne Communications SARL.
|
||||||
*
|
*
|
||||||
* This file is part of linphone-desktop
|
* This file is part of linphone-desktop
|
||||||
* (see https://www.linphone.org).
|
* (see https://www.linphone.org).
|
||||||
|
|
@ -529,27 +529,3 @@ void CallModel::onRemoteRecording(const std::shared_ptr<linphone::Call> &call, b
|
||||||
void CallModel::onAuthenticationTokenVerified(const std::shared_ptr<linphone::Call> &call, bool verified) {
|
void CallModel::onAuthenticationTokenVerified(const std::shared_ptr<linphone::Call> &call, bool verified) {
|
||||||
emit authenticationTokenVerified(call, verified);
|
emit authenticationTokenVerified(call, verified);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CallModel::onHeadsetAnswerCallRequested(const std::shared_ptr<linphone::Call> &call) {
|
|
||||||
emit headsetAnswerCallRequested();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CallModel::onHeadsetEndCallRequested(const std::shared_ptr<linphone::Call> &call) {
|
|
||||||
emit headsetEndCallRequested();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CallModel::onHeadsetHoldCallRequested(const std::shared_ptr<linphone::Call> &call) {
|
|
||||||
emit headsetHoldCallRequested();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CallModel::onHeadsetMicrophoneMuteToggled(const std::shared_ptr<linphone::Call> &call, bool mute) {
|
|
||||||
emit headsetMicrophoneMuteToggled(mute);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CallModel::onHeadsetRejectCallRequested(const std::shared_ptr<linphone::Call> &call) {
|
|
||||||
emit headsetRejectCallRequested();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CallModel::onHeadsetResumeCallRequested(const std::shared_ptr<linphone::Call> &call) {
|
|
||||||
emit headsetResumeCallRequested();
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2010-2026 Belledonne Communications SARL.
|
* Copyright (c) 2010-2024 Belledonne Communications SARL.
|
||||||
*
|
*
|
||||||
* This file is part of linphone-desktop
|
* This file is part of linphone-desktop
|
||||||
* (see https://www.linphone.org).
|
* (see https://www.linphone.org).
|
||||||
|
|
@ -156,12 +156,6 @@ private:
|
||||||
const std::shared_ptr<linphone::AudioDevice> &audioDevice) override;
|
const std::shared_ptr<linphone::AudioDevice> &audioDevice) override;
|
||||||
virtual void onRemoteRecording(const std::shared_ptr<linphone::Call> &call, bool recording) override;
|
virtual void onRemoteRecording(const std::shared_ptr<linphone::Call> &call, bool recording) override;
|
||||||
virtual void onAuthenticationTokenVerified(const std::shared_ptr<linphone::Call> &call, bool verified) override;
|
virtual void onAuthenticationTokenVerified(const std::shared_ptr<linphone::Call> &call, bool verified) override;
|
||||||
virtual void onHeadsetAnswerCallRequested(const std::shared_ptr<linphone::Call> &call) override;
|
|
||||||
virtual void onHeadsetEndCallRequested(const std::shared_ptr<linphone::Call> &call) override;
|
|
||||||
virtual void onHeadsetHoldCallRequested(const std::shared_ptr<linphone::Call> &call) override;
|
|
||||||
virtual void onHeadsetMicrophoneMuteToggled(const std::shared_ptr<linphone::Call> &call, bool mute) override;
|
|
||||||
virtual void onHeadsetRejectCallRequested(const std::shared_ptr<linphone::Call> &call) override;
|
|
||||||
virtual void onHeadsetResumeCallRequested(const std::shared_ptr<linphone::Call> &call) override;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void dtmfReceived(const std::shared_ptr<linphone::Call> &call, int dtmf);
|
void dtmfReceived(const std::shared_ptr<linphone::Call> &call, int dtmf);
|
||||||
|
|
@ -191,12 +185,6 @@ signals:
|
||||||
const std::shared_ptr<linphone::AudioDevice> &audioDevice);
|
const std::shared_ptr<linphone::AudioDevice> &audioDevice);
|
||||||
void remoteRecording(const std::shared_ptr<linphone::Call> &call, bool recording);
|
void remoteRecording(const std::shared_ptr<linphone::Call> &call, bool recording);
|
||||||
void authenticationTokenVerified(const std::shared_ptr<linphone::Call> &call, bool verified);
|
void authenticationTokenVerified(const std::shared_ptr<linphone::Call> &call, bool verified);
|
||||||
void headsetAnswerCallRequested();
|
|
||||||
void headsetEndCallRequested();
|
|
||||||
void headsetHoldCallRequested();
|
|
||||||
void headsetMicrophoneMuteToggled(bool mute);
|
|
||||||
void headsetRejectCallRequested();
|
|
||||||
void headsetResumeCallRequested();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -185,11 +185,6 @@ ChatModel::createReplyMessage(const std::shared_ptr<linphone::ChatMessage> &mess
|
||||||
return mMonitor->createReplyMessage(message);
|
return mMonitor->createReplyMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<linphone::ChatMessage>
|
|
||||||
ChatModel::createReplacesMessage(const std::shared_ptr<linphone::ChatMessage> &message) {
|
|
||||||
return mMonitor->createReplacesMessage(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<linphone::ChatMessage>
|
std::shared_ptr<linphone::ChatMessage>
|
||||||
ChatModel::createForwardMessage(const std::shared_ptr<linphone::ChatMessage> &message) {
|
ChatModel::createForwardMessage(const std::shared_ptr<linphone::ChatMessage> &message) {
|
||||||
return mMonitor->createForwardMessage(message);
|
return mMonitor->createForwardMessage(message);
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ public:
|
||||||
|
|
||||||
std::shared_ptr<linphone::ChatMessage> createReplyMessage(const std::shared_ptr<linphone::ChatMessage> &message);
|
std::shared_ptr<linphone::ChatMessage> createReplyMessage(const std::shared_ptr<linphone::ChatMessage> &message);
|
||||||
std::shared_ptr<linphone::ChatMessage> createForwardMessage(const std::shared_ptr<linphone::ChatMessage> &message);
|
std::shared_ptr<linphone::ChatMessage> createForwardMessage(const std::shared_ptr<linphone::ChatMessage> &message);
|
||||||
std::shared_ptr<linphone::ChatMessage> createReplacesMessage(const std::shared_ptr<linphone::ChatMessage> &message);
|
|
||||||
|
|
||||||
std::shared_ptr<linphone::ChatMessage> createTextMessageFromText(QString text);
|
std::shared_ptr<linphone::ChatMessage> createTextMessageFromText(QString text);
|
||||||
std::shared_ptr<linphone::ChatMessage> createMessage(QString text,
|
std::shared_ptr<linphone::ChatMessage> createMessage(QString text,
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ ChatMessageModel::~ChatMessageModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ChatMessageModel::getText() const {
|
QString ChatMessageModel::getText() const {
|
||||||
return ToolModel::getMessageFromMessage(mMonitor);
|
return ToolModel::getMessageFromContent(mMonitor->getContents());
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ChatMessageModel::getUtf8Text() const {
|
QString ChatMessageModel::getUtf8Text() const {
|
||||||
|
|
@ -103,13 +103,6 @@ void ChatMessageModel::deleteMessageFromChatRoom(bool deletedByUser) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatMessageModel::retractMessageFromChatRoom() {
|
|
||||||
auto chatRoom = mMonitor->getChatRoom();
|
|
||||||
if (chatRoom) {
|
|
||||||
chatRoom->retractMessage(mMonitor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ChatMessageModel::sendReaction(const QString &reaction) {
|
void ChatMessageModel::sendReaction(const QString &reaction) {
|
||||||
auto linReaction = mMonitor->createReaction(Utils::appStringToCoreString(reaction));
|
auto linReaction = mMonitor->createReaction(Utils::appStringToCoreString(reaction));
|
||||||
linReaction->send();
|
linReaction->send();
|
||||||
|
|
@ -195,11 +188,3 @@ void ChatMessageModel::onEphemeralMessageTimerStarted(const std::shared_ptr<linp
|
||||||
void ChatMessageModel::onEphemeralMessageDeleted(const std::shared_ptr<linphone::ChatMessage> &message) {
|
void ChatMessageModel::onEphemeralMessageDeleted(const std::shared_ptr<linphone::ChatMessage> &message) {
|
||||||
emit ephemeralMessageDeleted(message);
|
emit ephemeralMessageDeleted(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatMessageModel::onRetracted(const std::shared_ptr<linphone::ChatMessage> &message) {
|
|
||||||
emit retracted(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ChatMessageModel::onContentEdited(const std::shared_ptr<linphone::ChatMessage> &message) {
|
|
||||||
emit contentEdited(message);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,6 @@ public:
|
||||||
void markAsRead();
|
void markAsRead();
|
||||||
|
|
||||||
void deleteMessageFromChatRoom(bool deletedByUser);
|
void deleteMessageFromChatRoom(bool deletedByUser);
|
||||||
void retractMessageFromChatRoom();
|
|
||||||
|
|
||||||
void sendReaction(const QString &reaction);
|
void sendReaction(const QString &reaction);
|
||||||
|
|
||||||
|
|
@ -96,8 +95,6 @@ signals:
|
||||||
void ephemeralMessageTimerStarted(const std::shared_ptr<linphone::ChatMessage> &message);
|
void ephemeralMessageTimerStarted(const std::shared_ptr<linphone::ChatMessage> &message);
|
||||||
void ephemeralMessageDeleted(const std::shared_ptr<linphone::ChatMessage> &message);
|
void ephemeralMessageDeleted(const std::shared_ptr<linphone::ChatMessage> &message);
|
||||||
void ephemeralMessageTimeUpdated(const std::shared_ptr<linphone::ChatMessage> &message, int expireTime);
|
void ephemeralMessageTimeUpdated(const std::shared_ptr<linphone::ChatMessage> &message, int expireTime);
|
||||||
void retracted(const std::shared_ptr<linphone::ChatMessage> &message);
|
|
||||||
void contentEdited(const std::shared_ptr<linphone::ChatMessage> &message);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
linphone::ChatMessage::State mMessageState;
|
linphone::ChatMessage::State mMessageState;
|
||||||
|
|
@ -133,8 +130,6 @@ private:
|
||||||
const std::shared_ptr<const linphone::ParticipantImdnState> &state) override;
|
const std::shared_ptr<const linphone::ParticipantImdnState> &state) override;
|
||||||
void onEphemeralMessageTimerStarted(const std::shared_ptr<linphone::ChatMessage> &message) override;
|
void onEphemeralMessageTimerStarted(const std::shared_ptr<linphone::ChatMessage> &message) override;
|
||||||
void onEphemeralMessageDeleted(const std::shared_ptr<linphone::ChatMessage> &message) override;
|
void onEphemeralMessageDeleted(const std::shared_ptr<linphone::ChatMessage> &message) override;
|
||||||
void onRetracted(const std::shared_ptr<linphone::ChatMessage> &message) override;
|
|
||||||
void onContentEdited(const std::shared_ptr<linphone::ChatMessage> &message) override;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -837,13 +837,26 @@ QString SettingsModel::getDefaultDomain() const {
|
||||||
mConfig->getString(SettingsModel::AppSection, "default_domain", "sip.linphone.org"));
|
mConfig->getString(SettingsModel::AppSection, "default_domain", "sip.linphone.org"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SettingsModel::enableCallForward(QString destination) {
|
||||||
|
// TODO implement business logic to activate call forward to destination on PBX via external API (contains voicemail
|
||||||
|
// or a destination).
|
||||||
|
mConfig->setString(UiSection, "call_forward_to_address", Utils::appStringToCoreString(destination));
|
||||||
|
emit callForwardToAddressChanged(getCallForwardToAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsModel::disableCallForward() {
|
||||||
|
// TODO implement business logic to de-activate call forward on PBX via external API
|
||||||
|
mConfig->setString(UiSection, "call_forward_to_address", "");
|
||||||
|
}
|
||||||
|
|
||||||
QString SettingsModel::getCallForwardToAddress() const {
|
QString SettingsModel::getCallForwardToAddress() const {
|
||||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
return Utils::coreStringToAppString(mConfig->getString(UiSection, "call_forward_to_address", ""));
|
return Utils::coreStringToAppString(mConfig->getString(UiSection, "call_forward_to_address", ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsModel::setCallForwardToAddress(const QString &data) {
|
void SettingsModel::setCallForwardToAddress(const QString &data) {
|
||||||
mConfig->setString(UiSection, "call_forward_to_address", Utils::appStringToCoreString(data)); // TODO implement BL
|
if (data == "") disableCallForward();
|
||||||
|
else enableCallForward(data);
|
||||||
emit(callForwardToAddressChanged(data));
|
emit(callForwardToAddressChanged(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1126,6 +1139,13 @@ DEFINE_GETSET_CONFIG(SettingsModel,
|
||||||
DisableCommandLine,
|
DisableCommandLine,
|
||||||
"disable_command_line",
|
"disable_command_line",
|
||||||
false)
|
false)
|
||||||
|
DEFINE_GETSET_CONFIG(SettingsModel,
|
||||||
|
bool,
|
||||||
|
Bool,
|
||||||
|
disableCallForward,
|
||||||
|
DisableCallForward,
|
||||||
|
"disable_call_forward",
|
||||||
|
true)
|
||||||
DEFINE_GETSET_CONFIG_STRING(SettingsModel,
|
DEFINE_GETSET_CONFIG_STRING(SettingsModel,
|
||||||
themeMainColor,
|
themeMainColor,
|
||||||
ThemeMainColor,
|
ThemeMainColor,
|
||||||
|
|
|
||||||
|
|
@ -223,6 +223,7 @@ public:
|
||||||
DECLARE_GETSET(bool, usernameOnlyForCardDAVLookupsInCalls, UsernameOnlyForCardDAVLookupsInCalls)
|
DECLARE_GETSET(bool, usernameOnlyForCardDAVLookupsInCalls, UsernameOnlyForCardDAVLookupsInCalls)
|
||||||
DECLARE_GETSET(QString, commandLine, CommandLine)
|
DECLARE_GETSET(QString, commandLine, CommandLine)
|
||||||
DECLARE_GETSET(bool, disableCommandLine, DisableCommandLine)
|
DECLARE_GETSET(bool, disableCommandLine, DisableCommandLine)
|
||||||
|
DECLARE_GETSET(bool, disableCallForward, DisableCallForward)
|
||||||
DECLARE_GETSET(QString, callForwardToAddress, CallForwardToAddress)
|
DECLARE_GETSET(QString, callForwardToAddress, CallForwardToAddress)
|
||||||
DECLARE_GETSET(QString, chatNotificationSoundPath, ChatNotificationSoundPath)
|
DECLARE_GETSET(QString, chatNotificationSoundPath, ChatNotificationSoundPath)
|
||||||
DECLARE_GETSET(QString, themeMainColor, ThemeMainColor)
|
DECLARE_GETSET(QString, themeMainColor, ThemeMainColor)
|
||||||
|
|
@ -292,6 +293,7 @@ private:
|
||||||
VfsUtils mVfsUtils;
|
VfsUtils mVfsUtils;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void enableCallForward(QString destination);
|
||||||
void disableCallForward();
|
void disableCallForward();
|
||||||
|
|
||||||
static std::shared_ptr<SettingsModel> gSettingsModel;
|
static std::shared_ptr<SettingsModel> gSettingsModel;
|
||||||
|
|
|
||||||
|
|
@ -537,15 +537,6 @@ QString ToolModel::getMessageFromContent(std::list<std::shared_ptr<linphone::Con
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ToolModel::getMessageFromMessage(std::shared_ptr<linphone::ChatMessage> message) {
|
|
||||||
if (message->isRetracted()) {
|
|
||||||
return message->isOutgoing() ? tr("conversation_message_content_deleted_by_us_label")
|
|
||||||
: tr("conversation_message_content_deleted_label");
|
|
||||||
} else {
|
|
||||||
return getMessageFromContent(message->getContents());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load downloaded codecs like OpenH264 (needs to be after core is created and has loaded its plugins, as
|
// Load downloaded codecs like OpenH264 (needs to be after core is created and has loaded its plugins, as
|
||||||
// reloadMsPlugins modifies plugin path for the factory)
|
// reloadMsPlugins modifies plugin path for the factory)
|
||||||
void ToolModel::loadDownloadedCodecs() {
|
void ToolModel::loadDownloadedCodecs() {
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,6 @@ public:
|
||||||
const std::shared_ptr<linphone::Friend> &f);
|
const std::shared_ptr<linphone::Friend> &f);
|
||||||
|
|
||||||
static QString getMessageFromContent(std::list<std::shared_ptr<linphone::Content>> contents);
|
static QString getMessageFromContent(std::list<std::shared_ptr<linphone::Content>> contents);
|
||||||
static QString getMessageFromMessage(std::shared_ptr<linphone::ChatMessage> message);
|
|
||||||
|
|
||||||
static void loadDownloadedCodecs();
|
static void loadDownloadedCodecs();
|
||||||
static void updateCodecs();
|
static void updateCodecs();
|
||||||
|
|
|
||||||
|
|
@ -2159,50 +2159,6 @@ void Utils::sendReplyMessage(ChatMessageGui *message, ChatGui *chatGui, QString
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Utils::sendReplaceMessage(ChatMessageGui *message, ChatGui *chatGui, QString text, QVariantList files) {
|
|
||||||
auto chatModel = chatGui && chatGui->mCore ? chatGui->mCore->getModel() : nullptr;
|
|
||||||
auto chatMessageModel = message && message->mCore ? message->mCore->getModel() : nullptr;
|
|
||||||
if (!chatModel || !chatMessageModel) {
|
|
||||||
//: Cannot edit to invalid message
|
|
||||||
QString error = !chatMessageModel ? tr("chat_message_edit_error")
|
|
||||||
//: Error in the chat
|
|
||||||
: tr("chat_error");
|
|
||||||
//: Error
|
|
||||||
showInformationPopup(tr("info_popup_error_title"),
|
|
||||||
//: Could not send edited message : %1
|
|
||||||
tr("info_popup_edited_message_error").arg(error));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
QList<std::shared_ptr<ChatMessageContentModel>> filesContent;
|
|
||||||
for (auto &file : files) {
|
|
||||||
auto contentGui = qvariant_cast<ChatMessageContentGui *>(file);
|
|
||||||
if (contentGui) {
|
|
||||||
auto contentCore = contentGui->mCore;
|
|
||||||
filesContent.append(contentCore->getContentModel());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
App::postModelAsync([chatModel, chatMessageModel, text, filesContent] {
|
|
||||||
mustBeInLinphoneThread(sLog().arg(Q_FUNC_INFO));
|
|
||||||
auto chat = chatModel->getMonitor();
|
|
||||||
auto messageToEdit = chatMessageModel->getMonitor();
|
|
||||||
auto linMessage = chatModel->createReplacesMessage(messageToEdit);
|
|
||||||
if (linMessage) {
|
|
||||||
linMessage->addUtf8TextContent(Utils::appStringToCoreString(text));
|
|
||||||
for (auto &content : filesContent) {
|
|
||||||
linMessage->addFileContent(content->getContent());
|
|
||||||
}
|
|
||||||
linMessage->send();
|
|
||||||
} else {
|
|
||||||
App::postCoreAsync([] {
|
|
||||||
//: Error
|
|
||||||
showInformationPopup(tr("info_popup_error_title"),
|
|
||||||
//: Failed to create edited message
|
|
||||||
tr("info_popup_send_edited_message_error_message"));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
VariantObject *Utils::createVoiceRecordingMessage(RecorderGui *recorderGui, ChatGui *chatGui) {
|
VariantObject *Utils::createVoiceRecordingMessage(RecorderGui *recorderGui, ChatGui *chatGui) {
|
||||||
VariantObject *data = new VariantObject("createVoiceRecordingMessage");
|
VariantObject *data = new VariantObject("createVoiceRecordingMessage");
|
||||||
if (!data) return nullptr;
|
if (!data) return nullptr;
|
||||||
|
|
|
||||||
|
|
@ -183,8 +183,6 @@ public:
|
||||||
Q_INVOKABLE static void
|
Q_INVOKABLE static void
|
||||||
sendReplyMessage(ChatMessageGui *message, ChatGui *chatGui, QString text, QVariantList files);
|
sendReplyMessage(ChatMessageGui *message, ChatGui *chatGui, QString text, QVariantList files);
|
||||||
Q_INVOKABLE static void forwardMessageTo(ChatMessageGui *message, ChatGui *chatGui);
|
Q_INVOKABLE static void forwardMessageTo(ChatMessageGui *message, ChatGui *chatGui);
|
||||||
Q_INVOKABLE static void
|
|
||||||
sendReplaceMessage(ChatMessageGui *message, ChatGui *chatGui, QString text, QVariantList files);
|
|
||||||
|
|
||||||
Q_INVOKABLE static void sendVoiceRecordingMessage(RecorderGui *recorderGui, ChatGui *chatGui);
|
Q_INVOKABLE static void sendVoiceRecordingMessage(RecorderGui *recorderGui, ChatGui *chatGui);
|
||||||
Q_INVOKABLE static QString getEphemeralFormatedTime(int selectedTime);
|
Q_INVOKABLE static QString getEphemeralFormatedTime(int selectedTime);
|
||||||
|
|
|
||||||
|
|
@ -11,21 +11,19 @@ import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils
|
||||||
|
|
||||||
ListView {
|
ListView {
|
||||||
id: mainItem
|
id: mainItem
|
||||||
implicitHeight: contentHeight
|
|
||||||
spacing: Utils.getSizeWithScreenRatio(15)
|
|
||||||
clip: true
|
|
||||||
|
|
||||||
property bool isTransferList: false
|
|
||||||
property string currentRemoteAddress: AppCpp.calls.currentCall ? AppCpp.calls.currentCall.core.remoteAddress : ""
|
|
||||||
signal transferCallToAnotherRequested(CallGui dest)
|
|
||||||
|
|
||||||
onCountChanged: forceLayout()
|
|
||||||
|
|
||||||
model: CallProxy {
|
model: CallProxy {
|
||||||
id: callProxy
|
id: callProxy
|
||||||
sourceModel: AppCpp.calls
|
sourceModel: AppCpp.calls
|
||||||
showCurrentCall: !mainItem.isTransferList
|
|
||||||
}
|
}
|
||||||
|
implicitHeight: contentHeight
|
||||||
|
spacing: Utils.getSizeWithScreenRatio(15)
|
||||||
|
clip: true
|
||||||
|
onCountChanged: forceLayout()
|
||||||
|
|
||||||
|
signal transferCallToAnotherRequested(CallGui dest)
|
||||||
|
|
||||||
|
property bool isTransferList: false
|
||||||
|
property string currentRemoteAddress: AppCpp.calls.currentCall ? AppCpp.calls.currentCall.core.remoteAddress : ""
|
||||||
|
|
||||||
delegate: RowLayout {
|
delegate: RowLayout {
|
||||||
id: callInformationItem
|
id: callInformationItem
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ Control.Control {
|
||||||
leftPadding: isRemoteMessage ? Utils.getSizeWithScreenRatio(5) : 0
|
leftPadding: isRemoteMessage ? Utils.getSizeWithScreenRatio(5) : 0
|
||||||
|
|
||||||
signal messageDeletionRequested()
|
signal messageDeletionRequested()
|
||||||
signal messageEditionRequested()
|
|
||||||
signal isFileHoveringChanged(bool isFileHovering)
|
signal isFileHoveringChanged(bool isFileHovering)
|
||||||
signal showReactionsForMessageRequested()
|
signal showReactionsForMessageRequested()
|
||||||
signal showImdnStatusForMessageRequested()
|
signal showImdnStatusForMessageRequested()
|
||||||
|
|
@ -248,21 +247,11 @@ Control.Control {
|
||||||
}
|
}
|
||||||
contentItem: ColumnLayout {
|
contentItem: ColumnLayout {
|
||||||
spacing: Utils.getSizeWithScreenRatio(5)
|
spacing: Utils.getSizeWithScreenRatio(5)
|
||||||
Text {
|
|
||||||
id: retractedId
|
|
||||||
visible: mainItem.chatMessage.core.isRetracted
|
|
||||||
font: Typography.p1i
|
|
||||||
color: DefaultStyle.info_800_main
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.fillHeight: true
|
|
||||||
text: mainItem.chatMessage.core.text
|
|
||||||
}
|
|
||||||
ChatMessageContent {
|
ChatMessageContent {
|
||||||
id: chatBubbleContent
|
id: chatBubbleContent
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
chatGui: mainItem.chat
|
chatGui: mainItem.chat
|
||||||
visible: !mainItem.chatMessage.core.isRetracted
|
|
||||||
searchedTextPart: mainItem.searchedTextPart
|
searchedTextPart: mainItem.searchedTextPart
|
||||||
chatMessageGui: mainItem.chatMessage
|
chatMessageGui: mainItem.chatMessage
|
||||||
maxWidth: mainItem.maxWidth
|
maxWidth: mainItem.maxWidth
|
||||||
|
|
@ -298,26 +287,16 @@ Control.Control {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RowLayout {
|
RowLayout {
|
||||||
spacing: mainItem.isRemoteMessage && !mainItem.chatMessage.core.isEdited ? 0 : Utils.getSizeWithScreenRatio(5)
|
spacing: mainItem.isRemoteMessage ? 0 : Utils.getSizeWithScreenRatio(5)
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
Layout.preferredHeight: childrenRect.height
|
Layout.preferredHeight: childrenRect.height
|
||||||
Text {
|
|
||||||
Layout.alignment: Qt.AlignVCenter
|
|
||||||
text: qsTr("conversation_message_edited_label")
|
|
||||||
visible: mainItem.chatMessage.core.isEdited
|
|
||||||
color: DefaultStyle.main2_500_main
|
|
||||||
font {
|
|
||||||
pixelSize: Typography.p3.pixelSize
|
|
||||||
weight: Typography.p3.weight
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Text {
|
Text {
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
text: UtilsCpp.formatDate(mainItem.chatMessage.core.timestamp, true, false, "dd/MM")
|
text: UtilsCpp.formatDate(mainItem.chatMessage.core.timestamp, true, false, "dd/MM")
|
||||||
color: DefaultStyle.main2_500_main
|
color: DefaultStyle.main2_500_main
|
||||||
font {
|
font {
|
||||||
pixelSize: Typography.p3.pixelSize
|
pixelSize: Typography.p3.pixelSize
|
||||||
weight: Typography.p3.weight
|
weight: Typography.p3.weight
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EffectImage {
|
EffectImage {
|
||||||
|
|
@ -434,22 +413,8 @@ Control.Control {
|
||||||
optionsMenu.close()
|
optionsMenu.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
IconLabelButton {
|
|
||||||
inverseLayout: true
|
|
||||||
//: "Edit"
|
|
||||||
text: qsTr("menu_edit_chat_message")
|
|
||||||
visible: mainItem.chatMessage.core.isEditable
|
|
||||||
icon.source: AppIcons.pencil
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
|
||||||
onClicked: {
|
|
||||||
mainItem.messageEditionRequested()
|
|
||||||
optionsMenu.close()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
IconLabelButton {
|
IconLabelButton {
|
||||||
inverseLayout: true
|
inverseLayout: true
|
||||||
visible: !mainItem.chatMessage.core.isRetracted
|
|
||||||
//: Reply
|
//: Reply
|
||||||
text: qsTr("chat_message_reply")
|
text: qsTr("chat_message_reply")
|
||||||
icon.source: AppIcons.reply
|
icon.source: AppIcons.reply
|
||||||
|
|
@ -462,7 +427,6 @@ Control.Control {
|
||||||
}
|
}
|
||||||
IconLabelButton {
|
IconLabelButton {
|
||||||
inverseLayout: true
|
inverseLayout: true
|
||||||
visible: !mainItem.chatMessage.core.isRetracted
|
|
||||||
text: chatBubbleContent.selectedText != ""
|
text: chatBubbleContent.selectedText != ""
|
||||||
//: "Copy selection"
|
//: "Copy selection"
|
||||||
? qsTr("chat_message_copy_selection")
|
? qsTr("chat_message_copy_selection")
|
||||||
|
|
@ -483,7 +447,6 @@ Control.Control {
|
||||||
}
|
}
|
||||||
IconLabelButton {
|
IconLabelButton {
|
||||||
inverseLayout: true
|
inverseLayout: true
|
||||||
visible: !mainItem.chatMessage.core.isRetracted
|
|
||||||
//: Forward
|
//: Forward
|
||||||
text: qsTr("chat_message_forward")
|
text: qsTr("chat_message_forward")
|
||||||
icon.source: AppIcons.forward
|
icon.source: AppIcons.forward
|
||||||
|
|
|
||||||
|
|
@ -158,21 +158,10 @@ ColumnLayout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
Text {
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
text: conferenceInfo.dateTime.toLocaleString(Qt.locale(), "dddd d MMMM yyyy")
|
||||||
Text {
|
font: Typography.p4
|
||||||
text: conferenceInfo.dateTime.toLocaleString(Qt.locale(), "dddd d MMMM yyyy")
|
color: DefaultStyle.main2_500_main
|
||||||
font: Typography.p4
|
|
||||||
color: DefaultStyle.main2_500_main
|
|
||||||
}
|
|
||||||
RoundButton {
|
|
||||||
id: calendarPlusButton
|
|
||||||
style: ButtonStyle.noBackground
|
|
||||||
icon.source: AppIcons.calendarPlus
|
|
||||||
onClicked: {
|
|
||||||
conferenceInfo.exportConferenceToICS()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Text {
|
Text {
|
||||||
//: from %1 to %2 (UTC%3)
|
//: from %1 to %2 (UTC%3)
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ ListView {
|
||||||
signal showImdnStatusForMessageRequested(ChatMessageGui chatMessage)
|
signal showImdnStatusForMessageRequested(ChatMessageGui chatMessage)
|
||||||
signal replyToMessageRequested(ChatMessageGui chatMessage)
|
signal replyToMessageRequested(ChatMessageGui chatMessage)
|
||||||
signal forwardMessageRequested(ChatMessageGui chatMessage)
|
signal forwardMessageRequested(ChatMessageGui chatMessage)
|
||||||
signal editMessageRequested(ChatMessageGui chatMessage)
|
|
||||||
signal requestHighlight(int indexToHighlight)
|
signal requestHighlight(int indexToHighlight)
|
||||||
signal requestAutoPlayVoiceRecording(int indexToPlay)
|
signal requestAutoPlayVoiceRecording(int indexToPlay)
|
||||||
currentIndex: -1
|
currentIndex: -1
|
||||||
|
|
@ -226,51 +225,6 @@ ListView {
|
||||||
indicatorColor: DefaultStyle.main1_500_main
|
indicatorColor: DefaultStyle.main1_500_main
|
||||||
}
|
}
|
||||||
|
|
||||||
Dialog {
|
|
||||||
id: messageDeletionDialog
|
|
||||||
width: Utils.getSizeWithScreenRatio(637)
|
|
||||||
//: "Supprimer le message ?"
|
|
||||||
title: qsTr("conversation_dialog_delete_chat_message_title")
|
|
||||||
property var chatMessage
|
|
||||||
buttons: RowLayout {
|
|
||||||
id: buttonsLayout
|
|
||||||
Layout.alignment: Qt.AlignBottom | Qt.AlignRight
|
|
||||||
spacing: Utils.getSizeWithScreenRatio(20)
|
|
||||||
MediumButton {
|
|
||||||
id: firstButtonId
|
|
||||||
text: qsTr("conversation_dialog_delete_locally_label")
|
|
||||||
style: ButtonStyle.main
|
|
||||||
onClicked: {
|
|
||||||
messageDeletionDialog.chatMessage.core.lDelete()
|
|
||||||
messageDeletionDialog.close()
|
|
||||||
}
|
|
||||||
KeyNavigation.left: thirdButtonId
|
|
||||||
KeyNavigation.right: secondButtonId
|
|
||||||
}
|
|
||||||
MediumButton {
|
|
||||||
id: secondButtonId
|
|
||||||
text: qsTr("conversation_dialog_delete_for_everyone_label")
|
|
||||||
style: ButtonStyle.main
|
|
||||||
onClicked: {
|
|
||||||
messageDeletionDialog.chatMessage.core.lRetract()
|
|
||||||
messageDeletionDialog.close()
|
|
||||||
}
|
|
||||||
KeyNavigation.left: firstButtonId
|
|
||||||
KeyNavigation.right: thirdButtonId
|
|
||||||
}
|
|
||||||
MediumButton {
|
|
||||||
id: thirdButtonId
|
|
||||||
text: qsTr("dialog_cancel")
|
|
||||||
style: ButtonStyle.secondary
|
|
||||||
onClicked: {
|
|
||||||
messageDeletionDialog.close()
|
|
||||||
}
|
|
||||||
KeyNavigation.left: secondButtonId
|
|
||||||
KeyNavigation.right: firstButtonId
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delegate: DelegateChooser {
|
delegate: DelegateChooser {
|
||||||
role: "eventType"
|
role: "eventType"
|
||||||
DelegateChoice {
|
DelegateChoice {
|
||||||
|
|
@ -308,15 +262,7 @@ ListView {
|
||||||
? parent.right
|
? parent.right
|
||||||
: undefined
|
: undefined
|
||||||
|
|
||||||
onMessageDeletionRequested: {
|
onMessageDeletionRequested: chatMessage.core.lDelete()
|
||||||
if (chatMessage.core.isOutgoing && chatMessage.core.isRetractable && !chatMessage.core.isRetracted) {
|
|
||||||
messageDeletionDialog.chatMessage = chatMessage
|
|
||||||
messageDeletionDialog.open()
|
|
||||||
} else {
|
|
||||||
chatMessage.core.lDelete()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onMessageEditionRequested: mainItem.editMessageRequested(chatMessage)
|
|
||||||
onShowReactionsForMessageRequested: mainItem.showReactionsForMessageRequested(chatMessage)
|
onShowReactionsForMessageRequested: mainItem.showReactionsForMessageRequested(chatMessage)
|
||||||
onShowImdnStatusForMessageRequested: mainItem.showImdnStatusForMessageRequested(chatMessage)
|
onShowImdnStatusForMessageRequested: mainItem.showImdnStatusForMessageRequested(chatMessage)
|
||||||
onReplyToMessageRequested: mainItem.replyToMessageRequested(chatMessage)
|
onReplyToMessageRequested: mainItem.replyToMessageRequested(chatMessage)
|
||||||
|
|
@ -337,16 +283,6 @@ ListView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Connections {
|
|
||||||
target: chatMessage.core
|
|
||||||
onIsRetractedChanged: {
|
|
||||||
if (chatMessage.core.isRetracted && chatMessage.core.isOutgoing) {
|
|
||||||
UtilsCpp.showInformationPopup(qsTr("info_toast_deleted_title"),
|
|
||||||
//: The message has been deleted
|
|
||||||
qsTr("info_toast_deleted_message"), true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ Control.Control {
|
||||||
|
|
||||||
// disable record button if call ongoing
|
// disable record button if call ongoing
|
||||||
property bool callOngoing: false
|
property bool callOngoing: false
|
||||||
property bool isEditing: false
|
|
||||||
|
|
||||||
property ChatGui chat
|
property ChatGui chat
|
||||||
|
|
||||||
|
|
@ -79,7 +78,6 @@ Control.Control {
|
||||||
spacing: Utils.getSizeWithScreenRatio(16)
|
spacing: Utils.getSizeWithScreenRatio(16)
|
||||||
PopupButton {
|
PopupButton {
|
||||||
id: emojiPickerButton
|
id: emojiPickerButton
|
||||||
visible: !mainItem.isEditing
|
|
||||||
style: ButtonStyle.noBackground
|
style: ButtonStyle.noBackground
|
||||||
icon.source: checked ? AppIcons.closeX : AppIcons.smiley
|
icon.source: checked ? AppIcons.closeX : AppIcons.smiley
|
||||||
popup.width: Utils.getSizeWithScreenRatio(393)
|
popup.width: Utils.getSizeWithScreenRatio(393)
|
||||||
|
|
@ -191,7 +189,7 @@ Control.Control {
|
||||||
//: Cannot record a message while a call is ongoing
|
//: Cannot record a message while a call is ongoing
|
||||||
ToolTip.text: qsTr("cannot_record_while_in_call_tooltip")
|
ToolTip.text: qsTr("cannot_record_while_in_call_tooltip")
|
||||||
enabled: !mainItem.callOngoing
|
enabled: !mainItem.callOngoing
|
||||||
visible: !mainItem.callOngoing && sendingTextArea.text.length === 0 && mainItem.selectedFilesCount === 0 && !mainItem.isEditing
|
visible: !mainItem.callOngoing && sendingTextArea.text.length === 0 && mainItem.selectedFilesCount === 0
|
||||||
style: ButtonStyle.noBackground
|
style: ButtonStyle.noBackground
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
icon.source: AppIcons.microphone
|
icon.source: AppIcons.microphone
|
||||||
|
|
@ -204,7 +202,7 @@ Control.Control {
|
||||||
Layout.preferredHeight: height
|
Layout.preferredHeight: height
|
||||||
visible: sendingTextArea.text.length !== 0 || mainItem.selectedFilesCount > 0
|
visible: sendingTextArea.text.length !== 0 || mainItem.selectedFilesCount > 0
|
||||||
style: ButtonStyle.noBackgroundOrange
|
style: ButtonStyle.noBackgroundOrange
|
||||||
icon.source: mainItem.isEditing ? AppIcons.pencil : AppIcons.paperPlaneRight
|
icon.source: AppIcons.paperPlaneRight
|
||||||
onClicked: {
|
onClicked: {
|
||||||
mainItem.sendMessage()
|
mainItem.sendMessage()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ CreationFormLayout {
|
||||||
topLayoutVisible: mainItem.displayCurrentCalls && callList.count > 0
|
topLayoutVisible: mainItem.displayCurrentCalls && callList.count > 0
|
||||||
topContent: [
|
topContent: [
|
||||||
Text {
|
Text {
|
||||||
visible: callList.count > 0
|
|
||||||
//: "Appels en cours"
|
//: "Appels en cours"
|
||||||
text: qsTr("call_transfer_active_calls_label")
|
text: qsTr("call_transfer_active_calls_label")
|
||||||
font {
|
font {
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ FocusScope {
|
||||||
property CallGui call
|
property CallGui call
|
||||||
property alias callHeaderContent: splitPanel.header.contentItem
|
property alias callHeaderContent: splitPanel.header.contentItem
|
||||||
property bool replyingToMessage: false
|
property bool replyingToMessage: false
|
||||||
property bool editingMessage: false
|
|
||||||
enum PanelType { MessageReactions, SharedFiles, Medias, ImdnStatus, ForwardToList, ManageParticipants, EphemeralSettings, None}
|
enum PanelType { MessageReactions, SharedFiles, Medias, ImdnStatus, ForwardToList, ManageParticipants, EphemeralSettings, None}
|
||||||
|
|
||||||
signal oneOneCall(bool video)
|
signal oneOneCall(bool video)
|
||||||
|
|
@ -300,19 +299,11 @@ FocusScope {
|
||||||
onReplyToMessageRequested: (chatMessage) => {
|
onReplyToMessageRequested: (chatMessage) => {
|
||||||
mainItem.chatMessage = chatMessage
|
mainItem.chatMessage = chatMessage
|
||||||
mainItem.replyingToMessage = true
|
mainItem.replyingToMessage = true
|
||||||
if (mainItem.editingMessage) mainItem.editingMessage = false
|
|
||||||
}
|
}
|
||||||
onForwardMessageRequested: (chatMessage) => {
|
onForwardMessageRequested: (chatMessage) => {
|
||||||
mainItem.chatMessage = chatMessage
|
mainItem.chatMessage = chatMessage
|
||||||
contentLoader.panelType = SelectedChatView.PanelType.ForwardToList
|
contentLoader.panelType = SelectedChatView.PanelType.ForwardToList
|
||||||
detailsPanel.visible = true
|
detailsPanel.visible = true
|
||||||
if (mainItem.editingMessage) mainItem.editingMessage = false
|
|
||||||
}
|
|
||||||
onEditMessageRequested: (chatMessage) => {
|
|
||||||
mainItem.chatMessage = chatMessage
|
|
||||||
mainItem.editingMessage = true
|
|
||||||
if (mainItem.replyingToMessage) mainItem.replyingToMessage = false
|
|
||||||
messageSender.text = chatMessage.core.text
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ScrollBar {
|
ScrollBar {
|
||||||
|
|
@ -376,7 +367,7 @@ FocusScope {
|
||||||
}
|
}
|
||||||
Control.Control {
|
Control.Control {
|
||||||
id: selectedFilesArea
|
id: selectedFilesArea
|
||||||
visible: selectedFiles.count > 0 || mainItem.replyingToMessage || mainItem.editingMessage
|
visible: selectedFiles.count > 0 || mainItem.replyingToMessage
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: implicitHeight
|
Layout.preferredHeight: implicitHeight
|
||||||
topPadding: Utils.getSizeWithScreenRatio(12)
|
topPadding: Utils.getSizeWithScreenRatio(12)
|
||||||
|
|
@ -393,12 +384,7 @@ FocusScope {
|
||||||
style: ButtonStyle.noBackground
|
style: ButtonStyle.noBackground
|
||||||
onClicked: {
|
onClicked: {
|
||||||
contents.clear()
|
contents.clear()
|
||||||
if (mainItem.replyingToMessage)
|
mainItem.replyingToMessage = false
|
||||||
mainItem.replyingToMessage = false
|
|
||||||
else if (mainItem.editingMessage) {
|
|
||||||
mainItem.editingMessage = false
|
|
||||||
messageSender.text = ""
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
background: Item{
|
background: Item{
|
||||||
|
|
@ -424,13 +410,11 @@ FocusScope {
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: replyLayout
|
id: replyLayout
|
||||||
spacing: 0
|
spacing: 0
|
||||||
visible: mainItem.chatMessage && (mainItem.replyingToMessage || mainItem.editingMessage)
|
visible: mainItem.chatMessage && mainItem.replyingToMessage
|
||||||
Text {
|
Text {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
//: Reply to %1
|
//: Reply to %1
|
||||||
text: mainItem.replyingToMessage ?
|
text: mainItem.chatMessage ? qsTr("reply_to_label").arg(UtilsCpp.boldTextPart(mainItem.chatMessage.core.fromName, mainItem.chatMessage.core.fromName)) : ""
|
||||||
(mainItem.chatMessage ? qsTr("reply_to_label").arg(UtilsCpp.boldTextPart(mainItem.chatMessage.core.fromName, mainItem.chatMessage.core.fromName)) : "")
|
|
||||||
: qsTr("conversation_editing_message_title")
|
|
||||||
color: DefaultStyle.main2_500_main
|
color: DefaultStyle.main2_500_main
|
||||||
font {
|
font {
|
||||||
pixelSize: Typography.p3.pixelSize
|
pixelSize: Typography.p3.pixelSize
|
||||||
|
|
@ -505,7 +489,6 @@ FocusScope {
|
||||||
chat: mainItem.chat
|
chat: mainItem.chat
|
||||||
selectedFilesCount: contents.count
|
selectedFilesCount: contents.count
|
||||||
callOngoing: mainItem.call != null
|
callOngoing: mainItem.call != null
|
||||||
isEditing: mainItem.editingMessage
|
|
||||||
onChatChanged: {
|
onChatChanged: {
|
||||||
if (chat) messageSender.text = mainItem.chat.core.sendingText
|
if (chat) messageSender.text = mainItem.chat.core.sendingText
|
||||||
}
|
}
|
||||||
|
|
@ -524,10 +507,6 @@ FocusScope {
|
||||||
mainItem.replyingToMessage = false
|
mainItem.replyingToMessage = false
|
||||||
UtilsCpp.sendReplyMessage(mainItem.chatMessage, mainItem.chat, text, filesContents)
|
UtilsCpp.sendReplyMessage(mainItem.chatMessage, mainItem.chat, text, filesContents)
|
||||||
}
|
}
|
||||||
else if (mainItem.editingMessage) {
|
|
||||||
UtilsCpp.sendReplaceMessage(mainItem.chatMessage, mainItem.chat, text, filesContents)
|
|
||||||
mainItem.editingMessage = false
|
|
||||||
}
|
|
||||||
else if (filesContents.length === 0)
|
else if (filesContents.length === 0)
|
||||||
mainItem.chat.core.lSendTextMessage(text)
|
mainItem.chat.core.lSendTextMessage(text)
|
||||||
else mainItem.chat.core.lSendMessage(text, filesContents)
|
else mainItem.chat.core.lSendMessage(text, filesContents)
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,4 @@ AbstractSettingsMenu {
|
||||||
qsTr("contact_editor_dialog_abort_confirmation_save")
|
qsTr("contact_editor_dialog_abort_confirmation_save")
|
||||||
)
|
)
|
||||||
} else {mainItem.goBack()}
|
} else {mainItem.goBack()}
|
||||||
|
|
||||||
Component.onCompleted: {
|
|
||||||
SettingsCpp.isSaved = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -207,14 +207,6 @@ AbstractSettingsLayout {
|
||||||
propertyOwnerGui: account
|
propertyOwnerGui: account
|
||||||
toValidate: true
|
toValidate: true
|
||||||
}
|
}
|
||||||
DecoratedTextField {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
//: "URL du serveur CCMP"
|
|
||||||
title: qsTr("account_settings_ccmp_server_url_title")
|
|
||||||
propertyName: "ccmpServerUrl"
|
|
||||||
propertyOwnerGui: account
|
|
||||||
toValidate: true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -167,17 +167,6 @@ AbstractSettingsLayout {
|
||||||
subTitleText: modelData.core.clockRate + " Hz"
|
subTitleText: modelData.core.clockRate + " Hz"
|
||||||
propertyName: "enabled"
|
propertyName: "enabled"
|
||||||
propertyOwnerGui: modelData
|
propertyOwnerGui: modelData
|
||||||
Connections {
|
|
||||||
target: modelData.core
|
|
||||||
function onChanged() { SettingsCpp.isSaved = false }
|
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: SettingsCpp
|
|
||||||
function onIsSavedChanged(saved) {
|
|
||||||
if (saved)
|
|
||||||
modelData.core.save()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -205,17 +194,6 @@ AbstractSettingsLayout {
|
||||||
subTitleText: modelData.core.encoderDescription
|
subTitleText: modelData.core.encoderDescription
|
||||||
propertyName: "enabled"
|
propertyName: "enabled"
|
||||||
propertyOwnerGui: modelData
|
propertyOwnerGui: modelData
|
||||||
Connections {
|
|
||||||
target: modelData.core
|
|
||||||
function onChanged() { SettingsCpp.isSaved = false }
|
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: SettingsCpp
|
|
||||||
function onIsSavedChanged(saved) {
|
|
||||||
if (saved)
|
|
||||||
modelData.core.save()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ListView {
|
ListView {
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,11 @@ import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils
|
||||||
|
|
||||||
AbstractSettingsLayout {
|
AbstractSettingsLayout {
|
||||||
id: mainItem
|
id: mainItem
|
||||||
width: parent?.width
|
|
||||||
|
|
||||||
property bool enableCallForward: SettingsCpp.callForwardToAddress.length > 0
|
property bool enableCallForward: SettingsCpp.callForwardToAddress.length > 0
|
||||||
|
property string localCallForwardToAddress: SettingsCpp.callForwardToAddress
|
||||||
|
|
||||||
|
width: parent?.width
|
||||||
|
|
||||||
contentModel: [
|
contentModel: [
|
||||||
{
|
{
|
||||||
|
|
@ -21,14 +23,44 @@ AbstractSettingsLayout {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: SettingsCpp
|
||||||
|
function onCallForwardToAddressChanged() {
|
||||||
|
requestTimeOut.stop()
|
||||||
|
UtilsCpp.getMainWindow().closeLoadingPopup()
|
||||||
|
UtilsCpp.showInformationPopup("",
|
||||||
|
SettingsCpp.callForwardToAddress
|
||||||
|
? qsTr("settings_call_forward_activation_success") + (SettingsCpp.callForwardToAddress == "voicemail" ? qsTr("settings_call_forward_to_voicemail") : SettingsCpp.callForwardToAddress)
|
||||||
|
: qsTr("settings_call_forward_deactivation_success")
|
||||||
|
, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
id: requestTimeOut
|
||||||
|
interval: 10000
|
||||||
|
running: false
|
||||||
|
repeat: false
|
||||||
|
onTriggered: {
|
||||||
|
UtilsCpp.getMainWindow().closeLoadingPopup()
|
||||||
|
UtilsCpp.showInformationPopup("", qsTr("settings_call_forward_address_timeout"), false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onSave: {
|
onSave: {
|
||||||
if (mainItem.enableCallForward && SettingsCpp.callForwardToAddress.length == 0) {
|
if (mainItem.enableCallForward && mainItem.localCallForwardToAddress.length == 0) {
|
||||||
UtilsCpp.getMainWindow().showInformationPopup("", qsTr("settings_call_forward_address_cannot_be_empty"), false)
|
UtilsCpp.getMainWindow().showInformationPopup("", qsTr("settings_call_forward_address_cannot_be_empty"), false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
SettingsCpp.save()
|
requestTimeOut.start()
|
||||||
|
if (!mainItem.enableCallForward && SettingsCpp.callForwardToAddress.length > 0) {
|
||||||
|
UtilsCpp.getMainWindow().showLoadingPopup(qsTr("settings_call_forward_address_progress_disabling") + " ...")
|
||||||
|
SettingsCpp.callForwardToAddress = ""
|
||||||
|
} else if (SettingsCpp.callForwardToAddress != mainItem.localCallForwardToAddress) {
|
||||||
|
UtilsCpp.getMainWindow().showLoadingPopup(qsTr("settings_call_forward_address_progress_enabling")+(mainItem.localCallForwardToAddress === 'voicemail' ? qsTr("settings_call_forward_to_voicemail") : mainItem.localCallForwardToAddress) + " ...")
|
||||||
|
SettingsCpp.callForwardToAddress = mainItem.localCallForwardToAddress
|
||||||
|
}
|
||||||
}
|
}
|
||||||
onUndo: SettingsCpp.undo()
|
|
||||||
|
|
||||||
// Generic forward parameters
|
// Generic forward parameters
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
|
|
@ -44,11 +76,6 @@ AbstractSettingsLayout {
|
||||||
subTitleText: qsTr("settings_call_forward_activate_subtitle")
|
subTitleText: qsTr("settings_call_forward_activate_subtitle")
|
||||||
propertyName: "enableCallForward"
|
propertyName: "enableCallForward"
|
||||||
propertyOwner: mainItem
|
propertyOwner: mainItem
|
||||||
onToggled: function () {
|
|
||||||
SettingsCpp.isSaved = false
|
|
||||||
if (!mainItem.enableCallForward)
|
|
||||||
SettingsCpp.callForwardToAddress = ""
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Text {
|
Text {
|
||||||
visible: mainItem.enableCallForward
|
visible: mainItem.enableCallForward
|
||||||
|
|
@ -72,7 +99,7 @@ AbstractSettingsLayout {
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
if (mainItem.enableCallForward) {
|
if (mainItem.enableCallForward) {
|
||||||
forwardDestination.currentIndex =
|
forwardDestination.currentIndex =
|
||||||
(SettingsCpp.callForwardToAddress === "voicemail" || SettingsCpp.callForwardToAddress.length === 0) ? 0 : 1;
|
(mainItem.localCallForwardToAddress === "voicemail" || mainItem.localCallForwardToAddress.length === 0) ? 0 : 1;
|
||||||
} else {
|
} else {
|
||||||
forwardDestination.currentIndex = 0;
|
forwardDestination.currentIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -82,16 +109,16 @@ AbstractSettingsLayout {
|
||||||
if (!forwardDestination.isInitialized)
|
if (!forwardDestination.isInitialized)
|
||||||
return;
|
return;
|
||||||
if (currentIndex == 0)
|
if (currentIndex == 0)
|
||||||
SettingsCpp.callForwardToAddress = "voicemail";
|
mainItem.localCallForwardToAddress = "voicemail";
|
||||||
else {
|
else {
|
||||||
SettingsCpp.callForwardToAddress = "";
|
mainItem.localCallForwardToAddress = "";
|
||||||
sipInputField.empty();
|
sipInputField.empty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onVisibleChanged: {
|
onVisibleChanged: {
|
||||||
if (visible) {
|
if (visible) {
|
||||||
currentIndex = 0
|
currentIndex = 0
|
||||||
SettingsCpp.callForwardToAddress = "voicemail";
|
mainItem.localCallForwardToAddress = "voicemail";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -100,8 +127,8 @@ AbstractSettingsLayout {
|
||||||
id: sipInputField
|
id: sipInputField
|
||||||
visible: mainItem.enableCallForward && forwardDestination.currentIndex == 1
|
visible: mainItem.enableCallForward && forwardDestination.currentIndex == 1
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
propertyName: "callForwardToAddress"
|
propertyName: "localCallForwardToAddress"
|
||||||
propertyOwner: SettingsCpp
|
propertyOwner: mainItem
|
||||||
//: SIP Address
|
//: SIP Address
|
||||||
title: qsTr("settings_call_forward_sipaddress_title")
|
title: qsTr("settings_call_forward_sipaddress_title")
|
||||||
placeHolder: qsTr("settings_call_forward_sipaddress_placeholder")
|
placeHolder: qsTr("settings_call_forward_sipaddress_placeholder")
|
||||||
|
|
|
||||||
|
|
@ -738,7 +738,7 @@ AbstractMainPage {
|
||||||
KeyNavigation.left: linkButton
|
KeyNavigation.left: linkButton
|
||||||
KeyNavigation.right: linkButton
|
KeyNavigation.right: linkButton
|
||||||
KeyNavigation.up: deletePopup
|
KeyNavigation.up: deletePopup
|
||||||
KeyNavigation.down: calendarPlusButton
|
KeyNavigation.down: joinButton
|
||||||
onClicked: {
|
onClicked: {
|
||||||
var success = UtilsCpp.copyToClipboard(mainItem.selectedConference.core.uri)
|
var success = UtilsCpp.copyToClipboard(mainItem.selectedConference.core.uri)
|
||||||
if (success) UtilsCpp.showInformationPopup(qsTr("saved"),
|
if (success) UtilsCpp.showInformationPopup(qsTr("saved"),
|
||||||
|
|
@ -767,18 +767,6 @@ AbstractMainPage {
|
||||||
capitalization: Font.Capitalize
|
capitalization: Font.Capitalize
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RoundButton {
|
|
||||||
id: calendarPlusButton
|
|
||||||
style: ButtonStyle.noBackground
|
|
||||||
icon.source: AppIcons.calendarPlus
|
|
||||||
KeyNavigation.left: calendarPlusButton
|
|
||||||
KeyNavigation.right: calendarPlusButton
|
|
||||||
KeyNavigation.up: shareNetworkButton
|
|
||||||
KeyNavigation.down: joinButton
|
|
||||||
onClicked: {
|
|
||||||
mainItem.selectedConference.core.exportConferenceToICS()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
RowLayout {
|
RowLayout {
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
spacing: Utils.getSizeWithScreenRatio(8)
|
||||||
|
|
|
||||||
|
|
@ -124,8 +124,8 @@ AbstractWindow {
|
||||||
function onAssistantGoDirectlyToThirdPartySipAccountLoginChanged() {
|
function onAssistantGoDirectlyToThirdPartySipAccountLoginChanged() {
|
||||||
initStackViewItem()
|
initStackViewItem()
|
||||||
}
|
}
|
||||||
function onIsSavedChanged(saved) {
|
function onIsSavedChanged() {
|
||||||
if (saved) UtilsCpp.showInformationPopup(qsTr("information_popup_success_title"),
|
if (SettingsCpp.isSaved) UtilsCpp.showInformationPopup(qsTr("information_popup_success_title"),
|
||||||
//: "Les changements ont été sauvegardés"
|
//: "Les changements ont été sauvegardés"
|
||||||
qsTr("information_popup_changes_saved"), true, mainWindow)
|
qsTr("information_popup_changes_saved"), true, mainWindow)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -160,5 +160,4 @@ QtObject {
|
||||||
property string ephemeralSettings: "image://internal/ephemeral-settings.svg"
|
property string ephemeralSettings: "image://internal/ephemeral-settings.svg"
|
||||||
property string hourglass: "image://internal/hourglass-simple.svg"
|
property string hourglass: "image://internal/hourglass-simple.svg"
|
||||||
property string qtLogo: "image://internal/qt-logo.png"
|
property string qtLogo: "image://internal/qt-logo.png"
|
||||||
property string calendarPlus: "image://internal/calendar-plus.svg"
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,6 @@ QtObject {
|
||||||
property var success_700: "#377d71"
|
property var success_700: "#377d71"
|
||||||
property var success_900: "#1E4C53"
|
property var success_900: "#1E4C53"
|
||||||
property var info_500_main: "#4AA8FF"
|
property var info_500_main: "#4AA8FF"
|
||||||
property var info_800_main: "#02528D"
|
|
||||||
|
|
||||||
property var vue_meter_light_green: "#6FF88D"
|
property var vue_meter_light_green: "#6FF88D"
|
||||||
property var vue_meter_dark_green: "#00D916"
|
property var vue_meter_dark_green: "#00D916"
|
||||||
|
|
|
||||||
|
|
@ -81,14 +81,6 @@ QtObject {
|
||||||
weight: Font.Normal
|
weight: Font.Normal
|
||||||
})
|
})
|
||||||
|
|
||||||
// Text/P1i - Paragraph text Italic
|
|
||||||
property font p1i: Qt.font( {
|
|
||||||
family: DefaultStyle.defaultFont,
|
|
||||||
pixelSize: Utils.getSizeWithScreenRatio(14),
|
|
||||||
weight: Font.Normal,
|
|
||||||
italic: true
|
|
||||||
})
|
|
||||||
|
|
||||||
// Text/P1s - Paragraph text
|
// Text/P1s - Paragraph text
|
||||||
property font p1s: Qt.font( {
|
property font p1s: Qt.font( {
|
||||||
family: DefaultStyle.defaultFont,
|
family: DefaultStyle.defaultFont,
|
||||||
|
|
|
||||||
|
|
@ -117,11 +117,12 @@ elseif(WIN32)
|
||||||
NAMES msys2_shell.cmd
|
NAMES msys2_shell.cmd
|
||||||
HINTS "C:/msys64/"
|
HINTS "C:/msys64/"
|
||||||
)
|
)
|
||||||
|
set(MSVC_VERSION ${MSVC_TOOLSET_VERSION})
|
||||||
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
|
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE)
|
set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE)
|
||||||
endif()
|
endif()
|
||||||
include(InstallRequiredSystemLibraries)
|
include(InstallRequiredSystemLibraries)
|
||||||
find_file(UCRTBASE_LIB "ucrtbase.dll" PATHS "C:/Windows/System32")
|
find_file(UCRTBASE_LIB "ucrtbase.dll" PATHS "C:/Windows/System32")
|
||||||
install(FILES ${UCRTBASE_LIB} DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
install(FILES ${UCRTBASE_LIB} DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||||
|
|
||||||
|
|
|
||||||
2
external/linphone-sdk
vendored
2
external/linphone-sdk
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit dc5d0d260cc5db90dc4d7dcb49780a12aaada33b
|
Subproject commit 3ac59232c3f6c0553226708ef7ce81f716fbb10e
|
||||||
Loading…
Add table
Reference in a new issue