From d85703608a0a674b577f758a8f9aee9dfcb1ccf3 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Wed, 14 Sep 2022 13:17:58 +0800 Subject: [PATCH 01/13] WebAPI: fix wrong behavior for shutdown action Qt6 has changed implementation for `QCoreApplication::quit` and therefore it is not suitable anymore. Closes #17709. Original PR #17720. --- src/webui/api/appcontroller.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/webui/api/appcontroller.cpp b/src/webui/api/appcontroller.cpp index 7bed59982..39c73fde0 100644 --- a/src/webui/api/appcontroller.cpp +++ b/src/webui/api/appcontroller.cpp @@ -86,12 +86,13 @@ void AppController::buildInfoAction() void AppController::shutdownAction() { - qDebug() << "Shutdown request from Web UI"; - - // Special case handling for shutdown, we + // Special handling for shutdown, we // need to reply to the Web UI before // actually shutting down. - QTimer::singleShot(100, qApp, &QCoreApplication::quit); + QTimer::singleShot(100, qApp, []() + { + QCoreApplication::exit(); + }); } void AppController::preferencesAction() From e15197099844731fe9e3d2a4c7127cb9a35f0090 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Thu, 18 Aug 2022 11:44:40 +0800 Subject: [PATCH 02/13] GHA CI: bump "Install Qt" action version --- .github/workflows/ci_macos.yaml | 3 +-- .github/workflows/ci_ubuntu.yaml | 2 +- .github/workflows/ci_windows.yaml | 2 +- .github/workflows/coverity-scan.yml | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci_macos.yaml b/.github/workflows/ci_macos.yaml index 604180956..71a81301e 100644 --- a/.github/workflows/ci_macos.yaml +++ b/.github/workflows/ci_macos.yaml @@ -46,9 +46,8 @@ jobs: mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" - name: Install Qt - uses: jurplel/install-qt-action@v2 + uses: jurplel/install-qt-action@v3 with: - setup-python: false version: ${{ matrix.qt_version }} - name: Install libtorrent diff --git a/.github/workflows/ci_ubuntu.yaml b/.github/workflows/ci_ubuntu.yaml index f34adc5e9..897bb1546 100644 --- a/.github/workflows/ci_ubuntu.yaml +++ b/.github/workflows/ci_ubuntu.yaml @@ -35,7 +35,7 @@ jobs: max_size=2G - name: Install Qt - uses: jurplel/install-qt-action@v2 + uses: jurplel/install-qt-action@v3 with: version: ${{ matrix.qt_version }} diff --git a/.github/workflows/ci_windows.yaml b/.github/workflows/ci_windows.yaml index 823e8f04a..1f687a625 100644 --- a/.github/workflows/ci_windows.yaml +++ b/.github/workflows/ci_windows.yaml @@ -70,7 +70,7 @@ jobs: move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}" - name: Install Qt - uses: jurplel/install-qt-action@v2 + uses: jurplel/install-qt-action@v3 with: version: "5.15.2" diff --git a/.github/workflows/coverity-scan.yml b/.github/workflows/coverity-scan.yml index 9064efda9..fa5e2a404 100644 --- a/.github/workflows/coverity-scan.yml +++ b/.github/workflows/coverity-scan.yml @@ -21,7 +21,7 @@ jobs: libboost-dev libssl-dev zlib1g-dev - name: Install Qt - uses: jurplel/install-qt-action@v2 + uses: jurplel/install-qt-action@v3 with: version: "5.15.2" From 192b01bcb7febaf59faba37497d833089e933732 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sun, 2 Oct 2022 01:00:55 +0300 Subject: [PATCH 03/13] NSIS: Drop hardcoded qt's translation filenames --- dist/windows/README.txt | 3 +-- dist/windows/installer.nsi | 21 ++++++++------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/dist/windows/README.txt b/dist/windows/README.txt index 0021bf683..002a51b67 100644 --- a/dist/windows/README.txt +++ b/dist/windows/README.txt @@ -42,8 +42,7 @@ translations You will need the files that conform to this globbing expression 'qt_??.qm qt_??_??.qm qtbase_??.qm qtbase_??_??.qm'. Some of those files will be stubs. Filter any file that is smaller than 10KB in size. Alternatively you can use the 'gather_qt_translations.py' script found in the same folder as this file. - Run it with '--help' to see its usage. - **YOU MUST** edit the list of .qm files in the 'installer.nsi' to match whatever files are in the 'translations' subfolder.) + Run it with '--help' to see its usage.) qt_zh_TW.qm installer.nsi license.txt diff --git a/dist/windows/installer.nsi b/dist/windows/installer.nsi index 846253eef..d7a8cfd3c 100644 --- a/dist/windows/installer.nsi +++ b/dist/windows/installer.nsi @@ -24,22 +24,17 @@ Section $(inst_qbt_req) ;"qBittorrent (required)" ; Set output path to the installation directory. SetOutPath $INSTDIR - - ;Create 'translations' directory - CreateDirectory $INSTDIR\translations - - ; Put file there + ; Put files there File "qbittorrent.exe" File "qbittorrent.pdb" File "qt.conf" - File /r "qtbase_*.qm" ; omit translations folder path to preserve folder structure - File /oname=translations\qt_fa.qm "translations\qt_fa.qm" - File /oname=translations\qt_gl.qm "translations\qt_gl.qm" - File /oname=translations\qt_lt.qm "translations\qt_lt.qm" - File /oname=translations\qt_pt.qm "translations\qt_pt.qm" - File /oname=translations\qt_sl.qm "translations\qt_sl.qm" - File /oname=translations\qt_sv.qm "translations\qt_sv.qm" - File /oname=translations\qt_zh_CN.qm "translations\qt_zh_CN.qm" + + ;Create 'translations' directory + CreateDirectory $INSTDIR\translations + ; Set output path to the installation\translations directory. + SetOutPath "$INSTDIR\translations" + ; Put files there + File /r "translations\qt*.qm" ; Write the installation path into the registry WriteRegStr HKLM "Software\qBittorrent" "InstallLocation" "$INSTDIR" From 3ef749d77c5a728cfcf8ddd052d384a9dcf7b803 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sun, 2 Oct 2022 02:11:17 +0300 Subject: [PATCH 04/13] NSIS: Require Windows 10 1809 for Qt6 builds Also refactor the config.nsi with more defines that control the build. Closes #17783 --- dist/windows/README.txt | 2 +- dist/windows/{options.nsi => config.nsi} | 54 ++++++++++++------- .../installer-translations/afrikaans.nsi | 2 + .../installer-translations/albanian.nsi | 2 + .../windows/installer-translations/arabic.nsi | 2 + .../windows/installer-translations/basque.nsi | 2 + .../installer-translations/belarusian.nsi | 2 + .../installer-translations/bosnian.nsi | 2 + .../windows/installer-translations/breton.nsi | 2 + .../installer-translations/bulgarian.nsi | 2 + .../installer-translations/catalan.nsi | 2 + .../installer-translations/croatian.nsi | 2 + dist/windows/installer-translations/czech.nsi | 2 + .../windows/installer-translations/danish.nsi | 2 + dist/windows/installer-translations/dutch.nsi | 2 + .../installer-translations/english.nsi | 2 + .../installer-translations/esperanto.nsi | 2 + .../installer-translations/estonian.nsi | 2 + dist/windows/installer-translations/farsi.nsi | 2 + .../installer-translations/finnish.nsi | 2 + .../windows/installer-translations/french.nsi | 2 + .../installer-translations/galician.nsi | 2 + .../windows/installer-translations/german.nsi | 2 + dist/windows/installer-translations/greek.nsi | 2 + .../windows/installer-translations/hebrew.nsi | 2 + .../installer-translations/hungarian.nsi | 2 + .../installer-translations/icelandic.nsi | 2 + .../installer-translations/indonesian.nsi | 2 + dist/windows/installer-translations/irish.nsi | 2 + .../installer-translations/italian.nsi | 2 + .../installer-translations/japanese.nsi | 2 + .../windows/installer-translations/korean.nsi | 2 + .../installer-translations/kurdish.nsi | 2 + .../installer-translations/latvian.nsi | 2 + .../installer-translations/lithuanian.nsi | 2 + .../installer-translations/luxembourgish.nsi | 2 + .../installer-translations/macedonian.nsi | 2 + dist/windows/installer-translations/malay.nsi | 2 + .../installer-translations/mongolian.nsi | 2 + .../installer-translations/norwegian.nsi | 2 + .../norwegiannynorsk.nsi | 2 + .../windows/installer-translations/polish.nsi | 2 + .../installer-translations/portuguese.nsi | 2 + .../installer-translations/portugueseBR.nsi | 2 + .../installer-translations/romanian.nsi | 2 + .../installer-translations/russian.nsi | 2 + .../installer-translations/serbian.nsi | 2 + .../installer-translations/serbianlatin.nsi | 2 + .../installer-translations/simpchinese.nsi | 2 + .../windows/installer-translations/slovak.nsi | 2 + .../installer-translations/slovenian.nsi | 2 + .../installer-translations/spanish.nsi | 2 + .../spanishinternational.nsi | 2 + .../installer-translations/swedish.nsi | 2 + dist/windows/installer-translations/thai.nsi | 2 + .../installer-translations/tradchinese.nsi | 2 + .../installer-translations/turkish.nsi | 2 + .../installer-translations/ukrainian.nsi | 2 + dist/windows/installer-translations/uzbek.nsi | 2 + dist/windows/installer-translations/welsh.nsi | 2 + dist/windows/installer.nsi | 21 +++++--- dist/windows/qbittorrent.nsi | 2 +- 62 files changed, 167 insertions(+), 28 deletions(-) rename dist/windows/{options.nsi => config.nsi} (80%) diff --git a/dist/windows/README.txt b/dist/windows/README.txt index 002a51b67..497c0d8a0 100644 --- a/dist/windows/README.txt +++ b/dist/windows/README.txt @@ -20,7 +20,7 @@ You will need NSIS and upx to make the installer. You need a unicode version of I tested with NSIS 3.0 (final). 1. Open the options.nsi file in an editor and change line that contains - "!define PROG_VERSION "3.0.3"" to the version of qbittorrent you just built. + "!define QBT_VERSION "3.0.3"" to the version of qbittorrent you just built. 2. Extract the plugins found in the folder "nsis plugins" into your NSIS's unicode Plugin directory(usually C:\Program Files\NSIS\Plugins\x86-unicode). Only the *.dll files are needed. Use the unicode version of the dlls. diff --git a/dist/windows/options.nsi b/dist/windows/config.nsi similarity index 80% rename from dist/windows/options.nsi rename to dist/windows/config.nsi index 83c5eeca4..c2fa821af 100644 --- a/dist/windows/options.nsi +++ b/dist/windows/config.nsi @@ -1,3 +1,17 @@ +; Uncomment when packaging 64bit qbittorrent +;!define QBT_IS_X64 + +; Uncomment when packaging qt6 qbittorrent +; It will also define QBT_IS_X64 +;!define QBT_USES_QT6 + +!ifdef QBT_USES_QT6 +!define /redef QBT_IS_X64 +!endif + +; qBittorrent version +!define /ifndef QBT_VERSION "4.4.5" + Unicode true ManifestDPIAware true ;Compress the header too @@ -8,14 +22,11 @@ SetCompressor /SOLID LZMA SetCompressorDictSize 64 XPStyle on -;Uncomment when packaging 64bit qbittorrent -;!define APP64BIT - !include "MUI.nsh" !include "UAC.nsh" !include "FileFunc.nsh" !include "WinVer.nsh" -!ifdef APP64BIT +!ifdef QBT_IS_X64 !include "x64.nsh" !endif @@ -27,41 +38,46 @@ XPStyle on !define CSIDL_APPDATA '0x1A' ;Application Data path !define CSIDL_LOCALAPPDATA '0x1C' ;Local Application Data path -; Program specific -!define PROG_VERSION "4.4.5" - !define MUI_FINISHPAGE_RUN !define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun !define MUI_FINISHPAGE_RUN_TEXT $(launch_qbt) -!ifndef APP64BIT +!ifndef QBT_IS_X64 ; The name of the installer - Name "qBittorrent ${PROG_VERSION}" + Name "qBittorrent ${QBT_VERSION}" ; The file to write - OutFile "qbittorrent_${PROG_VERSION}_setup.exe" -!else - ; The name of the installer - Name "qBittorrent ${PROG_VERSION} x64" + OutFile "qbittorrent_${QBT_VERSION}_setup.exe" +!else ; QBT_IS_X64 + !ifndef QBT_USES_QT6 + ; The name of the installer + Name "qBittorrent ${QBT_VERSION} x64" - ; The file to write - OutFile "qbittorrent_${PROG_VERSION}_x64_setup.exe" -!endif + ; The file to write + OutFile "qbittorrent_${QBT_VERSION}_x64_setup.exe" + !else ; QBT_USES_QT6 + ; The name of the installer + Name "qBittorrent ${QBT_VERSION} (qt6) x64" + + ; The file to write + OutFile "qbittorrent_${QBT_VERSION}_qt6_x64_setup.exe" + !endif ; QBT_USES_QT6 +!endif ; QBT_IS_X64 ;Installer Version Information VIAddVersionKey "ProductName" "qBittorrent" VIAddVersionKey "CompanyName" "The qBittorrent project" VIAddVersionKey "LegalCopyright" "Copyright ©2006-2022 The qBittorrent project" VIAddVersionKey "FileDescription" "qBittorrent - A Bittorrent Client" -VIAddVersionKey "FileVersion" "${PROG_VERSION}" +VIAddVersionKey "FileVersion" "${QBT_VERSION}" -VIProductVersion "${PROG_VERSION}.0" +VIProductVersion "${QBT_VERSION}.0" ; The default installation directory. It changes depending if we install in the 64bit dir or not. ; A caveat of this is if a user has installed a 32bit version and then runs the 64bit installer ; (which in turn launches the 32bit uninstaller first) the value will still point to the 32bit location. ; The user has to manually uninstall the old version and THEN run the 64bit installer -!ifndef APP64BIT +!ifndef QBT_IS_X64 InstallDir $PROGRAMFILES32\qBittorrent !else InstallDir $PROGRAMFILES64\qBittorrent diff --git a/dist/windows/installer-translations/afrikaans.nsi b/dist/windows/installer-translations/afrikaans.nsi index 65b604e2c..51955c21a 100644 --- a/dist/windows/installer-translations/afrikaans.nsi +++ b/dist/windows/installer-translations/afrikaans.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_AFRIKAANS} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_AFRIKAANS} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_AFRIKAANS} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_AFRIKAANS} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_AFRIKAANS} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/albanian.nsi b/dist/windows/installer-translations/albanian.nsi index a4f52c9d4..e70c3a83e 100644 --- a/dist/windows/installer-translations/albanian.nsi +++ b/dist/windows/installer-translations/albanian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_ALBANIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_ALBANIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_ALBANIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_ALBANIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ALBANIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/arabic.nsi b/dist/windows/installer-translations/arabic.nsi index 36ab47198..897776fa5 100644 --- a/dist/windows/installer-translations/arabic.nsi +++ b/dist/windows/installer-translations/arabic.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_ARABIC} "تشغيل البرنامج" LangString inst_requires_64bit ${LANG_ARABIC} "هذا المثبت يعمل فقط في نسخ ويندوز 64 بت" ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_ARABIC} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_ARABIC} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ARABIC} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/basque.nsi b/dist/windows/installer-translations/basque.nsi index 727362c68..c22f95584 100644 --- a/dist/windows/installer-translations/basque.nsi +++ b/dist/windows/installer-translations/basque.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_BASQUE} "Abiarazi qBittorrent." LangString inst_requires_64bit ${LANG_BASQUE} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_BASQUE} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_BASQUE} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BASQUE} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/belarusian.nsi b/dist/windows/installer-translations/belarusian.nsi index d784a4ca9..2bd618d8e 100644 --- a/dist/windows/installer-translations/belarusian.nsi +++ b/dist/windows/installer-translations/belarusian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_BELARUSIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_BELARUSIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_BELARUSIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_BELARUSIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BELARUSIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/bosnian.nsi b/dist/windows/installer-translations/bosnian.nsi index 55050837b..04480f4cf 100644 --- a/dist/windows/installer-translations/bosnian.nsi +++ b/dist/windows/installer-translations/bosnian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_BOSNIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_BOSNIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_BOSNIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_BOSNIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BOSNIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/breton.nsi b/dist/windows/installer-translations/breton.nsi index 5c2f98fa9..dfaf79d2f 100644 --- a/dist/windows/installer-translations/breton.nsi +++ b/dist/windows/installer-translations/breton.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_BRETON} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_BRETON} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_BRETON} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_BRETON} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BRETON} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/bulgarian.nsi b/dist/windows/installer-translations/bulgarian.nsi index 211e6c696..a9edeedc6 100644 --- a/dist/windows/installer-translations/bulgarian.nsi +++ b/dist/windows/installer-translations/bulgarian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_BULGARIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_BULGARIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_BULGARIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_BULGARIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BULGARIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/catalan.nsi b/dist/windows/installer-translations/catalan.nsi index e48014484..a1cfb2d9b 100644 --- a/dist/windows/installer-translations/catalan.nsi +++ b/dist/windows/installer-translations/catalan.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_CATALAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_CATALAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_CATALAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_CATALAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_CATALAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/croatian.nsi b/dist/windows/installer-translations/croatian.nsi index 3b2b55664..3a9fe6b82 100644 --- a/dist/windows/installer-translations/croatian.nsi +++ b/dist/windows/installer-translations/croatian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_CROATIAN} "Pokreni qBittorrent." LangString inst_requires_64bit ${LANG_CROATIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_CROATIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_CROATIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_CROATIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/czech.nsi b/dist/windows/installer-translations/czech.nsi index 07d62ace1..02ea874da 100644 --- a/dist/windows/installer-translations/czech.nsi +++ b/dist/windows/installer-translations/czech.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_CZECH} "Spustit qBittorrent." LangString inst_requires_64bit ${LANG_CZECH} "Tento instalátor funguje pouze v 64-bit Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_CZECH} "Tato verze qBittorrent vyžaduje minimálně Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_CZECH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_CZECH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/danish.nsi b/dist/windows/installer-translations/danish.nsi index c0752efe5..d5d7dc0bb 100644 --- a/dist/windows/installer-translations/danish.nsi +++ b/dist/windows/installer-translations/danish.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_DANISH} "Start qBittorrent." LangString inst_requires_64bit ${LANG_DANISH} "Installationsprogrammet virker kun i Windows-versioner som er 64-bit." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_DANISH} "qBittorrent-versionen kræver mindst Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_DANISH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_DANISH} "Afinstaller qBittorrent" diff --git a/dist/windows/installer-translations/dutch.nsi b/dist/windows/installer-translations/dutch.nsi index 45084d7b3..009da0381 100644 --- a/dist/windows/installer-translations/dutch.nsi +++ b/dist/windows/installer-translations/dutch.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_DUTCH} "qBittorrent starten." LangString inst_requires_64bit ${LANG_DUTCH} "Dit installatieprogramma werkt alleen in 64-bit Windows-versies." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_DUTCH} "Deze versie van qBittorrent vereist ten minste Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_DUTCH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_DUTCH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/english.nsi b/dist/windows/installer-translations/english.nsi index 7d9b35e7a..72067e97c 100644 --- a/dist/windows/installer-translations/english.nsi +++ b/dist/windows/installer-translations/english.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/esperanto.nsi b/dist/windows/installer-translations/esperanto.nsi index eaa525315..dccbf8965 100644 --- a/dist/windows/installer-translations/esperanto.nsi +++ b/dist/windows/installer-translations/esperanto.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_ESPERANTO} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_ESPERANTO} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_ESPERANTO} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_ESPERANTO} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ESPERANTO} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/estonian.nsi b/dist/windows/installer-translations/estonian.nsi index 279572c94..8caa62fca 100644 --- a/dist/windows/installer-translations/estonian.nsi +++ b/dist/windows/installer-translations/estonian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_ESTONIAN} "Käivita qBittorrent." LangString inst_requires_64bit ${LANG_ESTONIAN} "See installer töötab ainult 64-bit Windowsi versioonides." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_ESTONIAN} "Selle qBittorrenti versiooni jaoks on vajalik vähemalt Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_ESTONIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ESTONIAN} "Desinstalli qBittorrent" diff --git a/dist/windows/installer-translations/farsi.nsi b/dist/windows/installer-translations/farsi.nsi index 7abecec5d..9ed118cc3 100644 --- a/dist/windows/installer-translations/farsi.nsi +++ b/dist/windows/installer-translations/farsi.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_FARSI} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_FARSI} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_FARSI} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_FARSI} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_FARSI} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/finnish.nsi b/dist/windows/installer-translations/finnish.nsi index 3b802f276..d35db9e97 100644 --- a/dist/windows/installer-translations/finnish.nsi +++ b/dist/windows/installer-translations/finnish.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_FINNISH} "Käynnistä qBittorrent." LangString inst_requires_64bit ${LANG_FINNISH} "Tämä asennusohjelma toimii vain 64-bittisellä Windowsin versiolla." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_FINNISH} "Tämä qBittorrent versio tarvitsee vähintään Windows 7:n." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_FINNISH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_FINNISH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/french.nsi b/dist/windows/installer-translations/french.nsi index a084c64ae..48c2efc79 100644 --- a/dist/windows/installer-translations/french.nsi +++ b/dist/windows/installer-translations/french.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_FRENCH} "Lancer qBittorrent." LangString inst_requires_64bit ${LANG_FRENCH} "Cet installateur ne fonctionne que dans les versions 64 bits de Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_FRENCH} "Cette version de qBittorrent nécessite au moins Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_FRENCH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_FRENCH} "Désinstaller qBittorrent" diff --git a/dist/windows/installer-translations/galician.nsi b/dist/windows/installer-translations/galician.nsi index 5a2187bb7..aec6aea8d 100644 --- a/dist/windows/installer-translations/galician.nsi +++ b/dist/windows/installer-translations/galician.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_GALICIAN} "Iniciar qBittorrent." LangString inst_requires_64bit ${LANG_GALICIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_GALICIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_GALICIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_GALICIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/german.nsi b/dist/windows/installer-translations/german.nsi index 916ce34ec..3954f71f5 100644 --- a/dist/windows/installer-translations/german.nsi +++ b/dist/windows/installer-translations/german.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_GERMAN} "Starte qBittorrent." LangString inst_requires_64bit ${LANG_GERMAN} "Diese Installation funktioniert nur mit einer 64-bit Version von Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_GERMAN} "Diese Version von qBittorrent erfordert mindestens Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_GERMAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_GERMAN} "qBittorrent deinstallieren" diff --git a/dist/windows/installer-translations/greek.nsi b/dist/windows/installer-translations/greek.nsi index ef14f625b..7e15b6204 100644 --- a/dist/windows/installer-translations/greek.nsi +++ b/dist/windows/installer-translations/greek.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_GREEK} "Εκκίνηση του qBittorrent." LangString inst_requires_64bit ${LANG_GREEK} "Αυτό το αρχείο εγκατάστασης λειτουργεί μόνο σε 64-bit εκδόσεις των Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_GREEK} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_GREEK} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_GREEK} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/hebrew.nsi b/dist/windows/installer-translations/hebrew.nsi index afdc81f28..cf2da9421 100644 --- a/dist/windows/installer-translations/hebrew.nsi +++ b/dist/windows/installer-translations/hebrew.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_HEBREW} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_HEBREW} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_HEBREW} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_HEBREW} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_HEBREW} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/hungarian.nsi b/dist/windows/installer-translations/hungarian.nsi index a74afdcc1..297d8b12d 100644 --- a/dist/windows/installer-translations/hungarian.nsi +++ b/dist/windows/installer-translations/hungarian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_HUNGARIAN} "qBittorrent indítása." LangString inst_requires_64bit ${LANG_HUNGARIAN} "A telepítő csak 64-bites Windows verziókon működik." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_HUNGARIAN} "A qBittorrent ezen verziójához minimum Windows 7 szükséges." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_HUNGARIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_HUNGARIAN} "qBittorrent eltávolítása" diff --git a/dist/windows/installer-translations/icelandic.nsi b/dist/windows/installer-translations/icelandic.nsi index 9dd727905..7bb5ed096 100644 --- a/dist/windows/installer-translations/icelandic.nsi +++ b/dist/windows/installer-translations/icelandic.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_ICELANDIC} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_ICELANDIC} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_ICELANDIC} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_ICELANDIC} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ICELANDIC} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/indonesian.nsi b/dist/windows/installer-translations/indonesian.nsi index 47de8dd14..63ea8fad5 100644 --- a/dist/windows/installer-translations/indonesian.nsi +++ b/dist/windows/installer-translations/indonesian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_INDONESIAN} "Buka qBittorrent." LangString inst_requires_64bit ${LANG_INDONESIAN} "Aplikasi ini hanya berjalan pada versi Windows 64-bit." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_INDONESIAN} "Versi qBittorrent ini membutuhkan setidaknya Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_INDONESIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_INDONESIAN} "Copot qBittorrent" diff --git a/dist/windows/installer-translations/irish.nsi b/dist/windows/installer-translations/irish.nsi index 9a2374e3d..2cd437521 100644 --- a/dist/windows/installer-translations/irish.nsi +++ b/dist/windows/installer-translations/irish.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_IRISH} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_IRISH} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_IRISH} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_IRISH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_IRISH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/italian.nsi b/dist/windows/installer-translations/italian.nsi index 325b4596b..fbd2b7bd2 100644 --- a/dist/windows/installer-translations/italian.nsi +++ b/dist/windows/installer-translations/italian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_ITALIAN} "Esegui qBittorrent." LangString inst_requires_64bit ${LANG_ITALIAN} "Questo installer funziona solo con versioni di Windows a 64bit." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_ITALIAN} "Questa versione di qBittorrent richiede Windows 7 o versioni successive." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_ITALIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ITALIAN} "Disinstalla qBittorrent" diff --git a/dist/windows/installer-translations/japanese.nsi b/dist/windows/installer-translations/japanese.nsi index b83cea973..4b2dac68d 100644 --- a/dist/windows/installer-translations/japanese.nsi +++ b/dist/windows/installer-translations/japanese.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_JAPANESE} "qBittorrent を起動" LangString inst_requires_64bit ${LANG_JAPANESE} "このインストーラーは 64 ビット版の Windows でのみ実行できます。" ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_JAPANESE} "このバージョンの qBittorrent には Windows 7 以降が必要です。" +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_JAPANESE} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_JAPANESE} "qBittorrent をアンインストール" diff --git a/dist/windows/installer-translations/korean.nsi b/dist/windows/installer-translations/korean.nsi index 864b644ea..7ad133fcb 100644 --- a/dist/windows/installer-translations/korean.nsi +++ b/dist/windows/installer-translations/korean.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_KOREAN} "qBittorrent를 실행합니다." LangString inst_requires_64bit ${LANG_KOREAN} "이 설치 프로그램은 64비트 Windows 버전에서만 작동합니다." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_KOREAN} "이 qBittorrent 버전에는 Windows 7 이상이 필요합니다." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_KOREAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_KOREAN} "qBittorrent 제거" diff --git a/dist/windows/installer-translations/kurdish.nsi b/dist/windows/installer-translations/kurdish.nsi index b759e857a..98b586aa1 100644 --- a/dist/windows/installer-translations/kurdish.nsi +++ b/dist/windows/installer-translations/kurdish.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_KURDISH} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_KURDISH} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_KURDISH} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_KURDISH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_KURDISH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/latvian.nsi b/dist/windows/installer-translations/latvian.nsi index ffc0e38b2..96a3a5145 100644 --- a/dist/windows/installer-translations/latvian.nsi +++ b/dist/windows/installer-translations/latvian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_LATVIAN} "Palaist qBittorrent." LangString inst_requires_64bit ${LANG_LATVIAN} "Šī instalēšanas programma darbojas tikai 64 bitu Windows versijās." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_LATVIAN} "Šai qBittorrent versijai ir nepieciešama vismaz Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_LATVIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_LATVIAN} "Atinstalēt qBittorrent" diff --git a/dist/windows/installer-translations/lithuanian.nsi b/dist/windows/installer-translations/lithuanian.nsi index aae4f6cf0..e69ed294f 100644 --- a/dist/windows/installer-translations/lithuanian.nsi +++ b/dist/windows/installer-translations/lithuanian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_LITHUANIAN} "Paleisti qBittorrent." LangString inst_requires_64bit ${LANG_LITHUANIAN} "This installer works only in 64-bit Windows versions." ;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_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_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_LITHUANIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/luxembourgish.nsi b/dist/windows/installer-translations/luxembourgish.nsi index acbae4ee7..419bd6f9d 100644 --- a/dist/windows/installer-translations/luxembourgish.nsi +++ b/dist/windows/installer-translations/luxembourgish.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_LUXEMBOURGISH} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_LUXEMBOURGISH} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_LUXEMBOURGISH} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_LUXEMBOURGISH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_LUXEMBOURGISH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/macedonian.nsi b/dist/windows/installer-translations/macedonian.nsi index 0eed9cd8f..87192affc 100644 --- a/dist/windows/installer-translations/macedonian.nsi +++ b/dist/windows/installer-translations/macedonian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_MACEDONIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_MACEDONIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_MACEDONIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_MACEDONIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_MACEDONIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/malay.nsi b/dist/windows/installer-translations/malay.nsi index 06aed3b30..585bb0b7f 100644 --- a/dist/windows/installer-translations/malay.nsi +++ b/dist/windows/installer-translations/malay.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_MALAY} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_MALAY} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_MALAY} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_MALAY} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_MALAY} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/mongolian.nsi b/dist/windows/installer-translations/mongolian.nsi index 6e25f88fd..43bf61d2f 100644 --- a/dist/windows/installer-translations/mongolian.nsi +++ b/dist/windows/installer-translations/mongolian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_MONGOLIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_MONGOLIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_MONGOLIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_MONGOLIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_MONGOLIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/norwegian.nsi b/dist/windows/installer-translations/norwegian.nsi index 322b0e621..328b11ce2 100644 --- a/dist/windows/installer-translations/norwegian.nsi +++ b/dist/windows/installer-translations/norwegian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_NORWEGIAN} "Sett i gang qBittorrent." LangString inst_requires_64bit ${LANG_NORWEGIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_NORWEGIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_NORWEGIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_NORWEGIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/norwegiannynorsk.nsi b/dist/windows/installer-translations/norwegiannynorsk.nsi index 74e101169..8ea9072b5 100644 --- a/dist/windows/installer-translations/norwegiannynorsk.nsi +++ b/dist/windows/installer-translations/norwegiannynorsk.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_NORWEGIANNYNORSK} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_NORWEGIANNYNORSK} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_NORWEGIANNYNORSK} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_NORWEGIANNYNORSK} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_NORWEGIANNYNORSK} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/polish.nsi b/dist/windows/installer-translations/polish.nsi index 1654b63cd..3bdb415dc 100644 --- a/dist/windows/installer-translations/polish.nsi +++ b/dist/windows/installer-translations/polish.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_POLISH} "Uruchom qBittorrent." LangString inst_requires_64bit ${LANG_POLISH} "Ten instalator działa tylko w 64-bitowych wersjach systemu Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_POLISH} "Ta wersja qBittorrent wymaga co najmniej systemu Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_POLISH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_POLISH} "Odinstaluj qBittorrent" diff --git a/dist/windows/installer-translations/portuguese.nsi b/dist/windows/installer-translations/portuguese.nsi index 388a9cb91..d230dbe5c 100644 --- a/dist/windows/installer-translations/portuguese.nsi +++ b/dist/windows/installer-translations/portuguese.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_PORTUGUESE} "Iniciar qBittorrent." LangString inst_requires_64bit ${LANG_PORTUGUESE} "Este instalador funciona apenas em versões Windows de 64 bits." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_PORTUGUESE} "Esta versão qBittorrent requer pelo menos o Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_PORTUGUESE} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_PORTUGUESE} "Desinstalar qBittorrent" diff --git a/dist/windows/installer-translations/portugueseBR.nsi b/dist/windows/installer-translations/portugueseBR.nsi index 4300d435a..4df1da7cb 100644 --- a/dist/windows/installer-translations/portugueseBR.nsi +++ b/dist/windows/installer-translations/portugueseBR.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_PORTUGUESEBR} "Executar o qBittorrent." LangString inst_requires_64bit ${LANG_PORTUGUESEBR} "Este instalador só funciona nas versões 64 bits do Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_PORTUGUESEBR} "Esta versão do qBittorrent requer no mínimo o Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_PORTUGUESEBR} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_PORTUGUESEBR} "Desinstalar o qBittorrent" diff --git a/dist/windows/installer-translations/romanian.nsi b/dist/windows/installer-translations/romanian.nsi index 011d8cdcc..52ab3987b 100644 --- a/dist/windows/installer-translations/romanian.nsi +++ b/dist/windows/installer-translations/romanian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_ROMANIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_ROMANIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_ROMANIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_ROMANIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ROMANIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/russian.nsi b/dist/windows/installer-translations/russian.nsi index 9d1abc29d..2ea013e6b 100644 --- a/dist/windows/installer-translations/russian.nsi +++ b/dist/windows/installer-translations/russian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_RUSSIAN} "Запустить qBittorrent." LangString inst_requires_64bit ${LANG_RUSSIAN} "Этот установщик работает только на 64-битных версиях Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_RUSSIAN} "Для работы этой версии qBittorrent требуется Windows 7 или выше." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_RUSSIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_RUSSIAN} "Удалить qBittorrent" diff --git a/dist/windows/installer-translations/serbian.nsi b/dist/windows/installer-translations/serbian.nsi index e70bd1330..cde69a4ca 100644 --- a/dist/windows/installer-translations/serbian.nsi +++ b/dist/windows/installer-translations/serbian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_SERBIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_SERBIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_SERBIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_SERBIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SERBIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/serbianlatin.nsi b/dist/windows/installer-translations/serbianlatin.nsi index 9ba5240b6..1bd2cdd8c 100644 --- a/dist/windows/installer-translations/serbianlatin.nsi +++ b/dist/windows/installer-translations/serbianlatin.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_SERBIANLATIN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_SERBIANLATIN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_SERBIANLATIN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_SERBIANLATIN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SERBIANLATIN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/simpchinese.nsi b/dist/windows/installer-translations/simpchinese.nsi index 75b8f87d1..806d739c3 100644 --- a/dist/windows/installer-translations/simpchinese.nsi +++ b/dist/windows/installer-translations/simpchinese.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_SIMPCHINESE} "启动 qBittorrent。" LangString inst_requires_64bit ${LANG_SIMPCHINESE} "此安装程序仅支持 64 位 Windows 系统。" ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_SIMPCHINESE} "这个版本的 qBittorrent 仅支持 Windows 7 及更新的系统。" +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_SIMPCHINESE} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SIMPCHINESE} "卸载 qBittorrent" diff --git a/dist/windows/installer-translations/slovak.nsi b/dist/windows/installer-translations/slovak.nsi index f74ab248e..748c735b9 100644 --- a/dist/windows/installer-translations/slovak.nsi +++ b/dist/windows/installer-translations/slovak.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_SLOVAK} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_SLOVAK} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_SLOVAK} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_SLOVAK} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SLOVAK} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/slovenian.nsi b/dist/windows/installer-translations/slovenian.nsi index 153417746..4393e075d 100644 --- a/dist/windows/installer-translations/slovenian.nsi +++ b/dist/windows/installer-translations/slovenian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_SLOVENIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_SLOVENIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_SLOVENIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_SLOVENIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SLOVENIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/spanish.nsi b/dist/windows/installer-translations/spanish.nsi index 78772a612..db506e451 100644 --- a/dist/windows/installer-translations/spanish.nsi +++ b/dist/windows/installer-translations/spanish.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_SPANISH} "Iniciar qBittorrent." LangString inst_requires_64bit ${LANG_SPANISH} "Este instalador solo funciona en versiones de 64-bit de Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_SPANISH} "Esta versión de qBittorrent requiere Windows 7 o superior." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_SPANISH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SPANISH} "Desinstalar qBittorrent" diff --git a/dist/windows/installer-translations/spanishinternational.nsi b/dist/windows/installer-translations/spanishinternational.nsi index 760feac7e..455dfb7f7 100644 --- a/dist/windows/installer-translations/spanishinternational.nsi +++ b/dist/windows/installer-translations/spanishinternational.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_SPANISHINTERNATIONAL} "Iniciar qBittorrent." LangString inst_requires_64bit ${LANG_SPANISHINTERNATIONAL} "Este instalador solo funciona en versiones de 64-bit de Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_SPANISHINTERNATIONAL} "Esta versión de qBittorrent requiere Windows 7 o superior." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_SPANISHINTERNATIONAL} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SPANISHINTERNATIONAL} "Desinstalar qBittorrent" diff --git a/dist/windows/installer-translations/swedish.nsi b/dist/windows/installer-translations/swedish.nsi index 6a319e89d..b5912d741 100644 --- a/dist/windows/installer-translations/swedish.nsi +++ b/dist/windows/installer-translations/swedish.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_SWEDISH} "Kör qBittorrent." LangString inst_requires_64bit ${LANG_SWEDISH} "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_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SWEDISH} "Avinstallera qBittorrent" diff --git a/dist/windows/installer-translations/thai.nsi b/dist/windows/installer-translations/thai.nsi index 6d94e5cd4..bb3280272 100644 --- a/dist/windows/installer-translations/thai.nsi +++ b/dist/windows/installer-translations/thai.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_THAI} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_THAI} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_THAI} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_THAI} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_THAI} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/tradchinese.nsi b/dist/windows/installer-translations/tradchinese.nsi index b92e1e232..e8b5f5483 100644 --- a/dist/windows/installer-translations/tradchinese.nsi +++ b/dist/windows/installer-translations/tradchinese.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_TRADCHINESE} "啟動 qBittorrent" LangString inst_requires_64bit ${LANG_TRADCHINESE} "此安裝程式僅支援 64 位元版本的 Windows。" ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_TRADCHINESE} "此 qBittorrent 版本僅支援 Windows 7 以上的系統。" +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_TRADCHINESE} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_TRADCHINESE} "移除 qBittorrent" diff --git a/dist/windows/installer-translations/turkish.nsi b/dist/windows/installer-translations/turkish.nsi index 585d1fba4..52703fcba 100644 --- a/dist/windows/installer-translations/turkish.nsi +++ b/dist/windows/installer-translations/turkish.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_TURKISH} "qBittorrent'i başlat" LangString inst_requires_64bit ${LANG_TURKISH} "Bu yükleyici sadece 64-bit Windows sürümlerinde çalışır." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_TURKISH} "Bu qBittorrent sürümü en az Windows 7 gerektirir." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_TURKISH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_TURKISH} "qBittorrent'i kaldır" diff --git a/dist/windows/installer-translations/ukrainian.nsi b/dist/windows/installer-translations/ukrainian.nsi index 8373b88f1..8f2b932ac 100644 --- a/dist/windows/installer-translations/ukrainian.nsi +++ b/dist/windows/installer-translations/ukrainian.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_UKRAINIAN} "Запустити qBittorrent." LangString inst_requires_64bit ${LANG_UKRAINIAN} "Ця програма установки працює тільки в 64-розрядних версіях Windows." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_UKRAINIAN} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_UKRAINIAN} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_UKRAINIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/uzbek.nsi b/dist/windows/installer-translations/uzbek.nsi index 197a0f212..9afba66ff 100644 --- a/dist/windows/installer-translations/uzbek.nsi +++ b/dist/windows/installer-translations/uzbek.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_UZBEK} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_UZBEK} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_UZBEK} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_UZBEK} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_UZBEK} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/welsh.nsi b/dist/windows/installer-translations/welsh.nsi index 2a853dba9..133a1a397 100644 --- a/dist/windows/installer-translations/welsh.nsi +++ b/dist/windows/installer-translations/welsh.nsi @@ -30,6 +30,8 @@ LangString launch_qbt ${LANG_WELSH} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_WELSH} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_WELSH} "This qBittorrent version requires at least Windows 7." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_WELSH} "This installer requires at least Windows 10 1809." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_WELSH} "Uninstall qBittorrent" diff --git a/dist/windows/installer.nsi b/dist/windows/installer.nsi index d7a8cfd3c..1093dc632 100644 --- a/dist/windows/installer.nsi +++ b/dist/windows/installer.nsi @@ -40,12 +40,12 @@ Section $(inst_qbt_req) ;"qBittorrent (required)" WriteRegStr HKLM "Software\qBittorrent" "InstallLocation" "$INSTDIR" ; Write the uninstall keys for Windows - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayName" "qBittorrent ${PROG_VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayName" "qBittorrent ${QBT_VERSION}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "UninstallString" '"$INSTDIR\uninst.exe"' WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayIcon" '"$INSTDIR\qbittorrent.exe",0' WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "Publisher" "The qBittorrent project" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "URLInfoAbout" "https://www.qbittorrent.org" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayVersion" "${PROG_VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayVersion" "${QBT_VERSION}" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "NoRepair" 1 WriteUninstaller "uninst.exe" @@ -175,12 +175,19 @@ Function .onInit !insertmacro Init "installer" !insertmacro MUI_LANGDLL_DISPLAY - ${IfNot} ${AtLeastWin7} - MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_win7) - Abort - ${EndIf} + !ifndef QBT_USES_QT6 + ${IfNot} ${AtLeastWin7} + MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_win7) + Abort + ${EndIf} + !else + ${IfNot} ${AtLeastWaaS} 1809 ; Windows 10 1809. Min supported version by Qt6 + MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_win10) + Abort + ${EndIf} + !endif - !ifdef APP64BIT + !ifdef QBT_IS_X64 ${IfNot} ${RunningX64} MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_64bit) Abort diff --git a/dist/windows/qbittorrent.nsi b/dist/windows/qbittorrent.nsi index 03a263bb1..0c786bd90 100644 --- a/dist/windows/qbittorrent.nsi +++ b/dist/windows/qbittorrent.nsi @@ -1,4 +1,4 @@ -!include options.nsi +!include config.nsi !include translations.nsi !include installer.nsi !include uninstaller.nsi From 98c467e10253caed7e112b29d214173ea2184afd Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sun, 2 Oct 2022 04:11:46 +0300 Subject: [PATCH 05/13] NSIS: Refactor configuration to ease installer creation via scripting --- dist/windows/3rdparty/VersionCompleteXXXX.nsi | 61 ++++++++++++ dist/windows/README.txt | 21 +++-- dist/windows/config.nsi | 94 ++++++++++++++----- dist/windows/installer.nsi | 2 +- 4 files changed, 145 insertions(+), 33 deletions(-) create mode 100644 dist/windows/3rdparty/VersionCompleteXXXX.nsi diff --git a/dist/windows/3rdparty/VersionCompleteXXXX.nsi b/dist/windows/3rdparty/VersionCompleteXXXX.nsi new file mode 100644 index 000000000..bb5ca9d02 --- /dev/null +++ b/dist/windows/3rdparty/VersionCompleteXXXX.nsi @@ -0,0 +1,61 @@ +; Code taken from https://nsis.sourceforge.io/VersionCompleteXXXX +; See http://nsis.sourceforge.net/VersionCompleteXXXX for documentation +!macro VersionCompleteXXXRevision _INPUT_VALUE _OUTPUT_SYMBOL _REVISION + !searchparse /noerrors ${_INPUT_VALUE} "" _VERSION_1 "." _VERSION_2 "." _VERSION_3 "." _VERSION_4 + !ifndef _VERSION_1 + !define _VERSION_1 0 + !else if `${_VERSION_1}` == `` + !define /redef _VERSION_1 0 + !endif + !ifndef _VERSION_2 + !define _VERSION_2 0 + !else if `${_VERSION_2}` == `` + !define /redef _VERSION_2 0 + !endif + !ifndef _VERSION_3 + !define _VERSION_3 0 + !else if `${_VERSION_3}` == `` + !define /redef _VERSION_3 0 + !endif + !ifndef _VERSION_4 + !define _VERSION_4 0 + !else if `${_VERSION_4}` == `` + !define /redef _VERSION_4 0 + !endif + !define ${_OUTPUT_SYMBOL} ${_VERSION_1}.${_VERSION_2}.${_VERSION_3}.${_REVISION} + !undef _VERSION_1 + !undef _VERSION_2 + !undef _VERSION_3 + !undef _VERSION_4 + !undef _REVISION +!macroend +!define VersionCompleteXXXRevision `!insertmacro VersionCompleteXXXRevision` +!macro VersionCompleteXXXX _INPUT_VALUE _OUTPUT_SYMBOL + !searchparse /noerrors ${_INPUT_VALUE} "" _VERSION_1 "." _VERSION_2 "." _VERSION_3 "." _VERSION_4 + !ifndef _VERSION_1 + !define _VERSION_1 0 + !else if `${_VERSION_1}` == `` + !define /redef _VERSION_1 0 + !endif + !ifndef _VERSION_2 + !define _VERSION_2 0 + !else if `${_VERSION_2}` == `` + !define /redef _VERSION_2 0 + !endif + !ifndef _VERSION_3 + !define _VERSION_3 0 + !else if `${_VERSION_3}` == `` + !define /redef _VERSION_3 0 + !endif + !ifndef _VERSION_4 + !define _VERSION_4 0 + !else if `${_VERSION_4}` == `` + !define /redef _VERSION_4 0 + !endif + !define ${_OUTPUT_SYMBOL} ${_VERSION_1}.${_VERSION_2}.${_VERSION_3}.${_VERSION_4} + !undef _VERSION_1 + !undef _VERSION_2 + !undef _VERSION_3 + !undef _VERSION_4 +!macroend +!define VersionCompleteXXXX `!insertmacro VersionCompleteXXXX` diff --git a/dist/windows/README.txt b/dist/windows/README.txt index 497c0d8a0..416c9e93d 100644 --- a/dist/windows/README.txt +++ b/dist/windows/README.txt @@ -16,16 +16,16 @@ TRANSLATORS: PACKAGERS: -You will need NSIS and upx to make the installer. You need a unicode version of NSIS. -I tested with NSIS 3.0 (final). +You will need NSIS 3 to make the installer. UPX is an optional requirement. -1. Open the options.nsi file in an editor and change line that contains +1. Open the config.nsi file in an editor and change line that contains "!define QBT_VERSION "3.0.3"" to the version of qbittorrent you just built. -2. Extract the plugins found in the folder "nsis plugins" into your +2. config.nsi contains some other defines that control the installer output. Read the comments in that file. +3. Extract the plugins found in the folder "nsis plugins" into your NSIS's unicode Plugin directory(usually C:\Program Files\NSIS\Plugins\x86-unicode). Only the *.dll files are needed. Use the unicode version of the dlls. -3. The script you need to compile is "qbittorrent.nsi". It includes all other necessary scripts. -4. The script expects the following file tree: +4. The script you need to compile is "qbittorrent.nsi". It includes all other necessary scripts. +5. The script expects the following file tree: The installer script expects the following file tree: @@ -46,8 +46,10 @@ translations qt_zh_TW.qm installer.nsi license.txt -options.nsi +config.nsi +helper.nsi qbittorrent.exe +qbittorrent.pdb qbittorrent.nsi qt.conf translations.nsi @@ -55,9 +57,10 @@ UAC.nsh uninstaller.nsi -5. "license.txt" is a text file that contains the text rendered +6. "license.txt" is a text file that contains the text rendered from src\gui\gpl.html or the text contained in COPYING -6. "qbittorrent.exe" is the compiled binary file. +7. "qbittorrent.exe" is the compiled binary file. +8. "qbittorrent.pdb" is the compiled binary's PDB file. SCRIPT HACKERS: diff --git a/dist/windows/config.nsi b/dist/windows/config.nsi index c2fa821af..913f644a5 100644 --- a/dist/windows/config.nsi +++ b/dist/windows/config.nsi @@ -1,3 +1,10 @@ +;Start of user configurable options +;============================================================================== + +; Uncomment if you want to use UPX to pack the installer header +; Doing so may make antivirus software flag the installer as virus/malware +;!define USE_UPX + ; Uncomment when packaging 64bit qbittorrent ;!define QBT_IS_X64 @@ -10,25 +17,79 @@ !endif ; qBittorrent version +; The string MUST contain ONLY numbers delimited by dots. +; It MUST contain a maximum of 4 delimited numbers +; Other values will result in undefined behavior +; examples: +; 4.5.0 -> good +; 4.5.1.3 -> good +; 4.5.1.3.2 -> bad +; 4.5.0beta -> bad !define /ifndef QBT_VERSION "4.4.5" +; Option that controls the installer's window name +; If set, its value will be used like this: +; "qBittorrent ${QBT_INSTALLER_FILENAME}" +; If not set, the window name will be auto composed from QBT_VERSION, QBT_USES_QT6, QBT_IS_X64 +; If you set this define then you MUST set QBT_INSTALLER_FILENAME too. Otherwise it will be ignored. +; This define is meant to ease automation from scripts/commandline +;!define QBT_INSTALLER_WINDOWNAME + +; Option that controls the installer's window name +; If set, its value will be used like this: +; "qbittorrent_${QBT_INSTALLER_FILENAME}_setup.exe" +; If not set, the window name will be auto composed from QBT_VERSION, QBT_USES_QT6, QBT_IS_X64 +; If you set this define then you MUST set QBT_INSTALLER_WINDOWNAME too. Otherwise it will be ignored. +; This define is meant to ease automation from scripts/commandline +;!define QBT_INSTALLER_FILENAME + +;End of user configurable options +;============================================================================== + +!ifndef QBT_INSTALLER_WINDOWNAME | QBT_INSTALLER_FILENAME + !ifndef QBT_IS_X64 + ; The name of the installer + !define QBT_INSTALLER_WINDOWNAME "${QBT_VERSION}" + + ; The file to write + !define QBT_INSTALLER_FILENAME "${QBT_VERSION}" + !else ; QBT_IS_X64 + !ifndef QBT_USES_QT6 + ; The name of the installer + !define QBT_INSTALLER_WINDOWNAME "${QBT_VERSION} x64" + + ; The file to write + !define QBT_INSTALLER_FILENAME "${QBT_VERSION}_x64" + !else ; QBT_USES_QT6 + ; The name of the installer + !define QBT_INSTALLER_WINDOWNAME "${QBT_VERSION} (qt6) x64" + + ; The file to write + !define QBT_INSTALLER_FILENAME "${QBT_VERSION}_qt6_x64" + !endif ; QBT_USES_QT6 + !endif ; QBT_IS_X64 +!endif + Unicode true ManifestDPIAware true -;Compress the header too + +!ifdef USE_UPX !packhdr "$%TEMP%\exehead.tmp" 'upx.exe -9 --best --ultra-brute "$%TEMP%\exehead.tmp"' +!endif ;Setting the compression SetCompressor /SOLID LZMA SetCompressorDictSize 64 XPStyle on -!include "MUI.nsh" +!include "MUI2.nsh" !include "UAC.nsh" !include "FileFunc.nsh" !include "WinVer.nsh" !ifdef QBT_IS_X64 !include "x64.nsh" !endif +!include "3rdparty\VersionCompleteXXXX.nsi" ;For the file association !define SHCNE_ASSOCCHANGED 0x8000000 @@ -42,27 +103,11 @@ XPStyle on !define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun !define MUI_FINISHPAGE_RUN_TEXT $(launch_qbt) -!ifndef QBT_IS_X64 - ; The name of the installer - Name "qBittorrent ${QBT_VERSION}" +; The name of the installer +Name "qBittorrent ${QBT_INSTALLER_WINDOWNAME}" - ; The file to write - OutFile "qbittorrent_${QBT_VERSION}_setup.exe" -!else ; QBT_IS_X64 - !ifndef QBT_USES_QT6 - ; The name of the installer - Name "qBittorrent ${QBT_VERSION} x64" - - ; The file to write - OutFile "qbittorrent_${QBT_VERSION}_x64_setup.exe" - !else ; QBT_USES_QT6 - ; The name of the installer - Name "qBittorrent ${QBT_VERSION} (qt6) x64" - - ; The file to write - OutFile "qbittorrent_${QBT_VERSION}_qt6_x64_setup.exe" - !endif ; QBT_USES_QT6 -!endif ; QBT_IS_X64 +; The file to write +OutFile "qbittorrent_${QBT_INSTALLER_FILENAME}_setup.exe" ;Installer Version Information VIAddVersionKey "ProductName" "qBittorrent" @@ -71,7 +116,10 @@ VIAddVersionKey "LegalCopyright" "Copyright ©2006-2022 The qBittorrent project" VIAddVersionKey "FileDescription" "qBittorrent - A Bittorrent Client" VIAddVersionKey "FileVersion" "${QBT_VERSION}" -VIProductVersion "${QBT_VERSION}.0" +; VIProductVersion needs a 4 part version. +; If QBT_VERSION contains less than 4 parts then VersionCompleteXXXX, will extend it with zeroes. +${VersionCompleteXXXX} ${QBT_VERSION} VERSION_4_PART +VIProductVersion "${VERSION_4_PART}" ; The default installation directory. It changes depending if we install in the 64bit dir or not. ; A caveat of this is if a user has installed a 32bit version and then runs the 64bit installer diff --git a/dist/windows/installer.nsi b/dist/windows/installer.nsi index 1093dc632..75f2a0f95 100644 --- a/dist/windows/installer.nsi +++ b/dist/windows/installer.nsi @@ -40,7 +40,7 @@ Section $(inst_qbt_req) ;"qBittorrent (required)" WriteRegStr HKLM "Software\qBittorrent" "InstallLocation" "$INSTDIR" ; Write the uninstall keys for Windows - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayName" "qBittorrent ${QBT_VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayName" "qBittorrent" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "UninstallString" '"$INSTDIR\uninst.exe"' WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayIcon" '"$INSTDIR\qbittorrent.exe",0' WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "Publisher" "The qBittorrent project" From 3f15f4a44e33393a13a3772ff399592162207760 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Tue, 27 Sep 2022 00:47:18 +0800 Subject: [PATCH 06/13] Fix coding style --- src/gui/torrentcontentmodel.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/gui/torrentcontentmodel.cpp b/src/gui/torrentcontentmodel.cpp index bf99869ed..ef770ecc7 100644 --- a/src/gui/torrentcontentmodel.cpp +++ b/src/gui/torrentcontentmodel.cpp @@ -270,7 +270,7 @@ bool TorrentContentModel::allFiltered() const int TorrentContentModel::columnCount(const QModelIndex &parent) const { if (parent.isValid()) - return static_cast(parent.internalPointer())->columnCount(); + return static_cast(parent.internalPointer())->columnCount(); return m_rootItem->columnCount(); } @@ -282,7 +282,7 @@ bool TorrentContentModel::setData(const QModelIndex &index, const QVariant &valu if ((index.column() == TorrentContentModelItem::COL_NAME) && (role == Qt::CheckStateRole)) { - auto *item = static_cast(index.internalPointer()); + auto *item = static_cast(index.internalPointer()); qDebug("setData(%s, %d)", qUtf8Printable(item->name()), value.toInt()); BitTorrent::DownloadPriority prio = BitTorrent::DownloadPriority::Normal; @@ -306,7 +306,7 @@ bool TorrentContentModel::setData(const QModelIndex &index, const QVariant &valu if (role == Qt::EditRole) { Q_ASSERT(index.isValid()); - auto *item = static_cast(index.internalPointer()); + auto *item = static_cast(index.internalPointer()); switch (index.column()) { case TorrentContentModelItem::COL_NAME: @@ -336,14 +336,14 @@ bool TorrentContentModel::setData(const QModelIndex &index, const QVariant &valu TorrentContentModelItem::ItemType TorrentContentModel::itemType(const QModelIndex &index) const { - return static_cast(index.internalPointer())->itemType(); + return static_cast(index.internalPointer())->itemType(); } int TorrentContentModel::getFileIndex(const QModelIndex &index) { - auto *item = static_cast(index.internalPointer()); + auto *item = static_cast(index.internalPointer()); if (item->itemType() == TorrentContentModelItem::FileType) - return static_cast(item)->fileIndex(); + return static_cast(item)->fileIndex(); Q_ASSERT(item->itemType() == TorrentContentModelItem::FileType); return -1; @@ -354,7 +354,7 @@ QVariant TorrentContentModel::data(const QModelIndex &index, const int role) con if (!index.isValid()) return {}; - auto *item = static_cast(index.internalPointer()); + auto *item = static_cast(index.internalPointer()); switch (role) { @@ -443,7 +443,7 @@ QModelIndex TorrentContentModel::index(int row, int column, const QModelIndex &p if (!parent.isValid()) parentItem = m_rootItem; else - parentItem = static_cast(parent.internalPointer()); + parentItem = static_cast(parent.internalPointer()); Q_ASSERT(parentItem); if (row >= parentItem->childCount()) @@ -460,7 +460,7 @@ QModelIndex TorrentContentModel::parent(const QModelIndex &index) const if (!index.isValid()) return {}; - auto *childItem = static_cast(index.internalPointer()); + auto *childItem = static_cast(index.internalPointer()); if (!childItem) return {}; @@ -480,7 +480,7 @@ int TorrentContentModel::rowCount(const QModelIndex &parent) const if (!parent.isValid()) parentItem = m_rootItem; else - parentItem = dynamic_cast(static_cast(parent.internalPointer())); + parentItem = dynamic_cast(static_cast(parent.internalPointer())); return parentItem ? parentItem->childCount() : 0; } @@ -541,7 +541,7 @@ void TorrentContentModel::selectAll() { for (int i = 0; i < m_rootItem->childCount(); ++i) { - TorrentContentModelItem* child = m_rootItem->child(i); + TorrentContentModelItem *child = m_rootItem->child(i); if (child->priority() == BitTorrent::DownloadPriority::Ignored) child->setPriority(BitTorrent::DownloadPriority::Normal); } From 2831ad5d22668876900c405e3f6e4a62a299624f Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Tue, 27 Sep 2022 01:08:44 +0800 Subject: [PATCH 07/13] Remove unused functions --- src/gui/torrentcontentmodel.cpp | 18 ------------------ src/gui/torrentcontentmodel.h | 4 ---- 2 files changed, 22 deletions(-) diff --git a/src/gui/torrentcontentmodel.cpp b/src/gui/torrentcontentmodel.cpp index ef770ecc7..149af3484 100644 --- a/src/gui/torrentcontentmodel.cpp +++ b/src/gui/torrentcontentmodel.cpp @@ -536,21 +536,3 @@ void TorrentContentModel::setupModelData(const BitTorrent::AbstractFileStorage & } emit layoutChanged(); } - -void TorrentContentModel::selectAll() -{ - for (int i = 0; i < m_rootItem->childCount(); ++i) - { - TorrentContentModelItem *child = m_rootItem->child(i); - if (child->priority() == BitTorrent::DownloadPriority::Ignored) - child->setPriority(BitTorrent::DownloadPriority::Normal); - } - emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1))); -} - -void TorrentContentModel::selectNone() -{ - for (int i = 0; i < m_rootItem->childCount(); ++i) - m_rootItem->child(i)->setPriority(BitTorrent::DownloadPriority::Ignored); - emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1))); -} diff --git a/src/gui/torrentcontentmodel.h b/src/gui/torrentcontentmodel.h index 10764957a..3fb269315 100644 --- a/src/gui/torrentcontentmodel.h +++ b/src/gui/torrentcontentmodel.h @@ -79,10 +79,6 @@ public: signals: void filteredFilesChanged(); -public slots: - void selectAll(); - void selectNone(); - private: TorrentContentModelFolder *m_rootItem; QVector m_filesIndex; From 22ac68152f26bd5b98c69f72db3e67d688666410 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Tue, 27 Sep 2022 01:09:05 +0800 Subject: [PATCH 08/13] Fix torrent content checkboxes not updated properly And reduce emitting redundant 'data updated' signals. Closes #17144, #17764. --- src/gui/torrentcontentfiltermodel.cpp | 8 +- src/gui/torrentcontentmodel.cpp | 166 +++++++++++++++++--------- src/gui/torrentcontentmodel.h | 4 +- 3 files changed, 117 insertions(+), 61 deletions(-) diff --git a/src/gui/torrentcontentfiltermodel.cpp b/src/gui/torrentcontentfiltermodel.cpp index 59e2e4771..9ff5043a1 100644 --- a/src/gui/torrentcontentfiltermodel.cpp +++ b/src/gui/torrentcontentfiltermodel.cpp @@ -110,17 +110,13 @@ bool TorrentContentFilterModel::lessThan(const QModelIndex &left, const QModelIn void TorrentContentFilterModel::selectAll() { for (int i = 0; i < rowCount(); ++i) - setData(index(i, 0), Qt::Checked, Qt::CheckStateRole); - - emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1))); + setData(index(i, TorrentContentModelItem::COL_NAME), Qt::Checked, Qt::CheckStateRole); } void TorrentContentFilterModel::selectNone() { for (int i = 0; i < rowCount(); ++i) - setData(index(i, 0), Qt::Unchecked, Qt::CheckStateRole); - - emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1))); + setData(index(i, TorrentContentModelItem::COL_NAME), Qt::Unchecked, Qt::CheckStateRole); } bool TorrentContentFilterModel::hasFiltered(const QModelIndex &folder) const diff --git a/src/gui/torrentcontentmodel.cpp b/src/gui/torrentcontentmodel.cpp index 149af3484..1b3fa69c3 100644 --- a/src/gui/torrentcontentmodel.cpp +++ b/src/gui/torrentcontentmodel.cpp @@ -220,7 +220,7 @@ void TorrentContentModel::updateFilesProgress(const QVector &fp) // Update folders progress in the tree m_rootItem->recalculateProgress(); m_rootItem->recalculateAvailability(); - emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1))); + notifyModelUpdate(index(0, 0)); } void TorrentContentModel::updateFilesPriorities(const QVector &fprio) @@ -233,7 +233,7 @@ void TorrentContentModel::updateFilesPriorities(const QVectorsetPriority(static_cast(fprio[i])); - emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1))); + notifyModelUpdate(index(0, 0)); } void TorrentContentModel::updateFilesAvailability(const QVector &fa) @@ -247,7 +247,7 @@ void TorrentContentModel::updateFilesAvailability(const QVector &fa) m_filesIndex[i]->setAvailability(fa[i]); // Update folders progress in the tree m_rootItem->recalculateProgress(); - emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1))); + notifyModelUpdate(index(0, 0)); } QVector TorrentContentModel::getFilePriorities() const @@ -269,13 +269,11 @@ bool TorrentContentModel::allFiltered() const int TorrentContentModel::columnCount(const QModelIndex &parent) const { - if (parent.isValid()) - return static_cast(parent.internalPointer())->columnCount(); - - return m_rootItem->columnCount(); + Q_UNUSED(parent); + return TorrentContentModelItem::NB_COL; } -bool TorrentContentModel::setData(const QModelIndex &index, const QVariant &value, int role) +bool TorrentContentModel::setData(const QModelIndex &index, const QVariant &value, const int role) { if (!index.isValid()) return false; @@ -283,52 +281,71 @@ bool TorrentContentModel::setData(const QModelIndex &index, const QVariant &valu if ((index.column() == TorrentContentModelItem::COL_NAME) && (role == Qt::CheckStateRole)) { auto *item = static_cast(index.internalPointer()); - qDebug("setData(%s, %d)", qUtf8Printable(item->name()), value.toInt()); - BitTorrent::DownloadPriority prio = BitTorrent::DownloadPriority::Normal; - if (value.toInt() == Qt::PartiallyChecked) - prio = BitTorrent::DownloadPriority::Mixed; - else if (value.toInt() == Qt::Unchecked) - prio = BitTorrent::DownloadPriority::Ignored; + const BitTorrent::DownloadPriority currentPrio = item->priority(); + const auto checkState = static_cast(value.toInt()); + const BitTorrent::DownloadPriority newPrio = (checkState == Qt::PartiallyChecked) + ? BitTorrent::DownloadPriority::Mixed + : ((checkState == Qt::Unchecked) + ? BitTorrent::DownloadPriority::Ignored + : BitTorrent::DownloadPriority::Normal); - if (item->priority() != prio) + if (currentPrio != newPrio) { - item->setPriority(prio); + item->setPriority(newPrio); // Update folders progress in the tree m_rootItem->recalculateProgress(); m_rootItem->recalculateAvailability(); - emit dataChanged(this->index(0, 0), this->index((rowCount() - 1), (columnCount() - 1))); + + notifyModelUpdate(index); emit filteredFilesChanged(); + + return true; } - return true; } if (role == Qt::EditRole) { - Q_ASSERT(index.isValid()); auto *item = static_cast(index.internalPointer()); + switch (index.column()) { case TorrentContentModelItem::COL_NAME: - item->setName(value.toString()); - break; - case TorrentContentModelItem::COL_PRIO: { - const BitTorrent::DownloadPriority previousPrio = item->priority(); - const auto newPrio = static_cast(value.toInt()); - item->setPriority(newPrio); - if ((newPrio != previousPrio) && ((newPrio == BitTorrent::DownloadPriority::Ignored) - || (previousPrio == BitTorrent::DownloadPriority::Ignored))) + const QString currentName = item->name(); + const QString newName = value.toString(); + if (currentName != newName) { - emit filteredFilesChanged(); + item->setName(newName); + emit dataChanged(index, index); + return true; } } break; + + case TorrentContentModelItem::COL_PRIO: + { + const BitTorrent::DownloadPriority currentPrio = item->priority(); + const auto newPrio = static_cast(value.toInt()); + if (currentPrio != newPrio) + { + item->setPriority(newPrio); + + notifyModelUpdate(index); + if ((newPrio == BitTorrent::DownloadPriority::Ignored) + || (currentPrio == BitTorrent::DownloadPriority::Ignored)) + { + emit filteredFilesChanged(); + } + + return true; + } + } + break; + default: - return false; + break; } - emit dataChanged(index, index); - return true; } return false; @@ -392,8 +409,10 @@ QVariant TorrentContentModel::data(const QModelIndex &index, const int role) con return item->underlyingData(index.column()); default: - return {}; + break; } + + return {}; } Qt::ItemFlags TorrentContentModel::flags(const QModelIndex &index) const @@ -431,19 +450,14 @@ QVariant TorrentContentModel::headerData(int section, Qt::Orientation orientatio } } -QModelIndex TorrentContentModel::index(int row, int column, const QModelIndex &parent) const +QModelIndex TorrentContentModel::index(const int row, const int column, const QModelIndex &parent) const { - if (parent.isValid() && (parent.column() != 0)) + if (column >= columnCount()) return {}; - if (column >= TorrentContentModelItem::NB_COL) - return {}; - - TorrentContentModelFolder *parentItem; - if (!parent.isValid()) - parentItem = m_rootItem; - else - parentItem = static_cast(parent.internalPointer()); + const TorrentContentModelFolder *parentItem = parent.isValid() + ? static_cast(parent.internalPointer()) + : m_rootItem; Q_ASSERT(parentItem); if (row >= parentItem->childCount()) @@ -452,6 +466,7 @@ QModelIndex TorrentContentModel::index(int row, int column, const QModelIndex &p TorrentContentModelItem *childItem = parentItem->child(row); if (childItem) return createIndex(row, column, childItem); + return {}; } @@ -460,28 +475,26 @@ QModelIndex TorrentContentModel::parent(const QModelIndex &index) const if (!index.isValid()) return {}; - auto *childItem = static_cast(index.internalPointer()); - if (!childItem) + const auto *item = static_cast(index.internalPointer()); + if (!item) return {}; - TorrentContentModelItem *parentItem = childItem->parent(); + TorrentContentModelItem *parentItem = item->parent(); if (parentItem == m_rootItem) return {}; + // From https://doc.qt.io/qt-6/qabstractitemmodel.html#parent: + // A common convention used in models that expose tree data structures is that only items + // in the first column have children. For that case, when reimplementing this function in + // a subclass the column of the returned QModelIndex would be 0. return createIndex(parentItem->row(), 0, parentItem); } int TorrentContentModel::rowCount(const QModelIndex &parent) const { - if (parent.column() > 0) - return 0; - - TorrentContentModelFolder *parentItem; - if (!parent.isValid()) - parentItem = m_rootItem; - else - parentItem = dynamic_cast(static_cast(parent.internalPointer())); - + const TorrentContentModelFolder *parentItem = parent.isValid() + ? dynamic_cast(static_cast(parent.internalPointer())) + : m_rootItem; return parentItem ? parentItem->childCount() : 0; } @@ -536,3 +549,48 @@ void TorrentContentModel::setupModelData(const BitTorrent::AbstractFileStorage & } emit layoutChanged(); } + +void TorrentContentModel::notifyModelUpdate(const QModelIndex &index) +{ + Q_ASSERT(index.isValid()); + + const int lastColumnIndex = columnCount(index) - 1; + + // emit itself + emit dataChanged(index.siblingAtColumn(0), index.siblingAtColumn(lastColumnIndex)); + + // propagate up the model + QModelIndex parentIndex = parent(index); + while (parentIndex.isValid()) + { + emit dataChanged(parentIndex.siblingAtColumn(0), parentIndex.siblingAtColumn(lastColumnIndex)); + parentIndex = parent(parentIndex); + } + + // propagate down the model + QVector parentIndexes; + + if (hasChildren(index)) + parentIndexes.push_back(index); + + while (!parentIndexes.isEmpty()) + { + const QModelIndex parent = parentIndexes.takeLast(); + + const int childCount = rowCount(parent); + const QModelIndex childTopLeft = this->index(0, 0, parent); + const QModelIndex childBottomRight = this->index((childCount - 1), lastColumnIndex, parent); + + // emit this generation + emit dataChanged(childTopLeft, childBottomRight); + + // check generations further down + parentIndexes.reserve(childCount); + for (int i = 0; i < childCount; ++i) + { + const QModelIndex child = childTopLeft.siblingAtRow(i); + if (hasChildren(child)) + parentIndexes.push_back(child); + } + } +} diff --git a/src/gui/torrentcontentmodel.h b/src/gui/torrentcontentmodel.h index 3fb269315..57e27c0db 100644 --- a/src/gui/torrentcontentmodel.h +++ b/src/gui/torrentcontentmodel.h @@ -80,7 +80,9 @@ signals: void filteredFilesChanged(); private: - TorrentContentModelFolder *m_rootItem; + void notifyModelUpdate(const QModelIndex &index); + + TorrentContentModelFolder *m_rootItem = nullptr; QVector m_filesIndex; QFileIconProvider *m_fileIconProvider; }; From ea8228280ed9eb713ab72398941bdce55b84cdfa Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Sat, 1 Oct 2022 12:49:02 +0800 Subject: [PATCH 09/13] WebUI: don't disable combobox for file priority Closes #17794. PR #17797. --- src/webui/www/private/scripts/prop-files.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/webui/www/private/scripts/prop-files.js b/src/webui/www/private/scripts/prop-files.js index d66092ad2..85391b36a 100644 --- a/src/webui/www/private/scripts/prop-files.js +++ b/src/webui/www/private/scripts/prop-files.js @@ -182,7 +182,6 @@ window.qBittorrent.PropFiles = (function() { select.set('id', 'comboPrio' + id); select.set('data-id', id); select.set('data-file-id', fileId); - select.set('disabled', is_seed); select.addClass('combo_priority'); select.addEvent('change', fileComboboxChanged); @@ -204,9 +203,6 @@ window.qBittorrent.PropFiles = (function() { if (parseInt(combobox.value) !== selectedPriority) selectComboboxPriority(combobox, selectedPriority); - - if (combobox.disabled !== is_seed) - combobox.disabled = is_seed; }; const selectComboboxPriority = function(combobox, priority) { From 74aa41371df2031e6459dc7e8e12e493716dbc3d Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Fri, 30 Sep 2022 12:15:55 +0800 Subject: [PATCH 10/13] Improve column updates granularity --- src/gui/torrentcontentmodel.cpp | 65 +++++++++++++++++++++++++-------- src/gui/torrentcontentmodel.h | 5 ++- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/src/gui/torrentcontentmodel.cpp b/src/gui/torrentcontentmodel.cpp index 1b3fa69c3..912575240 100644 --- a/src/gui/torrentcontentmodel.cpp +++ b/src/gui/torrentcontentmodel.cpp @@ -220,7 +220,12 @@ void TorrentContentModel::updateFilesProgress(const QVector &fp) // Update folders progress in the tree m_rootItem->recalculateProgress(); m_rootItem->recalculateAvailability(); - notifyModelUpdate(index(0, 0)); + + const QVector columns = + { + {TorrentContentModelItem::COL_PROGRESS, TorrentContentModelItem::COL_PROGRESS} + }; + notifySubtreeUpdated(index(0, 0), columns); } void TorrentContentModel::updateFilesPriorities(const QVector &fprio) @@ -233,7 +238,13 @@ void TorrentContentModel::updateFilesPriorities(const QVectorsetPriority(static_cast(fprio[i])); - notifyModelUpdate(index(0, 0)); + + const QVector columns = + { + {TorrentContentModelItem::COL_NAME, TorrentContentModelItem::COL_NAME}, + {TorrentContentModelItem::COL_PRIO, TorrentContentModelItem::COL_PRIO} + }; + notifySubtreeUpdated(index(0, 0), columns); } void TorrentContentModel::updateFilesAvailability(const QVector &fa) @@ -247,7 +258,12 @@ void TorrentContentModel::updateFilesAvailability(const QVector &fa) m_filesIndex[i]->setAvailability(fa[i]); // Update folders progress in the tree m_rootItem->recalculateProgress(); - notifyModelUpdate(index(0, 0)); + + const QVector columns = + { + {TorrentContentModelItem::COL_AVAILABILITY, TorrentContentModelItem::COL_AVAILABILITY} + }; + notifySubtreeUpdated(index(0, 0), columns); } QVector TorrentContentModel::getFilePriorities() const @@ -297,7 +313,12 @@ bool TorrentContentModel::setData(const QModelIndex &index, const QVariant &valu m_rootItem->recalculateProgress(); m_rootItem->recalculateAvailability(); - notifyModelUpdate(index); + const QVector columns = + { + {TorrentContentModelItem::COL_NAME, TorrentContentModelItem::COL_NAME}, + {TorrentContentModelItem::COL_PRIO, TorrentContentModelItem::COL_PRIO} + }; + notifySubtreeUpdated(index, columns); emit filteredFilesChanged(); return true; @@ -331,7 +352,13 @@ bool TorrentContentModel::setData(const QModelIndex &index, const QVariant &valu { item->setPriority(newPrio); - notifyModelUpdate(index); + const QVector columns = + { + {TorrentContentModelItem::COL_NAME, TorrentContentModelItem::COL_NAME}, + {TorrentContentModelItem::COL_PRIO, TorrentContentModelItem::COL_PRIO} + }; + notifySubtreeUpdated(index, columns); + if ((newPrio == BitTorrent::DownloadPriority::Ignored) || (currentPrio == BitTorrent::DownloadPriority::Ignored)) { @@ -550,20 +577,22 @@ void TorrentContentModel::setupModelData(const BitTorrent::AbstractFileStorage & emit layoutChanged(); } -void TorrentContentModel::notifyModelUpdate(const QModelIndex &index) +void TorrentContentModel::notifySubtreeUpdated(const QModelIndex &index, const QVector &columns) { + // For best performance, `columns` entries should be arranged from left to right + Q_ASSERT(index.isValid()); - const int lastColumnIndex = columnCount(index) - 1; - // emit itself - emit dataChanged(index.siblingAtColumn(0), index.siblingAtColumn(lastColumnIndex)); + for (const ColumnInterval &column : columns) + emit dataChanged(index.siblingAtColumn(column.first()), index.siblingAtColumn(column.last())); // propagate up the model QModelIndex parentIndex = parent(index); while (parentIndex.isValid()) { - emit dataChanged(parentIndex.siblingAtColumn(0), parentIndex.siblingAtColumn(lastColumnIndex)); + for (const ColumnInterval &column : columns) + emit dataChanged(parentIndex.siblingAtColumn(column.first()), parentIndex.siblingAtColumn(column.last())); parentIndex = parent(parentIndex); } @@ -578,19 +607,23 @@ void TorrentContentModel::notifyModelUpdate(const QModelIndex &index) const QModelIndex parent = parentIndexes.takeLast(); const int childCount = rowCount(parent); - const QModelIndex childTopLeft = this->index(0, 0, parent); - const QModelIndex childBottomRight = this->index((childCount - 1), lastColumnIndex, parent); + const QModelIndex child = this->index(0, 0, parent); // emit this generation - emit dataChanged(childTopLeft, childBottomRight); + for (const ColumnInterval &column : columns) + { + const QModelIndex childTopLeft = child.siblingAtColumn(column.first()); + const QModelIndex childBottomRight = child.sibling((childCount - 1), column.last()); + emit dataChanged(childTopLeft, childBottomRight); + } // check generations further down parentIndexes.reserve(childCount); for (int i = 0; i < childCount; ++i) { - const QModelIndex child = childTopLeft.siblingAtRow(i); - if (hasChildren(child)) - parentIndexes.push_back(child); + const QModelIndex sibling = child.siblingAtRow(i); + if (hasChildren(sibling)) + parentIndexes.push_back(sibling); } } } diff --git a/src/gui/torrentcontentmodel.h b/src/gui/torrentcontentmodel.h index 57e27c0db..6287f836a 100644 --- a/src/gui/torrentcontentmodel.h +++ b/src/gui/torrentcontentmodel.h @@ -31,6 +31,7 @@ #include #include +#include "base/indexrange.h" #include "torrentcontentmodelitem.h" class QFileIconProvider; @@ -80,7 +81,9 @@ signals: void filteredFilesChanged(); private: - void notifyModelUpdate(const QModelIndex &index); + using ColumnInterval = IndexInterval; + + void notifySubtreeUpdated(const QModelIndex &index, const QVector &columns); TorrentContentModelFolder *m_rootItem = nullptr; QVector m_filesIndex; From 56c4cc89b9f3942731c0eed57b0ae393f50859ed Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Tue, 4 Oct 2022 13:03:32 +0300 Subject: [PATCH 11/13] Correctly load state of use download folder PR #17807. Closes #17793. --- src/gui/watchedfolderoptionsdialog.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/watchedfolderoptionsdialog.cpp b/src/gui/watchedfolderoptionsdialog.cpp index 33612129b..5a3d1e330 100644 --- a/src/gui/watchedfolderoptionsdialog.cpp +++ b/src/gui/watchedfolderoptionsdialog.cpp @@ -52,11 +52,11 @@ WatchedFolderOptionsDialog::WatchedFolderOptionsDialog( m_ui->savePath->setMode(FileSystemPathEdit::Mode::DirectorySave); m_ui->savePath->setDialogCaption(tr("Choose save path")); - const auto *session = BitTorrent::Session::instance(); - m_ui->downloadPath->setMode(FileSystemPathEdit::Mode::DirectorySave); m_ui->downloadPath->setDialogCaption(tr("Choose save path")); - m_ui->groupBoxDownloadPath->setChecked(watchedFolderOptions.addTorrentParams.useDownloadPath.value_or(session->isDownloadPathEnabled())); + + const auto *session = BitTorrent::Session::instance(); + m_useDownloadPath = watchedFolderOptions.addTorrentParams.useDownloadPath.value_or(session->isDownloadPathEnabled()); connect(m_ui->comboTTM, qOverload(&QComboBox::currentIndexChanged), this, &WatchedFolderOptionsDialog::onTMMChanged); connect(m_ui->categoryComboBox, qOverload(&QComboBox::currentIndexChanged), this, &WatchedFolderOptionsDialog::onCategoryChanged); From 9b267690ccd4c1e5889414ad939bba45a64fab54 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Thu, 6 Oct 2022 06:35:46 +0300 Subject: [PATCH 12/13] Don't pollute move queue by torrents w/o metadata There's really nothing to move if the torrent still doesn't have metadata. Additionally, such torrents in the queue can lead to unexpected behavior when reloading the torrent after metadata is received. PR #17823. --- src/base/bittorrent/torrentimpl.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/base/bittorrent/torrentimpl.cpp b/src/base/bittorrent/torrentimpl.cpp index ca3b650cc..839e0702d 100644 --- a/src/base/bittorrent/torrentimpl.cpp +++ b/src/base/bittorrent/torrentimpl.cpp @@ -501,6 +501,9 @@ void TorrentImpl::setAutoTMMEnabled(bool enabled) QString TorrentImpl::actualStorageLocation() const { + if (!hasMetadata()) + return {}; + return Utils::Fs::toUniformPath(QString::fromStdString(m_nativeStatus.save_path)); } @@ -1634,6 +1637,12 @@ void TorrentImpl::resume(const TorrentOperatingMode mode) void TorrentImpl::moveStorage(const QString &newPath, const MoveStorageMode mode) { + if (!hasMetadata()) + { + m_session->handleTorrentSavePathChanged(this); + return; + } + if (m_session->addMoveTorrentStorageJob(this, Utils::Fs::toNativePath(newPath), mode)) { m_storageIsMoving = true; From 1b0fd456439e5ce461189c6234b10b52b98d88f8 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Wed, 5 Oct 2022 00:59:18 +0800 Subject: [PATCH 13/13] Fix wrong 'tracker error' count This happens when a torrent contains some tracker URLs that share the same domain. Closes #17808. --- src/gui/transferlistfilterswidget.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/gui/transferlistfilterswidget.cpp b/src/gui/transferlistfilterswidget.cpp index 042e955b2..83d926d27 100644 --- a/src/gui/transferlistfilterswidget.cpp +++ b/src/gui/transferlistfilterswidget.cpp @@ -72,11 +72,14 @@ namespace return scheme; } - QString getHost(const QString &tracker) + QString getHost(const QString &url) { // We want the domain + tld. Subdomains should be disregarded - const QUrl url {tracker}; - const QString host {url.host()}; + // If failed to parse the domain or IP address, original input should be returned + + const QString host = QUrl(url).host(); + if (host.isEmpty()) + return url; // host is in IP format if (!QHostAddress(host).isNull()) @@ -388,10 +391,8 @@ void TrackerFiltersList::addItem(const QString &tracker, const BitTorrent::Torre void TrackerFiltersList::removeItem(const QString &tracker, const BitTorrent::TorrentID &id) { const QString host = getHost(tracker); - QSet torrentIDs = m_trackers.value(host); - if (torrentIDs.empty()) - return; + QSet torrentIDs = m_trackers.value(host); torrentIDs.remove(id); int row = 0;