From 6cf1351a7768534bbc94177c3b3df826ed8dd930 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Mon, 28 Nov 2022 18:41:26 +0200 Subject: [PATCH 01/21] Remove trailing newline from translation file I also fixed it on Transifex. --- src/webui/www/translations/webui_hr.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/webui/www/translations/webui_hr.ts b/src/webui/www/translations/webui_hr.ts index e50221a75..bf7b0dc39 100644 --- a/src/webui/www/translations/webui_hr.ts +++ b/src/webui/www/translations/webui_hr.ts @@ -1598,8 +1598,7 @@ Use ';' to split multiple entries. Can use wildcard '*'. U svrhu obrane od napada ponovnog povezivanja DNS-a, trebali biste unijeti nazive domena koje koristi WebUI poslužitelj. -Koristite ';' za razdvajanje više unosa. Može koristiti zamjenski znak '*'. - +Koristite ';' za razdvajanje više unosa. Može koristiti zamjenski znak '*'. Run external program on torrent added From 2123c1c259d13c7e5eefe288eedc0fc9f7c2db54 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Tue, 29 Nov 2022 21:29:20 +0200 Subject: [PATCH 02/21] Remove dead code Leftover from the system tray code refactoring. --- src/gui/mainwindow.cpp | 4 ---- src/gui/mainwindow.h | 5 ----- 2 files changed, 9 deletions(-) diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index ad781f3a9..5fd86649c 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -50,10 +50,6 @@ #include #include -#ifdef QBT_USES_CUSTOMDBUSNOTIFICATIONS -#include "notifications/dbusnotifier.h" -#endif - #include "base/bittorrent/session.h" #include "base/bittorrent/sessionstatus.h" #include "base/global.h" diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index aace1fd12..e7af3d2e0 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -68,11 +68,6 @@ namespace Ui class MainWindow; } -#if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)) && defined(QT_DBUS_LIB) -#define QBT_USES_CUSTOMDBUSNOTIFICATIONS -class DBusNotifier; -#endif - class MainWindow final : public QMainWindow, public GUIApplicationComponent { Q_OBJECT From eb97e640cb9b270b564242615df67a0761f16bed Mon Sep 17 00:00:00 2001 From: Torsten Schwarz Date: Sat, 10 Dec 2022 08:17:21 +0100 Subject: [PATCH 03/21] WebUI: Make rename file dialog resizable PR #18154. --- src/webui/www/private/rename_file.html | 2 +- src/webui/www/private/scripts/prop-files.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/webui/www/private/rename_file.html b/src/webui/www/private/rename_file.html index 93bcf4334..49cdbada8 100644 --- a/src/webui/www/private/rename_file.html +++ b/src/webui/www/private/rename_file.html @@ -85,7 +85,7 @@

QBT_TR(New name:)QBT_TR[CONTEXT=TorrentContentTreeView]

