From a50dfd98ef884768745bc5e343e66272cf331c84 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Fri, 7 Feb 2020 17:32:08 +0100 Subject: [PATCH] Update some depreciated functions, clean syntaxes, fix Linux installation --- CMakeLists.txt | 15 +- cmake_builder/linphone_package/CMakeLists.txt | 42 ++-- src/app/AppController.cpp | 2 +- src/components/chat/ChatModel.cpp | 184 +++++++++++------- .../settings/AccountSettingsModel.cpp | 5 +- src/components/settings/SettingsModel.cpp | 23 +-- src/components/settings/SettingsModel.hpp | 168 ++++++++-------- src/utils/MediastreamerUtils.hpp | 8 +- 8 files changed, 261 insertions(+), 186 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 418031b22..ffc957d2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,10 @@ list(APPEND CMAKE_PREFIX_PATH "linphone-sdk/build-sdk/linphone-sdk/desktop") list(APPEND CMAKE_PREFIX_PATH "submodules/externals/minizip/build-minizip/OUTPUT") set(CMAKE_INSTALL_PREFIX "OUTPUT") - +if(UNIX AND NOT APPLE) + set(CMAKE_INSTALL_RPATH "lib64;../lib64") + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +endif() set(APP_LIBRARY app-library) include(application_info.cmake) @@ -51,7 +54,6 @@ option(ENABLE_G729 "Build mediastreamer2 with the G726 codec." YES) option(ENABLE_GSM "Build mediastreamer2 with the GSM codec." YES) option(ENABLE_ILBC "" YES) option(ENABLE_ISAC "" YES) -option(ENABLE_OPUS "Build mediastreamer2 with the OPUS codec." YES) option(ENABLE_SILK "" YES) #option(ENABLE_SPEEX "" YES) option(ENABLE_SPEEX_CODEC "Build mediastreamer2 with the SPEEX codec." YES) @@ -63,6 +65,11 @@ option(ENABLE_MPEG4 "" YES) option(ENABLE_OPENH264 "Embedded OpenH264" YES) option(ENABLE_VPX "Build mediastreamer2 with VPX codec." YES) option(ENABLE_MKV "Enable support of MKV files reading and writing." YES) +if(WIN32 OR APPLE) + option(ENABLE_OPUS "Build mediastreamer2 with the OPUS codec." YES) +else()##Opus crash on Linux. The version for 4.3 is old. We have to use a switch in configuration to select the newest version for desktop. + option(ENABLE_OPUS "Build mediastreamer2 with the OPUS codec." YES) +endif() include(GNUInstallDirs) include(CheckCXXCompilerFlag) @@ -494,11 +501,11 @@ endif () # ------------------------------------------------------------------------------ install(FILES "${ASSETS_DIR}/linphonerc-factory" - DESTINATION "${CMAKE_INSTALL_DATADIR}/${EXECUTABLE_NAME}" + DESTINATION "${CMAKE_INSTALL_DATADIR}/${APPLICATION_NAME}" ) set(ASSETS_ASSISTANT_DIR "${ASSETS_DIR}/assistant") -set(ASSISTANT_INSTALL_DATADIR "${CMAKE_INSTALL_DATADIR}/${EXECUTABLE_NAME}/assistant") +set(ASSISTANT_INSTALL_DATADIR "${CMAKE_INSTALL_DATADIR}/${APPLICATION_NAME}/assistant") install(FILES "${ASSETS_ASSISTANT_DIR}/use-other-sip-account.rc" DESTINATION "${ASSISTANT_INSTALL_DATADIR}" diff --git a/cmake_builder/linphone_package/CMakeLists.txt b/cmake_builder/linphone_package/CMakeLists.txt index 290e40093..300ba4a23 100644 --- a/cmake_builder/linphone_package/CMakeLists.txt +++ b/cmake_builder/linphone_package/CMakeLists.txt @@ -179,7 +179,7 @@ if (WIN32) ) file(GLOB SHARE_CONTENT RELATIVE "${LINPHONE_OUTPUT_DIR}" "${LINPHONE_OUTPUT_DIR}/share/*") - list(REMOVE_ITEM SHARE_CONTENT "share/belr" "share/Belr" "share/images" "share/${APPLICATION_NAME}" "share/${EXECUTABLE_NAME}" "share/sounds") + list(REMOVE_ITEM SHARE_CONTENT "share/belr" "share/Belr" "share/images" "share/${APPLICATION_NAME}" "share/${APPLICATION_NAME}" "share/sounds") foreach (ITEM IN LISTS SHARE_CONTENT) list(APPEND SHARE_CONTENT_EXCLUDE PATTERN "${ITEM}" EXCLUDE) endforeach () @@ -206,7 +206,7 @@ if (WIN32) ${SHARE_CONTENT_EXCLUDE} ) - install(FILES "${LINPHONE_OUTPUT_DIR}/share/Linphone/rootca.pem" DESTINATION "share/${EXECUTABLE_NAME}") + install(FILES "${LINPHONE_OUTPUT_DIR}/share/Linphone/rootca.pem" DESTINATION "share/${APPLICATION_NAME}") if (ENABLE_OPENH264) install(FILES "${LINPHONE_OUTPUT_DIR}/lib/mediastreamer/plugins/libmsopenh264.dll" @@ -217,8 +217,7 @@ elseif (APPLE) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/Info.plist.in" "${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/Info.plist" @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/linphone.icns" "${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/Resources/${EXECUTABLE_NAME}.icns" COPYONLY) install(DIRECTORY "${LINPHONE_SDK_TMP}/Frameworks/" DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks" USE_SOURCE_PERMISSIONS) - install(PROGRAMS "${CMAKE_INSTALL_PREFIX}/bin/${EXECUTABLE_NAME}" DESTINATION "${APPLICATION_NAME}.app/Contents/MacOS") - #file(COPY "${LINPHONE_OUTPUT_DIR}/bin/${EXECUTABLE_NAME}" DESTINATION "${APPLICATION_NAME}.app/Contents/MacOS") + install(PROGRAMS "${CMAKE_INSTALL_PREFIX}/bin/${EXECUTABLE_NAME}" DESTINATION "${APPLICATION_NAME}.app/Contents/MacOS") file(GLOB SHARED_LIBRARIES "${LINPHONE_SDK_TMP}/lib/lib*.dylib") foreach (LIBRARY ${SHARED_LIBRARIES}) install(FILES "${LIBRARY}" DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks") @@ -237,12 +236,12 @@ elseif (APPLE) install(FILES "${LINPHONE_SDK_TMP}/share/Belr/grammars/vcard_grammar" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/belr/grammars/") install(DIRECTORY "${LINPHONE_SDK_TMP}/share/images" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share" USE_SOURCE_PERMISSIONS) install(DIRECTORY "${LINPHONE_SDK_TMP}/share/sounds" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share" USE_SOURCE_PERMISSIONS) - install(FILES "${LINPHONE_SDK_TMP}/share/${APPLICATION_NAME}/rootca.pem" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${EXECUTABLE_NAME}") - install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/linphonerc-factory" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${EXECUTABLE_NAME}") + install(FILES "${LINPHONE_SDK_TMP}/share/${APPLICATION_NAME}/rootca.pem" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${APPLICATION_NAME}") + install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/linphonerc-factory" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${APPLICATION_NAME}") - install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/assistant/use-other-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${EXECUTABLE_NAME}/assistant") - install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/assistant/create-app-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${EXECUTABLE_NAME}/assistant") - install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/assistant/use-app-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${EXECUTABLE_NAME}/assistant") + install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/assistant/use-other-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${APPLICATION_NAME}/assistant") + install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/assistant/create-app-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${APPLICATION_NAME}/assistant") + install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/assistant/use-app-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/share/${APPLICATION_NAME}/assistant") file(GLOB SHARED_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME}.app/Contents/Frameworks/lib*.dylib") @@ -274,7 +273,7 @@ elseif (APPLE) # configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/packaging.cmake.in" "packaging.cmake" @ONLY) # install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/packaging.cmake") -else() +else()# Not Windows and Apple foreach (LIBRARY ${SHARED_LIBRARIES}) get_filename_component(LIBRARY_FILENAME ${LIBRARY} NAME) #if(NOT ("${LIBRARY_FILENAME}" STREQUAL "libminizip.dylib")) @@ -282,7 +281,28 @@ else() execute_process(COMMAND install_name_tool -rpath "${LINPHONE_OUTPUT_DIR}/lib" "@executable_path/../lib" "${LIBRARY}") execute_process(COMMAND install_name_tool -rpath "${LINPHONE_OUTPUT_DIR}/lib" "@executable_path/../lib64" "${LIBRARY}") #endif() - endforeach () + endforeach () + install(DIRECTORY "${LINPHONE_SDK_TMP}/bin/" DESTINATION "bin" USE_SOURCE_PERMISSIONS) + install(DIRECTORY "${LINPHONE_SDK_TMP}/lib/" DESTINATION "lib" USE_SOURCE_PERMISSIONS) + install(DIRECTORY "${LINPHONE_SDK_TMP}/lib64/" DESTINATION "lib64" USE_SOURCE_PERMISSIONS) + install(DIRECTORY "${LINPHONE_SDK_TMP}/share/" DESTINATION "share" USE_SOURCE_PERMISSIONS) + #install(PROGRAMS "${CMAKE_INSTALL_PREFIX}/bin/${EXECUTABLE_NAME}" DESTINATION "/bin") + + + if (EXISTS "${LINPHONE_OUTPUT_DIR}/lib/mediastreamer") + file(COPY "${LINPHONE_OUTPUT_DIR}/lib/mediastreamer" DESTINATION "lib" USE_SOURCE_PERMISSIONS) + endif () + install(FILES "${LINPHONE_SDK_TMP}/share/belr/grammars/cpim_grammar" DESTINATION "share/belr/grammars/") + install(FILES "${LINPHONE_SDK_TMP}/share/belr/grammars/vcard_grammar" DESTINATION "share/belr/grammars/") + install(DIRECTORY "${LINPHONE_SDK_TMP}/share/images" DESTINATION "share" USE_SOURCE_PERMISSIONS) + install(DIRECTORY "${LINPHONE_SDK_TMP}/share/sounds" DESTINATION "share" USE_SOURCE_PERMISSIONS) + install(FILES "${LINPHONE_SDK_TMP}/share/${APPLICATION_NAME}/rootca.pem" DESTINATION "share/${APPLICATION_NAME}") +# install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/linphonerc-factory" DESTINATION "share/${APPLICATION_NAME}") + +# install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/assistant/use-other-sip-account.rc" DESTINATION "share/${APPLICATION_NAME}/assistant") +# install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/assistant/create-app-sip-account.rc" DESTINATION "share/${APPLICATION_NAME}/assistant") +# install(FILES "${LINPHONE_OUTPUT_DIR}/share/${APPLICATION_NAME}/assistant/use-app-sip-account.rc" DESTINATION "share/${APPLICATION_NAME}/assistant") + endif () if (MSVC) diff --git a/src/app/AppController.cpp b/src/app/AppController.cpp index 653407fd0..9e4de97e1 100644 --- a/src/app/AppController.cpp +++ b/src/app/AppController.cpp @@ -40,7 +40,7 @@ namespace { } AppController::AppController (int &argc, char *argv[]) { - QT_REQUIRE_VERSION(argc, argv, ApplicationMinimalQtVersion); + QT_REQUIRE_VERSION(argc, argv, ApplicationMinimalQtVersion) Q_ASSERT(!mApp); // Disable QML cache. Avoid malformed cache. diff --git a/src/components/chat/ChatModel.cpp b/src/components/chat/ChatModel.cpp index 78f7a55cf..7102c0344 100644 --- a/src/components/chat/ChatModel.cpp +++ b/src/components/chat/ChatModel.cpp @@ -53,88 +53,139 @@ namespace { // In Bytes. constexpr qint64 FileSizeLimit = 524288000; } - -static inline QString getFileId (const shared_ptr &message) { - return Utils::coreStringToAppString(message->getAppdata()).section(':', 0, 0); +// MessageAppData is using to parse what's it in Appdata field of a message +class MessageAppData +{ +public: + MessageAppData(){} + MessageAppData(const QString&); + QString m_id; + QString m_path; + QString toString()const; + void fromString(const QString& ); + static QString toString(const QVector& ); + static QVector fromListString(const QString& ); +}; +MessageAppData::MessageAppData(const QString& p_data) +{ + fromString(p_data); +} +QString MessageAppData::toString()const +{ + return m_id+':'+m_path; +} +void MessageAppData::fromString(const QString& p_data) +{ + QStringList fields = p_data.split(':'); + m_id = fields[0]; + m_path = fields[1]; +} +QString MessageAppData::toString(const QVector& p_data) +{ + QString serialization; + if( p_data.size() > 0) + { + serialization = p_data[0].toString(); + for(int i = 1 ; i < p_data.size() ; ++i) + serialization += ';'+p_data[i].toString(); + } + return serialization; +} +QVector MessageAppData::fromListString(const QString& p_data) +{ + QVector data; + QStringList files = p_data.split(";"); + for(int i = 0 ; i < files.size() ; ++i) + data.push_back(MessageAppData(files[i])); + return data; } -static inline QString getDownloadPath (const shared_ptr &message) { - return Utils::coreStringToAppString(message->getAppdata()).section(':', 1); + +// There is only one file (thumbnail) in appdata +static inline MessageAppData getMessageAppData (const shared_ptr &message) { + return MessageAppData(QString::fromStdString(message->getAppdata())); } static inline bool fileWasDownloaded (const shared_ptr &message) { - const QString path = getDownloadPath(message); - return !path.isEmpty() && QFileInfo(path).isFile(); + const MessageAppData appData = getMessageAppData(message); + return !appData.m_path.isEmpty() && QFileInfo(appData.m_path).isFile(); } - +// Set the thumbnail as the first content static inline void fillThumbnailProperty (QVariantMap &dest, const shared_ptr &message) { - QString fileId = getFileId(message); - if (!fileId.isEmpty() && !dest.contains("thumbnail")) - dest["thumbnail"] = QStringLiteral("image://%1/%2") - .arg(ThumbnailProvider::ProviderId).arg(fileId); + if( !dest.contains("thumbnail")) + { + MessageAppData thumbnailData = getMessageAppData(message); + dest["thumbnail"] = QStringLiteral("image://%1/%2") + .arg(ThumbnailProvider::ProviderId).arg(thumbnailData.m_id); + } } +// Create a thumbnail from the first content that have a file and store it in Appdata static inline void createThumbnail (const shared_ptr &message) { if (!message->getAppdata().empty()) - return; + return;// Already exist : no need to create one + std::list > contents = message->getContents(); + if( contents.size() > 0) + { + QString thumbnailPath = QString::fromStdString(contents.front()->getFilePath()); + QImage image(thumbnailPath); + if (image.isNull()) + return; - QString thumbnailPath = Utils::coreStringToAppString(message->getFileTransferFilepath()); - QImage image(thumbnailPath); - if (image.isNull()) - return; + int rotation = 0; + QExifImageHeader exifImageHeader; + if (exifImageHeader.loadFromJpeg(thumbnailPath)) + rotation = int(exifImageHeader.value(QExifImageHeader::ImageTag::Orientation).toShort()); - int rotation = 0; - QExifImageHeader exifImageHeader; - if (exifImageHeader.loadFromJpeg(thumbnailPath)) - rotation = int(exifImageHeader.value(QExifImageHeader::ImageTag::Orientation).toShort()); + QImage thumbnail = image.scaled( + ThumbnailImageFileWidth, ThumbnailImageFileHeight, + Qt::KeepAspectRatio, Qt::SmoothTransformation + ); - QImage thumbnail = image.scaled( - ThumbnailImageFileWidth, ThumbnailImageFileHeight, - Qt::KeepAspectRatio, Qt::SmoothTransformation - ); + if (rotation != 0) { + QTransform transform; + if (rotation == 3 || rotation == 4) + transform.rotate(180); + else if (rotation == 5 || rotation == 6) + transform.rotate(90); + else if (rotation == 7 || rotation == 8) + transform.rotate(-90); - if (rotation != 0) { - QTransform transform; - if (rotation == 3 || rotation == 4) - transform.rotate(180); - else if (rotation == 5 || rotation == 6) - transform.rotate(90); - else if (rotation == 7 || rotation == 8) - transform.rotate(-90); + thumbnail = thumbnail.transformed(transform); + if (rotation == 2 || rotation == 4 || rotation == 5 || rotation == 7) + thumbnail = thumbnail.mirrored(true, false); + } - thumbnail = thumbnail.transformed(transform); - if (rotation == 2 || rotation == 4 || rotation == 5 || rotation == 7) - thumbnail = thumbnail.mirrored(true, false); + QString uuid = QUuid::createUuid().toString(); + QString fileId = QStringLiteral("%1.jpg").arg(uuid.mid(1, uuid.length() - 2)); + + if (!thumbnail.save(Utils::coreStringToAppString(Paths::getThumbnailsDirPath()) + fileId, "jpg", 100)) { + qWarning() << QStringLiteral("Unable to create thumbnail of: `%1`.").arg(thumbnailPath); + return; + } + + message->setAppdata(Utils::appStringToCoreString(fileId)); } - - QString uuid = QUuid::createUuid().toString(); - QString fileId = QStringLiteral("%1.jpg").arg(uuid.mid(1, uuid.length() - 2)); - - if (!thumbnail.save(Utils::coreStringToAppString(Paths::getThumbnailsDirPath()) + fileId, "jpg", 100)) { - qWarning() << QStringLiteral("Unable to create thumbnail of: `%1`.").arg(thumbnailPath); - return; - } - - message->setAppdata(Utils::appStringToCoreString(fileId)); } static inline void removeFileMessageThumbnail (const shared_ptr &message) { - if (message && message->getFileTransferInformation()) { - message->cancelFileTransfer(); - - string fileId = message->getAppdata(); - if (!fileId.empty()) { - QString thumbnailPath = Utils::coreStringToAppString(Paths::getThumbnailsDirPath() + fileId); - if (!QFile::remove(thumbnailPath)) - qWarning() << QStringLiteral("Unable to remove `%1`.").arg(thumbnailPath); + if (message && message->getFileTransferInformation()) { + message->cancelFileTransfer(); + MessageAppData thumbnailFile = getMessageAppData(message); + if(thumbnailFile.m_path.size() > 0) + { + QString thumbnailPath = QString::fromStdString(Paths::getThumbnailsDirPath()) + thumbnailFile.m_path; + if (!QFile::remove(thumbnailPath)) + qWarning() << QStringLiteral("Unable to remove `%1`.").arg(thumbnailPath); + } + message->setAppdata("");// Remove completly Thumbnail from the message } - } } // ----------------------------------------------------------------------------- static inline void fillMessageEntry (QVariantMap &dest, const shared_ptr &message) { - dest["content"] = Utils::coreStringToAppString(message->getText()); + dest["content"] = Utils::coreStringToAppString(message->getTextContent()); dest["isOutgoing"] = message->isOutgoing() || message->getState() == linphone::ChatMessage::State::Idle; // Old workaround. @@ -232,9 +283,10 @@ private: createThumbnail(message); fillThumbnailProperty((*it).first, message); - message->setAppdata( - Utils::appStringToCoreString(getFileId(message)) + ':' + message->getFileTransferFilepath() - ); + MessageAppData thumbnailFile = getMessageAppData(message); + thumbnailFile.m_path = QString::fromStdString(message->getContents().front()->getFilePath()); + + message->setAppdata(thumbnailFile.toString().toStdString()); (*it).first["wasDownloaded"] = true; App::getInstance()->getNotifier()->notifyReceivedFileMessage(message); @@ -472,7 +524,7 @@ void ChatModel::sendFileMessage (const QString &path) { content->setName(Utils::appStringToCoreString(QFileInfo(file).fileName())); shared_ptr message = mChatRoom->createFileTransferMessage(content); - message->setFileTransferFilepath(Utils::appStringToCoreString(path)); + message->getContents().front()->setFilePath(path.toStdString());// Sending only one File Path? message->addListener(mMessageHandlers); createThumbnail(message); @@ -515,12 +567,12 @@ void ChatModel::downloadFile (int id) { if (!soFarSoGood) { qWarning() << QStringLiteral("Unable to create safe file path for: %1.").arg(id); return; - } - - message->setFileTransferFilepath(Utils::appStringToCoreString(safeFilePath)); + } message->addListener(mMessageHandlers); - if (!message->downloadFile()) + message->getContents().front()->setFilePath(safeFilePath.toStdString()); +// Download only the first content. Maybe a bug.. or not. + if (!message->downloadContent(message->getContents().front())) qWarning() << QStringLiteral("Unable to download file of entry %1.").arg(id); } @@ -535,7 +587,7 @@ void ChatModel::openFile (int id, bool showDirectory) { return; } - QFileInfo info(getDownloadPath(message)); + QFileInfo info(getMessageAppData(message).m_path); QDesktopServices::openUrl( QUrl(QStringLiteral("file:///%1").arg(showDirectory ? info.absolutePath() : info.absoluteFilePath())) ); @@ -637,7 +689,7 @@ void ChatModel::insertCall (const shared_ptr &callLog) { auto insertEntry = [this]( const ChatEntryData &entry, - const QList::iterator *start = NULL + const QList::iterator *start = nullptr ) { auto it = lower_bound(start ? *start : mEntries.begin(), mEntries.end(), entry, [](const ChatEntryData &a, const ChatEntryData &b) { return a.first["timestamp"] < b.first["timestamp"]; diff --git a/src/components/settings/AccountSettingsModel.cpp b/src/components/settings/AccountSettingsModel.cpp index 276864e1a..291e476c0 100644 --- a/src/components/settings/AccountSettingsModel.cpp +++ b/src/components/settings/AccountSettingsModel.cpp @@ -125,7 +125,10 @@ QVariantMap AccountSettingsModel::getProxyConfigDescription (const shared_ptr
  • getServerAddr()); map["registrationDuration"] = proxyConfig->getPublishExpires(); map["transport"] = Utils::coreStringToAppString(proxyConfig->getTransport()); - map["route"] = Utils::coreStringToAppString(proxyConfig->getRoute()); + if( proxyConfig->getRoutes().size() > 0) + map["route"] = Utils::coreStringToAppString(proxyConfig->getRoutes().front()); + else + map["route"] = ""; map["contactParams"] = Utils::coreStringToAppString(proxyConfig->getContactParameters()); map["avpfInterval"] = proxyConfig->getAvpfRrInterval(); map["registerEnabled"] = proxyConfig->registerEnabled(); diff --git a/src/components/settings/SettingsModel.cpp b/src/components/settings/SettingsModel.cpp index 57f9a4f9e..3523a36de 100644 --- a/src/components/settings/SettingsModel.cpp +++ b/src/components/settings/SettingsModel.cpp @@ -631,7 +631,7 @@ void SettingsModel::setFileTransferUrl (const QString &url) { // ----------------------------------------------------------------------------- bool SettingsModel::getLimeIsSupported () const { - return CoreManager::getInstance()->getCore()->limeAvailable(); + return CoreManager::getInstance()->getCore()->limeX3DhAvailable(); } // ----------------------------------------------------------------------------- @@ -669,7 +669,7 @@ void SettingsModel::setMediaEncryption (MediaEncryption encryption) { return; if (encryption != SettingsModel::MediaEncryptionZrtp) - setLimeState(SettingsModel::LimeStateDisabled); + setLimeState(false); CoreManager::getInstance()->getCore()->setMediaEncryption( static_cast(encryption) @@ -701,22 +701,18 @@ void SettingsModel::enableMandatoryMediaEncryption(bool mandatory) { // ----------------------------------------------------------------------------- -SettingsModel::LimeState SettingsModel::getLimeState () const { - return static_cast( - CoreManager::getInstance()->getCore()->limeEnabled() - ); +bool SettingsModel::getLimeState () const { + return CoreManager::getInstance()->getCore()->limeX3DhEnabled(); } -void SettingsModel::setLimeState (LimeState state) { +void SettingsModel::setLimeState (const bool& state) { if (state == getLimeState()) return; - if (state != SettingsModel::LimeStateDisabled) + if (state) setMediaEncryption(SettingsModel::MediaEncryptionZrtp); - CoreManager::getInstance()->getCore()->enableLime( - static_cast(state) - ); + CoreManager::getInstance()->getCore()->enableLimeX3Dh(!state); emit limeStateChanged(state); } @@ -1242,15 +1238,16 @@ void SettingsModel::setDeveloperSettingsEnabled (bool status) { mConfig->setInt(UiSection, "developer_settings", status); emit developerSettingsEnabledChanged(status); #else + Q_UNUSED(status) qWarning() << QStringLiteral("Unable to change developer settings mode in release version."); #endif // ifdef DEBUG } -void SettingsModel::handleCallCreated(const shared_ptr &call) { +void SettingsModel::handleCallCreated(const shared_ptr &) { emit isInCallChanged(getIsInCall()); } -void SettingsModel::handleCallStateChanged(const shared_ptr &call, linphone::Call::State state) { +void SettingsModel::handleCallStateChanged(const shared_ptr &, linphone::Call::State) { emit isInCallChanged(getIsInCall()); } diff --git a/src/components/settings/SettingsModel.hpp b/src/components/settings/SettingsModel.hpp index 1c39482f9..402374765 100644 --- a/src/components/settings/SettingsModel.hpp +++ b/src/components/settings/SettingsModel.hpp @@ -32,7 +32,7 @@ // ============================================================================= class SettingsModel : public QObject { - Q_OBJECT; + Q_OBJECT // =========================================================================== // PROPERTIES. @@ -40,146 +40,146 @@ class SettingsModel : public QObject { // Assistant. ---------------------------------------------------------------- - Q_PROPERTY(bool createAppSipAccountEnabled READ getCreateAppSipAccountEnabled WRITE setCreateAppSipAccountEnabled NOTIFY createAppSipAccountEnabledChanged); - Q_PROPERTY(bool fetchRemoteConfigurationEnabled READ getFetchRemoteConfigurationEnabled WRITE setFetchRemoteConfigurationEnabled NOTIFY fetchRemoteConfigurationEnabledChanged); - Q_PROPERTY(bool useAppSipAccountEnabled READ getUseAppSipAccountEnabled WRITE setUseAppSipAccountEnabled NOTIFY useAppSipAccountEnabledChanged); - Q_PROPERTY(bool useOtherSipAccountEnabled READ getUseOtherSipAccountEnabled WRITE setUseOtherSipAccountEnabled NOTIFY useOtherSipAccountEnabledChanged); + Q_PROPERTY(bool createAppSipAccountEnabled READ getCreateAppSipAccountEnabled WRITE setCreateAppSipAccountEnabled NOTIFY createAppSipAccountEnabledChanged) + Q_PROPERTY(bool fetchRemoteConfigurationEnabled READ getFetchRemoteConfigurationEnabled WRITE setFetchRemoteConfigurationEnabled NOTIFY fetchRemoteConfigurationEnabledChanged) + Q_PROPERTY(bool useAppSipAccountEnabled READ getUseAppSipAccountEnabled WRITE setUseAppSipAccountEnabled NOTIFY useAppSipAccountEnabledChanged) + Q_PROPERTY(bool useOtherSipAccountEnabled READ getUseOtherSipAccountEnabled WRITE setUseOtherSipAccountEnabled NOTIFY useOtherSipAccountEnabledChanged) - Q_PROPERTY(bool assistantSupportsPhoneNumbers READ getAssistantSupportsPhoneNumbers WRITE setAssistantSupportsPhoneNumbers NOTIFY assistantSupportsPhoneNumbersChanged); + Q_PROPERTY(bool assistantSupportsPhoneNumbers READ getAssistantSupportsPhoneNumbers WRITE setAssistantSupportsPhoneNumbers NOTIFY assistantSupportsPhoneNumbersChanged) // Audio. -------------------------------------------------------------------- - Q_PROPERTY(bool captureGraphRunning READ getCaptureGraphRunning NOTIFY captureGraphRunningChanged); + Q_PROPERTY(bool captureGraphRunning READ getCaptureGraphRunning NOTIFY captureGraphRunningChanged) - Q_PROPERTY(QStringList captureDevices READ getCaptureDevices NOTIFY captureDevicesChanged); - Q_PROPERTY(QStringList playbackDevices READ getPlaybackDevices NOTIFY playbackDevicesChanged); + Q_PROPERTY(QStringList captureDevices READ getCaptureDevices NOTIFY captureDevicesChanged) + Q_PROPERTY(QStringList playbackDevices READ getPlaybackDevices NOTIFY playbackDevicesChanged) - Q_PROPERTY(float playbackGain READ getPlaybackGain WRITE setPlaybackGain NOTIFY playbackGainChanged); - Q_PROPERTY(float captureGain READ getCaptureGain WRITE setCaptureGain NOTIFY captureGainChanged); + Q_PROPERTY(float playbackGain READ getPlaybackGain WRITE setPlaybackGain NOTIFY playbackGainChanged) + Q_PROPERTY(float captureGain READ getCaptureGain WRITE setCaptureGain NOTIFY captureGainChanged) - Q_PROPERTY(QString captureDevice READ getCaptureDevice WRITE setCaptureDevice NOTIFY captureDeviceChanged); - Q_PROPERTY(QString playbackDevice READ getPlaybackDevice WRITE setPlaybackDevice NOTIFY playbackDeviceChanged); - Q_PROPERTY(QString ringerDevice READ getRingerDevice WRITE setRingerDevice NOTIFY ringerDeviceChanged); + Q_PROPERTY(QString captureDevice READ getCaptureDevice WRITE setCaptureDevice NOTIFY captureDeviceChanged) + Q_PROPERTY(QString playbackDevice READ getPlaybackDevice WRITE setPlaybackDevice NOTIFY playbackDeviceChanged) + Q_PROPERTY(QString ringerDevice READ getRingerDevice WRITE setRingerDevice NOTIFY ringerDeviceChanged) - Q_PROPERTY(QString ringPath READ getRingPath WRITE setRingPath NOTIFY ringPathChanged); + Q_PROPERTY(QString ringPath READ getRingPath WRITE setRingPath NOTIFY ringPathChanged) - Q_PROPERTY(bool echoCancellationEnabled READ getEchoCancellationEnabled WRITE setEchoCancellationEnabled NOTIFY echoCancellationEnabledChanged); + Q_PROPERTY(bool echoCancellationEnabled READ getEchoCancellationEnabled WRITE setEchoCancellationEnabled NOTIFY echoCancellationEnabledChanged) - Q_PROPERTY(bool showAudioCodecs READ getShowAudioCodecs WRITE setShowAudioCodecs NOTIFY showAudioCodecsChanged); + Q_PROPERTY(bool showAudioCodecs READ getShowAudioCodecs WRITE setShowAudioCodecs NOTIFY showAudioCodecsChanged) // Video. -------------------------------------------------------------------- - Q_PROPERTY(QStringList videoDevices READ getVideoDevices NOTIFY videoDevicesChanged); + Q_PROPERTY(QStringList videoDevices READ getVideoDevices NOTIFY videoDevicesChanged) - Q_PROPERTY(QString videoDevice READ getVideoDevice WRITE setVideoDevice NOTIFY videoDeviceChanged); + Q_PROPERTY(QString videoDevice READ getVideoDevice WRITE setVideoDevice NOTIFY videoDeviceChanged) - Q_PROPERTY(QString videoPreset READ getVideoPreset WRITE setVideoPreset NOTIFY videoPresetChanged); - Q_PROPERTY(int videoFramerate READ getVideoFramerate WRITE setVideoFramerate NOTIFY videoFramerateChanged); + Q_PROPERTY(QString videoPreset READ getVideoPreset WRITE setVideoPreset NOTIFY videoPresetChanged) + Q_PROPERTY(int videoFramerate READ getVideoFramerate WRITE setVideoFramerate NOTIFY videoFramerateChanged) - Q_PROPERTY(QVariantList supportedVideoDefinitions READ getSupportedVideoDefinitions CONSTANT); + Q_PROPERTY(QVariantList supportedVideoDefinitions READ getSupportedVideoDefinitions CONSTANT) - Q_PROPERTY(QVariantMap videoDefinition READ getVideoDefinition WRITE setVideoDefinition NOTIFY videoDefinitionChanged); + Q_PROPERTY(QVariantMap videoDefinition READ getVideoDefinition WRITE setVideoDefinition NOTIFY videoDefinitionChanged) - Q_PROPERTY(bool videoSupported READ getVideoSupported CONSTANT); + Q_PROPERTY(bool videoSupported READ getVideoSupported CONSTANT) - Q_PROPERTY(bool showVideoCodecs READ getShowVideoCodecs WRITE setShowVideoCodecs NOTIFY showVideoCodecsChanged); + Q_PROPERTY(bool showVideoCodecs READ getShowVideoCodecs WRITE setShowVideoCodecs NOTIFY showVideoCodecsChanged) // Chat & calls. ------------------------------------------------------------- - Q_PROPERTY(bool autoAnswerStatus READ getAutoAnswerStatus WRITE setAutoAnswerStatus NOTIFY autoAnswerStatusChanged); - Q_PROPERTY(bool autoAnswerVideoStatus READ getAutoAnswerVideoStatus WRITE setAutoAnswerVideoStatus NOTIFY autoAnswerVideoStatusChanged); - Q_PROPERTY(int autoAnswerDelay READ getAutoAnswerDelay WRITE setAutoAnswerDelay NOTIFY autoAnswerDelayChanged); + Q_PROPERTY(bool autoAnswerStatus READ getAutoAnswerStatus WRITE setAutoAnswerStatus NOTIFY autoAnswerStatusChanged) + Q_PROPERTY(bool autoAnswerVideoStatus READ getAutoAnswerVideoStatus WRITE setAutoAnswerVideoStatus NOTIFY autoAnswerVideoStatusChanged) + Q_PROPERTY(int autoAnswerDelay READ getAutoAnswerDelay WRITE setAutoAnswerDelay NOTIFY autoAnswerDelayChanged) - Q_PROPERTY(bool showTelKeypadAutomatically READ getShowTelKeypadAutomatically WRITE setShowTelKeypadAutomatically NOTIFY showTelKeypadAutomaticallyChanged); + Q_PROPERTY(bool showTelKeypadAutomatically READ getShowTelKeypadAutomatically WRITE setShowTelKeypadAutomatically NOTIFY showTelKeypadAutomaticallyChanged) - Q_PROPERTY(bool keepCallsWindowInBackground READ getKeepCallsWindowInBackground WRITE setKeepCallsWindowInBackground NOTIFY keepCallsWindowInBackgroundChanged); + Q_PROPERTY(bool keepCallsWindowInBackground READ getKeepCallsWindowInBackground WRITE setKeepCallsWindowInBackground NOTIFY keepCallsWindowInBackgroundChanged) - Q_PROPERTY(bool outgoingCallsEnabled READ getOutgoingCallsEnabled WRITE setOutgoingCallsEnabled NOTIFY outgoingCallsEnabledChanged); + Q_PROPERTY(bool outgoingCallsEnabled READ getOutgoingCallsEnabled WRITE setOutgoingCallsEnabled NOTIFY outgoingCallsEnabledChanged) - Q_PROPERTY(bool callRecorderEnabled READ getCallRecorderEnabled WRITE setCallRecorderEnabled NOTIFY callRecorderEnabledChanged); - Q_PROPERTY(bool automaticallyRecordCalls READ getAutomaticallyRecordCalls WRITE setAutomaticallyRecordCalls NOTIFY automaticallyRecordCallsChanged); + Q_PROPERTY(bool callRecorderEnabled READ getCallRecorderEnabled WRITE setCallRecorderEnabled NOTIFY callRecorderEnabledChanged) + Q_PROPERTY(bool automaticallyRecordCalls READ getAutomaticallyRecordCalls WRITE setAutomaticallyRecordCalls NOTIFY automaticallyRecordCallsChanged) - Q_PROPERTY(bool callPauseEnabled READ getCallPauseEnabled WRITE setCallPauseEnabled NOTIFY callPauseEnabledChanged); - Q_PROPERTY(bool muteMicrophoneEnabled READ getMuteMicrophoneEnabled WRITE setMuteMicrophoneEnabled NOTIFY muteMicrophoneEnabledChanged); + Q_PROPERTY(bool callPauseEnabled READ getCallPauseEnabled WRITE setCallPauseEnabled NOTIFY callPauseEnabledChanged) + Q_PROPERTY(bool muteMicrophoneEnabled READ getMuteMicrophoneEnabled WRITE setMuteMicrophoneEnabled NOTIFY muteMicrophoneEnabledChanged) - Q_PROPERTY(bool chatEnabled READ getChatEnabled WRITE setChatEnabled NOTIFY chatEnabledChanged); + Q_PROPERTY(bool chatEnabled READ getChatEnabled WRITE setChatEnabled NOTIFY chatEnabledChanged) - Q_PROPERTY(bool conferenceEnabled READ getConferenceEnabled WRITE setConferenceEnabled NOTIFY conferenceEnabledChanged); + Q_PROPERTY(bool conferenceEnabled READ getConferenceEnabled WRITE setConferenceEnabled NOTIFY conferenceEnabledChanged) - Q_PROPERTY(bool chatNotificationSoundEnabled READ getChatNotificationSoundEnabled WRITE setChatNotificationSoundEnabled NOTIFY chatNotificationSoundEnabledChanged); - Q_PROPERTY(QString chatNotificationSoundPath READ getChatNotificationSoundPath WRITE setChatNotificationSoundPath NOTIFY chatNotificationSoundPathChanged); + Q_PROPERTY(bool chatNotificationSoundEnabled READ getChatNotificationSoundEnabled WRITE setChatNotificationSoundEnabled NOTIFY chatNotificationSoundEnabledChanged) + Q_PROPERTY(QString chatNotificationSoundPath READ getChatNotificationSoundPath WRITE setChatNotificationSoundPath NOTIFY chatNotificationSoundPathChanged) - Q_PROPERTY(QString fileTransferUrl READ getFileTransferUrl WRITE setFileTransferUrl NOTIFY fileTransferUrlChanged); + Q_PROPERTY(QString fileTransferUrl READ getFileTransferUrl WRITE setFileTransferUrl NOTIFY fileTransferUrlChanged) - Q_PROPERTY(bool limeIsSupported READ getLimeIsSupported CONSTANT); - Q_PROPERTY(QVariantList supportedMediaEncryptions READ getSupportedMediaEncryptions CONSTANT); + Q_PROPERTY(bool limeIsSupported READ getLimeIsSupported CONSTANT) + Q_PROPERTY(QVariantList supportedMediaEncryptions READ getSupportedMediaEncryptions CONSTANT) - Q_PROPERTY(MediaEncryption mediaEncryption READ getMediaEncryption WRITE setMediaEncryption NOTIFY mediaEncryptionChanged); - Q_PROPERTY(bool mediaEncryptionMandatory READ mandatoryMediaEncryptionEnabled WRITE enableMandatoryMediaEncryption NOTIFY mediaEncryptionChanged); + Q_PROPERTY(MediaEncryption mediaEncryption READ getMediaEncryption WRITE setMediaEncryption NOTIFY mediaEncryptionChanged) + Q_PROPERTY(bool mediaEncryptionMandatory READ mandatoryMediaEncryptionEnabled WRITE enableMandatoryMediaEncryption NOTIFY mediaEncryptionChanged) - Q_PROPERTY(LimeState limeState READ getLimeState WRITE setLimeState NOTIFY limeStateChanged); + Q_PROPERTY(bool limeState READ getLimeState WRITE setLimeState NOTIFY limeStateChanged) - Q_PROPERTY(bool contactsEnabled READ getContactsEnabled WRITE setContactsEnabled NOTIFY contactsEnabledChanged); + Q_PROPERTY(bool contactsEnabled READ getContactsEnabled WRITE setContactsEnabled NOTIFY contactsEnabledChanged) // Network. ------------------------------------------------------------------ - Q_PROPERTY(bool showNetworkSettings READ getShowNetworkSettings WRITE setShowNetworkSettings NOTIFY showNetworkSettingsChanged); + Q_PROPERTY(bool showNetworkSettings READ getShowNetworkSettings WRITE setShowNetworkSettings NOTIFY showNetworkSettingsChanged) - Q_PROPERTY(bool useSipInfoForDtmfs READ getUseSipInfoForDtmfs WRITE setUseSipInfoForDtmfs NOTIFY dtmfsProtocolChanged); - Q_PROPERTY(bool useRfc2833ForDtmfs READ getUseRfc2833ForDtmfs WRITE setUseRfc2833ForDtmfs NOTIFY dtmfsProtocolChanged); + Q_PROPERTY(bool useSipInfoForDtmfs READ getUseSipInfoForDtmfs WRITE setUseSipInfoForDtmfs NOTIFY dtmfsProtocolChanged) + Q_PROPERTY(bool useRfc2833ForDtmfs READ getUseRfc2833ForDtmfs WRITE setUseRfc2833ForDtmfs NOTIFY dtmfsProtocolChanged) - Q_PROPERTY(bool ipv6Enabled READ getIpv6Enabled WRITE setIpv6Enabled NOTIFY ipv6EnabledChanged); + Q_PROPERTY(bool ipv6Enabled READ getIpv6Enabled WRITE setIpv6Enabled NOTIFY ipv6EnabledChanged) - Q_PROPERTY(int downloadBandwidth READ getDownloadBandwidth WRITE setDownloadBandwidth NOTIFY downloadBandWidthChanged); - Q_PROPERTY(int uploadBandwidth READ getUploadBandwidth WRITE setUploadBandwidth NOTIFY uploadBandWidthChanged); + Q_PROPERTY(int downloadBandwidth READ getDownloadBandwidth WRITE setDownloadBandwidth NOTIFY downloadBandWidthChanged) + Q_PROPERTY(int uploadBandwidth READ getUploadBandwidth WRITE setUploadBandwidth NOTIFY uploadBandWidthChanged) Q_PROPERTY( bool adaptiveRateControlEnabled READ getAdaptiveRateControlEnabled WRITE setAdaptiveRateControlEnabled NOTIFY adaptiveRateControlEnabledChanged - ); + ) - Q_PROPERTY(int tcpPort READ getTcpPort WRITE setTcpPort NOTIFY tcpPortChanged); - Q_PROPERTY(int udpPort READ getUdpPort WRITE setUdpPort NOTIFY udpPortChanged); + Q_PROPERTY(int tcpPort READ getTcpPort WRITE setTcpPort NOTIFY tcpPortChanged) + Q_PROPERTY(int udpPort READ getUdpPort WRITE setUdpPort NOTIFY udpPortChanged) - Q_PROPERTY(QList audioPortRange READ getAudioPortRange WRITE setAudioPortRange NOTIFY audioPortRangeChanged); - Q_PROPERTY(QList videoPortRange READ getVideoPortRange WRITE setVideoPortRange NOTIFY videoPortRangeChanged); + Q_PROPERTY(QList audioPortRange READ getAudioPortRange WRITE setAudioPortRange NOTIFY audioPortRangeChanged) + Q_PROPERTY(QList videoPortRange READ getVideoPortRange WRITE setVideoPortRange NOTIFY videoPortRangeChanged) - Q_PROPERTY(bool iceEnabled READ getIceEnabled WRITE setIceEnabled NOTIFY iceEnabledChanged); - Q_PROPERTY(bool turnEnabled READ getTurnEnabled WRITE setTurnEnabled NOTIFY turnEnabledChanged); + Q_PROPERTY(bool iceEnabled READ getIceEnabled WRITE setIceEnabled NOTIFY iceEnabledChanged) + Q_PROPERTY(bool turnEnabled READ getTurnEnabled WRITE setTurnEnabled NOTIFY turnEnabledChanged) - Q_PROPERTY(QString stunServer READ getStunServer WRITE setStunServer NOTIFY stunServerChanged); + Q_PROPERTY(QString stunServer READ getStunServer WRITE setStunServer NOTIFY stunServerChanged) - Q_PROPERTY(QString turnUser READ getTurnUser WRITE setTurnUser NOTIFY turnUserChanged); - Q_PROPERTY(QString turnPassword READ getTurnPassword WRITE setTurnPassword NOTIFY turnPasswordChanged); + Q_PROPERTY(QString turnUser READ getTurnUser WRITE setTurnUser NOTIFY turnUserChanged) + Q_PROPERTY(QString turnPassword READ getTurnPassword WRITE setTurnPassword NOTIFY turnPasswordChanged) - Q_PROPERTY(int dscpSip READ getDscpSip WRITE setDscpSip NOTIFY dscpSipChanged); - Q_PROPERTY(int dscpAudio READ getDscpAudio WRITE setDscpAudio NOTIFY dscpAudioChanged); - Q_PROPERTY(int dscpVideo READ getDscpVideo WRITE setDscpVideo NOTIFY dscpVideoChanged); + Q_PROPERTY(int dscpSip READ getDscpSip WRITE setDscpSip NOTIFY dscpSipChanged) + Q_PROPERTY(int dscpAudio READ getDscpAudio WRITE setDscpAudio NOTIFY dscpAudioChanged) + Q_PROPERTY(int dscpVideo READ getDscpVideo WRITE setDscpVideo NOTIFY dscpVideoChanged) - Q_PROPERTY(bool rlsUriEnabled READ getRlsUriEnabled WRITE setRlsUriEnabled NOTIFY rlsUriEnabledChanged); + Q_PROPERTY(bool rlsUriEnabled READ getRlsUriEnabled WRITE setRlsUriEnabled NOTIFY rlsUriEnabledChanged) // UI. ----------------------------------------------------------------------- - Q_PROPERTY(QString remoteProvisioning READ getRemoteProvisioning WRITE setRemoteProvisioning NOTIFY remoteProvisioningChanged); + Q_PROPERTY(QString remoteProvisioning READ getRemoteProvisioning WRITE setRemoteProvisioning NOTIFY remoteProvisioningChanged) - Q_PROPERTY(QString savedScreenshotsFolder READ getSavedScreenshotsFolder WRITE setSavedScreenshotsFolder NOTIFY savedScreenshotsFolderChanged); - Q_PROPERTY(QString savedCallsFolder READ getSavedCallsFolder WRITE setSavedCallsFolder NOTIFY savedCallsFolderChanged); - Q_PROPERTY(QString downloadFolder READ getDownloadFolder WRITE setDownloadFolder NOTIFY downloadFolderChanged); + Q_PROPERTY(QString savedScreenshotsFolder READ getSavedScreenshotsFolder WRITE setSavedScreenshotsFolder NOTIFY savedScreenshotsFolderChanged) + Q_PROPERTY(QString savedCallsFolder READ getSavedCallsFolder WRITE setSavedCallsFolder NOTIFY savedCallsFolderChanged) + Q_PROPERTY(QString downloadFolder READ getDownloadFolder WRITE setDownloadFolder NOTIFY downloadFolderChanged) - Q_PROPERTY(bool exitOnClose READ getExitOnClose WRITE setExitOnClose NOTIFY exitOnCloseChanged); + Q_PROPERTY(bool exitOnClose READ getExitOnClose WRITE setExitOnClose NOTIFY exitOnCloseChanged) // Advanced. ----------------------------------------------------------------- - Q_PROPERTY(QString logsFolder READ getLogsFolder WRITE setLogsFolder NOTIFY logsFolderChanged); - Q_PROPERTY(QString logsUploadUrl READ getLogsUploadUrl WRITE setLogsUploadUrl NOTIFY logsUploadUrlChanged); - Q_PROPERTY(bool logsEnabled READ getLogsEnabled WRITE setLogsEnabled NOTIFY logsEnabledChanged); - Q_PROPERTY(QString logsEmail READ getLogsEmail WRITE setLogsEmail NOTIFY logsEmailChanged); + Q_PROPERTY(QString logsFolder READ getLogsFolder WRITE setLogsFolder NOTIFY logsFolderChanged) + Q_PROPERTY(QString logsUploadUrl READ getLogsUploadUrl WRITE setLogsUploadUrl NOTIFY logsUploadUrlChanged) + Q_PROPERTY(bool logsEnabled READ getLogsEnabled WRITE setLogsEnabled NOTIFY logsEnabledChanged) + Q_PROPERTY(QString logsEmail READ getLogsEmail WRITE setLogsEmail NOTIFY logsEmailChanged) - Q_PROPERTY(bool developerSettingsEnabled READ getDeveloperSettingsEnabled WRITE setDeveloperSettingsEnabled NOTIFY developerSettingsEnabledChanged); + Q_PROPERTY(bool developerSettingsEnabled READ getDeveloperSettingsEnabled WRITE setDeveloperSettingsEnabled NOTIFY developerSettingsEnabledChanged) - Q_PROPERTY(bool isInCall READ getIsInCall NOTIFY isInCallChanged); + Q_PROPERTY(bool isInCall READ getIsInCall NOTIFY isInCallChanged) public: enum MediaEncryption { @@ -188,14 +188,8 @@ public: MediaEncryptionSrtp = int(linphone::MediaEncryption::SRTP), MediaEncryptionZrtp = int(linphone::MediaEncryption::ZRTP) }; - Q_ENUM(MediaEncryption); + Q_ENUM(MediaEncryption) - enum LimeState { - LimeStateDisabled = int(linphone::LimeState::Disabled), - LimeStateMandatory = int(linphone::LimeState::Mandatory), - LimeStatePreferred = int(linphone::LimeState::Preferred) - }; - Q_ENUM(LimeState); SettingsModel (QObject *parent = Q_NULLPTR); @@ -341,8 +335,8 @@ public: bool mandatoryMediaEncryptionEnabled () const; void enableMandatoryMediaEncryption(bool mandatory); - LimeState getLimeState () const; - void setLimeState (LimeState state); + bool getLimeState () const; + void setLimeState (const bool& state); bool getContactsEnabled () const; void setContactsEnabled (bool status); @@ -534,7 +528,7 @@ signals: void fileTransferUrlChanged (const QString &url); void mediaEncryptionChanged (MediaEncryption encryption); - void limeStateChanged (LimeState state); + void limeStateChanged (bool state); void contactsEnabledChanged (bool status); diff --git a/src/utils/MediastreamerUtils.hpp b/src/utils/MediastreamerUtils.hpp index 35ed99bcf..0888f333b 100644 --- a/src/utils/MediastreamerUtils.hpp +++ b/src/utils/MediastreamerUtils.hpp @@ -31,6 +31,8 @@ #include "mediastreamer2/msticker.h" #include +#include + // ============================================================================= namespace MediastreamerUtils { @@ -48,14 +50,14 @@ namespace MediastreamerUtils { } inline float dbToLinear(float volume) { - return static_cast(pow(10, volume / 10)); + return static_cast(pow(10.0, volume / 10.0)); } inline float linearToDb(float volume) { - if (volume == 0.0f) { + if (qFuzzyIsNull(volume)) { return MS_VOLUME_DB_LOWEST; } - return static_cast(10 * log10(volume)); + return static_cast(10.0 * log10(volume)); } //Simple mediastreamer audio capture graph