diff --git a/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml b/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml index a3f48ca63..e9f810fdb 100644 --- a/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml +++ b/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml @@ -10,6 +10,7 @@ job-archlinux-latest-ninja-clang: - schedules variables: CMAKE_GENERATOR: Ninja + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: clang CXX: clang++ extends: .job-linux-desktop @@ -27,6 +28,7 @@ job-archlinux-latest-makefile-gcc: - $NIGHTLY_MASTER variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ extends: .job-linux-desktop @@ -41,6 +43,7 @@ job-archlinux-latest-makefile-clang: - $NIGHTLY_MASTER variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: clang CXX: clang++ extends: .job-linux-desktop @@ -55,6 +58,7 @@ job-archlinux-latest-ninja-gcc: - $NIGHTLY_MASTER variables: CMAKE_GENERATOR: Ninja + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ extends: .job-linux-desktop @@ -77,7 +81,7 @@ job-archlinux-latest-ninja-clang-novideo: variables: - $NIGHTLY_MASTER variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF CMAKE_GENERATOR: Ninja CC: clang CXX: clang++ diff --git a/.gitlab-ci-files/job-linux-desktop-centos7.yml b/.gitlab-ci-files/job-linux-desktop-centos7.yml index 6f462d081..f81f11ae1 100644 --- a/.gitlab-ci-files/job-linux-desktop-centos7.yml +++ b/.gitlab-ci-files/job-linux-desktop-centos7.yml @@ -38,6 +38,7 @@ job-centos7-ninja-gcc: - schedules variables: CMAKE_GENERATOR: Ninja + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ extends: .job-linux-desktop @@ -73,7 +74,7 @@ job-centos7-ninja-gcc-package: variables: - $DEPLOY_LINUX_CENTOS7 variables: - CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON + CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON CMAKE_GENERATOR: Ninja CC: gcc CXX: g++ diff --git a/.gitlab-ci-files/job-linux-desktop-debian10.yml b/.gitlab-ci-files/job-linux-desktop-debian10.yml index 6e521c3f3..dc8a49cbd 100644 --- a/.gitlab-ci-files/job-linux-desktop-debian10.yml +++ b/.gitlab-ci-files/job-linux-desktop-debian10.yml @@ -7,6 +7,7 @@ job-debian10-ninja-gcc: - schedules variables: CMAKE_GENERATOR: Ninja + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ extends: .job-linux-desktop @@ -23,6 +24,7 @@ job-debian10-makefile-gcc: - $NIGHTLY_MASTER variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS @@ -36,7 +38,7 @@ job-debian10-ninja-gcc-novideo: variables: - $NIGHTLY_MASTER variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF CMAKE_GENERATOR: Ninja CC: gcc CXX: g++ @@ -50,7 +52,7 @@ job-debian10-ninja-gcc-smallsdk: variables: - $NIGHTLY_MASTER variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO -DENABLE_PQCRYPTO=OFF CMAKE_GENERATOR: Ninja CC: gcc CXX: g++ @@ -65,6 +67,7 @@ job-debian10-ninja-clang: image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION variables: CMAKE_GENERATOR: Ninja + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: clang CXX: clang++ extends: .job-linux-desktop @@ -87,6 +90,7 @@ job-debian10-makefile-clang: - $DEPLOY_LINUX variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: clang CXX: clang++ ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS @@ -105,7 +109,7 @@ job-debian10-makefile-clang-package: - $NIGHTLY_MASTER - $DEPLOY_LINUX variables: - CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON + CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON extends: job-debian10-makefile-clang artifacts: paths: diff --git a/.gitlab-ci-files/job-linux-desktop-debian8.yml b/.gitlab-ci-files/job-linux-desktop-debian8.yml index 31fdabc83..a4934cc69 100644 --- a/.gitlab-ci-files/job-linux-desktop-debian8.yml +++ b/.gitlab-ci-files/job-linux-desktop-debian8.yml @@ -10,6 +10,7 @@ job-debian8-makefile-gcc: - schedules variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS @@ -25,6 +26,7 @@ job-debian8-makefile-clang: - $NIGHTLY_MASTER variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: clang CXX: clang++ ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS diff --git a/.gitlab-ci-files/job-linux-desktop-debian9.yml b/.gitlab-ci-files/job-linux-desktop-debian9.yml index 9aee2fe69..a6355294e 100644 --- a/.gitlab-ci-files/job-linux-desktop-debian9.yml +++ b/.gitlab-ci-files/job-linux-desktop-debian9.yml @@ -8,6 +8,7 @@ job-debian9-ninja-gcc: - schedules variables: CMAKE_GENERATOR: Ninja + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ extends: .job-linux-desktop @@ -18,7 +19,7 @@ job-debian9-ninja-gcc-smallsdk: refs: - schedules variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO -DENABLE_PQCRYPTO=OFF extends: job-debian9-ninja-gcc @@ -34,6 +35,7 @@ job-debian9-makefile-gcc: - $NIGHTLY_MASTER variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS @@ -44,7 +46,7 @@ job-debian9-ninja-gcc-novideo: variables: - $NIGHTLY_MASTER variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF extends: job-debian9-ninja-gcc @@ -55,7 +57,7 @@ job-debian9-ninja-clang: - $NIGHTLY_MASTER image: gitlab.linphone.org:4567/bc/public/linphone-desktop/bc-dev-debian9-qt-fuse-wget-gpg2:$DEBIAN_9_QT_IMAGE_VERSION variables: - CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON + CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON CMAKE_GENERATOR: Ninja CC: clang CXX: clang++ @@ -66,7 +68,7 @@ job-debian9-ninja-clang-novideo: variables: - $NIGHTLY_MASTER variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF extends: job-debian9-ninja-clang job-debian9-makefile-clang: @@ -77,7 +79,7 @@ job-debian9-makefile-clang: - $NIGHTLY_MASTER - $DEPLOY_PLUGINS variables: - CMAKE_OPTIONS: -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON + CMAKE_OPTIONS: -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON CMAKE_GENERATOR: Unix Makefiles CC: clang CXX: clang++ @@ -118,7 +120,7 @@ job-debian9-makefile-clang-package: - $PACKAGE_LINUX - $DEPLOY_LINUX variables: - CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER + CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON CMAKE_GENERATOR: Unix Makefiles CC: clang CXX: clang++ diff --git a/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml b/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml index 202eacf3d..25304c964 100644 --- a/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml +++ b/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml @@ -7,6 +7,7 @@ job-ubuntu-rolling-ninja-clang: - schedules variables: CMAKE_GENERATOR: Ninja + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: clang CXX: clang++ extends: .job-linux-desktop @@ -26,6 +27,7 @@ job-ubuntu-rolling-makefile-gcc: - $NIGHTLY_MASTER variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS @@ -40,6 +42,7 @@ job-ubuntu-rolling-makefile-clang: - $NIGHTLY_MASTER variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: clang CXX: clang++ ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS @@ -54,6 +57,7 @@ job-ubuntu-rolling-ninja-gcc: - $NIGHTLY_MASTER variables: CMAKE_GENERATOR: Ninja + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CC: gcc CXX: g++ extends: .job-linux-desktop @@ -64,7 +68,7 @@ job-ubuntu-rolling-ninja-gcc-novideo: variables: - $NIGHTLY_MASTER variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF extends: job-ubuntu-rolling-ninja-gcc @@ -73,7 +77,7 @@ job-ubuntu-rolling-ninja-clang-novideo: variables: - $NIGHTLY_MASTER variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF extends: job-ubuntu-rolling-ninja-clang ################################################# diff --git a/.gitlab-ci-files/job-macosx-desktop.yml b/.gitlab-ci-files/job-macosx-desktop.yml index c660391fe..3328f9bc9 100644 --- a/.gitlab-ci-files/job-macosx-desktop.yml +++ b/.gitlab-ci-files/job-macosx-desktop.yml @@ -45,6 +45,7 @@ job-macosx-ninja: - schedules variables: CMAKE_GENERATOR: Ninja + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON extends: .job-macosx-desktop ################################################# @@ -58,6 +59,7 @@ job-macosx-makefile: - $DEPLOY_PLUGINS variables: CMAKE_GENERATOR: Unix Makefiles + CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS extends: .job-macosx-desktop @@ -66,7 +68,7 @@ job-macosx-ninja-novideo: variables: - $NIGHTLY_MASTER variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=ON CMAKE_GENERATOR: Ninja extends: .job-macosx-desktop diff --git a/.gitlab-ci-files/job-windows-desktop.yml b/.gitlab-ci-files/job-windows-desktop.yml index a970ca8da..48a393886 100644 --- a/.gitlab-ci-files/job-windows-desktop.yml +++ b/.gitlab-ci-files/job-windows-desktop.yml @@ -10,7 +10,7 @@ - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null - if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null variables: - CMAKE_OPTIONS: -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON + CMAKE_OPTIONS: -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON LINPHONESDK_PLATFORM: Desktop OUTPUT_ZIP_FOLDER: win64 MINGW_TYPE: mingw64 @@ -100,7 +100,7 @@ .windows-vs2019-msvc: extends: .windows-vs2019 variables: - CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON + CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON LINPHONESDK_PLATFORM: Desktop CMAKE_GENERATOR: "Visual Studio 16 2019" BUILD_TARGET: install @@ -156,7 +156,7 @@ vs2019-win64-package: - if: $PACKAGE_WINDOWS - if: $DEPLOY_WINDOWS variables: - CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER + CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON ################################################# diff --git a/linphone-app/assets/images/secure_pq_zrtp.svg b/linphone-app/assets/images/secure_pq_zrtp.svg index 59d4c0d3c..2a6671ed1 100644 --- a/linphone-app/assets/images/secure_pq_zrtp.svg +++ b/linphone-app/assets/images/secure_pq_zrtp.svg @@ -1,23 +1,21 @@ - - + id="defs14" /> - - - + inkscape:current-layer="svg10" /> + + + + diff --git a/linphone-app/src/components/call/CallModel.cpp b/linphone-app/src/components/call/CallModel.cpp index d1d72b37a..78e3c6778 100644 --- a/linphone-app/src/components/call/CallModel.cpp +++ b/linphone-app/src/components/call/CallModel.cpp @@ -1075,13 +1075,13 @@ QString CallModel::getRemoteSas () const { // ----------------------------------------------------------------------------- -QString CallModel::getSecuredString () const { +QString CallModel::getSecuredString (const shared_ptr &callStats) const { if(mCall){ switch (mCall->getCurrentParams()->getMediaEncryption()) { case linphone::MediaEncryption::SRTP: return QStringLiteral("SRTP"); case linphone::MediaEncryption::ZRTP: - return CoreManager::getInstance()->getCore()->getPostQuantumAvailable() + return (callStats && callStats->isZrtpKeyAgreementAlgoPostQuantum() || (!callStats && CoreManager::getInstance()->getCore()->getPostQuantumAvailable()) ) ? QStringLiteral("Post Quantum ZRTP") : QStringLiteral("ZRTP"); case linphone::MediaEncryption::DTLS: @@ -1196,7 +1196,7 @@ void CallModel::updateEncrypionStats (const shared_ptrgetCurrentParams()->getMediaEncryption() == linphone::MediaEncryption::ZRTP){ //: 'Cipher algorithm' : label in encryption section of call statistics statsList << createStat(tr("callStatsCipherAlgo"), Utils::coreStringToAppString(callStats->getZrtpCipherAlgo())); diff --git a/linphone-app/src/components/call/CallModel.hpp b/linphone-app/src/components/call/CallModel.hpp index 6fd95514b..2659a33a0 100644 --- a/linphone-app/src/components/call/CallModel.hpp +++ b/linphone-app/src/components/call/CallModel.hpp @@ -283,7 +283,7 @@ public: QString getLocalSas () const; QString getRemoteSas () const; - QString getSecuredString () const; + QString getSecuredString (const std::shared_ptr &callStats = nullptr) const; QVariantList getAudioStats () const; QVariantList getVideoStats () const; diff --git a/linphone-app/src/components/settings/SettingsModel.cpp b/linphone-app/src/components/settings/SettingsModel.cpp index 2a88cc1dd..83cbe6df4 100644 --- a/linphone-app/src/components/settings/SettingsModel.cpp +++ b/linphone-app/src/components/settings/SettingsModel.cpp @@ -955,7 +955,7 @@ QVariantList SettingsModel::getSupportedMediaEncryptions () const { if (core->mediaEncryptionSupported(linphone::MediaEncryption::ZRTP)){ if( core->getPostQuantumAvailable()) - list << buildEncryptionDescription(MediaEncryptionZrtp, "PQ-ZRTP"); + list << buildEncryptionDescription(MediaEncryptionZrtp, "Post Quantum ZRTP"); else list << buildEncryptionDescription(MediaEncryptionZrtp, "ZRTP"); } diff --git a/linphone-app/ui/views/App/Calls/Incall.qml b/linphone-app/ui/views/App/Calls/Incall.qml index 3842958e8..fb5cac116 100644 --- a/linphone-app/ui/views/App/Calls/Incall.qml +++ b/linphone-app/ui/views/App/Calls/Incall.qml @@ -403,9 +403,14 @@ Rectangle { height: IncallStyle.buttons.secure.buttonSize width: height isCustom: true + iconIsCustom: ! (callModel.isSecured && SettingsModel.isPostQuantumAvailable && callModel.encryption === CallModel.CallEncryptionZrtp) backgroundRadius: width/2 - colorSet: callModel.isSecured ? IncallStyle.buttons.secure : IncallStyle.buttons.unsecure + colorSet: callModel.isSecured + ? SettingsModel.isPostQuantumAvailable && callModel.encryption === CallModel.CallEncryptionZrtp + ? IncallStyle.buttons.postQuantumSecure + : IncallStyle.buttons.secure + : IncallStyle.buttons.unsecure onClicked: zrtp.visible = (callModel.encryption === CallModel.CallEncryptionZrtp) diff --git a/linphone-app/ui/views/App/Styles/Calls/IncallStyle.qml b/linphone-app/ui/views/App/Styles/Calls/IncallStyle.qml index 6d0ec6d7c..04564049d 100644 --- a/linphone-app/ui/views/App/Styles/Calls/IncallStyle.qml +++ b/linphone-app/ui/views/App/Styles/Calls/IncallStyle.qml @@ -275,6 +275,21 @@ QtObject { property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 's').color property color foregroundUpdatingColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_c', icon, 's').color } + property QtObject postQuantumSecure: QtObject { + property int buttonSize: 40 + property int iconSize: 20 + property string icon : 'secure_pq_zrtp' + property string name : 'secure_pq_zrtp' + + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, '', '', '#66727B').color + property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, '', '', '#66727B').color + property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, '', '', '#66727B').color + property color backgroundUpdatingColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_c', icon, '', '', '#66727B').color + property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 's').color + property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 's').color + property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 's').color + property color foregroundUpdatingColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_c', icon, 's').color + } property QtObject unsecure: QtObject { property int buttonSize: 40 property int iconSize: 20