Compare commits
	
		
			95 Commits
		
	
	
		
			beta/20231
			...
			nightly/20
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| eb866df589 | |||
| e054fc9592 | |||
| 8305c0a082 | |||
| 7b03484497 | |||
| 4d29e11cd3 | |||
| f67a181e83 | |||
| 24edba9a2f | |||
| d1cde3792b | |||
| 3dfcae1c09 | |||
| 50ce16e0ab | |||
| 66e31bea1e | |||
| 154ce53e2d | |||
| 35f850289f | |||
| c8b52262bc | |||
| 4b17fa1a12 | |||
| 35482fa92f | |||
| 788ecaa496 | |||
| f40a8215d1 | |||
| c6ff91bdb1 | |||
| 99d415b1fe | |||
| 4edc2d6369 | |||
| 146dd21679 | |||
| fa2caa6d7c | |||
| 90e9a36a9e | |||
| 95e36ef89b | |||
| 79b906f12f | |||
| 92522d5cce | |||
| 25b74cdf6e | |||
| 0245671855 | |||
| 7c3eab9107 | |||
| 5b6ab48037 | |||
| 6003d007b8 | |||
| 30db1ba5f5 | |||
| 6aaac12758 | |||
| a0fc85d0a9 | |||
| 9c6bdec0f0 | |||
| ce8381e817 | |||
| 677ebe3297 | |||
| fa67ac0462 | |||
| c0c56023cc | |||
| e7ee0acf3a | |||
| f1f521973b | |||
| a4300308dc | |||
| 815d324118 | |||
| 2343f34b4f | |||
| 692ba0d5a8 | |||
| 84150e8977 | |||
| 9360458b9e | |||
| 46a955aa3d | |||
| 009a3902cb | |||
| 32b76c8da4 | |||
| 2bbd9637da | |||
| 2d664eacb1 | |||
| f1c90f316a | |||
| 5abed96b56 | |||
| f524c39c5f | |||
| 2215d51f98 | |||
| 127b39bec2 | |||
| 43fecd1d4a | |||
| 760f6dc72c | |||
| eaf155d8a4 | |||
| 3e7087e5e6 | |||
| 4ebb881be4 | |||
| a4014b7b6f | |||
| 93d2201277 | |||
| 2bf414e27e | |||
| c72e847bd4 | |||
| 74120737ca | |||
| f2424f4968 | |||
| 9d7eae0af8 | |||
| 38febbf0bc | |||
| bd8938b1df | |||
| 1e4c450423 | |||
| c1df66f28d | |||
| 721ea4b017 | |||
| b6737f1d50 | |||
| 15eb51c7ca | |||
| e74be0934e | |||
| a4b758611c | |||
| c00ea7ac51 | |||
| 58a53e70d1 | |||
| 4ca37a6293 | |||
| e2da7777de | |||
| 48e9887129 | |||
| 2af4bc663b | |||
| 72100f4700 | |||
| b7207e4b03 | |||
| 250196bbac | |||
| 04a57dfdbb | |||
| 4a3a49b0ec | |||
| 4342b9053f | |||
| ef0045c927 | |||
| d45f86362b | |||
| c4c2415d6b | |||
| b2318c7f7f | 
							
								
								
									
										1
									
								
								.clang-tidy
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1 @@
 | 
			
		||||
Checks: '-*,analyzer-cplusplus.NewDeleteLeaks'
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
# Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Albert Babí <albert.babi@savoirfairelinux.com>
 | 
			
		||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
 | 
			
		||||
@ -21,7 +21,7 @@
 | 
			
		||||
# along with this program; if not, write to the Free Software
 | 
			
		||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
 | 
			
		||||
 | 
			
		||||
cmake_minimum_required(VERSION 3.16)
 | 
			
		||||
cmake_minimum_required(VERSION 3.19)
 | 
			
		||||
 | 
			
		||||
if(APPLE)
 | 
			
		||||
  project(Jami)
 | 
			
		||||
@ -29,13 +29,12 @@ else()
 | 
			
		||||
  project(jami)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
include(${PROJECT_SOURCE_DIR}/extras/build/cmake/extra_tools.cmake)
 | 
			
		||||
 | 
			
		||||
option(WITH_DAEMON_SUBMODULE "Build with daemon submodule" ON)
 | 
			
		||||
option(JAMICORE_AS_SUBDIR "Build Jami-core as a subdir dependency" OFF)
 | 
			
		||||
option(ENABLE_TESTS "Build with tests" OFF)
 | 
			
		||||
option(WITH_WEBENGINE "Build with WebEngine" ON)
 | 
			
		||||
if(WITH_WEBENGINE)
 | 
			
		||||
  add_definitions(-DWITH_WEBENGINE)
 | 
			
		||||
endif()
 | 
			
		||||
option(ENABLE_LIBWRAP "Enable libwrap (single process mode)" ON)
 | 
			
		||||
if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 | 
			
		||||
    OR ENABLE_LIBWRAP
 | 
			
		||||
@ -51,6 +50,10 @@ if(ENABLE_ASAN AND NOT MSVC)
 | 
			
		||||
  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# These values are exposed to QML and are better off being defined as values.
 | 
			
		||||
define_macro_with_value(WITH_WEBENGINE)
 | 
			
		||||
define_macro_with_value(APPSTORE)
 | 
			
		||||
 | 
			
		||||
# jami-core
 | 
			
		||||
if(NOT WITH_DAEMON_SUBMODULE)
 | 
			
		||||
  set(DAEMON_DIR ${PROJECT_SOURCE_DIR}/../daemon)
 | 
			
		||||
@ -75,6 +78,38 @@ if(NOT MSVC)
 | 
			
		||||
  set(CMAKE_CXX_FLAGS_DEBUG "-Og -ggdb")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
include(${PROJECT_SOURCE_DIR}/extras/build/cmake/contrib_tools.cmake)
 | 
			
		||||
set(EXTRA_PATCHES_DIR ${PROJECT_SOURCE_DIR}/extras/patches)
 | 
			
		||||
 | 
			
		||||
