Skip to content

[GUI] Replace gif animations with webp #2975

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,14 +152,14 @@ jobs:
- name: Linux
os: ubuntu-22.04
python-version: '3.8'
packages: python3-zmq qttools5-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libminiupnpc-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
packages: python3-zmq qttools5-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev qt5-image-formats-plugins libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libminiupnpc-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
cc: gcc
cxx: g++

- name: Linux-latest
os: ubuntu-24.04
python-version: '3.8'
packages: python3-zmq qttools5-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system1.74-dev libboost-filesystem1.74-dev libboost-chrono1.74-dev libboost-test1.74-dev libboost-thread1.74-dev libminiupnpc-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
packages: python3-zmq qttools5-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev qt5-image-formats-plugins libevent-dev bsdmainutils libboost-system1.74-dev libboost-filesystem1.74-dev libboost-chrono1.74-dev libboost-test1.74-dev libboost-thread1.74-dev libminiupnpc-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
cc: gcc
cxx: g++

Expand Down Expand Up @@ -273,7 +273,7 @@ jobs:
id: Linux-x86_64-nodepends
os: ubuntu-22.04
python-version: '3.8'
packages: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
packages: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev qt5-image-formats-plugins libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
unit_tests: true
functional_tests: true
goal: install
Expand All @@ -283,7 +283,7 @@ jobs:
id: Linux-x86_64-nodepends-latest
os: ubuntu-24.04
python-version: '3.8'
packages: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system1.74-dev libboost-filesystem1.74-dev libboost-chrono1.74-dev libboost-test1.74-dev libboost-thread1.74-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
packages: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev qt5-image-formats-plugins libevent-dev bsdmainutils libboost-system1.74-dev libboost-filesystem1.74-dev libboost-chrono1.74-dev libboost-test1.74-dev libboost-thread1.74-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
unit_tests: true
functional_tests: true
goal: install
Expand Down
3 changes: 2 additions & 1 deletion build-aux/m4/bitcoin_qt.m4
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QMinimalIntegrationPlugin)],[-lqminimal])
AC_DEFINE([QT_QPA_PLATFORM_MINIMAL], [1], [Define this symbol if the minimal Qt platform exists])
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QSvgPlugin)],[-lqsvg])
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWebpPlugin)],[-lqwebp])
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QGifPlugin)],[-lqgif])
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QSvgIconPlugin)],[-lqsvgicon])
if test "x$TARGET_OS" = xwindows; then
Expand Down Expand Up @@ -350,7 +351,7 @@ AC_DEFUN([_BITCOIN_QT_FIND_STATIC_PLUGINS],[
PKG_CHECK_MODULES([QTDEVICEDISCOVERY], [Qt5DeviceDiscoverySupport], [QT_LIBS="-lQt5DeviceDiscoverySupport $QT_LIBS"])
PKG_CHECK_MODULES([QTACCESSIBILITY], [Qt5AccessibilitySupport], [QT_LIBS="-lQt5AccessibilitySupport $QT_LIBS"])
PKG_CHECK_MODULES([QTFB], [Qt5FbSupport], [QT_LIBS="-lQt5FbSupport $QT_LIBS"])
fi
fi
if test "x$TARGET_OS" = xlinux; then
PKG_CHECK_MODULES([QTXCBQPA], [Qt5XcbQpa], [QT_LIBS="$QTXCBQPA_LIBS $QT_LIBS"])
elif test "x$TARGET_OS" = xdarwin; then
Expand Down
17 changes: 16 additions & 1 deletion depends/packages/qt.mk
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
PACKAGE=qt
$(package)_version=5.9.7
$(package)_download_path=https://download.qt.io/archive/qt/5.9/$($(package)_version)/submodules
$(package)_download_path=https://download.qt.io/new_archive/qt/5.9/$($(package)_version)/submodules
$(package)_suffix=opensource-src-$($(package)_version).tar.xz
$(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=36dd9574f006eaa1e5af780e4b33d11fe39d09fd7c12f3b9d83294174bd28f00
Expand All @@ -19,12 +19,16 @@ $(package)_qttools_sha256_hash=d62e0f70d99645d6704dbb8976fb2222443061743689943d4
$(package)_qtsvg_file_name=qtsvg-$($(package)_suffix)
$(package)_qtsvg_sha256_hash=628f22b8472e96ed8033d5491286ce2ab5b2c7b9fe0fe468acd78b458dc75564

$(package)_qtimageformats_file_name=qtimageformats-$($(package)_suffix)
$(package)_qtimageformats_sha256_hash=62053e66014c12edb56a05d2406c78c6b96fc66c2b5aa633e984c9fef398c0aa

$(package)_qtcharts_file_name=qtcharts-$($(package)_suffix)
$(package)_qtcharts_sha256_hash=16cd367241b2e0cd3bc8aea6f874598cd18ad83b72eed89f2713b777272572e6

$(package)_extra_sources = $($(package)_qttranslations_file_name)
$(package)_extra_sources += $($(package)_qttools_file_name)
$(package)_extra_sources += $($(package)_qtsvg_file_name)
$(package)_extra_sources += $($(package)_qtimageformats_file_name)
$(package)_extra_sources += $($(package)_qtcharts_file_name)

define $(package)_set_vars
Expand Down Expand Up @@ -136,6 +140,7 @@ $(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_f
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttranslations_file_name),$($(package)_qttranslations_file_name),$($(package)_qttranslations_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttools_file_name),$($(package)_qttools_file_name),$($(package)_qttools_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtsvg_file_name),$($(package)_qtsvg_file_name),$($(package)_qtsvg_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtimageformats_file_name),$($(package)_qtimageformats_file_name),$($(package)_qtimageformats_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtcharts_file_name),$($(package)_qtcharts_file_name),$($(package)_qtcharts_sha256_hash))
endef

Expand All @@ -145,6 +150,7 @@ define $(package)_extract_cmds
echo "$($(package)_qttranslations_sha256_hash) $($(package)_source_dir)/$($(package)_qttranslations_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qttools_sha256_hash) $($(package)_source_dir)/$($(package)_qttools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtsvg_sha256_hash) $($(package)_source_dir)/$($(package)_qtsvg_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtimageformats_sha256_hash) $($(package)_source_dir)/$($(package)_qtimageformats_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtcharts_sha256_hash) $($(package)_source_dir)/$($(package)_qtcharts_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
mkdir qtbase && \
Expand All @@ -155,6 +161,8 @@ define $(package)_extract_cmds
tar --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttools_file_name) -C qttools && \
mkdir qtsvg && \
tar --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtsvg_file_name) -C qtsvg && \
mkdir qtimageformats && \
tar --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtimageformats_file_name) -C qtimageformats && \
mkdir qtcharts && \
tar --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtcharts_file_name) -C qtcharts
endef
Expand Down Expand Up @@ -216,6 +224,10 @@ define $(package)_config_cmds
cd qtsvg/src/plugins && ../../../qtbase/bin/qmake plugins.pro -o Makefile && cd ../../.. && \
cd qtsvg/src/plugins/imageformats && ../../../../qtbase/bin/qmake imageformats.pro -o Makefile && cd ../../../.. && \
cd qtsvg/src/plugins/imageformats/svg && ../../../../../qtbase/bin/qmake svg.pro -o Makefile && cd ../../../../.. && \
cd qtimageformats && ../qtbase/bin/qmake qtimageformats.pro -o Makefile && cd .. && \
cd qtimageformats/src/plugins && ../../../qtbase/bin/qmake plugins.pro -o Makefile && cd ../../.. && \
cd qtimageformats/src/plugins/imageformats && ../../../../qtbase/bin/qmake imageformats.pro -o Makefile && cd ../../../.. && \
cd qtimageformats/src/plugins/imageformats/webp && ../../../../../qtbase/bin/qmake webp.pro -o Makefile && cd ../../../../.. && \
cd qtcharts && ../qtbase/bin/qmake qtcharts.pro -o Makefile
endef

