diff --git a/linphone-desktop/src/app/logger/Logger.cpp b/linphone-desktop/src/app/logger/Logger.cpp index a556b5164..48ec9a99a 100644 --- a/linphone-desktop/src/app/logger/Logger.cpp +++ b/linphone-desktop/src/app/logger/Logger.cpp @@ -164,7 +164,7 @@ void Logger::init () { } ); - linphone_core_set_log_collection_path(Paths::getLogsDirpath().c_str()); + linphone_core_set_log_collection_path(Paths::getLogsDirPath().c_str()); linphone_core_set_log_collection_max_file_size(MAX_LOGS_COLLECTION_SIZE); linphone_core_enable_log_collection(LinphoneLogCollectionEnabled); } diff --git a/linphone-desktop/src/app/paths/Paths.cpp b/linphone-desktop/src/app/paths/Paths.cpp index 6100225a5..4fa372a0f 100644 --- a/linphone-desktop/src/app/paths/Paths.cpp +++ b/linphone-desktop/src/app/paths/Paths.cpp @@ -31,6 +31,7 @@ #include "Paths.hpp" #include "config.h" +#define PATH_ASSISTANT_CONFIG "/assistant/" #define PATH_AVATARS "/avatars/" #define PATH_CAPTURES "/captures/" #define PATH_LOGS "/logs/" @@ -49,14 +50,14 @@ using namespace std; // ============================================================================= -inline bool directoryPathExists (const QString &path) { +inline bool dirPathExists (const QString &path) { QDir dir(path); return dir.exists(); } inline bool filePathExists (const QString &path) { QFileInfo info(path); - if (!directoryPathExists(info.path())) + if (!dirPathExists(info.path())) return false; QFile file(path); @@ -67,7 +68,7 @@ inline bool filePathExists (const string &path) { return filePathExists(Utils::linphoneStringToQString(path)); } -inline void ensureDirectoryPathExists (const QString &path) { +inline void ensureDirPathExists (const QString &path) { QDir dir(path); if (!dir.exists() && !dir.mkpath(path)) qFatal("Unable to access at directory: `%s`", path.toStdString().c_str()); @@ -75,20 +76,20 @@ inline void ensureDirectoryPathExists (const QString &path) { inline void ensureFilePathExists (const QString &path) { QFileInfo info(path); - ensureDirectoryPathExists(info.path()); + ensureDirPathExists(info.path()); QFile file(path); if (!file.exists() && !file.open(QIODevice::ReadWrite)) qFatal("Unable to access at path: `%s`", path.toStdString().c_str()); } -inline string getReadableDirectoryPath (const QString &dirname) { +inline string getReadableDirPath (const QString &dirname) { return Utils::qStringToLinphoneString(QDir::toNativeSeparators(dirname)); } -inline string getWritableDirectoryPath (const QString &dirname) { - ensureDirectoryPathExists(dirname); - return getReadableDirectoryPath(dirname); +inline string getWritableDirPath (const QString &dirname) { + ensureDirPathExists(dirname); + return getReadableDirPath(dirname); } inline string getReadableFilePath (const QString &filename) { @@ -102,7 +103,7 @@ inline string getWritableFilePath (const QString &filename) { // ----------------------------------------------------------------------------- -inline QString getAppPackageDataDirpath () { +inline QString getAppPackageDataDirPath () { QDir dir(QCoreApplication::applicationDirPath()); if (dir.dirName() == "MacOS") { dir.cdUp(); @@ -114,7 +115,7 @@ inline QString getAppPackageDataDirpath () { return dir.absolutePath(); } -inline QString getAppPackageMsPluginsDirpath () { +inline QString getAppPackageMsPluginsDirPath () { QDir dir(QCoreApplication::applicationDirPath()); if (dir.dirName() == "MacOS") { dir.cdUp(); @@ -126,91 +127,99 @@ inline QString getAppPackageMsPluginsDirpath () { return dir.absolutePath(); } -inline QString getAppConfigFilepath () { +inline QString getAppAssistantConfigDirPath () { + return getAppPackageDataDirPath() + PATH_ASSISTANT_CONFIG; +} + +inline QString getAppConfigFilePath () { if (QSysInfo::productType() == "macos") return QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_CONFIG; return QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + PATH_CONFIG; } -inline QString getAppCallHistoryFilepath () { +inline QString getAppCallHistoryFilePath () { return QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_CALL_HISTORY_LIST; } -inline QString getAppFactoryConfigFilepath () { - return getAppPackageDataDirpath() + PATH_FACTORY_CONFIG; +inline QString getAppFactoryConfigFilePath () { + return getAppPackageDataDirPath() + PATH_FACTORY_CONFIG; } -inline QString getAppRootCaFilepath () { - return getAppPackageDataDirpath() + PATH_ROOT_CA; +inline QString getAppRootCaFilePath () { + return getAppPackageDataDirPath() + PATH_ROOT_CA; } -inline QString getAppFriendsFilepath () { +inline QString getAppFriendsFilePath () { return QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_FRIENDS_LIST; } -inline QString getAppMessageHistoryFilepath () { +inline QString getAppMessageHistoryFilePath () { return QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_MESSAGE_HISTORY_LIST; } // ----------------------------------------------------------------------------- -string Paths::getAvatarsDirpath () { - return getWritableDirectoryPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_AVATARS); +string Paths::getAssistantConfigDirPath () { + return getReadableDirPath(getAppAssistantConfigDirPath()); } -string Paths::getCallHistoryFilepath () { - return getWritableFilePath(getAppCallHistoryFilepath()); +string Paths::getAvatarsDirPath () { + return getWritableDirPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_AVATARS); } -string Paths::getCapturesDirpath () { - return getWritableDirectoryPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_CAPTURES); +string Paths::getCallHistoryFilePath () { + return getWritableFilePath(getAppCallHistoryFilePath()); } -string Paths::getConfigFilepath (const QString &configPath) { +string Paths::getCapturesDirPath () { + return getWritableDirPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_CAPTURES); +} + +string Paths::getConfigFilePath (const QString &configPath) { if (!configPath.isEmpty()) return getWritableFilePath(QFileInfo(configPath).absoluteFilePath()); - return getWritableFilePath(getAppConfigFilepath()); + return getWritableFilePath(getAppConfigFilePath()); } -string Paths::getFactoryConfigFilepath () { - return getReadableFilePath(getAppFactoryConfigFilepath()); +string Paths::getFactoryConfigFilePath () { + return getReadableFilePath(getAppFactoryConfigFilePath()); } -string Paths::getFriendsListFilepath () { - return getWritableFilePath(getAppFriendsFilepath()); +string Paths::getFriendsListFilePath () { + return getWritableFilePath(getAppFriendsFilePath()); } -string Paths::getLogsDirpath () { - return getWritableDirectoryPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_LOGS); +string Paths::getLogsDirPath () { + return getWritableDirPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_LOGS); } -string Paths::getMessageHistoryFilepath () { - return getWritableFilePath(getAppMessageHistoryFilepath()); +string Paths::getMessageHistoryFilePath () { + return getWritableFilePath(getAppMessageHistoryFilePath()); } -string Paths::getPackageDataDirpath () { - return getReadableDirectoryPath(getAppPackageDataDirpath()); +string Paths::getPackageDataDirPath () { + return getReadableDirPath(getAppPackageDataDirPath()); } -string Paths::getPackageMsPluginsDirpath () { - return getReadableDirectoryPath(getAppPackageMsPluginsDirpath()); +string Paths::getPackageMsPluginsDirPath () { + return getReadableDirPath(getAppPackageMsPluginsDirPath()); } -string Paths::getRootCaFilepath () { - return getReadableFilePath(getAppRootCaFilepath()); +string Paths::getRootCaFilePath () { + return getReadableFilePath(getAppRootCaFilePath()); } -string Paths::getThumbnailsDirpath () { - return getWritableDirectoryPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_THUMBNAILS); +string Paths::getThumbnailsDirPath () { + return getWritableDirPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_THUMBNAILS); } -string Paths::getUserCertificatesDirpath () { - return getWritableDirectoryPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_USER_CERTIFICATES); +string Paths::getUserCertificatesDirPath () { + return getWritableDirPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_USER_CERTIFICATES); } -string Paths::getZrtpSecretsFilepath () { +string Paths::getZrtpSecretsFilePath () { return getWritableFilePath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + PATH_ZRTP_SECRETS); } @@ -218,7 +227,7 @@ string Paths::getZrtpSecretsFilepath () { static void migrateFile (const QString &oldPath, const QString &newPath) { QFileInfo info(newPath); - ensureDirectoryPathExists(info.path()); + ensureDirPathExists(info.path()); if (QFile::copy(oldPath, newPath)) { QFile::remove(oldPath); @@ -230,7 +239,7 @@ static void migrateFile (const QString &oldPath, const QString &newPath) { static void migrateConfigurationFile (const QString &oldPath, const QString &newPath) { QFileInfo info(newPath); - ensureDirectoryPathExists(info.path()); + ensureDirPathExists(info.path()); if (QFile::copy(oldPath, newPath)) { QFile oldFile(oldPath); @@ -247,7 +256,7 @@ static void migrateConfigurationFile (const QString &oldPath, const QString &new } void Paths::migrate () { - QString newPath = getAppConfigFilepath(); + QString newPath = getAppConfigFilePath(); QString oldBaseDir = QSysInfo::productType() == "windows" ? QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) : QStandardPaths::writableLocation(QStandardPaths::HomeLocation); @@ -256,19 +265,19 @@ void Paths::migrate () { if (!filePathExists(newPath) && filePathExists(oldPath)) migrateConfigurationFile(oldPath, newPath); - newPath = getAppCallHistoryFilepath(); + newPath = getAppCallHistoryFilePath(); oldPath = oldBaseDir + "/.linphone-call-history.db"; if (!filePathExists(newPath) && filePathExists(oldPath)) migrateFile(oldPath, newPath); - newPath = getAppFriendsFilepath(); + newPath = getAppFriendsFilePath(); oldPath = oldBaseDir + "/.linphone-friends.db"; if (!filePathExists(newPath) && filePathExists(oldPath)) migrateFile(oldPath, newPath); - newPath = getAppMessageHistoryFilepath(); + newPath = getAppMessageHistoryFilePath(); oldPath = oldBaseDir + "/.linphone-history.db"; if (!filePathExists(newPath) && filePathExists(oldPath)) diff --git a/linphone-desktop/src/app/paths/Paths.hpp b/linphone-desktop/src/app/paths/Paths.hpp index fa3913cfb..1f86b0d7e 100644 --- a/linphone-desktop/src/app/paths/Paths.hpp +++ b/linphone-desktop/src/app/paths/Paths.hpp @@ -30,21 +30,22 @@ // ============================================================================= namespace Paths { - std::string getAvatarsDirpath (); - std::string getCallHistoryFilepath (); - std::string getCapturesDirpath (); - std::string getConfigFilepath (const QString &configPath = QString()); - std::string getFactoryConfigFilepath (); - std::string getFriendsListFilepath (); - std::string getLogsDirpath (); - std::string getMessageHistoryFilepath (); - std::string getPackageDataDirpath (); - std::string getPackageMsPluginsDirpath (); - std::string getRootCaFilepath (); - std::string getThumbnailsDirpath (); - std::string getUserCertificatesDirpath (); - std::string getZrtpDataFilepath (); - std::string getZrtpSecretsFilepath (); + std::string getAssistantConfigDirPath (); + std::string getAvatarsDirPath (); + std::string getCallHistoryFilePath (); + std::string getCapturesDirPath (); + std::string getConfigFilePath (const QString &configPath = QString()); + std::string getFactoryConfigFilePath (); + std::string getFriendsListFilePath (); + std::string getLogsDirPath (); + std::string getMessageHistoryFilePath (); + std::string getPackageDataDirPath (); + std::string getPackageMsPluginsDirPath (); + std::string getRootCaFilePath (); + std::string getThumbnailsDirPath (); + std::string getUserCertificatesDirPath (); + std::string getZrtpDataFilePath (); + std::string getZrtpSecretsFilePath (); void migrate (); } diff --git a/linphone-desktop/src/app/providers/AvatarProvider.cpp b/linphone-desktop/src/app/providers/AvatarProvider.cpp index ffc88647d..d020c98a3 100644 --- a/linphone-desktop/src/app/providers/AvatarProvider.cpp +++ b/linphone-desktop/src/app/providers/AvatarProvider.cpp @@ -33,7 +33,7 @@ AvatarProvider::AvatarProvider () : QQuickImageProvider( QQmlImageProviderBase::Image, QQmlImageProviderBase::ForceAsynchronousImageLoading ) { - mAvatarsPath = Utils::linphoneStringToQString(Paths::getAvatarsDirpath()); + mAvatarsPath = Utils::linphoneStringToQString(Paths::getAvatarsDirPath()); } QImage AvatarProvider::requestImage (const QString &id, QSize *, const QSize &) { diff --git a/linphone-desktop/src/app/providers/ThumbnailProvider.cpp b/linphone-desktop/src/app/providers/ThumbnailProvider.cpp index f6532d239..3fb251855 100644 --- a/linphone-desktop/src/app/providers/ThumbnailProvider.cpp +++ b/linphone-desktop/src/app/providers/ThumbnailProvider.cpp @@ -33,7 +33,7 @@ ThumbnailProvider::ThumbnailProvider () : QQuickImageProvider( QQmlImageProviderBase::Image, QQmlImageProviderBase::ForceAsynchronousImageLoading ) { - mThumbnailsPath = Utils::linphoneStringToQString(Paths::getThumbnailsDirpath()); + mThumbnailsPath = Utils::linphoneStringToQString(Paths::getThumbnailsDirPath()); } QImage ThumbnailProvider::requestImage (const QString &id, QSize *, const QSize &) { diff --git a/linphone-desktop/src/components/assistant/AssistantModel.cpp b/linphone-desktop/src/components/assistant/AssistantModel.cpp index e5ffb1918..29f9bb968 100644 --- a/linphone-desktop/src/components/assistant/AssistantModel.cpp +++ b/linphone-desktop/src/components/assistant/AssistantModel.cpp @@ -20,6 +20,7 @@ * Author: Ronan Abhamon */ +#include "../../app/paths/Paths.hpp" #include "../../Utils.hpp" #include "../core/CoreManager.hpp" @@ -287,6 +288,27 @@ void AssistantModel::setDisplayName (const QString &displayName) { // ----------------------------------------------------------------------------- +QString AssistantModel::getConfigFilename () const { + return mConfigFilename; +} + +void AssistantModel::setConfigFilename (const QString &configFilename) { + mConfigFilename = configFilename; + + QString configPath = ::Utils::linphoneStringToQString(Paths::getAssistantConfigDirPath()) + configFilename; + qInfo() << QStringLiteral("Set config on assistant: `%1`.").arg(configPath); + + CoreManager::getInstance()->getCore()->getConfig()->loadFromXmlFile( + ::Utils::qStringToLinphoneString(configPath), + nullptr, + nullptr + ); + + emit configFilenameChanged(configFilename); +} + +// ----------------------------------------------------------------------------- + QString AssistantModel::mapAccountCreatorUsernameStatusToString (linphone::AccountCreatorUsernameStatus status) const { shared_ptr config = CoreManager::getInstance()->getCore()->getConfig(); QString error; diff --git a/linphone-desktop/src/components/assistant/AssistantModel.hpp b/linphone-desktop/src/components/assistant/AssistantModel.hpp index 9cc1188ba..598c24b57 100644 --- a/linphone-desktop/src/components/assistant/AssistantModel.hpp +++ b/linphone-desktop/src/components/assistant/AssistantModel.hpp @@ -38,6 +38,7 @@ class AssistantModel : public QObject { Q_PROPERTY(QString phoneNumber READ getPhoneNumber WRITE setPhoneNumber NOTIFY phoneNumberChanged); Q_PROPERTY(QString username READ getUsername WRITE setUsername NOTIFY usernameChanged); Q_PROPERTY(QString displayName READ getDisplayName WRITE setDisplayName NOTIFY displayNameChanged); + Q_PROPERTY(QString configFilename READ getConfigFilename WRITE setConfigFilename NOTIFY configFilenameChanged); public: AssistantModel (QObject *parent = Q_NULLPTR); @@ -59,6 +60,8 @@ signals: void createStatusChanged (const QString &error); void loginStatusChanged (const QString &error); + void configFilenameChanged (const QString &configFilename); + private: QString getEmail () const; void setEmail (const QString &email); @@ -75,8 +78,13 @@ private: QString getDisplayName () const; void setDisplayName (const QString &displayName); + QString getConfigFilename () const; + void setConfigFilename (const QString &configFilename); + QString mapAccountCreatorUsernameStatusToString (linphone::AccountCreatorUsernameStatus status) const; + QString mConfigFilename; + std::shared_ptr mAccountCreator; std::shared_ptr mHandlers; }; diff --git a/linphone-desktop/src/components/chat/ChatModel.cpp b/linphone-desktop/src/components/chat/ChatModel.cpp index dac5cd1e4..a0c802ef2 100644 --- a/linphone-desktop/src/components/chat/ChatModel.cpp +++ b/linphone-desktop/src/components/chat/ChatModel.cpp @@ -73,7 +73,7 @@ inline void createThumbnail (const shared_ptr &message) { QString uuid = QUuid::createUuid().toString(); QString fileId = QStringLiteral("%1.jpg").arg(uuid.mid(1, uuid.length() - 2)); - if (!thumbnail.save(::Utils::linphoneStringToQString(Paths::getThumbnailsDirpath()) + fileId, "jpg", 100)) { + if (!thumbnail.save(::Utils::linphoneStringToQString(Paths::getThumbnailsDirPath()) + fileId, "jpg", 100)) { qWarning() << QStringLiteral("Unable to create thumbnail of: `%1`.").arg(thumbnailPath); return; } @@ -87,7 +87,7 @@ inline void removeFileMessageThumbnail (const shared_ptr string fileId = message->getAppdata(); if (!fileId.empty()) { - QString thumbnailPath = ::Utils::linphoneStringToQString(Paths::getThumbnailsDirpath() + fileId); + QString thumbnailPath = ::Utils::linphoneStringToQString(Paths::getThumbnailsDirPath() + fileId); if (!QFile::remove(thumbnailPath)) qWarning() << QStringLiteral("Unable to remove `%1`.").arg(thumbnailPath); } diff --git a/linphone-desktop/src/components/contact/VcardModel.cpp b/linphone-desktop/src/components/contact/VcardModel.cpp index 649e66eec..c7bb24417 100644 --- a/linphone-desktop/src/components/contact/VcardModel.cpp +++ b/linphone-desktop/src/components/contact/VcardModel.cpp @@ -80,7 +80,7 @@ VcardModel::~VcardModel () { QString imagePath( ::Utils::linphoneStringToQString( - Paths::getAvatarsDirpath() + + Paths::getAvatarsDirPath() + photo->getValue().substr(sizeof(VCARD_SCHEME) - 1) ) ); @@ -134,7 +134,7 @@ bool VcardModel::setAvatar (const QString &path) { .arg(uuid.mid(1, uuid.length() - 2)) // Remove `{}`. .arg(info.suffix()); - QString dest = ::Utils::linphoneStringToQString(Paths::getAvatarsDirpath()) + fileId; + QString dest = ::Utils::linphoneStringToQString(Paths::getAvatarsDirPath()) + fileId; if (!file.copy(dest)) return false; @@ -150,7 +150,7 @@ bool VcardModel::setAvatar (const QString &path) { if (oldPhoto) { QString imagePath( ::Utils::linphoneStringToQString( - Paths::getAvatarsDirpath() + oldPhoto->getValue().substr(sizeof(VCARD_SCHEME) - 1) + Paths::getAvatarsDirPath() + oldPhoto->getValue().substr(sizeof(VCARD_SCHEME) - 1) ) ); diff --git a/linphone-desktop/src/components/core/CoreManager.cpp b/linphone-desktop/src/components/core/CoreManager.cpp index 4cf1ee2b7..49e970a76 100644 --- a/linphone-desktop/src/components/core/CoreManager.cpp +++ b/linphone-desktop/src/components/core/CoreManager.cpp @@ -87,26 +87,26 @@ void CoreManager::forceRefreshRegisters () { // ----------------------------------------------------------------------------- void CoreManager::setDatabasesPaths () { - mCore->setFriendsDatabasePath(Paths::getFriendsListFilepath()); - mCore->setCallLogsDatabasePath(Paths::getCallHistoryFilepath()); - mCore->setChatDatabasePath(Paths::getMessageHistoryFilepath()); + mCore->setFriendsDatabasePath(Paths::getFriendsListFilePath()); + mCore->setCallLogsDatabasePath(Paths::getCallHistoryFilePath()); + mCore->setChatDatabasePath(Paths::getMessageHistoryFilePath()); } void CoreManager::setOtherPaths () { if (mCore->getZrtpSecretsFile().empty()) - mCore->setZrtpSecretsFile(Paths::getZrtpSecretsFilepath()); + mCore->setZrtpSecretsFile(Paths::getZrtpSecretsFilePath()); if (mCore->getUserCertificatesPath().empty()) - mCore->setUserCertificatesPath(Paths::getUserCertificatesDirpath()); + mCore->setUserCertificatesPath(Paths::getUserCertificatesDirPath()); if (mCore->getRootCa().empty()) - mCore->setRootCa(Paths::getRootCaFilepath()); + mCore->setRootCa(Paths::getRootCaFilePath()); } void CoreManager::setResourcesPaths () { shared_ptr factory = linphone::Factory::get(); - factory->setMspluginsDir(Paths::getPackageMsPluginsDirpath()); - factory->setTopResourcesDir(Paths::getPackageDataDirpath()); + factory->setMspluginsDir(Paths::getPackageMsPluginsDirPath()); + factory->setTopResourcesDir(Paths::getPackageDataDirPath()); } // ----------------------------------------------------------------------------- @@ -119,7 +119,7 @@ void CoreManager::createLinphoneCore (const QString &configPath) { setResourcesPaths(); - mCore = linphone::Factory::get()->createCore(mHandlers, Paths::getConfigFilepath(configPath), Paths::getFactoryConfigFilepath()); + mCore = linphone::Factory::get()->createCore(mHandlers, Paths::getConfigFilePath(configPath), Paths::getFactoryConfigFilePath()); mCore->setVideoDisplayFilter("MSOGL"); mCore->usePreviewWindow(true); diff --git a/linphone-desktop/src/components/settings/SettingsModel.cpp b/linphone-desktop/src/components/settings/SettingsModel.cpp index 676f6f1b3..ad7862c61 100644 --- a/linphone-desktop/src/components/settings/SettingsModel.cpp +++ b/linphone-desktop/src/components/settings/SettingsModel.cpp @@ -617,7 +617,7 @@ void SettingsModel::setDscpVideo (int dscp) { QString SettingsModel::getSavedScreenshotsFolder () const { return QDir::cleanPath( ::Utils::linphoneStringToQString( - mConfig->getString(UI_SECTION, "saved_screenshots_folder", Paths::getCapturesDirpath()) + mConfig->getString(UI_SECTION, "saved_screenshots_folder", Paths::getCapturesDirPath()) ) ) + QDir::separator(); } @@ -634,7 +634,7 @@ void SettingsModel::setSavedScreenshotsFolder (const QString &folder) { QString SettingsModel::getSavedVideosFolder () const { return QDir::cleanPath( ::Utils::linphoneStringToQString( - mConfig->getString(UI_SECTION, "saved_videos_folder", Paths::getCapturesDirpath()) + mConfig->getString(UI_SECTION, "saved_videos_folder", Paths::getCapturesDirPath()) ) ) + QDir::separator(); } diff --git a/submodules/linphone b/submodules/linphone index b3df86baf..fa2dad63d 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit b3df86baf28d846a98b19983a6b28cb93ad9bdb7 +Subproject commit fa2dad63d40078b423bfd9c2a56c59a606e81ed5