- +
diff --git a/src/webui/www/private/scripts/prop-files.js b/src/webui/www/private/scripts/prop-files.js index 3381c5b00..2242fd81f 100644 --- a/src/webui/www/private/scripts/prop-files.js +++ b/src/webui/www/private/scripts/prop-files.js @@ -561,11 +561,11 @@ window.qBittorrent.PropFiles = (function() { contentURL: 'rename_file.html?hash=' + hash + '&isFolder=' + node.isFolder + '&path=' + encodeURIComponent(path), scrollbars: false, - resizable: false, + resizable: true, maximizable: false, paddingVertical: 0, paddingHorizontal: 0, - width: 250, + width: 400, height: 100 }); }, From 40d94fd8e98708ed02590d3e726bd17f3cfdb1ad Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Sun, 11 Dec 2022 11:24:13 +0800 Subject: [PATCH 04/21] Remove docker information It has been moved to its own repo: https://github.com/qbittorrent/docker-qbittorrent-nox PR #18199. --- dist/docker/.env | 8 --- dist/docker/Dockerfile | 62 -------------------- dist/docker/Readme.md | 101 --------------------------------- dist/docker/docker-compose.yml | 25 -------- dist/docker/entrypoint.sh | 35 ------------ 5 files changed, 231 deletions(-) delete mode 100644 dist/docker/.env delete mode 100644 dist/docker/Dockerfile delete mode 100644 dist/docker/Readme.md delete mode 100644 dist/docker/docker-compose.yml delete mode 100755 dist/docker/entrypoint.sh diff --git a/dist/docker/.env b/dist/docker/.env deleted file mode 100644 index 27246a6b4..000000000 --- a/dist/docker/.env +++ /dev/null @@ -1,8 +0,0 @@ -# refer to Readme.md for an explanation of the variables - -QBT_EULA= -QBT_VERSION=devel -QBT_WEBUI_PORT=8080 - -QBT_CONFIG_PATH=/config -QBT_DOWNLOADS_PATH=/downloads diff --git a/dist/docker/Dockerfile b/dist/docker/Dockerfile deleted file mode 100644 index e5111d4dd..000000000 --- a/dist/docker/Dockerfile +++ /dev/null @@ -1,62 +0,0 @@ -# image for building -FROM alpine:latest AS builder - -ARG QBT_VERSION - -# alpine linux qbittorrent package: https://git.alpinelinux.org/aports/tree/community/qbittorrent/APKBUILD - -RUN \ - apk --update-cache add \ - boost-dev \ - cmake \ - g++ \ - libtorrent-rasterbar-dev \ - ninja \ - qt6-qtbase-dev \ - qt6-qttools-dev - -RUN \ - if [ "$QBT_VERSION" = "devel" ]; then \ - wget https://github.com/qbittorrent/qBittorrent/archive/refs/heads/master.zip && \ - unzip master.zip && \ - cd qBittorrent-master ; \ - else \ - wget "https://github.com/qbittorrent/qBittorrent/archive/refs/tags/release-${QBT_VERSION}.tar.gz" && \ - tar -xf "release-${QBT_VERSION}.tar.gz" && \ - cd "qBittorrent-release-${QBT_VERSION}" ; \ - fi && \ - cmake \ - -B build \ - -G Ninja \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DGUI=OFF \ - -DQT6=ON \ - -DSTACKTRACE=OFF && \ - cmake --build build && \ - cmake --install build - -# image for running -FROM alpine:latest - -RUN \ - apk --no-cache add \ - doas \ - libtorrent-rasterbar \ - python3 \ - qt6-qtbase \ - tini - -RUN \ - adduser \ - -D \ - -H \ - -s /sbin/nologin \ - -u 1000 \ - qbtUser && \ - echo "permit nopass :root" >> "/etc/doas.d/doas.conf" - -COPY --from=builder /usr/local/bin/qbittorrent-nox /usr/bin/qbittorrent-nox - -COPY entrypoint.sh /entrypoint.sh - -ENTRYPOINT ["/sbin/tini", "-g", "--", "/entrypoint.sh"] diff --git a/dist/docker/Readme.md b/dist/docker/Readme.md deleted file mode 100644 index b4e2a73d1..000000000 --- a/dist/docker/Readme.md +++ /dev/null @@ -1,101 +0,0 @@ -# qBittorrent-nox Docker Image - -This Dockerfile allows you to build a Docker Image containing qBittorrent-nox - -## Prerequisites - -In order to build/run this image you'll need Docker installed: https://docs.docker.com/get-docker/ - -If you don't need the GUI, you can just install Docker Engine: https://docs.docker.com/engine/install/ - -It is also recommended to install Docker Compose as it can significantly ease the process: https://docs.docker.com/compose/install/ - -## Building Docker Image - -* If you are using Docker (not Docker Compose) then run the following commands in this folder: - ```shell - export \ - QBT_VERSION=devel - docker build \ - --build-arg QBT_VERSION \ - -t qbittorrent-nox:"$QBT_VERSION" \ - . - ``` - -* If you are using Docker Compose then you should edit `.env` file first. - You can find an explanation of the variables in the following [Parameters](#parameters) section. \ - Then run the following commands in this folder: - ```shell - docker compose build \ - --build-arg QBT_VERSION - ``` - -### Parameters - -#### Environment variables - -* `QBT_EULA` \ - This environment variable defines whether you accept the end-user license agreement (EULA) of qBittorrent. \ - **Put `accept` only if you understand and accepted the EULA.** You can find - the EULA [here](https://github.com/qbittorrent/qBittorrent/blob/56667e717b82c79433ecb8a5ff6cc2d7b315d773/src/app/main.cpp#L320-L323). -* `QBT_VERSION` \ - This environment variable specifies the version of qBittorrent-nox to be built. \ - For example, `4.4.0` is a valid entry. You can find all tagged versions [here](https://github.com/qbittorrent/qBittorrent/tags). \ - Or you can put `devel` to build the latest development version. -* `QBT_WEBUI_PORT` \ - This environment variable sets the port number which qBittorrent WebUI will be binded to. - -#### Volumes - -There are some paths involved: -* `/config` \ - Full path to a folder on your host machine which will store qBittorrent configurations. - Using relative path won't work. -* `/downloads` \ - Full path to a folder on your host machine which will store the files downloaded by qBittorrent. - Using relative path won't work. - -## Running container - -* Using Docker (not Docker Compose), simply run: - ```shell - export \ - QBT_EULA=accept \ - QBT_VERSION=devel \ - QBT_WEBUI_PORT=8080 \ - QBT_CONFIG_PATH="/tmp/bbb/config" - QBT_DOWNLOADS_PATH="/tmp/bbb/downloads" - docker run \ - -t \ - --read-only \ - --rm \ - --tmpfs /tmp \ - --name qbittorrent-nox \ - -e QBT_EULA \ - -e QBT_WEBUI_PORT \ - -p "$QBT_WEBUI_PORT":"$QBT_WEBUI_PORT"/tcp \ - -p 6881:6881/tcp \ - -p 6881:6881/udp \ - -v "$QBT_CONFIG_PATH":/config \ - -v "$QBT_DOWNLOADS_PATH":/downloads \ - qbittorrent-nox:"$QBT_VERSION" - ``` - -* Using Docker Compose: - ```shell - docker compose up - ``` - -Then you can login at: `http://127.0.0.1:8080` - -## Stopping container - -* Using Docker (not Docker Compose): - ```shell - docker stop -t 1800 qbittorrent-nox - ``` - -* Using Docker Compose: - ```shell - docker compose down - ``` diff --git a/dist/docker/docker-compose.yml b/dist/docker/docker-compose.yml deleted file mode 100644 index c5cab9846..000000000 --- a/dist/docker/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -version: "3.9" - -services: - qbittorrent-nox: - build: . - container_name: qbittorrent-nox - environment: - - QBT_EULA=${QBT_EULA} - - QBT_VERSION=${QBT_VERSION} - - QBT_WEBUI_PORT=${QBT_WEBUI_PORT} - image: qbittorrent-nox:${QBT_VERSION} - ports: - # for bittorrent traffic - - 6881:6881/tcp - - 6881:6881/udp - # for WebUI - - ${QBT_WEBUI_PORT}:${QBT_WEBUI_PORT}/tcp - read_only: true - stop_grace_period: 30m - tmpfs: - - /tmp - tty: true - volumes: - - ${QBT_CONFIG_PATH}:/config - - ${QBT_DOWNLOADS_PATH}:/downloads diff --git a/dist/docker/entrypoint.sh b/dist/docker/entrypoint.sh deleted file mode 100755 index c49f0b76c..000000000 --- a/dist/docker/entrypoint.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh - -downloadsPath="/downloads" -profilePath="/config" -qbtConfigFile="$profilePath/qBittorrent/config/qBittorrent.conf" - -if [ ! -f "$qbtConfigFile" ]; then - mkdir -p "$(dirname $qbtConfigFile)" - cat << EOF > "$qbtConfigFile" -[BitTorrent] -Session\DefaultSavePath=/downloads -Session\Port=6881 -Session\TempPath=/downloads/temp - -[LegalNotice] -Accepted=false -EOF - - if [ "$QBT_EULA" = "accept" ]; then - sed -i '/^\[LegalNotice\]$/{$!{N;s|\(\[LegalNotice\]\nAccepted=\).*|\1true|}}' "$qbtConfigFile" - else - sed -i '/^\[LegalNotice\]$/{$!{N;s|\(\[LegalNotice\]\nAccepted=\).*|\1false|}}' "$qbtConfigFile" - fi -fi - -# those are owned by root by default -# don't change existing files owner in `$downloadsPath` -chown qbtUser:qbtUser "$downloadsPath" -chown qbtUser:qbtUser -R "$profilePath" - -doas -u qbtUser \ - qbittorrent-nox \ - --profile="$profilePath" \ - --webui-port="$QBT_WEBUI_PORT" \ - "$@" From 2517e688d9a68998ac3d9b2c91d18d67119f7cd6 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sat, 10 Dec 2022 16:53:42 +0200 Subject: [PATCH 05/21] [CI Ubuntu] Strip installed components --- .github/workflows/ci_ubuntu.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_ubuntu.yaml b/.github/workflows/ci_ubuntu.yaml index 1caa0c1fa..103a7c968 100644 --- a/.github/workflows/ci_ubuntu.yaml +++ b/.github/workflows/ci_ubuntu.yaml @@ -78,7 +78,7 @@ jobs: cmake --build build --target qbt_update_translations cmake --build build cmake --build build --target check - DESTDIR="qbittorrent" cmake --install build + DESTDIR="qbittorrent" cmake --install build --strip - name: Build qBittorrent (Qt6) if: ${{ startsWith(matrix.qt_version, 6) }} @@ -97,7 +97,7 @@ jobs: cmake --build build --target qbt_update_translations cmake --build build cmake --build build --target check - DESTDIR="qbittorrent" cmake --install build + DESTDIR="qbittorrent" cmake --install build --strip - name: Prepare build artifacts run: | From aa43fc8ff457a1e3032bbdeb987c868b92d63d20 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sat, 10 Dec 2022 17:12:00 +0200 Subject: [PATCH 06/21] [CI Ubuntu] Build AppImage Upload an AppImage artifact on CI builds. This AppImage is a simplified version of the official one. It is meant to help with debugging PRs that fix issues. --- .github/workflows/ci_ubuntu.yaml | 29 ++++++++++++++++++- .../workflows/helper/appimage/export_vars.sh | 11 +++++++ .../org.qbittorrent.qBittorrent.desktop | 6 ++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/helper/appimage/export_vars.sh create mode 100644 .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop diff --git a/.github/workflows/ci_ubuntu.yaml b/.github/workflows/ci_ubuntu.yaml index 103a7c968..053077ef4 100644 --- a/.github/workflows/ci_ubuntu.yaml +++ b/.github/workflows/ci_ubuntu.yaml @@ -107,8 +107,35 @@ jobs: mkdir upload/cmake/libtorrent cp libtorrent/build/compile_commands.json upload/cmake/libtorrent + - name: 'AppImage: Prepare env' + run: | + sudo apt install libfuse2 + wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage + wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage + wget https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage + chmod +x linuxdeploy-x86_64.AppImage + chmod +x linuxdeploy-plugin-qt-x86_64.AppImage + chmod +x linuxdeploy-plugin-appimage-x86_64.AppImage + + - name: 'AppImage: Prepare nox' + if: matrix.qbt_gui == 'GUI=OFF' + run: | + mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps/ + mkdir -p qbittorrent/usr/share/applications/ + cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg + cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop + + - name: 'AppImage: Package' + run: | + ./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --plugin qt + rm qbittorrent/apprun-hooks/* + cp .github/workflows/helper/appimage/export_vars.sh qbittorrent/apprun-hooks/export_vars.sh + NO_APPSTREAM=1 \ + OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \ + ./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --output appimage + - name: Upload build artifacts uses: actions/upload-artifact@v3 with: - name: build-info_ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }} + name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }} path: upload diff --git a/.github/workflows/helper/appimage/export_vars.sh b/.github/workflows/helper/appimage/export_vars.sh new file mode 100644 index 000000000..cbedc852e --- /dev/null +++ b/.github/workflows/helper/appimage/export_vars.sh @@ -0,0 +1,11 @@ +# this file is called from AppRun so 'root_dir' will point to where AppRun is +root_dir="$(readlink -f "$(dirname "$0")")" + +# Insert the default values because after the test we prepend our path +# and it will create problems with DEs (eg KDE) that don't set the variable +# and rely on the default paths +if [[ -z ${XDG_DATA_DIRS} ]]; then + XDG_DATA_DIRS="/usr/local/share/:/usr/share/" +fi + +export XDG_DATA_DIRS="${root_dir}/usr/share:${XDG_DATA_DIRS}" diff --git a/.github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop b/.github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop new file mode 100644 index 000000000..a00bf46df --- /dev/null +++ b/.github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Name=qBittorrent +Exec=qbittorrent-nox %U +Icon=qbittorrent +Type=Application +Categories=Network From 5e29960da27d03abb704bb779a88c0271adc7c78 Mon Sep 17 00:00:00 2001 From: David Xuang Date: Thu, 22 Dec 2022 19:58:26 +0800 Subject: [PATCH 07/21] Prevent incorrect line breaking PR #18236. --- src/webui/www/private/views/properties.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webui/www/private/views/properties.html b/src/webui/www/private/views/properties.html index bd505f318..dc3a3bf83 100644 --- a/src/webui/www/private/views/properties.html +++ b/src/webui/www/private/views/properties.html @@ -1,7 +1,7 @@
- +
QBT_TR(Progress:)QBT_TR[CONTEXT=PropertiesWidget]QBT_TR(Progress:)QBT_TR[CONTEXT=PropertiesWidget]
From dcbff74dc08b47a4cabe16543d99a868faff83b1 Mon Sep 17 00:00:00 2001 From: Jonatan <84130654+reportxx@users.noreply.github.com> Date: Thu, 22 Dec 2022 12:01:23 +0000 Subject: [PATCH 08/21] NSIS: Update Swedish translation PR #18240. --- dist/windows/installer-translations/swedish.nsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/windows/installer-translations/swedish.nsi b/dist/windows/installer-translations/swedish.nsi index b5912d741..674c4ee44 100644 --- a/dist/windows/installer-translations/swedish.nsi +++ b/dist/windows/installer-translations/swedish.nsi @@ -27,11 +27,11 @@ LangString inst_unist ${LANG_SWEDISH} "Avinstallerar tidigare version." ;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent." LangString launch_qbt ${LANG_SWEDISH} "Kör qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." -LangString inst_requires_64bit ${LANG_SWEDISH} "Installationsprogrammet fungerar endast i 64-bitars Windows-versioner." +LangString inst_requires_64bit ${LANG_SWEDISH} "Det här installationsprogrammet fungerar endast i 64-bitars Windows-versioner." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_SWEDISH} "Den här qBittorrent-versionen kräver minst Windows 7." ;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_SWEDISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_SWEDISH} "Det här installationsprogrammet kräver minst Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SWEDISH} "Avinstallera qBittorrent" From 5dc1c108482f97362776df4faf8cc6c5ba2314c3 Mon Sep 17 00:00:00 2001 From: xavier2k6 <42386382+xavier2k6@users.noreply.github.com> Date: Sat, 24 Dec 2022 17:03:12 +0000 Subject: [PATCH 09/21] GHA CI: Bump Boost version to 1.81.0 on Windows/macOS PR #18279. --- .github/workflows/ci_macos.yaml | 2 +- .github/workflows/ci_windows.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_macos.yaml b/.github/workflows/ci_macos.yaml index 2dc99ca96..dd0de04ca 100644 --- a/.github/workflows/ci_macos.yaml +++ b/.github/workflows/ci_macos.yaml @@ -46,7 +46,7 @@ jobs: curl \ -L \ -o "${{ runner.temp }}/boost.tar.bz2" \ - "https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2" + "https://boostorg.jfrog.io/artifactory/main/release/1.81.0/source/boost_1_81_0.tar.bz2" tar -xf "${{ runner.temp }}/boost.tar.bz2" -C "${{ github.workspace }}/.." mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" diff --git a/.github/workflows/ci_windows.yaml b/.github/workflows/ci_windows.yaml index a384aa344..bca52a8e1 100644 --- a/.github/workflows/ci_windows.yaml +++ b/.github/workflows/ci_windows.yaml @@ -67,7 +67,7 @@ jobs: - name: Install boost run: | aria2c ` - "https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.7z" ` + "https://boostorg.jfrog.io/artifactory/main/release/1.81.0/source/boost_1_81_0.7z" ` -d "${{ runner.temp }}" ` -o "boost.7z" 7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.." From eb98a0424571071d77d7f8158911e6d7923fb9d9 Mon Sep 17 00:00:00 2001 From: Fidel Selva Date: Fri, 6 Jan 2023 13:17:15 -0600 Subject: [PATCH 10/21] WebUI: Improve hotkeys PR #18326. Fixes #18325. Fixes #14033. --- src/webui/www/private/scripts/client.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/webui/www/private/scripts/client.js b/src/webui/www/private/scripts/client.js index d9e4bc2b8..c1e3a2c68 100644 --- a/src/webui/www/private/scripts/client.js +++ b/src/webui/www/private/scripts/client.js @@ -1350,14 +1350,26 @@ new Keyboard({ defaultEventType: 'keydown', events: { 'ctrl+a': function(event) { + if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") + return; + if (event.target.isContentEditable) + return; torrentsTable.selectAll(); event.preventDefault(); }, 'delete': function(event) { + if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") + return; + if (event.target.isContentEditable) + return; deleteFN(); event.preventDefault(); }, 'shift+delete': (event) => { + if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") + return; + if (event.target.isContentEditable) + return; deleteFN(true); event.preventDefault(); } From 961e05e9a84729d0ff6d4d195a4e36f982023d1c Mon Sep 17 00:00:00 2001 From: Midhun V Nadh <32438353+midhunvnadh@users.noreply.github.com> Date: Mon, 16 Jan 2023 17:42:35 +0530 Subject: [PATCH 11/21] Remove suggestions while searching for torrents Don't want torrent search history to pop up next time you try to search for torrents, right? There are people who would search for 18+ content and what they searched would load up next time they are about to search. PR #18285. --- src/webui/www/private/views/search.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webui/www/private/views/search.html b/src/webui/www/private/views/search.html index cefb4654c..b37ca8541 100644 --- a/src/webui/www/private/views/search.html +++ b/src/webui/www/private/views/search.html @@ -80,7 +80,7 @@
- + From d20633f9cc0b84332ce81bd18a9f51b8ac544300 Mon Sep 17 00:00:00 2001 From: Deividas <57040831+valiukasd@users.noreply.github.com> Date: Mon, 23 Jan 2023 13:34:36 +0200 Subject: [PATCH 12/21] NSIS: Update Lithuanian translation PR #18434. --- .../installer-translations/lithuanian.nsi | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/dist/windows/installer-translations/lithuanian.nsi b/dist/windows/installer-translations/lithuanian.nsi index e69ed294f..b46782b9e 100644 --- a/dist/windows/installer-translations/lithuanian.nsi +++ b/dist/windows/installer-translations/lithuanian.nsi @@ -3,7 +3,7 @@ ;LangString inst_qbt_req ${LANG_ENGLISH} "qBittorrent (required)" LangString inst_qbt_req ${LANG_LITHUANIAN} "qBittorrent (reikalingas)" ;LangString inst_dekstop ${LANG_ENGLISH} "Create Desktop Shortcut" -LangString inst_dekstop ${LANG_LITHUANIAN} "Sukurti darbalaukyje nuorodą" +LangString inst_dekstop ${LANG_LITHUANIAN} "Sukurti nuorodą darbalaukyje" ;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut" LangString inst_startmenu ${LANG_LITHUANIAN} "Sukurti Pradėti meniu nuorodą" ;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up" @@ -13,27 +13,27 @@ LangString inst_torrent ${LANG_LITHUANIAN} "Atidaryti .torrent failus su qBittor ;LangString inst_magnet ${LANG_ENGLISH} "Open magnet links with qBittorrent" LangString inst_magnet ${LANG_LITHUANIAN} "Atidaryti magneto nuorodas su qBittorrent" ;LangString inst_firewall ${LANG_ENGLISH} "Add Windows Firewall rule" -LangString inst_firewall ${LANG_LITHUANIAN} "Sukurti Windows užkardos leidimą" +LangString inst_firewall ${LANG_LITHUANIAN} "Sukurti Windows interneto užkardos leidimą" ;LangString inst_pathlimit ${LANG_ENGLISH} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)" -LangString inst_pathlimit ${LANG_LITHUANIAN} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)" +LangString inst_pathlimit ${LANG_LITHUANIAN} "Išjungti Windows path ilgio limitaciją (260 ženklų MAX_PATH limitacija, reikalinga versija yra Windows 10 1607 ar naujesnė)" ;LangString inst_firewallinfo ${LANG_ENGLISH} "Adding Windows Firewall rule" LangString inst_firewallinfo ${LANG_LITHUANIAN} "Pridedu Windows užkardos leidimą" ;LangString inst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before installing." -LangString inst_warning ${LANG_LITHUANIAN} "qBittorrent yra paleistas. Prašau uždaryti programą prieš įdiegiant." +LangString inst_warning ${LANG_LITHUANIAN} "qBittorrent yra paleistas. Prašome uždaryti programą prieš įdiegiant." ;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact." -LangString inst_uninstall_question ${LANG_LITHUANIAN} "Current version will be uninstalled. User settings and torrents will remain intact." +LangString inst_uninstall_question ${LANG_LITHUANIAN} "Dabartinė versija bus pašalinta. Naudotojo nustatymai ir torrentai liks nepakeisti." ;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version." -LangString inst_unist ${LANG_LITHUANIAN} "Šalinu ankstesnę versiją." +LangString inst_unist ${LANG_LITHUANIAN} "Šalinama ankstesnė versija." ;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent." LangString launch_qbt ${LANG_LITHUANIAN} "Paleisti qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." -LangString inst_requires_64bit ${LANG_LITHUANIAN} "This installer works only in 64-bit Windows versions." +LangString inst_requires_64bit ${LANG_LITHUANIAN} "Šis įdiegėjas veikia tik su 64 bitų Windows versija." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." -LangString inst_requires_win7 ${LANG_LITHUANIAN} "This qBittorrent version requires at least Windows 7." +LangString inst_requires_win7 ${LANG_LITHUANIAN} "Ši qBittorent versija reikalauja bent Windows 7." ;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_LITHUANIAN} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_LITHUANIAN} "Šis įdiegėjas reikalauja bent Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" -LangString inst_uninstall_link_description ${LANG_LITHUANIAN} "Uninstall qBittorrent" +LangString inst_uninstall_link_description ${LANG_LITHUANIAN} "Pašalinti qBittorrent" ;------------------------------------ ;Uninstaller strings @@ -49,14 +49,14 @@ LangString remove_registry ${LANG_LITHUANIAN} "Pašalinti registro raktus" ;LangString remove_conf ${LANG_ENGLISH} "Remove configuration files" LangString remove_conf ${LANG_LITHUANIAN} "Pašalinti nustatymų failus" ;LangString remove_firewall ${LANG_ENGLISH} "Remove Windows Firewall rule" -LangString remove_firewall ${LANG_LITHUANIAN} "Pašalinti Windows užkardos leidimą" +LangString remove_firewall ${LANG_LITHUANIAN} "Pašalinti Windows interneto užkardos leidimą" ;LangString remove_firewallinfo ${LANG_ENGLISH} "Removing Windows Firewall rule" -LangString remove_firewallinfo ${LANG_LITHUANIAN} "Šalinu Windows užkardos leidimą" +LangString remove_firewallinfo ${LANG_LITHUANIAN} "Šalinamas Windows interneto užkardos leidimas" ;LangString remove_cache ${LANG_ENGLISH} "Remove torrents and cached data" -LangString remove_cache ${LANG_LITHUANIAN} "Pašalinti torentus ir podėlio duomenis" +LangString remove_cache ${LANG_LITHUANIAN} "Pašalinti torentus ir talpyklos duomenis" ;LangString uninst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before uninstalling." -LangString uninst_warning ${LANG_LITHUANIAN} "qBittorrent yra paleistas. Prašau uždarykite programą prieš išdiegiant." +LangString uninst_warning ${LANG_LITHUANIAN} "qBittorrent yra paleistas. Prašome uždaryti programą prieš išdiegiant." ;LangString uninst_tor_warn ${LANG_ENGLISH} "Not removing .torrent association. It is associated with:" -LangString uninst_tor_warn ${LANG_LITHUANIAN} "Negaliu pašalinti .torrent asociacijos. Ji yra susieti su:" +LangString uninst_tor_warn ${LANG_LITHUANIAN} "Neįmanoma pašalinti .torrent asociacijos. Ji yra susieta su:" ;LangString uninst_mag_warn ${LANG_ENGLISH} "Not removing magnet association. It is associated with:" -LangString uninst_mag_warn ${LANG_LITHUANIAN} "Negaliu pašalinti magneto asociacijos. Jis susietas su:" +LangString uninst_mag_warn ${LANG_LITHUANIAN} "Neįmanoma pašalinti magneto asociacijos. Ji yra susieta su:" From cc7f8372a8af013ba678e423fb3d2935f9777bb2 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sun, 22 Jan 2023 02:31:58 +0200 Subject: [PATCH 13/21] Migrate setting about Simplified Chinese locale Related to PR #17978 --- src/app/upgrade.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/app/upgrade.cpp b/src/app/upgrade.cpp index 9a22515c5..24a5dae83 100644 --- a/src/app/upgrade.cpp +++ b/src/app/upgrade.cpp @@ -384,6 +384,18 @@ namespace } } #endif + + void migrateChineseLocale() + { + auto *settingsStorage = SettingsStorage::instance(); + const auto key = u"Preferences/General/Locale"_qs; + if (settingsStorage->hasKey(key)) + { + const auto locale = settingsStorage->loadValue(key); + if (locale.compare(u"zh"_qs, Qt::CaseInsensitive) == 0) + settingsStorage->storeValue(key, u"zh_CN"_qs); + } + } } bool upgrade(const bool /*ask*/) @@ -413,6 +425,9 @@ bool upgrade(const bool /*ask*/) migrateMemoryPrioritySettings(); #endif + { + migrateChineseLocale(); + } version = MIGRATION_VERSION; } From 41c3a8af01bec844d801bfc11f25984858821160 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sun, 22 Jan 2023 17:47:32 +0200 Subject: [PATCH 14/21] Migrate settings much earlier --- src/app/application.cpp | 13 +++++++++++++ src/app/main.cpp | 25 +++++-------------------- src/app/upgrade.cpp | 2 +- src/app/upgrade.h | 2 +- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/app/application.cpp b/src/app/application.cpp index 988543098..7908a9540 100644 --- a/src/app/application.cpp +++ b/src/app/application.cpp @@ -88,6 +88,7 @@ #include "base/version.h" #include "applicationinstancemanager.h" #include "filelogger.h" +#include "upgrade.h" #ifndef DISABLE_GUI #include "gui/addnewtorrentdialog.h" @@ -171,6 +172,18 @@ Application::Application(int &argc, char **argv) SettingsStorage::initInstance(); Preferences::initInstance(); + const bool firstTimeUser = !Preferences::instance()->getAcceptedLegal(); + if (!firstTimeUser) + { + if (!upgrade()) + throw RuntimeError(u"Failed migration of old settings"_qs); // Not translatable. Translation isn't configured yet. + handleChangedDefaults(DefaultPreferencesMode::Legacy); + } + else + { + handleChangedDefaults(DefaultPreferencesMode::Current); + } + initializeTranslation(); connect(this, &QCoreApplication::aboutToQuit, this, &Application::cleanup); diff --git a/src/app/main.cpp b/src/app/main.cpp index 97e6869a1..69d91f739 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -221,26 +221,6 @@ int main(int argc, char *argv[]) app->setAttribute(Qt::AA_DontShowIconsInMenus); #endif - if (!firstTimeUser) - { - handleChangedDefaults(DefaultPreferencesMode::Legacy); - -#ifndef DISABLE_GUI - if (!upgrade()) return EXIT_FAILURE; -#elif defined(Q_OS_WIN) - if (!upgrade(_isatty(_fileno(stdin)) - && _isatty(_fileno(stdout)))) return EXIT_FAILURE; -#else - if (!upgrade(!params.shouldDaemonize - && isatty(fileno(stdin)) - && isatty(fileno(stdout)))) return EXIT_FAILURE; -#endif - } - else - { - handleChangedDefaults(DefaultPreferencesMode::Current); - } - #if defined(DISABLE_GUI) && !defined(Q_OS_WIN) if (params.shouldDaemonize) { @@ -274,6 +254,11 @@ int main(int argc, char *argv[]) displayBadArgMessage(er.message()); return EXIT_FAILURE; } + catch (const RuntimeError &er) + { + qDebug() << er.message(); + return EXIT_FAILURE; + } } #if !defined(DISABLE_GUI) diff --git a/src/app/upgrade.cpp b/src/app/upgrade.cpp index 24a5dae83..6644c0182 100644 --- a/src/app/upgrade.cpp +++ b/src/app/upgrade.cpp @@ -398,7 +398,7 @@ namespace } } -bool upgrade(const bool /*ask*/) +bool upgrade() { CachedSettingValue version {MIGRATION_VERSION_KEY, 0}; diff --git a/src/app/upgrade.h b/src/app/upgrade.h index 4271f5a19..0ef24fae8 100644 --- a/src/app/upgrade.h +++ b/src/app/upgrade.h @@ -35,5 +35,5 @@ enum class DefaultPreferencesMode }; void handleChangedDefaults(DefaultPreferencesMode mode); -bool upgrade(bool ask = true); +bool upgrade(); void setCurrentMigrationVersion(); From af91f4ed51ef4c767588965d8074a1b3effc765b Mon Sep 17 00:00:00 2001 From: sotiris-bos <39224671+sotiris-bos@users.noreply.github.com> Date: Sun, 25 Dec 2022 15:41:00 +0200 Subject: [PATCH 15/21] WebAPI: Expose "IS PRIVATE" flag PR #18227. Closes #16052. --- src/webui/api/torrentscontroller.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/webui/api/torrentscontroller.cpp b/src/webui/api/torrentscontroller.cpp index e998cbc7a..3d055a464 100644 --- a/src/webui/api/torrentscontroller.cpp +++ b/src/webui/api/torrentscontroller.cpp @@ -104,6 +104,7 @@ const QString KEY_PROP_CREATION_DATE = u"creation_date"_qs; const QString KEY_PROP_SAVE_PATH = u"save_path"_qs; const QString KEY_PROP_DOWNLOAD_PATH = u"download_path"_qs; const QString KEY_PROP_COMMENT = u"comment"_qs; +const QString KEY_PROP_ISPRIVATE = u"is_private"_qs; // File keys const QString KEY_FILE_INDEX = u"index"_qs; @@ -430,6 +431,7 @@ void TorrentsController::propertiesAction() dataDict[KEY_PROP_PIECE_SIZE] = torrent->pieceLength(); dataDict[KEY_PROP_PIECES_HAVE] = torrent->piecesHave(); dataDict[KEY_PROP_CREATED_BY] = torrent->creator(); + dataDict[KEY_PROP_ISPRIVATE] = torrent->isPrivate(); dataDict[KEY_PROP_ADDITION_DATE] = static_cast(torrent->addedTime().toSecsSinceEpoch()); if (torrent->hasMetadata()) { From bfda520ef4aee92236a51e7ce7f99ae280136996 Mon Sep 17 00:00:00 2001 From: qbittorrentfan <120124327+qbittorrentfan@users.noreply.github.com> Date: Sun, 25 Dec 2022 14:41:55 +0100 Subject: [PATCH 16/21] properties endpoint returns name/torrentID PR #18218. --- src/webui/api/torrentscontroller.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/webui/api/torrentscontroller.cpp b/src/webui/api/torrentscontroller.cpp index 3d055a464..6ede337e5 100644 --- a/src/webui/api/torrentscontroller.cpp +++ b/src/webui/api/torrentscontroller.cpp @@ -388,6 +388,10 @@ void TorrentsController::infoAction() // - "save_path": Torrent save path // - "download_path": Torrent download path // - "comment": Torrent comment +// - "infohash_v1": Torrent v1 infohash (or empty string for v2 torrents) +// - "infohash_v2": Torrent v2 infohash (or empty string for v1 torrents) +// - "hash": Torrent TorrentID (infohashv1 for v1 torrents, truncated infohashv2 for v2/hybrid torrents) +// - "name": Torrent name void TorrentsController::propertiesAction() { requireParams({u"hash"_qs}); @@ -401,6 +405,8 @@ void TorrentsController::propertiesAction() dataDict[KEY_TORRENT_INFOHASHV1] = torrent->infoHash().v1().toString(); dataDict[KEY_TORRENT_INFOHASHV2] = torrent->infoHash().v2().toString(); + dataDict[KEY_TORRENT_NAME] = torrent->name(); + dataDict[KEY_TORRENT_ID] = torrent->id().toString(); dataDict[KEY_PROP_TIME_ELAPSED] = torrent->activeTime(); dataDict[KEY_PROP_SEEDING_TIME] = torrent->finishedTime(); dataDict[KEY_PROP_ETA] = static_cast(torrent->eta()); From 2204757eca01453fb5d2ea9ee8f302a9a74b92ad Mon Sep 17 00:00:00 2001 From: "Nowshed H. Imran" Date: Mon, 16 Jan 2023 18:01:20 +0600 Subject: [PATCH 17/21] Fix Pause icon PR #18110. --- src/icons/torrent-stop.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/icons/torrent-stop.svg b/src/icons/torrent-stop.svg index 48141141c..6a6f574f0 100644 --- a/src/icons/torrent-stop.svg +++ b/src/icons/torrent-stop.svg @@ -1 +1 @@ - \ No newline at end of file + From ece839739ea766f96be74f63acef9dd7f88e736e Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Wed, 25 Jan 2023 20:35:21 +0200 Subject: [PATCH 18/21] NSIS: Set shortcut's workind dir to install path --- dist/windows/installer.nsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dist/windows/installer.nsi b/dist/windows/installer.nsi index 75f2a0f95..95d002a6c 100644 --- a/dist/windows/installer.nsi +++ b/dist/windows/installer.nsi @@ -35,6 +35,8 @@ Section $(inst_qbt_req) ;"qBittorrent (required)" SetOutPath "$INSTDIR\translations" ; Put files there File /r "translations\qt*.qm" + ; Restore output path because it affects `CreateShortCut`. It affects the "Start in" field. + SetOutPath $INSTDIR ; Write the installation path into the registry WriteRegStr HKLM "Software\qBittorrent" "InstallLocation" "$INSTDIR" From 9f743aab86db42a055d4954d05d3455e96a31d47 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Wed, 25 Jan 2023 23:27:06 +0200 Subject: [PATCH 19/21] Adjust env variable for PDB discovery --- src/app/main.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/app/main.cpp b/src/app/main.cpp index 69d91f739..bbb293479 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -118,6 +118,17 @@ int main(int argc, char *argv[]) // Create Application auto app = std::make_unique(argc, argv); +#ifdef Q_OS_WIN + // QCoreApplication::applicationDirPath() needs an Application object instantiated first + // Let's hope that there won't be a crash before this line + const char *envName = "_NT_SYMBOL_PATH"; + const QString envValue = qEnvironmentVariable(envName); + if (envValue.isEmpty()) + qputenv(envName, Application::applicationDirPath().toLocal8Bit()); + else + qputenv(envName, u"%1;%2"_qs.arg(envValue, Application::applicationDirPath()).toLocal8Bit()); +#endif + const QBtCommandLineParameters params = app->commandLineArgs(); if (!params.unknownParameter.isEmpty()) { From 1aebcd3258f6c694b52937d897e06c8e1f1e2e9d Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Fri, 27 Jan 2023 17:42:48 +0200 Subject: [PATCH 20/21] [WebUI] Use new pause icon color for toolbar/menu This the webui part of PR #18110 --- src/webui/www/private/images/torrent-stop.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webui/www/private/images/torrent-stop.svg b/src/webui/www/private/images/torrent-stop.svg index 48141141c..6a6f574f0 100644 --- a/src/webui/www/private/images/torrent-stop.svg +++ b/src/webui/www/private/images/torrent-stop.svg @@ -1 +1 @@ - \ No newline at end of file + From a32182f794297d265668929f43719c34434645df Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Fri, 27 Jan 2023 17:46:39 +0200 Subject: [PATCH 21/21] Use previous color for pause icon for indicating status Affects transfer list and status filters Related to PR #18110 --- src/gui/transferlistfilterswidget.cpp | 2 +- src/gui/transferlistmodel.cpp | 2 +- src/icons/icons.qrc | 1 + src/icons/stopped.svg | 1 + src/webui/www/private/images/stopped.svg | 1 + src/webui/www/private/scripts/dynamicTable.js | 2 +- src/webui/www/private/views/filters.html | 2 +- src/webui/www/webui.qrc | 1 + 8 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 src/icons/stopped.svg create mode 100644 src/webui/www/private/images/stopped.svg diff --git a/src/gui/transferlistfilterswidget.cpp b/src/gui/transferlistfilterswidget.cpp index 0a62098ac..e024e535c 100644 --- a/src/gui/transferlistfilterswidget.cpp +++ b/src/gui/transferlistfilterswidget.cpp @@ -188,7 +188,7 @@ StatusFilterWidget::StatusFilterWidget(QWidget *parent, TransferListWidget *tran resumed->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"torrent-start"_qs, u"media-playback-start"_qs)); auto *paused = new QListWidgetItem(this); paused->setData(Qt::DisplayRole, tr("Paused (0)")); - paused->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"torrent-stop"_qs, u"media-playback-pause"_qs)); + paused->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"stopped"_qs, u"media-playback-pause"_qs)); auto *active = new QListWidgetItem(this); active->setData(Qt::DisplayRole, tr("Active (0)")); active->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"filter-active"_qs, u"filteractive"_qs)); diff --git a/src/gui/transferlistmodel.cpp b/src/gui/transferlistmodel.cpp index 4547935d1..71edfab78 100644 --- a/src/gui/transferlistmodel.cpp +++ b/src/gui/transferlistmodel.cpp @@ -162,7 +162,7 @@ TransferListModel::TransferListModel(QObject *parent) , m_completedIcon {UIThemeManager::instance()->getIcon(u"checked-completed"_qs, u"completed"_qs)} , m_downloadingIcon {UIThemeManager::instance()->getIcon(u"downloading"_qs)} , m_errorIcon {UIThemeManager::instance()->getIcon(u"error"_qs)} - , m_pausedIcon {UIThemeManager::instance()->getIcon(u"torrent-stop"_qs, u"media-playback-pause"_qs)} + , m_pausedIcon {UIThemeManager::instance()->getIcon(u"stopped"_qs, u"media-playback-pause"_qs)} , m_queuedIcon {UIThemeManager::instance()->getIcon(u"queued"_qs)} , m_stalledDLIcon {UIThemeManager::instance()->getIcon(u"stalledDL"_qs)} , m_stalledUPIcon {UIThemeManager::instance()->getIcon(u"stalledUP"_qs)} diff --git a/src/icons/icons.qrc b/src/icons/icons.qrc index 68d214309..30bb4f8f0 100644 --- a/src/icons/icons.qrc +++ b/src/icons/icons.qrc @@ -336,6 +336,7 @@ splash.png stalledDL.svg stalledUP.svg + stopped.svg system-log-out.svg tags.svg task-complete.svg diff --git a/src/icons/stopped.svg b/src/icons/stopped.svg new file mode 100644 index 000000000..06140f883 --- /dev/null +++ b/src/icons/stopped.svg @@ -0,0 +1 @@ + diff --git a/src/webui/www/private/images/stopped.svg b/src/webui/www/private/images/stopped.svg new file mode 100644 index 000000000..06140f883 --- /dev/null +++ b/src/webui/www/private/images/stopped.svg @@ -0,0 +1 @@ + diff --git a/src/webui/www/private/scripts/dynamicTable.js b/src/webui/www/private/scripts/dynamicTable.js index 6f72009ab..89191a257 100644 --- a/src/webui/www/private/scripts/dynamicTable.js +++ b/src/webui/www/private/scripts/dynamicTable.js @@ -970,7 +970,7 @@ window.qBittorrent.DynamicTable = (function() { break; case "pausedDL": state = "torrent-stop"; - img_path = "images/torrent-stop.svg"; + img_path = "images/stopped.svg"; break; case "pausedUP": state = "checked-completed"; diff --git a/src/webui/www/private/views/filters.html b/src/webui/www/private/views/filters.html index b87fd552e..3e07e09d2 100644 --- a/src/webui/www/private/views/filters.html +++ b/src/webui/www/private/views/filters.html @@ -8,7 +8,7 @@
  • SeedingQBT_TR(Seeding (0))QBT_TR[CONTEXT=StatusFilterWidget]
  • CompletedQBT_TR(Completed (0))QBT_TR[CONTEXT=StatusFilterWidget]
  • ResumedQBT_TR(Resumed (0))QBT_TR[CONTEXT=StatusFilterWidget]
  • -
  • PausedQBT_TR(Paused (0))QBT_TR[CONTEXT=StatusFilterWidget]
  • +
  • PausedQBT_TR(Paused (0))QBT_TR[CONTEXT=StatusFilterWidget]
  • ActiveQBT_TR(Active (0))QBT_TR[CONTEXT=StatusFilterWidget]
  • InactiveQBT_TR(Inactive (0))QBT_TR[CONTEXT=StatusFilterWidget]
  • StalledQBT_TR(Stalled (0))QBT_TR[CONTEXT=StatusFilterWidget]
  • diff --git a/src/webui/www/webui.qrc b/src/webui/www/webui.qrc index 597453128..07ee4474a 100644 --- a/src/webui/www/webui.qrc +++ b/src/webui/www/webui.qrc @@ -345,6 +345,7 @@ private/images/spinner.gif private/images/stalledDL.svg private/images/stalledUP.svg + private/images/stopped.svg private/images/system-log-out.svg private/images/tabs.gif private/images/tags.svg