list(APPEND QWINDOWKIT_OPTIONS
 | 
			
		||||
  QWINDOWKIT_BUILD_WIDGETS OFF
 | 
			
		||||
  QWINDOWKIT_INSTALL OFF
 | 
			
		||||
  QWINDOWKIT_BUILD_STATIC ON
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if(WIN32)
 | 
			
		||||
  list(APPEND QWINDOWKIT_PATCHES ${EXTRA_PATCHES_DIR}/0002-workaround-right-margin.patch)
 | 
			
		||||
  list(APPEND QWINDOWKIT_OPTIONS QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS OFF)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# qmsetup uses the wrong package dir on some distributions
 | 
			
		||||
# (including Fedora and openSUSE Leap at least)
 | 
			
		||||
check_distro_needs_qmsetup_patch(DISTRO_NEEDS_QMSETUP_PATCH)
 | 
			
		||||
if(DISTRO_NEEDS_QMSETUP_PATCH)
 | 
			
		||||
  list(APPEND QWINDOWKIT_PATCHES ${EXTRA_PATCHES_DIR}/0001-fix-fedora-fc-build.patch)
 | 
			
		||||
  set(qmsetup_cmake_path ${CMAKE_BINARY_DIR}/_install/lib64/cmake/qmsetup)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# qwindowkit (frameless window)
 | 
			
		||||
add_fetch_content(
 | 
			
		||||
  TARGET qwindowkit
 | 
			
		||||
  URL https://github.com/stdware/qwindowkit.git
 | 
			
		||||
  BRANCH 79b1f3110754f9c21af2d7dacbd07b1a9dbaf6ef
 | 
			
		||||
  PATCHES ${QWINDOWKIT_PATCHES}
 | 
			
		||||
  OPTIONS ${QWINDOWKIT_OPTIONS}
 | 
			
		||||
)
 | 
			
		||||
list(APPEND CLIENT_INCLUDE_DIRS ${QWindowKit_BINARY_DIR}/include)
 | 
			
		||||
list(APPEND CLIENT_LIBS QWindowKit::Quick)
 | 
			
		||||
 | 
			
		||||
set(CMAKE_AUTOMOC ON)
 | 
			
		||||
set(CMAKE_AUTORCC ON)
 | 
			
		||||
@ -97,19 +132,19 @@ set(TESTS_DIR ${PROJECT_SOURCE_DIR}/tests)
 | 
			
		||||
# Here we let find_package(<PackageName>...) try to find Qt 6,
 | 
			
		||||
# If it is found, find_package will succeed, and the CMake variable
 | 
			
		||||
# QT_VERSION_MAJOR will be defined 6.
 | 
			
		||||
set(QT6_MINVER_MINOR 5)
 | 
			
		||||
set(QT6_MINVER_MINOR 6)
 | 
			
		||||
if(QT6_VER AND QT6_PATH)
 | 
			
		||||
  find_package(QT NAMES Qt6 REQUIRED
 | 
			
		||||
    PATHS ${QT6_PATH} NO_DEFAULT_PATH)
 | 
			
		||||
else()
 | 
			
		||||
  message(STATUS "Looking for Qt 6" ${CMAKE_PREFIX_PATH})
 | 
			
		||||
  message(STATUS "Looking for Qt 6 in ${CMAKE_PREFIX_PATH}")
 | 
			
		||||
  find_package(QT NAMES Qt6 REQUIRED)
 | 
			
		||||
endif()
 | 
			
		||||
if (${QT_VERSION_MINOR} GREATER_EQUAL ${QT6_MINVER_MINOR})
 | 
			
		||||
  # Qt version is 6.5 or higher
 | 
			
		||||
  # Qt version is 6.6 or higher
 | 
			
		||||
  message(STATUS "Found a suitable Qt version ${QT_VERSION}")
 | 
			
		||||
else()
 | 
			
		||||
  message(FATAL_ERROR "Qt 6.5 or higher is required. Found ${QT_VERSION}")
 | 
			
		||||
  message(FATAL_ERROR "Qt 6.6 or higher is required. Found ${QT_VERSION}")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# libjamiclient
 | 
			
		||||
@ -188,6 +223,7 @@ execute_process(
 | 
			
		||||
  ${PYTHON_EXEC} ${SCRIPTS_DIR}/gen_qml_qrc.py ${GEN_QRC_ARGS}
 | 
			
		||||
  WORKING_DIRECTORY ${APP_SRC_DIR})
 | 
			
		||||
set(QML_RESOURCES_QML ${APP_SRC_DIR}/qml.qrc)
 | 
			
		||||
 | 
			
		||||
# Image and misc. resources
 | 
			
		||||
# check files in the resources directory and force a reconfigure if it
 | 
			
		||||
# changes
 | 
			
		||||
@ -199,6 +235,11 @@ execute_process(
 | 
			
		||||
  WORKING_DIRECTORY ${APP_SRC_DIR})
 | 
			
		||||
set(QML_RESOURCES ${APP_SRC_DIR}/resources.qrc)
 | 
			
		||||
 | 
			
		||||
# Find modules (QtCreator) under the root source dir.
 | 
			
		||||
list(APPEND QML_DIRS ${APP_SRC_DIR})
 | 
			
		||||
set(QML_IMPORT_PATH ${QML_DIRS}
 | 
			
		||||
  CACHE STRING "Qt Creator extra qml import paths" FORCE)
 | 
			
		||||
 | 
			
		||||
# library compatibility (boost, libnotify, etc.)
 | 
			
		||||
add_definitions(-DQT_NO_KEYWORDS)
 | 
			
		||||
 | 
			
		||||
@ -343,6 +384,8 @@ if(Vulkan_FOUND)
 | 
			
		||||
  add_definitions(-DHAS_VULKAN)
 | 
			
		||||
  include_directories(${Vulkan_INCLUDE_DIR})
 | 
			
		||||
endif()
 | 
			
		||||
# Define PREFER_VULKAN to prefer Vulkan over the default API
 | 
			
		||||
# on GNU/Linux and Windows. Metal is always preferred on macOS.
 | 
			
		||||
 | 
			
		||||
if(MSVC)
 | 
			
		||||
  set(WINDOWS_SYS_LIBS
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										24
									
								
								INSTALL.md
									
									
									
									
									
								
							
							
						
						@ -7,9 +7,9 @@ There are essentially two ways to build `client-qt`:
 | 
			
		||||
 | 
			
		||||
## Disclaimer
 | 
			
		||||
 | 
			
		||||
Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.5 is necessary.
 | 
			
		||||
Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.6 is necessary.
 | 
			
		||||
This version is generally not packaged on a lot of platforms, and to control available plugins and such, we have our own Qt packaged (available on https://jami.net on the distributions we support).
 | 
			
		||||
So, you will need to get Qt 6.5 first. For this, there is 3 methods:
 | 
			
		||||
So, you will need to get Qt 6.6 first. For this, there is 3 methods:
 | 
			
		||||
 | 
			
		||||
### Qt from our repo (recommended)
 | 
			
		||||
 | 
			
		||||
@ -49,7 +49,7 @@ sudo dnf update && sudo dnf install jami-libqt
 | 
			
		||||
 | 
			
		||||
### Qt from your distribution
 | 
			
		||||
 | 
			
		||||
If Qt 6.5 is available, you can use the packages from your distribution:
 | 
			
		||||
If Qt 6.6 is available, you can use the packages from your distribution:
 | 
			
		||||
 | 
			
		||||
It should be (For now qt5 only is packaged by distributions, so names can change).
 | 
			
		||||
 | 
			
		||||
@ -118,7 +118,7 @@ Then, you can build daemon and the client using:
 | 
			
		||||
 | 
			
		||||
If you use a Qt version that is not system-wide installed, you need to
 | 
			
		||||
specify its path using the `--qt` flag, e.g.
 | 
			
		||||
`./build.py --install --qt=/home/<username>/Qt/6.5.1/gcc_64`.
 | 
			
		||||
`./build.py --install --qt=/home/<username>/Qt/6.6.1/gcc_64`.
 | 
			
		||||
 | 
			
		||||
Now you will have the daemon in `daemon/bin/dbus/jamid` and the client in
 | 
			
		||||
`build/jami`. You can now run Jami using:
 | 
			
		||||
@ -134,7 +134,7 @@ Notes:
 | 
			
		||||
 | 
			
		||||
## Build only the client
 | 
			
		||||
 | 
			
		||||
In order to use the Qt Client it is necessary to have the Qt version 6.5 or higher. If your system does not have it you can install it [from sources or download the binary installer](https://www.qt.io/download).
 | 
			
		||||
In order to use the Qt Client it is necessary to have the Qt version 6.6 or higher. If your system does not have it you can install it [from sources or download the binary installer](https://www.qt.io/download).
 | 
			
		||||
 | 
			
		||||
## Build only this repository
 | 
			
		||||
 | 
			
		||||
@ -184,7 +184,7 @@ Only 64-bit MSVC build can be compiled.
 | 
			
		||||
 | 
			
		||||
- Download [Qt (Open Source)](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5)
 | 
			
		||||
 | 
			
		||||
- Using the online installer, install the following Qt 6.5.3 components:
 | 
			
		||||
- Using the online installer, install the following Qt 6.6.1 components:
 | 
			
		||||
 | 
			
		||||
  - Git 2.10.2
 | 
			
		||||
  - MSVC 2019 64-bit
 | 
			
		||||
@ -203,11 +203,11 @@ Only 64-bit MSVC build can be compiled.
 | 
			
		||||
  | ------------ | ------------ | --------------------------------------------------- | ---------------- |
 | 
			
		||||
  | Requirement: | 10.0.18362.0 | V142 (VisualStudio 2019) / V143 (VisualStudio 2022) | matching Toolset |
 | 
			
		||||
 | 
			
		||||
- Install Qt Vs Tools under extensions, and configure msvc2017*64 path under Qt Options. \_See the Qt notes below.*
 | 
			
		||||
- Install Qt Vs Tools under extensions, and configure msvc2019\_64 path under Qt Options. *See the Qt notes below.*
 | 
			
		||||
 | 
			
		||||
  |                      | Qt Version |
 | 
			
		||||
  | -------------------- | ---------- |
 | 
			
		||||
  | Minimum requirement: | 6.5.3      |
 | 
			
		||||
  | Minimum requirement: | 6.6.1      |
 | 
			
		||||
 | 
			
		||||
- Install [Python3](https://www.python.org/downloads/) for Windows
 | 
			
		||||
 | 
			
		||||
@ -233,7 +233,7 @@ Only 64-bit MSVC build can be compiled.
 | 
			
		||||
- Using a new **Non-Elevated Command Prompt**
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
    python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.5.3/msvc2019_64)
 | 
			
		||||
    python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.6.1/msvc2019_64)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> **SDK** Note:
 | 
			
		||||
@ -276,7 +276,7 @@ Once the build has finished, you should then be able to use the Visual Studio So
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
    python extras\scripts\build-windows.py --init
 | 
			
		||||
    python extras\scripts\build-windows.py --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.5.3/msvc2019_64)
 | 
			
		||||
    python extras\scripts\build-windows.py --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.6.1/msvc2019_64)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Building On MacOS
 | 
			
		||||
@ -286,9 +286,9 @@ Once the build has finished, you should then be able to use the Visual Studio So
 | 
			
		||||
- macOS minimum version 10.15
 | 
			
		||||
- install python3
 | 
			
		||||
- download xcode
 | 
			
		||||
- install Qt 6.5
 | 
			
		||||
- install Qt 6.6
 | 
			
		||||
 | 
			
		||||
Qt 6.5 can be installed via brew
 | 
			
		||||
Qt 6.6 can be installed via brew
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
brew install qt
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,7 @@ cf [INSTALL.md](/INSTALL.md)
 | 
			
		||||
 | 
			
		||||
# License
 | 
			
		||||
 | 
			
		||||
Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 | 
			
		||||
Jami is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								build.py
									
									
									
									
									
								
							
							
						
						@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
# build.py --- Convenience script for building and running Jami
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
@ -99,7 +99,7 @@ ZYPPER_DEPENDENCIES = [
 | 
			
		||||
    # daemon
 | 
			
		||||
    'speexdsp-devel', 'speex-devel', 'libdbus-c++-devel', 'jsoncpp-devel', 'yaml-cpp-devel',
 | 
			
		||||
    'yasm', 'libuuid-devel', 'libnettle-devel', 'libopus-devel', 'libexpat-devel',
 | 
			
		||||
    'libgnutls-devel', 'msgpack-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel',
 | 
			
		||||
    'libgnutls-devel', 'msgpack-c-devel', 'msgpack-cxx-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel',
 | 
			
		||||
    'alsa-devel', 'libpulse-devel', 'libudev-devel', 'libva-devel', 'libvdpau-devel',
 | 
			
		||||
    'libopenssl-devel', 'libavutil-devel',
 | 
			
		||||
]
 | 
			
		||||
@ -108,8 +108,10 @@ ZYPPER_CLIENT_DEPENDENCIES = [
 | 
			
		||||
    # lrc
 | 
			
		||||
    'qt6-core-devel', 'qt6-dbus-devel', 'qt6-linguist-devel',
 | 
			
		||||
    # client-qt
 | 
			
		||||
    'qt6-svg-devel', 'qt6-multimedia-devel', 'qt6-declarative-devel',
 | 
			
		||||
    'qt6-quickcontrols2-devel',
 | 
			
		||||
    'qt6-concurrent-devel', 'qt6-qt5compat-devel', 'qt6-qt5compat-imports',
 | 
			
		||||
    'qt6-svg-devel', 'qt6-multimedia-devel', 'qt6-multimedia-imports',
 | 
			
		||||
    'qt6-declarative-devel', 'qt6-qmlcompiler-private-devel',
 | 
			
		||||
    'qt6-quickcontrols2-devel', 'qt6-shadertools-devel',
 | 
			
		||||
    'qrencode-devel', 'NetworkManager-devel'
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
@ -244,8 +246,8 @@ def run_dependencies(args):
 | 
			
		||||
 | 
			
		||||
    elif args.distribution in DNF_BASED_DISTROS:
 | 
			
		||||
        if args.assume_yes:
 | 
			
		||||
            for i, _ in enumerate(DNF_INSTALL_SCRIPT):
 | 
			
		||||
                DNF_INSTALL_SCRIPT[i] += ASSUME_YES_FLAG
 | 
			
		||||
            for i, _ in enumerate(RPM_INSTALL_SCRIPT):
 | 
			
		||||
                RPM_INSTALL_SCRIPT[i] += ASSUME_YES_FLAG
 | 
			
		||||
        execute_script(
 | 
			
		||||
            RPM_INSTALL_SCRIPT,
 | 
			
		||||
            {"packages": ' '.join(map(shlex.quote, DNF_DEPENDENCIES))})
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								daemon
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						@ -1,7 +1,7 @@
 | 
			
		||||
#  Taken from:
 | 
			
		||||
#  https://cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
 | 
			
		||||
#
 | 
			
		||||
#  Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
#  Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
#  This program is free software; you can redistribute it and/or modify
 | 
			
		||||
#  it under the terms of the GNU General Public License as published by
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										92
									
								
								extras/build/cmake/contrib_tools.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,92 @@
 | 
			
		||||
# Copyright (C) 2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation; either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# This program is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with this program; if not, write to the Free Software
 | 
			
		||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
 | 
			
		||||
 | 
			
		||||
include(FetchContent)
 | 
			
		||||
include(CMakeParseArguments)
 | 
			
		||||
 | 
			
		||||
# Helper function to check if we're on a distribution that requires us
 | 
			
		||||
# to apply a patch in order for qmsetup to use the right package directory
 | 
			
		||||
function(check_distro_needs_qmsetup_patch DISTRO_NEEDS_QMSETUP_PATCH)
 | 
			
		||||
  set(${DISTRO_NEEDS_QMSETUP_PATCH} FALSE PARENT_SCOPE)
 | 
			
		||||
  # Check for the existence of /etc/os-release
 | 
			
		||||
  if(EXISTS "/etc/os-release")
 | 
			
		||||
    # Read the content of the file
 | 
			
		||||
    file(READ "/etc/os-release" OS_RELEASE_CONTENT)
 | 
			
		||||
      # Check if the distribution is Fedora or Red Hat-based
 | 
			
		||||
      string(REGEX MATCH "ID=fedora|ID_LIKE=\"rhel fedora\"|ID_LIKE=\"rhel centos fedora\"" RED_HAT_BASED "${OS_RELEASE_CONTENT}")
 | 
			
		||||
      # Check if the distribution is openSUSE Leap
 | 
			
		||||
      string(REGEX MATCH "ID=\"opensuse-leap\"" OPENSUSE_LEAP "${OS_RELEASE_CONTENT}")
 | 
			
		||||
      if(RED_HAT_BASED)
 | 
			
		||||
        set(${DISTRO_NEEDS_QMSETUP_PATCH} TRUE PARENT_SCOPE)
 | 
			
		||||
        message(STATUS "Running on a Red Hat-based distribution (Fedora, RHEL, CentOS, etc.)")
 | 
			
		||||
      elseif(OPENSUSE_LEAP)
 | 
			
		||||
        set(${DISTRO_NEEDS_QMSETUP_PATCH} TRUE PARENT_SCOPE)
 | 
			
		||||
        message(STATUS "Running on openSUSE Leap")
 | 
			
		||||
      else()
 | 
			
		||||
        message(STATUS "Distribution is not openSUSE Leap or Red Hat-based")
 | 
			
		||||
      endif()
 | 
			
		||||
  else()
 | 
			
		||||
    message(STATUS "Cannot determine the distribution type: /etc/os-release not found")
 | 
			
		||||
  endif()
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
# Helper function to add external content with patches and options.
 | 
			
		||||
# Parameters:
 | 
			
		||||
#   TARGET: Name of the target to create
 | 
			
		||||
#   URL: URL of the git repository
 | 
			
		||||
#   BRANCH: Branch to checkout
 | 
			
		||||
#   PATCHES: List of patch files to apply
 | 
			
		||||
#   OPTIONS: List of options to set prior to calling FetchContent_MakeAvailable
 | 
			
		||||
function(add_fetch_content)
 | 
			
		||||
  # Parse function arguments
 | 
			
		||||
  set(oneValueArgs TARGET URL BRANCH)
 | 
			
		||||
  set(multiValueArgs PATCHES OPTIONS)
 | 
			
		||||
  cmake_parse_arguments(PARSE_ARGV 0 AFCWP "" "${oneValueArgs}" "${multiValueArgs}")
 | 
			
		||||
 | 
			
		||||
  # Create a string for the patch command
 | 
			
		||||
  set(patch_cmd "")
 | 
			
		||||
  # If patches is not empty, start the command with "git apply"
 | 
			
		||||
  if(NOT "${AFCWP_PATCHES}" STREQUAL "")
 | 
			
		||||
    set(patch_cmd git apply)
 | 
			
		||||
  endif()
 | 
			
		||||
  foreach(patch_file IN LISTS AFCWP_PATCHES)
 | 
			
		||||
    list(APPEND patch_cmd "${patch_file}")
 | 
			
		||||
  endforeach()
 | 
			
		||||
 | 
			
		||||
  # Declare the external content
 | 
			
		||||
  FetchContent_Declare(
 | 
			
		||||
    ${AFCWP_TARGET}
 | 
			
		||||
    GIT_REPOSITORY ${AFCWP_URL}
 | 
			
		||||
    GIT_TAG ${AFCWP_BRANCH}
 | 
			
		||||
    PATCH_COMMAND ${patch_cmd}
 | 
			
		||||
    UPDATE_DISCONNECTED 1
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  # Apply options
 | 
			
		||||
  list(LENGTH AFCWP_OPTIONS options_length)
 | 
			
		||||
  if(NOT ${options_length} EQUAL 0)
 | 
			
		||||
    math(EXPR max_idx "${options_length} - 1")
 | 
			
		||||
    foreach(idx RANGE 0 ${max_idx} 2)
 | 
			
		||||
      list(GET AFCWP_OPTIONS ${idx} key)
 | 
			
		||||
      math(EXPR value_idx "${idx} + 1")
 | 
			
		||||
      list(GET AFCWP_OPTIONS ${value_idx} value)
 | 
			
		||||
      set(${key} ${value} CACHE STRING "${key}" FORCE)
 | 
			
		||||
    endforeach()
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  # Make the content available
 | 
			
		||||
  FetchContent_MakeAvailable(${AFCWP_TARGET})
 | 
			
		||||
endfunction()
 | 
			
		||||
							
								
								
									
										38
									
								
								extras/build/cmake/extra_tools.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,38 @@
 | 
			
		||||
# Copyright (C) 2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation; either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# This program is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with this program; if not, write to the Free Software
 | 
			
		||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
 | 
			
		||||
 | 
			
		||||
# Function to define a macro with a specific value or default to 0 if not already set.
 | 
			
		||||
# This is useful to if within the code we don't want to use #ifdef but rather use the
 | 
			
		||||
# value of the macro.
 | 
			
		||||
function(define_macro_with_value MACRO_NAME)
 | 
			
		||||
  if(DEFINED ${MACRO_NAME})
 | 
			
		||||
    # Convert ON/OFF to 1/0
 | 
			
		||||
    if(${${MACRO_NAME}} STREQUAL "ON")
 | 
			
		||||
      set(MACRO_VALUE "1")
 | 
			
		||||
    elseif(${${MACRO_NAME}} STREQUAL "OFF")
 | 
			
		||||
      set(MACRO_VALUE "0")
 | 
			
		||||
    # If the macro is defined and its value is neither "ON" nor "OFF",
 | 
			
		||||
    # set MACRO_VALUE to the macro's current value
 | 
			
		||||
    else()
 | 
			
		||||
      set(MACRO_VALUE "${${MACRO_NAME}}")
 | 
			
		||||
    endif()
 | 
			
		||||
  else()
 | 
			
		||||
    set(MACRO_VALUE "0")
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  # Add the macro definition to the compiler command line
 | 
			
		||||
  add_definitions("-D${MACRO_NAME}=${MACRO_VALUE}")
 | 
			
		||||
endfunction()
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
# Copyright (C) 2015-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2015-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
 | 
			
		||||
# Author: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com>
 | 
			
		||||
 | 
			
		||||
@ -66,4 +66,9 @@ RUN apt-get install -y -o Acquire::Retries=10 \
 | 
			
		||||
        libssl-dev
 | 
			
		||||
RUN apt-get install -y pandoc \
 | 
			
		||||
        googletest \
 | 
			
		||||
        libgtest-dev
 | 
			
		||||
        libgtest-dev \
 | 
			
		||||
        wget
 | 
			
		||||
 | 
			
		||||
# Install a recent version of CMake
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 | 
			
		||||
RUN /opt/install-cmake.sh
 | 
			
		||||
							
								
								
									
										2
									
								
								extras/ci/client-qt-gnulinux/Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2022-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2022-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU Affero General Public License as
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!-- Copyright (C) 2015-2023 Savoir-faire Linux Inc. -->
 | 
			
		||||
<!-- Copyright (C) 2015-2024 Savoir-faire Linux Inc. -->
 | 
			
		||||
<component type="desktop-application">
 | 
			
		||||
 <id>net.jami.Jami</id>
 | 
			
		||||
 <metadata_license>CC-BY-SA-3.0</metadata_license>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								extras/packaging/gnu-linux/Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						@ -1,4 +1,4 @@
 | 
			
		||||
// Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
// Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
//
 | 
			
		||||
// Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
# -*- mode: makefile; -*-
 | 
			
		||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
 | 
			
		||||
#
 | 
			
		||||
@ -46,9 +46,9 @@ DEBIAN_DSC_FILENAME := jami_$(DEBIAN_VERSION).dsc
 | 
			
		||||
 | 
			
		||||
# Qt versions
 | 
			
		||||
QT_MAJOR := 6
 | 
			
		||||
QT_MINOR := 5
 | 
			
		||||
QT_PATCH := 3
 | 
			
		||||
QT_TARBALL_CHECKSUM := 7cda4d119aad27a3887329cfc285f2aba5da85601212bcb0aea27bd6b7b544cb
 | 
			
		||||
QT_MINOR := 6
 | 
			
		||||
QT_PATCH := 1
 | 
			
		||||
QT_TARBALL_CHECKSUM := dd3668f65645fe270bc615d748bd4dc048bd17b9dc297025106e6ecc419ab95d
 | 
			
		||||
DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-0
 | 
			
		||||
DEBIAN_QT_DSC_FILENAME := libqt-jami_$(DEBIAN_QT_VERSION).dsc
 | 
			
		||||
QT_JAMI_PREFIX := /usr/lib/libqt-jami
 | 
			
		||||
@ -173,6 +173,7 @@ DISTRIBUTIONS := \
 | 
			
		||||
	fedora_39 \
 | 
			
		||||
	alma_9 \
 | 
			
		||||
	opensuse-leap_15.4 \
 | 
			
		||||
	opensuse-leap_15.5 \
 | 
			
		||||
	snap
 | 
			
		||||
 | 
			
		||||
IS_SHELL_INTERACTIVE := $(shell [ -t 0 ] && echo yes)
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,12 @@ RUN apt-get update && \
 | 
			
		||||
        devscripts \
 | 
			
		||||
        equivs \
 | 
			
		||||
        python-is-python3 \
 | 
			
		||||
        wget
 | 
			
		||||
        wget \
 | 
			
		||||
        curl
 | 
			
		||||
 | 
			
		||||
# nodejs
 | 
			
		||||
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
 | 
			
		||||
RUN apt install nodejs -y
 | 
			
		||||
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 | 
			
		||||
 | 
			
		||||
@ -18,7 +23,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
 | 
			
		||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
 | 
			
		||||
RUN /opt/prebuild-package-debian.sh jami-deps
 | 
			
		||||
 | 
			
		||||
# Install CMake 3.20 for Qt 6
 | 
			
		||||
# Install CMake 3.21 for Qt 6
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 | 
			
		||||
RUN /opt/install-cmake.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,14 @@ RUN apt-get update --allow-releaseinfo-change && \
 | 
			
		||||
        wget \
 | 
			
		||||
        nasm
 | 
			
		||||
 | 
			
		||||
# As of January 2024, the default compiler on Debian testing is GCC 13.2.0, which
 | 
			
		||||
# can't build one of Qt 6.6.1's dependencies, see:
 | 
			
		||||
# https://github.com/qt/qtquick3d-assimp/commit/253f8bfa621a9fa6cd2c36291cdaa8c60c99322c
 | 
			
		||||
# The linked commit above fixes the problem and is included in more recent versions of Qt.
 | 
			
		||||
# For now, we use GCC 12 as a temporary workaround:
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
 | 
			
		||||
RUN /opt/install-gcc-debian.sh 12
 | 
			
		||||
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 | 
			
		||||
 | 
			
		||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
 | 
			
		||||
@ -19,7 +27,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
 | 
			
		||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
 | 
			
		||||
RUN /opt/prebuild-package-debian.sh jami-deps
 | 
			
		||||
 | 
			
		||||
# Install CMake 3.19 for Qt 6
 | 
			
		||||
# Install CMake 3.21 for Qt 6
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 | 
			
		||||
RUN /opt/install-cmake.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,14 @@ RUN apt-get update && \
 | 
			
		||||
        libdbus-1-dev \
 | 
			
		||||
        wget
 | 
			
		||||
 | 
			
		||||
# As of January 2024, the default compiler on Debian unstable is GCC 13.2.0, which
 | 
			
		||||
# can't build one of Qt 6.6.1's dependencies, see:
 | 
			
		||||
# https://github.com/qt/qtquick3d-assimp/commit/253f8bfa621a9fa6cd2c36291cdaa8c60c99322c
 | 
			
		||||
# The linked commit above fixes the problem and is included in more recent versions of Qt.
 | 
			
		||||
# For now, we use GCC 12 as a temporary workaround:
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
 | 
			
		||||
RUN /opt/install-gcc-debian.sh 12
 | 
			
		||||
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 | 
			
		||||
 | 
			
		||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
 | 
			
		||||
@ -19,7 +27,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
 | 
			
		||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
 | 
			
		||||
RUN /opt/prebuild-package-debian.sh jami-deps
 | 
			
		||||
 | 
			
		||||
# Install CMake 3.19 for Qt 6
 | 
			
		||||
# Install CMake 3.21 for Qt 6
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 | 
			
		||||
RUN /opt/install-cmake.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -59,6 +59,7 @@ RUN zypper --non-interactive install -y \
 | 
			
		||||
        ffmpeg-4-libavutil-devel \
 | 
			
		||||
        gtk3-devel\
 | 
			
		||||
        qrencode-devel \
 | 
			
		||||
        python310 \
 | 
			
		||||
        python3-python-dateutil \
 | 
			
		||||
        python3-html5lib \
 | 
			
		||||
        libsndfile-devel \
 | 
			
		||||
@ -67,7 +68,7 @@ RUN zypper --non-interactive install -y \
 | 
			
		||||
        bison \
 | 
			
		||||
        flex \
 | 
			
		||||
        ffmpeg ffmpeg-devel \
 | 
			
		||||
        nodejs12 \
 | 
			
		||||
        nodejs18 \
 | 
			
		||||
        mozilla-nss-devel \
 | 
			
		||||
        python-xml \
 | 
			
		||||
        python3-six \
 | 
			
		||||
@ -100,6 +101,10 @@ RUN zypper --non-interactive install -y \
 | 
			
		||||
        cmake \
 | 
			
		||||
        wget
 | 
			
		||||
 | 
			
		||||
# openSUSE Leap 15.4 comes with Python 3.6 by default,
 | 
			
		||||
# but we need at least 3.7 to compile Qt 6.6.1
 | 
			
		||||
RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.10 /usr/bin/python3
 | 
			
		||||
 | 
			
		||||
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 50
 | 
			
		||||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 50
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										116
									
								
								extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.5
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,116 @@
 | 
			
		||||
FROM opensuse/leap:15.5
 | 
			
		||||
 | 
			
		||||
RUN zypper refresh
 | 
			
		||||
 | 
			
		||||
RUN zypper --non-interactive install -y \
 | 
			
		||||
        dnf \
 | 
			
		||||
        dnf-command\(builddep\) \
 | 
			
		||||
        rpmdevtools \
 | 
			
		||||
        Mesa-dri-devel Mesa-dri \
 | 
			
		||||
        git \
 | 
			
		||||
        gcc10 \
 | 
			
		||||
        gcc10-c++ \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        tar \
 | 
			
		||||
        make \
 | 
			
		||||
        autoconf \
 | 
			
		||||
        automake \
 | 
			
		||||
        nasm \
 | 
			
		||||
        speexdsp-devel \
 | 
			
		||||
        libpulse-devel \
 | 
			
		||||
        libcanberra-devel \
 | 
			
		||||
        libcurl-devel \
 | 
			
		||||
        libtool \
 | 
			
		||||
        pcre-devel \
 | 
			
		||||
        yaml-cpp-devel \
 | 
			
		||||
        libXext-devel \
 | 
			
		||||
        libXfixes-devel \
 | 
			
		||||
        yasm \
 | 
			
		||||
        speex-devel \
 | 
			
		||||
        libgsm-devel \
 | 
			
		||||
        chrpath \
 | 
			
		||||
        check \
 | 
			
		||||
        astyle \
 | 
			
		||||
        gettext-devel \
 | 
			
		||||
        which \
 | 
			
		||||
        alsa-lib-devel \
 | 
			
		||||
        systemd-devel \
 | 
			
		||||
        libuuid-devel \
 | 
			
		||||
        uuid-devel \
 | 
			
		||||
        libopus-devel \
 | 
			
		||||
        patch \
 | 
			
		||||
        jsoncpp-devel \
 | 
			
		||||
        webkit2gtk3-devel \
 | 
			
		||||
        libcryptopp-devel \
 | 
			
		||||
        libva-devel \
 | 
			
		||||
        libvdpau-devel \
 | 
			
		||||
        msgpack-c-devel \
 | 
			
		||||
        msgpack-cxx-devel \
 | 
			
		||||
        clutter-devel \
 | 
			
		||||
        openssl-devel \
 | 
			
		||||
        clutter-gtk-devel \
 | 
			
		||||
        libnma-devel \
 | 
			
		||||
        libcryptopp-devel \
 | 
			
		||||
        libexpat-devel \
 | 
			
		||||
        gnome-icon-theme-symbolic \
 | 
			
		||||
        libgsm-devel \
 | 
			
		||||
        gtk3-devel \
 | 
			
		||||
        libappindicator-devel \
 | 
			
		||||
        sqlite-devel \
 | 
			
		||||
        ffmpeg-4-libavutil-devel \
 | 
			
		||||
        gtk3-devel\
 | 
			
		||||
        qrencode-devel \
 | 
			
		||||
        python310 \
 | 
			
		||||
        python3-python-dateutil \
 | 
			
		||||
        python3-html5lib \
 | 
			
		||||
        libsndfile-devel \
 | 
			
		||||
        libdrm \
 | 
			
		||||
        gperf \
 | 
			
		||||
        bison \
 | 
			
		||||
        flex \
 | 
			
		||||
        ffmpeg ffmpeg-devel \
 | 
			
		||||
        nodejs20 \
 | 
			
		||||
        mozilla-nss-devel \
 | 
			
		||||
        python-xml \
 | 
			
		||||
        python3-six \
 | 
			
		||||
        python3-importlib-metadata \
 | 
			
		||||
        libxcb* \
 | 
			
		||||
        libxkb* \
 | 
			
		||||
        libX11-devel \
 | 
			
		||||
        libXrender-devel \
 | 
			
		||||
        libfreetype6 \
 | 
			
		||||
        xcb-util-image-devel \
 | 
			
		||||
        xcb-util-keysyms-devel \
 | 
			
		||||
        xcb-util-renderutil-devel \
 | 
			
		||||
        xcb-util-wm-devel \
 | 
			
		||||
        xorg-x11-devel \
 | 
			
		||||
        xz \
 | 
			
		||||
        xkeyboard-config \
 | 
			
		||||
        libnotify \
 | 
			
		||||
        argon2-devel \
 | 
			
		||||
        libxshmfence-devel \
 | 
			
		||||
        xproto-devel \
 | 
			
		||||
        xcb-proto-devel \
 | 
			
		||||
        xcb-* \
 | 
			
		||||
        xorg-* \
 | 
			
		||||
        vulkan-devel \
 | 
			
		||||
        ninja \
 | 
			
		||||
        gstreamer-devel \
 | 
			
		||||
        gstreamer-plugins-good \
 | 
			
		||||
        gstreamer-plugins-bad-devel \
 | 
			
		||||
        gstreamer-plugins-base-devel \
 | 
			
		||||
        cmake \
 | 
			
		||||
        wget
 | 
			
		||||
 | 
			
		||||
# openSUSE Leap 15.5 comes with Python 3.6 by default,
 | 
			
		||||
# but we need at least 3.7 to compile Qt 6.6.1
 | 
			
		||||
RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.10 /usr/bin/python3
 | 
			
		||||
 | 
			
		||||
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 50
 | 
			
		||||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 50
 | 
			
		||||
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
 | 
			
		||||
 | 
			
		||||
ENV CC=gcc
 | 
			
		||||
ENV CXX=g++
 | 
			
		||||
CMD ["/opt/build-package-rpm.sh"]
 | 
			
		||||
@ -71,6 +71,10 @@ COPY --from=builder /snap/bin/snapcraft /snap/bin/snapcraft
 | 
			
		||||
# Generate locale and install dependencies.
 | 
			
		||||
RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes snapd sudo apt-transport-https locales && locale-gen en_US.UTF-8
 | 
			
		||||
 | 
			
		||||
# Install CMake 3.21 for Qt 6
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 | 
			
		||||
RUN /opt/install-cmake.sh
 | 
			
		||||
 | 
			
		||||
# Set the proper environment.
 | 
			
		||||
ENV LANG="en_US.UTF-8"
 | 
			
		||||
ENV LANGUAGE="en_US:en"
 | 
			
		||||
 | 
			
		||||
@ -11,8 +11,13 @@ RUN apt-get update && \
 | 
			
		||||
        wget \
 | 
			
		||||
        curl
 | 
			
		||||
 | 
			
		||||
# Installing GCC 10 because GCC 9 (the default on Ubuntu 20.04) doesn't support
 | 
			
		||||
# the --std=gnu++20 option, which is used by one of Qt 6.6.1's dependencies
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
 | 
			
		||||
RUN /opt/install-gcc-debian.sh 10
 | 
			
		||||
 | 
			
		||||
# nodejs
 | 
			
		||||
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
 | 
			
		||||
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
 | 
			
		||||
RUN apt install nodejs -y
 | 
			
		||||
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 | 
			
		||||
@ -23,7 +28,7 @@ RUN /opt/prebuild-package-debian.sh qt-deps
 | 
			
		||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
 | 
			
		||||
RUN /opt/prebuild-package-debian.sh jami-deps
 | 
			
		||||
 | 
			
		||||
# Install CMake 3.19 for Qt 6
 | 
			
		||||
# Install CMake 3.21 for Qt 6
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
 | 
			
		||||
RUN /opt/install-cmake.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,12 @@ RUN apt-get update && \
 | 
			
		||||
        devscripts \
 | 
			
		||||
        equivs \
 | 
			
		||||
        python-is-python3 \
 | 
			
		||||
        wget
 | 
			
		||||
        wget \
 | 
			
		||||
        curl
 | 
			
		||||
 | 
			
		||||
# nodejs
 | 
			
		||||
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
 | 
			
		||||
RUN apt install nodejs -y
 | 
			
		||||
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,14 @@ RUN apt-get update && \
 | 
			
		||||
        python-is-python3 \
 | 
			
		||||
        wget
 | 
			
		||||
 | 
			
		||||
# The default compiler on Ubuntu 23.10, GCC 13.2.0, can't build one of Qt 6.6.1's
 | 
			
		||||
# dependencies, see:
 | 
			
		||||
# https://github.com/qt/qtquick3d-assimp/commit/253f8bfa621a9fa6cd2c36291cdaa8c60c99322c
 | 
			
		||||
# The linked commit above fixes the problem and is included in more recent versions of Qt.
 | 
			
		||||
# For now, we use GCC 12 as a temporary workaround:
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh
 | 
			
		||||
RUN /opt/install-gcc-debian.sh 12
 | 
			
		||||
 | 
			
		||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
 | 
			
		||||
 | 
			
		||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
# Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
;;; Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
;;; Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
;;;
 | 
			
		||||
;;; Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
@ -314,7 +314,7 @@ Build-Depends: debhelper (>= 9),
 | 
			
		||||
               libxtst-dev,
 | 
			
		||||
               mesa-common-dev,
 | 
			
		||||
               ninja-build,
 | 
			
		||||
               nodejs (>= 10.19),
 | 
			
		||||
               nodejs (>= 14.21),
 | 
			
		||||
# pkg-config,
 | 
			
		||||
# pkg-kde-tools,
 | 
			
		||||
               protobuf-compiler,
 | 
			
		||||
 | 
			
		||||
@ -1,81 +0,0 @@
 | 
			
		||||
From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Rémi Denis-Courmont <remi@remlab.net>
 | 
			
		||||
Date: Sun, 16 Jul 2023 18:18:02 +0300
 | 
			
		||||
Subject: [PATCH] Fix ffmpeg assembly with newer binutil
 | 
			
		||||
 | 
			
		||||
avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
 | 
			
		||||
 | 
			
		||||
Fixes assembling with binutil as >= 2.41
 | 
			
		||||
 | 
			
		||||
FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
 | 
			
		||||
 | 
			
		||||
Deals with: "Error: operand type mismatch for `shr'"
 | 
			
		||||
 | 
			
		||||
Fixes: QTBUG-116649
 | 
			
		||||
Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
 | 
			
		||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
 | 
			
		||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
 | 
			
		||||
(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
 | 
			
		||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
 | 
			
		||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
index 6298f5e..ca7e2df 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
@@ -35,12 +35,20 @@
 | 
			
		||||
 static av_always_inline av_const int MULL(int a, int b, unsigned shift)
 | 
			
		||||
 {
 | 
			
		||||
     int rt, dummy;
 | 
			
		||||
+    if (__builtin_constant_p(shift))
 | 
			
		||||
     __asm__ (
 | 
			
		||||
         "imull %3               \n\t"
 | 
			
		||||
         "shrdl %4, %%edx, %%eax \n\t"
 | 
			
		||||
         :"=a"(rt), "=d"(dummy)
 | 
			
		||||
-        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
 | 
			
		||||
+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ (
 | 
			
		||||
+            "imull %3               \n\t"
 | 
			
		||||
+            "shrdl %4, %%edx, %%eax \n\t"
 | 
			
		||||
+            :"=a"(rt), "=d"(dummy)
 | 
			
		||||
+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
 | 
			
		||||
+        );
 | 
			
		||||
     return rt;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
@@ -113,19 +121,31 @@
 | 
			
		||||
 // avoid +32 for shift optimization (gcc should do that ...)
 | 
			
		||||
 #define NEG_SSR32 NEG_SSR32
 | 
			
		||||
 static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
 | 
			
		||||
+    if (__builtin_constant_p(s))
 | 
			
		||||
     __asm__ ("sarl %1, %0\n\t"
 | 
			
		||||
          : "+r" (a)
 | 
			
		||||
-         : "ic" ((uint8_t)(-s))
 | 
			
		||||
+         : "i" (-s & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ ("sarl %1, %0\n\t"
 | 
			
		||||
+               : "+r" (a)
 | 
			
		||||
+               : "c" ((uint8_t)(-s))
 | 
			
		||||
+        );
 | 
			
		||||
     return a;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 #define NEG_USR32 NEG_USR32
 | 
			
		||||
 static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
 | 
			
		||||
+    if (__builtin_constant_p(s))
 | 
			
		||||
     __asm__ ("shrl %1, %0\n\t"
 | 
			
		||||
          : "+r" (a)
 | 
			
		||||
-         : "ic" ((uint8_t)(-s))
 | 
			
		||||
+         : "i" (-s & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ ("shrl %1, %0\n\t"
 | 
			
		||||
+               : "+r" (a)
 | 
			
		||||
+               : "c" ((uint8_t)(-s))
 | 
			
		||||
+        );
 | 
			
		||||
     return a;
 | 
			
		||||
 }
 | 
			
		||||
@ -1,16 +0,0 @@
 | 
			
		||||
 qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
index 3488120..120e47a 100644
 | 
			
		||||
--- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
 | 
			
		||||
     }
 | 
			
		||||
     catch (const DeadlyImportError& e)
 | 
			
		||||
     {
 | 
			
		||||
-        if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
 | 
			
		||||
+        if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
 | 
			
		||||
             throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
 | 
			
		||||
         }
 | 
			
		||||
         throw;
 | 
			
		||||
@ -1,81 +0,0 @@
 | 
			
		||||
From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Rémi Denis-Courmont <remi@remlab.net>
 | 
			
		||||
Date: Sun, 16 Jul 2023 18:18:02 +0300
 | 
			
		||||
Subject: [PATCH] Fix ffmpeg assembly with newer binutil
 | 
			
		||||
 | 
			
		||||
avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
 | 
			
		||||
 | 
			
		||||
Fixes assembling with binutil as >= 2.41
 | 
			
		||||
 | 
			
		||||
FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
 | 
			
		||||
 | 
			
		||||
Deals with: "Error: operand type mismatch for `shr'"
 | 
			
		||||
 | 
			
		||||
Fixes: QTBUG-116649
 | 
			
		||||
Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
 | 
			
		||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
 | 
			
		||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
 | 
			
		||||
(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
 | 
			
		||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
 | 
			
		||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
index 6298f5e..ca7e2df 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
@@ -35,12 +35,20 @@
 | 
			
		||||
 static av_always_inline av_const int MULL(int a, int b, unsigned shift)
 | 
			
		||||
 {
 | 
			
		||||
     int rt, dummy;
 | 
			
		||||
+    if (__builtin_constant_p(shift))
 | 
			
		||||
     __asm__ (
 | 
			
		||||
         "imull %3               \n\t"
 | 
			
		||||
         "shrdl %4, %%edx, %%eax \n\t"
 | 
			
		||||
         :"=a"(rt), "=d"(dummy)
 | 
			
		||||
-        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
 | 
			
		||||
+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ (
 | 
			
		||||
+            "imull %3               \n\t"
 | 
			
		||||
+            "shrdl %4, %%edx, %%eax \n\t"
 | 
			
		||||
+            :"=a"(rt), "=d"(dummy)
 | 
			
		||||
+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
 | 
			
		||||
+        );
 | 
			
		||||
     return rt;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
@@ -113,19 +121,31 @@
 | 
			
		||||
 // avoid +32 for shift optimization (gcc should do that ...)
 | 
			
		||||
 #define NEG_SSR32 NEG_SSR32
 | 
			
		||||
 static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
 | 
			
		||||
+    if (__builtin_constant_p(s))
 | 
			
		||||
     __asm__ ("sarl %1, %0\n\t"
 | 
			
		||||
          : "+r" (a)
 | 
			
		||||
-         : "ic" ((uint8_t)(-s))
 | 
			
		||||
+         : "i" (-s & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ ("sarl %1, %0\n\t"
 | 
			
		||||
+               : "+r" (a)
 | 
			
		||||
+               : "c" ((uint8_t)(-s))
 | 
			
		||||
+        );
 | 
			
		||||
     return a;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 #define NEG_USR32 NEG_USR32
 | 
			
		||||
 static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
 | 
			
		||||
+    if (__builtin_constant_p(s))
 | 
			
		||||
     __asm__ ("shrl %1, %0\n\t"
 | 
			
		||||
          : "+r" (a)
 | 
			
		||||
-         : "ic" ((uint8_t)(-s))
 | 
			
		||||
+         : "i" (-s & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ ("shrl %1, %0\n\t"
 | 
			
		||||
+               : "+r" (a)
 | 
			
		||||
+               : "c" ((uint8_t)(-s))
 | 
			
		||||
+        );
 | 
			
		||||
     return a;
 | 
			
		||||
 }
 | 
			
		||||
@ -1,16 +0,0 @@
 | 
			
		||||
 qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
index 3488120..120e47a 100644
 | 
			
		||||
--- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
 | 
			
		||||
     }
 | 
			
		||||
     catch (const DeadlyImportError& e)
 | 
			
		||||
     {
 | 
			
		||||
-        if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
 | 
			
		||||
+        if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
 | 
			
		||||
             throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
 | 
			
		||||
         }
 | 
			
		||||
         throw;
 | 
			
		||||
@ -1,433 +0,0 @@
 | 
			
		||||
 qtbase/src/corelib/debug_script.py                                                                            | 2 +-
 | 
			
		||||
 qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py                       | 2 +-
 | 
			
		||||
 qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py                  | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py                                  | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py                    | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py                                   | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py                          | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py                | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py                | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py                         | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py        | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py                                | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py                       | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py                      | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py                 | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py                                              | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py                    | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py                                           | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py                                             | 2 +-
 | 
			
		||||
 .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py    | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py   | 2 +-
 | 
			
		||||
 .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py        | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py         | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py  | 2 +-
 | 
			
		||||
 .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py       | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py   | 2 +-
 | 
			
		||||
 .../3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py  | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py             | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py            | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py                                       | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py                       | 2 +-
 | 
			
		||||
 31 files changed, 31 insertions(+), 31 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/qtbase/src/corelib/debug_script.py b/qtbase/src/corelib/debug_script.py
 | 
			
		||||
index f6207c6104..663c8e0ac1 100644
 | 
			
		||||
--- a/qtbase/src/corelib/debug_script.py
 | 
			
		||||
+++ b/qtbase/src/corelib/debug_script.py
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 | 
			
		||||
 import os
 | 
			
		||||
 import sys
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from distutils.version import LooseVersion
 | 
			
		||||
 | 
			
		||||
diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
 | 
			
		||||
index 681039d34b..a1fe56fa05 100644
 | 
			
		||||
--- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
 | 
			
		||||
+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
 | 
			
		||||
@@ -16,7 +16,7 @@ import subprocess
 | 
			
		||||
 import sys
 | 
			
		||||
 import tempfile
 | 
			
		||||
 import time
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 # from TestCasePackagerConfig import *
 | 
			
		||||
 | 
			
		||||
diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
 | 
			
		||||
index 92d4e6139b..7a18e12ced 100644
 | 
			
		||||
--- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
 | 
			
		||||
+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
 | 
			
		||||
@@ -7,7 +7,7 @@ import unittest
 | 
			
		||||
 | 
			
		||||
 import os
 | 
			
		||||
 import yaml
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 # add parent dir to search path
 | 
			
		||||
 import sys
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
 | 
			
		||||
index c7412927c8..ad2caff318 100755
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
 | 
			
		||||
 import os
 | 
			
		||||
 import sys
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import tempfile
 | 
			
		||||
 import unittest
 | 
			
		||||
 import PRESUBMIT
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
 | 
			
		||||
index 5daee773ba..2d6b124162 100755
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 """
 | 
			
		||||
 from __future__ import print_function
 | 
			
		||||
 import abc
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import optparse
 | 
			
		||||
 import os
 | 
			
		||||
 import re
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
 | 
			
		||||
index bf626f5479..3fae129aaa 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
 import errno
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
 | 
			
		||||
index ff5753a291..04fc34f742 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import shutil
 | 
			
		||||
 import sys
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
 | 
			
		||||
index 32c884a8c0..e761faa54c 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
 | 
			
		||||
index 95a916db08..4331e2fbfa 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
 | 
			
		||||
index 62798631db..28e9dbf705 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
 | 
			
		||||
index cba249b0f3..5a4051827a 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
 | 
			
		||||
index 4a2fefc712..11a9879cb7 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
 | 
			
		||||
index cc17ae0253..bcc944f06b 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
 | 
			
		||||
index bd72830e54..f2fdc9ae28 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
 | 
			
		||||
index 1feb303a48..8428de61bb 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 angle_presubmit_utils_unittest.py: Top-level unittest script for ANGLE presubmit checks.
 | 
			
		||||
 """
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os
 | 
			
		||||
 import unittest
 | 
			
		||||
 from angle_presubmit_utils import *
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
 | 
			
		||||
index ed4f38c67b..cac734cefa 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
 | 
			
		||||
@@ -7,7 +7,7 @@ See https://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
 | 
			
		||||
 for more details about the presubmit API built into gcl.
 | 
			
		||||
 """
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import inspect
 | 
			
		||||
 import os
 | 
			
		||||
 import re
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
 | 
			
		||||
index 0244c9787e..f535afe99c 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
 | 
			
		||||
@@ -32,7 +32,7 @@ if PY3:
 | 
			
		||||
     memoryview_type = memoryview
 | 
			
		||||
     struct_bool_decl = "?"
 | 
			
		||||
 else:
 | 
			
		||||
-    import imp
 | 
			
		||||
+    import importlib
 | 
			
		||||
     string_types = (unicode,)
 | 
			
		||||
     if PY26 or PY27:
 | 
			
		||||
         binary_types = (str,bytearray)
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
 | 
			
		||||
index 8430390eea..29212205bc 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
 | 
			
		||||
@@ -732,7 +732,7 @@ class Environment(object):
 | 
			
		||||
                 )
 | 
			
		||||
                 py_compile = False
 | 
			
		||||
             else:
 | 
			
		||||
-                import imp
 | 
			
		||||
+                import importlib
 | 
			
		||||
                 import marshal
 | 
			
		||||
 | 
			
		||||
                 py_header = imp.get_magic() + u"\xff\xff\xff\xff".encode("iso-8859-15")
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
 | 
			
		||||
index 06bb8d99f5..05089dc982 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
 | 
			
		||||
@@ -115,7 +115,7 @@ if py3k:
 | 
			
		||||
             return module
 | 
			
		||||
 | 
			
		||||
 else:
 | 
			
		||||
-    import imp
 | 
			
		||||
+    import importlib
 | 
			
		||||
 | 
			
		||||
     def load_module(module_id, path):
 | 
			
		||||
         fp = open(path, "rb")
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
 | 
			
		||||
index a7dc683365..68b6804c78 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # ==============================================================================
 | 
			
		||||
 """Tests for call_trees module."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from tensorflow.python.autograph.converters import call_trees
 | 
			
		||||
 from tensorflow.python.autograph.converters import functions
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
 | 
			
		||||
index 81a7fde808..1370f900fd 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # ==============================================================================
 | 
			
		||||
 """Tests for converter module."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from tensorflow.python.autograph.core import converter
 | 
			
		||||
 from tensorflow.python.autograph.core import converter_testing
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
 | 
			
		||||
index b93cbb627b..452ec71f5b 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
 | 
			
		||||
@@ -15,7 +15,7 @@
 | 
			
		||||
 """Base class for tests in this module."""
 | 
			
		||||
 | 
			
		||||
 import contextlib
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import inspect
 | 
			
		||||
 import sys
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
 | 
			
		||||
index 9a62d7c0d2..7ec4fa6dca 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
 | 
			
		||||
@@ -19,7 +19,7 @@ import collections
 | 
			
		||||
 import contextlib
 | 
			
		||||
 import functools
 | 
			
		||||
 import gc
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import inspect
 | 
			
		||||
 import os
 | 
			
		||||
 import re
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
 | 
			
		||||
index 852af3efe7..6456c50446 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # ==============================================================================
 | 
			
		||||
 """Tests for conversion module."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import sys
 | 
			
		||||
 import types
 | 
			
		||||
 import weakref
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
 | 
			
		||||
index a50a64534a..ba0f31afa2 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
 | 
			
		||||
@@ -17,7 +17,7 @@
 | 
			
		||||
 import abc
 | 
			
		||||
 import collections
 | 
			
		||||
 import functools
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import textwrap
 | 
			
		||||
 | 
			
		||||
 import six
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
 | 
			
		||||
index 29f38d853a..7ca88fa371 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # ==============================================================================
 | 
			
		||||
 """Tests for templates module."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from absl.testing import parameterized
 | 
			
		||||
 import gast
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
 | 
			
		||||
index e46460574b..a40fea6568 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # =============================================================================
 | 
			
		||||
 """Tests for create_python_api."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import sys
 | 
			
		||||
 | 
			
		||||
 from tensorflow.python.platform import test
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
 | 
			
		||||
index 73d1742714..ea77dd7647 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
 import importlib
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from .browsers import product_list
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
 | 
			
		||||
index 6a744472b5..9175cb5d34 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
 import copy
 | 
			
		||||
 import functools
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import io
 | 
			
		||||
 import os
 | 
			
		||||
 from collections import OrderedDict, defaultdict
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
 | 
			
		||||
index 6912b6f3c0..7d851f7f76 100755
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
 | 
			
		||||
@@ -16,7 +16,7 @@
 | 
			
		||||
 | 
			
		||||
 from __future__ import print_function
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import optparse
 | 
			
		||||
 import os
 | 
			
		||||
 import pipes
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
 | 
			
		||||
index 1c2aba80af..55260d697e 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
 | 
			
		||||
@@ -10,7 +10,7 @@ from __future__ import print_function
 | 
			
		||||
 | 
			
		||||
 import os
 | 
			
		||||
 import re
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from _monkeyYaml import load as yamlLoad
 | 
			
		||||
 | 
			
		||||
@ -1,45 +0,0 @@
 | 
			
		||||
diff --git a/qtbase/src/corelib/global/qnamespace.h b/qtbase/src/corelib/global/qnamespace.h
 | 
			
		||||
index 8a2769a3ed..584d3620c9 100644
 | 
			
		||||
--- a/qtbase/src/corelib/global/qnamespace.h
 | 
			
		||||
+++ b/qtbase/src/corelib/global/qnamespace.h
 | 
			
		||||
@@ -832,10 +832,6 @@ namespace Qt {
 | 
			
		||||
         Key_Dead_Small_Schwa    = 0x0100128a,
 | 
			
		||||
         Key_Dead_Capital_Schwa  = 0x0100128b,
 | 
			
		||||
         Key_Dead_Greek          = 0x0100128c,
 | 
			
		||||
-        Key_Dead_Lowline        = 0x01001290,
 | 
			
		||||
-        Key_Dead_Aboveverticalline = 0x01001291,
 | 
			
		||||
-        Key_Dead_Belowverticalline = 0x01001292,
 | 
			
		||||
-        Key_Dead_Longsolidusoverlay = 0x01001293,
 | 
			
		||||
 | 
			
		||||
         // multimedia/internet keys - ignored by default - see QKeyEvent c'tor
 | 
			
		||||
         Key_Back  = 0x01000061,
 | 
			
		||||
diff --git a/qtbase/src/corelib/global/qnamespace.qdoc b/qtbase/src/corelib/global/qnamespace.qdoc
 | 
			
		||||
index 78c69176d8..1623517b5a 100644
 | 
			
		||||
--- a/qtbase/src/corelib/global/qnamespace.qdoc
 | 
			
		||||
+++ b/qtbase/src/corelib/global/qnamespace.qdoc
 | 
			
		||||
@@ -1654,10 +1654,6 @@
 | 
			
		||||
     \value Key_Dead_Small_Schwa
 | 
			
		||||
     \value Key_Dead_Capital_Schwa
 | 
			
		||||
     \value Key_Dead_Greek
 | 
			
		||||
-    \value Key_Dead_Lowline
 | 
			
		||||
-    \value Key_Dead_Aboveverticalline
 | 
			
		||||
-    \value Key_Dead_Belowverticalline
 | 
			
		||||
-    \value Key_Dead_Longsolidusoverlay
 | 
			
		||||
     \value Key_Back
 | 
			
		||||
     \value Key_Forward
 | 
			
		||||
     \value Key_Stop
 | 
			
		||||
diff --git a/qtbase/src/gui/platform/unix/qxkbcommon.cpp b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
 | 
			
		||||
index fc014b38e2..af1cbbd42a 100644
 | 
			
		||||
--- a/qtbase/src/gui/platform/unix/qxkbcommon.cpp
 | 
			
		||||
+++ b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
 | 
			
		||||
@@ -239,10 +239,6 @@ static constexpr const auto KeyTbl = qMakeArray(
 | 
			
		||||
         Xkb2Qt<XKB_KEY_dead_small_schwa,        Qt::Key_Dead_Small_Schwa>,
 | 
			
		||||
         Xkb2Qt<XKB_KEY_dead_capital_schwa,      Qt::Key_Dead_Capital_Schwa>,
 | 
			
		||||
         Xkb2Qt<XKB_KEY_dead_greek,              Qt::Key_Dead_Greek>,
 | 
			
		||||
-        Xkb2Qt<XKB_KEY_dead_lowline,            Qt::Key_Dead_Lowline>,
 | 
			
		||||
-        Xkb2Qt<XKB_KEY_dead_aboveverticalline,  Qt::Key_Dead_Aboveverticalline>,
 | 
			
		||||
-        Xkb2Qt<XKB_KEY_dead_belowverticalline,  Qt::Key_Dead_Belowverticalline>,
 | 
			
		||||
-        Xkb2Qt<XKB_KEY_dead_longsolidusoverlay, Qt::Key_Dead_Longsolidusoverlay>,
 | 
			
		||||
 | 
			
		||||
         // Special keys from X.org - This include multimedia keys,
 | 
			
		||||
         // wireless/bluetooth/uwb keys, special launcher keys, etc.
 | 
			
		||||
@ -1,29 +0,0 @@
 | 
			
		||||
 qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp | 7 ++++++-
 | 
			
		||||
 1 file changed, 6 insertions(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
 | 
			
		||||
index ec212f5a35..58bf4dce7d 100644
 | 
			
		||||
--- a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
 | 
			
		||||
+++ b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
 | 
			
		||||
@@ -37,7 +37,10 @@ static Libs loadLibs()
 | 
			
		||||
     return {};
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-constexpr size_t symbolsCount = 39
 | 
			
		||||
+constexpr size_t symbolsCount = 38
 | 
			
		||||
+#if VA_CHECK_VERSION(1, 9, 0)
 | 
			
		||||
+        + 1
 | 
			
		||||
+#endif
 | 
			
		||||
 #ifdef DYNAMIC_RESOLVE_VA_DRM_SYMBOLS
 | 
			
		||||
         + 1
 | 
			
		||||
 #endif
 | 
			
		||||
@@ -79,7 +82,9 @@ DEFINE_FUNC(vaEndPicture, 2, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
 DEFINE_FUNC(vaCreateBuffer, 7, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
 DEFINE_FUNC(vaMapBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
 DEFINE_FUNC(vaUnmapBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
+#if VA_CHECK_VERSION(1, 9, 0)
 | 
			
		||||
 DEFINE_FUNC(vaSyncBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
+#endif
 | 
			
		||||
 DEFINE_FUNC(vaDestroyBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
 
 | 
			
		||||
 DEFINE_FUNC(vaCreateSurfaces, 8, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
@ -1,4 +0,0 @@
 | 
			
		||||
0001-fix-mathops.patch
 | 
			
		||||
0002-fix-binary-tokenizer.patch
 | 
			
		||||
0015-remove-deleted-xkb-keys.patch
 | 
			
		||||
0016-fix-vaapi.patch
 | 
			
		||||
@ -68,7 +68,7 @@ Depends: gnupg,
 | 
			
		||||
Replaces: jami,
 | 
			
		||||
          jami-libclient,
 | 
			
		||||
          jami-daemon,
 | 
			
		||||
          libqt-jami (>= 6.5.3),
 | 
			
		||||
          libqt-jami (>= 6.6.1),
 | 
			
		||||
Conflicts: jami,
 | 
			
		||||
           jami-libclient,
 | 
			
		||||
           jami-libclient-gnome,
 | 
			
		||||
@ -84,7 +84,7 @@ Architecture: any
 | 
			
		||||
Depends: ${shlibs:Depends},
 | 
			
		||||
         ${misc:Depends},
 | 
			
		||||
         jami-daemon (=${binary:Version}),
 | 
			
		||||
         libqt-jami (>= 6.5.3)
 | 
			
		||||
         libqt-jami (>= 6.6.1)
 | 
			
		||||
Provides: jami-qt
 | 
			
		||||
Replaces: jami-all,
 | 
			
		||||
          jami-libclient (<= 20220516.0214.9b42ad3~dfsg1-1)
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ Upstream-Name: jami
 | 
			
		||||
Upstream-Contact: Amin Bandali <bandali@gnu.org>
 | 
			
		||||
Source: https://dl.jami.net/release/tarballs/
 | 
			
		||||
Files: *
 | 
			
		||||
Copyright: 2004-2023 Savoir-faire Linux Inc.
 | 
			
		||||
Copyright: 2004-2024 Savoir-faire Linux Inc.
 | 
			
		||||
License: GPL-3+
 | 
			
		||||
Comment: Upstream embeds everything that is needed to build Jami inside the release tarball.
 | 
			
		||||
 Everything that is already in Debian has been removed.
 | 
			
		||||
@ -50,7 +50,7 @@ Files: daemon/src/media/audio/opensl/audio_common.h
 | 
			
		||||
       daemon/src/media/audio/opensl/audio_recorder.h
 | 
			
		||||
       daemon/src/media/audio/opensl/buf_manager.h
 | 
			
		||||
Copyright: 2015 The Android Open Source Project
 | 
			
		||||
           2015-2023 Savoir-faire Linux Inc.
 | 
			
		||||
           2015-2024 Savoir-faire Linux Inc.
 | 
			
		||||
License: Apache-2.0
 | 
			
		||||
 | 
			
		||||
Files: daemon/extras/tools/bootstrap
 | 
			
		||||
 | 
			
		||||
@ -26,10 +26,6 @@ License:       GPLv3+
 | 
			
		||||
Vendor:        Savoir-faire Linux Inc.
 | 
			
		||||
URL:           https://jami.net/
 | 
			
		||||
Source:        jami-libqt-%{version}.tar.xz
 | 
			
		||||
Patch0:        0001-fix-mathops.patch
 | 
			
		||||
Patch1:        0002-fix-binary-tokenizer.patch
 | 
			
		||||
Patch2:        0015-remove-deleted-xkb-keys.patch
 | 
			
		||||
Patch3:        0016-fix-vaapi.patch
 | 
			
		||||
 | 
			
		||||
%global gst 0.10
 | 
			
		||||
%if 0%{?fedora} || 0%{?rhel} > 7
 | 
			
		||||
@ -65,10 +61,6 @@ This package contains Qt libraries for Jami.
 | 
			
		||||
 | 
			
		||||
%prep
 | 
			
		||||
%setup -n qt-everywhere-src-%{version}
 | 
			
		||||
%patch0 -p1
 | 
			
		||||
%patch1 -p1
 | 
			
		||||
%patch2 -p1
 | 
			
		||||
%patch3 -p1
 | 
			
		||||
 | 
			
		||||
%build
 | 
			
		||||
echo "Building Qt using %{job_count} parallel jobs"
 | 
			
		||||
 | 
			
		||||
@ -1,81 +0,0 @@
 | 
			
		||||
From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Rémi Denis-Courmont <remi@remlab.net>
 | 
			
		||||
Date: Sun, 16 Jul 2023 18:18:02 +0300
 | 
			
		||||
Subject: [PATCH] Fix ffmpeg assembly with newer binutil
 | 
			
		||||
 | 
			
		||||
avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
 | 
			
		||||
 | 
			
		||||
Fixes assembling with binutil as >= 2.41
 | 
			
		||||
 | 
			
		||||
FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
 | 
			
		||||
 | 
			
		||||
Deals with: "Error: operand type mismatch for `shr'"
 | 
			
		||||
 | 
			
		||||
Fixes: QTBUG-116649
 | 
			
		||||
Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
 | 
			
		||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
 | 
			
		||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
 | 
			
		||||
(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
 | 
			
		||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
 | 
			
		||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
index 6298f5e..ca7e2df 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
@@ -35,12 +35,20 @@
 | 
			
		||||
 static av_always_inline av_const int MULL(int a, int b, unsigned shift)
 | 
			
		||||
 {
 | 
			
		||||
     int rt, dummy;
 | 
			
		||||
+    if (__builtin_constant_p(shift))
 | 
			
		||||
     __asm__ (
 | 
			
		||||
         "imull %3               \n\t"
 | 
			
		||||
         "shrdl %4, %%edx, %%eax \n\t"
 | 
			
		||||
         :"=a"(rt), "=d"(dummy)
 | 
			
		||||
-        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
 | 
			
		||||
+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ (
 | 
			
		||||
+            "imull %3               \n\t"
 | 
			
		||||
+            "shrdl %4, %%edx, %%eax \n\t"
 | 
			
		||||
+            :"=a"(rt), "=d"(dummy)
 | 
			
		||||
+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
 | 
			
		||||
+        );
 | 
			
		||||
     return rt;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
@@ -113,19 +121,31 @@
 | 
			
		||||
 // avoid +32 for shift optimization (gcc should do that ...)
 | 
			
		||||
 #define NEG_SSR32 NEG_SSR32
 | 
			
		||||
 static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
 | 
			
		||||
+    if (__builtin_constant_p(s))
 | 
			
		||||
     __asm__ ("sarl %1, %0\n\t"
 | 
			
		||||
          : "+r" (a)
 | 
			
		||||
-         : "ic" ((uint8_t)(-s))
 | 
			
		||||
+         : "i" (-s & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ ("sarl %1, %0\n\t"
 | 
			
		||||
+               : "+r" (a)
 | 
			
		||||
+               : "c" ((uint8_t)(-s))
 | 
			
		||||
+        );
 | 
			
		||||
     return a;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 #define NEG_USR32 NEG_USR32
 | 
			
		||||
 static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
 | 
			
		||||
+    if (__builtin_constant_p(s))
 | 
			
		||||
     __asm__ ("shrl %1, %0\n\t"
 | 
			
		||||
          : "+r" (a)
 | 
			
		||||
-         : "ic" ((uint8_t)(-s))
 | 
			
		||||
+         : "i" (-s & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ ("shrl %1, %0\n\t"
 | 
			
		||||
+               : "+r" (a)
 | 
			
		||||
+               : "c" ((uint8_t)(-s))
 | 
			
		||||
+        );
 | 
			
		||||
     return a;
 | 
			
		||||
 }
 | 
			
		||||
@ -1,16 +0,0 @@
 | 
			
		||||
 qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
index 3488120..120e47a 100644
 | 
			
		||||
--- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
 | 
			
		||||
     }
 | 
			
		||||
     catch (const DeadlyImportError& e)
 | 
			
		||||
     {
 | 
			
		||||
-        if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
 | 
			
		||||
+        if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
 | 
			
		||||
             throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
 | 
			
		||||
         }
 | 
			
		||||
         throw;
 | 
			
		||||
@ -1,81 +0,0 @@
 | 
			
		||||
From ecae5d93b0a89e2b8c16a2227b2d176f58579d04 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Rémi Denis-Courmont <remi@remlab.net>
 | 
			
		||||
Date: Sun, 16 Jul 2023 18:18:02 +0300
 | 
			
		||||
Subject: [PATCH] Fix ffmpeg assembly with newer binutil
 | 
			
		||||
 | 
			
		||||
avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
 | 
			
		||||
 | 
			
		||||
Fixes assembling with binutil as >= 2.41
 | 
			
		||||
 | 
			
		||||
FFmpeg commit effadce6c756247ea8bae32dc13bb3e6f464f0eb.
 | 
			
		||||
 | 
			
		||||
Deals with: "Error: operand type mismatch for `shr'"
 | 
			
		||||
 | 
			
		||||
Fixes: QTBUG-116649
 | 
			
		||||
Change-Id: I094e8c23fed4a61fba3f1e3a9c73c016d129d830
 | 
			
		||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/495990
 | 
			
		||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
 | 
			
		||||
(cherry picked from commit 29354c7c7def7bdc66bcd25d401677fd9421f657)
 | 
			
		||||
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/509219
 | 
			
		||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
index 6298f5e..ca7e2df 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h
 | 
			
		||||
@@ -35,12 +35,20 @@
 | 
			
		||||
 static av_always_inline av_const int MULL(int a, int b, unsigned shift)
 | 
			
		||||
 {
 | 
			
		||||
     int rt, dummy;
 | 
			
		||||
+    if (__builtin_constant_p(shift))
 | 
			
		||||
     __asm__ (
 | 
			
		||||
         "imull %3               \n\t"
 | 
			
		||||
         "shrdl %4, %%edx, %%eax \n\t"
 | 
			
		||||
         :"=a"(rt), "=d"(dummy)
 | 
			
		||||
-        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
 | 
			
		||||
+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ (
 | 
			
		||||
+            "imull %3               \n\t"
 | 
			
		||||
+            "shrdl %4, %%edx, %%eax \n\t"
 | 
			
		||||
+            :"=a"(rt), "=d"(dummy)
 | 
			
		||||
+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
 | 
			
		||||
+        );
 | 
			
		||||
     return rt;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
@@ -113,19 +121,31 @@
 | 
			
		||||
 // avoid +32 for shift optimization (gcc should do that ...)
 | 
			
		||||
 #define NEG_SSR32 NEG_SSR32
 | 
			
		||||
 static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
 | 
			
		||||
+    if (__builtin_constant_p(s))
 | 
			
		||||
     __asm__ ("sarl %1, %0\n\t"
 | 
			
		||||
          : "+r" (a)
 | 
			
		||||
-         : "ic" ((uint8_t)(-s))
 | 
			
		||||
+         : "i" (-s & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ ("sarl %1, %0\n\t"
 | 
			
		||||
+               : "+r" (a)
 | 
			
		||||
+               : "c" ((uint8_t)(-s))
 | 
			
		||||
+        );
 | 
			
		||||
     return a;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 #define NEG_USR32 NEG_USR32
 | 
			
		||||
 static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
 | 
			
		||||
+    if (__builtin_constant_p(s))
 | 
			
		||||
     __asm__ ("shrl %1, %0\n\t"
 | 
			
		||||
          : "+r" (a)
 | 
			
		||||
-         : "ic" ((uint8_t)(-s))
 | 
			
		||||
+         : "i" (-s & 0x1F)
 | 
			
		||||
     );
 | 
			
		||||
+    else
 | 
			
		||||
+        __asm__ ("shrl %1, %0\n\t"
 | 
			
		||||
+               : "+r" (a)
 | 
			
		||||
+               : "c" ((uint8_t)(-s))
 | 
			
		||||
+        );
 | 
			
		||||
     return a;
 | 
			
		||||
 }
 | 
			
		||||
@ -1,16 +0,0 @@
 | 
			
		||||
 qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
index 3488120..120e47a 100644
 | 
			
		||||
--- a/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
+++ b/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp
 | 
			
		||||
@@ -472,7 +472,7 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, size_t length)
 | 
			
		||||
     }
 | 
			
		||||
     catch (const DeadlyImportError& e)
 | 
			
		||||
     {
 | 
			
		||||
-        if (!is64bits && (length > std::numeric_limits<std::uint32_t>::max())) {
 | 
			
		||||
+        if (!is64bits && (length > std::numeric_limits<uint32_t>::max())) {
 | 
			
		||||
             throw DeadlyImportError("The FBX file is invalid. This may be because the content is too big for this older version (", ai_to_string(version), ") of the FBX format. (", e.what(), ")");
 | 
			
		||||
         }
 | 
			
		||||
         throw;
 | 
			
		||||
@ -1,433 +0,0 @@
 | 
			
		||||
 qtbase/src/corelib/debug_script.py                                                                            | 2 +-
 | 
			
		||||
 qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py                       | 2 +-
 | 
			
		||||
 qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py                  | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py                                  | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py                    | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py                                   | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py                          | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py                | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py                | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py                         | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py        | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py                                | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py                       | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py                      | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py                 | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py                                              | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py                    | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py                                           | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py                                             | 2 +-
 | 
			
		||||
 .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py    | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py   | 2 +-
 | 
			
		||||
 .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py        | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py         | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py  | 2 +-
 | 
			
		||||
 .../src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py       | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py   | 2 +-
 | 
			
		||||
 .../3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py  | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py             | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py            | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py                                       | 2 +-
 | 
			
		||||
 qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py                       | 2 +-
 | 
			
		||||
 31 files changed, 31 insertions(+), 31 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/qtbase/src/corelib/debug_script.py b/qtbase/src/corelib/debug_script.py
 | 
			
		||||
index f6207c6104..663c8e0ac1 100644
 | 
			
		||||
--- a/qtbase/src/corelib/debug_script.py
 | 
			
		||||
+++ b/qtbase/src/corelib/debug_script.py
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 | 
			
		||||
 import os
 | 
			
		||||
 import sys
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from distutils.version import LooseVersion
 | 
			
		||||
 | 
			
		||||
diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
 | 
			
		||||
index 681039d34b..a1fe56fa05 100644
 | 
			
		||||
--- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
 | 
			
		||||
+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/parseTestRecord.py
 | 
			
		||||
@@ -16,7 +16,7 @@ import subprocess
 | 
			
		||||
 import sys
 | 
			
		||||
 import tempfile
 | 
			
		||||
 import time
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 # from TestCasePackagerConfig import *
 | 
			
		||||
 | 
			
		||||
diff --git a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
 | 
			
		||||
index 92d4e6139b..7a18e12ced 100644
 | 
			
		||||
--- a/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
 | 
			
		||||
+++ b/qtdeclarative/tests/auto/qml/ecmascripttests/test262/tools/packaging/test/test_monkeyYaml.py
 | 
			
		||||
@@ -7,7 +7,7 @@ import unittest
 | 
			
		||||
 | 
			
		||||
 import os
 | 
			
		||||
 import yaml
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 # add parent dir to search path
 | 
			
		||||
 import sys
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
 | 
			
		||||
index c7412927c8..ad2caff318 100755
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/chrome/browser/resources/PRESUBMIT_test.py
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
 | 
			
		||||
 import os
 | 
			
		||||
 import sys
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import tempfile
 | 
			
		||||
 import unittest
 | 
			
		||||
 import PRESUBMIT
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
 | 
			
		||||
index 5daee773ba..2d6b124162 100755
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 """
 | 
			
		||||
 from __future__ import print_function
 | 
			
		||||
 import abc
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import optparse
 | 
			
		||||
 import os
 | 
			
		||||
 import re
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
 | 
			
		||||
index bf626f5479..3fae129aaa 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil.py
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
 import errno
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
 | 
			
		||||
index ff5753a291..04fc34f742 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/fileutil_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import shutil
 | 
			
		||||
 import sys
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
 | 
			
		||||
index 32c884a8c0..e761faa54c 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
 | 
			
		||||
index 95a916db08..4331e2fbfa 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/translate_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
 | 
			
		||||
index 62798631db..28e9dbf705 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/ast_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
 | 
			
		||||
index cba249b0f3..5a4051827a 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
 | 
			
		||||
index 4a2fefc712..11a9879cb7 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
 | 
			
		||||
index cc17ae0253..bcc944f06b 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
 | 
			
		||||
index bd72830e54..f2fdc9ae28 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/mojo/public/tools/mojom/mojom/parse/parser_unittest.py
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 # Use of this source code is governed by a BSD-style license that can be
 | 
			
		||||
 # found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os.path
 | 
			
		||||
 import sys
 | 
			
		||||
 import unittest
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
 | 
			
		||||
index 1feb303a48..8428de61bb 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/scripts/angle_presubmit_utils_unittest.py
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 angle_presubmit_utils_unittest.py: Top-level unittest script for ANGLE presubmit checks.
 | 
			
		||||
 """
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import os
 | 
			
		||||
 import unittest
 | 
			
		||||
 from angle_presubmit_utils import *
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
 | 
			
		||||
index ed4f38c67b..cac734cefa 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/PRESUBMIT.py
 | 
			
		||||
@@ -7,7 +7,7 @@ See https://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
 | 
			
		||||
 for more details about the presubmit API built into gcl.
 | 
			
		||||
 """
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import inspect
 | 
			
		||||
 import os
 | 
			
		||||
 import re
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
 | 
			
		||||
index 0244c9787e..f535afe99c 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/flatbuffers/src/python/flatbuffers/compat.py
 | 
			
		||||
@@ -32,7 +32,7 @@ if PY3:
 | 
			
		||||
     memoryview_type = memoryview
 | 
			
		||||
     struct_bool_decl = "?"
 | 
			
		||||
 else:
 | 
			
		||||
-    import imp
 | 
			
		||||
+    import importlib
 | 
			
		||||
     string_types = (unicode,)
 | 
			
		||||
     if PY26 or PY27:
 | 
			
		||||
         binary_types = (str,bytearray)
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
 | 
			
		||||
index 8430390eea..29212205bc 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/jinja2/environment.py
 | 
			
		||||
@@ -732,7 +732,7 @@ class Environment(object):
 | 
			
		||||
                 )
 | 
			
		||||
                 py_compile = False
 | 
			
		||||
             else:
 | 
			
		||||
-                import imp
 | 
			
		||||
+                import importlib
 | 
			
		||||
                 import marshal
 | 
			
		||||
 | 
			
		||||
                 py_header = imp.get_magic() + u"\xff\xff\xff\xff".encode("iso-8859-15")
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
 | 
			
		||||
index 06bb8d99f5..05089dc982 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/mako/mako/compat.py
 | 
			
		||||
@@ -115,7 +115,7 @@ if py3k:
 | 
			
		||||
             return module
 | 
			
		||||
 | 
			
		||||
 else:
 | 
			
		||||
-    import imp
 | 
			
		||||
+    import importlib
 | 
			
		||||
 | 
			
		||||
     def load_module(module_id, path):
 | 
			
		||||
         fp = open(path, "rb")
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
 | 
			
		||||
index a7dc683365..68b6804c78 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/converters/call_trees_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # ==============================================================================
 | 
			
		||||
 """Tests for call_trees module."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from tensorflow.python.autograph.converters import call_trees
 | 
			
		||||
 from tensorflow.python.autograph.converters import functions
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
 | 
			
		||||
index 81a7fde808..1370f900fd 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # ==============================================================================
 | 
			
		||||
 """Tests for converter module."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from tensorflow.python.autograph.core import converter
 | 
			
		||||
 from tensorflow.python.autograph.core import converter_testing
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
 | 
			
		||||
index b93cbb627b..452ec71f5b 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/core/converter_testing.py
 | 
			
		||||
@@ -15,7 +15,7 @@
 | 
			
		||||
 """Base class for tests in this module."""
 | 
			
		||||
 | 
			
		||||
 import contextlib
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import inspect
 | 
			
		||||
 import sys
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
 | 
			
		||||
index 9a62d7c0d2..7ec4fa6dca 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/api_test.py
 | 
			
		||||
@@ -19,7 +19,7 @@ import collections
 | 
			
		||||
 import contextlib
 | 
			
		||||
 import functools
 | 
			
		||||
 import gc
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import inspect
 | 
			
		||||
 import os
 | 
			
		||||
 import re
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
 | 
			
		||||
index 852af3efe7..6456c50446 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/impl/conversion_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # ==============================================================================
 | 
			
		||||
 """Tests for conversion module."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import sys
 | 
			
		||||
 import types
 | 
			
		||||
 import weakref
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
 | 
			
		||||
index a50a64534a..ba0f31afa2 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/inspect_utils_test.py
 | 
			
		||||
@@ -17,7 +17,7 @@
 | 
			
		||||
 import abc
 | 
			
		||||
 import collections
 | 
			
		||||
 import functools
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import textwrap
 | 
			
		||||
 | 
			
		||||
 import six
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
 | 
			
		||||
index 29f38d853a..7ca88fa371 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/autograph/pyct/templates_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # ==============================================================================
 | 
			
		||||
 """Tests for templates module."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from absl.testing import parameterized
 | 
			
		||||
 import gast
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
 | 
			
		||||
index e46460574b..a40fea6568 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/tflite/src/tensorflow/python/tools/api/generator/create_python_api_test.py
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 # =============================================================================
 | 
			
		||||
 """Tests for create_python_api."""
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import sys
 | 
			
		||||
 | 
			
		||||
 from tensorflow.python.platform import test
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
 | 
			
		||||
index 73d1742714..ea77dd7647 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/products.py
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
 import importlib
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from .browsers import product_list
 | 
			
		||||
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
 | 
			
		||||
index 6a744472b5..9175cb5d34 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/wptrunner/wptrunner/stability.py
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
 import copy
 | 
			
		||||
 import functools
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import io
 | 
			
		||||
 import os
 | 
			
		||||
 from collections import OrderedDict, defaultdict
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
 | 
			
		||||
index 6912b6f3c0..7d851f7f76 100755
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/tools/sublime/ninja_options_script.py
 | 
			
		||||
@@ -16,7 +16,7 @@
 | 
			
		||||
 | 
			
		||||
 from __future__ import print_function
 | 
			
		||||
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 import optparse
 | 
			
		||||
 import os
 | 
			
		||||
 import pipes
 | 
			
		||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
 | 
			
		||||
index 1c2aba80af..55260d697e 100644
 | 
			
		||||
--- a/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
 | 
			
		||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/third_party/test262-harness/src/parseTestRecord.py
 | 
			
		||||
@@ -10,7 +10,7 @@ from __future__ import print_function
 | 
			
		||||
 | 
			
		||||
 import os
 | 
			
		||||
 import re
 | 
			
		||||
-import imp
 | 
			
		||||
+import importlib
 | 
			
		||||
 | 
			
		||||
 from _monkeyYaml import load as yamlLoad
 | 
			
		||||
 | 
			
		||||
@ -1,45 +0,0 @@
 | 
			
		||||
diff --git a/qtbase/src/corelib/global/qnamespace.h b/qtbase/src/corelib/global/qnamespace.h
 | 
			
		||||
index 8a2769a3ed..584d3620c9 100644
 | 
			
		||||
--- a/qtbase/src/corelib/global/qnamespace.h
 | 
			
		||||
+++ b/qtbase/src/corelib/global/qnamespace.h
 | 
			
		||||
@@ -832,10 +832,6 @@ namespace Qt {
 | 
			
		||||
         Key_Dead_Small_Schwa    = 0x0100128a,
 | 
			
		||||
         Key_Dead_Capital_Schwa  = 0x0100128b,
 | 
			
		||||
         Key_Dead_Greek          = 0x0100128c,
 | 
			
		||||
-        Key_Dead_Lowline        = 0x01001290,
 | 
			
		||||
-        Key_Dead_Aboveverticalline = 0x01001291,
 | 
			
		||||
-        Key_Dead_Belowverticalline = 0x01001292,
 | 
			
		||||
-        Key_Dead_Longsolidusoverlay = 0x01001293,
 | 
			
		||||
 | 
			
		||||
         // multimedia/internet keys - ignored by default - see QKeyEvent c'tor
 | 
			
		||||
         Key_Back  = 0x01000061,
 | 
			
		||||
diff --git a/qtbase/src/corelib/global/qnamespace.qdoc b/qtbase/src/corelib/global/qnamespace.qdoc
 | 
			
		||||
index 78c69176d8..1623517b5a 100644
 | 
			
		||||
--- a/qtbase/src/corelib/global/qnamespace.qdoc
 | 
			
		||||
+++ b/qtbase/src/corelib/global/qnamespace.qdoc
 | 
			
		||||
@@ -1654,10 +1654,6 @@
 | 
			
		||||
     \value Key_Dead_Small_Schwa
 | 
			
		||||
     \value Key_Dead_Capital_Schwa
 | 
			
		||||
     \value Key_Dead_Greek
 | 
			
		||||
-    \value Key_Dead_Lowline
 | 
			
		||||
-    \value Key_Dead_Aboveverticalline
 | 
			
		||||
-    \value Key_Dead_Belowverticalline
 | 
			
		||||
-    \value Key_Dead_Longsolidusoverlay
 | 
			
		||||
     \value Key_Back
 | 
			
		||||
     \value Key_Forward
 | 
			
		||||
     \value Key_Stop
 | 
			
		||||
diff --git a/qtbase/src/gui/platform/unix/qxkbcommon.cpp b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
 | 
			
		||||
index fc014b38e2..af1cbbd42a 100644
 | 
			
		||||
--- a/qtbase/src/gui/platform/unix/qxkbcommon.cpp
 | 
			
		||||
+++ b/qtbase/src/gui/platform/unix/qxkbcommon.cpp
 | 
			
		||||
@@ -239,10 +239,6 @@ static constexpr const auto KeyTbl = qMakeArray(
 | 
			
		||||
         Xkb2Qt<XKB_KEY_dead_small_schwa,        Qt::Key_Dead_Small_Schwa>,
 | 
			
		||||
         Xkb2Qt<XKB_KEY_dead_capital_schwa,      Qt::Key_Dead_Capital_Schwa>,
 | 
			
		||||
         Xkb2Qt<XKB_KEY_dead_greek,              Qt::Key_Dead_Greek>,
 | 
			
		||||
-        Xkb2Qt<XKB_KEY_dead_lowline,            Qt::Key_Dead_Lowline>,
 | 
			
		||||
-        Xkb2Qt<XKB_KEY_dead_aboveverticalline,  Qt::Key_Dead_Aboveverticalline>,
 | 
			
		||||
-        Xkb2Qt<XKB_KEY_dead_belowverticalline,  Qt::Key_Dead_Belowverticalline>,
 | 
			
		||||
-        Xkb2Qt<XKB_KEY_dead_longsolidusoverlay, Qt::Key_Dead_Longsolidusoverlay>,
 | 
			
		||||
 | 
			
		||||
         // Special keys from X.org - This include multimedia keys,
 | 
			
		||||
         // wireless/bluetooth/uwb keys, special launcher keys, etc.
 | 
			
		||||
@ -1,29 +0,0 @@
 | 
			
		||||
 qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp | 7 ++++++-
 | 
			
		||||
 1 file changed, 6 insertions(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
 | 
			
		||||
index ec212f5a35..58bf4dce7d 100644
 | 
			
		||||
--- a/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
 | 
			
		||||
+++ b/qtmultimedia/src/plugins/multimedia/ffmpeg/qffmpegvaapisymbols.cpp
 | 
			
		||||
@@ -37,7 +37,10 @@ static Libs loadLibs()
 | 
			
		||||
     return {};
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-constexpr size_t symbolsCount = 39
 | 
			
		||||
+constexpr size_t symbolsCount = 38
 | 
			
		||||
+#if VA_CHECK_VERSION(1, 9, 0)
 | 
			
		||||
+        + 1
 | 
			
		||||
+#endif
 | 
			
		||||
 #ifdef DYNAMIC_RESOLVE_VA_DRM_SYMBOLS
 | 
			
		||||
         + 1
 | 
			
		||||
 #endif
 | 
			
		||||
@@ -79,7 +82,9 @@ DEFINE_FUNC(vaEndPicture, 2, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
 DEFINE_FUNC(vaCreateBuffer, 7, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
 DEFINE_FUNC(vaMapBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
 DEFINE_FUNC(vaUnmapBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
+#if VA_CHECK_VERSION(1, 9, 0)
 | 
			
		||||
 DEFINE_FUNC(vaSyncBuffer, 3, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
+#endif
 | 
			
		||||
 DEFINE_FUNC(vaDestroyBuffer, 2, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
 
 | 
			
		||||
 DEFINE_FUNC(vaCreateSurfaces, 8, VA_STATUS_ERROR_OPERATION_FAILED);
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
# Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
 | 
			
		||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
 | 
			
		||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
 | 
			
		||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
 | 
			
		||||
@ -36,16 +36,14 @@ rpmdev-setuptree
 | 
			
		||||
# Copy the source tarball.
 | 
			
		||||
cp --reflink=auto "/src/$RELEASE_TARBALL_FILENAME" /root/rpmbuild/SOURCES
 | 
			
		||||
 | 
			
		||||
cp patches/*.patch /root/rpmbuild/SOURCES/
 | 
			
		||||
 | 
			
		||||
QT_JAMI_PREFIX="/usr/lib64/qt-jami"
 | 
			
		||||
PATH="${QT_JAMI_PREFIX}/bin:${PATH}"
 | 
			
		||||
LD_LIBRARY_PATH="${QT_JAMI_PREFIX}/lib:${LD_LIBRARY_PATH}"
 | 
			
		||||
PKG_CONFIG_PATH="${QT_JAMI_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}"
 | 
			
		||||
CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}"
 | 
			
		||||
QT_MAJOR=6
 | 
			
		||||
QT_MINOR=5
 | 
			
		||||
QT_PATCH=3
 | 
			
		||||
QT_MINOR=6
 | 
			
		||||
QT_PATCH=1
 | 
			
		||||
QT_RELEASE_PATCH=0
 | 
			
		||||
 | 
			
		||||
QT_MAJOR_MINOR=${QT_MAJOR}.${QT_MINOR}
 | 
			
		||||
@ -54,7 +52,7 @@ QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
 | 
			
		||||
QT_TARBALL_URL=https://download.qt.io/archive/qt/$QT_MAJOR_MINOR/\
 | 
			
		||||
$QT_MAJOR_MINOR_PATCH/single/qt-everywhere-src-$QT_MAJOR_MINOR_PATCH.tar.xz
 | 
			
		||||
 | 
			
		||||
QT_TARBALL_SHA256="7cda4d119aad27a3887329cfc285f2aba5da85601212bcb0aea27bd6b7b544cb"
 | 
			
		||||
QT_TARBALL_SHA256="dd3668f65645fe270bc615d748bd4dc048bd17b9dc297025106e6ecc419ab95d"
 | 
			
		||||
QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL")
 | 
			
		||||
CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
 | 
			
		||||
# Author: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								extras/packaging/gnu-linux/scripts/install-gcc-debian.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
VERSION=$1
 | 
			
		||||
 | 
			
		||||
apt-get install -y -o Acquire::Retries=10 \
 | 
			
		||||
    gcc-$VERSION \
 | 
			
		||||
    g++-$VERSION
 | 
			
		||||
 | 
			
		||||
rm /usr/bin/gcc /usr/bin/g++
 | 
			
		||||
ln -s /usr/bin/gcc-$VERSION /usr/bin/gcc
 | 
			
		||||
ln -s /usr/bin/g++-$VERSION /usr/bin/g++
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										25
									
								
								extras/patches/0001-fix-fedora-fc-build.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,25 @@
 | 
			
		||||
From 161d28abb6784115ad71fcb6977e112e9d5756d4 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
Date: Tue, 23 Jan 2024 15:38:34 -0500
 | 
			
		||||
Subject: [PATCH] fix-fedora-fc-build
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 CMakeLists.txt | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
 | 
			
		||||
index 0fb89c8..3a6ad6d 100644
 | 
			
		||||
--- a/CMakeLists.txt
 | 
			
		||||
+++ b/CMakeLists.txt
 | 
			
		||||
@@ -65,7 +65,7 @@ if(NOT TARGET qmsetup::library)
 | 
			
		||||
     )
 | 
			
		||||
 
 | 
			
		||||
     # Find package again
 | 
			
		||||
-    find_package(qmsetup REQUIRED PATHS ${_package_path})
 | 
			
		||||
+    find_package(qmsetup REQUIRED PATHS ${_package_path} ${qmsetup_cmake_path})
 | 
			
		||||
 
 | 
			
		||||
     # Update import path
 | 
			
		||||
     set(qmsetup_DIR ${_package_path} CACHE PATH "" FORCE)
 | 
			
		||||
-- 
 | 
			
		||||
2.34.1
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										34
									
								
								extras/patches/0002-workaround-right-margin.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,34 @@
 | 
			
		||||
From ca2be6466c150d1b82a646d97b27df35b45d90f1 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
Date: Tue, 9 Jan 2024 15:25:19 -0500
 | 
			
		||||
Subject: [PATCH] workaround right margin
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 src/core/contexts/win32windowcontext.cpp | 11 +++++++++++
 | 
			
		||||
 1 file changed, 11 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp
 | 
			
		||||
index 3f6623e..9ee7752 100644
 | 
			
		||||
--- a/src/core/contexts/win32windowcontext.cpp
 | 
			
		||||
+++ b/src/core/contexts/win32windowcontext.cpp
 | 
			
		||||
@@ -402,6 +402,17 @@ namespace QWK {
 | 
			
		||||
                     return true;
 | 
			
		||||
                 }
 | 
			
		||||
             }
 | 
			
		||||
+
 | 
			
		||||
+#if !QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDERS)
 | 
			
		||||
+            if (msg->message == WM_MOVE || msg->message == WM_SIZE ||
 | 
			
		||||
+                (msg->message == WM_IME_SETCONTEXT && (GetForegroundWindow() == msg->hwnd))) {
 | 
			
		||||
+                static const auto flags = SWP_FRAMECHANGED | SWP_NOMOVE |
 | 
			
		||||
+                                          SWP_NOSIZE | SWP_NOZORDER |
 | 
			
		||||
+                                          SWP_NOOWNERZORDER;
 | 
			
		||||
+                SetWindowPos(msg->hwnd, NULL, 0, 0, 0, 0, flags);
 | 
			
		||||
+            }
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
             return false;
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
--
 | 
			
		||||
2.7.4
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,7 @@ mutually exclusive required arguments:
 | 
			
		||||
  -z, --zip         Build portable archive
 | 
			
		||||
 | 
			
		||||
examples:
 | 
			
		||||
1.  build.py --qt=C:/Qt/6.5.3/msvc2019_64  # Build the app using a specific Qt
 | 
			
		||||
1.  build.py --qt=C:/Qt/6.6.1/msvc2019_64  # Build the app using a specific Qt
 | 
			
		||||
2.  build.py --init pack --msi             # Build the app and an MSI installer
 | 
			
		||||
3.  build.py --init --tests                # Build the app and run tests
 | 
			
		||||
    build.py pack --zip --skip-build       # Generate a 7z archive of the app
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 2022-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2022-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
@ -62,7 +62,8 @@ def gen_qml_qrc(with_webengine):
 | 
			
		||||
                continue
 | 
			
		||||
            filtered = [k for k in files if k.endswith('.qml') or
 | 
			
		||||
                        k.endswith('.js') or k.endswith('.html') or
 | 
			
		||||
                        k.endswith('.css') or k.endswith('.conf')]
 | 
			
		||||
                        k.endswith('.css') or k.endswith('.conf') or
 | 
			
		||||
                        k == 'qmldir']
 | 
			
		||||
            # if there are no files of interest in this directory, skip it
 | 
			
		||||
            if not filtered:
 | 
			
		||||
                continue
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
@ -32,7 +32,7 @@ import re
 | 
			
		||||
# script as set in the project CMakeLists, which should in turn be
 | 
			
		||||
# where the resources.qrc will be located (currently 'src/app').
 | 
			
		||||
resdir = os.path.join('..', '..', 'resources')
 | 
			
		||||
qmlfile = os.path.join('constant', 'JamiResources.qml')
 | 
			
		||||
qmlfile = os.path.join('net/jami/Constants', 'JamiResources.qml')
 | 
			
		||||
resfile = os.path.join('resources.qrc')
 | 
			
		||||
 | 
			
		||||
print("Generating resource.qrc file ...")
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
# Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# install.sh --- build and install Jami daemon and client
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 2016-2023 Savoir-faire Linux Inc.
 | 
			
		||||
# Copyright (C) 2016-2024 Savoir-faire Linux Inc.
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
 | 
			
		||||
@ -20,6 +20,8 @@ rm -rf Jami.app/Contents/Frameworks/QtWebEngineQuickDelegatesQml.framework
 | 
			
		||||
rm -rf Jami.app/Contents/Frameworks/QtWebEngineQuick.framework
 | 
			
		||||
rm -rf Jami.app/Contents/Frameworks/QtWebEngineCore.framework
 | 
			
		||||
rm -rf Jami.app/Contents/Frameworks/QtWebChannel.framework
 | 
			
		||||
echo "remove web dSYM files"
 | 
			
		||||
find Jami.app/Contents/Resources/qml -type d -name "*.dSYM" -exec rm -r {} \;
 | 
			
		||||
codesign --force --sign "${APP_CERTIFICATE}" --entitlements ../resources/entitlements/appstore/Jami.entitlements Jami.app
 | 
			
		||||
codesign --verify Jami.app
 | 
			
		||||
echo "create .pkg"
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/python
 | 
			
		||||
 | 
			
		||||
##
 | 
			
		||||
##  Copyright (C) 2016-2023 Savoir-faire Linux Inc.
 | 
			
		||||
##  Copyright (C) 2016-2024 Savoir-faire Linux Inc.
 | 
			
		||||
##
 | 
			
		||||
##  Author: Edric Milaret <edric.ladent-milaret@savoirfairelinux.com>
 | 
			
		||||
##  Author: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
 | 
			
		||||
 | 
			
		||||
@ -1,15 +1,21 @@
 | 
			
		||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="43" height="52.655" viewBox="0 0 43 52.655">
 | 
			
		||||
  <defs>
 | 
			
		||||
    <clipPath id="clip-path">
 | 
			
		||||
      <rect id="Rectangle_268" data-name="Rectangle 268" width="38" height="24" transform="translate(-0.407 0.083)" fill="#fff" stroke="#707070" stroke-width="1"/>
 | 
			
		||||
    </clipPath>
 | 
			
		||||
  </defs>
 | 
			
		||||
  <g id="Icon_Donate" transform="translate(-22 -189.345)">
 | 
			
		||||
    <rect id="Rectangle_267" data-name="Rectangle 267" width="43" height="10" rx="5" transform="translate(22 232)" fill="#9eb3c3"/>
 | 
			
		||||
    <path id="Path_459" data-name="Path 459" d="M9.674,17.083,8.562,16.07C4.609,12.486,2,10.122,2,7.221A4.18,4.18,0,0,1,6.221,3,4.6,4.6,0,0,1,9.674,4.6,4.6,4.6,0,0,1,13.128,3a4.18,4.18,0,0,1,4.221,4.221c0,2.9-2.609,5.265-6.562,8.856Z" transform="translate(22.407 199.828)" fill="#ff0045" opacity="0.3"/>
 | 
			
		||||
    <path id="Path_460" data-name="Path 460" d="M6.953,12.088l-.718-.654C3.684,9.122,2,7.6,2,5.724A2.7,2.7,0,0,1,4.724,3,2.966,2.966,0,0,1,6.953,4.035,2.966,2.966,0,0,1,9.182,3a2.7,2.7,0,0,1,2.724,2.724c0,1.872-1.684,3.4-4.235,5.716Z" transform="translate(45.571 186.345)" fill="#ff0045" opacity="0.16"/>
 | 
			
		||||
    <g id="Mask_Group_38" data-name="Mask Group 38" transform="translate(24.407 213.918)" clip-path="url(#clip-path)">
 | 
			
		||||
      <path id="Path_270" data-name="Path 270" d="M12.649,22.542l-1.544-1.406C5.621,16.163,2,12.883,2,8.857A5.8,5.8,0,0,1,7.857,3a6.377,6.377,0,0,1,4.792,2.226A6.377,6.377,0,0,1,17.442,3,5.8,5.8,0,0,1,23.3,8.857c0,4.025-3.621,7.306-9.105,12.289Z" transform="translate(5.992 5.54)" fill="#ff0045"/>
 | 
			
		||||
    </g>
 | 
			
		||||
  </g>
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 | 
			
		||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 | 
			
		||||
	 viewBox="0 0 43 52.7" style="enable-background:new 0 0 43 52.7;" xml:space="preserve">
 | 
			
		||||
<style type="text/css">
 | 
			
		||||
	.st0{fill:#9EB3C3;}
 | 
			
		||||
	.st1{opacity:0.3;fill:#FF0045;enable-background:new    ;}
 | 
			
		||||
	.st2{opacity:0.16;fill:#FF0045;enable-background:new    ;}
 | 
			
		||||
	.st3{fill:#FF0045;}
 | 
			
		||||
</style>
 | 
			
		||||
<g id="Icon_Donate" transform="translate(-22 -189.345)">
 | 
			
		||||
	<path id="Rectangle_267" class="st0" d="M27,232h33c2.8,0,5,2.2,5,5l0,0c0,2.8-2.2,5-5,5H27c-2.8,0-5-2.2-5-5l0,0
 | 
			
		||||
		C22,234.2,24.2,232,27,232z"/>
 | 
			
		||||
	<path id="Path_459" class="st1" d="M32.1,216.9l-1.1-1c-4-3.6-6.6-5.9-6.6-8.8c0-2.3,1.8-4.2,4.1-4.2c0,0,0.1,0,0.1,0
 | 
			
		||||
		c1.3,0,2.6,0.6,3.5,1.6c0.9-1,2.1-1.6,3.5-1.6c2.3,0,4.2,1.8,4.2,4.1c0,0,0,0.1,0,0.1c0,2.9-2.6,5.3-6.6,8.9L32.1,216.9z"/>
 | 
			
		||||
	<path id="Path_460" class="st2" d="M52.5,198.4l-0.7-0.7c-2.6-2.3-4.2-3.8-4.2-5.7c0-1.5,1.2-2.7,2.7-2.7c0,0,0,0,0,0
 | 
			
		||||
		c0.9,0,1.7,0.4,2.2,1c0.6-0.7,1.4-1,2.2-1c1.5,0,2.7,1.2,2.7,2.7c0,0,0,0,0,0c0,1.9-1.7,3.4-4.2,5.7L52.5,198.4z"/>
 | 
			
		||||
	<path class="st3" d="M37.3,236.7h11.4c3.1-3,4.9-5.5,4.9-8.4c0,0,0-0.1,0-0.1c0-3.2-2.7-5.8-5.9-5.7c-1.8,0-3.6,0.8-4.8,2.2
 | 
			
		||||
		c-1.2-1.4-2.9-2.2-4.8-2.2c0,0-0.1,0-0.1,0c-3.2,0-5.8,2.7-5.7,5.9C32.4,231.2,34.3,233.7,37.3,236.7z"/>
 | 
			
		||||
</g>
 | 
			
		||||
</svg>
 | 
			
		||||
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										3
									
								
								resources/icons/phone_in_talk_24dp.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,3 @@
 | 
			
		||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
 | 
			
		||||
  <path id="phone_in_talk_FILL0_wght400_GRAD0_opsz24_1_" data-name="phone_in_talk_FILL0_wght400_GRAD0_opsz24 (1)" d="M134.222-832a6,6,0,0,0-1.811-4.411A6,6,0,0,0,128-838.222V-840a7.737,7.737,0,0,1,3.122.633,8.132,8.132,0,0,1,2.533,1.711,8.133,8.133,0,0,1,1.711,2.533A7.74,7.74,0,0,1,136-832Zm-3.556,0a2.572,2.572,0,0,0-.778-1.889,2.571,2.571,0,0,0-1.889-.778v-1.778a4.283,4.283,0,0,1,3.144,1.3,4.283,4.283,0,0,1,1.3,3.144Zm4.4,8a13.343,13.343,0,0,1-5.489-1.211,16.42,16.42,0,0,1-4.933-3.433,16.42,16.42,0,0,1-3.433-4.933A13.343,13.343,0,0,1,120-839.067a.9.9,0,0,1,.267-.667.9.9,0,0,1,.667-.267h3.6a.827.827,0,0,1,.556.211.812.812,0,0,1,.289.5l.578,3.111a1.567,1.567,0,0,1-.022.6.934.934,0,0,1-.244.422l-2.156,2.178a10.745,10.745,0,0,0,1.056,1.589,15.638,15.638,0,0,0,1.344,1.478,15.651,15.651,0,0,0,1.444,1.278,14.051,14.051,0,0,0,1.6,1.078l2.089-2.089a1.245,1.245,0,0,1,.522-.3,1.431,1.431,0,0,1,.633-.056l3.067.622a1.029,1.029,0,0,1,.511.322.782.782,0,0,1,.2.522v3.6a.9.9,0,0,1-.267.667A.9.9,0,0,1,135.067-824Zm-12.378-10.667,1.467-1.467-.378-2.089H121.8a18.259,18.259,0,0,0,.311,1.8A9.736,9.736,0,0,0,122.689-834.667Zm7.956,7.956a11.029,11.029,0,0,0,1.767.6,10.838,10.838,0,0,0,1.811.289v-1.956l-2.089-.422ZM122.689-834.667ZM130.644-826.711Z" transform="translate(-120 840)"/>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
							
								
								
									
										15
									
								
								resources/icons/window-bar_close.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,15 @@
 | 
			
		||||
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" width="10.88" height="10.88"
 | 
			
		||||
  viewBox="0 0 10.88 10.88">
 | 
			
		||||
  <defs>
 | 
			
		||||
    <style>
 | 
			
		||||
      .cls-1 {
 | 
			
		||||
        fill: none;
 | 
			
		||||
        stroke: white;
 | 
			
		||||
        stroke-miterlimit: 10;
 | 
			
		||||
        stroke-width: 1.25px;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
  </defs>
 | 
			
		||||
  <line class="cls-1" x1="0.44" y1="0.44" x2="10.44" y2="10.44" />
 | 
			
		||||
  <line class="cls-1" x1="0.44" y1="10.44" x2="10.44" y2="0.44" />
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 444 B  | 
							
								
								
									
										11
									
								
								resources/icons/window-bar_fullscreen.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
<?xml version="1.0" standalone="no"?>
 | 
			
		||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1594017175519"
 | 
			
		||||
    class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1933"
 | 
			
		||||
    xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16">
 | 
			
		||||
    <defs>
 | 
			
		||||
        <style type="text/css"></style>
 | 
			
		||||
    </defs>
 | 
			
		||||
    <path
 | 
			
		||||
        d="M874.666667 128h-170.666667a21.333333 21.333333 0 0 0 0 42.666667h119.168l-176.917333 176.917333a21.333333 21.333333 0 1 0 30.165333 30.165333L853.333333 200.832V320a21.333333 21.333333 0 0 0 42.666667 0V149.333333a21.333333 21.333333 0 0 0-21.333333-21.333333zM347.584 646.250667L170.666667 823.168V704a21.333333 21.333333 0 0 0-42.666667 0v170.666667a21.333333 21.333333 0 0 0 21.333333 21.333333h170.666667a21.333333 21.333333 0 0 0 0-42.666667H200.832l176.917333-176.917333a21.333333 21.333333 0 0 0-30.165333-30.165333zM874.666667 682.666667a21.333333 21.333333 0 0 0-21.333334 21.333333v119.168l-176.917333-176.917333a21.333333 21.333333 0 0 0-30.165333 30.165333L823.168 853.333333H704a21.333333 21.333333 0 0 0 0 42.666667h170.666667a21.333333 21.333333 0 0 0 21.333333-21.333333v-170.666667a21.333333 21.333333 0 0 0-21.333333-21.333333zM200.832 170.666667H320a21.333333 21.333333 0 0 0 0-42.666667H149.333333a21.333333 21.333333 0 0 0-21.333333 21.333333v170.666667a21.333333 21.333333 0 0 0 42.666667 0V200.832l176.917333 176.917333a21.333333 21.333333 0 0 0 30.165333-30.165333z"
 | 
			
		||||
        fill="#ffffff" p-id="1934"></path>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 1.5 KiB  | 
							
								
								
									
										12
									
								
								resources/icons/window-bar_maximize.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,12 @@
 | 
			
		||||
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10">
 | 
			
		||||
  <defs>
 | 
			
		||||
    <style>
 | 
			
		||||
      .cls-1 {
 | 
			
		||||
        fill: none;
 | 
			
		||||
        stroke: white;
 | 
			
		||||
        stroke-miterlimit: 10;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
  </defs>
 | 
			
		||||
  <rect class="cls-1" x="0.5" y="0.5" width="9" height="9" />
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 328 B  | 
							
								
								
									
										11
									
								
								resources/icons/window-bar_minimize.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 | 
			
		||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
 | 
			
		||||
	y="0px" viewBox="0 0 10 10" style="enable-background:new 0 0 10 10;" xml:space="preserve">
 | 
			
		||||
	<style type="text/css">
 | 
			
		||||
		.st0 {
 | 
			
		||||
			fill: white;
 | 
			
		||||
		}
 | 
			
		||||
	</style>
 | 
			
		||||
	<rect y="4.5" class="st0" width="10" height="1" />
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 467 B  | 
							
								
								
									
										16
									
								
								resources/icons/window-bar_restore.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,16 @@
 | 
			
		||||
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
 | 
			
		||||
  <defs>
 | 
			
		||||
    <style>
 | 
			
		||||
      .cls-1 {
 | 
			
		||||
        fill: none;
 | 
			
		||||
        stroke: white;
 | 
			
		||||
        stroke-miterlimit: 10;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
  </defs>
 | 
			
		||||
  <rect class="cls-1" x="0.5" y="2.5" width="9" height="9" />
 | 
			
		||||
  <line class="cls-1" x1="2.5" y1="2.5" x2="2.5" y2="0.5" />
 | 
			
		||||
  <line class="cls-1" x1="12" y1="0.5" x2="2" y2="0.5" />
 | 
			
		||||
  <line class="cls-1" x1="11.5" y1="10" x2="11.5" />
 | 
			
		||||
  <line class="cls-1" x1="10" y1="9.5" x2="12" y2="9.5" />
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 559 B  | 
							
								
								
									
										4
									
								
								src/app/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,4 @@
 | 
			
		||||
# auto-gen files
 | 
			
		||||
resources.qrc
 | 
			
		||||
qml.qrc
 | 
			
		||||
net/jami/Constants/JamiResources.qml
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Yang Wang   <yang.wang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2022-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2022-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@ -73,17 +73,26 @@ QtObject {
 | 
			
		||||
    function saveWindowSettings() {
 | 
			
		||||
        // If closed-to-tray or minimized or fullscreen, save the cached windowedVisibility
 | 
			
		||||
        // value instead.
 | 
			
		||||
        if (isHidden || isFullScreen) {
 | 
			
		||||
            AppSettingsManager.setValue(Settings.WindowState, priv.windowedVisibility)
 | 
			
		||||
        } else {
 | 
			
		||||
            AppSettingsManager.setValue(Settings.WindowState, visibility)
 | 
			
		||||
        }
 | 
			
		||||
        const visibilityToSave = isHidden || isFullScreen ? priv.windowedVisibility : visibility;
 | 
			
		||||
 | 
			
		||||
        // Likewise, don't save fullscreen geometry.
 | 
			
		||||
        const geometry = isFullScreen ?
 | 
			
		||||
                           priv.windowedGeometry :
 | 
			
		||||
                           Qt.rect(appWindow.x, appWindow.y,
 | 
			
		||||
                                   appWindow.width, appWindow.height)
 | 
			
		||||
                                   appWindow.width, appWindow.height);
 | 
			
		||||
 | 
			
		||||
        // QWK: Account for the frameless window's offset.
 | 
			
		||||
        if (appWindow.useFrameless) {
 | 
			
		||||
            if (Qt.platform.os.toString() !== "osx") {
 | 
			
		||||
                // Add [7, 30, 0, 0] on Windows and GNU/Linux.
 | 
			
		||||
                geometry.x += 7;
 | 
			
		||||
                geometry.y += 30;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        console.debug("Saving window: " + JSON.stringify(geometry) + " " + visibilityToSave);
 | 
			
		||||
 | 
			
		||||
        AppSettingsManager.setValue(Settings.WindowState, visibilityToSave)
 | 
			
		||||
        AppSettingsManager.setValue(Settings.WindowGeometry, geometry)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -111,6 +120,8 @@ QtObject {
 | 
			
		||||
        const visibilityStr = AppSettingsManager.getValue(Settings.WindowState)
 | 
			
		||||
        var visibilitySetting = parseInt(visibilityStr)
 | 
			
		||||
 | 
			
		||||
        console.debug("Restoring window: " + JSON.stringify(geometry) + " " + visibilitySetting)
 | 
			
		||||
 | 
			
		||||
        // We should never restore a hidden or fullscreen state here. Default to normal
 | 
			
		||||
        // windowed state in such a case. This shouldn't happen.
 | 
			
		||||
        if (visibilitySetting === Window.Hidden || visibilitySetting === Window.FullScreen) {
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 * Author: Albert Babí <albert.babi@savoirfairelinux.com>
 | 
			
		||||
@ -24,29 +24,30 @@ import QtQuick.Window
 | 
			
		||||
import QtQuick.Controls
 | 
			
		||||
import QtQuick.Layouts
 | 
			
		||||
import Qt5Compat.GraphicalEffects
 | 
			
		||||
 | 
			
		||||
import net.jami.Models 1.1
 | 
			
		||||
import net.jami.Adapters 1.1
 | 
			
		||||
import net.jami.Enums 1.1
 | 
			
		||||
import net.jami.Helpers 1.1
 | 
			
		||||
import net.jami.Constants 1.1
 | 
			
		||||
 | 
			
		||||
import "mainview"
 | 
			
		||||
import "mainview/components"
 | 
			
		||||
import "wizardview"
 | 
			
		||||
import "commoncomponents"
 | 
			
		||||
 | 
			
		||||
import QWindowKit
 | 
			
		||||
 | 
			
		||||
ApplicationWindow {
 | 
			
		||||
    id: root
 | 
			
		||||
    id: appWindow
 | 
			
		||||
 | 
			
		||||
    property bool isRTL: UtilsAdapter.isRTL
 | 
			
		||||
 | 
			
		||||
    LayoutMirroring.enabled: isRTL
 | 
			
		||||
    LayoutMirroring.childrenInherit: isRTL
 | 
			
		||||
 | 
			
		||||
    enum LoadedSource {
 | 
			
		||||
        MainView,
 | 
			
		||||
        AccountMigrationView,
 | 
			
		||||
        None
 | 
			
		||||
    }
 | 
			
		||||
    // This needs to be set from the start.
 | 
			
		||||
    readonly property bool useFrameless: UtilsAdapter.getAppValue(Settings.Key.UseFramelessWindow)
 | 
			
		||||
 | 
			
		||||
    onActiveFocusItemChanged: {
 | 
			
		||||
        focusOverlay.margin = -5;
 | 
			
		||||
@ -70,7 +71,7 @@ ApplicationWindow {
 | 
			
		||||
        sourceComponent: GenericErrorsRow {
 | 
			
		||||
            id: genericError
 | 
			
		||||
            text: CurrentAccount.enabled ? JamiStrings.noNetworkConnectivity : JamiStrings.disabledAccount
 | 
			
		||||
            height: visible? JamiTheme.chatViewHeaderPreferredHeight : 0
 | 
			
		||||
            height: visible? JamiTheme.qwkTitleBarHeight : 0
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -88,37 +89,31 @@ ApplicationWindow {
 | 
			
		||||
        border.color: JamiTheme.tintedBlue
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    property ApplicationWindow appWindow: root
 | 
			
		||||
    property LayoutManager layoutManager: LayoutManager {
 | 
			
		||||
        appContainer: appContainer
 | 
			
		||||
    }
 | 
			
		||||
    property ViewManager viewManager: ViewManager {
 | 
			
		||||
    }
 | 
			
		||||
    property ViewCoordinator viewCoordinator: ViewCoordinator {
 | 
			
		||||
        viewManager: root.viewManager
 | 
			
		||||
    // Used to manage full screen mode and save/restore window geometry.
 | 
			
		||||
    LayoutManager {
 | 
			
		||||
        id: layoutManager
 | 
			
		||||
        appContainer: fullscreenContainer
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Used to manage dynamic view loading and unloading.
 | 
			
		||||
    ViewManager {
 | 
			
		||||
        id: viewManager
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Used to manage the view stack and the current view.
 | 
			
		||||
    ViewCoordinator {
 | 
			
		||||
        id: viewCoordinator
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Used to prevent the window from being visible until the
 | 
			
		||||
    // window geometry has been restored and the view stack has
 | 
			
		||||
    // been loaded.
 | 
			
		||||
    property bool windowSettingsLoaded: false
 | 
			
		||||
 | 
			
		||||
    // This setting can be used to block a loading Jami instance
 | 
			
		||||
    // from showNormal() and showMaximized() when starting minimized.
 | 
			
		||||
    property bool allowVisibleWindow: true
 | 
			
		||||
 | 
			
		||||
    function checkLoadedSource() {
 | 
			
		||||
        var sourceString = mainApplicationLoader.source.toString();
 | 
			
		||||
        if (sourceString === JamiQmlUtils.mainViewLoadPath)
 | 
			
		||||
            return MainApplicationWindow.LoadedSource.MainView;
 | 
			
		||||
        return MainApplicationWindow.LoadedSource.None;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function startClient() {
 | 
			
		||||
        setMainLoaderSource(JamiQmlUtils.mainViewLoadPath);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function setMainLoaderSource(source) {
 | 
			
		||||
        if (checkLoadedSource() === MainApplicationWindow.LoadedSource.MainView) {
 | 
			
		||||
            cleanupMainView();
 | 
			
		||||
        }
 | 
			
		||||
        mainApplicationLoader.setSource(source);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function cleanupMainView() {
 | 
			
		||||
        // Save the main view window size if loading anything else.
 | 
			
		||||
        layoutManager.saveWindowSettings();
 | 
			
		||||
@ -139,88 +134,148 @@ ApplicationWindow {
 | 
			
		||||
 | 
			
		||||
    title: JamiStrings.appTitle
 | 
			
		||||
 | 
			
		||||
    visible: mainApplicationLoader.status === Loader.Ready && windowSettingsLoaded && allowVisibleWindow
 | 
			
		||||
    visible: mainViewLoader.status === Loader.Ready && windowSettingsLoaded && allowVisibleWindow
 | 
			
		||||
 | 
			
		||||
    // To facilitate reparenting of the callview during
 | 
			
		||||
    // fullscreen mode, we need QQuickItem based object.
 | 
			
		||||
    Item {
 | 
			
		||||
        id: appContainer
 | 
			
		||||
    Connections {
 | 
			
		||||
        id: connectionMigrationEnded
 | 
			
		||||
 | 
			
		||||
        anchors.fill: parent
 | 
			
		||||
        target: CurrentAccountToMigrate
 | 
			
		||||
 | 
			
		||||
        function onAccountNeedsMigration(accountId) {
 | 
			
		||||
            viewCoordinator.present("AccountMigrationView");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function onAllMigrationsFinished() {
 | 
			
		||||
            viewCoordinator.dismiss("AccountMigrationView");
 | 
			
		||||
            viewCoordinator.present("WelcomePage");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function initMainView(view) {
 | 
			
		||||
        console.info("Initializing main view");
 | 
			
		||||
 | 
			
		||||
        // Main window, load any valid app settings, and allow the
 | 
			
		||||
        // layoutManager to handle as much as possible.
 | 
			
		||||
        layoutManager.restoreWindowSettings();
 | 
			
		||||
 | 
			
		||||
        // QWK: setup
 | 
			
		||||
        if (useFrameless) {
 | 
			
		||||
            windowAgent.setTitleBar(titleBar);
 | 
			
		||||
            // Now register the system buttons (non-macOS).
 | 
			
		||||
            if (sysBtnsLoader.item) {
 | 
			
		||||
                const sysBtns = sysBtnsLoader.item;
 | 
			
		||||
                windowAgent.setSystemButton(WindowAgent.Minimize, sysBtns.minButton);
 | 
			
		||||
                windowAgent.setSystemButton(WindowAgent.Maximize, sysBtns.maxButton);
 | 
			
		||||
                windowAgent.setSystemButton(WindowAgent.Close, sysBtns.closeButton);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Set the viewCoordinator's root item.
 | 
			
		||||
        viewCoordinator.init(view);
 | 
			
		||||
 | 
			
		||||
        // Navigate to something.
 | 
			
		||||
        if (UtilsAdapter.getAccountListSize() > 0) {
 | 
			
		||||
            // Already have an account.
 | 
			
		||||
            if (CurrentAccountToMigrate.accountToMigrateListSize > 0)
 | 
			
		||||
                // Do we need to migrate any accounts?
 | 
			
		||||
                viewCoordinator.present("AccountMigrationView");
 | 
			
		||||
            else
 | 
			
		||||
                // Okay now just start the client normally.
 | 
			
		||||
                viewCoordinator.present("WelcomePage");
 | 
			
		||||
        } else {
 | 
			
		||||
            // No account, so start the wizard.
 | 
			
		||||
            viewCoordinator.present("WizardView");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Set up the event filter for macOS.
 | 
			
		||||
        if (Qt.platform.os.toString() === "osx") {
 | 
			
		||||
            MainApplication.setEventFilter();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Quiet check for updates on start if set to.
 | 
			
		||||
        if (Qt.platform.os.toString() === "windows") {
 | 
			
		||||
            if (UtilsAdapter.getAppValue(Settings.AutoUpdate)) {
 | 
			
		||||
                AppVersionManager.checkForUpdates(true);
 | 
			
		||||
                AppVersionManager.setAutoUpdateCheck(true);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Handle a start URI if set as start option.
 | 
			
		||||
        MainApplication.handleUriAction();
 | 
			
		||||
 | 
			
		||||
        // This will allow visible to become true if not starting minimized.
 | 
			
		||||
        windowSettingsLoaded = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Component.onCompleted: {
 | 
			
		||||
        // QWK: setup
 | 
			
		||||
        if (useFrameless) {
 | 
			
		||||
            windowAgent.setup(appWindow);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        mainViewLoader.active = true;
 | 
			
		||||
 | 
			
		||||
        // Dbus error handler for Linux.
 | 
			
		||||
        if (Qt.platform.os.toString() !== "windows" && Qt.platform.os.toString() !== "osx")
 | 
			
		||||
            DBusErrorHandler.setActive(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Loader {
 | 
			
		||||
        id: mainApplicationLoader
 | 
			
		||||
 | 
			
		||||
        id: mainViewLoader
 | 
			
		||||
        active: false
 | 
			
		||||
        source: "qrc:/mainview/MainView.qml"
 | 
			
		||||
        anchors.fill: parent
 | 
			
		||||
        z: -1
 | 
			
		||||
        onLoaded: initMainView(item)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        asynchronous: true
 | 
			
		||||
        visible: status == Loader.Ready
 | 
			
		||||
    // Use this as a parent for fullscreen items.
 | 
			
		||||
    Item {
 | 
			
		||||
        id: fullscreenContainer
 | 
			
		||||
        anchors.fill: parent
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        Connections {
 | 
			
		||||
            id: connectionMigrationEnded
 | 
			
		||||
    // QWK: Provide spacing for widgets that may be occluded by the system buttons.
 | 
			
		||||
    QtObject {
 | 
			
		||||
        id: qwkSystemButtonSpacing
 | 
			
		||||
        readonly property bool isMacOS: Qt.platform.os.toString() === "osx"
 | 
			
		||||
        readonly property bool isFullscreen: layoutManager.isFullScreen
 | 
			
		||||
        // macOS buttons are on the left.
 | 
			
		||||
        readonly property real left: useFrameless && isMacOS && viewCoordinator.isInSinglePaneMode ? 80 : 0
 | 
			
		||||
        // Windows and Linux buttons are on the right.
 | 
			
		||||
        readonly property real right: useFrameless && !isMacOS && !isFullscreen ? sysBtnsLoader.width + 24 : 0
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
            target: CurrentAccountToMigrate
 | 
			
		||||
 | 
			
		||||
            function onAccountNeedsMigration(accountId) {
 | 
			
		||||
                viewCoordinator.present("AccountMigrationView");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function onAllMigrationsFinished() {
 | 
			
		||||
                viewCoordinator.dismiss("AccountMigrationView");
 | 
			
		||||
                startClient();
 | 
			
		||||
            }
 | 
			
		||||
    // QWK: Window Title bar
 | 
			
		||||
    Item {
 | 
			
		||||
        id: titleBar
 | 
			
		||||
        height: JamiTheme.qwkTitleBarHeight
 | 
			
		||||
        anchors {
 | 
			
		||||
            top: parent.top
 | 
			
		||||
            right: parent.right
 | 
			
		||||
            left: parent.left
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Set `visible = false` when loading a new QML file.
 | 
			
		||||
        onSourceChanged: windowSettingsLoaded = false
 | 
			
		||||
 | 
			
		||||
        onLoaded: {
 | 
			
		||||
            if (UtilsAdapter.getAccountListSize() === 0) {
 | 
			
		||||
                layoutManager.restoreWindowSettings();
 | 
			
		||||
                if (!viewCoordinator.rootView)
 | 
			
		||||
                    // Set the viewCoordinator's root item.
 | 
			
		||||
                    viewCoordinator.init(item);
 | 
			
		||||
                viewCoordinator.present("WizardView");
 | 
			
		||||
            } else {
 | 
			
		||||
                // Main window, load any valid app settings, and allow the
 | 
			
		||||
                // layoutManager to handle as much as possible.
 | 
			
		||||
                layoutManager.restoreWindowSettings();
 | 
			
		||||
 | 
			
		||||
                // Present the welcome view once the viewCoordinator is setup.
 | 
			
		||||
                viewCoordinator.initialized.connect(function () {
 | 
			
		||||
                        viewCoordinator.preload("SidePanel");
 | 
			
		||||
                        viewCoordinator.preload("SettingsSidePanel");
 | 
			
		||||
                        viewCoordinator.present("WelcomePage");
 | 
			
		||||
                        viewCoordinator.preload("ConversationView");
 | 
			
		||||
                    });
 | 
			
		||||
                if (!viewCoordinator.rootView)
 | 
			
		||||
                    // Set the viewCoordinator's root item.
 | 
			
		||||
                    viewCoordinator.init(item);
 | 
			
		||||
                if (CurrentAccountToMigrate.accountToMigrateListSize > 0)
 | 
			
		||||
                    viewCoordinator.present("AccountMigrationView");
 | 
			
		||||
        // On Windows and Linux, use custom system buttons.
 | 
			
		||||
        Loader {
 | 
			
		||||
            id: sysBtnsLoader
 | 
			
		||||
            active: Qt.platform.os.toString() !== "osx" && useFrameless
 | 
			
		||||
            height: titleBar.height
 | 
			
		||||
            anchors {
 | 
			
		||||
                top: parent.top
 | 
			
		||||
                right: parent.right
 | 
			
		||||
                // Note: leave these margins, they prevent image scaling artifacts
 | 
			
		||||
                topMargin: 1
 | 
			
		||||
                rightMargin: 1
 | 
			
		||||
            }
 | 
			
		||||
            if (Qt.platform.os.toString() === "osx") {
 | 
			
		||||
                MainApplication.setEventFilter();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // This will trigger `visible = true`.
 | 
			
		||||
            windowSettingsLoaded = true;
 | 
			
		||||
 | 
			
		||||
            // Quiet check for updates on start if set to.
 | 
			
		||||
            if (Qt.platform.os.toString() === "windows") {
 | 
			
		||||
                if (UtilsAdapter.getAppValue(Settings.AutoUpdate)) {
 | 
			
		||||
                    AppVersionManager.checkForUpdates(true);
 | 
			
		||||
                    AppVersionManager.setAutoUpdateCheck(true);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Handle a start URI if set as start option.
 | 
			
		||||
            MainApplication.handleUriAction();
 | 
			
		||||
            source: "qrc:/commoncomponents/QWKSystemButtonGroup.qml"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // QWK: Main interop component.
 | 
			
		||||
    WindowAgent {
 | 
			
		||||
        id: windowAgent
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Connections {
 | 
			
		||||
        target: LRCInstance
 | 
			
		||||
 | 
			
		||||
@ -339,11 +394,5 @@ ApplicationWindow {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    onClosing: root.close()
 | 
			
		||||
 | 
			
		||||
    Component.onCompleted: {
 | 
			
		||||
        startClient();
 | 
			
		||||
        if (Qt.platform.os.toString() !== "windows" && Qt.platform.os.toString() !== "osx")
 | 
			
		||||
            DBusErrorHandler.setActive(true);
 | 
			
		||||
    }
 | 
			
		||||
    onClosing: appWindow.close()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2024 Savoir-faire Linux Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
@ -24,14 +24,6 @@ import "commoncomponents"
 | 
			
		||||
QtObject {
 | 
			
		||||
    id: root
 | 
			
		||||
 | 
			
		||||
    required property QtObject viewManager
 | 
			
		||||
 | 
			
		||||
    signal initialized
 | 
			
		||||
 | 
			
		||||
    function requestAppWindowWizardView() {
 | 
			
		||||
        viewCoordinator.present("WizardView");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // A map of view names to file paths for QML files that define each view.
 | 
			
		||||
    property variant resources: {
 | 
			
		||||
        "SidePanel": "mainview/components/SidePanel.qml",
 | 
			
		||||
@ -47,12 +39,44 @@ QtObject {
 | 
			
		||||
    // The `main` view of the application window.
 | 
			
		||||
    property StackView rootView
 | 
			
		||||
 | 
			
		||||
    property var currentViewName: rootView && rootView.currentItem && rootView.currentItem.objectName || null
 | 
			
		||||
    readonly property Item currentView: rootView && rootView.currentItem || null
 | 
			
		||||
    readonly property var currentViewName: currentView && currentView.objectName || null
 | 
			
		||||
    readonly property bool isDualPane: currentView && currentView instanceof DualPaneView
 | 
			
		||||
    readonly property bool isInSinglePaneMode: !isDualPane || currentView.isSinglePane
 | 
			
		||||
    readonly property bool isRTL: Qt.application.layoutDirection === Qt.RightToLeft
 | 
			
		||||
    // A list of the current visible views. This could be a single view or two views in
 | 
			
		||||
    // dual pane mode. The list is ordered [minor, major] where major is the view on the
 | 
			
		||||
    // right side when not in RTL and should represent the main or content-type view.
 | 
			
		||||
    readonly property var visibleViews: {
 | 
			
		||||
        if (!currentView)
 | 
			
		||||
            return []
 | 
			
		||||
        if (isDualPane) {
 | 
			
		||||
            if (isInSinglePaneMode)
 | 
			
		||||
                return [currentView.rightPaneItem]
 | 
			
		||||
            return [currentView.leftPaneItem, currentView.rightPaneItem]
 | 
			
		||||
        }
 | 
			
		||||
        return [currentView]
 | 
			
		||||
    }
 | 
			
		||||
    // Aggregate this info and expose it as a single string for convenience.
 | 
			
		||||
    // JSON indented by 2 spaces.
 | 
			
		||||
    readonly property string currentViewInfo: {
 | 
			
		||||
        var info = {
 | 
			
		||||
            currentViewName: currentViewName,
 | 
			
		||||
            isDualPane: isDualPane,
 | 
			
		||||
            isInSinglePaneMode: isInSinglePaneMode,
 | 
			
		||||
            visibleViews: visibleViews.map(function(view) {
 | 
			
		||||
                return view && view.objectName || null;
 | 
			
		||||
            }),
 | 
			
		||||
            visibleViewWidths: visibleViews.map(function(view) {
 | 
			
		||||
                return view && view.width || null;
 | 
			
		||||
            }),
 | 
			
		||||
        };
 | 
			
		||||
        return JSON.stringify(info, null, 2);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function init(mainStackView) {
 | 
			
		||||
        rootView = Qt.createQmlObject(`import QtQuick; import QtQuick.Controls
 | 
			
		||||
                                      StackView { anchors.fill: parent }`, mainStackView);
 | 
			
		||||
        initialized();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function deinit() {
 | 
			
		||||
@ -171,6 +195,8 @@ QtObject {
 | 
			
		||||
                var objectName = view ? view.objectName : obj.objectName;
 | 
			
		||||
                if (!viewManager.destroyView(resources[objectName])) {
 | 
			
		||||
                    print("could not destroy view:", objectName);
 | 
			
		||||
                } else {
 | 
			
		||||
                    print("destroyed view:", objectName);
 | 
			
		||||
                }
 | 
			
		||||
            } else
 | 
			
		||||
                view.dismissed();
 | 
			
		||||
@ -197,8 +223,20 @@ QtObject {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function getView(viewName) {
 | 
			
		||||
        return viewManager.getView(viewName);
 | 
			
		||||
    function getView(viewName, forceCreate = false) {
 | 
			
		||||
        // If the view is already loaded, return it.
 | 
			
		||||
        var view = viewManager.getView(viewName);
 | 
			
		||||
        if (view)
 | 
			
		||||
            return view;
 | 
			
		||||
        if (!forceCreate)
 | 
			
		||||
            return null;
 | 
			
		||||
        // Otherwise, create it.
 | 
			
		||||
        view = viewManager.createView(resources[viewName], null);
 | 
			
		||||
        if (!view) {
 | 
			
		||||
            console.log("Failed to load view: " + viewName);
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        return view;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Load a view without presenting it.
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2024 Savoir-faire Linux Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Mingrui Zhang   <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 * Author: Yang Wang <yang.yang@savoirfairelinux.com>
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
@ -22,7 +22,9 @@
 | 
			
		||||
 | 
			
		||||
#include "appsettingsmanager.h"
 | 
			
		||||
#include "qtutils.h"
 | 
			
		||||
#include "qmlregister.h"
 | 
			
		||||
#include "systemtray.h"
 | 
			
		||||
#include "lrcinstance.h"
 | 
			
		||||
#include "accountlistmodel.h"
 | 
			
		||||
 | 
			
		||||
#include <QtConcurrent/QtConcurrent>
 | 
			
		||||
 | 
			
		||||
@ -33,14 +35,7 @@ AccountAdapter::AccountAdapter(AppSettingsManager* settingsManager,
 | 
			
		||||
    : QmlAdapterBase(instance, parent)
 | 
			
		||||
    , settingsManager_(settingsManager)
 | 
			
		||||
    , systemTray_(systemTray)
 | 
			
		||||
    , accountListModel_(new AccountListModel(instance))
 | 
			
		||||
    , deviceItemListModel_(new DeviceItemListModel(instance, parent))
 | 
			
		||||
    , moderatorListModel_(new ModeratorListModel(instance, parent))
 | 
			
		||||
{
 | 
			
		||||
    QML_REGISTERSINGLETONTYPE_POBJECT(NS_MODELS, accountListModel_.get(), "AccountListModel");
 | 
			
		||||
    QML_REGISTERSINGLETONTYPE_POBJECT(NS_MODELS, deviceItemListModel_.get(), "DeviceItemListModel");
 | 
			
		||||
    QML_REGISTERSINGLETONTYPE_POBJECT(NS_MODELS, moderatorListModel_.get(), "ModeratorListModel");
 | 
			
		||||
 | 
			
		||||
    connect(&lrcInstance_->accountModel(),
 | 
			
		||||
            &AccountModel::accountStatusChanged,
 | 
			
		||||
            this,
 | 
			
		||||
@ -53,8 +48,13 @@ AccountAdapter::AccountAdapter(AppSettingsManager* settingsManager,
 | 
			
		||||
 | 
			
		||||
    connect(systemTray_,
 | 
			
		||||
            &SystemTray::countChanged,
 | 
			
		||||
            accountListModel_.get(),
 | 
			
		||||
            qApp->property("AccountListModel").value<AccountListModel*>(),
 | 
			
		||||
            &AccountListModel::updateNotifications);
 | 
			
		||||
 | 
			
		||||
    // Switch account to the specified index when an account is added.
 | 
			
		||||
    connect(this, &AccountAdapter::accountAdded, this, [this](const QString&, int index) {
 | 
			
		||||
        changeAccount(index);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AccountModel*
 | 
			
		||||
@ -63,6 +63,14 @@ AccountAdapter::getModel()
 | 
			
		||||
    return &(lrcInstance_->accountModel());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AccountAdapter*
 | 
			
		||||
AccountAdapter::create(QQmlEngine*, QJSEngine*)
 | 
			
		||||
{
 | 
			
		||||
    return new AccountAdapter(qApp->property("AppSettingsManager").value<AppSettingsManager*>(),
 | 
			
		||||
                              qApp->property("SystemTray").value<SystemTray*>(),
 | 
			
		||||
                              qApp->property("LRCInstance").value<LRCInstance*>());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
AccountAdapter::changeAccount(int row)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Mingrui Zhang   <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@ -20,21 +20,20 @@
 | 
			
		||||
 | 
			
		||||
#include "qmladapterbase.h"
 | 
			
		||||
 | 
			
		||||
#include "accountlistmodel.h"
 | 
			
		||||
#include "deviceitemlistmodel.h"
 | 
			
		||||
#include "moderatorlistmodel.h"
 | 
			
		||||
#include "systemtray.h"
 | 
			
		||||
#include "lrcinstance.h"
 | 
			
		||||
#include "utils.h"
 | 
			
		||||
#include "api/accountmodel.h"
 | 
			
		||||
 | 
			
		||||
#include <QSettings>
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QQmlEngine>   // QML registration
 | 
			
		||||
#include <QApplication> // QML registration
 | 
			
		||||
 | 
			
		||||
class AppSettingsManager;
 | 
			
		||||
class SystemTray;
 | 
			
		||||
 | 
			
		||||
class AccountAdapter final : public QmlAdapterBase
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
    QML_SINGLETON
 | 
			
		||||
 | 
			
		||||
    Q_PROPERTY(lrc::api::AccountModel* model READ getModel NOTIFY modelChanged)
 | 
			
		||||
 | 
			
		||||
@ -45,6 +44,8 @@ Q_SIGNALS:
 | 
			
		||||
    void modelChanged();
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    static AccountAdapter* create(QQmlEngine*, QJSEngine*);
 | 
			
		||||
 | 
			
		||||
    explicit AccountAdapter(AppSettingsManager* settingsManager,
 | 
			
		||||
                            SystemTray* systemTray,
 | 
			
		||||
                            LRCInstance* instance,
 | 
			
		||||
@ -100,9 +101,5 @@ private:
 | 
			
		||||
 | 
			
		||||
    AppSettingsManager* settingsManager_;
 | 
			
		||||
    SystemTray* systemTray_;
 | 
			
		||||
 | 
			
		||||
    QScopedPointer<AccountListModel> accountListModel_;
 | 
			
		||||
    QScopedPointer<DeviceItemListModel> deviceItemListModel_;
 | 
			
		||||
    QScopedPointer<ModeratorListModel> moderatorListModel_;
 | 
			
		||||
};
 | 
			
		||||
Q_DECLARE_METATYPE(AccountAdapter*)
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
@ -20,11 +20,8 @@
 | 
			
		||||
#include "accountlistmodel.h"
 | 
			
		||||
 | 
			
		||||
#include "lrcinstance.h"
 | 
			
		||||
#include "utils.h"
 | 
			
		||||
 | 
			
		||||
#include "api/account.h"
 | 
			
		||||
#include "api/contact.h"
 | 
			
		||||
#include "api/conversation.h"
 | 
			
		||||
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 * Author: Mingrui Zhang   <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
@ -51,11 +51,9 @@ public:
 | 
			
		||||
    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
 | 
			
		||||
    QHash<int, QByteArray> roleNames() const override;
 | 
			
		||||
 | 
			
		||||
    // reset the model when there's new account added
 | 
			
		||||
    Q_INVOKABLE void reset();
 | 
			
		||||
 | 
			
		||||
    void updateNotifications();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
private:
 | 
			
		||||
    using Role = AccountList::Role;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@ -137,4 +137,11 @@ AppSettingsManager::loadTranslations()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Q_EMIT retranslate();
 | 
			
		||||
    loadHistory();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
AppSettingsManager::loadHistory()
 | 
			
		||||
{
 | 
			
		||||
    Q_EMIT reloadHistory();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@ -20,20 +20,29 @@
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "utils.h"
 | 
			
		||||
 | 
			
		||||
#include <QMetaEnum>
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QStandardPaths>
 | 
			
		||||
#include <QWindow> // for QWindow::AutomaticVisibility
 | 
			
		||||
#include <QSettings>
 | 
			
		||||
#include <QDir>
 | 
			
		||||
 | 
			
		||||
#include <QTranslator>
 | 
			
		||||
 | 
			
		||||
extern const QString defaultDownloadPath;
 | 
			
		||||
 | 
			
		||||
// clang-format off
 | 
			
		||||
#define KEYS \
 | 
			
		||||
 | 
			
		||||
// Define USE_FRAMELESS_WINDOW_DEFAULT based on the platform
 | 
			
		||||
#ifdef Q_OS_LINUX
 | 
			
		||||
#define USE_FRAMELESS_WINDOW_DEFAULT false
 | 
			
		||||
#else
 | 
			
		||||
#define USE_FRAMELESS_WINDOW_DEFAULT true
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Common key-value pairs for both APPSTORE and non-APPSTORE builds
 | 
			
		||||
#define COMMON_KEYS \
 | 
			
		||||
    X(MinimizeOnClose, false) \
 | 
			
		||||
    X(DownloadPath, defaultDownloadPath) \
 | 
			
		||||
    X(ScreenshotPath, {}) \
 | 
			
		||||
@ -64,11 +73,20 @@ extern const QString defaultDownloadPath;
 | 
			
		||||
    X(ShowMardownOption, false) \
 | 
			
		||||
    X(ChatViewEnterIsNewLine, false) \
 | 
			
		||||
    X(ShowSendOption, false) \
 | 
			
		||||
    X(EnablePtt, false) \
 | 
			
		||||
    X(PttKeys, 32) \
 | 
			
		||||
    X(UseFramelessWindow, USE_FRAMELESS_WINDOW_DEFAULT)
 | 
			
		||||
#if APPSTORE
 | 
			
		||||
#define KEYS COMMON_KEYS
 | 
			
		||||
#else
 | 
			
		||||
// Additional key-value pairs for non-APPSTORE builds including donation
 | 
			
		||||
// related settings.
 | 
			
		||||
#define KEYS COMMON_KEYS \
 | 
			
		||||
    X(Donation2023VisibleDate, "2023-11-27 05:00") \
 | 
			
		||||
    X(IsDonationVisible, true) \
 | 
			
		||||
    X(Donation2023EndDate, "2024-01-31 00:00") \
 | 
			
		||||
    X(EnablePtt, false) \
 | 
			
		||||
    X(PttKeys, 32)
 | 
			
		||||
    X(Donation2023EndDate2, "2024-04-01 00:00")
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * A class to expose settings keys in both c++ and QML.
 | 
			
		||||
 * Note: this is using a non-constructable class instead of a
 | 
			
		||||
@ -106,8 +124,9 @@ public:
 | 
			
		||||
        default: return {};
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
     Settings() = delete;
 | 
			
		||||
    Settings() = delete;
 | 
			
		||||
};
 | 
			
		||||
Q_DECLARE_METATYPE(Settings::Key)
 | 
			
		||||
// clang-format on
 | 
			
		||||
@ -130,9 +149,11 @@ public:
 | 
			
		||||
    QString getLanguage();
 | 
			
		||||
 | 
			
		||||
    void loadTranslations();
 | 
			
		||||
    void loadHistory();
 | 
			
		||||
 | 
			
		||||
Q_SIGNALS:
 | 
			
		||||
    void retranslate();
 | 
			
		||||
    void reloadHistory();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QSettings* settings_;
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Yang Wang   <yang.wang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Yang Wang   <yang.wang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author : Edric Ladent Milaret<edric.ladent - milaret @savoirfairelinux.com>
 | 
			
		||||
 * Author : Andreas Traczyk<andreas.traczyk @savoirfairelinux.com>
 | 
			
		||||
 * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@ -20,23 +20,31 @@
 | 
			
		||||
 | 
			
		||||
#include "qmladapterbase.h"
 | 
			
		||||
#include "lrcinstance.h"
 | 
			
		||||
#include "qtutils.h"
 | 
			
		||||
#include "rendererinformationlistmodel.h"
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QVariant>
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <qtutils.h>
 | 
			
		||||
 | 
			
		||||
#include "rendererinformationlistmodel.h"
 | 
			
		||||
#include <QQmlEngine>   // QML registration
 | 
			
		||||
#include <QApplication> // QML registration
 | 
			
		||||
 | 
			
		||||
class AvAdapter final : public QmlAdapterBase
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
    QML_SINGLETON
 | 
			
		||||
 | 
			
		||||
    QML_PROPERTY(bool, muteCamera)
 | 
			
		||||
    QML_RO_PROPERTY(QStringList, windowsNames)
 | 
			
		||||
    QML_RO_PROPERTY(QList<QVariant>, windowsIds)
 | 
			
		||||
    QML_RO_PROPERTY(QVariant, renderersInfoList)
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    static AvAdapter* create(QQmlEngine*, QJSEngine*)
 | 
			
		||||
    {
 | 
			
		||||
        return new AvAdapter(qApp->property("LRCInstance").value<LRCInstance*>());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    explicit AvAdapter(LRCInstance* instance, QObject* parent = nullptr);
 | 
			
		||||
    ~AvAdapter() = default;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@ -27,7 +27,8 @@ AvatarRegistry::AvatarRegistry(LRCInstance* instance, QObject* parent)
 | 
			
		||||
    connect(lrcInstance_,
 | 
			
		||||
            &LRCInstance::currentAccountIdChanged,
 | 
			
		||||
            this,
 | 
			
		||||
            &AvatarRegistry::connectAccount);
 | 
			
		||||
            &AvatarRegistry::connectAccount,
 | 
			
		||||
            Qt::DirectConnection);
 | 
			
		||||
 | 
			
		||||
    connect(&lrcInstance_->accountModel(),
 | 
			
		||||
            &AccountModel::profileUpdated,
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@ -20,13 +20,22 @@
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QMap>
 | 
			
		||||
#include <QQmlEngine>   // QML registration
 | 
			
		||||
#include <QApplication> // QML registration
 | 
			
		||||
 | 
			
		||||
class LRCInstance;
 | 
			
		||||
 | 
			
		||||
class AvatarRegistry : public QObject
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
    QML_SINGLETON
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    static AvatarRegistry* create(QQmlEngine*, QJSEngine*)
 | 
			
		||||
    {
 | 
			
		||||
        return new AvatarRegistry(qApp->property("LRCInstance").value<LRCInstance*>());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    explicit AvatarRegistry(LRCInstance* instance, QObject* parent = nullptr);
 | 
			
		||||
    ~AvatarRegistry() = default;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
 | 
			
		||||
 * Author: Yang Wang <yang.wang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2019-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
 | 
			
		||||
 * Author: Yang Wang <yang.wang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>
 | 
			
		||||
 * Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com>
 | 
			
		||||
 * Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
 | 
			
		||||
@ -26,8 +26,8 @@
 | 
			
		||||
#include "calladapter.h"
 | 
			
		||||
 | 
			
		||||
#include "systemtray.h"
 | 
			
		||||
#include "qmlregister.h"
 | 
			
		||||
#include "appsettingsmanager.h"
 | 
			
		||||
#include "pttlistener.h"
 | 
			
		||||
 | 
			
		||||
#include <api/callmodel.h>
 | 
			
		||||
#include <api/callparticipantsmodel.h>
 | 
			
		||||
@ -45,19 +45,15 @@ CallAdapter::CallAdapter(AppSettingsManager* settingsManager,
 | 
			
		||||
    : QmlAdapterBase(instance, parent)
 | 
			
		||||
    , systemTray_(systemTray)
 | 
			
		||||
    , callInformationListModel_(std::make_unique<CallInformationListModel>())
 | 
			
		||||
    , listener_(new PTTListener(settingsManager, this))
 | 
			
		||||
{
 | 
			
		||||
    // Expose the Push-to-talk listener to QML as a singleton
 | 
			
		||||
    QML_REGISTERSINGLETONTYPE_POBJECT(NS_MODELS, listener_, "PttListener");
 | 
			
		||||
    // Get the PTTListener instance.
 | 
			
		||||
    listener_ = qApp->property("PTTListener").value<PTTListener*>();
 | 
			
		||||
 | 
			
		||||
    set_callInformationList(QVariant::fromValue(callInformationListModel_.get()));
 | 
			
		||||
 | 
			
		||||
    timer = new QTimer(this);
 | 
			
		||||
    connect(timer, &QTimer::timeout, this, &CallAdapter::updateAdvancedInformation);
 | 
			
		||||
 | 
			
		||||
    overlayModel_.reset(new CallOverlayModel(lrcInstance_, listener_, this));
 | 
			
		||||
    QML_REGISTERSINGLETONTYPE_POBJECT(NS_MODELS, overlayModel_.get(), "CallOverlayModel");
 | 
			
		||||
 | 
			
		||||
    accountId_ = lrcInstance_->get_currentAccountId();
 | 
			
		||||
    connectCallModel(accountId_);
 | 
			
		||||
 | 
			
		||||
@ -314,7 +310,7 @@ CallAdapter::onCallStatusChanged(const QString& callId, int code)
 | 
			
		||||
                    currentConfSubcalls_.clear();
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
            } else if (currentConfSubcalls_.size() >= 2) {
 | 
			
		||||
                // okay, still a conference, so just update the subcall list and this call
 | 
			
		||||
                saveConferenceSubcalls();
 | 
			
		||||
                Q_EMIT lrcInstance_->conversationUpdated(currentConvInfo.uid, accountId_);
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2020-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 * Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
@ -23,32 +23,34 @@
 | 
			
		||||
#include "lrcinstance.h"
 | 
			
		||||
#include "qmladapterbase.h"
 | 
			
		||||
#include "screensaver.h"
 | 
			
		||||
#include "calloverlaymodel.h"
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_GLOBAL_PTT
 | 
			
		||||
#include "pttlistener.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "callInformationListModel.h"
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QVariant>
 | 
			
		||||
#include <QSystemTrayIcon>
 | 
			
		||||
 | 
			
		||||
#include "callInformationListModel.h"
 | 
			
		||||
#include <QQmlEngine>   // QML registration
 | 
			
		||||
#include <QApplication> // QML registration
 | 
			
		||||
 | 
			
		||||
class SystemTray;
 | 
			
		||||
class AppSettingsManager;
 | 
			
		||||
class PTTListener;
 | 
			
		||||
 | 
			
		||||
class CallAdapter final : public QmlAdapterBase
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
    QML_SINGLETON
 | 
			
		||||
 | 
			
		||||
    QML_PROPERTY(bool, hasCall)
 | 
			
		||||
    QML_RO_PROPERTY(QVariant, callInformationList)
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    QTimer* timer;
 | 
			
		||||
    enum MuteStates { UNMUTED, LOCAL_MUTED, MODERATOR_MUTED, BOTH_MUTED };
 | 
			
		||||
    Q_ENUM(MuteStates)
 | 
			
		||||
    static CallAdapter* create(QQmlEngine*, QJSEngine*)
 | 
			
		||||
    {
 | 
			
		||||
        return new CallAdapter(qApp->property("AppSettingsManager").value<AppSettingsManager*>(),
 | 
			
		||||
                               qApp->property("SystemTray").value<SystemTray*>(),
 | 
			
		||||
                               qApp->property("LRCInstance").value<LRCInstance*>());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    explicit CallAdapter(AppSettingsManager* settingsManager,
 | 
			
		||||
                         SystemTray* systemTray,
 | 
			
		||||
@ -56,7 +58,10 @@ public:
 | 
			
		||||
                         QObject* parent = nullptr);
 | 
			
		||||
    ~CallAdapter();
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    QTimer* timer;
 | 
			
		||||
    enum MuteStates { UNMUTED, LOCAL_MUTED, MODERATOR_MUTED, BOTH_MUTED };
 | 
			
		||||
    Q_ENUM(MuteStates)
 | 
			
		||||
 | 
			
		||||
    Q_INVOKABLE void startTimerInformation();
 | 
			
		||||
    Q_INVOKABLE void stopTimerInformation();
 | 
			
		||||
    Q_INVOKABLE void placeAudioOnlyCall();
 | 
			
		||||
@ -131,7 +136,6 @@ private:
 | 
			
		||||
 | 
			
		||||
    ScreenSaver screenSaver;
 | 
			
		||||
    SystemTray* systemTray_;
 | 
			
		||||
    QScopedPointer<CallOverlayModel> overlayModel_;
 | 
			
		||||
    VectorString currentConfSubcalls_;
 | 
			
		||||
    std::unique_ptr<CallInformationListModel> callInformationListModel_;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2021-2023 Savoir-faire Linux Inc.
 | 
			
		||||
 * Copyright (C) 2021-2024 Savoir-faire Linux Inc.
 | 
			
		||||
 * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
 | 
			
		||||
 * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
 | 
			
		||||
 *
 | 
			
		||||
@ -21,8 +21,6 @@
 | 
			
		||||
 | 
			
		||||
#include "lrcinstance.h"
 | 
			
		||||
#include "qtutils.h"
 | 
			
		||||
#include "mainapplication.h"
 | 
			
		||||
 | 
			
		||||
#include "pttlistener.h"
 | 
			
		||||
 | 
			
		||||
#include <QAbstractListModel>
 | 
			
		||||
 | 
			
		||||