Compare commits
74 Commits
nightly/20
...
nightly/20
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| f46b94baeb | |||
| adfafd9dda | |||
| 45271413b6 | |||
| 87aed4c039 | |||
| 03c20a4205 | |||
| ddb1409195 | |||
| a74b54939d | |||
| 0af4af1685 | |||
| 850decf38e | |||
| bd39fbd5a4 | |||
| 7d7428af21 | |||
| 5cd2490f24 | |||
| ca85303110 | |||
| 46ca469bec | |||
| 49e64bb027 | |||
| 8dd04cab92 | |||
| be9725ec0c | |||
| b4de00ce61 | |||
| e753dd509e | |||
| 20c4081d88 | |||
| 48cfd8e29f | |||
| 3344fbaf9d | |||
| 5e362c2c2e | |||
| 7bd469525d | |||
| f457ed5076 | |||
| ed78c35fda | |||
| d42d1cd343 | |||
| 762cbbff38 | |||
| 500681fb69 | |||
| 8b09149ecd | |||
| eae76a619a | |||
| aa44599a66 | |||
| a8be1f0271 | |||
| d5bacf6b9f | |||
| bb8f4cc3a7 | |||
| 1d7d10a12d | |||
| c689997456 | |||
| 8fc1ba342c | |||
| 6b313e193d | |||
| 167550abc3 | |||
| 7736b5c34c | |||
| 1dd0ad71e9 | |||
| db4e0d3767 | |||
| b1e129b0e2 |
2
.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
custom: ['https://jami.net/whydonate/']
|
||||
lfx_crowdfunding: jami-a-gnu-package
|
||||
@ -97,7 +97,7 @@ 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 4)
|
||||
set(QT6_MINVER_MINOR 5)
|
||||
if(QT6_VER AND QT6_PATH)
|
||||
find_package(QT NAMES Qt6 REQUIRED
|
||||
PATHS ${QT6_PATH} NO_DEFAULT_PATH)
|
||||
@ -106,10 +106,10 @@ else()
|
||||
find_package(QT NAMES Qt6 REQUIRED)
|
||||
endif()
|
||||
if (${QT_VERSION_MINOR} GREATER_EQUAL ${QT6_MINVER_MINOR})
|
||||
# Qt version is 6.4 or higher
|
||||
# Qt version is 6.5 or higher
|
||||
message(STATUS "Found a suitable Qt version ${QT_VERSION}")
|
||||
else()
|
||||
message(FATAL_ERROR "Qt 6.4 or higher is required. Found ${QT_VERSION}")
|
||||
message(FATAL_ERROR "Qt 6.5 or higher is required. Found ${QT_VERSION}")
|
||||
endif()
|
||||
|
||||
# libjamiclient
|
||||
|
||||
22
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.4 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.5 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.4 first. For this, there is 3 methods:
|
||||
So, you will need to get Qt 6.5 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.4 is available, you can use the packages from your distribution:
|
||||
If Qt 6.5 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.4.1/gcc_64`.
|
||||
`./build.py --install --qt=/home/<username>/Qt/6.5.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.4 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.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).
|
||||
|
||||
## 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.4.3 components:
|
||||
- Using the online installer, install the following Qt 6.5.3 components:
|
||||
|
||||
- Git 2.10.2
|
||||
- MSVC 2019 64-bit
|
||||
@ -207,7 +207,7 @@ Only 64-bit MSVC build can be compiled.
|
||||
|
||||
| | Qt Version |
|
||||
| -------------------- | ---------- |
|
||||
| Minimum requirement: | 6.4.3 |
|
||||
| Minimum requirement: | 6.5.3 |
|
||||
|
||||
- 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.4.3/msvc2019_64)
|
||||
python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.5.3/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.4.3/msvc2019_64)
|
||||
python extras\scripts\build-windows.py --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.5.3/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.4
|
||||
- install Qt 6.5
|
||||
|
||||
Qt 6.4 can be installed via brew
|
||||
Qt 6.5 can be installed via brew
|
||||
|
||||
```bash
|
||||
brew install qt
|
||||
|
||||
2
build.py
@ -45,7 +45,7 @@ APT_BASED_DISTROS = [
|
||||
]
|
||||
|
||||
DNF_BASED_DISTROS = [
|
||||
'fedora', 'rhel',
|
||||
'fedora', 'rhel', 'almalinux',
|
||||
]
|
||||
|
||||
PACMAN_BASED_DISTROS = [
|
||||
|
||||
2
daemon
@ -46,10 +46,10 @@ DEBIAN_DSC_FILENAME := jami_$(DEBIAN_VERSION).dsc
|
||||
|
||||
# Qt versions
|
||||
QT_MAJOR := 6
|
||||
QT_MINOR := 4
|
||||
QT_MINOR := 5
|
||||
QT_PATCH := 3
|
||||
QT_TARBALL_CHECKSUM := 29a7eebdbba0ea57978dea6083709c93593a60f0f3133a3de08b9571ee8eaab4
|
||||
DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-3
|
||||
QT_TARBALL_CHECKSUM := 7cda4d119aad27a3887329cfc285f2aba5da85601212bcb0aea27bd6b7b544cb
|
||||
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
|
||||
|
||||
@ -171,6 +171,7 @@ DISTRIBUTIONS := \
|
||||
fedora_37 \
|
||||
fedora_38 \
|
||||
fedora_39 \
|
||||
alma_9 \
|
||||
opensuse-leap_15.4 \
|
||||
snap
|
||||
|
||||
|
||||
105
extras/packaging/gnu-linux/docker/Dockerfile_alma_9
Normal file
@ -0,0 +1,105 @@
|
||||
FROM almalinux:9
|
||||
RUN dnf clean all
|
||||
RUN dnf update -y
|
||||
RUN dnf install -y epel-release
|
||||
RUN dnf install -y 'dnf-command(config-manager)'
|
||||
RUN dnf config-manager --set-enabled crb
|
||||
RUN dnf config-manager --set-enabled appstream
|
||||
RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
|
||||
dnf install -y mock
|
||||
RUN yum install -y wget && \
|
||||
wget https://repo.almalinux.org/almalinux/9/devel/x86_64/os/Packages/uuid-c++-devel-1.6.2-55.el9.x86_64.rpm && \
|
||||
yum localinstall -y uuid-c++-devel-1.6.2-55.el9.x86_64.rpm && \
|
||||
rm -f uuid-c++-devel-1.6.2-55.el9.x86_64.rpm
|
||||
RUN yum install -y xorg-x11-xauth
|
||||
RUN dnf install -y \
|
||||
git \
|
||||
rpm-build \
|
||||
tar \
|
||||
make \
|
||||
autoconf \
|
||||
automake \
|
||||
nasm \
|
||||
speexdsp-devel \
|
||||
pulseaudio-libs-devel \
|
||||
libcanberra-devel \
|
||||
libcurl-devel \
|
||||
libtool \
|
||||
mesa-libgbm-devel \
|
||||
mesa-dri-drivers \
|
||||
dbus-devel \
|
||||
expat-devel \
|
||||
pcre-devel \
|
||||
yaml-cpp-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
yasm \
|
||||
speex-devel \
|
||||
gsm-devel \
|
||||
chrpath \
|
||||
check \
|
||||
astyle \
|
||||
gettext-devel \
|
||||
gcc-c++ \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
gnutls-devel \
|
||||
nettle-devel \
|
||||
opus-devel \
|
||||
patch \
|
||||
jsoncpp-devel \
|
||||
libnatpmp-devel \
|
||||
webkitgtk4-devel \
|
||||
cryptopp-devel \
|
||||
libva-devel \
|
||||
libvdpau-devel \
|
||||
msgpack-devel \
|
||||
NetworkManager-libnm-devel \
|
||||
openssl-devel \
|
||||
clutter-devel \
|
||||
clutter-gtk-devel \
|
||||
libappindicator-gtk3-devel \
|
||||
libnotify-devel \
|
||||
libupnp-devel \
|
||||
qrencode-devel \
|
||||
libargon2-devel \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
clang \
|
||||
clang-devel \
|
||||
llvm-devel \
|
||||
nodejs \
|
||||
flex \
|
||||
gstreamer1 gstreamer1-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
gstreamer1-plugins-good \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
nss-devel \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
vulkan-devel \
|
||||
libXrender-devel \
|
||||
xcb-util-* \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
wget \
|
||||
libstdc++-static \
|
||||
sqlite-devel \
|
||||
perl-generators \
|
||||
perl-English \
|
||||
libxshmfence-devel \
|
||||
ninja-build \
|
||||
clang \
|
||||
cmake \
|
||||
fmt-devel \
|
||||
python3-html5lib \
|
||||
cups-devel
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
||||
@ -18,7 +18,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.20 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
|
||||
@ -70,7 +70,8 @@ RUN zypper --non-interactive install -y \
|
||||
nodejs12 \
|
||||
mozilla-nss-devel \
|
||||
python-xml \
|
||||
python-six \
|
||||
python3-six \
|
||||
python3-importlib-metadata \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
|
||||
@ -53,6 +53,7 @@ Build-Depends: debhelper (>= 9),
|
||||
libvulkan-dev [linux-any],
|
||||
libx11-dev,
|
||||
libx11-xcb-dev,
|
||||
libsm-dev,
|
||||
libxcb-glx0-dev,
|
||||
libxcb-icccm4-dev,
|
||||
libxcb-image0-dev,
|
||||
@ -298,10 +299,11 @@ Build-Depends: debhelper (>= 9),
|
||||
# libvpx-dev (>= 1.8),
|
||||
libvpx-dev,
|
||||
libwebp-dev,
|
||||
# libx11-xcb-dev,
|
||||
libx11-xcb-dev,
|
||||
libxcb-dri3-dev,
|
||||
# libxcomposite-dev,
|
||||
libxcursor-dev,
|
||||
libxcb-cursor-dev,
|
||||
libxdamage-dev,
|
||||
libxml2-dev,
|
||||
libxnvctrl-dev,
|
||||
|
||||
@ -1,740 +0,0 @@
|
||||
qtwebengine/src/3rdparty/chromium/base/debug/profiler.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/base/logging.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/extensions/common/constants.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/net/base/parse_number.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h | 6 ++++--
|
||||
qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h | 4 ++--
|
||||
qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp | 4 ++++
|
||||
qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h | 1 +
|
||||
qtwebengine/src/core/browsing_data_remover_delegate_qt.h | 2 ++
|
||||
54 files changed, 71 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h b/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h
|
||||
index 1229e06234..c7ed55e70f 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef BASE_DEBUG_PROFILER_H_
|
||||
#define BASE_DEBUG_PROFILER_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <stddef.h>
|
||||
|
||||
#include <string>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h b/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h
|
||||
index 60c3c5c474..6c8021cfde 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
+#include <cstdint>
|
||||
#include <iosfwd>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/base/logging.h b/qtwebengine/src/3rdparty/chromium/base/logging.h
|
||||
index a3ff92f0fd..c272f796a9 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/base/logging.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/base/logging.h
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
+
|
||||
+#include <cstdint>
|
||||
#include <cassert>
|
||||
#include <cstdint>
|
||||
#include <sstream>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc b/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
index 96f8c3bd7c..c3f087b1a9 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "ui/gfx/animation/keyframe/target_property.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace cc {
|
||||
|
||||
static_assert(TargetProperty::LAST_TARGET_PROPERTY <
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h b/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h
|
||||
index 2aba73ebcb..2e028fddcf 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_
|
||||
#define COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h b/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h
|
||||
index 3069c858d3..f4614b73c6 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_
|
||||
#define CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "base/callback_forward.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc
|
||||
index 80fd26f4f4..3f08972a7a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc
|
||||
@@ -3,6 +3,7 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "device/base/synchronization/one_writer_seqlock.h"
|
||||
+#include <cstdint>
|
||||
|
||||
#include "base/threading/platform_thread.h"
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h
|
||||
index 6a3eeda565..525301379c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define DEVICE_BASE_SYNCHRONIZATION_ONE_WRITER_SEQLOCK_H_
|
||||
|
||||
#include <atomic>
|
||||
+#include <cstdint>
|
||||
|
||||
#include "base/atomicops.h"
|
||||
#include "base/check.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h b/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h
|
||||
index 3cf2914e10..4b0552440c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_
|
||||
#define DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h
|
||||
index c24205c402..ee67ecf189 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_
|
||||
#define EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h b/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h
|
||||
index 9ac68e2be9..ef2761020d 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h
|
||||
@@ -10,6 +10,8 @@
|
||||
#include "build/chromeos_buildflags.h"
|
||||
#include "extensions/common/extensions_export.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace extensions {
|
||||
|
||||
// Scheme we serve extension content from.
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h b/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h
|
||||
index 4ba8de8460..6352b90196 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef EXTENSIONS_RENDERER_BINDINGS_API_INVOCATION_ERRORS_H_
|
||||
#define EXTENSIONS_RENDERER_BINDINGS_API_INVOCATION_ERRORS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <set>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h
|
||||
index a9c7adb5b5..943bd4e470 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace gpu {
|
||||
namespace webgpu {
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h
|
||||
index 027f1a5af3..70759b2ae4 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_
|
||||
#define GPU_CONFIG_GPU_FEATURE_INFO_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h
|
||||
index 3ea2191b50..0a1ae11202 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef GPU_CONFIG_GPU_PREFERENCES_H_
|
||||
#define GPU_CONFIG_GPU_PREFERENCES_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <stddef.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
index f72970c67a..d7f0b7d492 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef GPU_CONFIG_GPU_UTIL_H_
|
||||
#define GPU_CONFIG_GPU_UTIL_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
#include "build/build_config.h"
|
||||
#include "gpu/config/gpu_feature_info.h"
|
||||
#include "gpu/gpu_export.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h b/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h
|
||||
index 4e49ab7112..e99d2dd7aa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "base/strings/string_piece.h"
|
||||
#include "net/base/net_export.h"
|
||||
+#include <cstdint>
|
||||
|
||||
// This file contains utility functions for parsing numbers, in the context of
|
||||
// network protocols.
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h b/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h
|
||||
index 2e9c319a3d..4d723d18f2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define NET_COOKIES_COOKIE_INCLUSION_STATUS_H_
|
||||
|
||||
#include <bitset>
|
||||
+#include <cstdint>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h
|
||||
index 6a300ed0c0..3e30f1cb02 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_
|
||||
#define QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h
|
||||
index 52f1501728..db4d310849 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_
|
||||
#define QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h b/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h
|
||||
index 138ca2efec..08f06e7b8c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_
|
||||
#define PDF_DOCUMENT_ATTACHMENT_INFO_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
|
||||
index b4fdb9a6d3..375d3ef327 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
|
||||
@@ -38,6 +38,10 @@ namespace pp {
|
||||
/// As a further optimization, we can add support for this later.
|
||||
class ThreadSafeThreadTraits {
|
||||
public:
|
||||
+
|
||||
+ typedef pp::Lock Lock;
|
||||
+ typedef pp::AutoLock AutoLock;
|
||||
+
|
||||
class RefCount {
|
||||
public:
|
||||
/// Default constructor. In debug mode, this checks that the object is being
|
||||
@@ -67,8 +71,6 @@ class ThreadSafeThreadTraits {
|
||||
int32_t ref_;
|
||||
};
|
||||
|
||||
- typedef pp::Lock Lock;
|
||||
- typedef pp::AutoLock AutoLock;
|
||||
};
|
||||
|
||||
/// The non-thread-safe version of thread traits. Using this class as the
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h b/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h
|
||||
index 0aad3ac782..7f7a1057d7 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
|
||||
#define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <bitset>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h b/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h
|
||||
index c47536d63e..443f47afd0 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
+#include <cstdint>
|
||||
#include <cstddef>
|
||||
#include <cstring>
|
||||
#include <ostream>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h
|
||||
index e13aa2221d..0ce848486d 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h
|
||||
@@ -7,7 +7,7 @@
|
||||
#define GLSLANG_SHADERLANG_H_
|
||||
|
||||
#include <stddef.h>
|
||||
-
|
||||
+#include <cstdint>
|
||||
#include "KHR/khrplatform.h"
|
||||
|
||||
#include <array>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h
|
||||
index 18175e15c7..28332857bc 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <array>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
+#include <cstdint>
|
||||
|
||||
// This type is defined here to simplify ANGLE's integration with glslang for SPIR-V.
|
||||
using ShCompileOptions = uint64_t;
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h
|
||||
index c63049b174..82b27837b5 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_ORIGIN_TRIAL_PUBLIC_KEY_H_
|
||||
|
||||
#include <array>
|
||||
+#include <cstdint>
|
||||
|
||||
namespace blink {
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h
|
||||
index 14c5548766..43c9a8d6a5 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DARK_MODE_TYPES_H_
|
||||
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DARK_MODE_TYPES_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace blink {
|
||||
|
||||
enum class DarkModeResult : uint8_t {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h
|
||||
index 80b3150b67..6377196230 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h
|
||||
@@ -116,7 +116,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode
|
||||
|
||||
// An identifier for a document transition shared element. `id.valid()`
|
||||
// returns true if this has been set, and false otherwise.
|
||||
- DocumentTransitionSharedElementId document_transition_shared_element_id;
|
||||
+ cc::DocumentTransitionSharedElementId document_transition_shared_element_id;
|
||||
|
||||
// An identifier to tag shared element resources generated and cached in the
|
||||
// Viz process. This generated resource can be used as content for other
|
||||
@@ -285,7 +285,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode
|
||||
return state_.compositor_element_id;
|
||||
}
|
||||
|
||||
- const blink::DocumentTransitionSharedElementId&
|
||||
+ const cc::DocumentTransitionSharedElementId&
|
||||
DocumentTransitionSharedElementId() const {
|
||||
return state_.document_transition_shared_element_id;
|
||||
}
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h b/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h
|
||||
index c7e4f2b378..f30ce91b36 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <string>
|
||||
+#include <cstdint>
|
||||
|
||||
#include "client/linux/handler/microdump_extra_info.h"
|
||||
#include "common/using_std_string.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h
|
||||
index 2d58d76cb6..139af564ea 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "dawn/common/TypedInteger.h"
|
||||
#include "dawn/common/ityp_array.h"
|
||||
|
||||
+#include <cstdint>
|
||||
#include <bitset>
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h
|
||||
index 374bd8302a..0884eb2a19 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_
|
||||
#define SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h
|
||||
index fa5fc3a7e9..6cec934670 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_SPIRV_NAMER_H_
|
||||
#define SRC_TINT_READER_SPIRV_NAMER_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h
|
||||
index f378d57817..98d1336f9a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_WGSL_LEXER_H_
|
||||
#define SRC_TINT_READER_WGSL_LEXER_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
#include "src/tint/reader/wgsl/token.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h
|
||||
index 7b5b6754ed..62b1ca7e36 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_WGSL_TOKEN_H_
|
||||
#define SRC_TINT_READER_WGSL_TOKEN_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <variant> // NOLINT: cpplint doesn't recognise this
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc
|
||||
index 4be648b37a..cac7238ef2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "src/tint/writer/spirv/instruction.h"
|
||||
|
||||
+#include <cstdint>
|
||||
#include <utility>
|
||||
|
||||
namespace tint::writer::spirv {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h
|
||||
index 46a5deb55b..4c3080ff25 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_WRITER_SPIRV_OPERAND_H_
|
||||
#define SRC_TINT_WRITER_SPIRV_OPERAND_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc
|
||||
index a3099e15db..2e6f0eea70 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
+#include <cstdio>
|
||||
#include <new>
|
||||
#include <utility>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h b/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h
|
||||
index d2731dac7a..46bc87ef92 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef CONSTANTS_ANNOTATION_FLAGS_H_
|
||||
#define CONSTANTS_ANNOTATION_FLAGS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace pdfium {
|
||||
namespace annotation_flags {
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h
|
||||
index 1b4c53815b..472042fabc 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h
|
||||
@@ -18,6 +18,7 @@
|
||||
#define INCLUDE_PERFETTO_EXT_BASE_UUID_H_
|
||||
|
||||
#include <array>
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
#include "perfetto/ext/base/optional.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
index c56f0344f9..cd7824929e 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
@@ -20,6 +20,8 @@
|
||||
#include "perfetto/ext/base/optional.h"
|
||||
#include "perfetto/trace_processor/status.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace perfetto {
|
||||
|
||||
namespace protos {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp
|
||||
index 3164650728..512a26943d 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp
|
||||
@@ -10,6 +10,10 @@
|
||||
|
||||
#include <algorithm> // std::lower_bound
|
||||
|
||||
+#include <string.h>
|
||||
+#include <algorithm>
|
||||
+#include <iterator>
|
||||
+
|
||||
static constexpr const char* gColorNames[] = {
|
||||
"aliceblue",
|
||||
"antiquewhite",
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
|
||||
index b7c586b80e..19ccbb024a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
|
||||
@@ -146,6 +146,7 @@ available through VmaAllocatorCreateInfo::pRecordSettings.
|
||||
#endif // #if VMA_VULKAN_VERSION >= 1001000
|
||||
#endif // #if defined(__ANDROID__) && VMA_STATIC_VULKAN_FUNCTIONS && VK_NO_PROTOTYPES
|
||||
|
||||
+#include <cstdio>
|
||||
#ifndef VULKAN_H_
|
||||
#include <vulkan/vulkan.h>
|
||||
#endif
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h
|
||||
index 5fd37b4613..ce70405dd2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h
|
||||
@@ -11,6 +11,7 @@
|
||||
#ifndef CALL_RTP_DEMUXER_H_
|
||||
#define CALL_RTP_DEMUXER_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h
|
||||
index b70ac4aa59..7ba5555647 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <gio/gio.h>
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
namespace webrtc {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h
|
||||
index ca249541d0..534214dbfa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h
|
||||
@@ -12,6 +12,7 @@
|
||||
#ifndef RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_
|
||||
#define RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h b/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h
|
||||
index 708d6c98ac..898016d886 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
+#include <cstdint>
|
||||
#include "base/component_export.h"
|
||||
#include "ui/base/ime/text_input_type.h"
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h b/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
index d97a696fd5..68b18d80cd 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef UI_EVENTS_GESTURE_EVENT_DETAILS_H_
|
||||
#define UI_EVENTS_GESTURE_EVENT_DETAILS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string.h>
|
||||
|
||||
#include "base/check_op.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h b/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h
|
||||
index 7ff15f0fc5..136cebc09e 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef UI_EVENTS_TYPES_SCROLL_TYPES_H_
|
||||
#define UI_EVENTS_TYPES_SCROLL_TYPES_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace ui {
|
||||
|
||||
enum class ScrollGranularity : uint8_t {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h
|
||||
index 1ad025fec1..adadf96190 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef UI_GFX_LINEAR_GRADIENT_H_
|
||||
#define UI_GFX_LINEAR_GRADIENT_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <array>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h
|
||||
index fdac44e31e..a752dba6a2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef V8_BASE_LOGGING_H_
|
||||
#define V8_BASE_LOGGING_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
index 61644ffe05..6fbc037437 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef V8_BASE_MACROS_H_
|
||||
#define V8_BASE_MACROS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <limits>
|
||||
#include <type_traits>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h b/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h
|
||||
index c1d69c18f0..eb33c6816a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
|
||||
#define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
// Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may
|
||||
diff --git a/qtwebengine/src/core/browsing_data_remover_delegate_qt.h b/qtwebengine/src/core/browsing_data_remover_delegate_qt.h
|
||||
index 4e690ffb19..dfa884cd65 100644
|
||||
--- a/qtwebengine/src/core/browsing_data_remover_delegate_qt.h
|
||||
+++ b/qtwebengine/src/core/browsing_data_remover_delegate_qt.h
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "content/public/browser/browsing_data_remover_delegate.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace QtWebEngineCore {
|
||||
|
||||
class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate {
|
||||
@ -0,0 +1,81 @@
|
||||
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,52 +0,0 @@
|
||||
From f4410fcbb093f259eaff4a20fc4266a535479235 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastien Blin <sebastien.blin@savoirfairelinux.com>
|
||||
Date: Mon, 29 May 2023 13:09:53 -0400
|
||||
Subject: [PATCH] OpenFile portal: do not use O_PATH fds
|
||||
|
||||
Using O_PATH requires correctly specifying whether the fd is writable or
|
||||
not. Stating that the fd is writable without it actually being writable
|
||||
results into rejection on xdg-desktop-portal side. Other implementations
|
||||
like xdg-open or gtk have also moved away from O_PATH fds so this will
|
||||
make a matching implementation and avoid possible rejections from xdp.
|
||||
|
||||
Fixes: QTBUG-113143
|
||||
Original: https://codereview.qt-project.org/c/qt/qtbase/+/475425
|
||||
---
|
||||
qtbase/src/gui/platform/unix/qgenericunixservices.cpp | 8 ++------
|
||||
1 file changed, 2 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/qtbase/src/gui/platform/unix/qgenericunixservices.cpp b/qtbase/src/gui/platform/unix/qgenericunixservices.cpp
|
||||
index a0e5466c58..fe0fdaa625 100644
|
||||
--- a/qtbase/src/gui/platform/unix/qgenericunixservices.cpp
|
||||
+++ b/qtbase/src/gui/platform/unix/qgenericunixservices.cpp
|
||||
@@ -163,8 +163,7 @@ static inline QDBusMessage xdgDesktopPortalOpenFile(const QUrl &url)
|
||||
// handle_token (s) - A string that will be used as the last element of the @handle.
|
||||
// writable (b) - Whether to allow the chosen application to write to the file.
|
||||
|
||||
-#ifdef O_PATH
|
||||
- const int fd = qt_safe_open(QFile::encodeName(url.toLocalFile()), O_PATH);
|
||||
+ const int fd = qt_safe_open(QFile::encodeName(url.toLocalFile()), O_RDONLY);
|
||||
if (fd != -1) {
|
||||
QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.portal.Desktop"_L1,
|
||||
"/org/freedesktop/portal/desktop"_L1,
|
||||
@@ -174,16 +173,13 @@ static inline QDBusMessage xdgDesktopPortalOpenFile(const QUrl &url)
|
||||
QDBusUnixFileDescriptor descriptor;
|
||||
descriptor.giveFileDescriptor(fd);
|
||||
|
||||
- const QVariantMap options = {{"writable"_L1, true}};
|
||||
+ const QVariantMap options = {};
|
||||
|
||||
// FIXME parent_window_id
|
||||
message << QString() << QVariant::fromValue(descriptor) << options;
|
||||
|
||||
return QDBusConnection::sessionBus().call(message);
|
||||
}
|
||||
-#else
|
||||
- Q_UNUSED(url);
|
||||
-#endif
|
||||
|
||||
return QDBusMessage::createError(QDBusError::InternalError, qt_error_string());
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
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;
|
||||
@ -0,0 +1,45 @@
|
||||
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.
|
||||
@ -0,0 +1,29 @@
|
||||
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,5 +1,4 @@
|
||||
0001-fix-gcc13.patch
|
||||
0002-OpenFile-portal-do-not-use-O_PATH-fds.patch
|
||||
0003-fix-mathops.patch
|
||||
0004-fix-binary-tokenizer.patch
|
||||
0005-importlib.patch
|
||||
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.4.3),
|
||||
libqt-jami (>= 6.5.3),
|
||||
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.4.3)
|
||||
libqt-jami (>= 6.5.3)
|
||||
Provides: jami-qt
|
||||
Replaces: jami-all,
|
||||
jami-libclient (<= 20220516.0214.9b42ad3~dfsg1-1)
|
||||
|
||||
@ -26,11 +26,10 @@ License: GPLv3+
|
||||
Vendor: Savoir-faire Linux Inc.
|
||||
URL: https://jami.net/
|
||||
Source: jami-libqt-%{version}.tar.xz
|
||||
Patch0: 0001-fix-gcc13.patch
|
||||
Patch1: 0002-OpenFile-portal-do-not-use-O_PATH-fds.patch
|
||||
Patch2: 0003-fix-mathops.patch
|
||||
Patch3: 0004-fix-binary-tokenizer.patch
|
||||
Patch4: 0005-importlib.patch
|
||||
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
|
||||
@ -45,13 +44,13 @@ BuildRequires: bison
|
||||
BuildRequires: gperf
|
||||
BuildRequires: flex
|
||||
BuildRequires: vulkan-devel
|
||||
BuildRequires: python-six
|
||||
%if %{defined suse_version}
|
||||
BuildRequires: ffmpeg-devel
|
||||
BuildRequires: ffmpeg
|
||||
BuildRequires: python-xml
|
||||
BuildRequires: mozilla-nss-devel
|
||||
%else
|
||||
BuildRequires: python-six
|
||||
BuildRequires: pkgconfig(gstreamer-%{gst})
|
||||
BuildRequires: pkgconfig(gstreamer-app-%{gst})
|
||||
BuildRequires: pkgconfig(gstreamer-audio-%{gst})
|
||||
@ -70,7 +69,6 @@ This package contains Qt libraries for Jami.
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
|
||||
%build
|
||||
echo "Building Qt using %{job_count} parallel jobs"
|
||||
|
||||
@ -1,740 +0,0 @@
|
||||
qtwebengine/src/3rdparty/chromium/base/debug/profiler.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/base/logging.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/extensions/common/constants.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/net/base/parse_number.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h | 6 ++++--
|
||||
qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h | 2 +-
|
||||
qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h | 4 ++--
|
||||
qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp | 4 ++++
|
||||
qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h | 2 ++
|
||||
qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | 1 +
|
||||
qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h | 1 +
|
||||
qtwebengine/src/core/browsing_data_remover_delegate_qt.h | 2 ++
|
||||
54 files changed, 71 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h b/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h
|
||||
index 1229e06234..c7ed55e70f 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef BASE_DEBUG_PROFILER_H_
|
||||
#define BASE_DEBUG_PROFILER_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <stddef.h>
|
||||
|
||||
#include <string>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h b/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h
|
||||
index 60c3c5c474..6c8021cfde 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
+#include <cstdint>
|
||||
#include <iosfwd>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/base/logging.h b/qtwebengine/src/3rdparty/chromium/base/logging.h
|
||||
index a3ff92f0fd..c272f796a9 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/base/logging.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/base/logging.h
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
+
|
||||
+#include <cstdint>
|
||||
#include <cassert>
|
||||
#include <cstdint>
|
||||
#include <sstream>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc b/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
index 96f8c3bd7c..c3f087b1a9 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "ui/gfx/animation/keyframe/target_property.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace cc {
|
||||
|
||||
static_assert(TargetProperty::LAST_TARGET_PROPERTY <
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h b/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h
|
||||
index 2aba73ebcb..2e028fddcf 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_
|
||||
#define COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h b/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h
|
||||
index 3069c858d3..f4614b73c6 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_
|
||||
#define CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "base/callback_forward.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc
|
||||
index 80fd26f4f4..3f08972a7a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc
|
||||
@@ -3,6 +3,7 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "device/base/synchronization/one_writer_seqlock.h"
|
||||
+#include <cstdint>
|
||||
|
||||
#include "base/threading/platform_thread.h"
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h
|
||||
index 6a3eeda565..525301379c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define DEVICE_BASE_SYNCHRONIZATION_ONE_WRITER_SEQLOCK_H_
|
||||
|
||||
#include <atomic>
|
||||
+#include <cstdint>
|
||||
|
||||
#include "base/atomicops.h"
|
||||
#include "base/check.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h b/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h
|
||||
index 3cf2914e10..4b0552440c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_
|
||||
#define DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h
|
||||
index c24205c402..ee67ecf189 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_
|
||||
#define EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h b/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h
|
||||
index 9ac68e2be9..ef2761020d 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h
|
||||
@@ -10,6 +10,8 @@
|
||||
#include "build/chromeos_buildflags.h"
|
||||
#include "extensions/common/extensions_export.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace extensions {
|
||||
|
||||
// Scheme we serve extension content from.
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h b/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h
|
||||
index 4ba8de8460..6352b90196 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef EXTENSIONS_RENDERER_BINDINGS_API_INVOCATION_ERRORS_H_
|
||||
#define EXTENSIONS_RENDERER_BINDINGS_API_INVOCATION_ERRORS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <set>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h
|
||||
index a9c7adb5b5..943bd4e470 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace gpu {
|
||||
namespace webgpu {
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h
|
||||
index 027f1a5af3..70759b2ae4 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_
|
||||
#define GPU_CONFIG_GPU_FEATURE_INFO_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h
|
||||
index 3ea2191b50..0a1ae11202 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef GPU_CONFIG_GPU_PREFERENCES_H_
|
||||
#define GPU_CONFIG_GPU_PREFERENCES_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <stddef.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
index f72970c67a..d7f0b7d492 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef GPU_CONFIG_GPU_UTIL_H_
|
||||
#define GPU_CONFIG_GPU_UTIL_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
#include "build/build_config.h"
|
||||
#include "gpu/config/gpu_feature_info.h"
|
||||
#include "gpu/gpu_export.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h b/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h
|
||||
index 4e49ab7112..e99d2dd7aa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "base/strings/string_piece.h"
|
||||
#include "net/base/net_export.h"
|
||||
+#include <cstdint>
|
||||
|
||||
// This file contains utility functions for parsing numbers, in the context of
|
||||
// network protocols.
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h b/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h
|
||||
index 2e9c319a3d..4d723d18f2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define NET_COOKIES_COOKIE_INCLUSION_STATUS_H_
|
||||
|
||||
#include <bitset>
|
||||
+#include <cstdint>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h
|
||||
index 6a300ed0c0..3e30f1cb02 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_
|
||||
#define QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h
|
||||
index 52f1501728..db4d310849 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_
|
||||
#define QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h b/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h
|
||||
index 138ca2efec..08f06e7b8c 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_
|
||||
#define PDF_DOCUMENT_ATTACHMENT_INFO_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
|
||||
index b4fdb9a6d3..375d3ef327 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
|
||||
@@ -38,6 +38,10 @@ namespace pp {
|
||||
/// As a further optimization, we can add support for this later.
|
||||
class ThreadSafeThreadTraits {
|
||||
public:
|
||||
+
|
||||
+ typedef pp::Lock Lock;
|
||||
+ typedef pp::AutoLock AutoLock;
|
||||
+
|
||||
class RefCount {
|
||||
public:
|
||||
/// Default constructor. In debug mode, this checks that the object is being
|
||||
@@ -67,8 +71,6 @@ class ThreadSafeThreadTraits {
|
||||
int32_t ref_;
|
||||
};
|
||||
|
||||
- typedef pp::Lock Lock;
|
||||
- typedef pp::AutoLock AutoLock;
|
||||
};
|
||||
|
||||
/// The non-thread-safe version of thread traits. Using this class as the
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h b/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h
|
||||
index 0aad3ac782..7f7a1057d7 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
|
||||
#define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <bitset>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h b/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h
|
||||
index c47536d63e..443f47afd0 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
+#include <cstdint>
|
||||
#include <cstddef>
|
||||
#include <cstring>
|
||||
#include <ostream>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h
|
||||
index e13aa2221d..0ce848486d 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h
|
||||
@@ -7,7 +7,7 @@
|
||||
#define GLSLANG_SHADERLANG_H_
|
||||
|
||||
#include <stddef.h>
|
||||
-
|
||||
+#include <cstdint>
|
||||
#include "KHR/khrplatform.h"
|
||||
|
||||
#include <array>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h
|
||||
index 18175e15c7..28332857bc 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <array>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
+#include <cstdint>
|
||||
|
||||
// This type is defined here to simplify ANGLE's integration with glslang for SPIR-V.
|
||||
using ShCompileOptions = uint64_t;
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h
|
||||
index c63049b174..82b27837b5 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_ORIGIN_TRIAL_PUBLIC_KEY_H_
|
||||
|
||||
#include <array>
|
||||
+#include <cstdint>
|
||||
|
||||
namespace blink {
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h
|
||||
index 14c5548766..43c9a8d6a5 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DARK_MODE_TYPES_H_
|
||||
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DARK_MODE_TYPES_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace blink {
|
||||
|
||||
enum class DarkModeResult : uint8_t {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h
|
||||
index 80b3150b67..6377196230 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h
|
||||
@@ -116,7 +116,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode
|
||||
|
||||
// An identifier for a document transition shared element. `id.valid()`
|
||||
// returns true if this has been set, and false otherwise.
|
||||
- DocumentTransitionSharedElementId document_transition_shared_element_id;
|
||||
+ cc::DocumentTransitionSharedElementId document_transition_shared_element_id;
|
||||
|
||||
// An identifier to tag shared element resources generated and cached in the
|
||||
// Viz process. This generated resource can be used as content for other
|
||||
@@ -285,7 +285,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode
|
||||
return state_.compositor_element_id;
|
||||
}
|
||||
|
||||
- const blink::DocumentTransitionSharedElementId&
|
||||
+ const cc::DocumentTransitionSharedElementId&
|
||||
DocumentTransitionSharedElementId() const {
|
||||
return state_.document_transition_shared_element_id;
|
||||
}
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h b/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h
|
||||
index c7e4f2b378..f30ce91b36 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <string>
|
||||
+#include <cstdint>
|
||||
|
||||
#include "client/linux/handler/microdump_extra_info.h"
|
||||
#include "common/using_std_string.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h
|
||||
index 2d58d76cb6..139af564ea 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "dawn/common/TypedInteger.h"
|
||||
#include "dawn/common/ityp_array.h"
|
||||
|
||||
+#include <cstdint>
|
||||
#include <bitset>
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h
|
||||
index 374bd8302a..0884eb2a19 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_
|
||||
#define SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h
|
||||
index fa5fc3a7e9..6cec934670 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_SPIRV_NAMER_H_
|
||||
#define SRC_TINT_READER_SPIRV_NAMER_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h
|
||||
index f378d57817..98d1336f9a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_WGSL_LEXER_H_
|
||||
#define SRC_TINT_READER_WGSL_LEXER_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
#include "src/tint/reader/wgsl/token.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h
|
||||
index 7b5b6754ed..62b1ca7e36 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_WGSL_TOKEN_H_
|
||||
#define SRC_TINT_READER_WGSL_TOKEN_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <variant> // NOLINT: cpplint doesn't recognise this
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc
|
||||
index 4be648b37a..cac7238ef2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "src/tint/writer/spirv/instruction.h"
|
||||
|
||||
+#include <cstdint>
|
||||
#include <utility>
|
||||
|
||||
namespace tint::writer::spirv {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h
|
||||
index 46a5deb55b..4c3080ff25 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_WRITER_SPIRV_OPERAND_H_
|
||||
#define SRC_TINT_WRITER_SPIRV_OPERAND_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc
|
||||
index a3099e15db..2e6f0eea70 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
+#include <cstdio>
|
||||
#include <new>
|
||||
#include <utility>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h b/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h
|
||||
index d2731dac7a..46bc87ef92 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef CONSTANTS_ANNOTATION_FLAGS_H_
|
||||
#define CONSTANTS_ANNOTATION_FLAGS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace pdfium {
|
||||
namespace annotation_flags {
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h
|
||||
index 1b4c53815b..472042fabc 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h
|
||||
@@ -18,6 +18,7 @@
|
||||
#define INCLUDE_PERFETTO_EXT_BASE_UUID_H_
|
||||
|
||||
#include <array>
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
#include "perfetto/ext/base/optional.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
index c56f0344f9..cd7824929e 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
@@ -20,6 +20,8 @@
|
||||
#include "perfetto/ext/base/optional.h"
|
||||
#include "perfetto/trace_processor/status.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace perfetto {
|
||||
|
||||
namespace protos {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp
|
||||
index 3164650728..512a26943d 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp
|
||||
@@ -10,6 +10,10 @@
|
||||
|
||||
#include <algorithm> // std::lower_bound
|
||||
|
||||
+#include <string.h>
|
||||
+#include <algorithm>
|
||||
+#include <iterator>
|
||||
+
|
||||
static constexpr const char* gColorNames[] = {
|
||||
"aliceblue",
|
||||
"antiquewhite",
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
|
||||
index b7c586b80e..19ccbb024a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
|
||||
@@ -146,6 +146,7 @@ available through VmaAllocatorCreateInfo::pRecordSettings.
|
||||
#endif // #if VMA_VULKAN_VERSION >= 1001000
|
||||
#endif // #if defined(__ANDROID__) && VMA_STATIC_VULKAN_FUNCTIONS && VK_NO_PROTOTYPES
|
||||
|
||||
+#include <cstdio>
|
||||
#ifndef VULKAN_H_
|
||||
#include <vulkan/vulkan.h>
|
||||
#endif
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h
|
||||
index 5fd37b4613..ce70405dd2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h
|
||||
@@ -11,6 +11,7 @@
|
||||
#ifndef CALL_RTP_DEMUXER_H_
|
||||
#define CALL_RTP_DEMUXER_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h
|
||||
index b70ac4aa59..7ba5555647 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <gio/gio.h>
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
namespace webrtc {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h
|
||||
index ca249541d0..534214dbfa 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h
|
||||
@@ -12,6 +12,7 @@
|
||||
#ifndef RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_
|
||||
#define RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h b/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h
|
||||
index 708d6c98ac..898016d886 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
+#include <cstdint>
|
||||
#include "base/component_export.h"
|
||||
#include "ui/base/ime/text_input_type.h"
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h b/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
index d97a696fd5..68b18d80cd 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef UI_EVENTS_GESTURE_EVENT_DETAILS_H_
|
||||
#define UI_EVENTS_GESTURE_EVENT_DETAILS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string.h>
|
||||
|
||||
#include "base/check_op.h"
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h b/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h
|
||||
index 7ff15f0fc5..136cebc09e 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef UI_EVENTS_TYPES_SCROLL_TYPES_H_
|
||||
#define UI_EVENTS_TYPES_SCROLL_TYPES_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace ui {
|
||||
|
||||
enum class ScrollGranularity : uint8_t {
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h
|
||||
index 1ad025fec1..adadf96190 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef UI_GFX_LINEAR_GRADIENT_H_
|
||||
#define UI_GFX_LINEAR_GRADIENT_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <array>
|
||||
#include <string>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h
|
||||
index fdac44e31e..a752dba6a2 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef V8_BASE_LOGGING_H_
|
||||
#define V8_BASE_LOGGING_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
index 61644ffe05..6fbc037437 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef V8_BASE_MACROS_H_
|
||||
#define V8_BASE_MACROS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <limits>
|
||||
#include <type_traits>
|
||||
|
||||
diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h b/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h
|
||||
index c1d69c18f0..eb33c6816a 100644
|
||||
--- a/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h
|
||||
+++ b/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
|
||||
#define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
// Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may
|
||||
diff --git a/qtwebengine/src/core/browsing_data_remover_delegate_qt.h b/qtwebengine/src/core/browsing_data_remover_delegate_qt.h
|
||||
index 4e690ffb19..dfa884cd65 100644
|
||||
--- a/qtwebengine/src/core/browsing_data_remover_delegate_qt.h
|
||||
+++ b/qtwebengine/src/core/browsing_data_remover_delegate_qt.h
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "content/public/browser/browsing_data_remover_delegate.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace QtWebEngineCore {
|
||||
|
||||
class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate {
|
||||
@ -0,0 +1,81 @@
|
||||
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,52 +0,0 @@
|
||||
From f4410fcbb093f259eaff4a20fc4266a535479235 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastien Blin <sebastien.blin@savoirfairelinux.com>
|
||||
Date: Mon, 29 May 2023 13:09:53 -0400
|
||||
Subject: [PATCH] OpenFile portal: do not use O_PATH fds
|
||||
|
||||
Using O_PATH requires correctly specifying whether the fd is writable or
|
||||
not. Stating that the fd is writable without it actually being writable
|
||||
results into rejection on xdg-desktop-portal side. Other implementations
|
||||
like xdg-open or gtk have also moved away from O_PATH fds so this will
|
||||
make a matching implementation and avoid possible rejections from xdp.
|
||||
|
||||
Fixes: QTBUG-113143
|
||||
Original: https://codereview.qt-project.org/c/qt/qtbase/+/475425
|
||||
---
|
||||
qtbase/src/gui/platform/unix/qgenericunixservices.cpp | 8 ++------
|
||||
1 file changed, 2 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/qtbase/src/gui/platform/unix/qgenericunixservices.cpp b/qtbase/src/gui/platform/unix/qgenericunixservices.cpp
|
||||
index a0e5466c58..fe0fdaa625 100644
|
||||
--- a/qtbase/src/gui/platform/unix/qgenericunixservices.cpp
|
||||
+++ b/qtbase/src/gui/platform/unix/qgenericunixservices.cpp
|
||||
@@ -163,8 +163,7 @@ static inline QDBusMessage xdgDesktopPortalOpenFile(const QUrl &url)
|
||||
// handle_token (s) - A string that will be used as the last element of the @handle.
|
||||
// writable (b) - Whether to allow the chosen application to write to the file.
|
||||
|
||||
-#ifdef O_PATH
|
||||
- const int fd = qt_safe_open(QFile::encodeName(url.toLocalFile()), O_PATH);
|
||||
+ const int fd = qt_safe_open(QFile::encodeName(url.toLocalFile()), O_RDONLY);
|
||||
if (fd != -1) {
|
||||
QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.portal.Desktop"_L1,
|
||||
"/org/freedesktop/portal/desktop"_L1,
|
||||
@@ -174,16 +173,13 @@ static inline QDBusMessage xdgDesktopPortalOpenFile(const QUrl &url)
|
||||
QDBusUnixFileDescriptor descriptor;
|
||||
descriptor.giveFileDescriptor(fd);
|
||||
|
||||
- const QVariantMap options = {{"writable"_L1, true}};
|
||||
+ const QVariantMap options = {};
|
||||
|
||||
// FIXME parent_window_id
|
||||
message << QString() << QVariant::fromValue(descriptor) << options;
|
||||
|
||||
return QDBusConnection::sessionBus().call(message);
|
||||
}
|
||||
-#else
|
||||
- Q_UNUSED(url);
|
||||
-#endif
|
||||
|
||||
return QDBusMessage::createError(QDBusError::InternalError, qt_error_string());
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
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;
|
||||
@ -0,0 +1,45 @@
|
||||
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.
|
||||
@ -0,0 +1,29 @@
|
||||
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);
|
||||
@ -44,9 +44,9 @@ 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=4
|
||||
QT_MINOR=5
|
||||
QT_PATCH=3
|
||||
QT_RELEASE_PATCH=3
|
||||
QT_RELEASE_PATCH=0
|
||||
|
||||
QT_MAJOR_MINOR=${QT_MAJOR}.${QT_MINOR}
|
||||
QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
|
||||
@ -54,7 +54,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="29a7eebdbba0ea57978dea6083709c93593a60f0f3133a3de08b9571ee8eaab4"
|
||||
QT_TARBALL_SHA256="7cda4d119aad27a3887329cfc285f2aba5da85601212bcb0aea27bd6b7b544cb"
|
||||
QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL")
|
||||
CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME
|
||||
|
||||
@ -113,6 +113,8 @@ if [ ! -f "${RPM_PATH}" ]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc38.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_39" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc39.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "alma_9" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el9.x86_64.rpm "${RPM_PATH}"
|
||||
else
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-*.rpm "${RPM_PATH}"
|
||||
fi
|
||||
|
||||
@ -7,9 +7,9 @@ then
|
||||
apt-get remove cmake cmake-data -y
|
||||
fi
|
||||
|
||||
wget https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-Linux-x86_64.sh \
|
||||
wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.sh\
|
||||
-q -O /tmp/cmake-install.sh
|
||||
echo "aa5a0e0dd5594b7fd7c107a001a2bfb5f83d9b5d89cf4acabf423c5d977863ad /tmp/cmake-install.sh" | sha256sum --check
|
||||
echo "63cb3406f5320edc94504212fe75e8625751ec21e8d5dab76d8ed67ed780066e /tmp/cmake-install.sh" | sha256sum --check
|
||||
chmod u+x /tmp/cmake-install.sh
|
||||
/tmp/cmake-install.sh --skip-license --prefix=/usr/local/
|
||||
rm /tmp/cmake-install.sh
|
||||
@ -28,7 +28,7 @@ mutually exclusive required arguments:
|
||||
-z, --zip Build portable archive
|
||||
|
||||
examples:
|
||||
1. build.py --qt=C:/Qt/6.4.3/msvc2019_64 # Build the app using a specific Qt
|
||||
1. build.py --qt=C:/Qt/6.5.3/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
|
||||
@ -73,7 +73,12 @@ def get_latest_toolset_version():
|
||||
if vs_ver is None:
|
||||
return None
|
||||
vs_ver = int(vs_ver.split(".")[0])
|
||||
return "v143" if vs_ver >= 16 else "v142" if vs_ver >= 15 else "v141"
|
||||
if vs_ver == 17:
|
||||
return "v143"
|
||||
elif vs_ver == 16:
|
||||
return "v142"
|
||||
else:
|
||||
return "v141"
|
||||
|
||||
def find_latest_qt_path():
|
||||
"""Find the latest Qt installation path."""
|
||||
|
||||
@ -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 |
6
resources/icons/add_a_photo_black_24dp.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<g id="add_a_photo_black_24dp" opacity="1">
|
||||
<path id="Path_248" data-name="Path 248" d="M0,0H24V24H0Z" fill="none"/>
|
||||
<path id="Path_249" data-name="Path 249" d="M21,6H17.83L16,4H10V6h5.12l1.83,2H21V20H5V11H3v9a2.006,2.006,0,0,0,2,2H21a2.006,2.006,0,0,0,2-2V8A2.006,2.006,0,0,0,21,6ZM8,14a5,5,0,1,0,5-5A5,5,0,0,0,8,14Zm5-3a3,3,0,1,1-3,3A3.009,3.009,0,0,1,13,11ZM5,6H8V4H5V1H3V4H0V6H3V9H5Z" fill="black"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 512 B |
4
resources/icons/add_photo_alternate_black_24dp.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg id="add_photo_alternate_black_24dp" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<path id="Path_250" data-name="Path 250" d="M0,0H24V24H0Z" fill="none"/>
|
||||
<path id="Path_251" data-name="Path 251" d="M18,20H4V6h9V4H4A2.006,2.006,0,0,0,2,6V20a2.006,2.006,0,0,0,2,2H18a2.006,2.006,0,0,0,2-2V11H18Zm-7.79-3.17L8.25,14.47,5.5,18h11l-3.54-4.71ZM20,4V1H18V4H15c.01.01,0,2,0,2h3V8.99c.01.01,2,0,2,0V6h3V4Z" fill="#fff"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 462 B |
3
resources/icons/check_circle_24dp.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
|
||||
<path id="check_circle_FILL0_wght400_GRAD0_opsz24" d="M88.6-865.4l7.05-7.05-1.4-1.4L88.6-868.2l-2.85-2.85-1.4,1.4ZM90-860a9.738,9.738,0,0,1-3.9-.787,10.1,10.1,0,0,1-3.175-2.138,10.1,10.1,0,0,1-2.138-3.175A9.738,9.738,0,0,1,80-870a9.738,9.738,0,0,1,.787-3.9,10.1,10.1,0,0,1,2.138-3.175,10.1,10.1,0,0,1,3.175-2.138A9.738,9.738,0,0,1,90-880a9.738,9.738,0,0,1,3.9.787,10.1,10.1,0,0,1,3.175,2.138,10.1,10.1,0,0,1,2.138,3.175A9.738,9.738,0,0,1,100-870a9.738,9.738,0,0,1-.787,3.9,10.1,10.1,0,0,1-2.138,3.175,10.1,10.1,0,0,1-3.175,2.138A9.738,9.738,0,0,1,90-860Zm0-2a7.721,7.721,0,0,0,5.675-2.325A7.721,7.721,0,0,0,98-870a7.721,7.721,0,0,0-2.325-5.675A7.721,7.721,0,0,0,90-878a7.721,7.721,0,0,0-5.675,2.325A7.721,7.721,0,0,0,82-870a7.721,7.721,0,0,0,2.325,5.675A7.721,7.721,0,0,0,90-862ZM90-870Z" transform="translate(-80 880)" fill="#fff"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 927 B |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M24 24H0V0h24v24z"/><circle fill="#ff0000" cx="12" cy="12" r="8"/></svg>
|
||||
|
Before Width: | Height: | Size: 176 B |
14
resources/icons/manage_accounts_24dp.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<g id="manage_accounts_black_24dp" opacity="1">
|
||||
<g id="Group_82" data-name="Group 82">
|
||||
<path id="Path_314" data-name="Path 314" d="M0,0H24V24H0Z" fill="none"/>
|
||||
</g>
|
||||
<g id="Group_84" data-name="Group 84">
|
||||
<g id="Group_83" data-name="Group 83">
|
||||
<path id="Path_315" data-name="Path 315" d="M4,18v-.65a.946.946,0,0,1,.41-.81A10.889,10.889,0,0,1,10,15a.22.22,0,0,1,.08.01,6.886,6.886,0,0,1,.59-1.98c-.22-.02-.44-.03-.67-.03a12.876,12.876,0,0,0-6.61,1.82A2.922,2.922,0,0,0,2,17.35V20h9.26a7.133,7.133,0,0,1-.97-2Z" fill="black"/>
|
||||
<path id="Path_316" data-name="Path 316" d="M10,12A4,4,0,1,0,6,8,4,4,0,0,0,10,12Zm0-6A2,2,0,1,1,8,8,2.006,2.006,0,0,1,10,6Z" fill="black"/>
|
||||
<path id="Path_317" data-name="Path 317" d="M20.75,16a4.338,4.338,0,0,0-.06-.63l1.14-1.01-1-1.73-1.45.49a3.647,3.647,0,0,0-1.08-.63L18,11H16l-.3,1.49a3.647,3.647,0,0,0-1.08.63l-1.45-.49-1,1.73,1.14,1.01a4.338,4.338,0,0,0-.06.63,4.338,4.338,0,0,0,.06.63l-1.14,1.01,1,1.73,1.45-.49a3.647,3.647,0,0,0,1.08.63L16,21h2l.3-1.49a3.647,3.647,0,0,0,1.08-.63l1.45.49,1-1.73-1.14-1.01A4.338,4.338,0,0,0,20.75,16ZM17,18a2,2,0,1,1,2-2A2.006,2.006,0,0,1,17,18Z" fill="black"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
10
resources/icons/person_add_24dp.svg
Normal file
@ -0,0 +1,10 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<g id="person_add_alt_black_24dp" opacity="1">
|
||||
<g id="Group_80" data-name="Group 80">
|
||||
<rect id="Rectangle_324" data-name="Rectangle 324" width="24" height="24" fill="none"/>
|
||||
</g>
|
||||
<g id="Group_81" data-name="Group 81">
|
||||
<path id="Path_313" data-name="Path 313" d="M20,9V6H18V9H15v2h3v3h2V11h3V9ZM9,12A4,4,0,1,0,5,8,4,4,0,0,0,9,12ZM9,6A2,2,0,1,1,7,8,2.006,2.006,0,0,1,9,6Zm6.39,8.56a13.867,13.867,0,0,0-12.78,0A2.971,2.971,0,0,0,1,17.22V20H17V17.22A2.971,2.971,0,0,0,15.39,14.56ZM15,18H3v-.78a.971.971,0,0,1,.52-.88A12.108,12.108,0,0,1,9,15a12.108,12.108,0,0,1,5.48,1.34.971.971,0,0,1,.52.88Z" fill="black"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 739 B |
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 |
@ -1,11 +0,0 @@
|
||||
<?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="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<path d="M20.2,6.5c-1.4-2.2-3.6-3.7-6-4.2C9,1.1,3.9,4.2,2.7,9.3c0,0,0,0,0,0l0,0.1c-0.6,2.4-0.1,4.9,1.2,6.9c1.2,1.9,3,3.3,5.1,4
|
||||
l-0.4,0.3c-0.1,0-0.1,0.1-0.2,0.1C8,20.9,8,21.4,8.2,21.7C8.3,21.9,8.5,22,8.7,22c0,0,0.1,0,0.1,0c0.2,0,0.3-0.1,0.4-0.1l2-1.2
|
||||
c0.2-0.1,0.3-0.3,0.3-0.5s0-0.4-0.1-0.6l-1.3-2c-0.2-0.3-0.6-0.4-1-0.2c-0.4,0.2-0.5,0.7-0.3,1l0.2,0.4c-1.7-0.6-3.1-1.7-4.1-3.3
|
||||
c-1.1-1.7-1.4-3.8-1-5.9c0,0,0,0,0,0l0-0.1c1-4.2,5.3-6.8,9.7-5.9c2.1,0.5,3.9,1.8,5.1,3.6c1.1,1.7,1.4,3.8,1,5.9
|
||||
c-0.6,2.7-2.8,4.9-5.6,5.8c-0.4,0.1-0.6,0.5-0.5,0.9c0.1,0.4,0.5,0.6,0.9,0.5c3.3-1,5.9-3.7,6.7-6.9l0-0.1
|
||||
C21.9,11,21.5,8.5,20.2,6.5z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 976 B |
9
resources/icons/record_round_black_24dp.svg
Normal file
@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
|
||||
<g id="Picture_FILLO" transform="translate(-378.5 -900)">
|
||||
<circle id="Oval" cx="7.222" cy="7.222" r="7.222" transform="translate(381.278 902.778)" fill="#fff"/>
|
||||
<g id="Oval-2" data-name="Oval" transform="translate(378.5 900)" fill="none" stroke="#fff" stroke-width="1">
|
||||
<circle cx="10" cy="10" r="10" stroke="none"/>
|
||||
<circle cx="10" cy="10" r="9.5" fill="none"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 492 B |
6
resources/icons/remove_circle_outline_black_24dp.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<g id="remove_circle_outline_black_24dp" opacity="1">
|
||||
<path id="Path_252" data-name="Path 252" d="M0,0H24V24H0Z" fill="none"/>
|
||||
<path id="Path_253" data-name="Path 253" d="M7,11v2H17V11Zm5-9A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm0,18a8,8,0,1,1,8-8A8.011,8.011,0,0,1,12,20Z" fill="black"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 394 B |
3
resources/icons/restart_black_24dp.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
|
||||
<path id="refresh_FILL0_wght400_GRAD0_opsz24" d="M170-780a9.651,9.651,0,0,0,7.094-2.906A9.651,9.651,0,0,0,180-790a9.651,9.651,0,0,0-2.906-7.094A9.651,9.651,0,0,0,170-800a9.9,9.9,0,0,0-4.125.891,9.528,9.528,0,0,0-3.375,2.547V-800H160v8.75h8.75v-2.5H163.5a7.3,7.3,0,0,1,2.734-2.75,7.409,7.409,0,0,1,3.766-1,7.233,7.233,0,0,1,5.313,2.188A7.233,7.233,0,0,1,177.5-790a7.233,7.233,0,0,1-2.187,5.313A7.233,7.233,0,0,1,170-782.5a7.328,7.328,0,0,1-4.344-1.375,7.261,7.261,0,0,1-2.719-3.625h-2.625a9.87,9.87,0,0,0,3.563,5.406A9.7,9.7,0,0,0,170-780Z" transform="translate(-160 800)" fill="#fff"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 679 B |
@ -1,13 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Settings</title>
|
||||
<g id="Icones" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Settings" fill="#000000" fill-rule="nonzero">
|
||||
<g id="Shape" transform="translate(2.000000, 2.000000)">
|
||||
<path d="M0.833333333,4.16666667 L3.45208333,4.16666667 C3.82561804,5.63721759 5.14941646,6.66679689 6.66666667,6.66679689 C8.18391688,6.66679689 9.5077153,5.63721759 9.88125,4.16666667 L19.1666667,4.16666667 C19.626904,4.16666667 20,3.79357062 20,3.33333333 C20,2.87309604 19.626904,2.5 19.1666667,2.5 L9.88125,2.5 C9.5077153,1.02944908 8.18391688,-0.000130218715 6.66666667,-0.000130218715 C5.14941646,-0.000130218715 3.82561804,1.02944908 3.45208333,2.5 L0.833333333,2.5 C0.373096042,2.5 0,2.87309604 0,3.33333333 C0,3.79357062 0.373096042,4.16666667 0.833333333,4.16666667 L0.833333333,4.16666667 Z M6.66666667,1.66666667 C7.58714125,1.66666667 8.33333333,2.41285875 8.33333333,3.33333333 C8.33333333,4.25380792 7.58714125,5 6.66666667,5 C5.74619208,5 5,4.25380792 5,3.33333333 C5,2.41285875 5.74619208,1.66666667 6.66666667,1.66666667 Z"></path>
|
||||
<path d="M0.833333333,10.8333333 L10.11875,10.8333333 C10.4922847,12.3038843 11.8160831,13.3334636 13.3333333,13.3334636 C14.8505835,13.3334636 16.174382,12.3038843 16.5479167,10.8333333 L19.1666667,10.8333333 C19.626904,10.8333333 20,10.4602373 20,10 C20,9.53976271 19.626904,9.16666667 19.1666667,9.16666667 L16.5479167,9.16666667 C16.174382,7.69611574 14.8505835,6.66653645 13.3333333,6.66653645 C11.8160831,6.66653645 10.4922847,7.69611574 10.11875,9.16666667 L0.833333333,9.16666667 C0.373096042,9.16666667 0,9.53976271 0,10 C0,10.4602373 0.373096042,10.8333333 0.833333333,10.8333333 L0.833333333,10.8333333 Z M13.3333333,8.33333333 C14.2538079,8.33333333 15,9.07952542 15,10 C15,10.9204746 14.2538079,11.6666667 13.3333333,11.6666667 C12.4128588,11.6666667 11.6666667,10.9204746 11.6666667,10 C11.6666667,9.07952542 12.4128588,8.33333333 13.3333333,8.33333333 Z"></path>
|
||||
<path d="M0.833333333,17.5 L3.45208333,17.5 C3.82561804,18.9705509 5.14941646,20.0001302 6.66666667,20.0001302 C8.18391688,20.0001302 9.5077153,18.9705509 9.88125,17.5 L19.1666667,17.5 C19.626904,17.5 20,17.126904 20,16.6666667 C20,16.2064294 19.626904,15.8333333 19.1666667,15.8333333 L9.88125,15.8333333 C9.5077153,14.3627824 8.18391688,13.3332031 6.66666667,13.3332031 C5.14941646,13.3332031 3.82561804,14.3627824 3.45208333,15.8333333 L0.833333333,15.8333333 C0.373096042,15.8333333 0,16.2064294 0,16.6666667 C0,17.126904 0.373096042,17.5 0.833333333,17.5 Z M6.66666667,15 C7.58714125,15 8.33333333,15.7461921 8.33333333,16.6666667 C8.33333333,17.5871412 7.58714125,18.3333333 6.66666667,18.3333333 C5.74619208,18.3333333 5,17.5871412 5,16.6666667 C5,15.7461921 5.74619208,15 6.66666667,15 Z"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="19.901" viewBox="0 0 20 19.901">
|
||||
<path id="settings_FILL0_wght400_GRAD0_opsz24_1_" data-name="settings_FILL0_wght400_GRAD0_opsz24 (1)" d="M85.264-860.1l-.4-3.184a3.774,3.774,0,0,1-.609-.3q-.286-.174-.56-.373l-2.96,1.244L78-867.438l2.562-1.94a2.375,2.375,0,0,1-.025-.336v-.672a2.375,2.375,0,0,1,.025-.336L78-872.662l2.736-4.726,2.96,1.244a6.791,6.791,0,0,1,.572-.373,5.014,5.014,0,0,1,.6-.3l.4-3.184h5.473l.4,3.184a3.779,3.779,0,0,1,.609.3q.286.174.56.373l2.96-1.244L98-872.662l-2.562,1.94a2.375,2.375,0,0,1,.025.336v.672a1.221,1.221,0,0,1-.05.336l2.562,1.94-2.736,4.726L92.3-863.955a6.776,6.776,0,0,1-.572.373,5.005,5.005,0,0,1-.6.3l-.4,3.184ZM87-862.09H88.97l.348-2.637a5.577,5.577,0,0,0,1.43-.585,5.946,5.946,0,0,0,1.206-.933l2.463,1.02.97-1.692-2.139-1.617a3.51,3.51,0,0,0,.174-.734,6.116,6.116,0,0,0,.05-.784,6.116,6.116,0,0,0-.05-.784,3.511,3.511,0,0,0-.174-.734l2.139-1.617-.97-1.692-2.463,1.045a5.524,5.524,0,0,0-1.206-.958,5.575,5.575,0,0,0-1.43-.585L89-878.01H87.03l-.348,2.637a5.575,5.575,0,0,0-1.43.585,5.946,5.946,0,0,0-1.206.933l-2.463-1.02-.97,1.692,2.139,1.592a4.05,4.05,0,0,0-.174.746,6.031,6.031,0,0,0-.05.8,5.833,5.833,0,0,0,.05.771,4.048,4.048,0,0,0,.174.746l-2.139,1.617.97,1.692,2.463-1.045a5.527,5.527,0,0,0,1.206.958,5.577,5.577,0,0,0,1.43.585Z" transform="translate(-78 880)"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.3 KiB |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M6 6h12v12H6z" fill="#ff0000"/></svg>
|
||||
|
Before Width: | Height: | Size: 166 B |
6
resources/icons/stop_rectangle_24dp.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="16" viewBox="0 0 15 16">
|
||||
<g id="Stop_FILLO" fill="none" stroke="#fff" stroke-width="1.5">
|
||||
<rect width="15" height="16" rx="5" stroke="none"/>
|
||||
<rect x="0.75" y="0.75" width="13.5" height="14.5" rx="4.25" fill="none"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 300 B |
@ -1,21 +1,27 @@
|
||||
<h3 align="center"><span style="font-weight:600"> CREATED BY:</span></h3>
|
||||
<h4 align="left"><span style="font-weight:600"> Created by</span></h4>
|
||||
<p>Adrien Béraud<br>
|
||||
Albert Babí<br>
|
||||
Alexandre Lision<br>
|
||||
Alexandr Sergheev<br>
|
||||
Alexandre Viau<br>
|
||||
Alexander Lussier-Cullen<br>
|
||||
Aline Bonnet<br>
|
||||
Aline Gondim Santos<br>
|
||||
Alireza Toghiani<br>
|
||||
Amin Bandali<br>
|
||||
AmirHossein Naghshzan<br>
|
||||
Amna Snene<br>
|
||||
Andreas Traczyk<br>
|
||||
Anthony Léonard<br>
|
||||
Brando Tovar<br>
|
||||
Capucine Berthet<br>
|
||||
Charles-Francis Damedey<br>
|
||||
Cyrille Béraud<br>
|
||||
Dorina Mosku<br>
|
||||
Eden Abitbol<br>
|
||||
Édric Milaret<br>
|
||||
Éloi Bail<br>
|
||||
Emma Falkiewitz<br>
|
||||
Emmanuel Lepage-Vallée<br>
|
||||
Fadi Shehadeh<br>
|
||||
Franck Laurent<br>
|
||||
@ -26,7 +32,10 @@ Hadrien De Sousa<br>
|
||||
Hugo Lefeuvre<br>
|
||||
Julien Grossholtz<br>
|
||||
Kateryna Kostiuk<br>
|
||||
Léo Banno-Cloutier<br>
|
||||
Liam Courdoson<br>
|
||||
Loïc Siret<br>
|
||||
Mathéo Joseph<br>
|
||||
Mingrui Zhang<br>
|
||||
Mohamed Chibani<br>
|
||||
Mohamed Amine Younes Bouacida<br>
|
||||
@ -40,6 +49,7 @@ Peymane Marandi<br>
|
||||
Philippe Gorley<br>
|
||||
Pierre Duchemin<br>
|
||||
Pierre Lespagnol<br>
|
||||
Pierre Nicolas<br>
|
||||
Raphaël Brulé<br>
|
||||
Rayan Osseiran<br>
|
||||
Romain Bertozzi<br>
|
||||
@ -53,7 +63,8 @@ Thibault Wittemberg<br>
|
||||
Thomas Ballasi<br>
|
||||
Trevor Tabah<br>
|
||||
Vsevolod Ivanov<br>
|
||||
Xavier Jouslin de Noray<br>
|
||||
Yang Wang<br></p>
|
||||
<h3 align="center"><span style="font-weight:600"> ARTWORK BY:</span></h3>
|
||||
<h4 align="left"><span style="font-weight:600"> Artwork by</span></h4>
|
||||
<p>Charlotte Hoffmann<br>
|
||||
Marianne Forget<br></p>
|
||||
|
||||
@ -20,55 +20,21 @@
|
||||
|
||||
#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
|
||||
#ifdef APPSTORE
|
||||
#define KEYS \
|
||||
X(MinimizeOnClose, false) \
|
||||
X(DownloadPath, defaultDownloadPath) \
|
||||
X(ScreenshotPath, {}) \
|
||||
X(EnableNotifications, true) \
|
||||
X(EnableTypingIndicator, true) \
|
||||
X(EnableReadReceipt, true) \
|
||||
X(AcceptTransferBelow, 20) \
|
||||
X(AutoAcceptFiles, true) \
|
||||
X(DisplayHyperlinkPreviews, true) \
|
||||
X(AppTheme, "System") \
|
||||
X(BaseZoom, 1.0) \
|
||||
X(ParticipantsSide, false) \
|
||||
X(HideSelf, true) \
|
||||
X(HideSpectators, false) \
|
||||
X(AutoUpdate, true) \
|
||||
X(PluginAutoUpdate, false) \
|
||||
X(StartMinimized, false) \
|
||||
X(ShowChatviewHorizontally, true) \
|
||||
X(NeverShowMeAgain, false) \
|
||||
X(WindowGeometry, QRectF(qQNaN(), qQNaN(), 0., 0.)) \
|
||||
X(WindowState, QWindow::AutomaticVisibility) \
|
||||
X(EnableExperimentalSwarm, false) \
|
||||
X(LANG, "SYSTEM") \
|
||||
X(PluginStoreEndpoint, "https://plugins.jami.net") \
|
||||
X(PositionShareDuration, 15) \
|
||||
X(PositionShareLimit, true) \
|
||||
X(FlipSelf, true) \
|
||||
X(ShowMardownOption, false) \
|
||||
X(ChatViewEnterIsNewLine, false) \
|
||||
X(ShowSendOption, false) \
|
||||
X(EnablePtt, false) \
|
||||
X(pttKey, 36)
|
||||
#else
|
||||
#define KEYS \
|
||||
// Common key-value pairs for both APPSTORE and non-APPSTORE builds
|
||||
#define COMMON_KEYS \
|
||||
X(MinimizeOnClose, false) \
|
||||
X(DownloadPath, defaultDownloadPath) \
|
||||
X(ScreenshotPath, {}) \
|
||||
@ -99,11 +65,17 @@ extern const QString defaultDownloadPath;
|
||||
X(ShowMardownOption, false) \
|
||||
X(ChatViewEnterIsNewLine, false) \
|
||||
X(ShowSendOption, false) \
|
||||
X(EnablePtt, false) \
|
||||
X(PttKeys, 32)
|
||||
#ifdef 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(pttKey, 36)
|
||||
X(Donation2023EndDate, "2024-01-31 00:00")
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -143,8 +115,9 @@ public:
|
||||
default: return {};
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
Settings() = delete;
|
||||
Settings() = delete;
|
||||
};
|
||||
Q_DECLARE_METATYPE(Settings::Key)
|
||||
// clang-format on
|
||||
|
||||
@ -204,16 +204,10 @@ AvAdapter::shareFile(const QString& filePath)
|
||||
&lrc::api::AVModel::fileOpened,
|
||||
this,
|
||||
[this, callId, filePath, resource](bool hasAudio, bool hasVideo) {
|
||||
// TODO: allow audio only sharing
|
||||
if (hasVideo) { // only start sharing if video is available
|
||||
lrcInstance_->avModel().pausePlayer(resource, false);
|
||||
lrcInstance_->avModel().setAutoRestart(resource, true);
|
||||
lrcInstance_->getCurrentCallModel()
|
||||
->addMedia(callId, filePath, lrc::api::CallModel::MediaRequestType::FILESHARING, false, hasAudio);
|
||||
} else {
|
||||
// Close media player because we are not going to start sharing
|
||||
lrcInstance_->avModel().closeMediaPlayer(resource);
|
||||
}
|
||||
lrcInstance_->avModel().setAutoRestart(resource, true);
|
||||
lrcInstance_->getCurrentCallModel()
|
||||
->addMedia(callId, filePath, lrc::api::CallModel::MediaRequestType::FILESHARING, false, hasAudio);
|
||||
lrcInstance_->avModel().pausePlayer(resource, false);
|
||||
});
|
||||
|
||||
lrcInstance_->avModel().createMediaPlayer(resource);
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -25,15 +25,17 @@ import net.jami.Constants 1.1
|
||||
SBSMessageBase {
|
||||
id: root
|
||||
|
||||
component JoinCallButton: PushButton {
|
||||
component JoinCallButton: MaterialButton {
|
||||
visible: root.isActive
|
||||
toolTipText: JamiStrings.joinCall
|
||||
preferredSize: visible ? 40 : 0
|
||||
imageColor: callLabel.color
|
||||
normalColor: "transparent"
|
||||
hoveredColor: Qt.rgba(255, 255, 255, 0.2)
|
||||
border.width: 1
|
||||
border.color: callLabel.color
|
||||
color: JamiTheme.blackColor
|
||||
background.opacity: hovered ? 0.2 : 0.1
|
||||
hoveredColor: JamiTheme.blackColor
|
||||
contentColorProvider: JamiTheme.textColor
|
||||
textOpacity: hovered ? 1 : 0.5
|
||||
buttontextHeightMargin: 16
|
||||
textLeftPadding: 9
|
||||
textRightPadding: 9
|
||||
}
|
||||
|
||||
property bool isRemoteImage
|
||||
@ -43,6 +45,9 @@ SBSMessageBase {
|
||||
readers: Readers
|
||||
formattedTime: MessagesAdapter.getFormattedTime(Timestamp)
|
||||
|
||||
bubble.border.color: CurrentConversation.color
|
||||
bubble.border.width: root.isActive ? 1.5 : 0
|
||||
|
||||
Connections {
|
||||
target: CurrentConversation
|
||||
enabled: root.isActive
|
||||
@ -56,13 +61,6 @@ SBSMessageBase {
|
||||
visible: isActive || ConfId === "" || Duration > 0
|
||||
|
||||
property var baseColor: isOutgoing? CurrentConversation.color : JamiTheme.messageInBgColor
|
||||
bubble.color: {
|
||||
if (ConfId === "" && Duration === 0) {
|
||||
// If missed, we can add a darker pattern
|
||||
return Qt.lighter(root.baseColor, 1.15)
|
||||
}
|
||||
return root.baseColor
|
||||
}
|
||||
|
||||
innerContent.children: [
|
||||
RowLayout {
|
||||
@ -73,20 +71,21 @@ SBSMessageBase {
|
||||
|
||||
Label {
|
||||
id: callLabel
|
||||
padding: 10
|
||||
|
||||
Layout.margins: 8
|
||||
Layout.fillWidth: true
|
||||
Layout.rightMargin: root.isActive ? 0 : root.timeWidth + 16
|
||||
Layout.leftMargin: root.isActive ? 10 : 8
|
||||
|
||||
text: {
|
||||
if (root.isActive)
|
||||
return JamiStrings.joinCall;
|
||||
return JamiStrings.startedACall;
|
||||
return Body;
|
||||
}
|
||||
horizontalAlignment: Qt.AlignHCenter
|
||||
|
||||
font.pointSize: JamiTheme.mediumFontSize
|
||||
font.hintingPreference: Font.PreferNoHinting
|
||||
font.bold: true
|
||||
renderType: Text.NativeRendering
|
||||
textFormat: Text.MarkdownText
|
||||
|
||||
@ -95,17 +94,21 @@ SBSMessageBase {
|
||||
|
||||
JoinCallButton {
|
||||
id: joinCallInAudio
|
||||
Layout.topMargin: 4
|
||||
Layout.bottomMargin: 4
|
||||
|
||||
source: JamiResources.place_audiocall_24dp_svg
|
||||
text: JamiStrings.joinInAudio
|
||||
onClicked: MessagesAdapter.joinCall(ActionUri, DeviceId, ConfId, true)
|
||||
}
|
||||
|
||||
JoinCallButton {
|
||||
id: joinCallInVideo
|
||||
text: JamiStrings.joinInVideo
|
||||
Layout.topMargin: 4
|
||||
Layout.bottomMargin: 4
|
||||
|
||||
source: JamiResources.videocam_24dp_svg
|
||||
onClicked: MessagesAdapter.joinCall(ActionUri, DeviceId, ConfId)
|
||||
Layout.rightMargin: parent.spacing
|
||||
Layout.rightMargin: 4
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -116,5 +119,8 @@ SBSMessageBase {
|
||||
duration: 100
|
||||
}
|
||||
}
|
||||
Component.onCompleted: opacity = 1
|
||||
Component.onCompleted: {
|
||||
bubble.timestampItem.visible = !root.isActive;
|
||||
opacity = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,21 +52,20 @@ BaseModalDialog {
|
||||
popupContent: ColumnLayout {
|
||||
id: deleteAccountContentColumnLayout
|
||||
anchors.centerIn: parent
|
||||
spacing: JamiTheme.preferredMarginSize
|
||||
spacing: 20
|
||||
|
||||
Component.onCompleted: keyItem.forceActiveFocus()
|
||||
Label {
|
||||
id: instructionLabel
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
Layout.preferredWidth: JamiTheme.preferredDialogWidth - 4*JamiTheme.preferredMarginSize
|
||||
color: JamiTheme.textColor
|
||||
text: JamiStrings.assignmentIndication
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.pointSize: JamiTheme.settingsFontSize
|
||||
font.kerning: true
|
||||
|
||||
wrapMode: Text.Wrap
|
||||
@ -74,12 +73,13 @@ BaseModalDialog {
|
||||
|
||||
Label {
|
||||
id: keyLabel
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
Layout.leftMargin: JamiTheme.preferredMarginSize
|
||||
|
||||
color: JamiTheme.blackColor
|
||||
wrapMode: Text.WordWrap
|
||||
text: ""
|
||||
font.pointSize: JamiTheme.settingsFontSize
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
|
||||
@ -79,6 +79,7 @@ Loader {
|
||||
formattedTime: root.formattedTime
|
||||
formattedDay: root.formattedTime
|
||||
extraHeight: progressBar.visible ? 18 : 0
|
||||
|
||||
innerContent.children: [
|
||||
RowLayout {
|
||||
id: transferItem
|
||||
@ -104,7 +105,7 @@ Loader {
|
||||
property string iconSourceA
|
||||
property string iconSourceB
|
||||
|
||||
Layout.margins: 12
|
||||
Layout.margins: 8
|
||||
|
||||
sourceComponent: {
|
||||
switch (Status) {
|
||||
@ -132,14 +133,22 @@ Loader {
|
||||
}
|
||||
Component {
|
||||
id: terminatedComp
|
||||
ResponsiveImage {
|
||||
source: buttonsLoader.iconSourceA
|
||||
Layout.leftMargin: 12
|
||||
Layout.preferredWidth: 24
|
||||
Layout.preferredHeight: 24
|
||||
color: UtilsAdapter.luma(bubble.color)
|
||||
? JamiTheme.chatviewTextColorLight
|
||||
: JamiTheme.chatviewTextColorDark
|
||||
|
||||
Control {
|
||||
width: 50
|
||||
height: 50
|
||||
padding: 13
|
||||
|
||||
background: Rectangle {
|
||||
color: JamiTheme.blackColor
|
||||
opacity: 0.15
|
||||
radius: msgRadius
|
||||
}
|
||||
|
||||
contentItem: ResponsiveImage {
|
||||
source: buttonsLoader.iconSourceA
|
||||
color: UtilsAdapter.luma(bubble.color) ? JamiTheme.fileIconLightColor : JamiTheme.fileIconDarkColor
|
||||
}
|
||||
}
|
||||
}
|
||||
Component {
|
||||
@ -179,7 +188,7 @@ Loader {
|
||||
}
|
||||
Column {
|
||||
Layout.rightMargin: 24
|
||||
spacing: 6
|
||||
spacing: 4
|
||||
TextEdit {
|
||||
id: transferName
|
||||
|
||||
@ -189,7 +198,6 @@ Loader {
|
||||
TransferName :
|
||||
Body
|
||||
wrapMode: Label.WrapAtWordBoundaryOrAnywhere
|
||||
font.weight: Font.DemiBold
|
||||
font.pointSize: 11
|
||||
renderType: Text.NativeRendering
|
||||
readOnly: true
|
||||
@ -217,7 +225,7 @@ Loader {
|
||||
width: Math.min(implicitWidth, maxMsgWidth)
|
||||
bottomPadding: 10
|
||||
text: {
|
||||
var res = formattedTime + " - "
|
||||
var res = ""
|
||||
if (transferStats.totalSize !== undefined) {
|
||||
if (transferStats.progress !== 0 &&
|
||||
transferStats.progress !== transferStats.totalSize) {
|
||||
@ -226,7 +234,7 @@ Loader {
|
||||
var totalSize = transferStats.totalSize !== 0 ? transferStats.totalSize : TotalSize
|
||||
res += UtilsAdapter.humanFileSize(totalSize)
|
||||
}
|
||||
return res + " - " + MessagesAdapter.getStatusString(Status)
|
||||
return res
|
||||
}
|
||||
wrapMode: Label.WrapAtWordBoundaryOrAnywhere
|
||||
font.pointSize: 10
|
||||
@ -257,6 +265,7 @@ Loader {
|
||||
id: localMediaMsgItem
|
||||
|
||||
isOutgoing: Author === CurrentAccount.uri
|
||||
property var transferStats: MessagesAdapter.getTransferStats(Id, Status)
|
||||
showTime: root.showTime
|
||||
seq: root.seq
|
||||
author: Author
|
||||
@ -266,7 +275,31 @@ Loader {
|
||||
readers: Readers
|
||||
formattedTime: MessagesAdapter.getFormattedTime(Timestamp)
|
||||
formattedDay: MessagesAdapter.getFormattedDay(Timestamp)
|
||||
bubble.visible: false
|
||||
|
||||
property real contentWidth
|
||||
|
||||
Component.onCompleted: {
|
||||
if (transferStats.totalSize !== undefined) {
|
||||
var totalSize = transferStats.totalSize !== 0 ? transferStats.totalSize : TotalSize
|
||||
var txt = UtilsAdapter.humanFileSize(totalSize)
|
||||
}
|
||||
bubble.timestampItem.timeLabel.text += " - " + txt
|
||||
bubble.color = "transparent"
|
||||
if (mediaInfo.isImage)
|
||||
bubble.z = 1
|
||||
else
|
||||
timeUnderBubble = true
|
||||
}
|
||||
|
||||
onContentWidthChanged: {
|
||||
if (bubble.timestampItem.timeLabel.width > contentWidth)
|
||||
timeUnderBubble = true
|
||||
else {
|
||||
bubble.timestampItem.timeColor = JamiTheme.whiteColor
|
||||
bubble.timestampItem.timeLabel.opacity = 1
|
||||
}
|
||||
}
|
||||
|
||||
innerContent.children: [
|
||||
Loader {
|
||||
id: localMediaCompLoader
|
||||
@ -282,6 +315,9 @@ Loader {
|
||||
return animatedImageComp
|
||||
return avComp
|
||||
}
|
||||
|
||||
|
||||
|
||||
Component {
|
||||
id: avComp
|
||||
|
||||
@ -296,6 +332,7 @@ Loader {
|
||||
}
|
||||
Component {
|
||||
id: animatedImageComp
|
||||
|
||||
AnimatedImage {
|
||||
id: animatedImg
|
||||
|
||||
@ -330,12 +367,27 @@ Loader {
|
||||
radius: msgRadius
|
||||
}
|
||||
}
|
||||
HoverHandler {
|
||||
target : parent
|
||||
onHoveredChanged: {
|
||||
localMediaMsgItem.hoveredLink = hovered ? animatedImg.source : ""
|
||||
|
||||
onWidthChanged: {
|
||||
localMediaMsgItem.contentWidth = width
|
||||
}
|
||||
|
||||
Component.onCompleted: localMediaMsgItem.bubble.imgSource = source
|
||||
|
||||
LinearGradient {
|
||||
id: gradient
|
||||
anchors.fill: parent
|
||||
start: Qt.point(0, height / 3)
|
||||
gradient: Gradient {
|
||||
GradientStop {
|
||||
position: 0.0
|
||||
color: JamiTheme.transparentColor
|
||||
}
|
||||
GradientStop {
|
||||
position: 1.0
|
||||
color: JamiTheme.darkGreyColorOpacityFade
|
||||
}
|
||||
}
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -355,6 +407,8 @@ Loader {
|
||||
asynchronous: true
|
||||
source: Body !== undefined ? UtilsAdapter.urlFromLocalPath(Body) : ''
|
||||
|
||||
Component.onCompleted: localMediaMsgItem.bubble.imgSource = source
|
||||
|
||||
// The sourceSize represents the maximum source dimensions.
|
||||
// This should not be a dynamic binding, as property changes
|
||||
// (resizing the chat view) here will trigger a reload of the image.
|
||||
@ -369,9 +423,14 @@ Loader {
|
||||
if (status == Image.Ready && aspectRatio) {
|
||||
height = Qt.binding(() => JamiQmlUtils.clamp(idealWidth / aspectRatio, 64, 256))
|
||||
width = Qt.binding(() => height * aspectRatio)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
onWidthChanged: {
|
||||
localMediaMsgItem.contentWidth = width
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: JamiTheme.previewImageBackgroundColor
|
||||
z: -1
|
||||
@ -387,12 +446,21 @@ Loader {
|
||||
radius: msgRadius
|
||||
}
|
||||
}
|
||||
HoverHandler {
|
||||
target : parent
|
||||
onHoveredChanged: {
|
||||
localMediaMsgItem.hoveredLink = hovered ? img.source : ""
|
||||
|
||||
LinearGradient {
|
||||
id: gradient
|
||||
anchors.fill: parent
|
||||
start: Qt.point(0, height / 3)
|
||||
gradient: Gradient {
|
||||
GradientStop {
|
||||
position: 0.0
|
||||
color: JamiTheme.transparentColor
|
||||
}
|
||||
GradientStop {
|
||||
position: 1.0
|
||||
color: JamiTheme.darkGreyColorOpacityFade
|
||||
}
|
||||
}
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -182,6 +182,8 @@ BaseModalDialog {
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
|
||||
visible: !isSIP
|
||||
|
||||
radius: 5
|
||||
color: root.backgroundColor
|
||||
|
||||
@ -242,7 +244,7 @@ BaseModalDialog {
|
||||
|
||||
anchors.centerIn: parent
|
||||
anchors.margins: 15
|
||||
width: accountRectangle.width
|
||||
width: parent.width
|
||||
|
||||
Image{
|
||||
id: warningIcon
|
||||
@ -260,9 +262,6 @@ BaseModalDialog {
|
||||
Layout.fillWidth: true
|
||||
Layout.margins: 15
|
||||
|
||||
visible: !isSIP
|
||||
|
||||
|
||||
text: JamiStrings.deleteAccountInfos
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
|
||||
193
src/app/commoncomponents/IdentifierUsernameTextEdit.qml
Normal file
@ -0,0 +1,193 @@
|
||||
/*
|
||||
* Copyright (C) 2022-2023 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, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Qt5Compat.GraphicalEffects
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
import net.jami.Models 1.1
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
property string prefixIconSrc: {
|
||||
switch (nameRegistrationState) {
|
||||
case UsernameTextEdit.NameRegistrationState.FREE:
|
||||
return JamiResources.circled_green_check_svg;
|
||||
case UsernameTextEdit.NameRegistrationState.INVALID:
|
||||
case UsernameTextEdit.NameRegistrationState.TAKEN:
|
||||
return JamiResources.circled_red_cross_svg;
|
||||
case UsernameTextEdit.NameRegistrationState.BLANK:
|
||||
default:
|
||||
return JamiResources.person_24dp_svg;
|
||||
}
|
||||
}
|
||||
|
||||
property color prefixIconColor: {
|
||||
switch (nameRegistrationState) {
|
||||
case UsernameTextEdit.NameRegistrationState.FREE:
|
||||
return "#009980";
|
||||
case UsernameTextEdit.NameRegistrationState.INVALID:
|
||||
case UsernameTextEdit.NameRegistrationState.TAKEN:
|
||||
return "#CC0022";
|
||||
case UsernameTextEdit.NameRegistrationState.BLANK:
|
||||
default:
|
||||
return JamiTheme.editLineColor;
|
||||
}
|
||||
}
|
||||
|
||||
property bool isActive: false
|
||||
property string infohash: CurrentAccount.uri
|
||||
property string accountId: CurrentAccount.id
|
||||
property string registeredName: CurrentAccount.registeredName
|
||||
property string staticText: root.isActive ? registeredName : (registeredName ? registeredName : infohash)
|
||||
|
||||
property bool editMode: false
|
||||
|
||||
signal keyPressed
|
||||
signal activeChanged(bool active)
|
||||
|
||||
property string dynamicText
|
||||
|
||||
property QtObject textValidator: RegularExpressionValidator {
|
||||
regularExpression: /[A-Za-z0-9-]{0,32}/
|
||||
}
|
||||
|
||||
enum NameRegistrationState {
|
||||
BLANK,
|
||||
INVALID,
|
||||
TAKEN,
|
||||
FREE,
|
||||
SEARCHING
|
||||
}
|
||||
property int nameRegistrationState: UsernameTextEdit.NameRegistrationState.BLANK
|
||||
|
||||
property bool inputIsValid: dynamicText.length === 0 || nameRegistrationState === UsernameTextEdit.NameRegistrationState.FREE
|
||||
|
||||
signal accepted
|
||||
|
||||
property bool btnHovered: false
|
||||
|
||||
Connections {
|
||||
target: CurrentAccount
|
||||
|
||||
function onRegisteredNameChanged() {
|
||||
root.editMode = false;
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
id: registeredNameFoundConnection
|
||||
|
||||
target: NameDirectory
|
||||
enabled: dynamicText.length !== 0
|
||||
|
||||
function onRegisteredNameFound(status, address, name) {
|
||||
if (dynamicText === name) {
|
||||
switch (status) {
|
||||
case NameDirectory.LookupStatus.NOT_FOUND:
|
||||
nameRegistrationState = UsernameTextEdit.NameRegistrationState.FREE;
|
||||
break;
|
||||
case NameDirectory.LookupStatus.ERROR:
|
||||
case NameDirectory.LookupStatus.INVALID_NAME:
|
||||
case NameDirectory.LookupStatus.INVALID:
|
||||
nameRegistrationState = UsernameTextEdit.NameRegistrationState.INVALID;
|
||||
break;
|
||||
case NameDirectory.LookupStatus.SUCCESS:
|
||||
nameRegistrationState = UsernameTextEdit.NameRegistrationState.TAKEN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: lookupTimer
|
||||
|
||||
repeat: false
|
||||
interval: JamiTheme.usernameTextEditlookupInterval
|
||||
|
||||
onTriggered: {
|
||||
if (dynamicText.length !== 0) {
|
||||
nameRegistrationState = UsernameTextEdit.NameRegistrationState.SEARCHING;
|
||||
NameDirectory.lookupName(root.accountId, dynamicText);
|
||||
} else {
|
||||
nameRegistrationState = UsernameTextEdit.NameRegistrationState.BLANK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onDynamicTextChanged: lookupTimer.restart()
|
||||
|
||||
onActiveChanged: function (active) {
|
||||
root.isActive = active;
|
||||
}
|
||||
|
||||
onFocusChanged: {
|
||||
if (focus)
|
||||
editCompField.forceActiveFocus();
|
||||
}
|
||||
|
||||
function startEditing() {
|
||||
if (!registeredName) {
|
||||
root.editMode = true;
|
||||
editCompField.forceActiveFocus();
|
||||
nameRegistrationState = UsernameTextEdit.NameRegistrationState.BLANK;
|
||||
}
|
||||
}
|
||||
|
||||
MaterialTextField {
|
||||
id: editCompField
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
visible: root.editMode
|
||||
|
||||
onVisibleChanged: {
|
||||
if (visible) {
|
||||
forceActiveFocus();
|
||||
text = staticText;
|
||||
}
|
||||
}
|
||||
focus: true
|
||||
infoTipText: JamiStrings.usernameToolTip
|
||||
prefixIconSrc: root.prefixIconSrc
|
||||
prefixIconColor: root.prefixIconColor
|
||||
suffixIconSrc: JamiResources.outline_info_24dp_svg
|
||||
suffixIconColor: JamiTheme.buttonTintedBlue
|
||||
textColor: JamiTheme.tintedBlue
|
||||
|
||||
font.pixelSize: JamiTheme.jamiIdSmallFontSize
|
||||
|
||||
placeholderText: JamiStrings.chooseAUsername
|
||||
onAccepted: root.accepted()
|
||||
onRejected: root.editMode = false;
|
||||
onKeyPressed: root.keyPressed()
|
||||
onTextChanged: dynamicText = text;
|
||||
|
||||
inputIsValid: root.inputIsValid
|
||||
onFocusChanged: {
|
||||
if (!focus && root.editMode && !root.btnHovered)
|
||||
rejected();
|
||||
activeChanged(root.editMode);
|
||||
}
|
||||
onIsActiveChanged: activeChanged(isActive)
|
||||
validator: root.textValidator
|
||||
readOnly: !root.editMode
|
||||
}
|
||||
}
|
||||
@ -21,7 +21,7 @@ import QtQuick.Controls
|
||||
import net.jami.Models 1.1
|
||||
import net.jami.Constants 1.1
|
||||
|
||||
Rectangle {
|
||||
Control {
|
||||
id: root
|
||||
|
||||
property string icoSource: ""
|
||||
@ -32,9 +32,7 @@ Rectangle {
|
||||
width: 190
|
||||
height: infos.implicitHeight
|
||||
|
||||
color: JamiTheme.transparentColor
|
||||
|
||||
ColumnLayout {
|
||||
contentItem: ColumnLayout {
|
||||
id: infos
|
||||
anchors.fill: parent
|
||||
|
||||
@ -79,6 +77,7 @@ Rectangle {
|
||||
color: JamiTheme.textColor
|
||||
wrapMode: Text.WordWrap
|
||||
text: description
|
||||
lineHeight: 1.3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,6 +29,10 @@ Item {
|
||||
property color backgroundColor: JamiTheme.welcomeBlockColor
|
||||
property color contentColor: JamiTheme.tintedBlue
|
||||
property bool centered: true
|
||||
property bool validated: false
|
||||
property bool outsideClic: false
|
||||
property bool justChanged: false
|
||||
property bool clic : false
|
||||
height: getHeight()
|
||||
|
||||
function getHeight() {
|
||||
@ -38,9 +42,10 @@ Item {
|
||||
Connections {
|
||||
target: CurrentAccount
|
||||
function onIdChanged(id) {
|
||||
if (!usernameTextEdit.readOnly) {
|
||||
usernameTextEdit.readOnly = true;
|
||||
if (usernameTextEdit.editMode) {
|
||||
usernameTextEdit.editMode = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,8 +58,7 @@ Item {
|
||||
RoundedBorderRectangle {
|
||||
id: leftRect
|
||||
fillColor: JamiTheme.jamiIdBackgroundColor
|
||||
Layout.preferredWidth: childrenRect.width
|
||||
Layout.maximumWidth: jamiId.width - rightRect.width
|
||||
Layout.preferredWidth: usernameTextEdit.visible ? childrenRect.width + JamiTheme.pushButtonMargins : childrenRect.width
|
||||
Layout.preferredHeight: childrenRect.height
|
||||
radius: {
|
||||
"tl": 5,
|
||||
@ -71,24 +75,24 @@ Item {
|
||||
Layout.preferredHeight: 40
|
||||
containerHeight: 40
|
||||
containerWidth: 40
|
||||
Layout.fillHeight: true
|
||||
Layout.leftMargin: JamiTheme.pushButtonMargins
|
||||
source: JamiResources.jami_id_logo_svg
|
||||
color: JamiTheme.tintedBlue
|
||||
}
|
||||
|
||||
UsernameTextEdit {
|
||||
IdentifierUsernameTextEdit {
|
||||
id: usernameTextEdit
|
||||
visible: !readOnly
|
||||
visible: editMode
|
||||
Layout.preferredHeight: 40
|
||||
Layout.preferredWidth: 300
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
textColor: JamiTheme.tintedBlue
|
||||
fontPixelSize: staticText.length > 16 || dynamicText.length > 16 ? JamiTheme.jamiIdSmallFontSize : JamiTheme.bigFontSize
|
||||
Layout.fillWidth: true
|
||||
|
||||
editMode: false
|
||||
isPersistent: false
|
||||
readOnly: true
|
||||
|
||||
onAccepted: {
|
||||
usernameTextEdit.readOnly = true;
|
||||
usernameTextEdit.editMode = false;
|
||||
if (dynamicText === '') {
|
||||
return;
|
||||
}
|
||||
@ -96,22 +100,31 @@ Item {
|
||||
"registeredName": dynamicText
|
||||
});
|
||||
dlg.accepted.connect(function () {
|
||||
usernameTextEdit.nameRegistrationState = UsernameTextEdit.NameRegistrationState.BLANK;
|
||||
usernameTextEdit.nameRegistrationState = IdentifierUsernameTextEdit.NameRegistrationState.BLANK;
|
||||
});
|
||||
dynamicText = '';
|
||||
}
|
||||
}
|
||||
Label{
|
||||
id: usernameLabel
|
||||
visible: usernameTextEdit.readOnly
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
|
||||
visible: !usernameTextEdit.editMode
|
||||
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
Layout.rightMargin: JamiTheme.pushButtonMargins
|
||||
Layout.bottomMargin: text === registeredName ? 5 : 0
|
||||
Layout.maximumWidth: leftRect.width - 50
|
||||
Layout.fillHeight: true
|
||||
elide: Text.ElideRight
|
||||
color: JamiTheme.tintedBlue
|
||||
font.pixelSize : text.length > 16 ? JamiTheme.jamiIdSmallFontSize : JamiTheme.bigFontSize
|
||||
property string registeredName: CurrentAccount.registeredName
|
||||
property string infohash: CurrentAccount.uri
|
||||
text: registeredName ? registeredName : infohash
|
||||
onRegisteredNameChanged: {
|
||||
text = registeredName ? registeredName : infohash
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -148,21 +161,32 @@ Item {
|
||||
if (!usernameTextEdit.editMode)
|
||||
return true;
|
||||
switch (usernameTextEdit.nameRegistrationState) {
|
||||
case UsernameTextEdit.NameRegistrationState.BLANK:
|
||||
case UsernameTextEdit.NameRegistrationState.FREE:
|
||||
return true;
|
||||
case UsernameTextEdit.NameRegistrationState.SEARCHING:
|
||||
case UsernameTextEdit.NameRegistrationState.INVALID:
|
||||
case UsernameTextEdit.NameRegistrationState.TAKEN:
|
||||
case UsernameTextEdit.NameRegistrationState.BLANK:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
hoverEnabled: enabled
|
||||
|
||||
onHoveredChanged: {
|
||||
if (hovered) {
|
||||
usernameTextEdit.btnHovered = true;
|
||||
} else {
|
||||
usernameTextEdit.btnHovered = false;
|
||||
}
|
||||
}
|
||||
|
||||
source: usernameTextEdit.editMode ? JamiResources.check_black_24dp_svg : JamiResources.assignment_ind_black_24dp_svg
|
||||
toolTipText: JamiStrings.chooseUsername
|
||||
onClicked: {
|
||||
if (usernameTextEdit.readOnly) {
|
||||
usernameTextEdit.forceActiveFocus();
|
||||
if (!usernameTextEdit.editMode) {
|
||||
usernameTextEdit.startEditing();
|
||||
usernameTextEdit.readOnly = false;
|
||||
usernameTextEdit.editMode = true;
|
||||
} else {
|
||||
usernameTextEdit.accepted();
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@ import QtQuick.Controls
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
|
||||
// A SplitView that supports dynamic RTL and splitView state saving.
|
||||
SplitView {
|
||||
id: root
|
||||
|
||||
|
||||
@ -31,6 +31,10 @@ VideoView {
|
||||
rendererId = id;
|
||||
} else {
|
||||
const forceRestart = rendererId === id;
|
||||
if (!forceRestart) {
|
||||
// Stop previous device
|
||||
VideoDevices.stopDevice(rendererId);
|
||||
}
|
||||
rendererId = VideoDevices.startDevice(id, forceRestart);
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,6 +46,7 @@ AbstractButton {
|
||||
property real textRightPadding
|
||||
property real fontSize: JamiTheme.buttontextFontPixelSize
|
||||
property real textAlignment: Text.AlignHCenter
|
||||
property real textOpacity: 1
|
||||
checkable: false
|
||||
checked: false
|
||||
|
||||
@ -94,87 +95,72 @@ AbstractButton {
|
||||
return root.color;
|
||||
}
|
||||
|
||||
contentItem: Item {
|
||||
id: item
|
||||
contentItem: RowLayout {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: hasIcon ? JamiTheme.preferredMarginSize : 0
|
||||
|
||||
Binding on implicitWidth {
|
||||
when: root.preferredWidth === undefined || !root.Layout.fillWidth
|
||||
value: item.childrenRect.width
|
||||
Component {
|
||||
id: iconComponent
|
||||
|
||||
ResponsiveImage {
|
||||
source: source_
|
||||
Layout.preferredWidth: iconSize
|
||||
Layout.preferredHeight: iconSize
|
||||
color: contentColorProvider
|
||||
}
|
||||
}
|
||||
|
||||
implicitHeight: childrenRect.height
|
||||
Component {
|
||||
id: animatedIconComponent
|
||||
|
||||
RowLayout {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
Binding on width {
|
||||
when: root.preferredWidth !== undefined || root.Layout.fillWidth
|
||||
value: root.availableWidth
|
||||
AnimatedImage {
|
||||
source: animatedSource_
|
||||
Layout.preferredWidth: iconSize
|
||||
Layout.preferredHeight: iconSize
|
||||
width: iconSize
|
||||
height: iconSize
|
||||
playing: true
|
||||
fillMode: Image.PreserveAspectFit
|
||||
mipmap: true
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: icon
|
||||
|
||||
property string source_
|
||||
property string animatedSource_
|
||||
|
||||
active: hasIcon
|
||||
|
||||
Layout.preferredWidth: active * width
|
||||
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
Layout.leftMargin: hasIcon ? JamiTheme.preferredMarginSize : undefined
|
||||
sourceComponent: animatedSource_.length !== 0 ? animatedIconComponent : iconComponent
|
||||
}
|
||||
|
||||
Text {
|
||||
id: textButton
|
||||
|
||||
Layout.rightMargin: {
|
||||
if ((!hasIcon || root.preferredWidth === undefined) && !root.Layout.fillWidth)
|
||||
return undefined;
|
||||
return icon.width + JamiTheme.preferredMarginSize / 2 + parent.spacing;
|
||||
}
|
||||
|
||||
spacing: hasIcon ? JamiTheme.preferredMarginSize : 0
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
Component {
|
||||
id: iconComponent
|
||||
|
||||
ResponsiveImage {
|
||||
source: source_
|
||||
Layout.preferredWidth: iconSize
|
||||
Layout.preferredHeight: iconSize
|
||||
color: contentColorProvider
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: animatedIconComponent
|
||||
|
||||
AnimatedImage {
|
||||
source: animatedSource_
|
||||
Layout.preferredWidth: iconSize
|
||||
Layout.preferredHeight: iconSize
|
||||
width: iconSize
|
||||
height: iconSize
|
||||
playing: true
|
||||
fillMode: Image.PreserveAspectFit
|
||||
mipmap: true
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: icon
|
||||
|
||||
property string source_
|
||||
property string animatedSource_
|
||||
|
||||
active: hasIcon
|
||||
|
||||
Layout.preferredWidth: active * width
|
||||
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
Layout.leftMargin: hasIcon ? JamiTheme.preferredMarginSize : undefined
|
||||
sourceComponent: animatedSource_.length !== 0 ? animatedIconComponent : iconComponent
|
||||
}
|
||||
|
||||
Text {
|
||||
id: textButton
|
||||
|
||||
Layout.rightMargin: {
|
||||
if ((!hasIcon || root.preferredWidth === undefined) && !root.Layout.fillWidth)
|
||||
return undefined;
|
||||
return icon.width + JamiTheme.preferredMarginSize / 2 + parent.spacing;
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
leftPadding: root.primary ? JamiTheme.buttontextWizzardPadding : textLeftPadding
|
||||
rightPadding: root.primary ? JamiTheme.buttontextWizzardPadding : textRightPadding
|
||||
text: root.text
|
||||
elide: Text.ElideRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: root.textAlignment
|
||||
color: contentColorProvider
|
||||
font.pixelSize: fontSize
|
||||
}
|
||||
leftPadding: root.primary ? JamiTheme.buttontextWizzardPadding : textLeftPadding
|
||||
rightPadding: root.primary ? JamiTheme.buttontextWizzardPadding : textRightPadding
|
||||
text: root.text
|
||||
elide: Text.ElideRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: root.textAlignment
|
||||
color: contentColorProvider
|
||||
font.pixelSize: fontSize
|
||||
opacity: root.textOpacity
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -37,6 +37,7 @@ Rectangle {
|
||||
|
||||
Rectangle {
|
||||
id: mask
|
||||
|
||||
visible: type !== MsgSeq.single && !isReply
|
||||
z: -1
|
||||
radius: 5
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
*/
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
|
||||
@ -24,6 +25,8 @@ import net.jami.Constants 1.1
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
closeButtonVisible: false
|
||||
|
||||
enum PasswordEnteringPurpose {
|
||||
ChangePassword,
|
||||
ExportAccount,
|
||||
@ -74,9 +77,13 @@ BaseModalDialog {
|
||||
button1Role: DialogButtonBox.ApplyRole
|
||||
button1.enabled: purpose === PasswordDialog.SetPassword
|
||||
|
||||
button2.text: JamiStrings.cancel
|
||||
button2Role: DialogButtonBox.RejectRole
|
||||
button2.onClicked: close()
|
||||
|
||||
popupContent: ColumnLayout {
|
||||
id: popupContentColumnLayout
|
||||
width: JamiTheme.preferredDialogWidth
|
||||
|
||||
spacing: 16
|
||||
|
||||
@ -136,10 +143,8 @@ BaseModalDialog {
|
||||
id: currentPasswordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
Layout.leftMargin: JamiTheme.preferredMarginSize
|
||||
Layout.rightMargin: JamiTheme.preferredMarginSize
|
||||
|
||||
visible: purpose === PasswordDialog.ChangePassword || purpose === PasswordDialog.ExportAccount
|
||||
placeholderText: JamiStrings.enterCurrentPassword
|
||||
@ -151,10 +156,8 @@ BaseModalDialog {
|
||||
id: passwordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
Layout.leftMargin: JamiTheme.preferredMarginSize
|
||||
Layout.rightMargin: JamiTheme.preferredMarginSize
|
||||
Layout.fillWidth: true
|
||||
|
||||
visible: purpose === PasswordDialog.ChangePassword || purpose === PasswordDialog.SetPassword
|
||||
|
||||
@ -167,10 +170,9 @@ BaseModalDialog {
|
||||
id: confirmPasswordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
Layout.leftMargin: JamiTheme.preferredMarginSize
|
||||
Layout.rightMargin: JamiTheme.preferredMarginSize
|
||||
Layout.bottomMargin: JamiTheme.preferredMarginSize
|
||||
Layout.fillWidth: true
|
||||
|
||||
visible: purpose === PasswordDialog.ChangePassword || purpose === PasswordDialog.SetPassword
|
||||
|
||||
|
||||
@ -34,13 +34,14 @@ BaseModalDialog {
|
||||
|
||||
property string imageId
|
||||
property bool newItem
|
||||
property real buttonSize: JamiTheme.smartListAvatarSize
|
||||
property real buttonSize: 36
|
||||
property real imageSize: 25
|
||||
|
||||
|
||||
signal focusOnPreviousItem
|
||||
signal focusOnNextItem
|
||||
signal imageValidated
|
||||
signal imageRemoved
|
||||
|
||||
function startBooth() {
|
||||
recordBox.openRecorder(true)
|
||||
@ -58,14 +59,13 @@ BaseModalDialog {
|
||||
importButton.forceActiveFocus()
|
||||
}
|
||||
|
||||
width: JamiTheme.preferredDialogWidth
|
||||
|
||||
title: JamiStrings.chooseAvatarPicture
|
||||
title: JamiStrings.selectImage
|
||||
|
||||
RecordBox {
|
||||
id: recordBox
|
||||
|
||||
anchors.centerIn: parent
|
||||
x: 100
|
||||
y: 100
|
||||
|
||||
isPhoto: true
|
||||
visible: false
|
||||
@ -77,18 +77,16 @@ BaseModalDialog {
|
||||
UtilsAdapter.setTempCreationImageFromString(photo, imageId);
|
||||
imageValidated();
|
||||
}
|
||||
|
||||
root.close()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
popupContent: RowLayout {
|
||||
id: buttonsRowLayout
|
||||
|
||||
spacing: 10
|
||||
spacing: 18
|
||||
|
||||
PushButton {
|
||||
JamiPushButton {
|
||||
id: takePhotoButton
|
||||
|
||||
objectName: "takePhotoButton"
|
||||
@ -97,15 +95,11 @@ BaseModalDialog {
|
||||
|
||||
height: buttonSize
|
||||
width: buttonSize
|
||||
imageContainerWidth: imageSize
|
||||
imageContainerHeight: imageSize
|
||||
radius: height / 2
|
||||
border.color: JamiTheme.buttonTintedBlue
|
||||
|
||||
normalColor: "transparent"
|
||||
imageColor: JamiTheme.buttonTintedBlue
|
||||
imageColor: hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
toolTipText: JamiStrings.takePhoto
|
||||
source: JamiResources.baseline_camera_alt_24dp_svg
|
||||
hoveredColor: JamiTheme.smartListHoveredColor
|
||||
source: JamiResources.add_a_photo_black_24dp_svg
|
||||
|
||||
Keys.onPressed: function (keyEvent) {
|
||||
if (keyEvent.key === Qt.Key_Enter ||
|
||||
@ -127,19 +121,11 @@ BaseModalDialog {
|
||||
|
||||
onClicked: {
|
||||
recordBox.parent = buttonsRowLayout
|
||||
|
||||
recordBox.x = Qt.binding(function() {
|
||||
var buttonCenterX = buttonsRowLayout.width / 2
|
||||
return buttonCenterX - recordBox.width / 2
|
||||
})
|
||||
recordBox.y = Qt.binding(function() {
|
||||
return - recordBox.height / 2
|
||||
})
|
||||
startBooth()
|
||||
}
|
||||
}
|
||||
|
||||
PushButton {
|
||||
JamiPushButton {
|
||||
id: importButton
|
||||
|
||||
objectName: "photoboothViewImportButton"
|
||||
@ -149,16 +135,11 @@ BaseModalDialog {
|
||||
|
||||
height: buttonSize
|
||||
width: buttonSize
|
||||
imageContainerWidth: imageSize
|
||||
imageContainerHeight: imageSize
|
||||
radius: height / 2
|
||||
border.color: JamiTheme.buttonTintedBlue
|
||||
normalColor: "transparent"
|
||||
source: JamiResources.round_folder_24dp_svg
|
||||
toolTipText: JamiStrings.importFromFile
|
||||
imageColor: JamiTheme.buttonTintedBlue
|
||||
hoveredColor: JamiTheme.smartListHoveredColor
|
||||
|
||||
normalColor: "transparent"
|
||||
source: JamiResources.add_photo_alternate_black_24dp_svg
|
||||
imageColor: hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
toolTipText: JamiStrings.importFromFile
|
||||
|
||||
Keys.onPressed: function (keyEvent) {
|
||||
if (keyEvent.key === Qt.Key_Enter ||
|
||||
@ -180,7 +161,7 @@ BaseModalDialog {
|
||||
appWindow,
|
||||
"commoncomponents/JamiFileDialog.qml",
|
||||
{
|
||||
title: JamiStrings.chooseAvatarImage,
|
||||
title: JamiStrings.selectAvatarImage,
|
||||
fileMode: JamiFileDialog.OpenFile,
|
||||
folder: StandardPaths.writableLocation(
|
||||
StandardPaths.PicturesLocation),
|
||||
@ -192,14 +173,15 @@ BaseModalDialog {
|
||||
if (!root.newItem) {
|
||||
AccountAdapter.setCurrentAccountAvatarFile(filePath)
|
||||
} else {
|
||||
UtilsAdapter.setTempCreationImageFromFile(filePath, root.imageId)
|
||||
UtilsAdapter.setTempCreationImageFromFile(filePath, root.imageId);
|
||||
imageValidated();
|
||||
}
|
||||
root.close()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
PushButton {
|
||||
JamiPushButton {
|
||||
id: clearButton
|
||||
|
||||
objectName: "photoboothViewClearButton"
|
||||
@ -208,16 +190,11 @@ BaseModalDialog {
|
||||
|
||||
height: buttonSize
|
||||
width: buttonSize
|
||||
imageContainerWidth: imageSize
|
||||
imageContainerHeight: imageSize
|
||||
radius: height / 2
|
||||
border.color: JamiTheme.buttonTintedBlue
|
||||
normalColor: "transparent"
|
||||
source: JamiResources.ic_hangup_participant_24dp_svg
|
||||
toolTipText: JamiStrings.clearAvatar
|
||||
imageColor: JamiTheme.buttonTintedBlue
|
||||
hoveredColor: JamiTheme.smartListHoveredColor
|
||||
|
||||
normalColor: "transparent"
|
||||
source: JamiResources.remove_circle_outline_black_24dp_svg
|
||||
toolTipText: JamiStrings.removeImage
|
||||
imageColor: hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
|
||||
visible: {
|
||||
if (!newItem && LRCInstance.currentAccountAvatarSet)
|
||||
@ -245,8 +222,10 @@ BaseModalDialog {
|
||||
onClicked: {
|
||||
if (!root.newItem)
|
||||
AccountAdapter.setCurrentAccountAvatarBase64()
|
||||
else
|
||||
UtilsAdapter.setTempCreationImageFromString("", imageId)
|
||||
else {
|
||||
UtilsAdapter.setTempCreationImageFromString("", imageId);
|
||||
imageRemoved();
|
||||
}
|
||||
visible = false
|
||||
stopBooth()
|
||||
root.close()
|
||||
|
||||
@ -59,7 +59,7 @@ Item {
|
||||
showPresenceIndicator: false
|
||||
}
|
||||
|
||||
PushButton {
|
||||
JamiPushButton {
|
||||
id: editImage
|
||||
|
||||
width: doubleEditAvatar ? avatar.width / 2 : avatar.width / 4
|
||||
@ -73,9 +73,10 @@ Item {
|
||||
preferredSize: doubleEditAvatar ? avatar.width / 3 : avatar.width / 6
|
||||
|
||||
normalColor: JamiTheme.secondaryBackgroundColor
|
||||
imageColor: JamiTheme.buttonTintedBlue
|
||||
hoveredColor: JamiTheme.hoveredButtonColorWizard
|
||||
border.color: JamiTheme.buttonTintedBlue
|
||||
border.color: JamiTheme.editButtonBorderColor
|
||||
border.width: 2
|
||||
imageColor: hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
|
||||
enabled: avatar.visible && !root.readOnly
|
||||
visible: enabled
|
||||
|
||||
@ -49,18 +49,21 @@ Control {
|
||||
property int timestamp: Timestamp
|
||||
readonly property real senderMargin: 64
|
||||
readonly property real avatarSize: 20
|
||||
readonly property real msgRadius: 20
|
||||
readonly property real msgRadius: 10
|
||||
readonly property real hPadding: JamiTheme.sbsMessageBasePreferredPadding
|
||||
property bool textHovered: false
|
||||
property alias replyAnimation: selectAnimation
|
||||
width: listView.width
|
||||
height: mainColumnLayout.implicitHeight
|
||||
|
||||
property real textContentWidth
|
||||
property real textContentHeight
|
||||
property bool isReply: ReplyTo !== ""
|
||||
property real timeWidth: timestampItem.width
|
||||
property real editedWidth: editedRow.visible ? editedRow.width + 10 : 0
|
||||
|
||||
property real maxMsgWidth: root.width - senderMargin - 2 * hPadding - avatarBlockWidth
|
||||
property bool bigMsg
|
||||
property bool timeUnderBubble: false
|
||||
|
||||
// If the ListView attached properties are not available,
|
||||
// then the root delegate is likely a Loader.
|
||||
@ -86,34 +89,24 @@ Control {
|
||||
spacing: 0
|
||||
|
||||
TimestampInfo {
|
||||
id: timestampItem
|
||||
|
||||
id: dateItem
|
||||
showDay: root.showDay
|
||||
showTime: root.showTime
|
||||
formattedTime: root.formattedTime
|
||||
formattedDay: root.formattedDay
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
Item {
|
||||
id: usernameblock
|
||||
Layout.preferredHeight: (seq === MsgSeq.first || seq === MsgSeq.single) ? 10 : 0
|
||||
visible: !isReply
|
||||
Layout.topMargin: (seq === MsgSeq.first || seq === MsgSeq.single) && !isOutgoing && !root.showTime ? 20 : 0
|
||||
|
||||
Label {
|
||||
id: username
|
||||
text: UtilsAdapter.getBestNameForUri(CurrentAccount.id, Author)
|
||||
font.bold: true
|
||||
visible: (seq === MsgSeq.first || seq === MsgSeq.single) && !isOutgoing
|
||||
font.pointSize: JamiTheme.smallFontSize
|
||||
color: JamiTheme.chatviewSecondaryInformationColor
|
||||
lineHeight: JamiTheme.usernameBlockLineHeight
|
||||
leftPadding: JamiTheme.usernameBlockPadding
|
||||
textFormat: TextEdit.PlainText
|
||||
}
|
||||
Label {
|
||||
id: username
|
||||
text: UtilsAdapter.getBestNameForUri(CurrentAccount.id, Author)
|
||||
visible: (seq === MsgSeq.first || seq === MsgSeq.single) && !isOutgoing && !isReply
|
||||
|
||||
font.pointSize: JamiTheme.smallFontSize
|
||||
color: JamiTheme.chatviewSecondaryInformationColor
|
||||
leftPadding: JamiTheme.usernameBlockPadding
|
||||
textFormat: TextEdit.PlainText
|
||||
}
|
||||
|
||||
Item {
|
||||
@ -212,8 +205,18 @@ Control {
|
||||
RowLayout {
|
||||
id: msgRowlayout
|
||||
|
||||
Layout.preferredHeight: innerContent.height + root.extraHeight + (emojiReactions.emojis === "" ? 0 : emojiReactions.height - 8)
|
||||
Layout.topMargin: ((seq === MsgSeq.first || seq === MsgSeq.single) && !root.isReply) ? 6 : 0
|
||||
Layout.preferredHeight: {
|
||||
var h = innerContent.height + root.extraHeight;
|
||||
if (emojiReactions.emojis !== "")
|
||||
h += emojiReactions.height - 8;
|
||||
if ((IsEmojiOnly && (root.seq === MsgSeq.last || root.seq === MsgSeq.single) && emojiReactions.emojis === ""))
|
||||
h += 15;
|
||||
if (root.timeUnderBubble)
|
||||
h += 25;
|
||||
return h;
|
||||
}
|
||||
Layout.topMargin: ((seq === MsgSeq.first || seq === MsgSeq.single) && !root.isReply) ? 3.5 : 0
|
||||
Layout.bottomMargin: root.bigMsg ? timestampItem.timeLabel.height : 0
|
||||
|
||||
Item {
|
||||
id: avatarBlock
|
||||
@ -238,20 +241,6 @@ Control {
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
|
||||
MouseArea {
|
||||
id: bubbleArea
|
||||
|
||||
anchors.fill: bubble
|
||||
hoverEnabled: true
|
||||
|
||||
onClicked: function (mouse) {
|
||||
if (root.hoveredLink) {
|
||||
MessagesAdapter.openUrl(root.hoveredLink);
|
||||
}
|
||||
}
|
||||
property bool bubbleHovered: containsMouse || textHovered
|
||||
}
|
||||
|
||||
Column {
|
||||
id: innerContent
|
||||
|
||||
@ -351,18 +340,107 @@ Control {
|
||||
id: bubble
|
||||
|
||||
property bool isEdited: PreviousBodies.length !== 0
|
||||
visible: !IsEmojiOnly
|
||||
property bool isDeleted: false
|
||||
z: -1
|
||||
out: isOutgoing
|
||||
type: seq
|
||||
isReply: root.isReply
|
||||
color: root.getBaseColor()
|
||||
color: IsEmojiOnly ? "transparent" : root.getBaseColor()
|
||||
radius: msgRadius
|
||||
anchors.right: isOutgoing ? parent.right : undefined
|
||||
anchors.top: parent.top
|
||||
|
||||
width: Type === Interaction.Type.TEXT && !isEdited ? root.textContentWidth : innerContent.childrenRect.width
|
||||
height: innerContent.childrenRect.height + (visible ? root.extraHeight : 0)
|
||||
property real timePosition: JamiTheme.emojiMargins + emojiReactions.width + 8
|
||||
property alias timestampItem: timestampItem
|
||||
property bool bubbleHovered
|
||||
property string imgSource
|
||||
|
||||
width: (Type === Interaction.Type.TEXT ? root.textContentWidth : innerContent.childrenRect.width)
|
||||
height: innerContent.childrenRect.height + (visible ? root.extraHeight : 0) + (root.bigMsg ? 15 : 0)
|
||||
|
||||
HoverHandler {
|
||||
target: root
|
||||
enabled: Type === Interaction.Type.DATA_TRANSFER
|
||||
onHoveredChanged: {
|
||||
root.hoveredLink = enabled && hovered ? bubble.imgSource : ""
|
||||
}
|
||||
}
|
||||
|
||||
TimestampInfo {
|
||||
id: timestampItem
|
||||
|
||||
showTime: IsEmojiOnly && !(root.seq === MsgSeq.last || root.seq === MsgSeq.single) ? false : true
|
||||
formattedTime: root.formattedTime
|
||||
|
||||
timeColor: IsEmojiOnly || root.timeUnderBubble? (JamiTheme.darkTheme ? "white" : "dark") : (UtilsAdapter.luma(bubble.color) ? "white" : "dark")
|
||||
timeLabel.opacity: 0.5
|
||||
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: IsEmojiOnly ? (isOutgoing ? parent.right : undefined) : parent.right
|
||||
anchors.left: ((IsEmojiOnly|| root.timeUnderBubble) && !isOutgoing) ? parent.left : undefined
|
||||
anchors.leftMargin: (IsEmojiOnly && !isOutgoing && emojiReactions.visible) ? bubble.timePosition : 0
|
||||
anchors.rightMargin: IsEmojiOnly ? ((isOutgoing && emojiReactions.visible) ? bubble.timePosition : 0) : (root.timeUnderBubble ? 0 : 10)
|
||||
timeLabel.Layout.bottomMargin: {
|
||||
if (IsEmojiOnly)
|
||||
return -15;
|
||||
if (root.timeUnderBubble)
|
||||
return -20;
|
||||
if (root.bigMsg || bubble.isDeleted)
|
||||
return 5;
|
||||
return 9;
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: editedRow
|
||||
anchors.left: root.bigMsg ? bubble.left : timestampItem.left
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: root.bigMsg || bubble.isDeleted ? 6 : 10
|
||||
anchors.leftMargin: root.bigMsg ? 10 : - timestampItem.width - 10
|
||||
visible: bubble.isEdited
|
||||
z: 1
|
||||
|
||||
ResponsiveImage {
|
||||
id: editedImage
|
||||
source: JamiResources.round_edit_24dp_svg
|
||||
width: 12
|
||||
height: 12
|
||||
color: editedLabel.color
|
||||
opacity: 0.5
|
||||
}
|
||||
|
||||
Text {
|
||||
id: editedLabel
|
||||
text: JamiStrings.edited
|
||||
color: UtilsAdapter.luma(bubble.color) ? "white" : "dark"
|
||||
opacity: 0.5
|
||||
font.pixelSize: JamiTheme.timestampFont
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
onTapped: {
|
||||
viewCoordinator.presentDialog(appWindow, "commoncomponents/EditedPopup.qml", {
|
||||
"previousBodies": PreviousBodies
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: bubbleArea
|
||||
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
|
||||
onClicked: function (mouse) {
|
||||
if (root.hoveredLink) {
|
||||
MessagesAdapter.openUrl(root.hoveredLink);
|
||||
}
|
||||
}
|
||||
property bool bubbleHovered: containsMouse || textHovered
|
||||
cursorShape: enabled ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
}
|
||||
}
|
||||
|
||||
EmojiReactions {
|
||||
@ -376,7 +454,7 @@ Control {
|
||||
borderColor: root.getBaseColor()
|
||||
maxWidth: 2 / 3 * maxMsgWidth - JamiTheme.emojiMargins
|
||||
|
||||
state: root.isOutgoing ? "anchorsRight" : (emojiReactions.width > bubble.width - JamiTheme.emojiMargins ? "anchorsLeft" : "anchorsRight")
|
||||
state: root.isOutgoing ? "anchorsRight" : (IsEmojiOnly ? "anchorsLeft" :(emojiReactions.width > bubble.width - JamiTheme.emojiMargins ? "anchorsLeft" : "anchorsRight"))
|
||||
|
||||
TapHandler {
|
||||
onTapped: {
|
||||
@ -519,7 +597,7 @@ Control {
|
||||
orientation: ListView.Horizontal
|
||||
Layout.preferredHeight: {
|
||||
if (showTime || seq === MsgSeq.last)
|
||||
return contentHeight + timestampItem.contentHeight;
|
||||
return contentHeight + dateItem.contentHeight;
|
||||
else if (readsMultiple.visible)
|
||||
return JamiTheme.avatarReadReceiptSize;
|
||||
return 0;
|
||||
|
||||
@ -40,7 +40,7 @@ BaseContextMenu {
|
||||
property bool closeWithoutAnimation: false
|
||||
property var emojiPicker
|
||||
|
||||
function xPositionProvider(width) {
|
||||
function xPosition(width) {
|
||||
// Use the width at function scope to retrigger property evaluation.
|
||||
const listViewWidth = listView.width;
|
||||
const parentX = parent.x;
|
||||
@ -51,9 +51,30 @@ BaseContextMenu {
|
||||
}
|
||||
}
|
||||
|
||||
x: xPositionProvider(width)
|
||||
x: xPosition(width)
|
||||
y: parent.y
|
||||
|
||||
function xPositionProvider(width) {
|
||||
// Use the width at function scope to retrigger property evaluation.
|
||||
const listViewWidth = listView.width;
|
||||
if (isOutgoing) {
|
||||
return -5 - width;
|
||||
} else {
|
||||
const rightMargin = listViewWidth - (msgBubble.x + width);
|
||||
return width > rightMargin + 35 ? -5 - width : 35;
|
||||
}
|
||||
}
|
||||
function yPositionProvider(height) {
|
||||
const topOffset = msgBubble.mapToItem(listView, 0, 0).y;
|
||||
const listViewHeight = listView.height;
|
||||
const bottomMargin = listViewHeight - height - topOffset;
|
||||
if (bottomMargin < 0 || (topOffset < 0 && topOffset + height > 0)) {
|
||||
return 30 - height;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
signal addMoreEmoji
|
||||
onAddMoreEmoji: {
|
||||
JamiQmlUtils.updateMessageBarButtonsPoints();
|
||||
@ -74,7 +95,6 @@ BaseContextMenu {
|
||||
});
|
||||
if (emojiPicker !== null) {
|
||||
root.opacity = 0;
|
||||
emojiPicker.closed.connect(() => close());
|
||||
emojiPicker.x = xPositionProvider(JamiTheme.emojiPickerWidth);
|
||||
emojiPicker.y = yPositionProvider(JamiTheme.emojiPickerHeight);
|
||||
emojiPicker.open();
|
||||
@ -83,11 +103,8 @@ BaseContextMenu {
|
||||
}
|
||||
}
|
||||
|
||||
// Close the picker when listView vertical properties change.
|
||||
property real listViewHeight: listView.height
|
||||
onListViewHeightChanged: close()
|
||||
property bool isScrolling: listView.verticalScrollBar.active
|
||||
onIsScrollingChanged: close()
|
||||
|
||||
onOpened: root.closeWithoutAnimation = false
|
||||
onClosed: if (emojiPicker)
|
||||
|
||||
@ -33,6 +33,8 @@ SBSMessageBase {
|
||||
property string colorUrl: UtilsAdapter.luma(bubble.color) ? JamiTheme.chatviewLinkColorLight : JamiTheme.chatviewLinkColorDark
|
||||
property string colorText: UtilsAdapter.luma(bubble.color) ? JamiTheme.chatviewTextColorLight : JamiTheme.chatviewTextColorDark
|
||||
|
||||
|
||||
|
||||
Connections {
|
||||
target: bubble
|
||||
function onColorChanged(color) {
|
||||
@ -44,6 +46,7 @@ SBSMessageBase {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
isOutgoing: Author === CurrentAccount.uri
|
||||
author: Author
|
||||
readers: Readers
|
||||
@ -55,18 +58,25 @@ SBSMessageBase {
|
||||
textContentWidth: textEditId.width
|
||||
textContentHeight: textEditId.height
|
||||
|
||||
bigMsg: textContentWidth >= (2 / 3) * root.maxMsgWidth || extraContent.active
|
||||
|
||||
innerContent.children: [
|
||||
TextEdit {
|
||||
id: textEditId
|
||||
|
||||
padding: isEmojiOnly ? 0 : JamiTheme.preferredMarginSize
|
||||
padding: isEmojiOnly ? 5 : 10
|
||||
topPadding: bubble.isDeleted ? 6 : 10
|
||||
bottomPadding: bubble.isDeleted ? 6 : 10
|
||||
anchors.right: isOutgoing ? parent.right : undefined
|
||||
text: {
|
||||
if (Body !== "" && ParsedBody.length === 0) {
|
||||
MessagesAdapter.parseMessage(Id, Body, UtilsAdapter.getAppValue(Settings.DisplayHyperlinkPreviews), root.colorUrl, bubble.color);
|
||||
return "";
|
||||
}
|
||||
return (ParsedBody !== "") ? ParsedBody : "<i>(" + JamiStrings.deletedMessage + ")</i>";
|
||||
if (ParsedBody !== "")
|
||||
return ParsedBody;
|
||||
bubble.isDeleted = true;
|
||||
return UtilsAdapter.getBestNameForUri(CurrentAccount.id, Author) + " " + JamiStrings.deletedMessage ;
|
||||
}
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
|
||||
@ -80,12 +90,12 @@ SBSMessageBase {
|
||||
else if (isEmojiOnly)
|
||||
Math.min((2 / 3) * root.maxMsgWidth, implicitWidth, innerContent.width - senderMargin - (innerContent.width - senderMargin) % (JamiTheme.chatviewEmojiSize + 2));
|
||||
else
|
||||
Math.min((2 / 3) * root.maxMsgWidth, implicitWidth, innerContent.width - senderMargin);
|
||||
Math.min((2 / 3) * root.maxMsgWidth, implicitWidth + 5 + root.timeWidth + root.editedWidth, innerContent.width - senderMargin + 5 + root.timeWidth + root.editedWidth);
|
||||
}
|
||||
|
||||
wrapMode: Label.WrapAtWordBoundaryOrAnywhere
|
||||
selectByMouse: true
|
||||
font.pointSize: isEmojiOnly ? JamiTheme.chatviewEmojiSize : JamiTheme.mediumFontSize
|
||||
font.pointSize: isEmojiOnly ? JamiTheme.chatviewEmojiSize : (ParsedBody === "" ? JamiTheme.smallFontSize : JamiTheme.mediumFontSize)
|
||||
font.hintingPreference: Font.PreferNoHinting
|
||||
renderType: Text.NativeRendering
|
||||
textFormat: Text.RichText
|
||||
@ -93,7 +103,8 @@ SBSMessageBase {
|
||||
onLinkHovered: root.hoveredLink = hoveredLink
|
||||
onLinkActivated: Qt.openUrlExternally(new URL(hoveredLink))
|
||||
readOnly: true
|
||||
color: getBaseColor()
|
||||
color: (ParsedBody !== "") ? getBaseColor() : (UtilsAdapter.luma(bubble.color) ? "white" : "dark")
|
||||
opacity:(ParsedBody !== "") ? 1 : 0.5
|
||||
|
||||
function getBaseColor() {
|
||||
var baseColor;
|
||||
@ -126,54 +137,13 @@ SBSMessageBase {
|
||||
selectOnly: parent.readOnly
|
||||
}
|
||||
},
|
||||
RowLayout {
|
||||
id: editedRow
|
||||
|
||||
anchors.right: isOutgoing ? parent.right : undefined
|
||||
visible: PreviousBodies.length !== 0
|
||||
|
||||
ResponsiveImage {
|
||||
id: editedImage
|
||||
|
||||
Layout.leftMargin: JamiTheme.preferredMarginSize
|
||||
Layout.bottomMargin: JamiTheme.preferredMarginSize
|
||||
source: JamiResources.round_edit_24dp_svg
|
||||
width: JamiTheme.editedFontSize
|
||||
height: JamiTheme.editedFontSize
|
||||
layer {
|
||||
enabled: true
|
||||
effect: ColorOverlay {
|
||||
color: editedLabel.color
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: editedLabel
|
||||
|
||||
Layout.rightMargin: JamiTheme.preferredMarginSize
|
||||
Layout.bottomMargin: JamiTheme.preferredMarginSize
|
||||
|
||||
text: JamiStrings.edited
|
||||
color: root.colorText
|
||||
font.pointSize: JamiTheme.editedFontSize
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
onTapped: {
|
||||
viewCoordinator.presentDialog(appWindow, "commoncomponents/EditedPopup.qml", {
|
||||
"previousBodies": PreviousBodies
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
Loader {
|
||||
id: extraContent
|
||||
|
||||
anchors.right: isOutgoing ? parent.right : undefined
|
||||
property real minSize: 192
|
||||
property real maxSize: 320
|
||||
property real maxSize: 400
|
||||
active: LinkPreviewInfo.url !== undefined
|
||||
sourceComponent: ColumnLayout {
|
||||
id: previewContent
|
||||
@ -231,7 +201,7 @@ SBSMessageBase {
|
||||
Layout.preferredWidth: img.width - 2 * hPadding
|
||||
Layout.leftMargin: hPadding
|
||||
Layout.rightMargin: hPadding
|
||||
spacing: 6
|
||||
spacing: 4
|
||||
Label {
|
||||
width: parent.width
|
||||
font.pointSize: 10
|
||||
@ -242,10 +212,11 @@ SBSMessageBase {
|
||||
color: root.colorText
|
||||
visible: LinkPreviewInfo.title.length > 0
|
||||
text: LinkPreviewInfo.title
|
||||
lineHeight: 1.3
|
||||
}
|
||||
Label {
|
||||
width: parent.width
|
||||
font.pointSize: 11
|
||||
font.pointSize: 10
|
||||
font.hintingPreference: Font.PreferNoHinting
|
||||
wrapMode: Label.WrapAtWordBoundaryOrAnywhere
|
||||
renderType: Text.NativeRendering
|
||||
@ -254,6 +225,7 @@ SBSMessageBase {
|
||||
font.underline: root.hoveredLink
|
||||
text: LinkPreviewInfo.description
|
||||
color: root.colorUrl
|
||||
lineHeight: 1.3
|
||||
}
|
||||
Label {
|
||||
width: parent.width
|
||||
@ -264,6 +236,7 @@ SBSMessageBase {
|
||||
textFormat: TextEdit.RichText
|
||||
color: root.colorText
|
||||
text: LinkPreviewInfo.domain
|
||||
lineHeight: 1.3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,6 +31,8 @@ ColumnLayout {
|
||||
property string formattedTime
|
||||
property string formattedDay
|
||||
property real detailsOpacity: 0.6
|
||||
property color timeColor: JamiTheme.chatviewSecondaryInformationColor
|
||||
property alias timeLabel: formattedTimeLabel
|
||||
|
||||
spacing: 0
|
||||
|
||||
@ -97,8 +99,8 @@ ColumnLayout {
|
||||
Layout.topMargin: 30
|
||||
Layout.bottomMargin: 30
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
color: JamiTheme.chatviewSecondaryInformationColor
|
||||
visible: showTime || showDay
|
||||
color: root.timeColor
|
||||
visible: showTime
|
||||
Layout.preferredHeight: visible * implicitHeight
|
||||
font.pointSize: JamiTheme.smallFontSize
|
||||
}
|
||||
|
||||
@ -58,34 +58,28 @@ Menu {
|
||||
menuItems[i].itemRealWidth = menuPreferredWidth;
|
||||
if (menuItemsPreferredHeight)
|
||||
menuItems[i].itemPreferredHeight = menuItemsPreferredHeight;
|
||||
var menuSeparatorComponent, menuSeparatorComponentObj;
|
||||
if (i !== menuItems.length - 1) {
|
||||
var menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root);
|
||||
var menuSeparatorComponentObj = menuSeparatorComponent.createObject();
|
||||
menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root);
|
||||
menuSeparatorComponentObj = menuSeparatorComponent.createObject();
|
||||
generalMenuSeparatorList.push(menuSeparatorComponentObj);
|
||||
root.addItem(menuSeparatorComponentObj);
|
||||
}
|
||||
if (menuItems[i].addMenuSeparatorAfter) {
|
||||
var menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root);
|
||||
var menuSeparatorComponentObj = menuSeparatorComponent.createObject(root, {
|
||||
"separatorColor": "#DEDEDE",
|
||||
menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root);
|
||||
menuSeparatorComponentObj = menuSeparatorComponent.createObject(root, {
|
||||
"separatorColor": JamiTheme.menuSeparatorColor,
|
||||
"separatorPreferredHeight": 0
|
||||
});
|
||||
generalMenuSeparatorList.push(menuSeparatorComponentObj);
|
||||
root.addItem(menuSeparatorComponentObj);
|
||||
var menuSeparatorComponent = Qt.createComponent("GeneralMenuSeparator.qml", Component.PreferSynchronous, root);
|
||||
var menuSeparatorComponentObj = menuSeparatorComponent.createObject();
|
||||
menuSeparatorComponentObj = menuSeparatorComponent.createObject();
|
||||
generalMenuSeparatorList.push(menuSeparatorComponentObj);
|
||||
root.addItem(menuSeparatorComponentObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
root.addItem(menuBottomBorder);
|
||||
root.open();
|
||||
}
|
||||
|
||||
onVisibleChanged: {
|
||||
if (!visible)
|
||||
root.close();
|
||||
}
|
||||
|
||||
font.pointSize: JamiTheme.menuFontSize
|
||||
|
||||
@ -56,6 +56,7 @@ Loader {
|
||||
contextMenu.menuItemsPreferredHeight = contextMenuItemPreferredHeight;
|
||||
contextMenu.menuSeparatorPreferredHeight = contextMenuSeparatorPreferredHeight;
|
||||
contextMenu.loadMenuItems(menuItemsToLoad);
|
||||
contextMenu.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,7 +44,6 @@ ConnectionInfoListModel::data(const QModelIndex& index, int role) const
|
||||
}
|
||||
const auto peerId = peerIds_[index.row()];
|
||||
const auto peerData = peerData_[peerId];
|
||||
|
||||
switch (role) {
|
||||
case ConnectionInfoList::ChannelsMap: {
|
||||
QVariantMap channelsMapMap;
|
||||
|
||||
@ -71,12 +71,27 @@ Item {
|
||||
return Math.min(Math.max(val, min), max);
|
||||
}
|
||||
|
||||
function isDonationBannerVisible() {
|
||||
property bool isDonationBannerVisible: getIsDonationBannerVisible()
|
||||
Connections {
|
||||
target: UtilsAdapter
|
||||
function onDonationCampaignSettingsChanged() {
|
||||
// Changing any of the donation campaign settings will trigger a recompute
|
||||
// of the banner visibility.
|
||||
updateIsDonationBannerVisible();
|
||||
}
|
||||
}
|
||||
|
||||
function updateIsDonationBannerVisible() {
|
||||
isDonationBannerVisible = getIsDonationBannerVisible();
|
||||
}
|
||||
|
||||
function getIsDonationBannerVisible() {
|
||||
// The banner is visible if the current date is after the date set in the settings and before the end date
|
||||
// And if the donation toggle is checked
|
||||
var isDonationVisible = UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible);
|
||||
var endDonationDate = new Date(Date.parse(UtilsAdapter.getAppValue(Settings.Key.Donation2023EndDate)));
|
||||
var donationVisibleDate = new Date(Date.parse(UtilsAdapter.getAppValue(Settings.Key.Donation2023VisibleDate)));
|
||||
return new Date() < endDonationDate && new Date() > donationVisibleDate && isDonationVisible;
|
||||
const isVisible = UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible);
|
||||
const endDate = Date.parse(UtilsAdapter.getAppValue(Settings.Key.Donation2023EndDate));
|
||||
const startDate = Date.parse(UtilsAdapter.getAppValue(Settings.Key.Donation2023VisibleDate));
|
||||
const now = new Date();
|
||||
return isVisible && now < endDate && now >= startDate;
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,13 +48,17 @@ Item {
|
||||
property string version: qsTr("Version") + (AppVersionManager.isCurrentVersionBeta() ? " (Beta)" : "")
|
||||
property string declarationYear: "© 2015-2023"
|
||||
property string slogan: "Eleutheria"
|
||||
property string declaration: qsTr("Jami is a free universal communication software that respects the freedom and privacy of its users.")
|
||||
property string declaration: qsTr('Jami, a GNU package, is software for universal and distributed peer-to-peer communication that respects the freedom and privacy of its users. Visit <a href="https://jami.net" style="color: ' + JamiTheme.buttonTintedBlue + '">jami.net</a>' + ' to learn more.')
|
||||
property string noWarranty: qsTr('This program comes with absolutely no warranty. See the <a href="https://www.gnu.org/licenses/gpl-3.0.html" style="color: ' + JamiTheme.buttonTintedBlue + '">GNU General Public License</a>, version 3 or later for details.')
|
||||
property string contribute: qsTr('Contribute')
|
||||
property string feedback: qsTr('Feedback')
|
||||
|
||||
// AccountComboBox
|
||||
property string displayQRCode: qsTr("Display QR code")
|
||||
property string openSettings: qsTr("Open settings")
|
||||
property string closeSettings: qsTr("Close settings")
|
||||
property string addAccount: qsTr("Add Account")
|
||||
property string addAccount: qsTr("Add another account")
|
||||
property string manageAccount: qsTr("Manage account")
|
||||
|
||||
// ContactPicker
|
||||
property string addToConference: qsTr("Add to conference")
|
||||
@ -340,7 +344,7 @@ Item {
|
||||
property string backendError: qsTr("This is the error from the backend: %0")
|
||||
property string disabledAccount: qsTr("The account is disabled")
|
||||
property string noNetworkConnectivity: qsTr("No network connectivity")
|
||||
property string deletedMessage: qsTr("Deleted message")
|
||||
property string deletedMessage: qsTr("deleted a message")
|
||||
property string backCall: qsTr("Back to Call")
|
||||
|
||||
//MessagesResearch
|
||||
@ -350,7 +354,6 @@ Item {
|
||||
property string search: qsTr("Search")
|
||||
|
||||
// Chatview footer
|
||||
property string scrollToEnd: qsTr("Scroll to end of conversation")
|
||||
property string typeIndicatorSingle: qsTr("{} is typing…")
|
||||
property string typeIndicatorPlural: qsTr("{} are typing…")
|
||||
property string typeIndicatorMax: qsTr("Several people are typing…")
|
||||
@ -606,12 +609,12 @@ Item {
|
||||
property string exportAccount: qsTr("Export")
|
||||
|
||||
// PhotoBoothView
|
||||
property string chooseAvatarImage: qsTr("Choose a picture as your avatar")
|
||||
property string chooseAvatarPicture: qsTr("Choose a picture")
|
||||
property string selectAvatarImage: qsTr("Select image as avatar")
|
||||
property string selectImage: qsTr("Select image")
|
||||
property string importFromFile: qsTr("Import avatar from image file")
|
||||
property string clearAvatar: qsTr("Clear avatar image")
|
||||
property string removeImage: qsTr("Remove image")
|
||||
property string takePhoto: qsTr("Take photo")
|
||||
property string imageFiles: qsTr("Image Files (*.png *.jpg *.jpeg *.JPG *.JPEG *.PNG)")
|
||||
property string imageFiles: qsTr("Image Files (*.jpeg *.jpg *.png *.JPEG* .JPG *.PNG)")
|
||||
|
||||
// Plugins
|
||||
property string autoUpdate: qsTr("Auto update")
|
||||
@ -623,6 +626,7 @@ Item {
|
||||
property string installMannuallyDescription: qsTr("Install an extension directly from your device.")
|
||||
property string pluginStoreTitle: qsTr("Available")
|
||||
property string pluginStoreNotAvailable: qsTr("Plugins store is not available")
|
||||
property string storeNotSupportedPlatform: qsTr("The Jami Extension Store currently has no extension available for the platform in use. Check again later!")
|
||||
property string pluginPreferences: qsTr("Preferences")
|
||||
property string installationFailed: qsTr("Installation failed")
|
||||
property string pluginInstallationFailed: qsTr("The installation of the plugin failed")
|
||||
@ -767,6 +771,9 @@ Item {
|
||||
property string edit: qsTr("Edit")
|
||||
property string edited: qsTr("Edited")
|
||||
property string joinCall: qsTr("Join call")
|
||||
property string joinInAudio: qsTr("Join in audio")
|
||||
property string joinInVideo: qsTr("Join in video")
|
||||
property string startedACall: qsTr("Started a call")
|
||||
property string wantToJoin: qsTr("A call is in progress. Do you want to join the call?")
|
||||
property string needsHost: qsTr("Current host for this swarm seems unreachable. Do you want to host the call?")
|
||||
property string selectHost: qsTr("Select dedicated device for hosting future calls in this swarm. If not set, the host will be the device starting a call.")
|
||||
|
||||
@ -145,6 +145,8 @@ Item {
|
||||
property color backgroundRectangleColor: darkTheme ? "#333333" : "#F0EFEF"
|
||||
property color deleteRedButton: "#CC0022"
|
||||
|
||||
property color editButtonBorderColor: darkTheme ? "#333333" : "#F0EFEF"
|
||||
|
||||
// Jami switch
|
||||
property color switchBackgroundCheckedColor: "#8dbaea"
|
||||
property color switchBackgroundColor: darkTheme ? "#626262" : "#E5EEF5"
|
||||
@ -161,11 +163,18 @@ Item {
|
||||
property color comboboxBackgroundColorHovered: darkTheme ? "#123F4A" : "#E5EEF5"
|
||||
property color comboboxTextColor: darkTheme ? "#03B9E9" : "#005699"
|
||||
property color comboboxTextColorHovered: tintedBlue
|
||||
property color accountComboBoxBackgroundColor: darkTheme ? "#333333" : lightGrey_
|
||||
|
||||
// Spinbox
|
||||
property color spinboxBackgroundColor: darkTheme ? editBackgroundColor : selectedColor
|
||||
property color spinboxBorderColor: darkTheme ? "#1D5F70" : "#A3C2DA"
|
||||
|
||||
//RecordBox
|
||||
property color screenshotButtonColor: "#CC0022"
|
||||
property color recordBoxcloseButtonColor: "#8d8a87"
|
||||
property color recordBoxHoverColor: "#4D4D4D"
|
||||
property color recordBoxButtonColor: "#272727"
|
||||
|
||||
// Toast
|
||||
property color toastColor: darkTheme ? "#f0f0f0" : "#000000"
|
||||
property color toastRectColor: !darkTheme ? "#f0f0f0" : "#000000"
|
||||
@ -226,7 +235,7 @@ Item {
|
||||
property color timestampColor: darkTheme ? "#515151" : "#E5E5E5"
|
||||
property color messageReplyColor: darkTheme ? "#bbb" : "#A7A7A7"
|
||||
property color messageOutTxtColor: "#000000"
|
||||
property color messageInBgColor: darkTheme ? "#303030" : "#dbdbdb"
|
||||
property color messageInBgColor: darkTheme ? "#303030" : "#e5e5e5"
|
||||
property color messageOutBgColor: darkTheme ? "#616161" : "#005699"
|
||||
property color messageInTxtColor: "#FFFFFF"
|
||||
property color fileOutTimestampColor: darkTheme ? "#eee" : "#555"
|
||||
@ -245,6 +254,7 @@ Item {
|
||||
property color previewUrlColor: darkTheme ? "#eeeeee" : "#333"
|
||||
property color messageWebViewFooterButtonImageColor: darkTheme ? "#838383" : "#656565"
|
||||
property color chatviewSecondaryInformationColor: "#A7A7A7"
|
||||
property color draftIconColor: "#707070"
|
||||
|
||||
// ChatView Footer
|
||||
property color chatViewFooterListColor: darkTheme ? blackColor : "#E5E5E5"
|
||||
@ -287,6 +297,11 @@ Item {
|
||||
|
||||
// Files To Send Container
|
||||
property color removeFileButtonColor: Qt.rgba(96, 95, 97, 0.5)
|
||||
property color removeFileButtonHoverColor: "#DEDEDE"
|
||||
property color fileIconDarkColor: "#656565"
|
||||
property color fileIconLightColor: "#A6A6A6"
|
||||
property color fileIconColor: darkTheme ? "#A6A6A6" : "#656565"
|
||||
property color fileBackgroundColor: darkTheme ? "#515151" : "#c3c3c3"
|
||||
|
||||
// JamiScrollBar
|
||||
property color scrollBarHandleColor: "#cecece"
|
||||
@ -411,6 +426,7 @@ Item {
|
||||
property real lineEditContextMenuItemsHeight: 15
|
||||
property real lineEditContextMenuItemsWidth: 100
|
||||
property real lineEditContextMenuSeparatorsHeight: 2
|
||||
property color menuSeparatorColor: darkTheme ? "#4d4d4d" : "#DEDEDE"
|
||||
|
||||
// Recording
|
||||
property real recordingBtnSize: 12
|
||||
@ -446,7 +462,6 @@ Item {
|
||||
property real switchPreferredWidth: 40
|
||||
property real switchIndicatorPreferredWidth: 20
|
||||
|
||||
|
||||
// Modal Popup
|
||||
property real modalPopupRadius: 20
|
||||
property real photoPopupRadius: 5
|
||||
@ -485,8 +500,8 @@ Item {
|
||||
property real filesToSendDelegateHeight: 100
|
||||
property real filesToSendDelegateRadius: 7
|
||||
property real filesToSendDelegateButtonSize: 16
|
||||
property real filesToSendDelegateFontPointSize: calcSize(9 + fontSizeOffset)
|
||||
property real layoutWidthFileTransfer: 80
|
||||
property real filesToSendDelegateFontPointSize: calcSize(10 + fontSizeOffset)
|
||||
property real layoutWidthFileTransfer: 56
|
||||
|
||||
// SBSMessageBase
|
||||
property int sbsMessageBasePreferredPadding: 12
|
||||
@ -542,7 +557,6 @@ Item {
|
||||
property real wizardViewBlocMarginSize: pixelToPoint(40)
|
||||
property real wizardViewDescriptionMarginSize: pixelToPoint(20)
|
||||
|
||||
|
||||
// WizardView Welcome Page
|
||||
property real welcomeLabelPointSize: 30
|
||||
property var welcomeLogo: darkTheme ? JamiResources.logo_jami_standard_coul_white_svg : JamiResources.logo_jami_standard_coul_svg
|
||||
|
||||
@ -33,11 +33,11 @@ ContactAdapter::ContactAdapter(LRCInstance* instance, QObject* parent)
|
||||
|
||||
selectableProxyModel_.reset(new SelectableProxyModel(this));
|
||||
if (lrcInstance_) {
|
||||
connectSignals();
|
||||
connect(lrcInstance_,
|
||||
&LRCInstance::currentAccountIdChanged,
|
||||
this,
|
||||
&ContactAdapter::connectSignals);
|
||||
connectSignals();
|
||||
}
|
||||
}
|
||||
|
||||
@ -261,8 +261,7 @@ ContactAdapter::updateConnectionInfo()
|
||||
void
|
||||
ContactAdapter::connectSignals()
|
||||
{
|
||||
if (!lrcInstance_->getCurrentContactModel()) {
|
||||
qWarning() << Q_FUNC_INFO << "No contact model";
|
||||
if (lrcInstance_->get_currentAccountId().isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -58,7 +58,7 @@ ConversationListModel::ConversationListModel(LRCInstance* instance, QObject* par
|
||||
connect(model_, &ConversationModel::dataChanged, this, [this](int position) {
|
||||
const auto index = createIndex(position, 0);
|
||||
Q_EMIT ConversationListModel::dataChanged(index, index);
|
||||
});
|
||||
}, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
@ -90,6 +90,9 @@ CurrentAccount::get_isLocalModeratorsEnabled()
|
||||
void
|
||||
CurrentAccount::setupForAccount()
|
||||
{
|
||||
if (lrcInstance_->get_currentAccountId().isEmpty())
|
||||
return;
|
||||
|
||||
connect(lrcInstance_->getCurrentContactModel(),
|
||||
&ContactModel::bannedStatusChanged,
|
||||
this,
|
||||
|
||||
@ -20,7 +20,6 @@
|
||||
|
||||
#include "mainapplication.h"
|
||||
#include "instancemanager.h"
|
||||
#include "utils.h"
|
||||
#include "version.h"
|
||||
|
||||
#include <QCryptographicHash>
|
||||
@ -41,38 +40,11 @@
|
||||
|
||||
#ifndef ENABLE_TESTS
|
||||
|
||||
static char**
|
||||
parseInputArgument(int& argc, char* argv[], QList<char*> argsToParse)
|
||||
{
|
||||
/*
|
||||
* Forcefully append argsToParse.
|
||||
*/
|
||||
int oldArgc = argc;
|
||||
argc += argsToParse.size();
|
||||
auto newArgv = new char*[argc];
|
||||
for (int i = 0; i < oldArgc; i++) {
|
||||
newArgv[i] = argv[i];
|
||||
}
|
||||
|
||||
for (int i = oldArgc; i < argc; i++) {
|
||||
newArgv[i] = argsToParse.at(i - oldArgc);
|
||||
}
|
||||
return newArgv;
|
||||
}
|
||||
|
||||
#ifdef WITH_WEBENGINE
|
||||
// Qt WebEngine Chromium Flags
|
||||
static char disableWebSecurity[] {"--disable-web-security"};
|
||||
static char singleProcess[] {"--single-process"};
|
||||
#endif
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
setlocale(LC_ALL, "en_US.utf8");
|
||||
|
||||
QList<char*> qtWebEngineChromiumFlags;
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
if (!getenv("QT_QPA_PLATFORMTHEME")) {
|
||||
auto xdgEnv = qgetenv("XDG_CURRENT_DESKTOP");
|
||||
@ -82,6 +54,14 @@ main(int argc, char* argv[])
|
||||
}
|
||||
setenv("QML_DISABLE_DISK_CACHE", "1", true);
|
||||
|
||||
/*
|
||||
* Not quite sure why the GTK theme is not applied on Wayland when
|
||||
* using the wayland platform plugin, but we can force XCB to make
|
||||
* sure it works when X11 is available, otherwise fallback to Wayland.
|
||||
* Could be related to: https://bugreports.qt.io/browse/QTBUG-99684.
|
||||
*/
|
||||
setenv("QT_QPA_PLATFORM", "xcb:wayland", true);
|
||||
|
||||
/*
|
||||
* Some GNU/Linux distros, like Zorin OS, set QT_STYLE_OVERRIDE
|
||||
* to force a particular Qt style. This has been fine with Qt5
|
||||
@ -94,10 +74,6 @@ main(int argc, char* argv[])
|
||||
*/
|
||||
unsetenv("QT_STYLE_OVERRIDE");
|
||||
#endif
|
||||
#ifdef WITH_WEBENGINE
|
||||
qtWebEngineChromiumFlags << disableWebSecurity;
|
||||
qtWebEngineChromiumFlags << singleProcess;
|
||||
#endif
|
||||
|
||||
QApplication::setApplicationName(QStringLiteral("Jami"));
|
||||
QApplication::setOrganizationDomain(QStringLiteral("jami.net"));
|
||||
@ -107,9 +83,15 @@ main(int argc, char* argv[])
|
||||
QApplication::setHighDpiScaleFactorRoundingPolicy(
|
||||
Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
||||
|
||||
auto newArgv = parseInputArgument(argc, argv, qtWebEngineChromiumFlags);
|
||||
#ifdef WITH_WEBENGINE
|
||||
qputenv("QTWEBENGINE_CHROMIUM_FLAGS",
|
||||
"--disable-web-security"
|
||||
" --single-process");
|
||||
QtWebEngineQuick::initialize();
|
||||
#endif
|
||||
|
||||
MainApplication app(argc, argv);
|
||||
|
||||
MainApplication app(argc, newArgv);
|
||||
app.setDesktopFileName(QStringLiteral("jami"));
|
||||
#if defined(Q_OS_MACOS)
|
||||
if (macutils::isMetalSupported()) {
|
||||
|
||||
@ -135,10 +135,19 @@ MainApplication::init()
|
||||
settingsManager_ = new AppSettingsManager(this);
|
||||
systemTray_ = new SystemTray(settingsManager_, this);
|
||||
|
||||
// These should should be QueuedConnection to ensure that the
|
||||
// they are executed after the QML engine has been initialized,
|
||||
// and after the QSystemTrayIcon has been created and shown.
|
||||
QObject::connect(settingsManager_,
|
||||
&AppSettingsManager::retranslate,
|
||||
engine_.get(),
|
||||
&QQmlApplicationEngine::retranslate);
|
||||
&QQmlApplicationEngine::retranslate,
|
||||
Qt::QueuedConnection);
|
||||
QObject::connect(settingsManager_,
|
||||
&AppSettingsManager::retranslate,
|
||||
this,
|
||||
&MainApplication::initSystray,
|
||||
Qt::QueuedConnection);
|
||||
|
||||
setWindowIcon(QIcon(":/images/jami.ico"));
|
||||
|
||||
@ -191,6 +200,7 @@ MainApplication::init()
|
||||
auto startMinimizedSetting = settingsManager_->getValue(Settings::Key::StartMinimized).toBool();
|
||||
// The presence of start URI should override the startMinimized setting for this instance.
|
||||
set_startMinimized(startMinimizedSetting && runOptions_[Option::StartUri].isNull());
|
||||
|
||||
#ifdef WITH_WEBENGINE
|
||||
engine_.get()->rootContext()->setContextProperty("WITH_WEBENGINE", QVariant(true));
|
||||
#else
|
||||
@ -280,16 +290,6 @@ MainApplication::parseArguments()
|
||||
parser.addHelpOption();
|
||||
parser.addVersionOption();
|
||||
|
||||
// These options are potentially forced into the arg list.
|
||||
QCommandLineOption webSecurityDisableOption(QStringList() << "disable-web-security");
|
||||
parser.addOption(webSecurityDisableOption);
|
||||
|
||||
QCommandLineOption noSandboxOption(QStringList() << "no-sandbox");
|
||||
parser.addOption(noSandboxOption);
|
||||
|
||||
QCommandLineOption singleProcessOption(QStringList() << "single-process");
|
||||
parser.addOption(singleProcessOption);
|
||||
|
||||
QCommandLineOption webDebugOption(QStringList() << "remote-debugging-port",
|
||||
"Web debugging port.",
|
||||
"port");
|
||||
@ -368,7 +368,13 @@ MainApplication::initSystray()
|
||||
{
|
||||
systemTray_->setIcon(QIcon(":/images/jami.svg"));
|
||||
|
||||
QMenu* systrayMenu = new QMenu();
|
||||
QMenu* menu {nullptr};
|
||||
// If there was a previous menu, reuse it, otherwise create a new one.
|
||||
if ((menu = systemTray_->contextMenu())) {
|
||||
menu->clear();
|
||||
} else {
|
||||
menu = new QMenu;
|
||||
}
|
||||
|
||||
QString quitString;
|
||||
#ifdef Q_OS_WINDOWS
|
||||
@ -400,9 +406,10 @@ MainApplication::initSystray()
|
||||
}
|
||||
});
|
||||
|
||||
systrayMenu->addAction(restoreAction);
|
||||
systrayMenu->addAction(quitAction);
|
||||
systemTray_->setContextMenu(systrayMenu);
|
||||
menu->addAction(restoreAction);
|
||||
menu->addAction(quitAction);
|
||||
systemTray_->setContextMenu(menu);
|
||||
|
||||
systemTray_->show();
|
||||
}
|
||||
|
||||
|
||||
@ -32,6 +32,9 @@ ListSelectionView {
|
||||
splitViewStateKey: "Main"
|
||||
hasValidSelection: CurrentConversation.id !== ''
|
||||
|
||||
visible: false
|
||||
onPresented: visible = true
|
||||
|
||||
Connections {
|
||||
target: CurrentConversation
|
||||
function onReloadInteractions() {
|
||||
@ -75,7 +78,7 @@ ListSelectionView {
|
||||
anchors.fill: parent
|
||||
inCallView: parent == callStackView.chatViewContainer
|
||||
|
||||
property string currentConvId: CurrentConversation.id
|
||||
readonly property string currentConvId: CurrentConversation.id
|
||||
onCurrentConvIdChanged: {
|
||||
if (!CurrentConversation.hasCall) {
|
||||
Qt.callLater(focusChatView);
|
||||
@ -86,7 +89,7 @@ ListSelectionView {
|
||||
}
|
||||
|
||||
onDismiss: {
|
||||
if (parent == chatViewContainer) {
|
||||
if (!inCallView) {
|
||||
viewNode.dismiss();
|
||||
} else {
|
||||
callStackView.chatViewContainer.visible = false;
|
||||
@ -94,13 +97,14 @@ ListSelectionView {
|
||||
}
|
||||
}
|
||||
|
||||
// Handle visibility change for the in-call chat only.
|
||||
onVisibleChanged: {
|
||||
if (!inCallView)
|
||||
return;
|
||||
if (visible && !parent.showDetails) {
|
||||
focusChatView();
|
||||
} else {
|
||||
callStackView.contentView.forceActiveFocus();
|
||||
if (inCallView) {
|
||||
if (visible) {
|
||||
focusChatView();
|
||||
} else {
|
||||
callStackView.contentView.forceActiveFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,11 +27,19 @@ import "../../commoncomponents"
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
margins: JamiTheme.preferredMarginSize
|
||||
title: JamiStrings.aboutJami
|
||||
|
||||
button1.text: JamiStrings.contribute
|
||||
button2.text: JamiStrings.feedback
|
||||
|
||||
button1.onClicked: { Qt.openUrlExternally("https://jami.net/contribute/")}
|
||||
button2.onClicked: { Qt.openUrlExternally("mailto:jami@gnu.org")}
|
||||
|
||||
popupContent: JamiFlickable {
|
||||
id: aboutPopUpScrollView
|
||||
|
||||
width: aboutPopUpContentRectColumnLayout.implicitWidth
|
||||
height: JamiTheme.preferredDialogHeight
|
||||
height: Math.min(root.implicitHeight, aboutPopUpContentRectColumnLayout.implicitHeight)
|
||||
|
||||
contentHeight: aboutPopUpContentRectColumnLayout.implicitHeight
|
||||
|
||||
@ -39,84 +47,86 @@ BaseModalDialog {
|
||||
id: aboutPopUpContentRectColumnLayout
|
||||
anchors.centerIn: parent
|
||||
|
||||
ResponsiveImage {
|
||||
id: aboutPopUPJamiLogoImage
|
||||
|
||||
RowLayout{
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: JamiTheme.aboutLogoPreferredWidth
|
||||
Layout.preferredHeight: JamiTheme.aboutLogoPreferredHeight
|
||||
spacing: 10
|
||||
|
||||
source: JamiTheme.darkTheme ? JamiResources.logo_jami_standard_coul_white_svg : JamiResources.logo_jami_standard_coul_svg
|
||||
}
|
||||
ResponsiveImage {
|
||||
id: aboutPopUPJamiLogoImage
|
||||
|
||||
TextEdit {
|
||||
id: jamiSlogansText
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.margins: 10
|
||||
Layout.preferredWidth: 150
|
||||
Layout.preferredHeight: 50
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize
|
||||
Layout.topMargin: 26
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
font.pixelSize: JamiTheme.bigFontSize
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
text: textMetricsjamiSlogansText.text
|
||||
selectByMouse: true
|
||||
readOnly: true
|
||||
color: JamiTheme.tintedBlue
|
||||
|
||||
TextMetrics {
|
||||
id: textMetricsjamiSlogansText
|
||||
font: jamiSlogansText.font
|
||||
text: JamiStrings.slogan
|
||||
source: JamiTheme.darkTheme ? JamiResources.logo_jami_standard_coul_white_svg : JamiResources.logo_jami_standard_coul_svg
|
||||
}
|
||||
}
|
||||
|
||||
TextEdit {
|
||||
id: jamiVersionText
|
||||
Rectangle {
|
||||
color: JamiTheme.backgroundRectangleColor
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
radius: 5
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize
|
||||
ColumnLayout {
|
||||
id: sloganLayout
|
||||
|
||||
font.pixelSize: JamiTheme.tinyCreditsTextSize
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
padding: 0
|
||||
TextEdit {
|
||||
id: jamiSlogansText
|
||||
|
||||
text: JamiStrings.version + ": " + UtilsAdapter.getVersionStr()
|
||||
selectByMouse: true
|
||||
readOnly: true
|
||||
color: JamiTheme.textColor
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
Layout.margins: 10
|
||||
Layout.bottomMargin: 0
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
wrapMode: Text.WordWrap
|
||||
font.pixelSize: JamiTheme.menuFontSize
|
||||
font.bold: true
|
||||
|
||||
TextEdit {
|
||||
id: jamiDeclarationText
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize
|
||||
Layout.topMargin: 15
|
||||
text: textMetricsjamiSlogansText.text
|
||||
selectByMouse: true
|
||||
readOnly: true
|
||||
color: JamiTheme.textColor
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
font.pixelSize: JamiTheme.creditsTextSize
|
||||
color: JamiTheme.textColor
|
||||
TextMetrics {
|
||||
id: textMetricsjamiSlogansText
|
||||
font: jamiSlogansText.font
|
||||
text: JamiStrings.slogan
|
||||
}
|
||||
}
|
||||
TextEdit {
|
||||
id: jamiVersionText
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
Layout.margins: 10
|
||||
Layout.topMargin: 0
|
||||
Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize
|
||||
|
||||
// TextMetrics does not work for multi-line.
|
||||
text: JamiStrings.declaration
|
||||
selectByMouse: true
|
||||
readOnly: true
|
||||
font.pixelSize: JamiTheme.textFontSize
|
||||
padding: 0
|
||||
text: JamiStrings.version + ": " + UtilsAdapter.getVersionStr()
|
||||
|
||||
selectByMouse: true
|
||||
readOnly: true
|
||||
|
||||
color: JamiTheme.faddedFontColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TextEdit {
|
||||
id: jamiDeclarationHyperText
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
Layout.fillWidth: true
|
||||
|
||||
// Strangely, hoveredLink works badly when width grows too large
|
||||
Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize
|
||||
@ -124,12 +134,12 @@ BaseModalDialog {
|
||||
|
||||
color: JamiTheme.textColor
|
||||
|
||||
font.pixelSize: JamiTheme.creditsTextSize
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
font.pixelSize: JamiTheme.menuFontSize
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
text: textMetricsjamiDeclarationHyperText.text
|
||||
textFormat: TextEdit.RichText
|
||||
wrapMode: TextEdit.WordWrap
|
||||
selectByMouse: true
|
||||
readOnly: true
|
||||
onLinkActivated: Qt.openUrlExternally(link)
|
||||
@ -137,7 +147,7 @@ BaseModalDialog {
|
||||
TextMetrics {
|
||||
id: textMetricsjamiDeclarationHyperText
|
||||
font: jamiDeclarationHyperText.font
|
||||
text: '<a href="https://jami.net" style="color: ' + JamiTheme.blueLinkColor + '">jami.net</a>'
|
||||
text: JamiStrings.declaration
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
@ -152,13 +162,12 @@ BaseModalDialog {
|
||||
TextEdit {
|
||||
id: jamiNoneWarrantyHyperText
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize
|
||||
Layout.topMargin: 15
|
||||
wrapMode: Text.WordWrap
|
||||
font.pixelSize: JamiTheme.tinyCreditsTextSize
|
||||
font.pixelSize: JamiTheme.menuFontSize
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignTop
|
||||
color: JamiTheme.textColor
|
||||
|
||||
@ -171,7 +180,7 @@ BaseModalDialog {
|
||||
TextMetrics {
|
||||
id: textMetricsjamiNoneWarrantyHyperText
|
||||
font: jamiDeclarationHyperText.font
|
||||
text: JamiStrings.declarationYear + " " + '<a href="https://savoirfairelinux.com" style="color: ' + JamiTheme.blueLinkColor + '">Savoir-faire Linux Inc.</a><br>' + 'This program comes with absolutely no warranty. See the <a href="http://www.gnu.org/licenses/gpl-3.0.html" style="color: ' + JamiTheme.blueLinkColor + '">GNU General Public License</a>, version 3 or later for details.'
|
||||
text: JamiStrings.noWarranty
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
@ -181,14 +190,56 @@ BaseModalDialog {
|
||||
}
|
||||
}
|
||||
|
||||
ProjectCreditsScrollView {
|
||||
id: projectCreditsScrollView
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
TextEdit {
|
||||
id: jamiYears
|
||||
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize
|
||||
Layout.preferredHeight: 100
|
||||
Layout.topMargin: 25
|
||||
Layout.margins: JamiTheme.preferredMarginSize
|
||||
Layout.topMargin: 15
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
font.pixelSize: JamiTheme.menuFontSize
|
||||
verticalAlignment: Text.AlignTop
|
||||
|
||||
color: JamiTheme.textColor
|
||||
|
||||
text: textMetricsYears.text
|
||||
textFormat: TextEdit.RichText
|
||||
selectByMouse: true
|
||||
readOnly: true
|
||||
|
||||
onLinkActivated: Qt.openUrlExternally(link)
|
||||
|
||||
TextMetrics {
|
||||
id: textMetricsYears
|
||||
font: jamiDeclarationHyperText.font
|
||||
text: JamiStrings.declarationYear + " " + '<a href="https://savoirfairelinux.com" style="color: ' + JamiTheme.buttonTintedBlue + '">Savoir-faire Linux</a><br>'
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.NoButton
|
||||
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: projectCreditsScrollView.width + 20
|
||||
height: projectCreditsScrollView.height + 20
|
||||
|
||||
color: JamiTheme.backgroundRectangleColor
|
||||
radius: 5
|
||||
|
||||
ProjectCreditsScrollView {
|
||||
id: projectCreditsScrollView
|
||||
|
||||
anchors.centerIn: parent
|
||||
width: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize
|
||||
height: 140
|
||||
anchors.margins: 10
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,99 +64,100 @@ Label {
|
||||
id: background
|
||||
anchors.fill: parent
|
||||
|
||||
color: root.popup.opened ? Qt.lighter(JamiTheme.hoverColor, 1.0) : mouseArea.containsMouse ? Qt.lighter(JamiTheme.hoverColor, 1.05) : JamiTheme.backgroundColor
|
||||
color: JamiTheme.backgroundColor
|
||||
Behavior on color {
|
||||
ColorAnimation {
|
||||
duration: JamiTheme.shortFadeDuration
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: this can be removed when frameless window is implemented
|
||||
Rectangle {
|
||||
height: 1
|
||||
anchors {
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
color: JamiTheme.tabbarBorderColor
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
enabled: visible
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onClicked: {
|
||||
root.forceActiveFocus();
|
||||
togglePopup();
|
||||
}
|
||||
}
|
||||
|
||||
AccountComboBoxPopup {
|
||||
id: comboBoxPopup
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+J"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: togglePopup()
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: mainLayout
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: 15
|
||||
anchors.leftMargin: 5
|
||||
anchors.rightMargin: 15
|
||||
spacing: 10
|
||||
|
||||
Avatar {
|
||||
id: avatar
|
||||
|
||||
Layout.preferredWidth: JamiTheme.accountListAvatarSize
|
||||
Layout.preferredHeight: JamiTheme.accountListAvatarSize
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
|
||||
mode: Avatar.Mode.Account
|
||||
imageId: CurrentAccount.id
|
||||
presenceStatus: CurrentAccount.status
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
spacing: 2
|
||||
color: root.popup.opened ? Qt.lighter(JamiTheme.hoverColor, 1.0) : mouseArea.containsMouse ? Qt.lighter(JamiTheme.hoverColor, 1.0) : JamiTheme.backgroundColor
|
||||
radius: 5
|
||||
Layout.topMargin: 5
|
||||
|
||||
Text {
|
||||
id: bestNameText
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
|
||||
text: CurrentAccount.bestName
|
||||
textFormat: TextEdit.PlainText
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
color: JamiTheme.textColor
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
enabled: visible
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onClicked: {
|
||||
root.forceActiveFocus();
|
||||
togglePopup();
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: bestIdText
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: 10
|
||||
anchors.rightMargin: 15
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
spacing: 10
|
||||
|
||||
visible: text.length && text !== bestNameText.text
|
||||
|
||||
text: CurrentAccount.bestId
|
||||
textFormat: TextEdit.PlainText
|
||||
Avatar {
|
||||
id: avatar
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
color: JamiTheme.faddedLastInteractionFontColor
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
Layout.preferredWidth: JamiTheme.accountListAvatarSize
|
||||
Layout.preferredHeight: JamiTheme.accountListAvatarSize
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
|
||||
mode: Avatar.Mode.Account
|
||||
imageId: CurrentAccount.id
|
||||
presenceStatus: CurrentAccount.status
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
spacing: 2
|
||||
|
||||
Text {
|
||||
id: bestNameText
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
|
||||
text: CurrentAccount.bestName
|
||||
textFormat: TextEdit.PlainText
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
color: JamiTheme.textColor
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
|
||||
Text {
|
||||
id: bestIdText
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
|
||||
visible: text.length && text !== bestNameText.text
|
||||
|
||||
text: CurrentAccount.bestId
|
||||
textFormat: TextEdit.PlainText
|
||||
|
||||
font.pointSize: JamiTheme.tinyFontSize
|
||||
color: JamiTheme.faddedLastInteractionFontColor
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -168,19 +169,6 @@ Label {
|
||||
Layout.preferredWidth: childrenRect.width
|
||||
Layout.preferredHeight: parent.height
|
||||
|
||||
ResponsiveImage {
|
||||
id: arrowDropDown
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
width: 24
|
||||
height: 24
|
||||
|
||||
color: JamiTheme.textColor
|
||||
|
||||
source: !root.popup.opened ? JamiResources.expand_more_24dp_svg : JamiResources.expand_less_24dp_svg
|
||||
}
|
||||
|
||||
JamiPushButton {
|
||||
id: shareButton
|
||||
|
||||
@ -194,7 +182,7 @@ Label {
|
||||
source: JamiResources.share_24dp_svg
|
||||
|
||||
normalColor: JamiTheme.backgroundColor
|
||||
imageColor: JamiTheme.textColor
|
||||
imageColor: hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
|
||||
onClicked: viewCoordinator.presentDialog(appWindow, "mainview/components/WelcomePageQrDialog.qml")
|
||||
}
|
||||
@ -205,8 +193,10 @@ Label {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
source: !inSettings ? JamiResources.settings_24dp_svg : JamiResources.round_close_24dp_svg
|
||||
|
||||
imageContainerWidth: inSettings ? 30 : 24
|
||||
|
||||
normalColor: JamiTheme.backgroundColor
|
||||
imageColor: JamiTheme.textColor
|
||||
imageColor: hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
toolTipText: !inSettings ? JamiStrings.openSettings : JamiStrings.closeSettings
|
||||
|
||||
onClicked: {
|
||||
|
||||
@ -23,16 +23,19 @@ import SortFilterProxyModel 0.2
|
||||
import net.jami.Models 1.1
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
import net.jami.Enums 1.1
|
||||
import "../../commoncomponents"
|
||||
|
||||
Popup {
|
||||
id: root
|
||||
|
||||
y: parent.height
|
||||
implicitWidth: parent.width
|
||||
implicitWidth: parent.width - 10
|
||||
leftMargin: 5
|
||||
topMargin: 5
|
||||
|
||||
// limit the number of accounts shown at once
|
||||
implicitHeight: {
|
||||
return visible ? Math.min(JamiTheme.accountListItemHeight * Math.min(5, listView.model.count + 1), appWindow.height - parent.height) : 0;
|
||||
return visible ? Math.min(JamiTheme.accountListItemHeight * Math.min(6, listView.model.count + 1) + 96, appWindow.height - parent.height) : 0;
|
||||
}
|
||||
padding: 0
|
||||
modal: true
|
||||
@ -45,6 +48,178 @@ Popup {
|
||||
|
||||
contentItem: ColumnLayout {
|
||||
spacing: 0
|
||||
anchors.leftMargin: 20
|
||||
|
||||
Rectangle {
|
||||
id: comboBox
|
||||
|
||||
height: JamiTheme.accountListItemHeight - 5
|
||||
Layout.fillWidth: true
|
||||
radius: 5
|
||||
color: JamiTheme.accountComboBoxBackgroundColor
|
||||
|
||||
property bool inSettings: viewCoordinator.currentViewName === "SettingsView"
|
||||
|
||||
// TODO: remove these refresh hacks use QAbstractItemModels correctly
|
||||
Connections {
|
||||
target: AccountAdapter
|
||||
|
||||
function onAccountStatusChanged(accountId) {
|
||||
AccountListModel.reset();
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: LRCInstance
|
||||
|
||||
function onAccountListChanged() {
|
||||
AccountListModel.reset();
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: mainLayout
|
||||
anchors.fill: parent
|
||||
spacing: 10
|
||||
|
||||
Rectangle {
|
||||
id: accountInfoRect
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: mouseArea.containsMouse ? JamiTheme.hoverColor : JamiTheme.accountComboBoxBackgroundColor
|
||||
radius: 5
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onClicked: root.close()
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: 10
|
||||
anchors.rightMargin: 15
|
||||
spacing: 10
|
||||
|
||||
|
||||
Avatar {
|
||||
id: avatar
|
||||
|
||||
Layout.preferredWidth: JamiTheme.accountListAvatarSize
|
||||
Layout.preferredHeight: JamiTheme.accountListAvatarSize
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
|
||||
mode: Avatar.Mode.Account
|
||||
imageId: CurrentAccount.id
|
||||
presenceStatus: CurrentAccount.status
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
spacing: 2
|
||||
|
||||
Text {
|
||||
id: bestNameText
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
|
||||
text: CurrentAccount.bestName
|
||||
textFormat: TextEdit.PlainText
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
color: JamiTheme.textColor
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
|
||||
Text {
|
||||
id: bestIdText
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
|
||||
visible: text.length && text !== bestNameText.text
|
||||
|
||||
text: CurrentAccount.bestId
|
||||
textFormat: TextEdit.PlainText
|
||||
|
||||
font.pointSize: JamiTheme.tinyFontSize
|
||||
color: JamiTheme.faddedLastInteractionFontColor
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Row {
|
||||
id: controlRow
|
||||
|
||||
spacing: 10
|
||||
|
||||
Layout.preferredWidth: childrenRect.width
|
||||
Layout.preferredHeight: parent.height
|
||||
Layout.rightMargin: 10
|
||||
Layout.topMargin: -7
|
||||
|
||||
JamiPushButton {
|
||||
id: shareButton
|
||||
|
||||
width: visible ? preferredSize : 0
|
||||
height: visible ? preferredSize : 0
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
visible: LRCInstance.currentAccountType === Profile.Type.JAMI
|
||||
toolTipText: JamiStrings.displayQRCode
|
||||
|
||||
source: JamiResources.share_24dp_svg
|
||||
|
||||
normalColor: JamiTheme.accountComboBoxBackgroundColor
|
||||
imageColor: hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
hoveredColor: JamiTheme.hoverColor
|
||||
|
||||
onClicked: {
|
||||
viewCoordinator.presentDialog(appWindow, "mainview/components/WelcomePageQrDialog.qml");
|
||||
root.close();
|
||||
}
|
||||
}
|
||||
|
||||
JamiPushButton {
|
||||
id: settingsButton
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
source: !inSettings ? JamiResources.settings_24dp_svg : JamiResources.round_close_24dp_svg
|
||||
|
||||
imageContainerWidth: inSettings ? 30 : 24
|
||||
|
||||
normalColor: JamiTheme.accountComboBoxBackgroundColor
|
||||
imageColor: hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
hoveredColor: JamiTheme.hoverColor
|
||||
|
||||
toolTipText: !inSettings ? JamiStrings.openSettings : JamiStrings.closeSettings
|
||||
|
||||
onClicked: {
|
||||
!inSettings ? viewCoordinator.present("SettingsView") : viewCoordinator.dismiss("SettingsView");
|
||||
root.close();
|
||||
}
|
||||
|
||||
KeyNavigation.tab: addAccountItem
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle{
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
height: 1
|
||||
Layout.fillWidth: true
|
||||
Layout.leftMargin: 15
|
||||
Layout.rightMargin: 15
|
||||
color: JamiTheme.smartListHoveredColor
|
||||
}
|
||||
|
||||
|
||||
JamiListView {
|
||||
id: listView
|
||||
@ -60,6 +235,7 @@ Popup {
|
||||
inverted: true
|
||||
}
|
||||
}
|
||||
|
||||
delegate: AccountItemDelegate {
|
||||
height: JamiTheme.accountListItemHeight
|
||||
width: root.width
|
||||
@ -70,45 +246,125 @@ Popup {
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle{
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
height: 1
|
||||
Layout.fillWidth: true
|
||||
Layout.leftMargin: 15
|
||||
Layout.rightMargin: 15
|
||||
color: JamiTheme.smartListHoveredColor
|
||||
}
|
||||
|
||||
// fake footer item as workaround for Qt 5.15 bug
|
||||
// https://bugreports.qt.io/browse/QTBUG-85302
|
||||
// don't use the clip trick and footer item overlay
|
||||
// explained here https://stackoverflow.com/a/64625149
|
||||
// as it causes other complexities in handling the drop shadow
|
||||
ItemDelegate {
|
||||
id: footerItem
|
||||
id: addAccountItem
|
||||
|
||||
Layout.preferredHeight: JamiTheme.accountListItemHeight
|
||||
Layout.preferredWidth: parent.width
|
||||
Layout.preferredHeight: 45
|
||||
Layout.preferredWidth: parent.width -10
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
Layout.leftMargin: 5
|
||||
|
||||
Accessible.name: JamiStrings.addAccount
|
||||
Accessible.role: Accessible.Button
|
||||
|
||||
background: Rectangle {
|
||||
color: footerItem.hovered ? JamiTheme.hoverColor : JamiTheme.backgroundColor
|
||||
color: addAccountItem.hovered ? JamiTheme.hoverColor : JamiTheme.accountComboBoxBackgroundColor
|
||||
radius: 5
|
||||
}
|
||||
|
||||
RowLayout{
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 18
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: 18
|
||||
|
||||
ResponsiveImage {
|
||||
id: addImage
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
source: JamiResources.person_add_24dp_svg
|
||||
color: addAccountItem.hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.centerIn: parent
|
||||
text: JamiStrings.addAccount + "+"
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
text: JamiStrings.addAccount
|
||||
textFormat: TextEdit.PlainText
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
root.close();
|
||||
viewCoordinator.present("WizardView");
|
||||
}
|
||||
|
||||
KeyNavigation.tab: manageAccountItem
|
||||
}
|
||||
|
||||
ItemDelegate {
|
||||
id: manageAccountItem
|
||||
|
||||
Accessible.role: Accessible.Button
|
||||
Accessible.name: JamiStrings.manageAccount
|
||||
|
||||
Layout.preferredHeight: 45
|
||||
Layout.preferredWidth: parent.width-10
|
||||
Layout.leftMargin: 5
|
||||
Layout.bottomMargin: 5
|
||||
|
||||
background: Rectangle {
|
||||
color: manageAccountItem.hovered ? JamiTheme.hoverColor : JamiTheme.accountComboBoxBackgroundColor
|
||||
radius: 5
|
||||
}
|
||||
|
||||
RowLayout{
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 18
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: 18
|
||||
|
||||
ResponsiveImage {
|
||||
id: manageImage
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
source: JamiResources.manage_accounts_24dp_svg
|
||||
color: manageAccountItem.hovered ? JamiTheme.textColor : JamiTheme.buttonTintedGreyHovered
|
||||
}
|
||||
Text {
|
||||
text: JamiStrings.manageAccount
|
||||
|
||||
textFormat: TextEdit.PlainText
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
}
|
||||
}
|
||||
onClicked: {
|
||||
root.close();
|
||||
viewCoordinator.present("SettingsView")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
color: JamiTheme.backgroundColor
|
||||
CustomBorder {
|
||||
commonBorder: false
|
||||
tBorderwidth: 1
|
||||
lBorderwidth: 2
|
||||
bBorderwidth: 2
|
||||
rBorderwidth: 1
|
||||
borderColor: JamiTheme.tabbarBorderColor
|
||||
id: bgRect
|
||||
color: JamiTheme.accountComboBoxBackgroundColor
|
||||
radius: 5
|
||||
|
||||
layer {
|
||||
enabled: true
|
||||
effect: DropShadow {
|
||||
horizontalOffset: 3.0
|
||||
verticalOffset: 3.0
|
||||
radius: bgRect.radius * 4
|
||||
color: JamiTheme.shadowColor
|
||||
source: bgRect
|
||||
transparentBorder: true
|
||||
samples: radius + 1
|
||||
}
|
||||
}
|
||||
|
||||
layer {
|
||||
@ -116,7 +372,7 @@ Popup {
|
||||
effect: DropShadow {
|
||||
horizontalOffset: 3.0
|
||||
verticalOffset: 3.0
|
||||
radius: 16.0
|
||||
radius: 6
|
||||
color: JamiTheme.shadowColor
|
||||
transparentBorder: true
|
||||
samples: radius + 1
|
||||
|
||||
@ -30,13 +30,28 @@ ItemDelegate {
|
||||
height: JamiTheme.accountListItemHeight
|
||||
|
||||
background: Rectangle {
|
||||
width: root.width - 10
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
radius: 5
|
||||
|
||||
Rectangle{
|
||||
id: separationLine
|
||||
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.top: parent.top
|
||||
height: 1
|
||||
width: parent.width - 20
|
||||
color: JamiTheme.hoverColor
|
||||
|
||||
}
|
||||
|
||||
color: {
|
||||
if (root.pressed)
|
||||
return JamiTheme.smartListSelectedColor;
|
||||
else if (root.hovered)
|
||||
return JamiTheme.smartListHoveredColor;
|
||||
return JamiTheme.hoverColor;
|
||||
else
|
||||
return JamiTheme.backgroundColor;
|
||||
return JamiTheme.accountComboBoxBackgroundColor;
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,7 +99,7 @@ ItemDelegate {
|
||||
text: Username
|
||||
textFormat: TextEdit.PlainText
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.pointSize: JamiTheme.tinyFontSize
|
||||
color: JamiTheme.faddedLastInteractionFontColor
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
|
||||
@ -456,11 +456,9 @@ Control {
|
||||
CallOverlayModel.addSecondaryControl(audioOutputAction, audioOutputAction.enabled);
|
||||
CallOverlayModel.addSecondaryControl(raiseHandAction, raiseHandAction.enabled);
|
||||
CallOverlayModel.addSecondaryControl(addPersonAction, addPersonAction.enabled);
|
||||
|
||||
CallOverlayModel.addSecondaryControl(resumePauseCallAction, resumePauseCallAction.enabled);
|
||||
CallOverlayModel.addSecondaryControl(inputPanelSIPAction, inputPanelSIPAction.enabled);
|
||||
CallOverlayModel.addSecondaryControl(callTransferAction, callTransferAction.enabled);
|
||||
|
||||
CallOverlayModel.addSecondaryControl(chatAction, chatAction.enabled);
|
||||
CallOverlayModel.addSecondaryControl(shareAction, shareAction.enabled);
|
||||
CallOverlayModel.addSecondaryControl(layoutAction, layoutAction.enabled);
|
||||
@ -486,7 +484,7 @@ Control {
|
||||
|
||||
orientation: ListView.Horizontal
|
||||
implicitWidth: contentWidth
|
||||
implicitHeight: contentHeight
|
||||
height: root.height
|
||||
interactive: false
|
||||
|
||||
model: SortFilterProxyModel {
|
||||
@ -508,6 +506,9 @@ Control {
|
||||
width: childrenRect.width
|
||||
height: root.height
|
||||
|
||||
//put in top
|
||||
z: 1
|
||||
|
||||
RowLayout {
|
||||
spacing: itemSpacing
|
||||
|
||||
@ -579,7 +580,7 @@ Control {
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on color {
|
||||
Behavior on color {
|
||||
ColorAnimation {
|
||||
duration: JamiTheme.shortFadeDuration
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@ import net.jami.Models 1.1
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
import net.jami.Enums 1.1
|
||||
|
||||
import "../../commoncomponents"
|
||||
import "../js/pluginhandlerpickercreation.js" as PluginHandlerPickerCreation
|
||||
|
||||
@ -28,7 +29,7 @@ Rectangle {
|
||||
id: root
|
||||
|
||||
// An enum to make the details panels more readable.
|
||||
enum Panel {
|
||||
enum ExtrasPanel {
|
||||
SwarmDetailsPanel,
|
||||
MessagesResearchPanel,
|
||||
AddMemberPanel
|
||||
@ -40,6 +41,18 @@ Rectangle {
|
||||
|
||||
required property bool inCallView
|
||||
|
||||
// Hide the extrasPanel when going into a call view, but save the previous
|
||||
// state to restore it when leaving the call view.
|
||||
property int chatExtrasPanelIndex: extrasPanel.currentIndex
|
||||
onInCallViewChanged: {
|
||||
if (inCallView) {
|
||||
chatExtrasPanelIndex = extrasPanel.currentIndex;
|
||||
extrasPanel.closePanel();
|
||||
} else if (chatExtrasPanelIndex >= 0) {
|
||||
extrasPanel.openPanel(chatExtrasPanelIndex);
|
||||
}
|
||||
}
|
||||
|
||||
signal dismiss
|
||||
|
||||
function focusChatView() {
|
||||
@ -61,6 +74,16 @@ Rectangle {
|
||||
}
|
||||
}
|
||||
|
||||
// Used externally to switch to a extras panel.
|
||||
function switchToPanel(panel, toggle = true) {
|
||||
extrasPanel.switchToPanel(panel, toggle);
|
||||
}
|
||||
|
||||
// Used externally to close the extras panel.
|
||||
function closePanel() {
|
||||
extrasPanel.closePanel();
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: PositionManager
|
||||
function onOpenNewMap() {
|
||||
@ -71,23 +94,13 @@ Rectangle {
|
||||
Connections {
|
||||
target: CurrentConversation
|
||||
function onIdChanged() {
|
||||
extrasPanel.restoreState();
|
||||
MessagesAdapter.loadMoreMessages();
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: extrasPanel.restoreState()
|
||||
|
||||
onVisibleChanged: {
|
||||
if (visible) {
|
||||
chatViewSplitView.resolvePanes(true);
|
||||
if (root.parent.objectName === "CallViewChatViewContainer") {
|
||||
if (root.parent.showDetails) {
|
||||
extrasPanel.switchToPanel(ChatView.SwarmDetailsPanel);
|
||||
} else {
|
||||
extrasPanel.closePanel();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -99,9 +112,6 @@ Rectangle {
|
||||
ChatViewHeader {
|
||||
id: chatViewHeader
|
||||
|
||||
addParticipantOpened: extrasPanel.currentIndex === ChatView.AddMemberPanel
|
||||
swarmDetailsOpened: extrasPanel.currentIndex === ChatView.SwarmDetailsPanel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: JamiTheme.chatViewHeaderPreferredHeight
|
||||
@ -114,9 +124,6 @@ Rectangle {
|
||||
}
|
||||
|
||||
onBackClicked: root.dismiss()
|
||||
onShowDetailsClicked: extrasPanel.switchToPanel(ChatView.SwarmDetailsPanel)
|
||||
onSearchClicked: extrasPanel.switchToPanel(ChatView.MessagesResearchPanel)
|
||||
onAddToConversationClicked: extrasPanel.switchToPanel(ChatView.AddMemberPanel)
|
||||
|
||||
Connections {
|
||||
target: CurrentConversation
|
||||
@ -190,47 +197,69 @@ Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
splitViewStateKey: "Chat"
|
||||
|
||||
property real previousDetailsWidth: extrasPanel.width
|
||||
property real previousWidth: width
|
||||
onWidthChanged: resolvePanes()
|
||||
// This function governs the visibility of the chatContents and tracks the
|
||||
// the width of the SplitView and the details panel. This function should be
|
||||
// called when the width of the SplitView changes, when the SplitView is shown,
|
||||
// and when the details panel is shown. When called with force=true, it is being
|
||||
// called from a visibleChanged event, and we should not update the previous widths.
|
||||
onWidthChanged: {
|
||||
resolvePanes();
|
||||
// Track the previous width of the split view.
|
||||
previousWidth = width;
|
||||
}
|
||||
|
||||
// Track the previous width of the split view.
|
||||
property real extrasPanelWidth: extrasPanel.width
|
||||
// The previousExtrasPanelWidth is initialized to the minimum width
|
||||
// of the extras panel. The value is updated within the "open"-state
|
||||
// range of the panel (e.g. not 0 or maximized).
|
||||
property real previousExtrasPanelWidth: JamiTheme.extrasPanelMinWidth
|
||||
onExtrasPanelWidthChanged: {
|
||||
resolvePanes();
|
||||
// This range should ensure that the panel won't restore to maximized.
|
||||
if (extrasPanelWidth != 0 && extrasPanelWidth != width) {
|
||||
console.debug("Saving previous extras panel width: %1".arg(extrasPanelWidth));
|
||||
previousExtrasPanelWidth = extrasPanelWidth;
|
||||
}
|
||||
}
|
||||
|
||||
// Respond to visibility changes for the extras panel in order to
|
||||
// determine the structure of the split view.
|
||||
property bool extrasPanelVisible: extrasPanel.visible
|
||||
onExtrasPanelVisibleChanged: {
|
||||
if (extrasPanelVisible) {
|
||||
extrasPanelWidth = previousExtrasPanelWidth;
|
||||
} else {
|
||||
previousExtrasPanelWidth = extrasPanelWidth;
|
||||
}
|
||||
resolvePanes();
|
||||
}
|
||||
|
||||
function resolvePanes(force = false) {
|
||||
if (!viewNode.visible) {
|
||||
return;
|
||||
}
|
||||
|
||||
// If the details panel is not visible, then show the chatContents.
|
||||
if (!extrasPanel.visible) {
|
||||
chatContents.visible = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Next we compute whether the SplitView is expanding or shrinking.
|
||||
const isExpanding = width > previousWidth;
|
||||
|
||||
// Provide a detailed log here, as this function seems problematic.
|
||||
console.debug("ChatViewSplitView.resolvePanes: f: %1 w: %2 pw: %3 epw: %4 pepw: %5 ie: %6"
|
||||
.arg(force).arg(width).arg(previousWidth)
|
||||
.arg(extrasPanelWidth).arg(previousExtrasPanelWidth).arg(isExpanding));
|
||||
|
||||
const maximizePredicate = (!isExpanding || force) && chatContents.visible;
|
||||
const minimizePredicate = (isExpanding || force) && !chatContents.visible;
|
||||
const mainViewMinWidth = JamiTheme.mainViewPaneMinWidth;
|
||||
|
||||
// If the SplitView is not wide enough to show both the chatContents
|
||||
// and the details panel, then hide the chatContents.
|
||||
if (width < JamiTheme.mainViewPaneMinWidth + extrasPanel.width && (!isExpanding || force) && chatContents.visible) {
|
||||
if (!force)
|
||||
previousDetailsWidth = extrasPanel.width;
|
||||
if (maximizePredicate && width < mainViewMinWidth + extrasPanelWidth) {
|
||||
chatContents.visible = false;
|
||||
} else if (width >= JamiTheme.mainViewPaneMinWidth + previousDetailsWidth && (isExpanding || force) && !chatContents.visible) {
|
||||
} else if (minimizePredicate && width >= mainViewMinWidth + previousExtrasPanelWidth) {
|
||||
chatContents.visible = true;
|
||||
}
|
||||
if (!force)
|
||||
previousWidth = width;
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: viewNode
|
||||
function onPresented() {
|
||||
chatViewSplitView.restoreSplitViewState();
|
||||
}
|
||||
function onDismissed() {
|
||||
chatViewSplitView.saveSplitViewState();
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
@ -315,19 +344,12 @@ Rectangle {
|
||||
}
|
||||
}
|
||||
|
||||
onResizingChanged: if (chatContents.visible)
|
||||
extrasPanel.previousWidth = extrasPanel.width
|
||||
|
||||
ConversationExtrasPanel {
|
||||
id: extrasPanel
|
||||
|
||||
property int previousWidth: JamiTheme.extrasPanelMinWidth
|
||||
|
||||
SplitView.maximumWidth: root.width
|
||||
SplitView.minimumWidth: JamiTheme.extrasPanelMinWidth
|
||||
SplitView.preferredWidth: JamiTheme.extrasPanelMinWidth
|
||||
|
||||
onVisibleChanged: chatViewSplitView.resolvePanes(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@ Rectangle {
|
||||
function setFilePathsToSend(filePaths) {
|
||||
for (var index = 0; index < filePaths.length; ++index) {
|
||||
var path = UtilsAdapter.getAbsPath(decodeURIComponent(filePaths[index]));
|
||||
dataTransferSendContainer.filesToSendListModel.addToPending(path);
|
||||
messageBar.fileContainer.filesToSendListModel.addToPending(path);
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ Rectangle {
|
||||
target: MessagesAdapter
|
||||
|
||||
function onNewFilePasted(filePath) {
|
||||
dataTransferSendContainer.filesToSendListModel.addToPending(filePath);
|
||||
messageBar.fileContainer.filesToSendListModel.addToPending(filePath);
|
||||
}
|
||||
|
||||
function onNewTextPasted() {
|
||||
@ -168,7 +168,7 @@ Rectangle {
|
||||
return -JamiTheme.emojiPickerHeight;
|
||||
}
|
||||
|
||||
sendButtonVisibility: text || dataTransferSendContainer.filesToSendCount
|
||||
sendButtonVisibility: text || messageBar.fileContainer.filesToSendCount
|
||||
|
||||
onEmojiButtonClicked: {
|
||||
if (emojiPicker != null && emojiPicker.opened) {
|
||||
@ -193,24 +193,26 @@ Rectangle {
|
||||
}
|
||||
|
||||
onVideoRecordMessageButtonClicked: {
|
||||
recordBox.y = -recordBox.height;
|
||||
recordBox.y = -recordBox.height - 200;
|
||||
recordBox.x = recordBox.width + 200
|
||||
recordBox.openRecorder(true);
|
||||
}
|
||||
|
||||
onAudioRecordMessageButtonClicked: {
|
||||
recordBox.y = -recordBox.height;
|
||||
recordBox.y = -recordBox.height - 150;
|
||||
recordBox.x = recordBox.width + 200;
|
||||
recordBox.openRecorder(false);
|
||||
}
|
||||
|
||||
onSendMessageButtonClicked: {
|
||||
// Send file messages
|
||||
var fileCounts = dataTransferSendContainer.filesToSendListModel.rowCount();
|
||||
var fileCounts = messageBar.fileContainer.filesToSendListModel.rowCount();
|
||||
for (var i = 0; i < fileCounts; i++) {
|
||||
var currentIndex = dataTransferSendContainer.filesToSendListModel.index(i, 0);
|
||||
var filePath = dataTransferSendContainer.filesToSendListModel.data(currentIndex, FilesToSend.FilePath);
|
||||
var currentIndex = messageBar.fileContainer.filesToSendListModel.index(i, 0);
|
||||
var filePath = messageBar.fileContainer.filesToSendListModel.data(currentIndex, FilesToSend.FilePath);
|
||||
MessagesAdapter.sendFile(filePath);
|
||||
}
|
||||
dataTransferSendContainer.filesToSendListModel.flush();
|
||||
messageBar.fileContainer.filesToSendListModel.flush();
|
||||
// Send text message
|
||||
if (messageBar.text) {
|
||||
if (MessagesAdapter.editId !== "") {
|
||||
@ -233,16 +235,5 @@ Rectangle {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FilesToSendContainer {
|
||||
id: dataTransferSendContainer
|
||||
|
||||
objectName: "dataTransferSendContainer"
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.fillWidth: true
|
||||
Layout.rightMargin: 10
|
||||
Layout.preferredHeight: filesToSendCount ? JamiTheme.filesToSendDelegateHeight : 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,16 +23,14 @@ import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
import net.jami.Enums 1.1
|
||||
import net.jami.Models 1.1
|
||||
|
||||
import "../../commoncomponents"
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
|
||||
signal backClicked
|
||||
signal addToConversationClicked
|
||||
signal pluginSelector
|
||||
signal showDetailsClicked
|
||||
signal searchClicked
|
||||
|
||||
Connections {
|
||||
target: CurrentConversation
|
||||
@ -44,7 +42,7 @@ Rectangle {
|
||||
description.eText = CurrentConversation.description;
|
||||
}
|
||||
function onShowSwarmDetails() {
|
||||
root.showDetailsClicked();
|
||||
extrasPanel.switchToPanel(ChatView.SwarmDetailsPanel);
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,11 +58,10 @@ Rectangle {
|
||||
return true;
|
||||
}
|
||||
|
||||
property bool addParticipantOpened: false
|
||||
property bool swarmDetailsOpened: false
|
||||
|
||||
property bool addMemberVisibility: {
|
||||
return swarmDetailsVisibility && !CurrentConversation.isCoreDialog && !CurrentConversation.isRequest;
|
||||
return swarmDetailsVisibility
|
||||
&& !CurrentConversation.isCoreDialog
|
||||
&& !CurrentConversation.isRequest;
|
||||
}
|
||||
|
||||
property bool swarmDetailsVisibility: {
|
||||
@ -171,9 +168,7 @@ Rectangle {
|
||||
MessagesAdapter.searchbarPrompt = text;
|
||||
}
|
||||
|
||||
onSearchClicked: {
|
||||
root.searchClicked();
|
||||
}
|
||||
onSearchClicked: extrasPanel.switchToPanel(ChatView.MessagesResearchPanel)
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Shift+F"
|
||||
@ -209,12 +204,12 @@ Rectangle {
|
||||
id: addParticipantsButton
|
||||
|
||||
checkable: true
|
||||
checked: root.addParticipantOpened
|
||||
checked: extrasPanel.isOpen(ChatView.AddMemberPanel)
|
||||
visible: interactionButtonsVisibility && addMemberVisibility
|
||||
source: JamiResources.add_people_24dp_svg
|
||||
toolTipText: JamiStrings.addParticipants
|
||||
|
||||
onClicked: addToConversationClicked()
|
||||
onClicked: extrasPanel.switchToPanel(ChatView.AddMemberPanel)
|
||||
}
|
||||
|
||||
JamiPushButton {
|
||||
@ -241,12 +236,12 @@ Rectangle {
|
||||
id: detailsButton
|
||||
|
||||
checkable: true
|
||||
checked: root.swarmDetailsOpened
|
||||
checked: extrasPanel.isOpen(ChatView.SwarmDetailsPanel)
|
||||
visible: interactionButtonsVisibility && (swarmDetailsVisibility || LRCInstance.currentAccountType === Profile.Type.SIP) // TODO if SIP not a request
|
||||
source: JamiResources.swarm_details_panel_svg
|
||||
toolTipText: JamiStrings.details
|
||||
|
||||
onClicked: showDetailsClicked()
|
||||
onClicked: extrasPanel.switchToPanel(ChatView.SwarmDetailsPanel)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,88 +1,90 @@
|
||||
/*
|
||||
* Copyright (C) 2023 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, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import net.jami.Adapters 1.1
|
||||
|
||||
StackLayout {
|
||||
id: root
|
||||
|
||||
property int detailsIndex: -1
|
||||
|
||||
function isOpen(panel) {
|
||||
return visible && currentIndex === panel;
|
||||
}
|
||||
|
||||
visible: currentIndex > -1
|
||||
|
||||
property bool detailsShouldOpen: false
|
||||
onVisibleChanged: if (visible)
|
||||
detailsShouldOpen = true
|
||||
|
||||
function restoreState() {
|
||||
// Only applies to Jami accounts, and we musn't be in a call.
|
||||
if (detailsShouldOpen && !inCallView && !CurrentConversation.needsSyncing && !CurrentConversation.isRequest) {
|
||||
switchToPanel(ChatView.SwarmDetailsPanel, false);
|
||||
} else {
|
||||
closePanel();
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: CurrentConversationMembers
|
||||
|
||||
function onCountChanged() {
|
||||
// Close the panel if there are 8 or more members in the
|
||||
// conversation AND the "Add Member" panel is currently open.
|
||||
if (CurrentConversationMembers.count >= 8 && isOpen(ChatView.AddMemberPanel)) {
|
||||
closePanel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This will open the details panel if it's not already visible.
|
||||
// Additionally, `toggle` being true (default) will close the panel
|
||||
// if it is already open to `panel`.
|
||||
function switchToPanel(panel, toggle = true) {
|
||||
if (visible && toggle && currentIndex === panel) {
|
||||
closePanel();
|
||||
} else {
|
||||
currentIndex = panel;
|
||||
}
|
||||
}
|
||||
|
||||
function closePanel() {
|
||||
// We need to close the panel, but not save it when appropriate.
|
||||
currentIndex = -1;
|
||||
if (!inCallView)
|
||||
detailsShouldOpen = false;
|
||||
}
|
||||
|
||||
SwarmDetailsPanel {
|
||||
id: detailsPanel
|
||||
|
||||
property int parentIndex: root.currentIndex
|
||||
// When we change to the details panel we should load the tab index.
|
||||
onParentIndexChanged: tabBarIndex = Math.min(tabBarItemsLength - 1, Math.max(0, root.detailsIndex))
|
||||
// Save it when it changes.
|
||||
onTabBarIndexChanged: root.detailsIndex = tabBarIndex
|
||||
}
|
||||
MessagesResearchPanel {
|
||||
}
|
||||
AddMemberPanel {
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2023 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, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import net.jami.Adapters 1.1
|
||||
|
||||
StackLayout {
|
||||
id: root
|
||||
|
||||
// We need to set the currentIndex to -1 to make sure the
|
||||
// panel is closed when the application starts.
|
||||
Component.onCompleted: closePanel()
|
||||
|
||||
// The index of the tab in the swarm details panel.
|
||||
property int detailsIndex: -1
|
||||
|
||||
// Best to avoid using the visible property directly.
|
||||
// Pass through the following open/close wrappers instead.
|
||||
function openPanel(panel) {
|
||||
currentIndex = panel;
|
||||
visible = true;
|
||||
}
|
||||
|
||||
function closePanel() {
|
||||
currentIndex = -1;
|
||||
visible = false;
|
||||
}
|
||||
|
||||
function isOpen(panel) {
|
||||
return visible && currentIndex === panel;
|
||||
}
|
||||
|
||||
// This will open the details panel if it's not already visible.
|
||||
// Additionally, `toggle` being true (default) will close the panel
|
||||
// if it is already open to `panel`.
|
||||
function switchToPanel(panel, toggle = true) {
|
||||
console.debug("switchToPanel: %1, toggle: %2".arg(panel).arg(toggle));
|
||||
if (visible) {
|
||||
// We need to close the panel if it's open and we're switching to
|
||||
// the same panel.
|
||||
if (toggle && currentIndex === panel) {
|
||||
// Toggle off.
|
||||
closePanel();
|
||||
} else {
|
||||
// Switch to the new panel.
|
||||
openPanel(panel);
|
||||
}
|
||||
} else {
|
||||
openPanel(panel);
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: CurrentConversationMembers
|
||||
|
||||
function onCountChanged() {
|
||||
// Close the panel if there are 8 or more members in the
|
||||
// conversation AND the "Add Member" panel is currently open.
|
||||
if (CurrentConversationMembers.count >= 8 && isOpen(ChatView.AddMemberPanel)) {
|
||||
closePanel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SwarmDetailsPanel {
|
||||
id: detailsPanel
|
||||
|
||||
property int parentIndex: root.currentIndex
|
||||
// When we change to the details panel we should load the tab index.
|
||||
onParentIndexChanged: tabBarIndex = Math.min(tabBarItemsLength - 1, Math.max(0, root.detailsIndex))
|
||||
// Save it when it changes.
|
||||
onTabBarIndexChanged: root.detailsIndex = tabBarIndex
|
||||
}
|
||||
MessagesResearchPanel {}
|
||||
AddMemberPanel {}
|
||||
}
|
||||
|
||||
@ -26,10 +26,8 @@ import "../../commoncomponents"
|
||||
JamiListView {
|
||||
id: root
|
||||
|
||||
// the following should be marked required (Qtver >= 5.15)
|
||||
// along with `required model`
|
||||
property string headerLabel
|
||||
property bool headerVisible
|
||||
required property string headerLabel
|
||||
required property bool headerVisible
|
||||
|
||||
delegate: SmartListItemDelegate {
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ Item {
|
||||
ctxMenu.y = mouse.y;
|
||||
ctxMenu.openMenu();
|
||||
} else {
|
||||
MessagesAdapter.openUrl("file://" + Body);
|
||||
MessagesAdapter.openUrl(icon.fileSource);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,135 +14,87 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
import net.jami.Enums 1.1
|
||||
import net.jami.Models 1.1
|
||||
|
||||
import "../../commoncomponents"
|
||||
import "../../settingsview/components"
|
||||
|
||||
Rectangle {
|
||||
id: donation
|
||||
Control {
|
||||
id: control
|
||||
|
||||
property bool donationVisible: JamiQmlUtils.isDonationBannerVisible()
|
||||
|
||||
width: parent.width - 30
|
||||
height: donationTextRect.height + 45 > donationIcon.height + 20 ? donationTextRect.height + 45 : donationIcon.height + 20
|
||||
radius: 5
|
||||
|
||||
color: JamiTheme.donationBackgroundColor
|
||||
|
||||
GridLayout {
|
||||
id: donationLayout
|
||||
function bumpDonationReminderVisibility() {
|
||||
// Calculate the time 7 days from now
|
||||
var futureDate = new Date(new Date().getTime() + 7 * 24 * 60 * 60 * 1000);
|
||||
var formattedDate = Qt.formatDateTime(futureDate, "yyyy-MM-dd hh:mm");
|
||||
UtilsAdapter.setAppValue(Settings.Key.Donation2023VisibleDate, formattedDate);
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
anchors.fill: parent
|
||||
columns: 3
|
||||
rows: 2
|
||||
rowSpacing: 0
|
||||
columnSpacing: 10
|
||||
onClicked: Qt.openUrlExternally(JamiTheme.donationUrl)
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: donationIcon
|
||||
|
||||
Layout.row: 0
|
||||
Layout.column: 0
|
||||
Layout.rowSpan: 2
|
||||
Layout.preferredHeight: 70
|
||||
Layout.preferredWidth: 45
|
||||
Layout.leftMargin: 10
|
||||
Layout.topMargin: 10
|
||||
Layout.bottomMargin: 15
|
||||
|
||||
color: JamiTheme.transparentColor
|
||||
|
||||
Image {
|
||||
id: donationImage
|
||||
height: parent.height
|
||||
width: 50
|
||||
anchors.centerIn: parent
|
||||
source: JamiResources.icon_donate_svg
|
||||
}
|
||||
padding: 10
|
||||
background: Rectangle {
|
||||
color: JamiTheme.donationBackgroundColor
|
||||
radius: 5
|
||||
}
|
||||
contentItem: RowLayout {
|
||||
spacing: 16
|
||||
Image {
|
||||
// The image fades to the top, so align it to the bottom.
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
source: JamiResources.icon_donate_svg
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: donationTextRect
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignTop
|
||||
spacing: 8
|
||||
|
||||
Layout.topMargin: 10
|
||||
Layout.row: 0
|
||||
Layout.column: 1
|
||||
Layout.columnSpan: 2
|
||||
Layout.preferredHeight: donationText.height
|
||||
Layout.preferredWidth: parent.width - 74
|
||||
Layout.bottomMargin: 5
|
||||
color: JamiTheme.transparentColor
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: implicitHeight
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
Text {
|
||||
id: donationText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
width: parent.width
|
||||
height: contentHeight
|
||||
text: JamiStrings.donationText
|
||||
wrapMode: Text.WordWrap
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: notNowRect
|
||||
|
||||
Layout.row: 1
|
||||
Layout.column: 1
|
||||
Layout.preferredHeight: 30
|
||||
Layout.preferredWidth: (parent.width - 55) / 2
|
||||
|
||||
color: JamiTheme.transparentColor
|
||||
|
||||
Text {
|
||||
id: notNowText
|
||||
MouseArea {
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
// When the user clicks on "Not now", we set the donation date to 7 days from now (1 for the test)
|
||||
UtilsAdapter.setAppValue(Settings.Key.DonationVisibleDate, new Date(new Date().getTime() + 7 * 24 * 60 * 60 * 1000).toISOString().slice(0, 16).replace("T", " "));
|
||||
donation.donationVisible = Qt.binding(() => JamiQmlUtils.isDonationBannerVisible());
|
||||
RowLayout {
|
||||
spacing: 32
|
||||
Layout.alignment: Qt.AlignBaseline
|
||||
component BannerButton : PushButton {
|
||||
id: bannerButton
|
||||
contentItem: Text {
|
||||
text: bannerButton.text
|
||||
color: JamiTheme.donationButtonTextColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
MouseArea {
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
anchors.fill: parent
|
||||
onClicked: bannerButton.clicked()
|
||||
}
|
||||
}
|
||||
background: null
|
||||
}
|
||||
text: JamiStrings.notNow
|
||||
color: JamiTheme.donationButtonTextColor
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: donateRect
|
||||
Layout.row: 1
|
||||
Layout.column: 2
|
||||
Layout.preferredHeight: 30
|
||||
Layout.preferredWidth: (parent.width - 50) / 2
|
||||
color: JamiTheme.transparentColor
|
||||
|
||||
Text {
|
||||
id: donateText
|
||||
MouseArea {
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
Qt.openUrlExternally(JamiTheme.donationUrl);
|
||||
}
|
||||
// Clicking "Not now" sets the donation date to 7 days from now.
|
||||
BannerButton {
|
||||
text: JamiStrings.notNow
|
||||
onClicked: bumpDonationReminderVisibility()
|
||||
}
|
||||
BannerButton {
|
||||
text: JamiStrings.donation
|
||||
onClicked: Qt.openUrlExternally(JamiTheme.donationUrl)
|
||||
}
|
||||
text: JamiStrings.donation
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
color: JamiTheme.donationButtonTextColor
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -59,7 +59,7 @@ Rectangle {
|
||||
delegate: FilesToSendDelegate {
|
||||
anchors.verticalCenter: filesToSendContainerRow.verticalCenter
|
||||
|
||||
height: JamiTheme.filesToSendDelegateHeight
|
||||
height: JamiTheme.layoutWidthFileTransfer
|
||||
|
||||
onRemoveFileButtonClicked: function (index) {
|
||||
filesToSendListModel.removeFromPending(index);
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
*/
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import Qt5Compat.GraphicalEffects
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
@ -40,130 +41,92 @@ Item {
|
||||
id: mainRect
|
||||
|
||||
radius: JamiTheme.filesToSendDelegateRadius
|
||||
Layout.preferredHeight: root.height - 4 * margin
|
||||
Layout.preferredHeight: JamiTheme.layoutWidthFileTransfer
|
||||
Layout.preferredWidth: JamiTheme.layoutWidthFileTransfer
|
||||
color: JamiTheme.transparentColor
|
||||
color: JamiTheme.fileBackgroundColor
|
||||
|
||||
Rectangle {
|
||||
id: rect
|
||||
ResponsiveImage {
|
||||
id: fileIcon
|
||||
visible: !IsImage
|
||||
anchors.fill: parent
|
||||
anchors.margins: 17
|
||||
containerHeight: 20
|
||||
source: JamiResources.link_black_24dp_svg
|
||||
cache: false
|
||||
color: JamiTheme.fileIconColor
|
||||
}
|
||||
|
||||
AnimatedImage {
|
||||
id: name
|
||||
|
||||
anchors.fill: parent
|
||||
color: fileIcon.visible ? CurrentConversation.color : JamiTheme.transparentColor
|
||||
layer.enabled: true
|
||||
cache: false
|
||||
|
||||
layer.effect: OpacityMask {
|
||||
maskSource: Item {
|
||||
width: rect.width
|
||||
height: rect.height
|
||||
Rectangle {
|
||||
anchors.centerIn: parent
|
||||
width: rect.width
|
||||
height: rect.height
|
||||
radius: JamiTheme.chatViewFooterButtonRadius
|
||||
}
|
||||
}
|
||||
asynchronous: true
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
source: {
|
||||
if (!IsImage)
|
||||
return "";
|
||||
|
||||
// :/ -> resource url for test purposes
|
||||
var sourceUrl = FilePath;
|
||||
if (!sourceUrl.startsWith(":/"))
|
||||
return JamiQmlUtils.qmlFilePrefix + sourceUrl;
|
||||
else
|
||||
return "qrc" + sourceUrl;
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: fileIcon.visible ? margin : 0
|
||||
radius: JamiTheme.chatViewFooterButtonRadius
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
|
||||
ResponsiveImage {
|
||||
id: fileIcon
|
||||
visible: !IsImage
|
||||
anchors.fill: parent
|
||||
anchors.margins: 14
|
||||
source: JamiResources.attached_file_svg
|
||||
cache: false
|
||||
color: JamiTheme.textColor
|
||||
}
|
||||
|
||||
AnimatedImage {
|
||||
id: name
|
||||
|
||||
anchors.fill: parent
|
||||
cache: false
|
||||
|
||||
asynchronous: true
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
source: {
|
||||
if (!IsImage)
|
||||
return "";
|
||||
|
||||
// :/ -> resource url for test purposes
|
||||
var sourceUrl = FilePath;
|
||||
if (!sourceUrl.startsWith(":/"))
|
||||
return JamiQmlUtils.qmlFilePrefix + sourceUrl;
|
||||
else
|
||||
return "qrc" + sourceUrl;
|
||||
}
|
||||
|
||||
layer.enabled: true
|
||||
layer.effect: OpacityMask {
|
||||
maskSource: Rectangle {
|
||||
width: mainRect.width
|
||||
height: mainRect.height
|
||||
radius: JamiTheme.filesToSendDelegateRadius
|
||||
}
|
||||
}
|
||||
layer.enabled: true
|
||||
layer.effect: OpacityMask {
|
||||
maskSource: Rectangle {
|
||||
width: mainRect.width
|
||||
height: mainRect.height
|
||||
radius: JamiTheme.filesToSendDelegateRadius
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PushButton {
|
||||
JamiPushButton {
|
||||
id: removeFileButton
|
||||
|
||||
anchors.right: mainRect.right
|
||||
anchors.rightMargin: -margin
|
||||
anchors.top: mainRect.top
|
||||
anchors.topMargin: -margin
|
||||
|
||||
radius: 24
|
||||
preferredSize: 20
|
||||
|
||||
preferredSize: 30
|
||||
imageContainerWidth: 52
|
||||
imageContainerHeight: 52
|
||||
toolTipText: JamiStrings.optionRemove
|
||||
source: JamiResources.round_close_24dp_svg
|
||||
|
||||
source: JamiResources.cross_black_24dp_svg
|
||||
|
||||
normalColor: JamiTheme.backgroundColor
|
||||
imageColor: JamiTheme.textColor
|
||||
normalColor: JamiTheme.secondaryBackgroundColor
|
||||
imageColor: (hovered && JamiTheme.darkTheme) ? JamiTheme.blackColor : JamiTheme.textColor
|
||||
hoveredColor: JamiTheme.removeFileButtonHoverColor
|
||||
|
||||
onClicked: root.removeFileButtonClicked(index)
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Control {
|
||||
id: info
|
||||
Layout.preferredHeight: root.height - margin
|
||||
Layout.preferredWidth: JamiTheme.layoutWidthFileTransfer
|
||||
color: JamiTheme.transparentColor
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
|
||||
ColumnLayout {
|
||||
Layout.leftMargin: 5
|
||||
|
||||
anchors.margins: 5
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
contentItem: ColumnLayout {
|
||||
|
||||
spacing: 7
|
||||
|
||||
Text {
|
||||
id: fileName
|
||||
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
Layout.preferredWidth: info.width
|
||||
Layout.preferredWidth: Math.max(info.width, fileExtensionLayout.width)
|
||||
font.pointSize: JamiTheme.filesToSendDelegateFontPointSize
|
||||
color: JamiTheme.chatviewTextColor
|
||||
font.bold: true
|
||||
text: FileName
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: fileExtensionLayout
|
||||
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
spacing: FileExtension.length === 0 ? 0 : 1
|
||||
@ -171,7 +134,7 @@ Item {
|
||||
Text {
|
||||
id: fileExtension
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
font.pointSize: JamiTheme.filesToSendDelegateFontPointSize
|
||||
font.pointSize: JamiTheme.editedFontSize
|
||||
font.capitalization: Font.AllUppercase
|
||||
color: JamiTheme.chatviewTextColor
|
||||
text: FileExtension
|
||||
@ -181,11 +144,16 @@ Item {
|
||||
|
||||
Text {
|
||||
id: fileSize
|
||||
font.pointSize: JamiTheme.filesToSendDelegateFontPointSize
|
||||
font.pointSize: JamiTheme.editedFontSize
|
||||
color: JamiTheme.chatviewTextColor
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
text: FileSize
|
||||
elide: Text.ElideMiddle
|
||||
|
||||
Component.onCompleted: {
|
||||
text = text.toLowerCase();
|
||||
text = text.replace(" ", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,9 +35,9 @@ TabButton {
|
||||
property var textColorHovered: JamiTheme.textColorHovered
|
||||
property var underlineColor: textColor
|
||||
property var underlineColorHovered: textColorHovered
|
||||
property var borderWidth: 2
|
||||
property var bottomMargin: 1
|
||||
property var underlineContentOnly: false
|
||||
property real borderWidth: 2
|
||||
property real bottomMargin: 1
|
||||
property bool underlineContentOnly: false
|
||||
property var fontSize: JamiTheme.filterItemFontSize
|
||||
|
||||
signal selected
|
||||
|
||||
@ -29,6 +29,7 @@ RowLayout {
|
||||
id: root
|
||||
|
||||
property alias text: messageBarTextArea.text
|
||||
property alias fileContainer: dataTransferSendContainer
|
||||
property var textAreaObj: messageBarTextArea
|
||||
property real marginSize: JamiTheme.messageBarMarginSize
|
||||
property bool sendButtonVisibility: true
|
||||
@ -51,7 +52,9 @@ RowLayout {
|
||||
signal showMapClicked
|
||||
signal emojiButtonClicked
|
||||
|
||||
height: showTypo || multiLine ? messageBarTextArea.height + 25 + 3 * marginSize + 1 : textAreaObj.height + marginSize + 1
|
||||
property real rectHeight: (showTypo || multiLine) ? messageBarTextArea.height + 25 + 4 * marginSize + 1 : textAreaObj.height + 1 * marginSize + 1
|
||||
|
||||
height: rectHeight + (dataTransferSendContainer.visible ? dataTransferSendContainer.height + (!showTypo ? 40 : - marginSize) : 0 )
|
||||
|
||||
Rectangle {
|
||||
|
||||
@ -67,11 +70,16 @@ RowLayout {
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: marginSize / 2
|
||||
|
||||
// Used to choose the correct color for the button.
|
||||
readonly property bool highlight: down || hovered
|
||||
|
||||
background: Rectangle {
|
||||
implicitWidth: showMoreButton.width
|
||||
implicitHeight: showMoreButton.height
|
||||
radius: 5
|
||||
color: JamiTheme.transparentColor
|
||||
color: showMoreButton.highlight ?
|
||||
JamiTheme.hoveredButtonColor :
|
||||
JamiTheme.transparentColor
|
||||
}
|
||||
|
||||
MaterialToolTip {
|
||||
@ -80,7 +88,7 @@ RowLayout {
|
||||
parent: showMoreButton
|
||||
visible: showMoreButton.hovered && (text.length > 0)
|
||||
delay: Qt.styleHints.mousePressAndHoldInterval
|
||||
text: JamiStrings.showMore
|
||||
text: showMoreButton.down ? JamiStrings.showLess : JamiStrings.showMore
|
||||
}
|
||||
|
||||
indicator: ResponsiveImage {
|
||||
@ -93,28 +101,29 @@ RowLayout {
|
||||
|
||||
source: JamiResources.more_menu_black_24dp_svg
|
||||
|
||||
color: JamiTheme.chatViewFooterImgColor
|
||||
color: showMoreButton.highlight ?
|
||||
JamiTheme.chatViewFooterImgHoverColor :
|
||||
JamiTheme.chatViewFooterImgColor;
|
||||
}
|
||||
|
||||
onHoveredChanged: {
|
||||
if (!sharePopup.opened) {
|
||||
showMoreButton.indicator.color = hovered ? JamiTheme.chatViewFooterImgHoverColor : JamiTheme.chatViewFooterImgColor;
|
||||
showMoreButton.background.color = hovered ? JamiTheme.hoveredButtonColor : JamiTheme.transparentColor;
|
||||
Component {
|
||||
id: sharePopupComp
|
||||
ShareMenu {
|
||||
id: sharePopup
|
||||
onAudioRecordMessageButtonClicked: root.audioRecordMessageButtonClicked()
|
||||
onVideoRecordMessageButtonClicked: root.videoRecordMessageButtonClicked()
|
||||
onShowMapClicked: root.showMapClicked()
|
||||
modelList: listViewMoreButton.menuMoreButton
|
||||
y: showMoreButton.y + 31
|
||||
x: showMoreButton.x - 3
|
||||
}
|
||||
toolTipMoreButton.text = sharePopup.opened ? JamiStrings.showLess : JamiStrings.showMore;
|
||||
}
|
||||
|
||||
popup: ShareMenu {
|
||||
id: sharePopup
|
||||
onAudioRecordMessageButtonClicked: {
|
||||
root.audioRecordMessageButtonClicked();
|
||||
}
|
||||
onVideoRecordMessageButtonClicked: {
|
||||
root.videoRecordMessageButtonClicked();
|
||||
}
|
||||
onShowMapClicked: {
|
||||
root.showMapClicked();
|
||||
}
|
||||
onAudioRecordMessageButtonClicked: root.audioRecordMessageButtonClicked()
|
||||
onVideoRecordMessageButtonClicked: root.videoRecordMessageButtonClicked()
|
||||
onShowMapClicked: root.showMapClicked()
|
||||
modelList: listViewMoreButton.menuMoreButton
|
||||
y: showMoreButton.y + 31
|
||||
x: showMoreButton.x - 3
|
||||
@ -122,14 +131,6 @@ RowLayout {
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: sharePopup
|
||||
function onOpenedChanged() {
|
||||
showMoreButton.indicator.color = (showMoreButton.parent && showMoreButton.parent.hovered) || (sharePopup != null && sharePopup.opened) ? JamiTheme.chatViewFooterImgHoverColor : JamiTheme.chatViewFooterImgColor;
|
||||
showMoreButton.background.color = (showMoreButton.parent && showMoreButton.parent.hovered) || sharePopup.opened ? JamiTheme.hoveredButtonColor : JamiTheme.transparentColor;
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: rectangle
|
||||
|
||||
@ -154,18 +155,19 @@ RowLayout {
|
||||
id: rowLayout
|
||||
|
||||
columns: 2
|
||||
rows: 2
|
||||
rows: 3
|
||||
columnSpacing: 0
|
||||
rowSpacing: 0
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
|
||||
MessageBarTextArea {
|
||||
id: messageBarTextArea
|
||||
|
||||
objectName: "messageBarTextArea"
|
||||
maxWidth: rectangle.width - messageBarRowLayout.width - 35
|
||||
Layout.row: showTypo || multiLine ? 0 : 1
|
||||
Layout.row: 0
|
||||
Layout.column: 0
|
||||
|
||||
// forward activeFocus to the actual text area object
|
||||
@ -176,12 +178,10 @@ RowLayout {
|
||||
|
||||
placeholderText: JamiStrings.writeTo.arg(CurrentConversation.title)
|
||||
|
||||
Layout.alignment: showTypo ? Qt.AlignLeft | Qt.AlignBottom : Qt.AlignBottom
|
||||
Layout.alignment: showTypo ? Qt.AlignLeft : Qt.AlignBottom
|
||||
Layout.fillWidth: true
|
||||
Layout.leftMargin: marginSize / 2
|
||||
Layout.topMargin: marginSize / 2
|
||||
Layout.bottomMargin: marginSize / 2
|
||||
Layout.rightMargin: marginSize / 2
|
||||
Layout.margins: marginSize / 2
|
||||
Layout.topMargin: 0
|
||||
Layout.minimumHeight: JamiTheme.chatViewFooterPreferredHeight
|
||||
Layout.preferredHeight: contentHeight
|
||||
Layout.maximumHeight: JamiTheme.chatViewFooterTextAreaMaximumHeight - marginSize / 2
|
||||
@ -322,14 +322,30 @@ RowLayout {
|
||||
}
|
||||
}
|
||||
|
||||
FilesToSendContainer {
|
||||
id: dataTransferSendContainer
|
||||
|
||||
objectName: "dataTransferSendContainer"
|
||||
visible: filesToSendCount > 0
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.fillWidth: true
|
||||
Layout.rightMargin: marginSize / 2
|
||||
Layout.leftMargin: marginSize / 2
|
||||
Layout.row: 1
|
||||
Layout.column: 0
|
||||
Layout.columnSpan: 2
|
||||
Layout.preferredHeight: filesToSendCount ? JamiTheme.layoutWidthFileTransfer : 0
|
||||
}
|
||||
|
||||
Row {
|
||||
id: messageBarRowLayout
|
||||
|
||||
Layout.row: showTypo || multiLine ? 1 : 1
|
||||
Layout.row: dataTransferSendContainer.visible ? 3 : (showTypo || multiLine ? 2 : 0)
|
||||
Layout.column: showTypo || multiLine ? 0 : 1
|
||||
Layout.alignment: showTypo || multiLine ? Qt.AlignRight : Qt.AlignBottom
|
||||
Layout.columnSpan: showTypo || multiLine ? 2 : 1
|
||||
Layout.topMargin: marginSize / 2
|
||||
Layout.topMargin: dataTransferSendContainer.visible ? 0 : marginSize
|
||||
Layout.rightMargin: 0
|
||||
|
||||
Row {
|
||||
@ -349,8 +365,6 @@ RowLayout {
|
||||
}
|
||||
var selectedText = text.substring(start - char1.length, end + char2.length);
|
||||
return (selectedText.startsWith(char1) && selectedText.endsWith(char2));
|
||||
var res = regex.test(text.substring(start - char1.length, end + char2.length));
|
||||
return res && start - char1.length >= 0 && end + char2.length <= text.length;
|
||||
}
|
||||
|
||||
function isStarStyle(text, selectionStart, selectionEnd, type) {
|
||||
@ -836,14 +850,14 @@ RowLayout {
|
||||
|
||||
toolTipText: modelData.shortcutText
|
||||
shortcutKey: modelData.shortcutKey
|
||||
hasShortcut: modelData.hasShortcut != null ? modelData.hasShortcut : true
|
||||
hasShortcut: modelData.hasShortcut ? true : false
|
||||
source: modelData.iconSrc
|
||||
focusPolicy: Qt.TabFocus
|
||||
|
||||
normalColor: {
|
||||
if (showPreview) {
|
||||
return JamiTheme.primaryBackgroundColor;
|
||||
} else if (modelData.normalColor != null) {
|
||||
} else if (modelData.normalColor) {
|
||||
return modelData.normalColor;
|
||||
} else if (modelData.isStyle) {
|
||||
return JamiTheme.hoveredButtonColor;
|
||||
@ -856,8 +870,6 @@ RowLayout {
|
||||
return JamiTheme.chatViewFooterImgDisableColor;
|
||||
} else if (hovered) {
|
||||
return JamiTheme.chatViewFooterImgHoverColor;
|
||||
} else if (modelData.imageColor != null) {
|
||||
return modelData.imageColor;
|
||||
} else if (modelData.isStyle) {
|
||||
return JamiTheme.chatViewFooterImgHoverColor;
|
||||
} else {
|
||||
@ -1148,6 +1160,7 @@ RowLayout {
|
||||
pressedColor: hoveredColor
|
||||
toolTipText: showPreview ? JamiStrings.continueEditing : JamiStrings.showPreview
|
||||
|
||||
|
||||
onClicked: {
|
||||
showPreview = !showPreview;
|
||||
messageBarTextArea.showPreview = showPreview;
|
||||
@ -1205,6 +1218,7 @@ RowLayout {
|
||||
onClicked: {
|
||||
root.showPreview = false;
|
||||
sendMessageButtonClicked();
|
||||
root.height = root.rectHeight;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ JamiListView {
|
||||
function isFirst() {
|
||||
if (!nItem) return true
|
||||
else {
|
||||
if (item.showTime || item.isReply || nItem.isEmojiOnly ) {
|
||||
if (item.showTime || item.isReply ) {
|
||||
return true
|
||||
} else if (nItem.author !== item.author) {
|
||||
return true
|
||||
@ -121,7 +121,7 @@ JamiListView {
|
||||
function isLast() {
|
||||
if (!pItem) return true
|
||||
else {
|
||||
if (pItem.showTime || pItem.isReply || pItem.isEmojiOnly) {
|
||||
if (pItem.showTime || pItem.isReply) {
|
||||
return true
|
||||
} else if (pItem.author !== item.author) {
|
||||
return true
|
||||
|
||||
@ -39,6 +39,9 @@ Rectangle {
|
||||
property alias chatViewContainer: chatViewContainer
|
||||
property string callPreviewId
|
||||
|
||||
// A link to the first child will provide access to the chat view.
|
||||
property var chatView: chatViewContainer.children[0]
|
||||
|
||||
onCallPreviewIdChanged: {
|
||||
controlPreview.start();
|
||||
}
|
||||
@ -61,6 +64,20 @@ Rectangle {
|
||||
}
|
||||
}
|
||||
|
||||
function setCallChatVisibility(visible) {
|
||||
if (visible) {
|
||||
mainColumnLayout.isHorizontal = UtilsAdapter.getAppValue(Settings.Key.ShowChatviewHorizontally);
|
||||
chatViewContainer.visible = false;
|
||||
chatViewContainer.visible = true;
|
||||
} else {
|
||||
chatViewContainer.visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
function toggleCallChatVisibility() {
|
||||
setCallChatVisibility(!chatViewContainer.visible);
|
||||
}
|
||||
|
||||
function openInCallConversation() {
|
||||
mainColumnLayout.isHorizontal = UtilsAdapter.getAppValue(Settings.Key.ShowChatviewHorizontally);
|
||||
chatViewContainer.visible = false;
|
||||
@ -291,10 +308,7 @@ Rectangle {
|
||||
anchors.fill: parent
|
||||
|
||||
function toggleConversation() {
|
||||
if (inCallMessageWebViewStack.visible)
|
||||
closeInCallConversation();
|
||||
else
|
||||
openInCallConversation();
|
||||
toggleCallChatVisibility();
|
||||
}
|
||||
|
||||
Connections {
|
||||
@ -322,19 +336,13 @@ Rectangle {
|
||||
participantsLayer.hoveredOverVideoMuted = true;
|
||||
}
|
||||
|
||||
onChatButtonClicked: {
|
||||
var detailsVisible = chatViewContainer.showDetails;
|
||||
chatViewContainer.showDetails = false;
|
||||
!chatViewContainer.visible || detailsVisible ? openInCallConversation() : closeInCallConversation();
|
||||
}
|
||||
|
||||
onFullScreenClicked: {
|
||||
callStackView.toggleFullScreen();
|
||||
}
|
||||
|
||||
onChatButtonClicked: toggleCallChatVisibility()
|
||||
onFullScreenClicked: callStackView.toggleFullScreen()
|
||||
onSwarmDetailsClicked: {
|
||||
chatViewContainer.showDetails = !chatViewContainer.showDetails;
|
||||
chatViewContainer.showDetails ? openInCallConversation() : closeInCallConversation();
|
||||
toggleCallChatVisibility();
|
||||
if (chatViewContainer.visible) {
|
||||
chatView.switchToPanel(ChatView.SwarmDetailsPanel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ Rectangle {
|
||||
TextEdit {
|
||||
id: projectCreditsTextArea
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
|
||||
width: projectCreditsFlickable.width
|
||||
color: JamiTheme.textColor
|
||||
|
||||
@ -38,9 +38,10 @@ Popup {
|
||||
property int state: RecordBox.States.INIT
|
||||
property bool isVideo: false
|
||||
property bool isPhoto: false
|
||||
property bool isAudio: false
|
||||
property bool showVideo: (root.isVideo && VideoDevices.listSize !== 0)
|
||||
property int preferredWidth: 320
|
||||
property int preferredHeight: 240
|
||||
property int preferredHeight: 500
|
||||
property int btnSize: 40
|
||||
|
||||
property int offset: 3
|
||||
@ -56,6 +57,7 @@ Popup {
|
||||
|
||||
function openRecorder(vid) {
|
||||
isVideo = vid;
|
||||
isAudio = !vid && !isPhoto;
|
||||
updateState(RecordBox.States.INIT);
|
||||
if (isVideo) {
|
||||
localVideo.startWithId(VideoDevices.getDefaultDevice());
|
||||
@ -136,260 +138,315 @@ Popup {
|
||||
}
|
||||
}
|
||||
|
||||
background: Item {
|
||||
} // Computed by id: box, to do the layer on LocalVideo
|
||||
|
||||
width: preferredWidth
|
||||
height: isVideo ? previewWidget.height + 80 : preferredHeight
|
||||
Rectangle {
|
||||
id: box
|
||||
id: boxBackground
|
||||
radius: 5
|
||||
anchors.fill: parent
|
||||
color: JamiTheme.backgroundColor
|
||||
|
||||
PushButton {
|
||||
id: cancelBtn
|
||||
objectName: "cancelBtn"
|
||||
z: 1
|
||||
|
||||
normalColor: "transparent"
|
||||
hoveredColor: Qt.rgba(255, 255, 255, 0.2)
|
||||
imageColor: isVideo ? JamiTheme.whiteColor : JamiTheme.textColor
|
||||
|
||||
preferredSize: 12
|
||||
|
||||
source: JamiResources.round_close_24dp_svg
|
||||
toolTipText: JamiStrings.back
|
||||
|
||||
anchors.right: box.right
|
||||
anchors.top: box.top
|
||||
anchors.margins: 8
|
||||
|
||||
focusPolicy: Qt.TabFocus
|
||||
onClicked: {
|
||||
closeRecorder();
|
||||
updateState(RecordBox.States.INIT);
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
// Else it will be resized by the layer effect
|
||||
id: photoMask
|
||||
visible: false
|
||||
anchors.fill: parent
|
||||
Rectangle {
|
||||
anchors.centerIn: parent
|
||||
height: parent.height
|
||||
width: parent.height
|
||||
radius: height / 2
|
||||
}
|
||||
}
|
||||
width: 300
|
||||
height: 300
|
||||
|
||||
Rectangle {
|
||||
id: rectBox
|
||||
visible: false
|
||||
anchors.fill: parent
|
||||
|
||||
radius: 5
|
||||
}
|
||||
id: previewWidget
|
||||
anchors.centerIn: parent
|
||||
height: root.isAudio ? 100 : 300
|
||||
width: 300
|
||||
color: root.isAudio ? JamiTheme.secondaryBackgroundColor : "transparent"
|
||||
|
||||
ColumnLayout {
|
||||
id: recordItem
|
||||
anchors.fill: parent
|
||||
spacing: 0
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
// Video
|
||||
Image {
|
||||
id: screenshotImg
|
||||
visible: root.showVideo && root.isPhoto && btnSend.visible
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
|
||||
|
||||
sourceSize.width: parent.width
|
||||
sourceSize.height: width * localVideo.invAspectRatio
|
||||
anchors.fill: parent
|
||||
fillMode: Image.PreserveAspectCrop // Ajuste l'image tout en préservant l'aspect
|
||||
|
||||
source: root.photo === "" ? "" : "data:image/png;base64," + root.photo
|
||||
}
|
||||
|
||||
// video Preview
|
||||
Rectangle {
|
||||
id: previewWidget
|
||||
LocalVideo {
|
||||
id: localVideo
|
||||
anchors.fill: parent
|
||||
visible: root.showVideo && !screenshotImg.visible
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
|
||||
height: localVideo.width * localVideo.invAspectRatio
|
||||
width: parent.width
|
||||
layer.enabled: true
|
||||
layer.effect: OpacityMask {
|
||||
maskSource: rectBox
|
||||
}
|
||||
|
||||
color: JamiTheme.primaryForegroundColor
|
||||
|
||||
LocalVideo {
|
||||
id: localVideo
|
||||
Rectangle {
|
||||
id: rectBox
|
||||
visible: false
|
||||
anchors.fill: parent
|
||||
radius: 5
|
||||
}
|
||||
}
|
||||
|
||||
layer.enabled: true
|
||||
layer.effect: OpacityMask {
|
||||
maskSource: rectBox
|
||||
}
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: "black"
|
||||
opacity: 0.6
|
||||
visible: root.isPhoto
|
||||
radius: 5
|
||||
|
||||
layer.enabled: true
|
||||
layer.effect: OpacityMask {
|
||||
anchors.centerIn: parent
|
||||
maskSource: photoMask
|
||||
invert: true
|
||||
}
|
||||
|
||||
Item {
|
||||
// Else it will be resized by the layer effect
|
||||
id: photoMask
|
||||
visible: false
|
||||
anchors.fill: parent
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: "black"
|
||||
opacity: 0.6
|
||||
visible: root.isPhoto
|
||||
|
||||
layer.enabled: true
|
||||
layer.effect: OpacityMask {
|
||||
anchors.centerIn: parent
|
||||
maskSource: photoMask
|
||||
invert: true
|
||||
}
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 20
|
||||
height: 200
|
||||
width: 200
|
||||
radius: height / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: controls
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.fillWidth: true
|
||||
spacing: 24
|
||||
Layout.bottomMargin: isVideo ? 8 : 0
|
||||
ColumnLayout{
|
||||
id: mainLayout
|
||||
|
||||
PushButton {
|
||||
id: recordButton
|
||||
objectName: "recordButton"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
anchors.fill: parent
|
||||
Component.onCompleted: print("mainLayout width: " + width + " height: " + height)
|
||||
|
||||
preferredSize: btnSize
|
||||
JamiPushButton {
|
||||
id: cancelBtn
|
||||
objectName: "cancelBtn"
|
||||
z: 1
|
||||
|
||||
normalColor: isVideo ? "transparent" : JamiTheme.backgroundColor
|
||||
hoveredColor: Qt.rgba(255, 255, 255, 0.2)
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignTop
|
||||
Layout.preferredHeight: 20
|
||||
Layout.preferredWidth: 20
|
||||
Layout.topMargin: 5
|
||||
Layout.rightMargin: 5
|
||||
|
||||
source: JamiResources.fiber_manual_record_24dp_svg
|
||||
imageColor: JamiTheme.recordIconColor
|
||||
imageColor: hovered ? JamiTheme.whiteColor : JamiTheme.recordBoxcloseButtonColor
|
||||
normalColor: "transparent"
|
||||
hoveredColor: JamiTheme.recordBoxHoverColor
|
||||
source: JamiResources.round_close_24dp_svg
|
||||
|
||||
toolTipText: JamiStrings.back
|
||||
focusPolicy: Qt.TabFocus
|
||||
|
||||
onClicked: {
|
||||
updateState(RecordBox.States.RECORDING);
|
||||
if (!root.isPhoto)
|
||||
startRecording();
|
||||
}
|
||||
}
|
||||
|
||||
PushButton {
|
||||
id: screenshotBtn
|
||||
objectName: "screenshotBtn"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
preferredSize: btnSize
|
||||
|
||||
normalColor: isVideo ? "transparent" : JamiTheme.backgroundColor
|
||||
hoveredColor: Qt.rgba(255, 255, 255, 0.2)
|
||||
border.width: 1
|
||||
border.color: imageColor
|
||||
|
||||
source: JamiResources.fiber_manual_record_24dp_svg
|
||||
imageColor: UtilsAdapter.luma(JamiTheme.backgroundColor) ? "white" : JamiTheme.redColor
|
||||
|
||||
focusPolicy: Qt.TabFocus
|
||||
onClicked: {
|
||||
root.photo = videoProvider.captureVideoFrame(VideoDevices.getDefaultDevice());
|
||||
updateState(RecordBox.States.REC_SUCCESS);
|
||||
}
|
||||
}
|
||||
|
||||
PushButton {
|
||||
id: btnStop
|
||||
objectName: "btnStop"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
preferredSize: btnSize
|
||||
|
||||
normalColor: isVideo ? "transparent" : JamiTheme.backgroundColor
|
||||
hoveredColor: Qt.rgba(255, 255, 255, 0.2)
|
||||
|
||||
source: JamiResources.stop_24dp_red_svg
|
||||
imageColor: UtilsAdapter.luma(JamiTheme.backgroundColor) ? "white" : JamiTheme.buttonTintedBlue
|
||||
border.width: 1
|
||||
border.color: imageColor
|
||||
|
||||
focusPolicy: Qt.TabFocus
|
||||
onClicked: {
|
||||
if (!root.isPhoto)
|
||||
stopRecording();
|
||||
updateState(RecordBox.States.REC_SUCCESS);
|
||||
}
|
||||
}
|
||||
|
||||
PushButton {
|
||||
id: btnRestart
|
||||
objectName: "btnRestart"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
preferredSize: btnSize
|
||||
|
||||
normalColor: isVideo ? "transparent" : JamiTheme.backgroundColor
|
||||
|
||||
source: JamiResources.re_record_24dp_svg
|
||||
hoveredColor: Qt.rgba(255, 255, 255, 0.2)
|
||||
imageColor: UtilsAdapter.luma(JamiTheme.backgroundColor) ? "white" : JamiTheme.buttonTintedBlue
|
||||
border.width: 1
|
||||
border.color: imageColor
|
||||
|
||||
focusPolicy: Qt.TabFocus
|
||||
onClicked: {
|
||||
if (!root.isPhoto)
|
||||
stopRecording();
|
||||
updateState(RecordBox.States.INIT);
|
||||
}
|
||||
}
|
||||
|
||||
PushButton {
|
||||
id: btnSend
|
||||
objectName: "btnSend"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
preferredSize: btnSize
|
||||
|
||||
normalColor: isVideo ? "transparent" : JamiTheme.backgroundColor
|
||||
|
||||
source: JamiResources.check_black_24dp_svg
|
||||
imageColor: UtilsAdapter.luma(JamiTheme.backgroundColor) ? "white" : JamiTheme.buttonTintedBlue
|
||||
border.width: 1
|
||||
border.color: imageColor
|
||||
|
||||
focusPolicy: Qt.TabFocus
|
||||
onClicked: {
|
||||
if (!root.isPhoto) {
|
||||
stopRecording();
|
||||
sendRecord();
|
||||
} else if (root.photo !== "") {
|
||||
root.validatePhoto(root.photo);
|
||||
}
|
||||
closeRecorder();
|
||||
updateState(RecordBox.States.INIT);
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: timer
|
||||
RowLayout {
|
||||
id: controls
|
||||
|
||||
interval: 1000
|
||||
running: false
|
||||
repeat: true
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.fillWidth: true
|
||||
|
||||
onTriggered: updateTimer()
|
||||
spacing: 2
|
||||
Layout.bottomMargin: 20//isVideo ? 8 : 0
|
||||
Component.onCompleted: print("controls width: " + width + " height: " + height)
|
||||
|
||||
JamiPushButton {
|
||||
id: recordButton
|
||||
|
||||
objectName: "recordButton"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
preferredSize: btnSize
|
||||
|
||||
source: JamiResources.record_black_24dp_svg
|
||||
imageColor: JamiTheme.whiteColor
|
||||
imageContainerHeight: 20
|
||||
imageContainerWidth: 20
|
||||
|
||||
focusPolicy: Qt.TabFocus
|
||||
|
||||
background: RoundedBorderRectangle {
|
||||
opacity: recordButton.hovered ? 1 : 0.7
|
||||
fillColor: recordButton.hovered ? JamiTheme.recordBoxHoverColor : JamiTheme.recordBoxButtonColor
|
||||
radius: {
|
||||
"tl": 5,
|
||||
"tr": root.isAudio ? 0 : 5,
|
||||
"br": root.isAudio ? 0 : 5,
|
||||
"bl": 5
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
updateState(RecordBox.States.RECORDING);
|
||||
if (!root.isPhoto)
|
||||
startRecording();
|
||||
}
|
||||
}
|
||||
JamiPushButton {
|
||||
id: screenshotBtn
|
||||
objectName: "screenshotBtn"
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
preferredSize: btnSize
|
||||
|
||||
normalColor: JamiTheme.screenshotButtonColor
|
||||
hoveredColor: JamiTheme.screenshotButtonColor
|
||||
background.opacity: hovered ? 1 : 0.5
|
||||
|
||||
source: JamiResources.record_round_black_24dp_svg
|
||||
|
||||
imageColor: JamiTheme.whiteColor
|
||||
imageContainerHeight: 25
|
||||
imageContainerWidth: 25
|
||||
focusPolicy: Qt.TabFocus
|
||||
|
||||
onClicked: {
|
||||
root.photo = videoProvider.captureVideoFrame(VideoDevices.getDefaultDevice());
|
||||
updateState(RecordBox.States.REC_SUCCESS);
|
||||
}
|
||||
}
|
||||
|
||||
PushButton {
|
||||
id: btnStop
|
||||
objectName: "btnStop"
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
preferredSize: btnSize
|
||||
|
||||
source: JamiResources.stop_rectangle_24dp_svg
|
||||
|
||||
imageColor: JamiTheme.whiteColor
|
||||
imageContainerHeight: 20
|
||||
imageContainerWidth: 20
|
||||
|
||||
focusPolicy: Qt.TabFocus
|
||||
|
||||
background: RoundedBorderRectangle {
|
||||
opacity: btnStop.hovered ? 1 : 0.7
|
||||
fillColor: btnStop.hovered ? JamiTheme.recordBoxHoverColor : JamiTheme.recordBoxButtonColor
|
||||
radius: {
|
||||
"tl": 5,
|
||||
"tr": 0,
|
||||
"br": 0,
|
||||
"bl": 5
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
if (!root.isPhoto)
|
||||
stopRecording();
|
||||
updateState(RecordBox.States.REC_SUCCESS);
|
||||
}
|
||||
}
|
||||
|
||||
JamiPushButton {
|
||||
id: btnRestart
|
||||
|
||||
objectName: "btnRestart"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
preferredSize: btnSize
|
||||
|
||||
source: JamiResources.restart_black_24dp_svg
|
||||
|
||||
imageColor: JamiTheme.whiteColor
|
||||
imageContainerHeight: 25
|
||||
imageContainerWidth: 25
|
||||
|
||||
focusPolicy: Qt.TabFocus
|
||||
|
||||
background: RoundedBorderRectangle {
|
||||
opacity: btnRestart.hovered ? 1 : 0.7
|
||||
fillColor: btnRestart.hovered ? JamiTheme.recordBoxHoverColor : JamiTheme.recordBoxButtonColor
|
||||
radius: {
|
||||
"tl": 5,
|
||||
"tr": 0,
|
||||
"br": 0,
|
||||
"bl": 5
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
onClicked: {
|
||||
if (!root.isPhoto)
|
||||
stopRecording();
|
||||
updateState(RecordBox.States.INIT);
|
||||
}
|
||||
}
|
||||
|
||||
JamiPushButton {
|
||||
id: btnSend
|
||||
|
||||
objectName: "btnSend"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
preferredSize: btnSize
|
||||
|
||||
imageColor: JamiTheme.whiteColor
|
||||
imageContainerHeight: 25
|
||||
imageContainerWidth: 25
|
||||
|
||||
source: JamiResources.check_circle_24dp_svg
|
||||
|
||||
focusPolicy: Qt.TabFocus
|
||||
|
||||
background: RoundedBorderRectangle {
|
||||
opacity: btnSend.hovered ? 1 : 0.7
|
||||
fillColor: btnSend.hovered ? JamiTheme.recordBoxHoverColor : JamiTheme.recordBoxButtonColor
|
||||
radius: {
|
||||
"tl": 0,
|
||||
"tr": root.isPhoto ? 5 : 0,
|
||||
"br": root.isPhoto ? 5 : 0,
|
||||
"bl": 0
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
if (!root.isPhoto) {
|
||||
stopRecording();
|
||||
sendRecord();
|
||||
} else if (root.photo !== "") {
|
||||
root.validatePhoto(root.photo);
|
||||
}
|
||||
closeRecorder();
|
||||
updateState(RecordBox.States.INIT);
|
||||
}
|
||||
}
|
||||
Timer {
|
||||
id: timer
|
||||
|
||||
interval: 1000
|
||||
running: false
|
||||
repeat: true
|
||||
onTriggered: updateTimer()
|
||||
}
|
||||
|
||||
RoundedBorderRectangle {
|
||||
opacity: 0.7
|
||||
fillColor: JamiTheme.recordBoxButtonColor
|
||||
visible: (!recordButton.visible && !root.isPhoto) || root.isAudio
|
||||
|
||||
Layout.preferredHeight: btnSend.height
|
||||
Layout.preferredWidth: time.width + 20
|
||||
radius: {
|
||||
"tl": 0,
|
||||
"tr": 5,
|
||||
"br": 5,
|
||||
"bl": 0
|
||||
}
|
||||
|
||||
Text {
|
||||
id: time
|
||||
|
||||
anchors.centerIn: parent
|
||||
opacity: 1
|
||||
|
||||
text: "00:00"
|
||||
color: JamiTheme.whiteColor
|
||||
font.pointSize: (isVideo ? 12 : 20)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: time
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
visible: !root.isPhoto
|
||||
text: "00:00"
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: (isVideo ? 12 : 20)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,8 +27,10 @@ Control {
|
||||
|
||||
signal clicked
|
||||
|
||||
height: jumpToLatestText.contentHeight + 15
|
||||
width: jumpToLatestText.contentWidth + arrowDropDown.width + 50
|
||||
height: 46
|
||||
width: 46
|
||||
|
||||
padding: 11
|
||||
|
||||
states: State {
|
||||
id: activeState
|
||||
@ -60,49 +62,18 @@ Control {
|
||||
}
|
||||
]
|
||||
|
||||
contentItem: Item {
|
||||
Item {
|
||||
anchors.centerIn: parent
|
||||
contentItem: ResponsiveImage {
|
||||
id: arrowDropDown
|
||||
|
||||
height: jumpToLatestText.contentHeight
|
||||
width: jumpToLatestText.contentWidth + arrowDropDown.width + 3
|
||||
anchors.centerIn: parent
|
||||
|
||||
Text {
|
||||
id: jumpToLatestText
|
||||
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
font.weight: Font.Bold
|
||||
font.pointSize: JamiTheme.textFontSize + 2
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
text: JamiStrings.scrollToEnd
|
||||
color: UtilsAdapter.luma(CurrentConversation.color) ? JamiTheme.chatviewTextColorLight : JamiTheme.chatviewTextColorDark
|
||||
}
|
||||
|
||||
ResponsiveImage {
|
||||
id: arrowDropDown
|
||||
|
||||
anchors.right: jumpToLatestText.left
|
||||
anchors.rightMargin: 3
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.verticalCenterOffset: 0
|
||||
|
||||
containerWidth: jumpToLatestText.contentHeight
|
||||
containerHeight: jumpToLatestText.contentHeight
|
||||
rotation: -90
|
||||
|
||||
color: UtilsAdapter.luma(CurrentConversation.color) ? JamiTheme.chatviewTextColorLight : JamiTheme.chatviewTextColorDark
|
||||
source: JamiResources.back_24dp_svg
|
||||
}
|
||||
}
|
||||
color: JamiTheme.darkTheme ? JamiTheme.chatviewTextColorLight : JamiTheme.chatviewTextColorDark
|
||||
source: JamiResources.expand_more_24dp_svg
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
radius: 5
|
||||
color: CurrentConversation.color
|
||||
color: JamiTheme.messageInBgColor
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
||||
@ -174,31 +174,37 @@ SidePanelBase {
|
||||
}
|
||||
|
||||
header: AccountComboBox {
|
||||
id: accountComboBox
|
||||
Shortcut {
|
||||
sequence: "Ctrl+J"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: accountComboBox.togglePopup()
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
topPadding: 10
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
spacing: 10
|
||||
|
||||
onVisibleChanged: {
|
||||
donation.donationVisible = Qt.binding(() => JamiQmlUtils.isDonationBannerVisible());
|
||||
}
|
||||
// We use this to update the donation banner visibility, instead of a timer.
|
||||
onVisibleChanged: JamiQmlUtils.updateIsDonationBannerVisible()
|
||||
|
||||
// Label/button to create a new swarm.
|
||||
RowLayout {
|
||||
id: titleBar
|
||||
id: createSwarmToggle
|
||||
|
||||
visible: swarmMemberSearchList.visible
|
||||
|
||||
width: parent.width
|
||||
height: 40
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 10
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 15
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 15
|
||||
|
||||
Layout.leftMargin: 15
|
||||
Layout.rightMargin: 15
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
Label {
|
||||
id: title
|
||||
|
||||
height: parent.height
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
@ -218,7 +224,7 @@ SidePanelBase {
|
||||
imagePadding: 8
|
||||
normalColor: JamiTheme.secondaryBackgroundColor
|
||||
|
||||
preferredSize: titleBar.height
|
||||
preferredSize: createSwarmToggle.height
|
||||
|
||||
source: JamiResources.round_close_24dp_svg
|
||||
toolTipText: JamiStrings.cancel
|
||||
@ -227,16 +233,16 @@ SidePanelBase {
|
||||
}
|
||||
}
|
||||
|
||||
// Search conversations, start new conversations, etc.
|
||||
RowLayout {
|
||||
id: startBar
|
||||
|
||||
width: parent.width
|
||||
height: 40
|
||||
anchors.top: titleBar.visible ? titleBar.bottom : parent.top
|
||||
anchors.topMargin: 10
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 15
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 15
|
||||
|
||||
Layout.leftMargin: 15
|
||||
Layout.rightMargin: 15
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+F"
|
||||
@ -249,7 +255,7 @@ SidePanelBase {
|
||||
Searchbar {
|
||||
id: contactSearchBar
|
||||
|
||||
Layout.fillHeight: true
|
||||
height: parent.height
|
||||
Layout.fillWidth: true
|
||||
|
||||
onSearchBarTextChanged: function (text) {
|
||||
@ -291,12 +297,18 @@ SidePanelBase {
|
||||
SidePanelTabBar {
|
||||
id: sidePanelTabBar
|
||||
|
||||
visible: ConversationsAdapter.pendingRequestCount && !contactSearchBar.textContent && smartListLayout.visible
|
||||
anchors.top: startBar.bottom
|
||||
anchors.topMargin: visible ? 10 : 0
|
||||
visible: ConversationsAdapter.pendingRequestCount &&
|
||||
!contactSearchBar.textContent &&
|
||||
smartListLayout.visible
|
||||
|
||||
contentHeight: childrenRect.height
|
||||
width: page.width
|
||||
height: visible ? 42 : 0
|
||||
contentHeight: visible ? 42 : 0
|
||||
Layout.preferredHeight: 42
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
Layout.bottomMargin: -10
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
@ -304,10 +316,11 @@ SidePanelBase {
|
||||
|
||||
visible: searchStatusText.text !== "" && smartListLayout.visible
|
||||
|
||||
anchors.top: sidePanelTabBar.bottom
|
||||
anchors.topMargin: visible ? 10 : 0
|
||||
width: parent.width
|
||||
height: visible ? 42 : 0
|
||||
height: 42
|
||||
|
||||
Layout.bottomMargin: -10
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
color: JamiTheme.backgroundColor
|
||||
Text {
|
||||
@ -325,22 +338,19 @@ SidePanelBase {
|
||||
}
|
||||
|
||||
DonationBanner {
|
||||
id: donation
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.leftMargin: 15
|
||||
anchors.rightMargin: 15
|
||||
anchors.top: sidePanelTabBar.bottom
|
||||
anchors.topMargin: 10
|
||||
visible: donation.donationVisible
|
||||
Layout.fillWidth: true
|
||||
Layout.leftMargin: 15
|
||||
Layout.rightMargin: 15
|
||||
Layout.topMargin: 10
|
||||
|
||||
visible: JamiQmlUtils.isDonationBannerVisible
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
id: smartListLayout
|
||||
|
||||
width: parent.width
|
||||
anchors.top: donation.donationVisible ? donation.bottom : searchStatusRect.bottom
|
||||
anchors.topMargin: (sidePanelTabBar.visible || searchStatusRect.visible) ? 0 : 12
|
||||
anchors.bottom: parent.bottom
|
||||
Layout.fillHeight: true
|
||||
|
||||
spacing: 4
|
||||
|
||||
@ -356,6 +366,7 @@ SidePanelBase {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: visible ? contentHeight : 0
|
||||
|
||||
Layout.maximumHeight: {
|
||||
var otherContentHeight = conversationListView.contentHeight + 16;
|
||||
if (conversationListView.visible)
|
||||
@ -369,20 +380,18 @@ SidePanelBase {
|
||||
|
||||
model: SearchResultsListModel
|
||||
headerLabel: JamiStrings.searchResults
|
||||
headerVisible: visible
|
||||
headerVisible: true
|
||||
}
|
||||
|
||||
ConversationListView {
|
||||
id: conversationListView
|
||||
|
||||
visible: count
|
||||
|
||||
Layout.preferredWidth: parent.width
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
model: ConversationListModel
|
||||
headerLabel: JamiStrings.conversations
|
||||
headerVisible: searchResultsListView.visible
|
||||
headerVisible: count && searchResultsListView.visible
|
||||
}
|
||||
}
|
||||
|
||||
@ -392,9 +401,7 @@ SidePanelBase {
|
||||
visible: inNewSwarm
|
||||
|
||||
width: parent.width
|
||||
anchors.top: donation.donationVisible ? donation.bottom : sidePanelTabBar.bottom
|
||||
anchors.topMargin: (sidePanelTabBar.visible || searchStatusRect.visible) ? 0 : 12
|
||||
anchors.bottom: parent.bottom
|
||||
Layout.fillHeight: true
|
||||
|
||||
spacing: 4
|
||||
|
||||
|
||||
@ -79,10 +79,6 @@ ItemDelegate {
|
||||
root.convId = UID
|
||||
}
|
||||
|
||||
Component.onDestruction: {
|
||||
UtilsAdapter.clearInteractionsCache(root.accountId, root.convId)
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: 15
|
||||
@ -192,32 +188,37 @@ ItemDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
// Draft indicator
|
||||
ResponsiveImage {
|
||||
visible: Draft && !root.highlighted
|
||||
source: JamiResources.round_edit_24dp_svg
|
||||
color: JamiTheme.primaryForegroundColor
|
||||
}
|
||||
|
||||
// Show that a call is ongoing for groups indicator
|
||||
ResponsiveImage {
|
||||
visible: ActiveCallsCount && !root.highlighted
|
||||
source: JamiResources.videocam_24dp_svg
|
||||
color: JamiTheme.primaryForegroundColor
|
||||
}
|
||||
|
||||
BlinkingLocationIcon {
|
||||
isSharing: true
|
||||
visible: showSharePositionIndicator
|
||||
arrowTimerVisibility: locationIconTimer.showIconArrow
|
||||
color: JamiTheme.sharePositionIndicatorColor
|
||||
color: JamiTheme.draftIconColor
|
||||
containerWidth: 25
|
||||
}
|
||||
|
||||
BlinkingLocationIcon {
|
||||
isSharing: false
|
||||
visible: showSharedPositionIndicator
|
||||
arrowTimerVisibility: locationIconTimer.showIconArrow
|
||||
color: JamiTheme.sharedPositionIndicatorColor
|
||||
color: JamiTheme.draftIconColor
|
||||
containerWidth: 25
|
||||
}
|
||||
|
||||
// Draft indicator
|
||||
ResponsiveImage {
|
||||
visible: Draft && !root.highlighted
|
||||
containerWidth: 20
|
||||
|
||||
source: JamiResources.round_edit_24dp_svg
|
||||
color: JamiTheme.draftIconColor
|
||||
}
|
||||
|
||||
// Show that a call is ongoing for groups indicator
|
||||
ResponsiveImage {
|
||||
visible: ActiveCallsCount && !root.highlighted
|
||||
source: JamiResources.phone_in_talk_24dp_svg
|
||||
containerWidth: 16
|
||||
color: JamiTheme.primaryForegroundColor
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
@ -228,6 +229,7 @@ ItemDelegate {
|
||||
Text {
|
||||
id: callStatusText
|
||||
|
||||
visible : text
|
||||
Layout.minimumHeight: 20
|
||||
Layout.alignment: Qt.AlignRight
|
||||
text: InCall ? UtilsAdapter.getCallStatusStr(CallState) : ""
|
||||
@ -239,17 +241,23 @@ ItemDelegate {
|
||||
|
||||
// unread message count
|
||||
Item {
|
||||
|
||||
Layout.preferredWidth: childrenRect.width
|
||||
Layout.preferredHeight: childrenRect.height
|
||||
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
||||
BadgeNotifier {
|
||||
size: 20
|
||||
size: 16
|
||||
count: UnreadMessagesCount
|
||||
animate: index === 0
|
||||
radius: 3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Accessible.role: Accessible.Button
|
||||
Accessible.name: Title === undefined? "" : Title
|
||||
Accessible.description: LastInteraction === undefined? "" : LastInteraction
|
||||
|
||||