Expand All @@ -228,6 +240,8 @@ define $(package)_build_cmds
$(MAKE) -C ../qtsvg/ && \
$(MAKE) -C ../qtsvg/src/svg && \
$(MAKE) -C ../qtsvg/src/plugins/imageformats && \
$(MAKE) -C ../qtimageformats/ && \
$(MAKE) -C ../qtimageformats/src/plugins/imageformats && \
$(MAKE) -C ../qtcharts/
endef

Expand All @@ -236,6 +250,7 @@ define $(package)_stage_cmds
$(MAKE) -C qttools/src/linguist/lrelease INSTALL_ROOT=$($(package)_staging_dir) install_target && \
$(MAKE) -C qttools/src/linguist/lupdate INSTALL_ROOT=$($(package)_staging_dir) install_target && \
$(MAKE) -C qtsvg INSTALL_ROOT=$($(package)_staging_dir) install_subtargets && \
$(MAKE) -C qtimageformats INSTALL_ROOT=$($(package)_staging_dir) install_subtargets && \
$(MAKE) -C qtcharts INSTALL_ROOT=$($(package)_staging_dir) install_subtargets && \
$(MAKE) -C qttranslations INSTALL_ROOT=$($(package)_staging_dir) install_subtargets && \
if `test -f qtbase/src/plugins/platforms/xcb/xcb-static/libxcb-static.a`; then \
Expand Down
2 changes: 1 addition & 1 deletion doc/build-unix.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ To build without GUI pass `--without-gui`.

To build with Qt 5 you need the following:

sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 libqt5svg5-dev libqt5charts5-dev qttools5-dev qttools5-dev-tools libqrencode-dev
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 libqt5svg5-dev libqt5charts5-dev qttools5-dev qttools5-dev-tools qt5-image-formats-plugins libqrencode-dev

**Note:** Ubuntu versions prior to Bionic (18.04), and Debian version prior to Buster, do not have the `libqt5charts5-dev` package. If you are compiling on one of these older versions, you will need to omit `libqt5charts5-dev` from the above command.

