Fixes:
try to remove ffmpeg dependency #LINQT-2015 Clean friends manager maps when restarting app as the linphone core will be reset (fix #LINQT-1933) only show error message once when linphone restarts if remote configuration failed #LINQT-2030 auto update contact list on carddav synchronized (fix #LINQT-1983)
This commit is contained in:
parent
af373148e3
commit
4e81981c07
19 changed files with 89 additions and 19 deletions
|
|
@ -36,7 +36,7 @@ ubuntu2004-ninja-clang:
|
||||||
- !reference [.rules-merge-request-manual, rules]
|
- !reference [.rules-merge-request-manual, rules]
|
||||||
- if: $NIGHTLY_MASTER
|
- if: $NIGHTLY_MASTER
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF
|
||||||
CMAKE_GENERATOR: Ninja
|
CMAKE_GENERATOR: Ninja
|
||||||
CC: clang
|
CC: clang
|
||||||
CXX: clang++
|
CXX: clang++
|
||||||
|
|
@ -59,7 +59,7 @@ ubuntu2004-makefile-gcc:
|
||||||
- if: $NIGHTLY_MASTER
|
- if: $NIGHTLY_MASTER
|
||||||
- if: $DEPLOY_PLUGINS
|
- if: $DEPLOY_PLUGINS
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
CMAKE_OPTIONS: -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF
|
||||||
CMAKE_GENERATOR: Unix Makefiles
|
CMAKE_GENERATOR: Unix Makefiles
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CXX: g++
|
CXX: g++
|
||||||
|
|
@ -105,7 +105,7 @@ ubuntu2004-makefile-gcc-package:
|
||||||
- if: $PACKAGE_LINUX
|
- if: $PACKAGE_LINUX
|
||||||
- if: $DEPLOY_LINUX
|
- if: $DEPLOY_LINUX
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF
|
||||||
CMAKE_GENERATOR: Unix Makefiles
|
CMAKE_GENERATOR: Unix Makefiles
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CXX: g++
|
CXX: g++
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ ubuntu2204-ninja-clang:
|
||||||
- !reference [.rules-merge-request-manual, rules]
|
- !reference [.rules-merge-request-manual, rules]
|
||||||
- if: $NIGHTLY_MASTER
|
- if: $NIGHTLY_MASTER
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF
|
||||||
CMAKE_GENERATOR: Ninja
|
CMAKE_GENERATOR: Ninja
|
||||||
CC: clang
|
CC: clang
|
||||||
CXX: clang++
|
CXX: clang++
|
||||||
|
|
@ -59,7 +59,7 @@ ubuntu2204-makefile-gcc:
|
||||||
- if: $NIGHTLY_MASTER
|
- if: $NIGHTLY_MASTER
|
||||||
- if: $DEPLOY_PLUGINS
|
- if: $DEPLOY_PLUGINS
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
CMAKE_OPTIONS: -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF
|
||||||
CMAKE_GENERATOR: Unix Makefiles
|
CMAKE_GENERATOR: Unix Makefiles
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CXX: g++
|
CXX: g++
|
||||||
|
|
@ -105,7 +105,7 @@ ubuntu2204-makefile-gcc-package:
|
||||||
- if: $PACKAGE_LINUX
|
- if: $PACKAGE_LINUX
|
||||||
- if: $DEPLOY_LINUX
|
- if: $DEPLOY_LINUX
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF
|
||||||
CMAKE_GENERATOR: Unix Makefiles
|
CMAKE_GENERATOR: Unix Makefiles
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CXX: g++
|
CXX: g++
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ macosx-ninja-package:
|
||||||
- if: $PACKAGE_MACOSX
|
- if: $PACKAGE_MACOSX
|
||||||
- if: $DEPLOY_MACOSX
|
- if: $DEPLOY_MACOSX
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DPython3_ROOT_DIR=/opt/bc/pip-packages/ -DENABLE_APP_PACKAGING=ON -DENABLE_GPL_THIRD_PARTIES=ON -DENABLE_G729=ON
|
CMAKE_OPTIONS: -DPython3_ROOT_DIR=/opt/bc/pip-packages/ -DENABLE_APP_PACKAGING=ON -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_G729=ON
|
||||||
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$MACOSX_PLATFORM/$APP_FOLDER
|
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$MACOSX_PLATFORM/$APP_FOLDER
|
||||||
extends: macosx-ninja
|
extends: macosx-ninja
|
||||||
script:
|
script:
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
|
||||||
- if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
|
- if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF
|
||||||
LINPHONESDK_PLATFORM: Desktop
|
LINPHONESDK_PLATFORM: Desktop
|
||||||
OUTPUT_ZIP_FOLDER: win64
|
OUTPUT_ZIP_FOLDER: win64
|
||||||
MINGW_TYPE: mingw64
|
MINGW_TYPE: mingw64
|
||||||
|
|
@ -185,7 +185,7 @@ win64-ninja-vs2022-scheduled-windows:
|
||||||
- if: $PACKAGE_WINDOWS
|
- if: $PACKAGE_WINDOWS
|
||||||
- if: $DEPLOY_WINDOWS
|
- if: $DEPLOY_WINDOWS
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF
|
||||||
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER
|
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER
|
||||||
|
|
||||||
win64-ninja-vs2022-package-windows:
|
win64-ninja-vs2022-package-windows:
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,7 @@
|
||||||
#include "core/translator/DefaultTranslatorCore.hpp"
|
#include "core/translator/DefaultTranslatorCore.hpp"
|
||||||
#include "core/variant/VariantList.hpp"
|
#include "core/variant/VariantList.hpp"
|
||||||
#include "core/videoSource/VideoSourceDescriptorGui.hpp"
|
#include "core/videoSource/VideoSourceDescriptorGui.hpp"
|
||||||
|
#include "model/friend/FriendsManager.hpp"
|
||||||
#include "model/object/VariantObject.hpp"
|
#include "model/object/VariantObject.hpp"
|
||||||
#include "model/tool/ToolModel.hpp"
|
#include "model/tool/ToolModel.hpp"
|
||||||
#include "tool/Constants.hpp"
|
#include "tool/Constants.hpp"
|
||||||
|
|
@ -635,7 +636,8 @@ void App::initCore() {
|
||||||
} else lInfo() << log().arg("Stay minimized");
|
} else lInfo() << log().arg("Stay minimized");
|
||||||
firstOpen = false;
|
firstOpen = false;
|
||||||
lInfo() << log().arg("Checking remote provisioning");
|
lInfo() << log().arg("Checking remote provisioning");
|
||||||
if (CoreModel::getInstance()->mConfigStatus == linphone::ConfiguringState::Failed) {
|
if (CoreModel::getInstance()->mConfigStatus == linphone::ConfiguringState::Failed &&
|
||||||
|
mIsRestarting) {
|
||||||
QMetaObject::invokeMethod(thread(), [this]() {
|
QMetaObject::invokeMethod(thread(), [this]() {
|
||||||
auto message = CoreModel::getInstance()->mConfigMessage;
|
auto message = CoreModel::getInstance()->mConfigMessage;
|
||||||
//: not reachable
|
//: not reachable
|
||||||
|
|
@ -648,6 +650,7 @@ void App::initCore() {
|
||||||
tr("info_popup_configuration_failed_message").arg(message), false);
|
tr("info_popup_configuration_failed_message").arg(message), false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
mIsRestarting = false;
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------
|
||||||
lDebug() << log().arg("Creating KeyboardShortcuts");
|
lDebug() << log().arg("Creating KeyboardShortcuts");
|
||||||
|
|
@ -883,8 +886,10 @@ void App::clean() {
|
||||||
}
|
}
|
||||||
void App::restart() {
|
void App::restart() {
|
||||||
mCoreModelConnection->invokeToModel([this]() {
|
mCoreModelConnection->invokeToModel([this]() {
|
||||||
|
FriendsManager::getInstance()->clearMaps();
|
||||||
CoreModel::getInstance()->getCore()->stop();
|
CoreModel::getInstance()->getCore()->stop();
|
||||||
mCoreModelConnection->invokeToCore([this]() {
|
mCoreModelConnection->invokeToCore([this]() {
|
||||||
|
mIsRestarting = true;
|
||||||
closeCallsWindow();
|
closeCallsWindow();
|
||||||
setMainWindow(nullptr);
|
setMainWindow(nullptr);
|
||||||
mEngine->clearComponentCache();
|
mEngine->clearComponentCache();
|
||||||
|
|
|
||||||
|
|
@ -207,6 +207,7 @@ private:
|
||||||
QSharedPointer<SafeConnection<App, CliModel>> mCliModelConnection;
|
QSharedPointer<SafeConnection<App, CliModel>> mCliModelConnection;
|
||||||
bool mAutoStart = false;
|
bool mAutoStart = false;
|
||||||
bool mCoreStarted = false;
|
bool mCoreStarted = false;
|
||||||
|
bool mIsRestarting = false;
|
||||||
QLocale mLocale = QLocale::system();
|
QLocale mLocale = QLocale::system();
|
||||||
DefaultTranslatorCore *mTranslatorCore = nullptr;
|
DefaultTranslatorCore *mTranslatorCore = nullptr;
|
||||||
DefaultTranslatorCore *mDefaultTranslatorCore = nullptr;
|
DefaultTranslatorCore *mDefaultTranslatorCore = nullptr;
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,10 @@ void CarddavCore::remove() {
|
||||||
void CarddavCore::setSelf(QSharedPointer<CarddavCore> me) {
|
void CarddavCore::setSelf(QSharedPointer<CarddavCore> me) {
|
||||||
mCarddavModelConnection = SafeConnection<CarddavCore, CarddavModel>::create(me, mCarddavModel);
|
mCarddavModelConnection = SafeConnection<CarddavCore, CarddavModel>::create(me, mCarddavModel);
|
||||||
mCarddavModelConnection->makeConnectToModel(&CarddavModel::saved, [this](bool success) {
|
mCarddavModelConnection->makeConnectToModel(&CarddavModel::saved, [this](bool success) {
|
||||||
mCarddavModelConnection->invokeToCore([this, success]() { emit saved(success); });
|
mCarddavModelConnection->invokeToCore([this, success]() {
|
||||||
|
if (success) emit App::getInstance()->getSettings()->cardDAVAddressBookSynchronized();
|
||||||
|
emit saved(success);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -392,6 +392,11 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
||||||
mSettingsModelConnection->invokeToCore([this, value]() { setDndEnabled(value); });
|
mSettingsModelConnection->invokeToCore([this, value]() { setDndEnabled(value); });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// CardDAV
|
||||||
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::cardDAVMinCharResearchChanged, [this](int min) {
|
||||||
|
mSettingsModelConnection->invokeToCore([this, min]() { setCardDAVMinCharForResearch(min); });
|
||||||
|
});
|
||||||
|
|
||||||
auto settingsModel = SettingsModel::getInstance();
|
auto settingsModel = SettingsModel::getInstance();
|
||||||
|
|
||||||
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool,
|
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool,
|
||||||
|
|
@ -547,6 +552,7 @@ void SettingsCore::reset(const SettingsCore &settingsCore) {
|
||||||
setAutoStart(settingsCore.mAutoStart);
|
setAutoStart(settingsCore.mAutoStart);
|
||||||
setExitOnClose(settingsCore.mExitOnClose);
|
setExitOnClose(settingsCore.mExitOnClose);
|
||||||
setSyncLdapContacts(settingsCore.mSyncLdapContacts);
|
setSyncLdapContacts(settingsCore.mSyncLdapContacts);
|
||||||
|
setCardDAVMinCharForResearch(settingsCore.mCardDAVMinCharForResearch);
|
||||||
setIpv6Enabled(settingsCore.mIpv6Enabled);
|
setIpv6Enabled(settingsCore.mIpv6Enabled);
|
||||||
setConfigLocale(settingsCore.mConfigLocale);
|
setConfigLocale(settingsCore.mConfigLocale);
|
||||||
setDownloadFolder(settingsCore.mDownloadFolder);
|
setDownloadFolder(settingsCore.mDownloadFolder);
|
||||||
|
|
@ -1004,6 +1010,17 @@ bool SettingsCore::getSyncLdapContacts() const {
|
||||||
return mSyncLdapContacts;
|
return mSyncLdapContacts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SettingsCore::getCardDAVMinCharForResearch() const {
|
||||||
|
return mCardDAVMinCharForResearch;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsCore::setCardDAVMinCharForResearch(int min) {
|
||||||
|
if (mCardDAVMinCharForResearch != min) {
|
||||||
|
mCardDAVMinCharForResearch = min;
|
||||||
|
emit cardDAVMinCharForResearchChanged(mCardDAVMinCharForResearch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QString SettingsCore::getConfigLocale() const {
|
QString SettingsCore::getConfigLocale() const {
|
||||||
return mConfigLocale;
|
return mConfigLocale;
|
||||||
}
|
}
|
||||||
|
|
@ -1148,6 +1165,7 @@ void SettingsCore::writeFromModel(const std::shared_ptr<SettingsModel> &model) {
|
||||||
mAutoStart = model->getAutoStart();
|
mAutoStart = model->getAutoStart();
|
||||||
mExitOnClose = model->getExitOnClose();
|
mExitOnClose = model->getExitOnClose();
|
||||||
mSyncLdapContacts = model->getSyncLdapContacts();
|
mSyncLdapContacts = model->getSyncLdapContacts();
|
||||||
|
mCardDAVMinCharForResearch = model->getCardDAVMinCharResearch();
|
||||||
mIpv6Enabled = model->getIpv6Enabled();
|
mIpv6Enabled = model->getIpv6Enabled();
|
||||||
mConfigLocale = model->getConfigLocale();
|
mConfigLocale = model->getConfigLocale();
|
||||||
mDownloadFolder = model->getDownloadFolder();
|
mDownloadFolder = model->getDownloadFolder();
|
||||||
|
|
|
||||||
|
|
@ -215,6 +215,9 @@ public:
|
||||||
bool showAccountDevices() const;
|
bool showAccountDevices() const;
|
||||||
void setShowAccountDevices(bool show);
|
void setShowAccountDevices(bool show);
|
||||||
|
|
||||||
|
bool getCardDAVMinCharForResearch() const;
|
||||||
|
void setCardDAVMinCharForResearch(int min);
|
||||||
|
|
||||||
Q_INVOKABLE void save();
|
Q_INVOKABLE void save();
|
||||||
Q_INVOKABLE void undo();
|
Q_INVOKABLE void undo();
|
||||||
|
|
||||||
|
|
@ -282,6 +285,9 @@ signals:
|
||||||
void conferenceLayoutsChanged(const QVariantList &layouts);
|
void conferenceLayoutsChanged(const QVariantList &layouts);
|
||||||
void mediaEncryptionsChanged(const QVariantList &encryptions);
|
void mediaEncryptionsChanged(const QVariantList &encryptions);
|
||||||
|
|
||||||
|
void cardDAVMinCharForResearchChanged(int min);
|
||||||
|
void cardDAVAddressBookSynchronized();
|
||||||
|
|
||||||
void lSetCaptureDevice(QVariantMap device);
|
void lSetCaptureDevice(QVariantMap device);
|
||||||
void captureDeviceChanged(const QVariantMap &device);
|
void captureDeviceChanged(const QVariantMap &device);
|
||||||
|
|
||||||
|
|
@ -392,6 +398,9 @@ private:
|
||||||
QString mDefaultDomain;
|
QString mDefaultDomain;
|
||||||
bool mShowAccountDevices = false;
|
bool mShowAccountDevices = false;
|
||||||
|
|
||||||
|
// CardDAV
|
||||||
|
int mCardDAVMinCharForResearch = 0;
|
||||||
|
|
||||||
DECLARE_ABSTRACT_OBJECT
|
DECLARE_ABSTRACT_OBJECT
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ void CarddavModel::onSyncStatusChanged(const std::shared_ptr<linphone::FriendLis
|
||||||
if (status == linphone::FriendList::SyncStatus::Successful) {
|
if (status == linphone::FriendList::SyncStatus::Successful) {
|
||||||
lInfo() << log().arg("Successfully synchronized:") << mCarddavFriendList->getUri();
|
lInfo() << log().arg("Successfully synchronized:") << mCarddavFriendList->getUri();
|
||||||
setMonitor(nullptr);
|
setMonitor(nullptr);
|
||||||
if (mStoreNewFriendsInIt) SettingsModel::setCardDAVListForNewFriends(friendList->getDisplayName());
|
SettingsModel::setCardDAVListForNewFriends(mStoreNewFriendsInIt ? friendList->getDisplayName() : "");
|
||||||
emit saved(true);
|
emit saved(true);
|
||||||
}
|
}
|
||||||
if (status == linphone::FriendList::SyncStatus::Failure) {
|
if (status == linphone::FriendList::SyncStatus::Failure) {
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ FriendsManager::FriendsManager(QObject *parent) : QObject(parent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
FriendsManager::~FriendsManager() {
|
FriendsManager::~FriendsManager() {
|
||||||
|
clearMaps();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<FriendsManager> FriendsManager::create(QObject *parent) {
|
std::shared_ptr<FriendsManager> FriendsManager::create(QObject *parent) {
|
||||||
|
|
@ -98,6 +99,12 @@ QStringList FriendsManager::getOtherAddresses() const {
|
||||||
return mOtherAddresses;
|
return mOtherAddresses;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FriendsManager::clearMaps() {
|
||||||
|
mKnownFriends.clear();
|
||||||
|
mUnknownFriends.clear();
|
||||||
|
mOtherAddresses.clear();
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<linphone::Friend> FriendsManager::getKnownFriendAtKey(const QString &key) {
|
std::shared_ptr<linphone::Friend> FriendsManager::getKnownFriendAtKey(const QString &key) {
|
||||||
if (isInKnownFriends(key)) {
|
if (isInKnownFriends(key)) {
|
||||||
return mKnownFriends.value(key).value<std::shared_ptr<linphone::Friend>>();
|
return mKnownFriends.value(key).value<std::shared_ptr<linphone::Friend>>();
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,8 @@ public:
|
||||||
QVariantMap getUnknownFriends() const;
|
QVariantMap getUnknownFriends() const;
|
||||||
QStringList getOtherAddresses() const;
|
QStringList getOtherAddresses() const;
|
||||||
|
|
||||||
|
void clearMaps();
|
||||||
|
|
||||||
std::shared_ptr<linphone::Friend> getKnownFriendAtKey(const QString &key);
|
std::shared_ptr<linphone::Friend> getKnownFriendAtKey(const QString &key);
|
||||||
std::shared_ptr<linphone::Friend> getUnknownFriendAtKey(const QString &key);
|
std::shared_ptr<linphone::Friend> getUnknownFriendAtKey(const QString &key);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,10 @@ void MagicSearchModel::search(QString filter,
|
||||||
if (((sourceFlags & (int)LinphoneEnums::MagicSearchSource::LdapServers) > 0) &&
|
if (((sourceFlags & (int)LinphoneEnums::MagicSearchSource::LdapServers) > 0) &&
|
||||||
!SettingsModel::getInstance()->getSyncLdapContacts())
|
!SettingsModel::getInstance()->getSyncLdapContacts())
|
||||||
sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::LdapServers;
|
sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::LdapServers;
|
||||||
if (((sourceFlags & (int)LinphoneEnums::MagicSearchSource::RemoteCardDAV) > 0))
|
if (((sourceFlags & (int)LinphoneEnums::MagicSearchSource::RemoteCardDAV) > 0) &&
|
||||||
|
SettingsModel::getInstance()->getCardDAVMinCharResearch() > 0) {
|
||||||
sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::RemoteCardDAV;
|
sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::RemoteCardDAV;
|
||||||
|
}
|
||||||
// For complete search, we search only on local contacts.
|
// For complete search, we search only on local contacts.
|
||||||
// sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::CallLogs;
|
// sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::CallLogs;
|
||||||
// sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::ChatRooms;
|
// sourceFlags &= ~(int)LinphoneEnums::MagicSearchSource::ChatRooms;
|
||||||
|
|
@ -104,7 +106,7 @@ void MagicSearchModel::onSearchResultsReceived(const std::shared_ptr<linphone::M
|
||||||
// << (fList ? fList->getDisplayName().c_str() : "NoList") << result->getSourceFlags() << " /
|
// << (fList ? fList->getDisplayName().c_str() : "NoList") << result->getSourceFlags() << " /
|
||||||
//"
|
//"
|
||||||
// << (f ? f.get() : nullptr);
|
// << (f ? f.get() : nullptr);
|
||||||
bool isLdap = (result->getSourceFlags() & (int)linphone::MagicSearch::Source::LdapServers) != 0;
|
bool isLdap = result->hasSourceFlag(linphone::MagicSearch::Source::LdapServers) != 0;
|
||||||
// Do not add it into ldap_friends if it already exists in app_friends.
|
// Do not add it into ldap_friends if it already exists in app_friends.
|
||||||
if (isLdap && (!fList || fList->getDisplayName() !=
|
if (isLdap && (!fList || fList->getDisplayName() !=
|
||||||
"app_friends")) { // Double check because of SDK merging that lead to
|
"app_friends")) { // Double check because of SDK merging that lead to
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ using namespace std;
|
||||||
|
|
||||||
const std::string SettingsModel::UiSection("ui");
|
const std::string SettingsModel::UiSection("ui");
|
||||||
const std::string SettingsModel::AppSection("app");
|
const std::string SettingsModel::AppSection("app");
|
||||||
|
const std::string SettingsModel::CardDAVSection("carddav_0");
|
||||||
std::shared_ptr<SettingsModel> SettingsModel::gSettingsModel;
|
std::shared_ptr<SettingsModel> SettingsModel::gSettingsModel;
|
||||||
|
|
||||||
SettingsModel::SettingsModel() {
|
SettingsModel::SettingsModel() {
|
||||||
|
|
@ -698,6 +699,19 @@ void SettingsModel::setCardDAVListForNewFriends(std::string name) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CardDAV min characters for research
|
||||||
|
|
||||||
|
int SettingsModel::getCardDAVMinCharResearch() const {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
return mConfig->getInt(SettingsModel::CardDAVSection, "min_characters", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsModel::setCardDAVMinCharResearch(int min) {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
mConfig->setInt(SettingsModel::CardDAVSection, "min_characters", min);
|
||||||
|
emit cardDAVMinCharResearchChanged(min);
|
||||||
|
}
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
// Device name.
|
// Device name.
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ public:
|
||||||
|
|
||||||
static const std::string UiSection;
|
static const std::string UiSection;
|
||||||
static const std::string AppSection;
|
static const std::string AppSection;
|
||||||
|
static const std::string CardDAVSection;
|
||||||
std::shared_ptr<linphone::Config> mConfig;
|
std::shared_ptr<linphone::Config> mConfig;
|
||||||
|
|
||||||
bool getVfsEnabled() const;
|
bool getVfsEnabled() const;
|
||||||
|
|
@ -110,6 +111,9 @@ public:
|
||||||
bool getCreateEndToEndEncryptedMeetingsAndGroupCalls() const;
|
bool getCreateEndToEndEncryptedMeetingsAndGroupCalls() const;
|
||||||
void setCreateEndToEndEncryptedMeetingsAndGroupCalls(bool endtoend);
|
void setCreateEndToEndEncryptedMeetingsAndGroupCalls(bool endtoend);
|
||||||
|
|
||||||
|
int getCardDAVMinCharResearch() const;
|
||||||
|
void setCardDAVMinCharResearch(int min);
|
||||||
|
|
||||||
QVariantMap getRingerDevice() const;
|
QVariantMap getRingerDevice() const;
|
||||||
void setRingerDevice(QVariantMap device);
|
void setRingerDevice(QVariantMap device);
|
||||||
|
|
||||||
|
|
@ -247,6 +251,8 @@ signals:
|
||||||
void mediaEncryptionMandatoryChanged();
|
void mediaEncryptionMandatoryChanged();
|
||||||
void createEndToEndEncryptedMeetingsAndGroupCallsChanged(bool endtoend);
|
void createEndToEndEncryptedMeetingsAndGroupCallsChanged(bool endtoend);
|
||||||
|
|
||||||
|
void cardDAVMinCharResearchChanged(int min);
|
||||||
|
|
||||||
void echoCancellationEnabledChanged(bool enabled);
|
void echoCancellationEnabledChanged(bool enabled);
|
||||||
void automaticallyRecordCallsEnabledChanged(bool enabled);
|
void automaticallyRecordCallsEnabledChanged(bool enabled);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -118,10 +118,14 @@ ListView {
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: SettingsCpp
|
target: SettingsCpp
|
||||||
onLdapConfigChanged: {
|
function onLdapConfigChanged() {
|
||||||
if (SettingsCpp.syncLdapContacts)
|
if (SettingsCpp.syncLdapContacts)
|
||||||
magicSearchProxy.forceUpdate()
|
magicSearchProxy.forceUpdate()
|
||||||
}
|
}
|
||||||
|
function onCardDAVAddressBookSynchronized() {
|
||||||
|
console.log("card dav synchro update")
|
||||||
|
magicSearchProxy.forceUpdate()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Workaround: itemAtIndex and count are decorellated and are not enough to know when the ListView has load all its children.
|
// Workaround: itemAtIndex and count are decorellated and are not enough to know when the ListView has load all its children.
|
||||||
// So when itemAtIndex is not available, start this timer along count changed signal.
|
// So when itemAtIndex is not available, start this timer along count changed signal.
|
||||||
|
|
|
||||||
|
|
@ -298,9 +298,8 @@ FriendGui{
|
||||||
| LinphoneEnums.MagicSearchSource.RemoteCardDAV
|
| LinphoneEnums.MagicSearchSource.RemoteCardDAV
|
||||||
onHighlightedContactChanged: mainItem.selectedContact = highlightedContact
|
onHighlightedContactChanged: mainItem.selectedContact = highlightedContact
|
||||||
onContactDeletionRequested: contact => {
|
onContactDeletionRequested: contact => {
|
||||||
mainItem.deleteContact(
|
mainItem.deleteContact(contact)
|
||||||
contact)
|
}
|
||||||
}
|
|
||||||
onLoadingChanged: {
|
onLoadingChanged: {
|
||||||
if (!loading && initialFriendToDisplay.length !== 0) {
|
if (!loading && initialFriendToDisplay.length !== 0) {
|
||||||
Qt.callLater(function () {
|
Qt.callLater(function () {
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ RUN apt-get update && \
|
||||||
|
|
||||||
# Install linphone & flexisip dependencies development packages
|
# Install linphone & flexisip dependencies development packages
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y libasound2-dev libavcodec-dev libavutil-dev libbsd-dev libegl1-mesa-dev libglew-dev libgsm1-dev libjansson-dev libmariadb-dev-compat libmbedtls-dev libopus-dev libpq-dev libprotobuf-dev libpulse-dev libqt5svg5-dev libsnmp-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libsrtp2-dev libssl-dev libswscale-dev libturbojpeg0-dev libv4l-dev libvpx-dev libxerces-c-dev libxml2-dev libxv-dev libxinerama-dev protobuf-compiler qttools5-dev qttools5-dev-tools xsdcxx cmake nasm && \
|
apt-get install -y libasound2-dev libbsd-dev libegl1-mesa-dev libglew-dev libgsm1-dev libjansson-dev libmariadb-dev-compat libmbedtls-dev libopus-dev libpq-dev libprotobuf-dev libpulse-dev libqt5svg5-dev libsnmp-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libsrtp2-dev libssl-dev libswscale-dev libturbojpeg0-dev libv4l-dev libvpx-dev libxerces-c-dev libxml2-dev libxv-dev libxinerama-dev protobuf-compiler qttools5-dev qttools5-dev-tools xsdcxx cmake nasm && \
|
||||||
apt-get clean
|
apt-get clean
|
||||||
|
|
||||||
# Install signing tools
|
# Install signing tools
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 105 KiB |
Loading…
Reference in a new issue