From ae8b49ba1a10a09724a1ab654d3fd99f02c43af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20J=C3=B6rgensen?= Date: Wed, 29 Oct 2025 17:10:06 +0100 Subject: [PATCH] Update QT to 6.10.0 and increase security: * Use QT 6.10.0 * Change invalidateFilter (deprecated) to beginFilterChange/endFilterChange * Remove warning of presenceStatusItem * Add changelog with this modification for 6.1.0 * Do not use anymore variables to build docker images. Qt versions are now hardcoded in images to allow multiple opensource Qt versions. --- .gitlab-ci-files/macosx-desktop.yml | 10 +-- CHANGELOG.md | 6 ++ Linphone/core/proxy/SortFilterProxy.cpp | 3 +- .../Display/Contact/PresenceStatusItem.qml | 1 - Linphone/view/Style/DefaultStyle.qml | 82 +++++++++---------- README.md | 6 +- docker-files/bc-dev-ubuntu-22-04-lts | 37 +++++---- 7 files changed, 80 insertions(+), 65 deletions(-) diff --git a/.gitlab-ci-files/macosx-desktop.yml b/.gitlab-ci-files/macosx-desktop.yml index 1104b84c6..925eb30c5 100644 --- a/.gitlab-ci-files/macosx-desktop.yml +++ b/.gitlab-ci-files/macosx-desktop.yml @@ -26,7 +26,7 @@ .macosx-desktop: stage: build - tags: [ "macos-min-xcode12.2-flat" ] + tags: [ "macmini-m1-xcode15-flat" ] rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_MACOSX == null - if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_MACOSX == null @@ -93,7 +93,7 @@ macosx-ninja-novideo: # WAIT for QT6 for arm64 macosx-ninja-package: stage: package - tags: [ "macos-min-xcode12.2-flat" ] + tags: [ "macmini-m1-xcode15-flat" ] needs: [] rules: - !reference [.rules-merge-request-manual, rules] @@ -117,7 +117,7 @@ macosx-ninja-package: macosx-codesigning: stage: signing - tags: [ "macos-min-xcode12.2-flat" ] + tags: [ "macmini-m1-xcode15-flat" ] needs: - macosx-ninja-package rules: @@ -142,7 +142,7 @@ macosx-codesigning: macosx-deploy: stage: deploy - tags: [ "macos-min-xcode12.2-flat" ] + tags: [ "macmini-m1-xcode15-flat" ] needs: - macosx-codesigning only: @@ -160,7 +160,7 @@ macosx-deploy: macosx-makefile-plugins-deploy: stage: deploy - tags: [ "macos-min-xcode12.2-flat" ] + tags: [ "macmini-m1-xcode15-flat" ] needs: - macosx-makefile only: diff --git a/CHANGELOG.md b/CHANGELOG.md index e2312e036..bb3dd4c7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,3 +31,9 @@ Group changes to describe their impact on the project, as follows: - Default screen (between contacts, call history, conversations & meetings list) will change depending on where you were when the app was paused or killed, and you will return to that last visited screen on the next startup. - Minimum supported Qt version is now 6.5.3 - Some settings have changed name and/or section in linphonerc file. + + +## [6.1.0] - XXXX-XX-XX + +### Changed +- Minimum supported Qt version is now 6.10.0 \ No newline at end of file diff --git a/Linphone/core/proxy/SortFilterProxy.cpp b/Linphone/core/proxy/SortFilterProxy.cpp index a3ff345a0..99cc6da6e 100644 --- a/Linphone/core/proxy/SortFilterProxy.cpp +++ b/Linphone/core/proxy/SortFilterProxy.cpp @@ -63,9 +63,10 @@ int SortFilterProxy::getFilterType() const { void SortFilterProxy::setFilterType(int filterType) { if (getFilterType() != filterType) { + beginFilterChange(); mFilterType = filterType; + endFilterChange(); emit filterTypeChanged(filterType); - invalidate(); } } diff --git a/Linphone/view/Control/Display/Contact/PresenceStatusItem.qml b/Linphone/view/Control/Display/Contact/PresenceStatusItem.qml index 8eed0010d..7d2668a65 100644 --- a/Linphone/view/Control/Display/Contact/PresenceStatusItem.qml +++ b/Linphone/view/Control/Display/Contact/PresenceStatusItem.qml @@ -26,7 +26,6 @@ IconLabelButton { icon.source: UtilsCpp.getPresenceIcon(mainItem.presence) Layout.fillWidth: true shadowEnabled: false - contentImageColor: undefined padding: 0 onClicked: { diff --git a/Linphone/view/Style/DefaultStyle.qml b/Linphone/view/Style/DefaultStyle.qml index 3e8ee06d9..d69f7f1f3 100644 --- a/Linphone/view/Style/DefaultStyle.qml +++ b/Linphone/view/Style/DefaultStyle.qml @@ -8,48 +8,48 @@ QtObject { property var currentTheme: Themes.themes.hasOwnProperty(SettingsCpp.themeMainColor) ? Themes.themes[SettingsCpp.themeMainColor] : Themes.themes["orange"] - property color main1_100: currentTheme.main100 - property color main1_200: currentTheme.main200 - property color main1_300: currentTheme.main300 - property color main1_500_main: currentTheme.main500 - property color main1_600: currentTheme.main600 - property color main1_700: currentTheme.main700 + property var main1_100: currentTheme.main100 + property var main1_200: currentTheme.main200 + property var main1_300: currentTheme.main300 + property var main1_500_main: currentTheme.main500 + property var main1_600: currentTheme.main600 + property var main1_700: currentTheme.main700 - property color main2_0: "#FAFEFF" - property color main2_100: "#EEF6F8" - property color main2_200: "#DFECF2" - property color main2_300: "#C0D1D9" - property color main2_400: "#9AABB5" - property color main2_500_main: "#6C7A87" - property color main2_600: "#4E6074" - property color main2_700: "#364860" - property color main2_800: "#22334D" - property color main2_900: "#2D3648" + property var main2_0: "#FAFEFF" + property var main2_100: "#EEF6F8" + property var main2_200: "#DFECF2" + property var main2_300: "#C0D1D9" + property var main2_400: "#9AABB5" + property var main2_500_main: "#6C7A87" + property var main2_600: "#4E6074" + property var main2_700: "#364860" + property var main2_800: "#22334D" + property var main2_900: "#2D3648" - property color grey_0: "#FFFFFF" - property color grey_100: "#F9F9F9" - property color grey_200: "#EDEDED" - property color grey_300: "#C9C9C9" - property color grey_400: "#949494" - property color grey_500: "#4E4E4E" - property color grey_600: "#2E3030" - property color grey_850: "#D9D9D9" - property color grey_900: "#070707" - property color grey_1000: "#000000" + property var grey_0: "#FFFFFF" + property var grey_100: "#F9F9F9" + property var grey_200: "#EDEDED" + property var grey_300: "#C9C9C9" + property var grey_400: "#949494" + property var grey_500: "#4E4E4E" + property var grey_600: "#2E3030" + property var grey_850: "#D9D9D9" + property var grey_900: "#070707" + property var grey_1000: "#000000" - property color warning_600: "#DBB820" - property color warning_700: "#AF9308" - property color danger_500_main: "#DD5F5F" - property color warning_500_main: "#FFDC2E" - property color danger_700: "#9E3548" - property color danger_900: "#723333" - property color success_500_main: "#4FAE80" - property color success_700: "#377d71" - property color success_900: "#1E4C53" - property color info_500_main: "#4AA8FF" + property var warning_600: "#DBB820" + property var warning_700: "#AF9308" + property var danger_500_main: "#DD5F5F" + property var warning_500_main: "#FFDC2E" + property var danger_700: "#9E3548" + property var danger_900: "#723333" + property var success_500_main: "#4FAE80" + property var success_700: "#377d71" + property var success_900: "#1E4C53" + property var info_500_main: "#4AA8FF" - property color vue_meter_light_green: "#6FF88D" - property color vue_meter_dark_green: "#00D916" + property var vue_meter_light_green: "#6FF88D" + property var vue_meter_dark_green: "#00D916" property real defaultHeight: 1080.0 property real defaultWidth: 1920.0 @@ -66,10 +66,10 @@ QtObject { property string flagFont: "Noto Color Emoji" property string defaultFont: "Noto Sans" - property color numericPadPressedButtonColor: "#EEF7F8" + property var numericPadPressedButtonColor: "#EEF7F8" - property color groupCallButtonColor: "#EEF7F8" + property var groupCallButtonColor: "#EEF7F8" - property color placeholders: '#CACACA' // No name in design + property var placeholders: '#CACACA' // No name in design } diff --git a/README.md b/README.md index cc00b02ea..0baa4ab9a 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Linphone is dual licensed, and is available either : As linphone-desktop depends on [Linphone SDK](https://gitlab.linphone.org/BC/public/linphone-sdk), you need to install to Build dependencies common to all target platforms of this project: [The Linphone SDK depdencies](https://gitlab.linphone.org/BC/public/linphone-sdk#common-to-all-target-platforms) -For Desktop : you will need QT6 (_6.5.3 or newer_). `C++17` support is required!. You have two way to install it : +For Desktop : you will need QT6 (_6.10.0 or newer_). `C++17` support is required!. You have two way to install it : - Using the [official QT installer](https://www.qt.io/download-thank-you) - Using an alternative installer like [aqtinstall](https://github.com/miurahr/aqtinstall) @@ -39,8 +39,8 @@ For Desktop : you will need QT6 (_6.5.3 or newer_). `C++17` support is required! 2. You have to set the environment variable `Qt6_DIR` to point to the path containing the cmake folders of Qt6, and the `PATH` to the Qt6 `bin`. Example: ```bash -export Qt6_DIR="~/Qt/6.5.3/gcc_64/lib/cmake/Qt6" -export PATH="~/Qt/6.5.3/gcc_64/bin/:$PATH" +export Qt6_DIR="~/Qt/6.10.0/gcc_64/lib/cmake/Qt6" +export PATH="~/Qt/6.10.0/gcc_64/bin/:$PATH" ``` diff --git a/docker-files/bc-dev-ubuntu-22-04-lts b/docker-files/bc-dev-ubuntu-22-04-lts index 64e138b51..88b2d6ec8 100644 --- a/docker-files/bc-dev-ubuntu-22-04-lts +++ b/docker-files/bc-dev-ubuntu-22-04-lts @@ -1,16 +1,9 @@ ############################################################################### -# Dockerfile used to make gitlab.linphone.org:4567/bc/public/linphone-desktop/bc-dev-ubuntu-20-04-lts:20231024_add_multimedia +# Dockerfile used to make gitlab.linphone.org:4567/bc/public/linphone-desktop/bc-dev-ubuntu-22-04-lts:20251106_add_commercial_qt_version_5.15.14_5.15.19_6.8.1_6.8.3_6.9.1_6.10.0 ############################################################################### FROM ubuntu:22.04 -# Qt on Ubuntu 22.04 is too old. Use a downloader. -ARG QT_VERSION=5.15.2 -ARG QT6_VERSION=6.9.1 - -#Do not use it. It seems that it cannot be used from python command. -#ARG QT_MODULES=qtnetworkauth qtquick3d qtmultimedia qt5compat qtshadertools - LABEL Gaelle Braud # Use a Swiss mirror @@ -88,15 +81,18 @@ RUN sudo apt install --upgrade -y python3-setuptools # installation is split because there is a way where some modules are not downloaded in the first attempt. RUN sudo apt install -y python3-py7zr RUN sudo pip3 install --upgrade aqtinstall -RUN sudo python3 -m aqt install-qt linux desktop $QT_VERSION -O /opt/Qt/opensource -RUN sudo python3 -m aqt install-qt linux desktop $QT_VERSION -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d -RUN sudo python3 -m aqt install-qt linux desktop $QT6_VERSION -O /opt/Qt/opensource -RUN sudo python3 -m aqt install-qt linux desktop $QT6_VERSION -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d qtmultimedia qt5compat qtshadertools +RUN sudo python3 -m aqt install-qt linux desktop 5.15.2 -O /opt/Qt/opensource +RUN sudo python3 -m aqt install-qt linux desktop 5.15.2 -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d +RUN sudo python3 -m aqt install-qt linux desktop 6.9.1 -O /opt/Qt/opensource +RUN sudo python3 -m aqt install-qt linux desktop 6.9.1 -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d qtmultimedia qt5compat qtshadertools +RUN sudo python3 -m aqt install-qt linux desktop 6.10.0 -O /opt/Qt/opensource +RUN sudo python3 -m aqt install-qt linux desktop 6.10.0 -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d qtmultimedia qt5compat qtshadertools RUN sudo chown -R bc:bc /opt/Qt/ -RUN qtchooser -install "$QT_VERSION-opensource" /opt/Qt/opensource/$QT_VERSION/gcc_64/bin/qmake -RUN qtchooser -install "$QT6_VERSION-opensource" /opt/Qt/opensource/$QT6_VERSION/gcc_64/bin/qmake +RUN qtchooser -install "5.15.2-opensource" /opt/Qt/opensource/5.15.2/gcc_64/bin/qmake +RUN qtchooser -install "6.9.1-opensource" /opt/Qt/opensource/6.9.1/gcc_64/bin/qmake +RUN qtchooser -install "6.10.0-opensource" /opt/Qt/opensource/6.10.0/gcc_64/bin/qmake # Download QT official installer for proprietary versions # -O : name the destination file after the remote file name, in the current directory @@ -158,10 +154,23 @@ RUN /opt/Qt/proprietary/MaintenanceTool \ --auto-answer OperationDoesNotExistError=Ignore,OverwriteTargetDirectory=Yes,stopProcessesForUpdates=Ignore,installationErrorWithCancel=Ignore,InstallationErrorWithIgnore=Ignore,AssociateCommonFiletypes=Yes,telemetry-question=No \ install qt.qt6.691.linux_gcc_64 qt.qt6.691.addons.qtnetworkauth qt.qt6.691.addons.qtquick3d qt.qt6.691.addons.qtmultimedia qt.qt6.691.addons.qt5compat qt.qt6.691.addons.qtshadertools +# # Install Qt 6.10.0 proprietary +RUN /opt/Qt/proprietary/MaintenanceTool \ + --accept-licenses \ + --accept-obligations \ + --confirm-command \ + --root "/opt/Qt/proprietary" \ + --auto-answer OperationDoesNotExistError=Ignore,OverwriteTargetDirectory=Yes,stopProcessesForUpdates=Ignore,installationErrorWithCancel=Ignore,InstallationErrorWithIgnore=Ignore,AssociateCommonFiletypes=Yes,telemetry-question=No \ + install qt.qt6.6100.linux_gcc_64 qt.qt6.6100.addons.qtnetworkauth qt.qt6.6100.addons.qtquick3d qt.qt6.6100.addons.qtmultimedia qt.qt6.6100.addons.qt5compat qt.qt6.6100.addons.qtshadertools + RUN qtchooser -install 5.15.19-proprietary /opt/Qt/proprietary/5.15.19/gcc_64/bin/qmake RUN qtchooser -install 5.15.14-proprietary /opt/Qt/proprietary/5.15.14/gcc_64/bin/qmake RUN qtchooser -install 6.8.1-proprietary /opt/Qt/proprietary/6.8.1/gcc_64/bin/qmake RUN qtchooser -install 6.8.3-proprietary /opt/Qt/proprietary/6.8.3/gcc_64/bin/qmake RUN qtchooser -install 6.9.1-proprietary /opt/Qt/proprietary/6.9.1/gcc_64/bin/qmake +RUN qtchooser -install 6.10.0-proprietary /opt/Qt/proprietary/6.10.0/gcc_64/bin/qmake + +RUN rm -f /home/bc/.local/share/Qt/qtaccount.ini +RUN rm -f /home/bc/.local/share/Qt/qtlicenses.ini cmd bash \ No newline at end of file