Expand Down
1 change: 1 addition & 0 deletions doc/dependencies.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ These are the dependencies currently used by PIVX Core. You can find instruction
| libnatpmp | [20150609](https://miniupnp.tuxfamily.org/files) | | No | | |
| libjpeg | | | | | [Yes](https://github.com/pivx-project/pivx/blob/master/depends/packages/qt.mk#L65) |
| libpng | | | | | [Yes](https://github.com/pivx-project/pivx/blob/master/depends/packages/qt.mk#L64) |
| libwebp | | | | | [Yes](https://github.com/pivx-project/pivx/blob/master/depends/packages/qt.mk#L22) |
| librsvg | | | | | |
| MiniUPnPc | [2.2.2](https://miniupnp.tuxfamily.org/files) | | No | | |
| GMP | [6.1.2](https://gmplib.org/) | | No | | |
Expand Down
4 changes: 2 additions & 2 deletions src/Makefile.qt.include
Original file line number Diff line number Diff line change
Expand Up @@ -496,8 +496,8 @@ RES_ICONS = \
qt/res/images/ic-check-box-indeterminate.svg \
qt/res/images/ic-information.svg \
qt/res/images/ic-information-hover.svg \
qt/res/images/ani-loading-dark.gif \
qt/res/images/ani-loading.gif \
qt/res/images/ani-loading-dark.webp \
qt/res/images/ani-loading-light.webp \
qt/res/images/ic-check-vote.svg \
qt/res/images/ic-check-vote-active.svg \
qt/res/images/ic-check-vote-dark.svg \
Expand Down
13 changes: 13 additions & 0 deletions src/qt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,19 @@ else()
MESSAGE(FATAL_ERROR "Could not find any Qt5 installation")
endif()

list(APPEND _WEBP_PATHS
"/usr/local/opt/qt@5/plugins/imageformats"
"/opt/homebrew/opt/qt@5/plugins/imageformats"
"/usr/lib/"
"/usr/local/lib"
)
find_library(WEBP_FOUND NAMES qwebp PATHS ${_WEBP_PATHS} PATH_SUFFIXES "qt5/plugins/imageformats")
if (WEBP_FOUND)
MESSAGE(STATUS "Found Qt5 webp plugin at ${WEBP_FOUND}")
else ()
MESSAGE(FATAL_ERROR "Qt5 webp plugin not found!")
endif ()

if (Qt5DBus_FOUND)
add_compile_options("-DUSE_DBUS")
endif()
Expand Down
10 changes: 9 additions & 1 deletion src/qt/loadingdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

#include "loadingdialog.h"

#include "qtutils.h"

#include "ui_loadingdialog.h"

#include <QMovie>
Expand Down Expand Up @@ -36,7 +39,12 @@ LoadingDialog::LoadingDialog(QWidget *parent, QString loadingMsg) :

ui->frame->setProperty("cssClass", "container-loading");

QMovie *movie = new QMovie("://ani-loading-dark");
QMovie *movie = {};
if (isLightTheme()) {
movie = new QMovie("://ani-loading-light");
} else {
movie = new QMovie("://ani-loading-dark");
}
ui->labelMovie->setText("");
ui->labelMovie->setMovie(movie);
movie->start();
Expand Down
1 change: 1 addition & 0 deletions src/qt/pivx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin);
Q_IMPORT_PLUGIN(QSvgPlugin);
Q_IMPORT_PLUGIN(QSvgIconPlugin);
Q_IMPORT_PLUGIN(QGifPlugin);
Q_IMPORT_PLUGIN(QWebpPlugin)
#endif

// Declare meta types used for QMetaObject::invokeMethod
Expand Down
4 changes: 2 additions & 2 deletions src/qt/pivx.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,8 @@
<file alias="ic-check-box-dark-active">res/images/ic-check-box-dark-active.svg</file>
<file alias="ic-check-box-indeterminate">res/images/ic-check-box-indeterminate.svg</file>
<file alias="ic-check-liliac-indeterminate">res/images/ic-check-liliac-indeterminate.svg</file>
<file alias="ani-loading-dark">res/images/ani-loading-dark.gif</file>
<file alias="ani-loading">res/images/ani-loading.gif</file>
<file alias="ani-loading-dark">res/images/ani-loading-dark.webp</file>
<file alias="ani-loading-light">res/images/ani-loading-light.webp</file>
<file alias="ic-pending">res/images/ic-pending.svg</file>
<file alias="ic-transaction-stake-delegated">res/images/ic-transaction-stake-delegated.svg</file>
<file alias="ic-transaction-stake-delegated-inactive">res/images/ic-transaction-stake-delegated-inactive.svg</file>
Expand Down
Binary file removed src/qt/res/images/ani-loading-dark.gif
Binary file not shown.
Binary file added src/qt/res/images/ani-loading-dark.webp
Binary file not shown.
Binary file added src/qt/res/images/ani-loading-light.webp
Binary file not shown.
Binary file removed src/qt/res/images/ani-loading.gif
Binary file not shown.