mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-26 10:18:05 -06:00
Compare commits
46 Commits
release-4.
...
release-4.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
785320e7f6 | ||
|
|
954d6ff5c6 | ||
|
|
1f6a817020 | ||
|
|
4e30e6cb8e | ||
|
|
753cdfdb1a | ||
|
|
daaaa11f93 | ||
|
|
c0e0e36d10 | ||
|
|
188469a42c | ||
|
|
18296b2f75 | ||
|
|
cce1290c0c | ||
|
|
64acc64c58 | ||
|
|
d5a3f724ab | ||
|
|
7567f71c55 | ||
|
|
6805922521 | ||
|
|
a3812c0831 | ||
|
|
361741d677 | ||
|
|
acd9102dc2 | ||
|
|
e74b587420 | ||
|
|
2589363622 | ||
|
|
cfa7a6db46 | ||
|
|
5609fa49a6 | ||
|
|
d0ad08e495 | ||
|
|
33b51249dc | ||
|
|
17b6dcfbef | ||
|
|
c894d84ed3 | ||
|
|
8c52b53300 | ||
|
|
4c3af5d923 | ||
|
|
77d907c2aa | ||
|
|
a56b3edc58 | ||
|
|
a83424a7a7 | ||
|
|
cdf66e069d | ||
|
|
1773b1ea05 | ||
|
|
9ebbafed95 | ||
|
|
8a5ffd68df | ||
|
|
cf6e4ce933 | ||
|
|
c54f8bf219 | ||
|
|
3f6ca64d9e | ||
|
|
0990c2632b | ||
|
|
ba5229a069 | ||
|
|
1aff030317 | ||
|
|
c1b63372f1 | ||
|
|
081eace057 | ||
|
|
61fae3a3ee | ||
|
|
18ad861444 | ||
|
|
a57b80c7e0 | ||
|
|
bfa8dc7f67 |
2
.github/workflows/ci_macos.yaml
vendored
2
.github/workflows/ci_macos.yaml
vendored
@@ -49,6 +49,7 @@ jobs:
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ startsWith(github.ref, 'refs/heads/') }}
|
||||
update_packager_index: false
|
||||
|
||||
- name: Install boost
|
||||
@@ -66,6 +67,7 @@ jobs:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: qtbase qtdeclarative qtsvg qttools
|
||||
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
|
||||
2
.github/workflows/ci_ubuntu.yaml
vendored
2
.github/workflows/ci_ubuntu.yaml
vendored
@@ -39,6 +39,7 @@ jobs:
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ startsWith(github.ref, 'refs/heads/') }}
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
max_size=2G
|
||||
@@ -48,6 +49,7 @@ jobs:
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: icu qtbase qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
|
||||
39
.github/workflows/ci_windows.yaml
vendored
39
.github/workflows/ci_windows.yaml
vendored
@@ -22,6 +22,7 @@ jobs:
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
libtorrent_path: "${{ github.workspace }}/libtorrent"
|
||||
vpkg_triplet_path: "${{ github.workspace }}/../triplets_overlay"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
@@ -42,29 +43,32 @@ jobs:
|
||||
vcpkgDirectory: C:/vcpkg
|
||||
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly
|
||||
|
||||
- name: Install dependencies from vcpkg
|
||||
- name: Install dependencies with vcpkg
|
||||
run: |
|
||||
# tell vcpkg to only build Release variants of the dependencies
|
||||
# create our own triplet
|
||||
New-Item `
|
||||
-Path "${{ github.workspace }}" `
|
||||
-Name "triplets_overlay" `
|
||||
-ItemType Directory
|
||||
Copy-Item `
|
||||
"${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-windows-static.cmake" `
|
||||
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake"
|
||||
-Force `
|
||||
-ItemType File `
|
||||
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake"
|
||||
Add-Content `
|
||||
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake" `
|
||||
-Value "set(VCPKG_BUILD_TYPE release)"
|
||||
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake" `
|
||||
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
|
||||
"set(VCPKG_LIBRARY_LINKAGE static)",
|
||||
"set(VCPKG_CRT_LINKAGE dynamic)",
|
||||
"set(VCPKG_BUILD_TYPE release)",
|
||||
"set(VCPKG_C_FLAGS /guard:cf)",
|
||||
"set(VCPKG_CXX_FLAGS /guard:cf)",
|
||||
"set(VCPKG_LINKER_FLAGS /guard:cf)")
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
$packages = `
|
||||
"openssl:x64-windows-static-release",
|
||||
"zlib:x64-windows-static-release"
|
||||
"openssl:x64-windows-static-md-release",
|
||||
"zlib:x64-windows-static-md-release"
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
||||
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
||||
--no-dry-run
|
||||
--no-dry-run `
|
||||
--overlay-triplets="${{ env.vpkg_triplet_path }}"
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install `
|
||||
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
||||
--clean-after-build `
|
||||
--overlay-triplets="${{ env.vpkg_triplet_path }}" `
|
||||
$packages
|
||||
|
||||
- name: Install boost
|
||||
@@ -81,6 +85,7 @@ jobs:
|
||||
with:
|
||||
version: "6.5.0"
|
||||
archives: qtbase qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
@@ -103,7 +108,7 @@ jobs:
|
||||
-DBUILD_SHARED_LIBS=OFF `
|
||||
-Ddeprecated-functions=OFF `
|
||||
-Dstatic_runtime=OFF `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
|
||||
cmake --build build
|
||||
cmake --install build
|
||||
|
||||
@@ -121,7 +126,7 @@ jobs:
|
||||
-DMSVC_RUNTIME_DYNAMIC=ON `
|
||||
-DQT6=ON `
|
||||
-DTESTING=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
|
||||
-DVERBOSE_CONFIGURE=ON `
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build --target qbt_update_translations
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.vscode/
|
||||
src/gui/geoip/GeoIP.dat
|
||||
src/gui/geoip/GeoIP.dat.gz
|
||||
src/qbittorrent
|
||||
|
||||
28
Changelog
28
Changelog
@@ -1,3 +1,31 @@
|
||||
Sun Mar 24th 2024 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.4
|
||||
- BUGFIX: Correctly adjust "Add New torrent" dialog position in all the cases (glassez)
|
||||
- BUGFIX: Change "metadata received" stop condition behavior (glassez)
|
||||
- BUGFIX: Add a small delay before processing the key input of search boxes (Chocobo1)
|
||||
- BUGFIX: Ensure the profile path is pointing to a directory (Chocobo1)
|
||||
- RSS: Use better icons for RSS articles (glassez)
|
||||
- WINDOWS: NSIS: Update French, Hungarian translations (MarcDrieu, foxi69)
|
||||
- LINUX: Fix sorting when ICU isn't used (Chocobo1)
|
||||
- LINUX: Fix invisible tray icon on Plasma 6 (tehcneko)
|
||||
|
||||
Mon Jan 15th 2024 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.3
|
||||
- BUGFIX: Correctly update number of filtered items (glassez)
|
||||
- BUGFIX: Don't forget to store Stop condition value (glassez)
|
||||
- BUGFIX: Show correctly decoded filename in log (glassez)
|
||||
- BUGFIX: Specify a locale if none is set (Chocobo1)
|
||||
- BUGFIX: Apply inactive seeding time limit set on new torrents (glassez)
|
||||
- BUGFIX: Show URL seeds for torrents that have no metadata (glassez)
|
||||
- BUGFIX: Don't get stuck loading on mismatched info-hashes in resume data (glassez)
|
||||
|
||||
Mon Nov 27th 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.2
|
||||
- BUGFIX: Do not apply share limit if the previous one was applied (glassez)
|
||||
- BUGFIX: Show Add new torrent dialog on main window screen (glassez)
|
||||
- WEBUI: Fix JS memory leak (brvphoenix)
|
||||
- WEBUI: Disable stdout buffering for qbt-nox (Chocobo1)
|
||||
- WINDOWS: NSIS: Display correct Minimum Windows OS requirement (xavier2k6)
|
||||
- WINDOWS: NSIS: Add Hebrew translation (avivmu)
|
||||
- LINUX: WAYLAND: Fix parent widget of "Lock qBittorrent" submenu (Vlad Zahorodnii)
|
||||
|
||||
Mon Nov 20th 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.1
|
||||
- FEATURE: Add option to enable previous Add new torrent dialog behavior (glassez)
|
||||
- BUGFIX: Prevent crash due to race condition when adding magnet link (glassez)
|
||||
|
||||
20
configure
vendored
20
configure
vendored
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.71 for qbittorrent v4.6.1.
|
||||
# Generated by GNU Autoconf 2.71 for qbittorrent v4.6.4.
|
||||
#
|
||||
# Report bugs to <bugs.qbittorrent.org>.
|
||||
#
|
||||
@@ -611,8 +611,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='qbittorrent'
|
||||
PACKAGE_TARNAME='qbittorrent'
|
||||
PACKAGE_VERSION='v4.6.1'
|
||||
PACKAGE_STRING='qbittorrent v4.6.1'
|
||||
PACKAGE_VERSION='v4.6.4'
|
||||
PACKAGE_STRING='qbittorrent v4.6.4'
|
||||
PACKAGE_BUGREPORT='bugs.qbittorrent.org'
|
||||
PACKAGE_URL='https://www.qbittorrent.org/'
|
||||
|
||||
@@ -1329,7 +1329,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures qbittorrent v4.6.1 to adapt to many kinds of systems.
|
||||
\`configure' configures qbittorrent v4.6.4 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -1400,7 +1400,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of qbittorrent v4.6.1:";;
|
||||
short | recursive ) echo "Configuration of qbittorrent v4.6.4:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@@ -1533,7 +1533,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
qbittorrent configure v4.6.1
|
||||
qbittorrent configure v4.6.4
|
||||
generated by GNU Autoconf 2.71
|
||||
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
@@ -1648,7 +1648,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by qbittorrent $as_me v4.6.1, which was
|
||||
It was created by qbittorrent $as_me v4.6.4, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
$ $0$ac_configure_args_raw
|
||||
@@ -4779,7 +4779,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='qbittorrent'
|
||||
VERSION='v4.6.1'
|
||||
VERSION='v4.6.4'
|
||||
|
||||
|
||||
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
||||
@@ -7237,7 +7237,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by qbittorrent $as_me v4.6.1, which was
|
||||
This file was extended by qbittorrent $as_me v4.6.4, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@@ -7297,7 +7297,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config='$ac_cs_config_escaped'
|
||||
ac_cs_version="\\
|
||||
qbittorrent config.status v4.6.1
|
||||
qbittorrent config.status v4.6.4
|
||||
configured by $0, generated by GNU Autoconf 2.71,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
AC_INIT([qbittorrent], [v4.6.1], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
|
||||
AC_INIT([qbittorrent], [v4.6.4], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
: ${CFLAGS=""}
|
||||
|
||||
4
dist/mac/Info.plist
vendored
4
dist/mac/Info.plist
vendored
@@ -55,7 +55,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.6.1</string>
|
||||
<string>4.6.4</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@@ -67,7 +67,7 @@
|
||||
<key>NSAppleScriptEnabled</key>
|
||||
<string>YES</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2006-2023 The qBittorrent project</string>
|
||||
<string>Copyright © 2006-2024 The qBittorrent project</string>
|
||||
<key>UTExportedTypeDeclarations</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
||||
@@ -74,6 +74,6 @@
|
||||
<url type="translate">https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent</url>
|
||||
<content_rating type="oars-1.1"/>
|
||||
<releases>
|
||||
<release version="4.6.1" date="2023-11-20"/>
|
||||
<release version="4.6.4" date="2024-03-24"/>
|
||||
</releases>
|
||||
</component>
|
||||
|
||||
@@ -21,7 +21,7 @@ GenericName[ar]=عميل بتتورنت
|
||||
Comment[ar]=نزّل وشارك الملفات عبر كيوبتتورنت
|
||||
Name[ar]=qBittorrent
|
||||
GenericName[be]=Кліент BitTorrent
|
||||
Comment[be]=Спампоўванне і раздача файлаў праз пратакол BitTorrent
|
||||
Comment[be]=Сьцягваньне й раздача файлаў праз пратакол BitTorrent
|
||||
Name[be]=qBittorrent
|
||||
GenericName[bg]=BitTorrent клиент
|
||||
Comment[bg]=Сваляне и споделяне на файлове чрез BitTorrent
|
||||
@@ -144,8 +144,8 @@ GenericName[sl]=BitTorrent odjemalec
|
||||
Comment[sl]=Prenesite in delite datoteke preko BitTorrenta
|
||||
Name[sl]=qBittorrent
|
||||
Name[sq]=qBittorrent
|
||||
GenericName[sr]=BitTorrent-клијент
|
||||
Comment[sr]=Преузимајте и делите фајлове преко BitTorrent протокола
|
||||
GenericName[sr]=BitTorrent клијент
|
||||
Comment[sr]=Преузимајте и делите фајлове преко BitTorrent-а
|
||||
Name[sr]=qBittorrent
|
||||
GenericName[sr@latin]=BitTorrent klijent
|
||||
Comment[sr@latin]=Preuzimanje i deljenje fajlova preko BitTorrent-a
|
||||
|
||||
4
dist/windows/config.nsi
vendored
4
dist/windows/config.nsi
vendored
@@ -25,7 +25,7 @@
|
||||
; 4.5.1.3 -> good
|
||||
; 4.5.1.3.2 -> bad
|
||||
; 4.5.0beta -> bad
|
||||
!define /ifndef QBT_VERSION "4.6.1"
|
||||
!define /ifndef QBT_VERSION "4.6.4"
|
||||
|
||||
; Option that controls the installer's window name
|
||||
; If set, its value will be used like this:
|
||||
@@ -112,7 +112,7 @@ OutFile "qbittorrent_${QBT_INSTALLER_FILENAME}_setup.exe"
|
||||
;Installer Version Information
|
||||
VIAddVersionKey "ProductName" "qBittorrent"
|
||||
VIAddVersionKey "CompanyName" "The qBittorrent project"
|
||||
VIAddVersionKey "LegalCopyright" "Copyright ©2006-2023 The qBittorrent project"
|
||||
VIAddVersionKey "LegalCopyright" "Copyright ©2006-2024 The qBittorrent project"
|
||||
VIAddVersionKey "FileDescription" "qBittorrent - A Bittorrent Client"
|
||||
VIAddVersionKey "FileVersion" "${QBT_VERSION}"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_AFRIKAANS} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_AFRIKAANS} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_ALBANIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_ALBANIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_ARABIC} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_ARABIC} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_BASQUE} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_BASQUE} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_BELARUSIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_BELARUSIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_BOSNIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_BOSNIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_BRETON} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_BRETON} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_BULGARIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_BULGARIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_CATALAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_CATALAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_CROATIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_CROATIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_CZECH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_CZECH} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_DANISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_DANISH} "Afinstaller qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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} "Dit installatieprogramma vereist ten minste Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_DUTCH} "Dit installatieprogramma vereist ten minste Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_DUTCH} "qBittorrent verwijderen"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_ESPERANTO} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_ESPERANTO} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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} "Selle installeri jaoks on vajalik vähemalt Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_ESTONIAN} "Selle installeri jaoks on vajalik vähemalt Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_ESTONIAN} "Desinstalli qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_FARSI} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_FARSI} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_FINNISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_FINNISH} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
12
dist/windows/installer-translations/french.nsi
vendored
12
dist/windows/installer-translations/french.nsi
vendored
@@ -3,9 +3,9 @@
|
||||
;LangString inst_qbt_req ${LANG_ENGLISH} "qBittorrent (required)"
|
||||
LangString inst_qbt_req ${LANG_FRENCH} "qBittorrent (requis)"
|
||||
;LangString inst_desktop ${LANG_ENGLISH} "Create Desktop Shortcut"
|
||||
LangString inst_desktop ${LANG_FRENCH} "Créer un Raccourci sur le Bureau"
|
||||
LangString inst_desktop ${LANG_FRENCH} "Créer un raccourci sur le Bureau"
|
||||
;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut"
|
||||
LangString inst_startmenu ${LANG_FRENCH} "Créer un Raccourci dans le Menu Démarrer"
|
||||
LangString inst_startmenu ${LANG_FRENCH} "Créer un raccourci dans le Menu Démarrer"
|
||||
;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up"
|
||||
LangString inst_startup ${LANG_FRENCH} "Démarrer qBittorrent au démarrage de Windows"
|
||||
;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent"
|
||||
@@ -30,8 +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} "Cet installateur nécessite au moins Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_FRENCH} "Cet installateur nécessite au moins Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_FRENCH} "Désinstaller qBittorrent"
|
||||
|
||||
@@ -57,6 +57,6 @@ LangString remove_cache ${LANG_FRENCH} "Supprimer les torrents et données en ca
|
||||
;LangString uninst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before uninstalling."
|
||||
LangString uninst_warning ${LANG_FRENCH} "qBittorrent est en cours d'exécution. Fermez l'application avant de la désinstaller."
|
||||
;LangString uninst_tor_warn ${LANG_ENGLISH} "Not removing .torrent association. It is associated with:"
|
||||
LangString uninst_tor_warn ${LANG_FRENCH} "Ne peut pas supprimer l'association du .torrent. Elle est associée avec :"
|
||||
LangString uninst_tor_warn ${LANG_FRENCH} "Impossible de supprimer l'association .torrent. Elle est associée avec :"
|
||||
;LangString uninst_mag_warn ${LANG_ENGLISH} "Not removing magnet association. It is associated with:"
|
||||
LangString uninst_mag_warn ${LANG_FRENCH} "Ne peut pas supprimer l'association du magnet. Elle est associée avec :"
|
||||
LangString uninst_mag_warn ${LANG_FRENCH} "Impossible de supprimer l'association magnet. Elle est associée avec :"
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_GALICIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_GALICIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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} "Diese Installation erfordert mindestens Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_GERMAN} "Diese Installation erfordert mindestens Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_GERMAN} "qBittorrent deinstallieren"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_GREEK} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_GREEK} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
36
dist/windows/installer-translations/hebrew.nsi
vendored
36
dist/windows/installer-translations/hebrew.nsi
vendored
@@ -1,39 +1,37 @@
|
||||
;Installer strings
|
||||
|
||||
;LangString inst_qbt_req ${LANG_ENGLISH} "qBittorrent (required)"
|
||||
LangString inst_qbt_req ${LANG_HEBREW} "qBittorrent (required)"
|
||||
LangString inst_qbt_req ${LANG_HEBREW} "qBittorrent (נדרש)"
|
||||
;LangString inst_desktop ${LANG_ENGLISH} "Create Desktop Shortcut"
|
||||
LangString inst_desktop ${LANG_HEBREW} "Create Desktop Shortcut"
|
||||
LangString inst_desktop ${LANG_HEBREW} "צור קיצור דרך בשולחן עבודה"
|
||||
;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut"
|
||||
LangString inst_startmenu ${LANG_HEBREW} "Create Start Menu Shortcut"
|
||||
LangString inst_startmenu ${LANG_HEBREW} "צור קיצור דרך ב-Start Menu"
|
||||
;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up"
|
||||
LangString inst_startup ${LANG_HEBREW} "Start qBittorrent on Windows start up"
|
||||
LangString inst_startup ${LANG_HEBREW} "התחל את qBittorrent עם עליית Windows"
|
||||
;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent"
|
||||
LangString inst_torrent ${LANG_HEBREW} "Open .torrent files with qBittorrent"
|
||||
LangString inst_torrent ${LANG_HEBREW} "פתח קבצי .torrent עם qBittorrent"
|
||||
;LangString inst_magnet ${LANG_ENGLISH} "Open magnet links with qBittorrent"
|
||||
LangString inst_magnet ${LANG_HEBREW} "Open magnet links with qBittorrent"
|
||||
LangString inst_magnet ${LANG_HEBREW} "פתח קישורי מגנט עם qBittorrent"
|
||||
;LangString inst_firewall ${LANG_ENGLISH} "Add Windows Firewall rule"
|
||||
LangString inst_firewall ${LANG_HEBREW} "Add Windows Firewall rule"
|
||||
LangString inst_firewall ${LANG_HEBREW} "הוסף כלל חומת האש של Windows"
|
||||
;LangString inst_pathlimit ${LANG_ENGLISH} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)"
|
||||
LangString inst_pathlimit ${LANG_HEBREW} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)"
|
||||
LangString inst_pathlimit ${LANG_HEBREW} "השבת את מגבלת אורך הנתיב של Windows (הגבלת MAX_PATH של 260 תווים, דורשת Windows 10 1607 ואילך)"
|
||||
;LangString inst_firewallinfo ${LANG_ENGLISH} "Adding Windows Firewall rule"
|
||||
LangString inst_firewallinfo ${LANG_HEBREW} "Adding Windows Firewall rule"
|
||||
LangString inst_firewallinfo ${LANG_HEBREW} "מוסיף כלל חומת האש של Windows"
|
||||
;LangString inst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before installing."
|
||||
LangString inst_warning ${LANG_HEBREW} "qBittorrent is running. Please close the application before installing."
|
||||
LangString inst_warning ${LANG_HEBREW} "qBittorrent פועל. אנא סגור את האפליקציה לפני ההתקנה."
|
||||
;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact."
|
||||
LangString inst_uninstall_question ${LANG_HEBREW} "Current version will be uninstalled. User settings and torrents will remain intact."
|
||||
LangString inst_uninstall_question ${LANG_HEBREW} "הגרסה הנוכחית תוסר. הגדרות המשתמש והטורנטים יישארו ללא שינוי."
|
||||
;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version."
|
||||
LangString inst_unist ${LANG_HEBREW} "Uninstalling previous version."
|
||||
LangString inst_unist ${LANG_HEBREW} "מסיר את ההתקנה של הגרסה הקודמת."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_HEBREW} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_HEBREW} "הפעל את qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
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_requires_64bit ${LANG_HEBREW} "התקנה זו עובדת רק בגירסאות 64 סיביות של Windows."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_HEBREW} "התקנה זו דורשת לפחות Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_HEBREW} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_HEBREW} "הסר את ההתקנה של qBittorrent"
|
||||
|
||||
;------------------------------------
|
||||
;Uninstaller strings
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_HUNGARIAN} "A telepítéshez minimum Windows 10 (1809) / Windows Server 2019 szükséges."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_HUNGARIAN} "qBittorrent eltávolítása"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_ICELANDIC} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_ICELANDIC} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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} "Penginstal ini membutuhkan setidaknya Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_INDONESIAN} "Penginstal ini membutuhkan setidaknya Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_INDONESIAN} "Hapus qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_IRISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_IRISH} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_ITALIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_ITALIAN} "Disinstalla qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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} "このインストーラの実行には Windows 10 1809 以降が必要です。"
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_JAPANESE} "このインストーラの実行には Windows 10 (1809) / Windows Server 2019 以降が必要です。"
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_JAPANESE} "qBittorrent をアンインストール"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_KOREAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_KOREAN} "qBittorrent 제거"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_KURDISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_KURDISH} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_LATVIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_LATVIAN} "Atinstalēt qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ LangString launch_qbt ${LANG_LITHUANIAN} "Paleisti qBittorrent."
|
||||
LangString inst_requires_64bit ${LANG_LITHUANIAN} "Šis įdiegėjas veikia tik su 64 bitų Windows versija."
|
||||
;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7."
|
||||
LangString inst_requires_win7 ${LANG_LITHUANIAN} "Ši qBittorent versija reikalauja bent Windows 7."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809."
|
||||
LangString inst_requires_win10 ${LANG_LITHUANIAN} "Šis įdiegėjas reikalauja bent Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_LITHUANIAN} "Šis įdiegėjas reikalauja bent Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_LITHUANIAN} "Pašalinti qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_LUXEMBOURGISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_LUXEMBOURGISH} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_MACEDONIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_MACEDONIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_MALAY} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_MALAY} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_MONGOLIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_MONGOLIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_NORWEGIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_NORWEGIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_NORWEGIANNYNORSK} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_NORWEGIANNYNORSK} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_POLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_POLISH} "Odinstaluj qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_PORTUGUESE} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_PORTUGUESE} "Desinstalar qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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} "Este instalador requer no mínimo o Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_PORTUGUESEBR} "Este instalador requer no mínimo o Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_PORTUGUESEBR} "Desinstalar o qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ LangString launch_qbt ${LANG_ROMANIAN} "Lansați qBittorrent."
|
||||
LangString inst_requires_64bit ${LANG_ROMANIAN} "Acest program de instalare funcționează doar pe versiunile Windows pe 64 de biți."
|
||||
;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7."
|
||||
LangString inst_requires_win7 ${LANG_ROMANIAN} "Această versiune de qBittorrent necesită cel puțin Windows 7."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809."
|
||||
LangString inst_requires_win10 ${LANG_ROMANIAN} "Acest program de instalare necesită cel puțin Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_ROMANIAN} "Acest program de instalare necesită cel puțin Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_ROMANIAN} "Dezinstalați qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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} "Для работы этого установщика требуется Windows 10 1809 или выше."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_RUSSIAN} "Для работы этого установщика требуется Windows 10 (1809) / Windows Server 2019 или выше."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_RUSSIAN} "Удалить qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_SERBIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_SERBIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_SERBIANLATIN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_SERBIANLATIN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_SIMPCHINESE} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_SIMPCHINESE} "卸载 qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ LangString launch_qbt ${LANG_SLOVAK} "Spustiť qBittorrent."
|
||||
LangString inst_requires_64bit ${LANG_SLOVAK} "Táto inštalácia funguje iba na 64-bitových verziách Windowsu."
|
||||
;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7."
|
||||
LangString inst_requires_win7 ${LANG_SLOVAK} "Táto qBittorrent verzia vyžaduje aspoň Windows 7."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809."
|
||||
LangString inst_requires_win10 ${LANG_SLOVAK} "Tento inštalátor vyžaduje aspoň Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_SLOVAK} "Tento inštalátor vyžaduje aspoň Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_SLOVAK} "Odinštalovať qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_SLOVENIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_SLOVENIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_SPANISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_SPANISH} "Desinstalar qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_SPANISHINTERNATIONAL} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_SPANISHINTERNATIONAL} "Desinstalar qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ LangString launch_qbt ${LANG_SWEDISH} "Kör qBittorrent."
|
||||
LangString inst_requires_64bit ${LANG_SWEDISH} "Det här installationsprogrammet fungerar endast i 64-bitars Windows-versioner."
|
||||
;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7."
|
||||
LangString inst_requires_win7 ${LANG_SWEDISH} "Den här qBittorrent-versionen kräver minst Windows 7."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809."
|
||||
LangString inst_requires_win10 ${LANG_SWEDISH} "Det här installationsprogrammet kräver minst Windows 10 1809."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_SWEDISH} "Det här installationsprogrammet kräver minst Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_SWEDISH} "Avinstallera qBittorrent"
|
||||
|
||||
|
||||
4
dist/windows/installer-translations/thai.nsi
vendored
4
dist/windows/installer-translations/thai.nsi
vendored
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_THAI} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_THAI} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_TRADCHINESE} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_TRADCHINESE} "移除 qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +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} "Bu yükleyici en az Windows 10 1809 gerektirir."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_TURKISH} "Bu yükleyici en az Windows 10 (1809) / Windows Server 2019 gerektirir."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_TURKISH} "qBittorrent'i kaldır"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_UKRAINIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_UKRAINIAN} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ LangString launch_qbt ${LANG_UZBEK} "qBittorrent ishga tushirilsin."
|
||||
LangString inst_requires_64bit ${LANG_UZBEK} "Bu oʻrnatuvchi faqat Windows 64-bit versiyalarda ishlaydi."
|
||||
;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7."
|
||||
LangString inst_requires_win7 ${LANG_UZBEK} "qBittorrent bu versiyasi kamida Windows 7 talab qiladi."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809."
|
||||
LangString inst_requires_win10 ${LANG_UZBEK} "Bu oʻrnatuvchi kamida Windows 10 1809 talab qiladi."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_UZBEK} "Bu oʻrnatuvchi kamida Windows 10 (1809) / Windows Server 2019 talab qiladi."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_UZBEK} "qBittorrent oʻchirilsin"
|
||||
|
||||
|
||||
@@ -30,8 +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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
LangString inst_requires_win10 ${LANG_WELSH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_WELSH} "Uninstall qBittorrent"
|
||||
|
||||
|
||||
2
dist/windows/installer.nsi
vendored
2
dist/windows/installer.nsi
vendored
@@ -183,7 +183,7 @@ Function .onInit
|
||||
Abort
|
||||
${EndIf}
|
||||
!else
|
||||
${IfNot} ${AtLeastWaaS} 1809 ; Windows 10 1809. Min supported version by Qt6
|
||||
${IfNot} ${AtLeastWaaS} 1809 ; Windows 10 (1809) / Windows Server 2019. Min supported version by Qt6
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_win10)
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
@@ -264,11 +264,8 @@ Application::Application(int &argc, char **argv)
|
||||
Logger::initInstance();
|
||||
|
||||
const auto portableProfilePath = Path(QCoreApplication::applicationDirPath()) / DEFAULT_PORTABLE_MODE_PROFILE_DIR;
|
||||
const bool portableModeEnabled = m_commandLineArgs.profileDir.isEmpty() && portableProfilePath.exists();
|
||||
|
||||
const Path profileDir = portableModeEnabled
|
||||
? portableProfilePath
|
||||
: m_commandLineArgs.profileDir;
|
||||
const bool portableModeEnabled = m_commandLineArgs.profileDir.isEmpty() && Utils::Fs::isDir(portableProfilePath);
|
||||
const Path profileDir = portableModeEnabled ? portableProfilePath : m_commandLineArgs.profileDir;
|
||||
Profile::initInstance(profileDir, m_commandLineArgs.configurationName,
|
||||
(m_commandLineArgs.relativeFastresumePaths || portableModeEnabled));
|
||||
|
||||
|
||||
@@ -94,12 +94,18 @@ void showSplashScreen();
|
||||
|
||||
#ifdef Q_OS_UNIX
|
||||
void adjustFileDescriptorLimit();
|
||||
void adjustLocale();
|
||||
#endif
|
||||
|
||||
// Main
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#ifdef DISABLE_GUI
|
||||
setvbuf(stdout, nullptr, _IONBF, 0);
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_UNIX
|
||||
adjustLocale();
|
||||
adjustFileDescriptorLimit();
|
||||
#endif
|
||||
|
||||
@@ -388,4 +394,12 @@ void adjustFileDescriptorLimit()
|
||||
limit.rlim_cur = limit.rlim_max;
|
||||
setrlimit(RLIMIT_NOFILE, &limit);
|
||||
}
|
||||
|
||||
void adjustLocale()
|
||||
{
|
||||
// specify the default locale just in case if user has not set any other locale
|
||||
// only `C` locale is available universally without installing locale packages
|
||||
if (qEnvironmentVariableIsEmpty("LANG"))
|
||||
qputenv("LANG", "C.UTF-8");
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -194,11 +194,16 @@ add_library(qbt_base STATIC
|
||||
|
||||
target_link_libraries(qbt_base
|
||||
PRIVATE
|
||||
OpenSSL::Crypto OpenSSL::SSL
|
||||
OpenSSL::Crypto
|
||||
OpenSSL::SSL
|
||||
ZLIB::ZLIB
|
||||
PUBLIC
|
||||
LibtorrentRasterbar::torrent-rasterbar
|
||||
Qt::Core Qt::Network Qt::Sql Qt::Xml
|
||||
Qt::Core
|
||||
Qt::CorePrivate
|
||||
Qt::Network
|
||||
Qt::Sql
|
||||
Qt::Xml
|
||||
qbt_common_cfg
|
||||
)
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ const QString PARAM_DOWNLOADPATH = u"download_path"_s;
|
||||
const QString PARAM_OPERATINGMODE = u"operating_mode"_s;
|
||||
const QString PARAM_QUEUETOP = u"add_to_top_of_queue"_s;
|
||||
const QString PARAM_STOPPED = u"stopped"_s;
|
||||
const QString PARAM_STOPCONDITION = u"stop_condition"_s;
|
||||
const QString PARAM_SKIPCHECKING = u"skip_checking"_s;
|
||||
const QString PARAM_CONTENTLAYOUT = u"content_layout"_s;
|
||||
const QString PARAM_AUTOTMM = u"use_auto_tmm"_s;
|
||||
@@ -126,17 +127,18 @@ BitTorrent::AddTorrentParams BitTorrent::parseAddTorrentParams(const QJsonObject
|
||||
params.savePath = Path(jsonObj.value(PARAM_SAVEPATH).toString());
|
||||
params.useDownloadPath = getOptionalBool(jsonObj, PARAM_USEDOWNLOADPATH);
|
||||
params.downloadPath = Path(jsonObj.value(PARAM_DOWNLOADPATH).toString());
|
||||
params.addForced = (getEnum<BitTorrent::TorrentOperatingMode>(jsonObj, PARAM_OPERATINGMODE) == BitTorrent::TorrentOperatingMode::Forced);
|
||||
params.addForced = (getEnum<TorrentOperatingMode>(jsonObj, PARAM_OPERATINGMODE) == TorrentOperatingMode::Forced);
|
||||
params.addToQueueTop = getOptionalBool(jsonObj, PARAM_QUEUETOP);
|
||||
params.addPaused = getOptionalBool(jsonObj, PARAM_STOPPED);
|
||||
params.stopCondition = getOptionalEnum<Torrent::StopCondition>(jsonObj, PARAM_STOPCONDITION);
|
||||
params.skipChecking = jsonObj.value(PARAM_SKIPCHECKING).toBool();
|
||||
params.contentLayout = getOptionalEnum<BitTorrent::TorrentContentLayout>(jsonObj, PARAM_CONTENTLAYOUT);
|
||||
params.contentLayout = getOptionalEnum<TorrentContentLayout>(jsonObj, PARAM_CONTENTLAYOUT);
|
||||
params.useAutoTMM = getOptionalBool(jsonObj, PARAM_AUTOTMM);
|
||||
params.uploadLimit = jsonObj.value(PARAM_UPLOADLIMIT).toInt(-1);
|
||||
params.downloadLimit = jsonObj.value(PARAM_DOWNLOADLIMIT).toInt(-1);
|
||||
params.seedingTimeLimit = jsonObj.value(PARAM_SEEDINGTIMELIMIT).toInt(BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME);
|
||||
params.inactiveSeedingTimeLimit = jsonObj.value(PARAM_INACTIVESEEDINGTIMELIMIT).toInt(BitTorrent::Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME);
|
||||
params.ratioLimit = jsonObj.value(PARAM_RATIOLIMIT).toDouble(BitTorrent::Torrent::USE_GLOBAL_RATIO);
|
||||
params.seedingTimeLimit = jsonObj.value(PARAM_SEEDINGTIMELIMIT).toInt(Torrent::USE_GLOBAL_SEEDING_TIME);
|
||||
params.inactiveSeedingTimeLimit = jsonObj.value(PARAM_INACTIVESEEDINGTIMELIMIT).toInt(Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME);
|
||||
params.ratioLimit = jsonObj.value(PARAM_RATIOLIMIT).toDouble(Torrent::USE_GLOBAL_RATIO);
|
||||
|
||||
return params;
|
||||
}
|
||||
@@ -149,7 +151,7 @@ QJsonObject BitTorrent::serializeAddTorrentParams(const AddTorrentParams ¶ms
|
||||
{PARAM_SAVEPATH, params.savePath.data()},
|
||||
{PARAM_DOWNLOADPATH, params.downloadPath.data()},
|
||||
{PARAM_OPERATINGMODE, Utils::String::fromEnum(params.addForced
|
||||
? BitTorrent::TorrentOperatingMode::Forced : BitTorrent::TorrentOperatingMode::AutoManaged)},
|
||||
? TorrentOperatingMode::Forced : TorrentOperatingMode::AutoManaged)},
|
||||
{PARAM_SKIPCHECKING, params.skipChecking},
|
||||
{PARAM_UPLOADLIMIT, params.uploadLimit},
|
||||
{PARAM_DOWNLOADLIMIT, params.downloadLimit},
|
||||
@@ -162,6 +164,8 @@ QJsonObject BitTorrent::serializeAddTorrentParams(const AddTorrentParams ¶ms
|
||||
jsonObj[PARAM_QUEUETOP] = *params.addToQueueTop;
|
||||
if (params.addPaused)
|
||||
jsonObj[PARAM_STOPPED] = *params.addPaused;
|
||||
if (params.stopCondition)
|
||||
jsonObj[PARAM_STOPCONDITION] = Utils::String::fromEnum(*params.stopCondition);
|
||||
if (params.contentLayout)
|
||||
jsonObj[PARAM_CONTENTLAYOUT] = Utils::String::fromEnum(*params.contentLayout);
|
||||
if (params.useAutoTMM)
|
||||
|
||||
@@ -288,6 +288,16 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre
|
||||
return nonstd::make_unexpected(tr("Cannot parse torrent info: %1").arg(QString::fromStdString(ec.message())));
|
||||
|
||||
p.ti = torrentInfo;
|
||||
|
||||
#ifdef QBT_USES_LIBTORRENT2
|
||||
if (((p.info_hashes.has_v1() && (p.info_hashes.v1 != p.ti->info_hashes().v1))
|
||||
|| (p.info_hashes.has_v2() && (p.info_hashes.v2 != p.ti->info_hashes().v2))))
|
||||
#else
|
||||
if (!p.info_hash.is_all_zeros() && (p.info_hash != p.ti->info_hash()))
|
||||
#endif
|
||||
{
|
||||
return nonstd::make_unexpected(tr("Mismatching info-hash detected in resume data"));
|
||||
}
|
||||
}
|
||||
|
||||
p.save_path = Profile::instance()->fromPortablePath(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2015-2023 Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Copyright (C) 2015-2024 Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Copyright (C) 2006 Christophe Dumez <chris@qbittorrent.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -1217,13 +1217,13 @@ void SessionImpl::prepareStartup()
|
||||
context->isLoadFinished = true;
|
||||
});
|
||||
|
||||
connect(this, &SessionImpl::torrentsLoaded, context, [this, context](const QVector<Torrent *> &torrents)
|
||||
connect(this, &SessionImpl::addTorrentAlertsReceived, context, [this, context](const qsizetype alertsCount)
|
||||
{
|
||||
context->processingResumeDataCount -= torrents.count();
|
||||
context->finishedResumeDataCount += torrents.count();
|
||||
context->processingResumeDataCount -= alertsCount;
|
||||
context->finishedResumeDataCount += alertsCount;
|
||||
if (!context->isLoadedResumeDataHandlingEnqueued)
|
||||
{
|
||||
QMetaObject::invokeMethod(this, [this, context]() { handleLoadedResumeData(context); }, Qt::QueuedConnection);
|
||||
QMetaObject::invokeMethod(this, [this, context] { handleLoadedResumeData(context); }, Qt::QueuedConnection);
|
||||
context->isLoadedResumeDataHandlingEnqueued = true;
|
||||
}
|
||||
|
||||
@@ -2227,6 +2227,8 @@ void SessionImpl::processShareLimits()
|
||||
torrent->setSuperSeeding(true);
|
||||
LogMsg(u"%1 %2 %3"_s.arg(description, tr("Super seeding enabled."), torrentName));
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2447,7 +2449,7 @@ bool SessionImpl::cancelDownloadMetadata(const TorrentID &id)
|
||||
// if magnet link was hybrid initially then it is indexed also by v1 info hash
|
||||
// so we need to remove both entries
|
||||
const auto altID = TorrentID::fromSHA1Hash(infoHash.v1());
|
||||
m_downloadedMetadata.remove((altID == downloadedMetadataIter.key()) ? id : altID);
|
||||
m_downloadedMetadata.remove(altID);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2679,6 +2681,7 @@ LoadTorrentParams SessionImpl::initLoadTorrentParams(const AddTorrentParams &add
|
||||
loadTorrentParams.addToQueueTop = addTorrentParams.addToQueueTop.value_or(isAddTorrentToQueueTop());
|
||||
loadTorrentParams.ratioLimit = addTorrentParams.ratioLimit;
|
||||
loadTorrentParams.seedingTimeLimit = addTorrentParams.seedingTimeLimit;
|
||||
loadTorrentParams.inactiveSeedingTimeLimit = addTorrentParams.inactiveSeedingTimeLimit;
|
||||
|
||||
const QString category = addTorrentParams.category;
|
||||
if (!category.isEmpty() && !m_categories.contains(category) && !addCategory(category))
|
||||
@@ -2804,6 +2807,14 @@ bool SessionImpl::addTorrent_impl(const std::variant<MagnetUri, TorrentInfo> &so
|
||||
|
||||
if (hasMetadata)
|
||||
{
|
||||
// Torrent that is being added with metadata is considered to be added as stopped
|
||||
// if "metadata received" stop condition is set for it.
|
||||
if (loadTorrentParams.stopCondition == Torrent::StopCondition::MetadataReceived)
|
||||
{
|
||||
loadTorrentParams.stopped = true;
|
||||
loadTorrentParams.stopCondition = Torrent::StopCondition::None;
|
||||
}
|
||||
|
||||
const TorrentInfo &torrentInfo = std::get<TorrentInfo>(source);
|
||||
|
||||
Q_ASSERT(addTorrentParams.filePaths.isEmpty() || (addTorrentParams.filePaths.size() == torrentInfo.filesCount()));
|
||||
@@ -5457,11 +5468,14 @@ void SessionImpl::handleAddTorrentAlerts(const std::vector<lt::alert *> &alerts)
|
||||
if (!isRestored())
|
||||
loadedTorrents.reserve(MAX_PROCESSING_RESUMEDATA_COUNT);
|
||||
|
||||
qsizetype alertsCount = 0;
|
||||
for (const lt::alert *a : alerts)
|
||||
{
|
||||
if (a->type() != lt::add_torrent_alert::alert_type)
|
||||
continue;
|
||||
|
||||
++alertsCount;
|
||||
|
||||
const auto *alert = static_cast<const lt::add_torrent_alert *>(a);
|
||||
if (alert->error)
|
||||
{
|
||||
@@ -5471,6 +5485,7 @@ void SessionImpl::handleAddTorrentAlerts(const std::vector<lt::alert *> &alerts)
|
||||
|
||||
const lt::add_torrent_params ¶ms = alert->params;
|
||||
const bool hasMetadata = (params.ti && params.ti->is_valid());
|
||||
|
||||
#ifdef QBT_USES_LIBTORRENT2
|
||||
const InfoHash infoHash {(hasMetadata ? params.ti->info_hashes() : params.info_hashes)};
|
||||
if (infoHash.isHybrid())
|
||||
@@ -5495,10 +5510,9 @@ void SessionImpl::handleAddTorrentAlerts(const std::vector<lt::alert *> &alerts)
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
#ifdef QBT_USES_LIBTORRENT2
|
||||
const InfoHash infoHash {alert->handle.info_hashes()};
|
||||
#else
|
||||
@@ -5516,7 +5530,7 @@ void SessionImpl::handleAddTorrentAlerts(const std::vector<lt::alert *> &alerts)
|
||||
loadedTorrents.append(torrent);
|
||||
}
|
||||
else if (const auto downloadedMetadataIter = m_downloadedMetadata.find(torrentID)
|
||||
; downloadedMetadataIter != m_downloadedMetadata.end())
|
||||
; downloadedMetadataIter != m_downloadedMetadata.end())
|
||||
{
|
||||
downloadedMetadataIter.value() = alert->handle;
|
||||
if (infoHash.isHybrid())
|
||||
@@ -5528,11 +5542,16 @@ void SessionImpl::handleAddTorrentAlerts(const std::vector<lt::alert *> &alerts)
|
||||
}
|
||||
}
|
||||
|
||||
if (!loadedTorrents.isEmpty())
|
||||
if (alertsCount > 0)
|
||||
{
|
||||
if (isRestored())
|
||||
m_torrentsQueueChanged = true;
|
||||
emit torrentsLoaded(loadedTorrents);
|
||||
emit addTorrentAlertsReceived(alertsCount);
|
||||
|
||||
if (!loadedTorrents.isEmpty())
|
||||
{
|
||||
if (isRestored())
|
||||
m_torrentsQueueChanged = true;
|
||||
emit torrentsLoaded(loadedTorrents);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5829,7 +5848,7 @@ void SessionImpl::handleFileErrorAlert(const lt::file_error_alert *p)
|
||||
|
||||
const QString msg = QString::fromStdString(p->message());
|
||||
LogMsg(tr("File error alert. Torrent: \"%1\". File: \"%2\". Reason: \"%3\"")
|
||||
.arg(torrent->name(), QString::fromLocal8Bit(p->filename()), msg)
|
||||
.arg(torrent->name(), QString::fromUtf8(p->filename()), msg)
|
||||
, Log::WARNING);
|
||||
emit fullDiskError(torrent, msg);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2015-2023 Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Copyright (C) 2015-2024 Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Copyright (C) 2006 Christophe Dumez <chris@qbittorrent.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -475,6 +475,9 @@ namespace BitTorrent
|
||||
|
||||
void invokeAsync(std::function<void ()> func);
|
||||
|
||||
signals:
|
||||
void addTorrentAlertsReceived(qsizetype count);
|
||||
|
||||
private slots:
|
||||
void configureDeferred();
|
||||
void readAlerts();
|
||||
|
||||
@@ -92,7 +92,7 @@ class TorrentFilesWatcher::Worker final : public QObject
|
||||
Q_DISABLE_COPY_MOVE(Worker)
|
||||
|
||||
public:
|
||||
Worker();
|
||||
Worker(QFileSystemWatcher *watcher);
|
||||
|
||||
public slots:
|
||||
void setWatchedFolder(const Path &path, const TorrentFilesWatcher::WatchedFolderOptions &options);
|
||||
@@ -143,36 +143,16 @@ TorrentFilesWatcher *TorrentFilesWatcher::instance()
|
||||
TorrentFilesWatcher::TorrentFilesWatcher(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_ioThread {new QThread}
|
||||
, m_asyncWorker {new TorrentFilesWatcher::Worker(new QFileSystemWatcher(this))}
|
||||
{
|
||||
const auto *btSession = BitTorrent::Session::instance();
|
||||
if (btSession->isRestored())
|
||||
initWorker();
|
||||
else
|
||||
connect(btSession, &BitTorrent::Session::restored, this, &TorrentFilesWatcher::initWorker);
|
||||
|
||||
load();
|
||||
}
|
||||
|
||||
void TorrentFilesWatcher::initWorker()
|
||||
{
|
||||
Q_ASSERT(!m_asyncWorker);
|
||||
|
||||
m_asyncWorker = new TorrentFilesWatcher::Worker;
|
||||
|
||||
connect(m_asyncWorker, &TorrentFilesWatcher::Worker::magnetFound, this, &TorrentFilesWatcher::onMagnetFound);
|
||||
connect(m_asyncWorker, &TorrentFilesWatcher::Worker::torrentFound, this, &TorrentFilesWatcher::onTorrentFound);
|
||||
|
||||
m_asyncWorker->moveToThread(m_ioThread.get());
|
||||
connect(m_ioThread.get(), &QObject::destroyed, this, [this] { delete m_asyncWorker; });
|
||||
connect(m_ioThread.get(), &QThread::finished, m_asyncWorker, &QObject::deleteLater);
|
||||
m_ioThread->start();
|
||||
|
||||
for (auto it = m_watchedFolders.cbegin(); it != m_watchedFolders.cend(); ++it)
|
||||
{
|
||||
QMetaObject::invokeMethod(m_asyncWorker, [this, path = it.key(), options = it.value()]()
|
||||
{
|
||||
m_asyncWorker->setWatchedFolder(path, options);
|
||||
});
|
||||
}
|
||||
load();
|
||||
}
|
||||
|
||||
void TorrentFilesWatcher::load()
|
||||
@@ -303,13 +283,10 @@ void TorrentFilesWatcher::doSetWatchedFolder(const Path &path, const WatchedFold
|
||||
|
||||
m_watchedFolders[path] = options;
|
||||
|
||||
if (m_asyncWorker)
|
||||
QMetaObject::invokeMethod(m_asyncWorker, [this, path, options]
|
||||
{
|
||||
QMetaObject::invokeMethod(m_asyncWorker, [this, path, options]()
|
||||
{
|
||||
m_asyncWorker->setWatchedFolder(path, options);
|
||||
});
|
||||
}
|
||||
m_asyncWorker->setWatchedFolder(path, options);
|
||||
});
|
||||
|
||||
emit watchedFolderSet(path, options);
|
||||
}
|
||||
@@ -344,8 +321,8 @@ void TorrentFilesWatcher::onTorrentFound(const BitTorrent::TorrentInfo &torrentI
|
||||
BitTorrent::Session::instance()->addTorrent(torrentInfo, addTorrentParams);
|
||||
}
|
||||
|
||||
TorrentFilesWatcher::Worker::Worker()
|
||||
: m_watcher {new QFileSystemWatcher(this)}
|
||||
TorrentFilesWatcher::Worker::Worker(QFileSystemWatcher *watcher)
|
||||
: m_watcher {watcher}
|
||||
, m_watchTimer {new QTimer(this)}
|
||||
, m_retryTorrentTimer {new QTimer(this)}
|
||||
{
|
||||
|
||||
@@ -78,7 +78,6 @@ private slots:
|
||||
private:
|
||||
explicit TorrentFilesWatcher(QObject *parent = nullptr);
|
||||
|
||||
void initWorker();
|
||||
void load();
|
||||
void loadLegacy();
|
||||
void store() const;
|
||||
|
||||
@@ -31,7 +31,14 @@
|
||||
#include <Qt>
|
||||
#include <QtGlobal>
|
||||
|
||||
#if !defined(Q_OS_WIN) && (!defined(Q_OS_UNIX) || defined(Q_OS_MACOS) || defined(QT_FEATURE_icu))
|
||||
// for QT_FEATURE_xxx, see: https://wiki.qt.io/Qt5_Build_System#How_to
|
||||
#include <QtCore/private/qtcore-config_p.h>
|
||||
|
||||
// macOS and Windows support 'case sensitivity' and 'numeric mode' natively
|
||||
// https://github.com/qt/qtbase/blob/6.0/src/corelib/CMakeLists.txt#L777-L793
|
||||
// https://github.com/qt/qtbase/blob/6.0/src/corelib/text/qcollator_macx.cpp#L74-L77
|
||||
// https://github.com/qt/qtbase/blob/6.0/src/corelib/text/qcollator_win.cpp#L72-L78
|
||||
#if ((QT_FEATURE_icu == 1) || defined(Q_OS_MACOS) || defined(Q_OS_WIN))
|
||||
#define QBT_USE_QCOLLATOR
|
||||
#include <QCollator>
|
||||
#endif
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
#define QBT_VERSION_MAJOR 4
|
||||
#define QBT_VERSION_MINOR 6
|
||||
#define QBT_VERSION_BUGFIX 1
|
||||
#define QBT_VERSION_BUGFIX 4
|
||||
#define QBT_VERSION_BUILD 0
|
||||
#define QBT_VERSION_STATUS "" // Should be empty for stable releases!
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ AboutDialog::AboutDialog(QWidget *parent)
|
||||
u"</p>"_s
|
||||
.arg(tr("An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar.")
|
||||
.replace(u"C++"_s, u"C\u2060+\u2060+"_s) // make C++ non-breaking
|
||||
, tr("Copyright %1 2006-2023 The qBittorrent project").arg(C_COPYRIGHT)
|
||||
, tr("Copyright %1 2006-2024 The qBittorrent project").arg(C_COPYRIGHT)
|
||||
, tr("Home Page:")
|
||||
, tr("Forum:")
|
||||
, tr("Bug Tracker:"));
|
||||
|
||||
@@ -33,13 +33,16 @@
|
||||
#include <functional>
|
||||
|
||||
#include <QAction>
|
||||
#include <QByteArray>
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
#include <QDir>
|
||||
#include <QFileDialog>
|
||||
#include <QMenu>
|
||||
#include <QPushButton>
|
||||
#include <QScreen>
|
||||
#include <QShortcut>
|
||||
#include <QSize>
|
||||
#include <QString>
|
||||
#include <QUrl>
|
||||
#include <QVector>
|
||||
@@ -135,6 +138,36 @@ namespace
|
||||
|
||||
settings()->storeValue(settingsKey, QStringList(pathList.mid(0, maxLength)));
|
||||
}
|
||||
|
||||
void adjustDialogGeometry(QWidget *dialog, const QWidget *parentWindow)
|
||||
{
|
||||
// It is preferable to place the dialog in the center of the parent window.
|
||||
// However, if it goes beyond the current screen, then move it so that it fits there
|
||||
// (or, if the dialog is larger than the current screen, at least make sure that
|
||||
// the upper/left coordinates of the dialog are inside it).
|
||||
|
||||
QRect dialogGeometry = dialog->geometry();
|
||||
|
||||
dialogGeometry.moveCenter(parentWindow->geometry().center());
|
||||
|
||||
const QRect screenGeometry = parentWindow->screen()->availableGeometry();
|
||||
|
||||
QPoint delta = screenGeometry.bottomRight() - dialogGeometry.bottomRight();
|
||||
if (delta.x() > 0)
|
||||
delta.setX(0);
|
||||
if (delta.y() > 0)
|
||||
delta.setY(0);
|
||||
dialogGeometry.translate(delta);
|
||||
|
||||
delta = screenGeometry.topLeft() - dialogGeometry.topLeft();
|
||||
if (delta.x() < 0)
|
||||
delta.setX(0);
|
||||
if (delta.y() < 0)
|
||||
delta.setY(0);
|
||||
dialogGeometry.translate(delta);
|
||||
|
||||
dialog->setGeometry(dialogGeometry);
|
||||
}
|
||||
}
|
||||
|
||||
class AddNewTorrentDialog::TorrentContentAdaptor final
|
||||
@@ -325,18 +358,28 @@ AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::AddTorrentParams &inP
|
||||
m_ui->downloadPath->setMaxVisibleItems(20);
|
||||
|
||||
m_ui->addToQueueTopCheckBox->setChecked(m_torrentParams.addToQueueTop.value_or(session->isAddTorrentToQueueTop()));
|
||||
m_ui->startTorrentCheckBox->setChecked(!m_torrentParams.addPaused.value_or(session->isAddTorrentPaused()));
|
||||
|
||||
m_ui->stopConditionComboBox->setToolTip(
|
||||
u"<html><body><p><b>" + tr("None") + u"</b> - " + tr("No stop condition is set.") + u"</p><p><b>" +
|
||||
tr("Metadata received") + u"</b> - " + tr("Torrent will stop after metadata is received.") +
|
||||
u" <em>" + tr("Torrents that have metadata initially aren't affected.") + u"</em></p><p><b>" +
|
||||
u" <em>" + tr("Torrents that have metadata initially will be added as stopped.") + u"</em></p><p><b>" +
|
||||
tr("Files checked") + u"</b> - " + tr("Torrent will stop after files are initially checked.") +
|
||||
u" <em>" + tr("This will also download metadata if it wasn't there initially.") + u"</em></p></body></html>");
|
||||
m_ui->stopConditionComboBox->setItemData(0, QVariant::fromValue(BitTorrent::Torrent::StopCondition::None));
|
||||
m_ui->stopConditionComboBox->setItemData(1, QVariant::fromValue(BitTorrent::Torrent::StopCondition::MetadataReceived));
|
||||
m_ui->stopConditionComboBox->setItemData(2, QVariant::fromValue(BitTorrent::Torrent::StopCondition::FilesChecked));
|
||||
m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData(
|
||||
QVariant::fromValue(m_torrentParams.stopCondition.value_or(session->torrentStopCondition()))));
|
||||
m_ui->stopConditionComboBox->addItem(tr("None"), QVariant::fromValue(BitTorrent::Torrent::StopCondition::None));
|
||||
if (!hasMetadata())
|
||||
m_ui->stopConditionComboBox->addItem(tr("Metadata received"), QVariant::fromValue(BitTorrent::Torrent::StopCondition::MetadataReceived));
|
||||
m_ui->stopConditionComboBox->addItem(tr("Files checked"), QVariant::fromValue(BitTorrent::Torrent::StopCondition::FilesChecked));
|
||||
const auto stopCondition = m_torrentParams.stopCondition.value_or(session->torrentStopCondition());
|
||||
if (hasMetadata() && (stopCondition == BitTorrent::Torrent::StopCondition::MetadataReceived))
|
||||
{
|
||||
m_ui->startTorrentCheckBox->setChecked(false);
|
||||
m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData(QVariant::fromValue(BitTorrent::Torrent::StopCondition::None)));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ui->startTorrentCheckBox->setChecked(!m_torrentParams.addPaused.value_or(session->isAddTorrentPaused()));
|
||||
m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData(QVariant::fromValue(stopCondition)));
|
||||
}
|
||||
m_ui->stopConditionLabel->setEnabled(m_ui->startTorrentCheckBox->isChecked());
|
||||
m_ui->stopConditionComboBox->setEnabled(m_ui->startTorrentCheckBox->isChecked());
|
||||
connect(m_ui->startTorrentCheckBox, &QCheckBox::toggled, this, [this](const bool checked)
|
||||
@@ -520,7 +563,10 @@ void AddNewTorrentDialog::show(const QString &source, const BitTorrent::AddTorre
|
||||
// Qt::Window is required to avoid showing only two dialog on top (see #12852).
|
||||
// Also improves the general convenience of adding multiple torrents.
|
||||
if (!attached)
|
||||
{
|
||||
dlg->setWindowFlags(Qt::Window);
|
||||
adjustDialogGeometry(dlg, parent);
|
||||
}
|
||||
dlg->setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
||||
if (Net::DownloadManager::hasSupportedScheme(source))
|
||||
@@ -957,14 +1003,22 @@ void AddNewTorrentDialog::updateMetadata(const BitTorrent::TorrentInfo &metadata
|
||||
// Good to go
|
||||
m_torrentInfo = metadata;
|
||||
setMetadataProgressIndicator(true, tr("Parsing metadata..."));
|
||||
const auto stopCondition = m_ui->stopConditionComboBox->currentData().value<BitTorrent::Torrent::StopCondition>();
|
||||
if (stopCondition == BitTorrent::Torrent::StopCondition::MetadataReceived)
|
||||
m_ui->startTorrentCheckBox->setChecked(false);
|
||||
|
||||
// Update UI
|
||||
setupTreeview();
|
||||
setMetadataProgressIndicator(false, tr("Metadata retrieval complete"));
|
||||
|
||||
if (const auto stopCondition = m_ui->stopConditionComboBox->currentData().value<BitTorrent::Torrent::StopCondition>()
|
||||
; stopCondition == BitTorrent::Torrent::StopCondition::MetadataReceived)
|
||||
{
|
||||
m_ui->startTorrentCheckBox->setChecked(false);
|
||||
|
||||
const auto index = m_ui->stopConditionComboBox->currentIndex();
|
||||
m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData(
|
||||
QVariant::fromValue(BitTorrent::Torrent::StopCondition::None)));
|
||||
m_ui->stopConditionComboBox->removeItem(index);
|
||||
}
|
||||
|
||||
m_ui->buttonSave->setVisible(true);
|
||||
if (m_torrentInfo.infoHash().v2().isValid())
|
||||
{
|
||||
|
||||
@@ -39,6 +39,9 @@
|
||||
#include "base/path.h"
|
||||
#include "base/settingvalue.h"
|
||||
|
||||
class LineEdit;
|
||||
class TorrentFileGuard;
|
||||
|
||||
namespace BitTorrent
|
||||
{
|
||||
class InfoHash;
|
||||
@@ -54,9 +57,6 @@ namespace Ui
|
||||
class AddNewTorrentDialog;
|
||||
}
|
||||
|
||||
class LineEdit;
|
||||
class TorrentFileGuard;
|
||||
|
||||
class AddNewTorrentDialog final : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@@ -261,24 +261,6 @@
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="stopConditionComboBox">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Metadata received</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Files checked</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
#include <chrono>
|
||||
|
||||
#include <QtGlobal>
|
||||
#include <QMenu>
|
||||
#include <QTimer>
|
||||
|
||||
@@ -300,11 +301,11 @@ QIcon DesktopIntegration::getSystrayIcon() const
|
||||
icon = UIThemeManager::instance()->getIcon(u"qbittorrent-tray-light"_s);
|
||||
break;
|
||||
}
|
||||
#if ((QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && defined(Q_OS_UNIX) && !defined(Q_OS_MACOS))
|
||||
#ifdef Q_OS_UNIX
|
||||
// Workaround for invisible tray icon in KDE, https://bugreports.qt.io/browse/QTBUG-53550
|
||||
return {icon.pixmap(32)};
|
||||
#else
|
||||
return icon;
|
||||
if (qEnvironmentVariable("XDG_CURRENT_DESKTOP").compare(u"KDE", Qt::CaseInsensitive) == 0)
|
||||
return icon.pixmap(32);
|
||||
#endif
|
||||
return icon;
|
||||
}
|
||||
#endif // Q_OS_MACOS
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2022 Mike Tzou (Chocobo1)
|
||||
* Copyright (C) 2016 Eugene Shalygin
|
||||
* Copyright (C) 2024 Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Copyright (C) 2022 Mike Tzou (Chocobo1)
|
||||
* Copyright (C) 2016 Eugene Shalygin
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -32,6 +33,7 @@
|
||||
#include <QCompleter>
|
||||
#include <QContextMenuEvent>
|
||||
#include <QDir>
|
||||
#include <QFileIconProvider>
|
||||
#include <QFileInfo>
|
||||
#include <QFileSystemModel>
|
||||
#include <QMenu>
|
||||
@@ -160,36 +162,33 @@ QValidator::State Private::FileSystemPathValidator::validate(QString &input, int
|
||||
}
|
||||
|
||||
Private::FileLineEdit::FileLineEdit(QWidget *parent)
|
||||
: QLineEdit {parent}
|
||||
, m_completerModel {new QFileSystemModel(this)}
|
||||
, m_completer {new QCompleter(this)}
|
||||
: QLineEdit(parent)
|
||||
{
|
||||
m_iconProvider.setOptions(QFileIconProvider::DontUseCustomDirectoryIcons);
|
||||
|
||||
m_completerModel->setIconProvider(&m_iconProvider);
|
||||
m_completerModel->setOptions(QFileSystemModel::DontWatchForChanges);
|
||||
|
||||
m_completer->setModel(m_completerModel);
|
||||
setCompleter(m_completer);
|
||||
|
||||
connect(this, &QLineEdit::textChanged, this, &FileLineEdit::validateText);
|
||||
}
|
||||
|
||||
Private::FileLineEdit::~FileLineEdit()
|
||||
{
|
||||
delete m_completerModel; // has to be deleted before deleting the m_iconProvider object
|
||||
delete m_iconProvider;
|
||||
}
|
||||
|
||||
void Private::FileLineEdit::completeDirectoriesOnly(const bool completeDirsOnly)
|
||||
{
|
||||
const QDir::Filters filters = QDir::NoDotAndDotDot
|
||||
| (completeDirsOnly ? QDir::Dirs : QDir::AllEntries);
|
||||
m_completerModel->setFilter(filters);
|
||||
m_completeDirectoriesOnly = completeDirsOnly;
|
||||
if (m_completerModel)
|
||||
{
|
||||
const QDir::Filters filters = QDir::NoDotAndDotDot
|
||||
| (completeDirsOnly ? QDir::Dirs : QDir::AllEntries);
|
||||
m_completerModel->setFilter(filters);
|
||||
}
|
||||
}
|
||||
|
||||
void Private::FileLineEdit::setFilenameFilters(const QStringList &filters)
|
||||
{
|
||||
m_completerModel->setNameFilters(filters);
|
||||
m_filenameFilters = filters;
|
||||
if (m_completerModel)
|
||||
m_completerModel->setNameFilters(m_filenameFilters);
|
||||
}
|
||||
|
||||
void Private::FileLineEdit::setBrowseAction(QAction *action)
|
||||
@@ -223,6 +222,24 @@ void Private::FileLineEdit::keyPressEvent(QKeyEvent *e)
|
||||
|
||||
if ((e->key() == Qt::Key_Space) && (e->modifiers() == Qt::CTRL))
|
||||
{
|
||||
if (!m_completer)
|
||||
{
|
||||
m_iconProvider = new QFileIconProvider;
|
||||
m_iconProvider->setOptions(QFileIconProvider::DontUseCustomDirectoryIcons);
|
||||
|
||||
m_completerModel = new QFileSystemModel(this);
|
||||
m_completerModel->setIconProvider(m_iconProvider);
|
||||
m_completerModel->setOptions(QFileSystemModel::DontWatchForChanges);
|
||||
m_completerModel->setNameFilters(m_filenameFilters);
|
||||
const QDir::Filters filters = QDir::NoDotAndDotDot
|
||||
| (m_completeDirectoriesOnly ? QDir::Dirs : QDir::AllEntries);
|
||||
m_completerModel->setFilter(filters);
|
||||
|
||||
m_completer = new QCompleter(this);
|
||||
m_completer->setModel(m_completerModel);
|
||||
setCompleter(m_completer);
|
||||
}
|
||||
|
||||
m_completerModel->setRootPath(Path(text()).data());
|
||||
showCompletionPopup();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2016 Eugene Shalygin
|
||||
* Copyright (C) 2024 Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Copyright (C) 2016 Eugene Shalygin
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -29,7 +30,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <QComboBox>
|
||||
#include <QFileIconProvider>
|
||||
#include <QLineEdit>
|
||||
#include <QtContainerFwd>
|
||||
#include <QValidator>
|
||||
@@ -39,6 +39,7 @@
|
||||
class QAction;
|
||||
class QCompleter;
|
||||
class QContextMenuEvent;
|
||||
class QFileIconProvider;
|
||||
class QFileSystemModel;
|
||||
class QKeyEvent;
|
||||
|
||||
@@ -143,7 +144,9 @@ namespace Private
|
||||
QCompleter *m_completer = nullptr;
|
||||
QAction *m_browseAction = nullptr;
|
||||
QAction *m_warningAction = nullptr;
|
||||
QFileIconProvider m_iconProvider;
|
||||
QFileIconProvider *m_iconProvider = nullptr;
|
||||
bool m_completeDirectoriesOnly = false;
|
||||
QStringList m_filenameFilters;
|
||||
};
|
||||
|
||||
class FileComboEdit final : public QComboBox, public IFileEditorWithCompletion
|
||||
|
||||
@@ -29,20 +29,41 @@
|
||||
|
||||
#include "lineedit.h"
|
||||
|
||||
#include <chrono>
|
||||
|
||||
#include <QAction>
|
||||
#include <QKeyEvent>
|
||||
#include <QTimer>
|
||||
|
||||
#include "base/global.h"
|
||||
#include "uithememanager.h"
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
namespace
|
||||
{
|
||||
const std::chrono::milliseconds FILTER_INPUT_DELAY {400};
|
||||
}
|
||||
|
||||
LineEdit::LineEdit(QWidget *parent)
|
||||
: QLineEdit(parent)
|
||||
, m_delayedTextChangedTimer {new QTimer(this)}
|
||||
{
|
||||
auto *action = new QAction(UIThemeManager::instance()->getIcon(u"edit-find"_s), QString(), this);
|
||||
addAction(action, QLineEdit::LeadingPosition);
|
||||
|
||||
setClearButtonEnabled(true);
|
||||
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||
|
||||
m_delayedTextChangedTimer->setSingleShot(true);
|
||||
connect(m_delayedTextChangedTimer, &QTimer::timeout, this, [this]
|
||||
{
|
||||
emit textChanged(text());
|
||||
});
|
||||
connect(this, &QLineEdit::textChanged, this, [this]
|
||||
{
|
||||
m_delayedTextChangedTimer->start(FILTER_INPUT_DELAY);
|
||||
});
|
||||
}
|
||||
|
||||
void LineEdit::keyPressEvent(QKeyEvent *event)
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
|
||||
#include <QLineEdit>
|
||||
|
||||
class QKeyEvent;
|
||||
class QTimer;
|
||||
|
||||
class LineEdit final : public QLineEdit
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -39,6 +42,11 @@ class LineEdit final : public QLineEdit
|
||||
public:
|
||||
explicit LineEdit(QWidget *parent = nullptr);
|
||||
|
||||
signals:
|
||||
void textChanged(const QString &text);
|
||||
|
||||
private:
|
||||
void keyPressEvent(QKeyEvent *event) override;
|
||||
|
||||
QTimer *m_delayedTextChangedTimer = nullptr;
|
||||
};
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
#include <QShortcut>
|
||||
#include <QSplitter>
|
||||
#include <QStatusBar>
|
||||
#include <QString>
|
||||
#include <QtGlobal>
|
||||
#include <QTimer>
|
||||
|
||||
@@ -174,7 +175,7 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState)
|
||||
m_ui->menuLog->setIcon(UIThemeManager::instance()->getIcon(u"help-contents"_s));
|
||||
m_ui->actionCheckForUpdates->setIcon(UIThemeManager::instance()->getIcon(u"view-refresh"_s));
|
||||
|
||||
auto *lockMenu = new QMenu(this);
|
||||
auto *lockMenu = new QMenu(m_ui->menuView);
|
||||
lockMenu->addAction(tr("&Set Password"), this, &MainWindow::defineUILockPassword);
|
||||
lockMenu->addAction(tr("&Clear Password"), this, &MainWindow::clearUILockPassword);
|
||||
m_ui->actionLock->setMenu(lockMenu);
|
||||
|
||||
@@ -42,6 +42,7 @@ class QCloseEvent;
|
||||
class QComboBox;
|
||||
class QFileSystemWatcher;
|
||||
class QSplitter;
|
||||
class QString;
|
||||
class QTabWidget;
|
||||
class QTimer;
|
||||
|
||||
|
||||
@@ -516,7 +516,7 @@ void OptionsDialog::loadDownloadsTabOptions()
|
||||
m_ui->stopConditionComboBox->setToolTip(
|
||||
u"<html><body><p><b>" + tr("None") + u"</b> - " + tr("No stop condition is set.") + u"</p><p><b>" +
|
||||
tr("Metadata received") + u"</b> - " + tr("Torrent will stop after metadata is received.") +
|
||||
u" <em>" + tr("Torrents that have metadata initially aren't affected.") + u"</em></p><p><b>" +
|
||||
u" <em>" + tr("Torrents that have metadata initially will be added as stopped.") + u"</em></p><p><b>" +
|
||||
tr("Files checked") + u"</b> - " + tr("Torrent will stop after files are initially checked.") +
|
||||
u" <em>" + tr("This will also download metadata if it wasn't there initially.") + u"</em></p></body></html>");
|
||||
m_ui->stopConditionComboBox->setItemData(0, QVariant::fromValue(BitTorrent::Torrent::StopCondition::None));
|
||||
|
||||
@@ -291,6 +291,8 @@ void PropertiesWidget::loadTorrentInfos(BitTorrent::Torrent *const torrent)
|
||||
// Info hashes
|
||||
m_ui->labelInfohash1Val->setText(m_torrent->infoHash().v1().isValid() ? m_torrent->infoHash().v1().toString() : tr("N/A"));
|
||||
m_ui->labelInfohash2Val->setText(m_torrent->infoHash().v2().isValid() ? m_torrent->infoHash().v2().toString() : tr("N/A"));
|
||||
// URL seeds
|
||||
loadUrlSeeds();
|
||||
if (m_torrent->hasMetadata())
|
||||
{
|
||||
// Creation date
|
||||
@@ -301,9 +303,6 @@ void PropertiesWidget::loadTorrentInfos(BitTorrent::Torrent *const torrent)
|
||||
// Comment
|
||||
m_ui->labelCommentVal->setText(Utils::Misc::parseHtmlLinks(m_torrent->comment().toHtmlEscaped()));
|
||||
|
||||
// URL seeds
|
||||
loadUrlSeeds();
|
||||
|
||||
m_ui->labelCreatedByVal->setText(m_torrent->creator());
|
||||
}
|
||||
// Load dynamic data
|
||||
|
||||
@@ -104,7 +104,7 @@ void ArticleListWidget::handleArticleRead(RSS::Article *rssArticle)
|
||||
|
||||
const QBrush foregroundBrush {UIThemeManager::instance()->getColor(u"RSS.ReadArticle"_s)};
|
||||
item->setData(Qt::ForegroundRole, foregroundBrush);
|
||||
item->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"loading"_s, u"sphere"_s));
|
||||
item->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"rss_read_article"_s, u"sphere"_s));
|
||||
|
||||
checkInvariant();
|
||||
}
|
||||
@@ -131,13 +131,13 @@ QListWidgetItem *ArticleListWidget::createItem(RSS::Article *article) const
|
||||
{
|
||||
const QBrush foregroundBrush {UIThemeManager::instance()->getColor(u"RSS.ReadArticle"_s)};
|
||||
item->setData(Qt::ForegroundRole, foregroundBrush);
|
||||
item->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"loading"_s, u"sphere"_s));
|
||||
item->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"rss_read_article"_s, u"sphere"_s));
|
||||
}
|
||||
else
|
||||
{
|
||||
const QBrush foregroundBrush {UIThemeManager::instance()->getColor(u"RSS.UnreadArticle"_s)};
|
||||
item->setData(Qt::ForegroundRole, foregroundBrush);
|
||||
item->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"loading"_s, u"sphere"_s));
|
||||
item->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"rss_unread_article"_s, u"sphere"_s));
|
||||
}
|
||||
|
||||
return item;
|
||||
|
||||
@@ -128,9 +128,9 @@ SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, QWidget *parent)
|
||||
m_lineEditSearchResultsFilter->setPlaceholderText(tr("Filter search results..."));
|
||||
m_lineEditSearchResultsFilter->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
connect(m_lineEditSearchResultsFilter, &QWidget::customContextMenuRequested, this, &SearchJobWidget::showFilterContextMenu);
|
||||
connect(m_lineEditSearchResultsFilter, &LineEdit::textChanged, this, &SearchJobWidget::filterSearchResults);
|
||||
m_ui->horizontalLayout->insertWidget(0, m_lineEditSearchResultsFilter);
|
||||
|
||||
connect(m_lineEditSearchResultsFilter, &LineEdit::textChanged, this, &SearchJobWidget::filterSearchResults);
|
||||
connect(m_ui->filterMode, qOverload<int>(&QComboBox::currentIndexChanged)
|
||||
, this, &SearchJobWidget::updateFilter);
|
||||
connect(m_ui->minSeeds, &QAbstractSpinBox::editingFinished, this, &SearchJobWidget::updateFilter);
|
||||
@@ -292,7 +292,7 @@ void SearchJobWidget::addTorrentToSession(const QString &source, const AddTorren
|
||||
if (source.isEmpty()) return;
|
||||
|
||||
if ((option == AddTorrentOption::ShowDialog) || ((option == AddTorrentOption::Default) && AddNewTorrentDialog::isEnabled()))
|
||||
AddNewTorrentDialog::show(source, this);
|
||||
AddNewTorrentDialog::show(source, window());
|
||||
else
|
||||
BitTorrent::Session::instance()->addTorrent(source);
|
||||
}
|
||||
|
||||
@@ -285,7 +285,8 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVector<BitTor
|
||||
|
||||
const bool useGlobalValue = allSameRatio && allSameSeedingTime
|
||||
&& (firstTorrentRatio == BitTorrent::Torrent::USE_GLOBAL_RATIO)
|
||||
&& (firstTorrentSeedingTime == BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME);
|
||||
&& (firstTorrentSeedingTime == BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME)
|
||||
&& (firstTorrentInactiveSeedingTime == BitTorrent::Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME);
|
||||
|
||||
if (!allSameRatio || !allSameSeedingTime || !allSameInactiveSeedingTime)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2016 Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Copyright (C) 2016-2023 Vladimir Golovnev <glassez@yandex.ru>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -38,6 +38,9 @@
|
||||
class CategoryModelItem
|
||||
{
|
||||
public:
|
||||
inline static const QString UID_ALL {QChar(1)};
|
||||
inline static const QString UID_UNCATEGORIZED;
|
||||
|
||||
CategoryModelItem() = default;
|
||||
|
||||
CategoryModelItem(CategoryModelItem *parent, const QString &categoryName, const int torrentsCount = 0)
|
||||
@@ -99,9 +102,21 @@ public:
|
||||
|
||||
int pos() const
|
||||
{
|
||||
if (!m_parent) return -1;
|
||||
if (!m_parent)
|
||||
return -1;
|
||||
|
||||
return m_parent->m_childUids.indexOf(m_name);
|
||||
if (const int posByName = m_parent->m_childUids.indexOf(m_name); posByName >= 0)
|
||||
return posByName;
|
||||
|
||||
// special cases
|
||||
if (this == m_parent->m_children[UID_ALL])
|
||||
return 0;
|
||||
|
||||
if (this == m_parent->m_children[UID_UNCATEGORIZED])
|
||||
return 1;
|
||||
|
||||
Q_ASSERT(false);
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool hasChild(const QString &name) const
|
||||
@@ -202,7 +217,8 @@ int CategoryFilterModel::columnCount(const QModelIndex &) const
|
||||
|
||||
QVariant CategoryFilterModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
if (!index.isValid()) return {};
|
||||
if (!index.isValid())
|
||||
return {};
|
||||
|
||||
const auto *item = static_cast<const CategoryModelItem *>(index.internalPointer());
|
||||
|
||||
@@ -248,8 +264,8 @@ QModelIndex CategoryFilterModel::index(int row, int column, const QModelIndex &p
|
||||
if (parent.isValid() && (parent.column() != 0))
|
||||
return {};
|
||||
|
||||
auto *parentItem = parent.isValid() ? static_cast<CategoryModelItem *>(parent.internalPointer())
|
||||
: m_rootItem;
|
||||
auto *parentItem = parent.isValid()
|
||||
? static_cast<CategoryModelItem *>(parent.internalPointer()) : m_rootItem;
|
||||
if (row < parentItem->childCount())
|
||||
return createIndex(row, column, parentItem->childAt(row));
|
||||
|
||||
@@ -262,7 +278,8 @@ QModelIndex CategoryFilterModel::parent(const QModelIndex &index) const
|
||||
return {};
|
||||
|
||||
auto *item = static_cast<CategoryModelItem *>(index.internalPointer());
|
||||
if (!item) return {};
|
||||
if (!item)
|
||||
return {};
|
||||
|
||||
return this->index(item->parent());
|
||||
}
|
||||
@@ -276,7 +293,8 @@ int CategoryFilterModel::rowCount(const QModelIndex &parent) const
|
||||
return m_rootItem->childCount();
|
||||
|
||||
auto *item = static_cast<CategoryModelItem *>(parent.internalPointer());
|
||||
if (!item) return 0;
|
||||
if (!item)
|
||||
return 0;
|
||||
|
||||
return item->childCount();
|
||||
}
|
||||
@@ -288,13 +306,16 @@ QModelIndex CategoryFilterModel::index(const QString &categoryName) const
|
||||
|
||||
QString CategoryFilterModel::categoryName(const QModelIndex &index) const
|
||||
{
|
||||
if (!index.isValid()) return {};
|
||||
if (!index.isValid())
|
||||
return {};
|
||||
|
||||
return static_cast<CategoryModelItem *>(index.internalPointer())->fullName();
|
||||
}
|
||||
|
||||
QModelIndex CategoryFilterModel::index(CategoryModelItem *item) const
|
||||
{
|
||||
if (!item || !item->parent()) return {};
|
||||
if (!item || !item->parent())
|
||||
return {};
|
||||
|
||||
return index(item->pos(), 0, index(item->parent()));
|
||||
}
|
||||
@@ -337,8 +358,17 @@ void CategoryFilterModel::torrentsLoaded(const QVector<BitTorrent::Torrent *> &t
|
||||
Q_ASSERT(item);
|
||||
|
||||
item->increaseTorrentsCount();
|
||||
QModelIndex i = index(item);
|
||||
while (i.isValid())
|
||||
{
|
||||
emit dataChanged(i, i);
|
||||
i = parent(i);
|
||||
}
|
||||
|
||||
m_rootItem->childAt(0)->increaseTorrentsCount();
|
||||
}
|
||||
|
||||
emit dataChanged(index(0, 0), index(0, 0));
|
||||
}
|
||||
|
||||
void CategoryFilterModel::torrentAboutToBeRemoved(BitTorrent::Torrent *const torrent)
|
||||
@@ -347,18 +377,24 @@ void CategoryFilterModel::torrentAboutToBeRemoved(BitTorrent::Torrent *const tor
|
||||
Q_ASSERT(item);
|
||||
|
||||
item->decreaseTorrentsCount();
|
||||
QModelIndex i = index(item);
|
||||
while (i.isValid())
|
||||
{
|
||||
emit dataChanged(i, i);
|
||||
i = parent(i);
|
||||
}
|
||||
|
||||
m_rootItem->childAt(0)->decreaseTorrentsCount();
|
||||
emit dataChanged(index(0, 0), index(0, 0));
|
||||
}
|
||||
|
||||
void CategoryFilterModel::torrentCategoryChanged(BitTorrent::Torrent *const torrent, const QString &oldCategory)
|
||||
{
|
||||
QModelIndex i;
|
||||
|
||||
auto *item = findItem(oldCategory);
|
||||
Q_ASSERT(item);
|
||||
|
||||
item->decreaseTorrentsCount();
|
||||
i = index(item);
|
||||
QModelIndex i = index(item);
|
||||
while (i.isValid())
|
||||
{
|
||||
emit dataChanged(i, i);
|
||||
@@ -392,17 +428,16 @@ void CategoryFilterModel::populate()
|
||||
const auto torrents = session->torrents();
|
||||
m_isSubcategoriesEnabled = session->isSubcategoriesEnabled();
|
||||
|
||||
const QString UID_ALL;
|
||||
const QString UID_UNCATEGORIZED(QChar(1));
|
||||
|
||||
// All torrents
|
||||
m_rootItem->addChild(UID_ALL, new CategoryModelItem(nullptr, tr("All"), torrents.count()));
|
||||
m_rootItem->addChild(CategoryModelItem::UID_ALL
|
||||
, new CategoryModelItem(nullptr, tr("All"), torrents.count()));
|
||||
|
||||
// Uncategorized torrents
|
||||
using Torrent = BitTorrent::Torrent;
|
||||
const int torrentsCount = std::count_if(torrents.begin(), torrents.end()
|
||||
, [](Torrent *torrent) { return torrent->category().isEmpty(); });
|
||||
m_rootItem->addChild(UID_UNCATEGORIZED, new CategoryModelItem(nullptr, tr("Uncategorized"), torrentsCount));
|
||||
, [](Torrent *torrent) { return torrent->category().isEmpty(); });
|
||||
m_rootItem->addChild(CategoryModelItem::UID_UNCATEGORIZED
|
||||
, new CategoryModelItem(nullptr, tr("Uncategorized"), torrentsCount));
|
||||
|
||||
using BitTorrent::Torrent;
|
||||
if (m_isSubcategoriesEnabled)
|
||||
@@ -446,7 +481,9 @@ CategoryModelItem *CategoryFilterModel::findItem(const QString &fullName) const
|
||||
for (const QString &subcat : asConst(BitTorrent::Session::expandCategory(fullName)))
|
||||
{
|
||||
const QString subcatName = shortName(subcat);
|
||||
if (!item->hasChild(subcatName)) return nullptr;
|
||||
if (!item->hasChild(subcatName))
|
||||
return nullptr;
|
||||
|
||||
item = item->child(subcatName);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2016 Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Copyright (C) 2016-2023 Vladimir Golovnev <glassez@yandex.ru>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2023 Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Copyright (C) 2017 Tony Gregerson <tony.gregerson@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -36,6 +37,9 @@
|
||||
#include "base/global.h"
|
||||
#include "gui/uithememanager.h"
|
||||
|
||||
const int ROW_ALL = 0;
|
||||
const int ROW_UNTAGGED = 1;
|
||||
|
||||
namespace
|
||||
{
|
||||
QString getSpecialAllTag()
|
||||
@@ -203,21 +207,29 @@ void TagFilterModel::tagRemoved(const QString &tag)
|
||||
void TagFilterModel::torrentTagAdded(BitTorrent::Torrent *const torrent, const QString &tag)
|
||||
{
|
||||
if (torrent->tags().count() == 1)
|
||||
{
|
||||
untaggedItem()->decreaseTorrentsCount();
|
||||
const QModelIndex i = index(ROW_UNTAGGED, 0);
|
||||
emit dataChanged(i, i);
|
||||
}
|
||||
|
||||
const int row = findRow(tag);
|
||||
Q_ASSERT(isValidRow(row));
|
||||
TagModelItem &item = m_tagItems[row];
|
||||
|
||||
item.increaseTorrentsCount();
|
||||
const QModelIndex i = index(row, 0, QModelIndex());
|
||||
const QModelIndex i = index(row, 0);
|
||||
emit dataChanged(i, i);
|
||||
}
|
||||
|
||||
void TagFilterModel::torrentTagRemoved(BitTorrent::Torrent *const torrent, const QString &tag)
|
||||
{
|
||||
if (torrent->tags().empty())
|
||||
{
|
||||
untaggedItem()->increaseTorrentsCount();
|
||||
const QModelIndex i = index(ROW_UNTAGGED, 0);
|
||||
emit dataChanged(i, i);
|
||||
}
|
||||
|
||||
const int row = findRow(tag);
|
||||
if (row < 0)
|
||||
@@ -225,7 +237,7 @@ void TagFilterModel::torrentTagRemoved(BitTorrent::Torrent *const torrent, const
|
||||
|
||||
m_tagItems[row].decreaseTorrentsCount();
|
||||
|
||||
const QModelIndex i = index(row, 0, QModelIndex());
|
||||
const QModelIndex i = index(row, 0);
|
||||
emit dataChanged(i, i);
|
||||
}
|
||||
|
||||
@@ -242,17 +254,39 @@ void TagFilterModel::torrentsLoaded(const QVector<BitTorrent::Torrent *> &torren
|
||||
for (TagModelItem *item : items)
|
||||
item->increaseTorrentsCount();
|
||||
}
|
||||
|
||||
emit dataChanged(index(0, 0), index((rowCount() - 1), 0));
|
||||
}
|
||||
|
||||
void TagFilterModel::torrentAboutToBeRemoved(BitTorrent::Torrent *const torrent)
|
||||
{
|
||||
allTagsItem()->decreaseTorrentsCount();
|
||||
|
||||
if (torrent->tags().isEmpty())
|
||||
untaggedItem()->decreaseTorrentsCount();
|
||||
{
|
||||
const QModelIndex i = index(ROW_ALL, 0);
|
||||
emit dataChanged(i, i);
|
||||
}
|
||||
|
||||
for (TagModelItem *item : asConst(findItems(torrent->tags())))
|
||||
item->decreaseTorrentsCount();
|
||||
if (torrent->tags().isEmpty())
|
||||
{
|
||||
untaggedItem()->decreaseTorrentsCount();
|
||||
const QModelIndex i = index(ROW_UNTAGGED, 0);
|
||||
emit dataChanged(i, i);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (const QString &tag : asConst(torrent->tags()))
|
||||
{
|
||||
const int row = findRow(tag);
|
||||
Q_ASSERT(isValidRow(row));
|
||||
if (Q_UNLIKELY(!isValidRow(row)))
|
||||
continue;
|
||||
|
||||
m_tagItems[row].decreaseTorrentsCount();
|
||||
const QModelIndex i = index(row, 0);
|
||||
emit dataChanged(i, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString TagFilterModel::tagDisplayName(const QString &tag)
|
||||
@@ -299,11 +333,15 @@ void TagFilterModel::removeFromModel(int row)
|
||||
|
||||
int TagFilterModel::findRow(const QString &tag) const
|
||||
{
|
||||
if (!BitTorrent::Session::isValidTag(tag))
|
||||
return -1;
|
||||
|
||||
for (int i = 0; i < m_tagItems.size(); ++i)
|
||||
{
|
||||
if (m_tagItems[i].tag() == tag)
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -333,11 +371,11 @@ QVector<TagModelItem *> TagFilterModel::findItems(const TagSet &tags)
|
||||
TagModelItem *TagFilterModel::allTagsItem()
|
||||
{
|
||||
Q_ASSERT(!m_tagItems.isEmpty());
|
||||
return &m_tagItems[0];
|
||||
return &m_tagItems[ROW_ALL];
|
||||
}
|
||||
|
||||
TagModelItem *TagFilterModel::untaggedItem()
|
||||
{
|
||||
Q_ASSERT(m_tagItems.size() > 1);
|
||||
return &m_tagItems[1];
|
||||
Q_ASSERT(m_tagItems.size() > ROW_UNTAGGED);
|
||||
return &m_tagItems[ROW_UNTAGGED];
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user