Qt6 migration

This commit is contained in:
Julien Wadel 2022-09-29 09:11:50 +02:00
parent 15baf63a7e
commit 8095974276
167 changed files with 403 additions and 184 deletions

View file

@ -224,12 +224,15 @@ endif()
include(FindPkgConfig)
set(APP_DEPENDS sdk)
find_package(Qt5 5.10 COMPONENTS Core REQUIRED)
if ( NOT Qt5_FOUND )
message(FATAL_ERROR "Minimum supported Qt5 version is 5.10!")
find_package(Qt6 COMPONENTS Core)
if (NOT Qt6_FOUND)
find_package(Qt5 5.10 REQUIRED COMPONENTS Core)
if ( NOT Qt5_FOUND )
message(FATAL_ERROR "Qt6 has not been found. Minimum supported Qt5 version is 5.10!")
endif()
endif()
find_package(LinphoneCxx CONFIG QUIET)
find_package(Linphone CONFIG QUIET)
find_package(bctoolbox CONFIG QUIET)

View file

@ -127,20 +127,24 @@ if( WIN32)
endif()
set(CMAKE_INCLUDE_CURRENT_DIR ON)#useful for config.h
set(QT5_PACKAGES Core Gui Quick Widgets QuickControls2 Svg LinguistTools Concurrent Network Test Qml)
set(QT_PACKAGES Core Gui Quick Widgets QuickControls2 Svg LinguistTools Concurrent Network Test Qml)
if(ENABLE_APP_WEBVIEW)
list(APPEND QT5_PACKAGES WebView WebEngine WebEngineCore)
list(APPEND QT_PACKAGES WebView WebEngine WebEngineCore)
add_definitions(-DENABLE_WEBVIEW)
endif()
if (UNIX AND NOT APPLE)
list(APPEND QT5_PACKAGES DBus)
list(APPEND QT_PACKAGES DBus)
endif ()
set(QT5_PACKAGES_OPTIONAL TextToSpeech QmlModels)
set(QT_PACKAGES_OPTIONAL TextToSpeech QmlModels)
set(CMAKE_AUTOMOC ON)
find_package(Qt5 COMPONENTS ${QT5_PACKAGES} REQUIRED)
find_package(Qt5 COMPONENTS ${QT5_PACKAGES_OPTIONAL} QUIET)
find_package(Qt6 COMPONENTS ${QT_PACKAGES})
if (NOT Qt6_FOUND)
find_package(Qt5 COMPONENTS ${QT_PACKAGES} REQUIRED)
find_package(Qt5 COMPONENTS ${QT_PACKAGES_OPTIONAL} QUIET)
else()
find_package(Qt6 COMPONENTS ${QT_PACKAGES_OPTIONAL} QUIET)
endif()
bc_git_version(${TARGET_NAME} ${PROJECT_VERSION})
@ -534,7 +538,9 @@ set(QML_SOURCES_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/")
set(QML_MODULES_PATHS ${QML_SOURCES_PATHS})
if(ENABLE_BUILD_VERBOSE)#useful to copy these Paths to QML previewers
message("QML_IMPORT_PATH=${QML_IMPORT_PATH}" )
message("Qt5 Paths : Qt5_DIR=$ENV{Qt5_DIR}, PATH=$ENV{PATH}")
message("Qt6 Paths : Qt6_DIR=$ENV{Qt6_DIR}")
message("Qt5 Paths : Qt5_DIR=$ENV{Qt5_DIR}")
message("PATH=$ENV{PATH}")
endif()
if(APPLE)
if(MS2_PLUGINS_LOCATION)
@ -555,7 +561,7 @@ include_directories("${LINPHONE_OUTPUT_DIR}/include/OpenGL")
if (CMAKE_INSTALL_RPATH)
#Retrieve lib path from a know QT executable
get_target_property(LUPDATE_PATH Qt5::lupdate LOCATION)
get_target_property(LUPDATE_PATH Qt::lupdate LOCATION)
get_filename_component(LUPDATE_PATH "${LUPDATE_PATH}" DIRECTORY)
get_filename_component(QT_PATH "${LUPDATE_PATH}/lib" ABSOLUTE)
list(APPEND CMAKE_INSTALL_RPATH "${QT_PATH}")
@ -632,23 +638,23 @@ endif()
if(ENABLE_BUILD_VERBOSE)
message("LIBRARIES : ${LIBRARIES}")
endif()
foreach (package ${QT5_PACKAGES})
list(APPEND INCLUDED_DIRECTORIES "${Qt5${package}_INCLUDE_DIRS}")
foreach (package ${QT_PACKAGES})
list(APPEND INCLUDED_DIRECTORIES "${Qt${package}_INCLUDE_DIRS}")
# `qt5_create_translation` is provided from `LinguistTools` package.
# But the `Qt5::LinguistTools` lib does not exist. Remove it.
if (NOT (${package} STREQUAL LinguistTools))
# list(APPEND LIBRARIES ${Qt5${package}_LIBRARIES})
target_link_libraries(${APP_LIBRARY} Qt5::${package})
target_link_libraries(${APP_PLUGIN} Qt5::${package})
target_link_libraries(${TARGET_NAME} Qt5::${package})
target_link_libraries(${APP_LIBRARY} Qt::${package})
target_link_libraries(${APP_PLUGIN} Qt::${package})
target_link_libraries(${TARGET_NAME} Qt::${package})
endif ()
endforeach ()
foreach (package ${QT5_PACKAGES_OPTIONAL})
if ("${Qt5${package}_FOUND}")
foreach (package ${QT_PACKAGES_OPTIONAL})
if ("${Qt${package}_FOUND}")
message("Optional package ${package} found.")
list(APPEND INCLUDED_DIRECTORIES "${Qt5${package}_INCLUDE_DIRS}")
list(APPEND LIBRARIES ${Qt5${package}_LIBRARIES})
list(APPEND INCLUDED_DIRECTORIES "${Qt${package}_INCLUDE_DIRS}")
list(APPEND LIBRARIES Qt${package}_LIBRARIES})
string(TOUPPER "${package}" INCLUDE_NAME)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D${INCLUDE_NAME}_ENABLED")

View file

