mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-18 03:48:09 +00:00
Update some depreciated functions, clean syntaxes, fix Linux installation
This commit is contained in:
parent
57c62fa1e5
commit
a50dfd98ef
8 changed files with 261 additions and 186 deletions
|
|
@ -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}"
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -53,88 +53,139 @@ namespace {
|
|||
// In Bytes.
|
||||
constexpr qint64 FileSizeLimit = 524288000;
|
||||
}
|
||||
|
||||
static inline QString getFileId (const shared_ptr<linphone::ChatMessage> &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<MessageAppData>& );
|
||||
static QVector<MessageAppData> 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<MessageAppData>& 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> MessageAppData::fromListString(const QString& p_data)
|
||||
{
|
||||
QVector<MessageAppData> 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<linphone::ChatMessage> &message) {
|
||||
return Utils::coreStringToAppString(message->getAppdata()).section(':', 1);
|
||||
|
||||
// There is only one file (thumbnail) in appdata
|
||||
static inline MessageAppData getMessageAppData (const shared_ptr<linphone::ChatMessage> &message) {
|
||||
return MessageAppData(QString::fromStdString(message->getAppdata()));
|
||||
}
|
||||
|
||||
static inline bool fileWasDownloaded (const shared_ptr<linphone::ChatMessage> &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<linphone::ChatMessage> &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<linphone::ChatMessage> &message) {
|
||||
if (!message->getAppdata().empty())
|
||||
return;
|
||||
return;// Already exist : no need to create one
|
||||
std::list<std::shared_ptr<linphone::Content> > 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<linphone::ChatMessage> &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<linphone::ChatMessage> &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<linphone::ChatMessage> 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());
|
||||
// <Dev note> 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<linphone::CallLog> &callLog) {
|
|||
|
||||
auto insertEntry = [this](
|
||||
const ChatEntryData &entry,
|
||||
const QList<ChatEntryData>::iterator *start = NULL
|
||||
const QList<ChatEntryData>::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"];
|
||||
|
|
|
|||
|
|
@ -125,7 +125,10 @@ QVariantMap AccountSettingsModel::getProxyConfigDescription (const shared_ptr<li
|
|||
map["serverAddress"] = Utils::coreStringToAppString(proxyConfig->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();
|
||||
|
|
|
|||
|
|
@ -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<linphone::MediaEncryption>(encryption)
|
||||
|
|
@ -701,22 +701,18 @@ void SettingsModel::enableMandatoryMediaEncryption(bool mandatory) {
|
|||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
SettingsModel::LimeState SettingsModel::getLimeState () const {
|
||||
return static_cast<SettingsModel::LimeState>(
|
||||
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<linphone::LimeState>(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<linphone::Call> &call) {
|
||||
void SettingsModel::handleCallCreated(const shared_ptr<linphone::Call> &) {
|
||||
emit isInCallChanged(getIsInCall());
|
||||
}
|
||||
|
||||
void SettingsModel::handleCallStateChanged(const shared_ptr<linphone::Call> &call, linphone::Call::State state) {
|
||||
void SettingsModel::handleCallStateChanged(const shared_ptr<linphone::Call> &, linphone::Call::State) {
|
||||
emit isInCallChanged(getIsInCall());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<int> audioPortRange READ getAudioPortRange WRITE setAudioPortRange NOTIFY audioPortRangeChanged);
|
||||
Q_PROPERTY(QList<int> videoPortRange READ getVideoPortRange WRITE setVideoPortRange NOTIFY videoPortRangeChanged);
|
||||
Q_PROPERTY(QList<int> audioPortRange READ getAudioPortRange WRITE setAudioPortRange NOTIFY audioPortRangeChanged)
|
||||
Q_PROPERTY(QList<int> 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);
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
#include "mediastreamer2/msticker.h"
|
||||
#include <linphone++/linphone.hh>
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
// =============================================================================
|
||||
|
||||
namespace MediastreamerUtils {
|
||||
|
|
@ -48,14 +50,14 @@ namespace MediastreamerUtils {
|
|||
}
|
||||
|
||||
inline float dbToLinear(float volume) {
|
||||
return static_cast<float>(pow(10, volume / 10));
|
||||
return static_cast<float>(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<float>(10 * log10(volume));
|
||||
return static_cast<float>(10.0 * log10(volume));
|
||||
}
|
||||
|
||||
//Simple mediastreamer audio capture graph
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue