Compare commits

...

14 Commits

Author SHA1 Message Date
Chocobo1
1b0fd45643 Fix wrong 'tracker error' count
This happens when a torrent contains some tracker URLs that share the same domain.
Closes #17808.
2022-10-07 12:40:51 +08:00
Vladimir Golovnev
9b267690cc 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.
2022-10-06 06:35:46 +03:00
sledgehammer999
4e140098ed Merge pull request #17822 from sledgehammer999/backport_nsis_refactor
Backport nsis refactor
2022-10-04 18:42:18 +03:00
Vladimir Golovnev
56c4cc89b9 Correctly load state of use download folder
PR #17807.
Closes #17793.
2022-10-04 13:03:32 +03:00
Chocobo1
74aa41371d Improve column updates granularity 2022-10-04 13:08:21 +08:00
Chocobo1
ea8228280e WebUI: don't disable combobox for file priority
Closes #17794.
PR #17797.
2022-10-04 13:08:21 +08:00
Chocobo1
22ac68152f Fix torrent content checkboxes not updated properly
And reduce emitting redundant 'data updated' signals.

Closes #17144, #17764.
2022-10-04 13:08:21 +08:00
Chocobo1
2831ad5d22 Remove unused functions 2022-10-04 13:08:21 +08:00
Chocobo1
3f15f4a44e Fix coding style 2022-10-04 13:08:21 +08:00
sledgehammer999
98c467e102 NSIS: Refactor configuration to ease installer creation via scripting 2022-10-03 14:46:31 +03:00
sledgehammer999
3ef749d77c NSIS: Require Windows 10 1809 for Qt6 builds
Also refactor the config.nsi with more defines that control the build.
Closes #17783
2022-10-03 14:43:38 +03:00
sledgehammer999
192b01bcb7 NSIS: Drop hardcoded qt's translation filenames 2022-10-03 14:41:52 +03:00
Chocobo1
e151970998 GHA CI: bump "Install Qt" action version 2022-09-16 12:06:47 +08:00
Chocobo1
d85703608a 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.
2022-09-16 12:06:47 +08:00
75 changed files with 485 additions and 164 deletions

View File

@@ -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

View File

@@ -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 }}

View File

@@ -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"

View File

@@ -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"

View File

@@ -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`

View File

@@ -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
"!define PROG_VERSION "3.0.3"" to the version of qbittorrent you just built.
2. Extract the plugins found in the folder "nsis plugins" into your
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. 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:
@@ -42,13 +42,14 @@ 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
options.nsi
config.nsi
helper.nsi
qbittorrent.exe
qbittorrent.pdb
qbittorrent.nsi
qt.conf
translations.nsi
@@ -56,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:

View File

@@ -1,23 +1,95 @@
;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
; 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
; 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
;Uncomment when packaging 64bit qbittorrent
;!define APP64BIT
!include "MUI.nsh"
!include "MUI2.nsh"
!include "UAC.nsh"
!include "FileFunc.nsh"
!include "WinVer.nsh"
!ifdef APP64BIT
!ifdef QBT_IS_X64
!include "x64.nsh"
!endif
!include "3rdparty\VersionCompleteXXXX.nsi"
;For the file association
!define SHCNE_ASSOCCHANGED 0x8000000
@@ -27,41 +99,33 @@ 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
; The name of the installer
Name "qBittorrent ${PROG_VERSION}"
; The name of the installer
Name "qBittorrent ${QBT_INSTALLER_WINDOWNAME}"
; The file to write
OutFile "qbittorrent_${PROG_VERSION}_setup.exe"
!else
; The name of the installer
Name "qBittorrent ${PROG_VERSION} x64"
; The file to write
OutFile "qbittorrent_${PROG_VERSION}_x64_setup.exe"
!endif
; The file to write
OutFile "qbittorrent_${QBT_INSTALLER_FILENAME}_setup.exe"
;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 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
; (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

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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 をアンインストール"

View File

@@ -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 제거"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -24,33 +24,28 @@ 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"
; 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"
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"
@@ -180,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

View File

@@ -1,4 +1,4 @@
!include options.nsi
!include config.nsi
!include translations.nsi
!include installer.nsi
!include uninstaller.nsi

View File

@@ -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;

View File

@@ -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

View File

@@ -220,7 +220,12 @@ void TorrentContentModel::updateFilesProgress(const QVector<qreal> &fp)
// Update folders progress in the tree
m_rootItem->recalculateProgress();
m_rootItem->recalculateAvailability();
emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1)));
const QVector<ColumnInterval> columns =
{
{TorrentContentModelItem::COL_PROGRESS, TorrentContentModelItem::COL_PROGRESS}
};
notifySubtreeUpdated(index(0, 0), columns);
}
void TorrentContentModel::updateFilesPriorities(const QVector<BitTorrent::DownloadPriority> &fprio)
@@ -233,7 +238,13 @@ void TorrentContentModel::updateFilesPriorities(const QVector<BitTorrent::Downlo
emit layoutAboutToBeChanged();
for (int i = 0; i < fprio.size(); ++i)
m_filesIndex[i]->setPriority(static_cast<BitTorrent::DownloadPriority>(fprio[i]));
emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1)));
const QVector<ColumnInterval> columns =
{
{TorrentContentModelItem::COL_NAME, TorrentContentModelItem::COL_NAME},
{TorrentContentModelItem::COL_PRIO, TorrentContentModelItem::COL_PRIO}
};
notifySubtreeUpdated(index(0, 0), columns);
}
void TorrentContentModel::updateFilesAvailability(const QVector<qreal> &fa)
@@ -247,7 +258,12 @@ void TorrentContentModel::updateFilesAvailability(const QVector<qreal> &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)));
const QVector<ColumnInterval> columns =
{
{TorrentContentModelItem::COL_AVAILABILITY, TorrentContentModelItem::COL_AVAILABILITY}
};
notifySubtreeUpdated(index(0, 0), columns);
}
QVector<BitTorrent::DownloadPriority> TorrentContentModel::getFilePriorities() const
@@ -269,66 +285,94 @@ bool TorrentContentModel::allFiltered() const
int TorrentContentModel::columnCount(const QModelIndex &parent) const
{
if (parent.isValid())
return static_cast<TorrentContentModelItem*>(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;
if ((index.column() == TorrentContentModelItem::COL_NAME) && (role == Qt::CheckStateRole))
{
auto *item = static_cast<TorrentContentModelItem*>(index.internalPointer());
qDebug("setData(%s, %d)", qUtf8Printable(item->name()), value.toInt());
auto *item = static_cast<TorrentContentModelItem *>(index.internalPointer());
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<Qt::CheckState>(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)));
const QVector<ColumnInterval> columns =
{
{TorrentContentModelItem::COL_NAME, TorrentContentModelItem::COL_NAME},
{TorrentContentModelItem::COL_PRIO, TorrentContentModelItem::COL_PRIO}
};
notifySubtreeUpdated(index, columns);
emit filteredFilesChanged();
return true;
}
return true;
}
if (role == Qt::EditRole)
{
Q_ASSERT(index.isValid());
auto *item = static_cast<TorrentContentModelItem*>(index.internalPointer());
auto *item = static_cast<TorrentContentModelItem *>(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<BitTorrent::DownloadPriority>(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<BitTorrent::DownloadPriority>(value.toInt());
if (currentPrio != newPrio)
{
item->setPriority(newPrio);
const QVector<ColumnInterval> 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))
{
emit filteredFilesChanged();
}
return true;
}
}
break;
default:
return false;
break;
}
emit dataChanged(index, index);
return true;
}
return false;
@@ -336,14 +380,14 @@ bool TorrentContentModel::setData(const QModelIndex &index, const QVariant &valu
TorrentContentModelItem::ItemType TorrentContentModel::itemType(const QModelIndex &index) const
{
return static_cast<const TorrentContentModelItem*>(index.internalPointer())->itemType();
return static_cast<const TorrentContentModelItem *>(index.internalPointer())->itemType();
}
int TorrentContentModel::getFileIndex(const QModelIndex &index)
{
auto *item = static_cast<TorrentContentModelItem*>(index.internalPointer());
auto *item = static_cast<TorrentContentModelItem *>(index.internalPointer());
if (item->itemType() == TorrentContentModelItem::FileType)
return static_cast<TorrentContentModelFile*>(item)->fileIndex();
return static_cast<TorrentContentModelFile *>(item)->fileIndex();
Q_ASSERT(item->itemType() == TorrentContentModelItem::FileType);
return -1;
@@ -354,7 +398,7 @@ QVariant TorrentContentModel::data(const QModelIndex &index, const int role) con
if (!index.isValid())
return {};
auto *item = static_cast<TorrentContentModelItem*>(index.internalPointer());
auto *item = static_cast<TorrentContentModelItem *>(index.internalPointer());
switch (role)
{
@@ -392,8 +436,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 +477,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<TorrentContentModelFolder*>(parent.internalPointer());
const TorrentContentModelFolder *parentItem = parent.isValid()
? static_cast<TorrentContentModelFolder *>(parent.internalPointer())
: m_rootItem;
Q_ASSERT(parentItem);
if (row >= parentItem->childCount())
@@ -452,6 +493,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 +502,26 @@ QModelIndex TorrentContentModel::parent(const QModelIndex &index) const
if (!index.isValid())
return {};
auto *childItem = static_cast<TorrentContentModelItem*>(index.internalPointer());
if (!childItem)
const auto *item = static_cast<TorrentContentModelItem *>(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<TorrentContentModelFolder*>(static_cast<TorrentContentModelItem*>(parent.internalPointer()));
const TorrentContentModelFolder *parentItem = parent.isValid()
? dynamic_cast<TorrentContentModelFolder *>(static_cast<TorrentContentModelItem *>(parent.internalPointer()))
: m_rootItem;
return parentItem ? parentItem->childCount() : 0;
}
@@ -537,20 +577,53 @@ void TorrentContentModel::setupModelData(const BitTorrent::AbstractFileStorage &
emit layoutChanged();
}
void TorrentContentModel::selectAll()
void TorrentContentModel::notifySubtreeUpdated(const QModelIndex &index, const QVector<ColumnInterval> &columns)
{
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)));
}
// For best performance, `columns` entries should be arranged from left to right
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)));
Q_ASSERT(index.isValid());
// emit itself
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())
{
for (const ColumnInterval &column : columns)
emit dataChanged(parentIndex.siblingAtColumn(column.first()), parentIndex.siblingAtColumn(column.last()));
parentIndex = parent(parentIndex);
}
// propagate down the model
QVector<QModelIndex> parentIndexes;
if (hasChildren(index))
parentIndexes.push_back(index);
while (!parentIndexes.isEmpty())
{
const QModelIndex parent = parentIndexes.takeLast();
const int childCount = rowCount(parent);
const QModelIndex child = this->index(0, 0, parent);
// emit this generation
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 sibling = child.siblingAtRow(i);
if (hasChildren(sibling))
parentIndexes.push_back(sibling);
}
}
}

View File

@@ -31,6 +31,7 @@
#include <QAbstractItemModel>
#include <QVector>
#include "base/indexrange.h"
#include "torrentcontentmodelitem.h"
class QFileIconProvider;
@@ -79,12 +80,12 @@ public:
signals:
void filteredFilesChanged();
public slots:
void selectAll();
void selectNone();
private:
TorrentContentModelFolder *m_rootItem;
using ColumnInterval = IndexInterval<int>;
void notifySubtreeUpdated(const QModelIndex &index, const QVector<ColumnInterval> &columns);
TorrentContentModelFolder *m_rootItem = nullptr;
QVector<TorrentContentModelFile *> m_filesIndex;
QFileIconProvider *m_fileIconProvider;
};

View File

@@ -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<BitTorrent::TorrentID> torrentIDs = m_trackers.value(host);
if (torrentIDs.empty())
return;
QSet<BitTorrent::TorrentID> torrentIDs = m_trackers.value(host);
torrentIDs.remove(id);
int row = 0;

View File

@@ -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<int>(&QComboBox::currentIndexChanged), this, &WatchedFolderOptionsDialog::onTMMChanged);
connect(m_ui->categoryComboBox, qOverload<int>(&QComboBox::currentIndexChanged), this, &WatchedFolderOptionsDialog::onCategoryChanged);

View File

@@ -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()

View File

@@ -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) {