@ -53,7 +53,7 @@ file(REMOVE ${TARGET_TS_FILES})
#file(REMOVE ${QRC_BIG_RESOURCES}) #Remove .o of resources before build. It is need to update resources from changes
add_custom_command(OUTPUT ${TARGET_TS_FILES}
COMMAND ${Qt5_LUPDATE_EXECUTABLE}
COMMAND lupdate
ARGS ${LUPDATE_OPTIONS} ${TRANSLATION_SOURCES} -ts ${TS_FILES}
COMMAND ${CMAKE_COMMAND} -E copy ${TS_FILES} ${CMAKE_CURRENT_BINARY_DIR}
VERBATIM
@ -62,7 +62,7 @@ add_custom_command(OUTPUT ${TARGET_TS_FILES}
)
add_custom_command(OUTPUT ${QM_FILES}
COMMAND ${Qt5_LRELEASE_EXECUTABLE}
COMMAND lrelease
ARGS ${TARGET_TS_FILES} ${LRELEASE_OPTIONS}
DEPENDS ${TARGET_TS_FILES}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}

View file

@ -33,8 +33,13 @@ if (POLICY CMP0079)
cmake_policy(SET CMP0079 NEW)
endif ()
set(QT_PATH "${Qt5Core_DIR}/../../..")
if(Qt5Core_DIR)
set(QT_PATH "${Qt5Core_DIR}/../../..")
elseif(Qt6Core_DIR)
set(QT_PATH "${Qt6Core_DIR}/../../..")
else()
message(FATAL_ERROR "No Qt dir")
endif()
# ==============================================================================
# Build package version.
@ -465,8 +470,11 @@ endif()
function(deployqt_hack target qml_dir)
find_package(Qt5 COMPONENTS Core REQUIRED)
get_target_property(qmake_executable Qt5::qmake IMPORTED_LOCATION)
find_package(Qt6 COMPONENTS Core)
if(NOT Qt6_FOUND)
find_package(Qt5 COMPONENTS Core REQUIRED)
endif()
get_target_property(qmake_executable Qt::qmake IMPORTED_LOCATION)
get_filename_component(_qt_bin_dir "${qmake_executable}" DIRECTORY)
#Note: CMAKE_CURRENT_SOURCE_DIR point to linphone-app because deployqt_hack is called there.
add_custom_command(TARGET ${target} POST_BUILD

View file

@ -21,6 +21,7 @@
#include <iostream>
#include <QQuickWindow>
#include <QRegularExpression>
#include "config.h"
@ -231,6 +232,8 @@ static QString indentedWord (QString word, int &curPos, const int lineLength, co
}
static string multilineIndent (const QString &str, int indentationNumber = 0) {
return Utils::appStringToCoreString(str);
/*
constexpr int lineLength(80);
static const QRegExp spaceRegexp("(\\s)");
@ -273,7 +276,7 @@ static string multilineIndent (const QString &str, int indentationNumber = 0) {
out += indentedWord(word, indentedTextCurPos, lineLength, padding);
out += "\n";
return Utils::appStringToCoreString(out);
return Utils::appStringToCoreString(out);*/
}
// =============================================================================
@ -410,8 +413,8 @@ QString Cli::Command::getFunctionSyntax () const {
// FIXME: Do not accept args without value like: cmd toto.
// In the future `toto` could be a boolean argument.
QRegExp Cli::mRegExpArgs("(?:(?:([\\w-]+)\\s*)=\\s*(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\"|([^\\s]+)\\s*))");
QRegExp Cli::mRegExpFunctionName("^\\s*([a-z-]+)\\s*");
QRegularExpression Cli::mRegExpArgs("(?:(?:([\\w-]+)\\s*)=\\s*(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\"|([^\\s]+)\\s*))");
QRegularExpression Cli::mRegExpFunctionName("^\\s*([a-z-]+)\\s*");
QMap<QString, Cli::Command> Cli::mCommands = {
createCommand("show", QT_TR_NOOP("showFunctionDescription"), cliShow, QHash<QString, Argument>(), true),
@ -571,13 +574,16 @@ pair<QString, Cli::Command> Cli::createCommand (
// -----------------------------------------------------------------------------
QString Cli::parseFunctionName (const QString &command) {
mRegExpFunctionName.indexIn(command.toLower());
if (mRegExpFunctionName.pos(1) == -1) {
QRegularExpressionMatch match = mRegExpFunctionName.match(command.toLower());
//mRegExpFunctionName.indexIn(command.toLower());
//if (mRegExpFunctionName.pos(1) == -1) {
if(!match.hasMatch()){
qWarning() << QStringLiteral("Unable to parse function name of command: `%1`.").arg(command);
return QString("");
}
const QStringList texts = mRegExpFunctionName.capturedTexts();
//const QStringList texts = mRegExpFunctionName.capturedTexts();
const QStringList texts = match.capturedTexts();
const QString functionName = texts[1];
if (!mCommands.contains(functionName)) {
@ -591,11 +597,20 @@ QString Cli::parseFunctionName (const QString &command) {
QHash<QString, QString> Cli::parseArgs (const QString &command) {
QHash<QString, QString> args;
int pos = 0;
while ((pos = mRegExpArgs.indexIn(command.toLower(), pos)) != -1) {
QRegularExpressionMatchIterator it = mRegExpFunctionName.globalMatch(command.toLower());
while (it.hasNext()) {
QRegularExpressionMatch match = it.next();
if (match.hasMatch()) {
args[match.captured(1)] = (match.captured(2).isEmpty() ? match.captured(3) : match.captured(2));
}
}
/*
QRegularExpressionMatch match = mRegExpFunctionName.match(command.toLower());
if( match.hasMatch()){
//while ((pos = mRegExpArgs.indexIn(command.toLower(), pos)) != -1) {
pos += mRegExpArgs.matchedLength();
args[mRegExpArgs.cap(1)] = (mRegExpArgs.cap(2).isEmpty() ? mRegExpArgs.cap(3) : mRegExpArgs.cap(2));
}
*/
return args;
}

View file

@ -109,8 +109,8 @@ private:
static QMap<QString, Command> mCommands;
static QRegExp mRegExpArgs;
static QRegExp mRegExpFunctionName;
static QRegularExpression mRegExpArgs;
static QRegularExpression mRegExpFunctionName;
};
#endif // CLI_H_

View file

@ -24,6 +24,7 @@
#include <QScreen>
#include <QSvgRenderer>
#include <QQmlPropertyMap>
#include <QRegularExpression>
#include "app/App.hpp"
@ -56,16 +57,16 @@ static QByteArray buildByteArrayAttribute (const QByteArray &name, const QByteAr
}
static QByteArray parseFillAndStroke (QXmlStreamAttributes &readerAttributes, const ColorListModel *colors) {
static QRegExp regex("^color-([^-]+)-(fill|stroke)$");
static QRegularExpression regex("^color-([^-]+)-(fill|stroke)$");
QByteArray attributes;
for (const auto &classValue : readerAttributes.value("class").toLatin1().split(' ')) {
regex.indexIn(classValue.trimmed());
if (Q_LIKELY(regex.pos() == -1))
QRegularExpressionMatch match = regex.match(classValue.trimmed());
if (!match.hasMatch())
continue;
const QStringList list = regex.capturedTexts();
const QStringList list = match.capturedTexts();
const QVariant colorValue = colors->getQmlData()->value(list[1]);
if (Q_UNLIKELY(!colorValue.isValid())) {
@ -81,17 +82,17 @@ static QByteArray parseFillAndStroke (QXmlStreamAttributes &readerAttributes, co
}
static QByteArray parseStyle (QXmlStreamAttributes &readerAttributes, const ColorListModel *colors) {
static QRegExp regex("^color-([^-]+)-style-(fill|stroke)$");
static QRegularExpression regex("^color-([^-]+)-style-(fill|stroke)$");
QByteArray attribute;
QSet<QString> overrode;
for (const auto &classValue : readerAttributes.value("class").toLatin1().split(' ')) {
regex.indexIn(classValue.trimmed());
if (Q_LIKELY(regex.pos() == -1))
QRegularExpressionMatch match = regex.match(classValue.trimmed());
if( !match.hasMatch())
continue;
const QStringList list = regex.capturedTexts();
const QStringList list = match.capturedTexts();
overrode.insert(list[2]);
@ -243,9 +244,10 @@ ImageProvider::ImageProvider () : QQuickImageProvider(
) {}
// -----------------------------------------------------------------------------
// id = "path/image.svg?bg=#color1&fg=#color2"
QImage ImageProvider::requestImage (const QString &id, QSize *size, const QSize &requestedSize) {
ImageModel * model = App::getInstance()->getImageListModel()->getImageModel(id);
QStringList request = id.split('?');
ImageModel * model = App::getInstance()->getImageListModel()->getImageModel(request[0]);
if(!model)
return QImage();
const QString path = model->getPath();
@ -300,12 +302,29 @@ QImage ImageProvider::requestImage (const QString &id, QSize *size, const QSize
.arg(path);
return QImage(); // Memory cannot be allocated.
}
image.fill(Qt::transparent);// Fill with transparent to set alpha channel
QColor backgroundColor("transparent");
QColor foregroundColor;
if(request.size() > 1){
QStringList parameters = request[1].split('&');
for(int i = 0 ; i < parameters.size() ;++i){
QStringList fields = parameters[i].split('=');
if(fields.size() > 1){
if(fields[0] == "bg")
backgroundColor = QColor(fields[1]);
else if(fields[0] == "fg")
foregroundColor = QColor(fields[1]);
}
}
}
image.fill(backgroundColor);// Fill with transparent to set alpha channel
*size = image.size();
// 4. Paint!
// 5. Paint!
QPainter painter(&image);
if(foregroundColor.isValid())
painter.setPen(foregroundColor);
renderer.render(&painter);
// qDebug() << QStringLiteral("Image `%1` loaded in %2 milliseconds.").arg(path).arg(timer.elapsed());

View file

@ -504,7 +504,7 @@ void CallModel::handleCallStateChanged (const shared_ptr<linphone::Call> &call,
break;
case linphone::Call::State::UpdatedByRemote:
qDebug() << "UpdatedByRemote : " << (mCall ? QString( "Video enabled ? CurrentParams:") + mCall->getCurrentParams()->videoEnabled() + QString(", RemoteParams:")+mCall->getRemoteParams()->videoEnabled() : " call NULL");
qDebug() << "UpdatedByRemote : " << (mCall ? QString( "Video enabled ? CurrentParams:") + QString::number(mCall->getCurrentParams()->videoEnabled()) + QString(", RemoteParams:")+QString::number(mCall->getRemoteParams()->videoEnabled()) : " call NULL");
if (mCall && !mCall->getCurrentParams()->videoEnabled() && mCall->getRemoteParams()->videoEnabled()) {
mCall->deferUpdate();
emit videoRequested();

View file

@ -28,12 +28,14 @@
#include "utils/LinphoneEnums.hpp"
#include "components/conference/ConferenceModel.hpp"
#include "components/conferenceInfo/ConferenceInfoModel.hpp"
#include "components/contact/ContactModel.hpp"
#include "components/chat-room/ChatRoomModel.hpp"
// =============================================================================
class CallListener;
class ConferenceInfoModel;
class ConferenceModel;
class ContactModel;
class ChatRoomModel;
class CallModel : public QObject {
Q_OBJECT

View file

@ -28,14 +28,15 @@
#include <QMutex>
#include <QTimer>
#include "components/call/CallModel.hpp"
#include "components/participant/ParticipantDeviceModel.hpp"
// =============================================================================
namespace linphone {
class Call;
}
class CallModel;
class ParticipantDeviceModel;
// -----------------------------------------------------------------------------
class Camera : public QQuickFramebufferObject {

View file

@ -21,6 +21,8 @@
#ifndef CHAT_EVENT_H
#define CHAT_EVENT_H
#include <QObject>
#include <QDateTime>
#include "components/chat-room/ChatRoomModel.hpp"
// =============================================================================

View file

@ -50,7 +50,6 @@
#include "components/participant-imdn/ParticipantImdnStateProxyModel.hpp"
#include "components/settings/AccountSettingsModel.hpp"
#include "components/settings/SettingsModel.hpp"
#include "utils/QExifImageHeader.hpp"
#include "utils/Utils.hpp"
#include "utils/Constants.hpp"

View file

@ -63,7 +63,6 @@
#include "components/timeline/TimelineModel.hpp"
#include "components/timeline/TimelineListModel.hpp"
#include "components/core/event-count-notifier/AbstractEventCountNotifier.hpp"
#include "utils/QExifImageHeader.hpp"
#include "utils/Utils.hpp"
#include "utils/Constants.hpp"
#include "utils/LinphoneEnums.hpp"

View file

@ -25,19 +25,24 @@
#include "app/proxyModel/ProxyListModel.hpp"
#include <QDateTime>
//#include "components/chat-events/ChatMessageModel.hpp"
// =============================================================================
// Fetch all N messages of a ChatRoom.
// =============================================================================
class CoreHandlers;
class ParticipantModel;
class ParticipantListModel;
class ChatEvent;
class ContactModel;
class ChatRoomModel;
class ChatMessageModel;
Q_DECLARE_OPAQUE_POINTER(ChatMessageModel*)
class ChatNoticeModel;
class ChatRoomListener;
class ParticipantListModel;
Q_DECLARE_OPAQUE_POINTER(ParticipantListModel*)
//#include "components/participant/ParticipantListModel.hpp"
class ChatRoomModel : public ProxyListModel {
@ -309,6 +314,6 @@ private:
QWeakPointer<ChatRoomModel> mSelf;
};
Q_DECLARE_METATYPE(QSharedPointer<ChatRoomModel>)
//Q_DECLARE_METATYPE(QSharedPointer<ChatRoomModel>)
#endif // CHAT_ROOM_MODEL_H_

View file

@ -31,7 +31,6 @@
#include "components/chat-events/ChatMessageModel.hpp"
#include "utils/QExifImageHeader.hpp"
#include "utils/Utils.hpp"
#include "utils/Constants.hpp"
#include "components/Components.hpp"

View file

@ -31,7 +31,6 @@
#include "app/providers/ThumbnailProvider.hpp"
#include "utils/QExifImageHeader.hpp"
#include "utils/Utils.hpp"
#include "utils/Constants.hpp"
#include "components/Components.hpp"

View file

@ -60,7 +60,6 @@
#include "components/timeline/TimelineModel.hpp"
#include "components/timeline/TimelineListModel.hpp"
#include "components/core/event-count-notifier/AbstractEventCountNotifier.hpp"
#include "utils/QExifImageHeader.hpp"
#include "utils/Utils.hpp"
#include "utils/Constants.hpp"
#include "utils/LinphoneEnums.hpp"

View file

@ -27,11 +27,11 @@
#include <QSharedPointer>
#include <QTimeZone>
#include "components/other/timeZone/TimeZoneModel.hpp"
#include "utils/LinphoneEnums.hpp"
class ParticipantListModel;
class ConferenceScheduler;
class TimeZoneModel;
class ConferenceInfoModel : public QObject {
Q_OBJECT

View file

@ -28,6 +28,7 @@
// =============================================================================
class VcardModel;
Q_DECLARE_OPAQUE_POINTER(VcardModel*)
class ContactModel : public QObject {
// Grant access to `mLinphoneFriend`.

View file

@ -113,7 +113,8 @@ private:
std::shared_ptr<linphone::Vcard> mVcard;
};
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
Q_DECLARE_METATYPE(VcardModel *);
#endif
#endif // VCARD_MODEL_H_

View file

@ -28,6 +28,8 @@
#include "ContactsListModel.hpp"
#include "ContactsListProxyModel.hpp"
#include <QRegularExpression>
// =============================================================================
using namespace std;
@ -52,7 +54,7 @@ namespace {
// a separator like ` word`.
//
// - [_.-;@ ] is the main pattern (a separator).
const QRegExp ContactsListProxyModel::SearchSeparators("^[^_.-;@ ][_.-;@ ]");
const QRegularExpression ContactsListProxyModel::SearchSeparators("^[^_.-;@ ][_.-;@ ]");
// -----------------------------------------------------------------------------

View file

@ -63,7 +63,7 @@ private:
// and reused by `lessThan`.
mutable QHash<const ContactModel *, unsigned int> mWeights;
static const QRegExp SearchSeparators;
static const QRegularExpression SearchSeparators;
};
#endif // CONTACTS_LIST_PROXY_MODEL_H_

View file

@ -78,7 +78,7 @@ void FileDownloader::download () {
setDownloading(true);
QNetworkRequest request(mUrl);
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy);
mNetworkReply = mManager.get(request);
QNetworkReply *data = mNetworkReply.data();

View file

@ -38,7 +38,6 @@
#include "components/core/CoreManager.hpp"
#include "components/notifier/Notifier.hpp"
#include "components/settings/SettingsModel.hpp"
#include "utils/QExifImageHeader.hpp"
#include "utils/Utils.hpp"
#include "HistoryModel.hpp"
@ -231,7 +230,7 @@ void HistoryModel::insertCall (const shared_ptr<linphone::CallLog> &callLog) {
const QList<HistoryEntryData>::iterator *start = nullptr
) {
auto it = lower_bound(start ? *start : mEntries.begin(), mEntries.end(), entry, [](const HistoryEntryData &a, const HistoryEntryData &b) {
return a.first["timestamp"] < b.first["timestamp"];
return a.first["timestamp"].toDateTime() < b.first["timestamp"].toDateTime();
});
int row = int(distance(mEntries.begin(), it));

View file

@ -144,6 +144,8 @@ private:
std::shared_ptr<linphone::Account> mSelectedAccount;
};
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
Q_DECLARE_METATYPE(std::shared_ptr<linphone::Account>);
#endif
#endif // ACCOUNT_SETTINGS_MODEL_H_

View file

@ -25,6 +25,8 @@
#include "SipAddressesModel.hpp"
#include "SipAddressesProxyModel.hpp"
#include <QRegularExpression>
// =============================================================================
namespace {
@ -35,7 +37,7 @@ namespace {
constexpr int WeightPosOther = 1;
}
const QRegExp SipAddressesProxyModel::SearchSeparators("^[^_.-;@ ][_.-;@ ]");
const QRegularExpression SipAddressesProxyModel::SearchSeparators("^[^_.-;@ ][_.-;@ ]");
// -----------------------------------------------------------------------------

View file

@ -43,7 +43,7 @@ private:
QString mFilter;
static const QRegExp SearchSeparators;
static const QRegularExpression SearchSeparators;
};
#endif // SIP_ADDRESSES_PROXY_MODEL_H_

View file

@ -26,6 +26,8 @@
#include "../search/SearchResultModel.hpp"
#include <QRegularExpression>
// =============================================================================
namespace {
@ -36,7 +38,7 @@ namespace {
constexpr int WeightPosOther = 1;
}
const QRegExp SipAddressesSorter::SearchSeparators("^[^_.-;@ ][_.-;@ ]");
const QRegularExpression SipAddressesSorter::SearchSeparators("^[^_.-;@ ][_.-;@ ]");
// -----------------------------------------------------------------------------

View file

@ -40,7 +40,7 @@ private:
static int computeEntryWeight (const QString& filter, const SearchResultModel *entry);
static int computeStringWeight (const QString& filter, const QString &string);
static const QRegExp SearchSeparators;
static const QRegularExpression SearchSeparators;
};
#endif

View file

@ -227,14 +227,22 @@ const QList<QPair<QLocale::Country, QString>> TelephoneNumbersModel::mCountryCod
{ QLocale::Tanzania, "255" },
{ QLocale::Thailand, "66" },
{ QLocale::Togo, "228" },
#if QT_VERSION < QT_VERSION_CHECK(6, 2, 0)
{ QLocale::Tokelau, "690" },
#else
{ QLocale::TokelauTerritory, "690" },
#endif
{ QLocale::Tonga, "676" },
{ QLocale::TrinidadAndTobago, "1" },
{ QLocale::Tunisia, "216" },
{ QLocale::Turkey, "90" },
{ QLocale::Turkmenistan, "993" },
{ QLocale::TurksAndCaicosIslands, "1" },
#if QT_VERSION < QT_VERSION_CHECK(6, 2, 0)
{ QLocale::Tuvalu, "688" },
#else
{ QLocale::TuvaluTerritory, "688" },
#endif
{ QLocale::Uganda, "256" },
{ QLocale::Ukraine, "380" },
{ QLocale::UnitedArabEmirates, "971" },

View file

@ -47,7 +47,13 @@
#include <QBuffer>
#include <QDateTime>
#include <QtDebug>
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
#include <QTextCodec>
#else
#include <QStringDecoder>
#include <QStringEncoder>
#endif
#include "Utils.hpp"
@ -275,16 +281,26 @@ QExifValue::QExifValue (const QString &value, TextEncoding encoding)
case AsciiEncoding:
d = new QExifUndefinedValuePrivate(QByteArray::fromRawData("ASCII\0\0\0", 8) + value.toUtf8());
break;
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
// This is a regression.
case JisEncoding: {
QTextCodec *codec = QTextCodec::codecForName("JIS X 0208");
if (codec)
d = new QExifUndefinedValuePrivate(QByteArray::fromRawData("JIS\0\0\0\0\0", 8) + codec->fromUnicode(value));
}
break;
#endif
case UnicodeEncoding: {
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QTextCodec *codec = QTextCodec::codecForName("UTF-16");
if (codec)
d = new QExifUndefinedValuePrivate(QByteArray::fromRawData("UNICODE\0", 8) + codec->fromUnicode(value));
#else
auto fromUnicode = QStringEncoder(QStringEncoder::Utf16);
d = new QExifUndefinedValuePrivate(QByteArray::fromRawData("UNICODE\0", 8) + fromUnicode(value));
#endif
}
break;
case UndefinedEncoding:
@ -482,16 +498,24 @@ QString QExifValue::toString () const {
switch (encoding()) {
case AsciiEncoding:
return QString::fromUtf8(string.constData(), string.length());
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
// This is a regression on Qt6
case JisEncoding: {
QTextCodec *codec = QTextCodec::codecForName("JIS X 0208");
if (codec)
return codec->toUnicode(string);
} break;
#endif
case UnicodeEncoding: {
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QTextCodec *codec = QTextCodec::codecForName("UTF-16");
if (codec)
return codec->toUnicode(string);
return QString::fromLocal8Bit(string.constData(), string.length());
#else
auto toUnicode = QStringDecoder(QStringDecoder::Utf16);
return toUnicode(string);
#endif
}
case UndefinedEncoding:
return QString::fromLocal8Bit(string.constData(), string.length());

View file

@ -431,14 +431,22 @@ QString Utils::getCountryName(const QLocale::Country& p_country)
case QLocale::Tanzania: if((countryName = QCoreApplication::translate("country", "Tanzania"))== "Tanzania") countryName = "";break;
case QLocale::Thailand: if((countryName = QCoreApplication::translate("country", "Thailand"))== "Thailand") countryName = "";break;
case QLocale::Togo: if((countryName = QCoreApplication::translate("country", "Togo"))== "Togo") countryName = "";break;
#if QT_VERSION < QT_VERSION_CHECK(6, 2, 0)
case QLocale::Tokelau: if((countryName = QCoreApplication::translate("country", "Tokelau"))== "Tokelau") countryName = "";break;
#else
case QLocale::TokelauTerritory: if((countryName = QCoreApplication::translate("country", "Tokelau"))== "Tokelau") countryName = "";break;
#endif
case QLocale::Tonga: if((countryName = QCoreApplication::translate("country", "Tonga"))== "Tonga") countryName = "";break;
case QLocale::TrinidadAndTobago: if((countryName = QCoreApplication::translate("country", "TrinidadAndTobago"))== "TrinidadAndTobago") countryName = "";break;
case QLocale::Tunisia: if((countryName = QCoreApplication::translate("country", "Tunisia"))== "Tunisia") countryName = "";break;
case QLocale::Turkey: if((countryName = QCoreApplication::translate("country", "Turkey"))== "Turkey") countryName = "";break;
case QLocale::Turkmenistan: if((countryName = QCoreApplication::translate("country", "Turkmenistan"))== "Turkmenistan") countryName = "";break;
case QLocale::TurksAndCaicosIslands: if((countryName = QCoreApplication::translate("country", "TurksAndCaicosIslands"))== "TurksAndCaicosIslands") countryName = "";break;
#if QT_VERSION < QT_VERSION_CHECK(6, 2, 0)
case QLocale::Tuvalu: if((countryName = QCoreApplication::translate("country", "Tuvalu"))== "Tuvalu") countryName = "";break;
#else
case QLocale::TuvaluTerritory: if((countryName = QCoreApplication::translate("country", "Tuvalu"))== "Tuvalu") countryName = "";break;
#endif
case QLocale::Uganda: if((countryName = QCoreApplication::translate("country", "Uganda"))== "Uganda") countryName = "";break;
case QLocale::Ukraine: if((countryName = QCoreApplication::translate("country", "Ukraine"))== "Ukraine") countryName = "";break;
case QLocale::UnitedArabEmirates: if((countryName = QCoreApplication::translate("country", "UnitedArabEmirates"))== "UnitedArabEmirates") countryName = "";break;

View file

@ -13,7 +13,7 @@ PluginDataAPI::PluginDataAPI(LinphonePlugin * plugin, void* linphoneCore, QPlugi
QVariantMap defaultValues;
QJsonDocument doc = QJsonDocument::fromJson(mPlugin->getGUIDescriptionToJson().toUtf8());
QVariantMap description = doc.toVariant().toMap();
mPluginLoader->setLoadHints(0);
mPluginLoader->setLoadHints(QLibrary::ExportExternalSymbolsHint);
// First, get all fields where their target is ALL. It will be act as a "default field"
for(auto field : description["fields"].toList()){
auto details = field.toMap();

View file

@ -8,7 +8,7 @@ PluginNetworkHelper::~PluginNetworkHelper(){}
void PluginNetworkHelper::request(){ // Create QNetworkReply and make network requests
QNetworkRequest request(prepareRequest());
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy);
mNetworkReply = mManager.get(request);
#if QT_CONFIG(ssl)
@ -19,7 +19,12 @@ void PluginNetworkHelper::request(){ // Create QNetworkReply and make network re
QObject::connect(data, &QNetworkReply::readyRead, this, &PluginNetworkHelper::handleReadyData);
QObject::connect(data, &QNetworkReply::finished, this, &PluginNetworkHelper::handleFinished);
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
QObject::connect(data, QNonConstOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error), this, &PluginNetworkHelper::handleError);
#else
QObject::connect(data, &QNetworkReply::errorOccurred, this, &PluginNetworkHelper::handleError);
#endif
#if QT_CONFIG(ssl)
QObject::connect(data, &QNetworkReply::sslErrors, this, &PluginNetworkHelper::handleSslErrors);

View file

@ -56,7 +56,7 @@ QPluginLoader * PluginsManager::getPlugin(const QString &pluginIdentity){
for(int i = 0 ; i < pluginPaths.size() ; ++i) {
QString pluginPath = pluginPaths[i] +gPluginsMap[pluginIdentity];
QPluginLoader * loader = new QPluginLoader(pluginPath);
loader->setLoadHints(0); // this force Qt to unload the plugin from memory when we request it. Be carefull by not having a plugin instance or data created inside the plugin after the unload.
loader->setLoadHints(QLibrary::ExportExternalSymbolsHint); // this force Qt to unload the plugin from memory when we request it. Be carefull by not having a plugin instance or data created inside the plugin after the unload.
if( auto instance = loader->instance()) {
auto plugin = qobject_cast< LinphonePlugin* >(instance);
if (plugin )
@ -80,7 +80,7 @@ void * PluginsManager::createInstance(const QString &pluginIdentity){
for(int i = 0 ; i < pluginPaths.size() ; ++i) {
QString pluginPath = pluginPaths[i] +gPluginsMap[pluginIdentity];
QPluginLoader * loader = new QPluginLoader(pluginPath);
loader->setLoadHints(0); // this force Qt to unload the plugin from memory when we request it. Be carefull by not having a plugin instance or data created inside the plugin after the unload.
loader->setLoadHints(QLibrary::ExportExternalSymbolsHint); // this force Qt to unload the plugin from memory when we request it. Be carefull by not having a plugin instance or data created inside the plugin after the unload.
if( auto instance = loader->instance()) {
plugin = qobject_cast< LinphonePlugin* >(instance);
if (plugin) {
@ -141,7 +141,7 @@ void PluginsManager::openNewPlugin(const QString &pTitle){
QMessageBox::information(nullptr, pTitle, "The file is not a plugin");
}else{
QPluginLoader loader(fileName);
loader.setLoadHints(0);
loader.setLoadHints(QLibrary::ExportExternalSymbolsHint);
QJsonObject metaData = loader.metaData()["MetaData"].toObject();
if( metaData.contains("ID") && metaData.contains("Capabilities")){
capabilities = metaData["Capabilities"].toString().toUpper().remove(' ').split(",");
@ -209,7 +209,7 @@ QVariantList PluginsManager::getPlugins(const int& capabilities) {
for(int i = 0 ; i < pluginFiles.size() ; ++i) {
if( QLibrary::isLibrary(pluginPath+pluginFiles[i])){
QPluginLoader loader(pluginPath+pluginFiles[i]);
loader.setLoadHints(0); // this force Qt to unload the plugin from memory when we request it. Be carefull by not having a plugin instance or data created inside the plugin after the unload.
loader.setLoadHints(QLibrary::ExportExternalSymbolsHint); // this force Qt to unload the plugin from memory when we request it. Be carefull by not having a plugin instance or data created inside the plugin after the unload.
if (auto instance = loader.instance()) {
LinphonePlugin * plugin = qobject_cast< LinphonePlugin* >(instance);
if ( plugin){
@ -247,7 +247,9 @@ QVariantList PluginsManager::getPlugins(const int& capabilities) {
}
}
}
std::sort(plugins.begin(), plugins.end());
std::sort(plugins.begin(), plugins.end(), [](const QVariant& a, const QVariant& b)-> bool{
return a.toMap().value("pluginTitle").toString() < b.toMap().value("pluginTitle").toString();
});
}
return plugins;
}

View file

@ -1,7 +1,7 @@
import QtQuick 2.7
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
//import QtGraphicalEffects 1.12
import Common 1.0
@ -284,7 +284,7 @@ Item {
iconWidth: wrappedButton.iconWidth
visible: !iconIsCustom
}
/*
OpacityMask{
anchors.fill: icon
source: foregroundColor
@ -297,8 +297,8 @@ Item {
acceptedButtons: Qt.NoButton
cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor
}
}
}*/
/*
OpacityMask{
id: mask
anchors.fill: icon
@ -306,20 +306,14 @@ Item {
maskSource: icon
visible: iconIsCustom && percentageDisplayed != 100
/*
layer {
enabled: true
effect: ColorOverlay {
color: "#80FFFFFF"
}
}*/
MouseArea{
anchors.fill:parent
hoverEnabled: true
acceptedButtons: Qt.NoButton
cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor
}
}
}*/
TooltipArea {
id:tooltip
text: ''

View file

@ -1,5 +1,5 @@
import QtQuick 2.7
import QtQuick.Dialogs 1.2
import QtQuick.Dialogs
import Common 1.0
import Common.Styles 1.0
@ -12,8 +12,11 @@ TextField {
// ---------------------------------------------------------------------------
property alias selectExisting: fileDialog.selectExisting
property alias selectFolder: fileDialog.selectFolder
//property alias selectExisting: fileDialog.selectExisting
//property alias selectFolder: fileDialog.selectFolder
property bool selectExisting: false
property bool selectFolder: false
property alias title: fileDialog.title
property string selectedFile: ''
@ -61,7 +64,7 @@ TextField {
FileDialog {
id: fileDialog
/*
folder: {
var selectedFile = textField.selectedFile
@ -74,7 +77,7 @@ TextField {
? selectedFile
: Utils.dirname(selectedFile)
)
}
}*/
onAccepted: {
var selectedFile = Utils.getSystemPathFromUri(fileUrl)

View file

@ -1,6 +1,6 @@
import QtQuick 2.7
import QtQuick.Controls 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Dialogs
import QtQuick.Layouts 1.12
import Common 1.0
@ -81,7 +81,7 @@ Item {
FileDialog {
id: fileDialog
folder: shortcuts.home
//folder: shortcuts.home
title: qsTr('fileChooserTitle')
onAccepted: {_emitFiles(fileDialog.fileUrls);fileDialogLoader.active = false}

View file

@ -1,4 +1,4 @@
import QtQuick 2.7
import QtQuick
import Common.Styles 1.0
@ -38,8 +38,7 @@ Item {
TextField {
id: textField
validator: RegExpValidator {
regExp: /[0-9A-Fa-f]*/
validator: RegularExpressionValidator { regularExpression: /[0-9A-Fa-f]*/
}
width: parent.width

View file

@ -1,4 +1,4 @@
import QtQuick 2.7
import QtQuick
import Common.Styles 1.0
import Utils 1.0
@ -60,12 +60,9 @@ Item {
TextField {
id: textField
validator: RegExpValidator {
regExp: wrapper.supportsRange
validator: RegularExpressionValidator { regularExpression: wrapper.supportsRange
? Utils.PORT_RANGE_REGEX
: Utils.PORT_REGEX
}
: Utils.PORT_REGEX }
width: parent.width

View file

@ -1,7 +1,7 @@
import QtQuick 2.12
import QtQuick.Layouts 1.3
import QtQml.Models 2.12
import QtGraphicalEffects 1.12
//import QtGraphicalEffects 1.12
import QtQuick.Controls 2.12 as Control
import Common 1.0

View file

@ -1,5 +1,5 @@
import QtQuick 2.7
import QtGraphicalEffects 1.12
//import QtGraphicalEffects 1.12
import Common 1.0
import Linphone 1.0
@ -45,6 +45,7 @@ Item {
fillMode: !qtIsNewer_5_15_0 ? Image.PreserveAspectFit : Image.Stretch // Stretch is default from Qt's doc
// Keep aspect ratio is done by ImagePovider that use directly SVG scalings (=no loss quality).
source: width != 0 && height != 0 ? Utils.resolveImageUri(icon) : '' // Do not load image with unknown requested size
+(colorOverwriteEnabled ? 'fg='+mainItem.overwriteColor : '')
sourceSize.width: qtIsNewer_5_15_0
? fillMode == Image.TileHorizontally
? height
@ -55,12 +56,12 @@ Item {
? width
: height
: 0
/*
layer {
enabled: image.colorOverwriteEnabled
effect: ColorOverlay {
color: mainItem.overwriteColor
}
}
}*/
}
}

View file

@ -1,5 +1,5 @@
import QtQuick 2.7
import QtGraphicalEffects 1.0
//import QtGraphicalEffects 1.0
import Linphone 1.0
@ -27,9 +27,10 @@ Item {
sourceSize.width: parent.width
sourceSize.height: parent.height
layer.enabled: true
/*
layer.effect: OpacityMask {
maskSource: backgroundArea
}
}*/
}
Rectangle {
id: foregroundArea

View file

@ -1,7 +1,6 @@
import QtQuick 2.7
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
import Common 1.0
import Linphone 1.0

View file

@ -1,9 +1,11 @@
import QtGraphicalEffects 1.0
//import QtGraphicalEffects 1.0
import QtQuick 2.0
import Common.Styles 1.0
// =============================================================================
Item{
}
/*
DropShadow {
color: PopupStyle.shadow.color
horizontalOffset: PopupStyle.shadow.horizontalOffset
@ -11,3 +13,4 @@ DropShadow {
samples: PopupStyle.shadow.samples
verticalOffset: PopupStyle.shadow.verticalOffset
}
*/

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0
// =============================================================================

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
// TextButtonAStyle (Grey)
import ColorsList 1.0

View file

@ -1,5 +1,6 @@
// TextButtonBStyle (Primary)
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0
// =============================================================================

View file

@ -1,5 +1,6 @@
// TextButtonCStyle (Green)
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0
// =============================================================================

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,7 +1,6 @@
pragma Singleton
import QtQml 2.2
import ColorsList 1.0
// =============================================================================

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import ColorsList 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import Units 1.0
import ColorsList 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import ColorsList 1.0
// =============================================================================

View file

@ -1,4 +1,5 @@
pragma Singleton
import QtQuick 2.15
import QtQml 2.2
import Units 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import Units 1.0
import ColorsList 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import ColorsList 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import Units 1.0
import ColorsList 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import ColorsList 1.0

View file

@ -1,6 +1,6 @@
import QtQuick 2.7 as Core
import QtQuick.Controls 2.2 as Core
import QtGraphicalEffects 1.12
//import QtGraphicalEffects 1.12
import Common 1.0
import Linphone 1.0
@ -110,10 +110,10 @@ Core.ToolTip {
sourceSize.height: height
sourceSize.width: width
layer {
enabled: true
enabled: true/*
effect: ColorOverlay {
color: TooltipStyle.backgroundColor
}
}*/
}
visible: tooltip.visible && _edge
width: TooltipStyle.arrowSize

View file

@ -1,6 +1,5 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
import App.Styles 1.0
import Common 1.0

View file

@ -1,6 +1,6 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
//import QtGraphicalEffects 1.12
import App.Styles 1.0
import Common 1.0
@ -31,7 +31,7 @@ Item{
MouseArea{
anchors.fill: parent
onClicked: camera.resetActive()
}
}/*
RectangularGlow {
id: effect
anchors.fill: backgroundArea
@ -40,7 +40,7 @@ Item{
color: CameraViewStyle.border.color
cornerRadius: backgroundArea.radius + glowRadius
visible: mainItem.showActiveSpeakerOverlay && mainItem.currentDevice && mainItem.currentDevice.isSpeaking
}
}*/
Rectangle {
id: backgroundArea
color: mainItem.color
@ -80,6 +80,7 @@ Item{
visible: false
onVideoDefinitionChanged: mainItem.videoDefinitionChanged()
}
/*
OpacityMask{
id: renderedCamera
anchors.fill: parent
@ -88,24 +89,24 @@ Item{
invert:false
visible: true
/* In case we need transformations.
property Matrix4x4 mirroredRotationMatrix : Matrix4x4 {// 180 rotation + mirror
matrix: Qt.matrix4x4(-Math.cos(Math.PI), -Math.sin(Math.PI), 0, 0,
Math.sin(Math.PI), Math.cos(Math.PI), 0, camera.height,
0, 0, 1, 0,
0, 0, 0, 1)
}
property Matrix4x4 rotationMatrix : Matrix4x4 {// 180 rotation only
matrix: Qt.matrix4x4(Math.cos(Math.PI), -Math.sin(Math.PI), 0, camera.width,
Math.sin(Math.PI), Math.cos(Math.PI), 0, camera.height,
0, 0, 1, 0,
0, 0, 0, 1)
}
//transform: ( camera.isPreview ? mirroredRotationMatrix : rotationMatrix)
*/
// In case we need transformations.
// property Matrix4x4 mirroredRotationMatrix : Matrix4x4 {// 180 rotation + mirror
// matrix: Qt.matrix4x4(-Math.cos(Math.PI), -Math.sin(Math.PI), 0, 0,
// Math.sin(Math.PI), Math.cos(Math.PI), 0, camera.height,
// 0, 0, 1, 0,
// 0, 0, 0, 1)
// }
// property Matrix4x4 rotationMatrix : Matrix4x4 {// 180 rotation only
// matrix: Qt.matrix4x4(Math.cos(Math.PI), -Math.sin(Math.PI), 0, camera.width,
// Math.sin(Math.PI), Math.cos(Math.PI), 0, camera.height,
// 0, 0, 1, 0,
// 0, 0, 0, 1)
// }
//
// //transform: ( camera.isPreview ? mirroredRotationMatrix : rotationMatrix)
}
*/
Rectangle{
id: hideView
anchors.fill: parent
@ -140,6 +141,7 @@ Item{
font.weight: CameraViewStyle.contactDescription.weight
color: CameraViewStyle.contactDescription.color
}
/*
Glow {
anchors.fill: username
//spread: 1
@ -148,6 +150,7 @@ Item{
color: "#80000000"
source: username
}
*/
ActionButton{
visible: mainItem.showCloseButton && camera.isPreview && mainItem.callModel && mainItem.callModel.videoEnabled
anchors.right: parent.right

View file

@ -1,6 +1,5 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
import Linphone 1.0
import Linphone.Styles 1.0

View file

@ -1,7 +1,6 @@
import QtQuick 2.12
import QtQuick.Layouts 1.3
import QtQml.Models 2.12
import QtGraphicalEffects 1.12
import QtQuick.Controls 2.12
import Common 1.0
import Common.Styles 1.0

View file

@ -1,6 +1,5 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
import App.Styles 1.0
import Common 1.0

View file

@ -1,6 +1,6 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
//import QtGraphicalEffects 1.12
import App.Styles 1.0
import Common 1.0
@ -70,6 +70,7 @@ DecorationSticker{
visible: false
onVideoDefinitionChanged: mainItem.videoDefinitionChanged()
}
/*
OpacityMask{
id: renderedCamera
anchors.fill: parent
@ -78,22 +79,22 @@ DecorationSticker{
invert:false
visible: true
/* In case we need transformations.
property Matrix4x4 mirroredRotationMatrix : Matrix4x4 {// 180 rotation + mirror
matrix: Qt.matrix4x4(-Math.cos(Math.PI), -Math.sin(Math.PI), 0, 0,
Math.sin(Math.PI), Math.cos(Math.PI), 0, camera.height,
0, 0, 1, 0,
0, 0, 0, 1)
}
property Matrix4x4 rotationMatrix : Matrix4x4 {// 180 rotation only
matrix: Qt.matrix4x4(Math.cos(Math.PI), -Math.sin(Math.PI), 0, camera.width,
Math.sin(Math.PI), Math.cos(Math.PI), 0, camera.height,
0, 0, 1, 0,
0, 0, 0, 1)
}
//transform: ( camera.isPreview ? mirroredRotationMatrix : rotationMatrix)
*/
// In case we need transformations.
// property Matrix4x4 mirroredRotationMatrix : Matrix4x4 {// 180 rotation + mirror
// matrix: Qt.matrix4x4(-Math.cos(Math.PI), -Math.sin(Math.PI), 0, 0,
// Math.sin(Math.PI), Math.cos(Math.PI), 0, camera.height,
// 0, 0, 1, 0,
// 0, 0, 0, 1)
// }
// property Matrix4x4 rotationMatrix : Matrix4x4 {// 180 rotation only
// matrix: Qt.matrix4x4(Math.cos(Math.PI), -Math.sin(Math.PI), 0, camera.width,
// Math.sin(Math.PI), Math.cos(Math.PI), 0, camera.height,
// 0, 0, 1, 0,
// 0, 0, 0, 1)
// }
//
// //transform: ( camera.isPreview ? mirroredRotationMatrix : rotationMatrix)
}
*/
}
}

View file

@ -1,6 +1,6 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
//import QtGraphicalEffects 1.12
import App.Styles 1.0
import Common 1.0
@ -18,7 +18,8 @@ import 'qrc:/ui/scripts/Utils/utils.js' as Utils
Item{
id: mainItem
default property alias _content: content.data
property alias speakingOverlayDisplayed: effect.visible
//property alias speakingOverlayDisplayed: effect.visible
property bool speakingOverlayDisplayed: false
property string username: mainItem._currentDevice ? mainItem._currentDevice.displayName : ''
property bool showUsername: true
@ -43,6 +44,7 @@ Item{
anchors.fill: parent
onClicked: mainItem.backgroundClicked()
}
/*
RectangularGlow {
id: effect
anchors.fill: content
@ -51,7 +53,7 @@ Item{
color: DecorationStickerStyle.border.color
cornerRadius: (mainItem.radius? mainItem.radius : 0) + glowRadius
visible: mainItem._showActiveSpeakerOverlay && mainItem._currentDevice && mainItem._currentDevice.isSpeaking
}
}*/
Item{
id: content
anchors.fill: parent
@ -92,6 +94,7 @@ Item{
font.weight: DecorationStickerStyle.contactDescription.weight
color: DecorationStickerStyle.contactDescription.color
}
/*
Glow {
anchors.fill: usernameItem
visible: usernameItem.visible
@ -100,7 +103,7 @@ Item{
samples: 25
color: "#80000000"
source: usernameItem
}
}*/
ActionButton{
visible: mainItem._showCloseButton && mainItem._isPreview && mainItem._callModel && mainItem._callModel.videoEnabled
anchors.right: parent.right

View file

@ -1,6 +1,5 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
import App.Styles 1.0
import Common 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import Units 1.0
import ColorsList 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import Units 1.0
import ColorsList 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import Units 1.0
import ColorsList 1.0

View file

@ -1,5 +1,6 @@
pragma Singleton
import QtQml 2.2
import QtQuick 2.15
import ColorsList 1.0

Some files were not shown because too many files have changed in this diff Show more