mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2026-01-01 13:18:06 -06:00
Compare commits
51 Commits
release-3.
...
release-3.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
258efe261d | ||
|
|
59abbab9b9 | ||
|
|
7cc32cbe97 | ||
|
|
5783f7bafe | ||
|
|
0e64e6887a | ||
|
|
c25cb29e61 | ||
|
|
bca9b60db8 | ||
|
|
1ec122c4ab | ||
|
|
562dd41ab2 | ||
|
|
b4bca7cfb7 | ||
|
|
b985bb43fa | ||
|
|
bf8a438a6f | ||
|
|
7cd9b6f750 | ||
|
|
d487c69dcc | ||
|
|
444c2bdf19 | ||
|
|
f86064e322 | ||
|
|
6675544c23 | ||
|
|
10205ca67e | ||
|
|
2dfed3c41e | ||
|
|
db29a61fbf | ||
|
|
3497c5307c | ||
|
|
565f263ecb | ||
|
|
c94a61f434 | ||
|
|
d390d941eb | ||
|
|
f1de249c9e | ||
|
|
f85768412c | ||
|
|
5a28e8c5e9 | ||
|
|
5b72595547 | ||
|
|
a363ed6d7c | ||
|
|
077469d5a0 | ||
|
|
66df7c47b2 | ||
|
|
20b30dd4b5 | ||
|
|
bacef1ca24 | ||
|
|
8d11af94f2 | ||
|
|
02c96fa5e2 | ||
|
|
65b491fed0 | ||
|
|
f0eab3f085 | ||
|
|
21212fdfe5 | ||
|
|
f39465c25a | ||
|
|
a3eaee7e7e | ||
|
|
1e28bbb47e | ||
|
|
c5b98339ae | ||
|
|
edb1b727c6 | ||
|
|
78aeb5eee7 | ||
|
|
9dd93c3d17 | ||
|
|
2d64405eb8 | ||
|
|
dff560d8c2 | ||
|
|
b3c973612f | ||
|
|
3480d3d10c | ||
|
|
f45d21d3a2 | ||
|
|
8dcb792ac0 |
10
.travis.yml
10
.travis.yml
@@ -89,10 +89,6 @@ before_install:
|
||||
# setup virtual display for after_success target
|
||||
if [ "$gui" = true ]; then export "DISPLAY=:99.0" && /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 ; fi ;
|
||||
fi
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
qbtconf="$qbtconf --disable-qt-dbus" ;
|
||||
fi
|
||||
|
||||
# print settings
|
||||
- echo $lt_branch
|
||||
@@ -182,7 +178,11 @@ script:
|
||||
after_success:
|
||||
- if [ "$gui" = true ]; then qbt_exe="qbittorrent" ; else qbt_exe="qbittorrent-nox" ; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd "$qbt_path/bin" ; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then cd "$TRAVIS_BUILD_DIR/src/" && macdeployqt "$qbt_exe.app" && cd "$qbt_exe.app/Contents/MacOS" ; fi
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
macdeployqt "$TRAVIS_BUILD_DIR/src/$qbt_exe.app" ;
|
||||
cd "$TRAVIS_BUILD_DIR/src/$qbt_exe.app/Contents/MacOS" ;
|
||||
fi
|
||||
- ./$qbt_exe --version
|
||||
|
||||
after_script:
|
||||
|
||||
@@ -17,15 +17,17 @@ endif()
|
||||
|
||||
set(PROJECT_VERSION "${PROJECT_VERSION}${VER_STATUS}")
|
||||
|
||||
add_definitions(-DVERSION_MAJOR=${VER_MAJOR})
|
||||
add_definitions(-DVERSION_MINOR=${VER_MINOR})
|
||||
add_definitions(-DVERSION_BUGFIX=${VER_BUGFIX})
|
||||
add_definitions(-DVERSION_BUILD=${VER_BUILD})
|
||||
add_definitions(-DQBT_VERSION_MAJOR=${VER_MAJOR})
|
||||
add_definitions(-DQBT_VERSION_MINOR=${VER_MINOR})
|
||||
add_definitions(-DQBT_VERSION_BUGFIX=${VER_BUGFIX})
|
||||
add_definitions(-DQBT_VERSION_BUILD=${VER_BUILD})
|
||||
|
||||
# os2 {
|
||||
# DEFINES += VERSION=\'\"v$${PROJECT_VERSION}\"\'
|
||||
# DEFINES += DQBT_VERSION=\'\"v$${PROJECT_VERSION}\"\'
|
||||
# DEFINES += DQBT_VERSION_2=\'\"$${PROJECT_VERSION}\"\'
|
||||
# } else {
|
||||
add_definitions(-DVERSION="v${PROJECT_VERSION}")
|
||||
add_definitions(-DQBT_VERSION="v${PROJECT_VERSION}")
|
||||
add_definitions(-DQBT_VERSION_2="${PROJECT_VERSION}")
|
||||
# }
|
||||
|
||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og")
|
||||
|
||||
@@ -138,14 +138,14 @@ However, there are cases where curly braces for single statement if blocks **sho
|
||||
|
||||
Generally it will depend on the particular piece of code and would be determined on how readable that piece of code is. **If in doubt** always use braces if one of the above exceptions applies.
|
||||
|
||||
### 3. Indentation###
|
||||
### 3. Indentation ###
|
||||
4 spaces.
|
||||
|
||||
### 4. File encoding and line endings.###
|
||||
### 4. File encoding and line endings. ###
|
||||
|
||||
UTF-8 and Unix-like line ending (LF). Unless some platform specific files need other encodings/line endings.
|
||||
|
||||
### 5. Initialization lists.###
|
||||
### 5. Initialization lists. ###
|
||||
Initialization lists should be vertical. This will allow for more easily readable diffs. The initialization colon should be indented and in its own line along with first argument. The rest of the arguments should be indented too and have the comma prepended.
|
||||
```c++
|
||||
myClass::myClass(int a, int b, int c, int d)
|
||||
@@ -158,7 +158,7 @@ myClass::myClass(int a, int b, int c, int d)
|
||||
}
|
||||
```
|
||||
|
||||
### 6. Enums.###
|
||||
### 6. Enums. ###
|
||||
Enums should be vertical. This will allow for more easily readable diffs. The members should be indented.
|
||||
```c++
|
||||
enum Days
|
||||
@@ -173,7 +173,7 @@ enum Days
|
||||
};
|
||||
```
|
||||
|
||||
### 7. Names.###
|
||||
### 7. Names. ###
|
||||
All names should be camelCased.
|
||||
|
||||
#### a. Type names and namespaces ####
|
||||
@@ -207,7 +207,7 @@ class MyClass
|
||||
}
|
||||
```
|
||||
|
||||
### 8. Header inclusion order.###
|
||||
### 8. Header inclusion order. ###
|
||||
The headers should be placed in the following order:
|
||||
1. Module header (in .cpp)
|
||||
2. System/Qt/Boost etc. headers (splitted in subcategories if you have many).
|
||||
@@ -240,7 +240,7 @@ Example:
|
||||
|
||||
```
|
||||
|
||||
### 9. Misc.###
|
||||
### 9. Misc. ###
|
||||
|
||||
* Line breaks for long lines with operation:
|
||||
|
||||
@@ -304,5 +304,5 @@ for (int a = 0; a < b; ++b) {
|
||||
|
||||
* Method definitions aren't allowed in header files
|
||||
|
||||
###10. Not covered above###
|
||||
If something isn't covered above, just follow the same style the file you are editing has. If that particular detail isn't present in the file you are editing, then use whatever the rest of the project uses.
|
||||
### 10. Not covered above ###
|
||||
If something isn't covered above, just follow the same style the file you are editing has. If that particular detail isn't present in the file you are editing, then use whatever the rest of the project uses.
|
||||
|
||||
24
Changelog
24
Changelog
@@ -1,3 +1,27 @@
|
||||
* Thu Apr 06 2017 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.3.12
|
||||
- FEATURE: Indicate bitness in stackstrace and about dialog. Closes #6172. (sledgehammer999)
|
||||
- BUGFIX: Fix incomplete type compile error with Qt4 (Chocobo1)
|
||||
- BUGFIX: Fix compile error: ‘escape’ is not a member of ‘Qt’ (Chocobo1)
|
||||
- BUGFIX: Use system locale to format dates/time/etc (sledgehammer999)
|
||||
- BUGFIX: Follow http user-agent format (Chocobo1)
|
||||
- BUGFIX: Fix cancel "Set location" causes files move to installation dir. (Chocobo1)
|
||||
- WEBUI: Improve performance of updating 'progress' column (buinsky)
|
||||
- WEBUI: Implement statistics window in web UI (FranciscoPombal)
|
||||
- WEBUI: fixed "remaining" column in WebUI (FranciscoPombal)
|
||||
- WEBUI: Set HttpOnly attribute to SID cookie (Chocobo1)
|
||||
- WEBUI: Fire up the timer to clean inactive sessions (Chocobo1)
|
||||
- WEBUI: Set cookie SID value to empty on logout (Chocobo1)
|
||||
- WINDOWS: Make the installer DPI aware (regs01)
|
||||
- WINDOWS: Set exit code to 0 on install/uninstall success. Fixes problem with silent installations. (Chocobo1)
|
||||
- WINDOWS: The 64-bit installer refuses to install on 32-bit systems. (sledgehammer999)
|
||||
- WINDOWS: The 64-bit installer uses the correct "Program Files" now. Detection will not work if you install on top of previous installer. (sledgehammer999)
|
||||
- WINDOWS: Fix running the uninstaller if the user chose a different path in the installer. Closes #6080. (sledgehammer999)
|
||||
- LINUX: Add keywords to the .desktop file. (sledgehammer999)
|
||||
- LINUX: Update stuff in appdata.xml and run 'appstream-utl upgrade' on it. (sledgehammer999)
|
||||
- OTHER: Replace rand() by a true uniform distribution generator (Chocobo1)
|
||||
- OTHER: Change our user-agent format as indicated earlier in the news section (Chocobo1)
|
||||
- OTHER: cmake: fix OSX bundle creation (evsh)
|
||||
|
||||
* Fri Mar 03 2017 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.3.11
|
||||
- FEATURE: Always show progress and remaining bytes for unselected files. (sledgehammer999)
|
||||
- FEATURE: Allow to change priority for unselected files through the combobox like it is done via the context menu. (sledgehammer999)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# We want to link with static version of
|
||||
# libtorrent
|
||||
set(LibtorrentRasterbar_USE_STATIC_LIBS True)
|
||||
set(LibtorrentRasterbar_CUSTOM_DEFINITIONS
|
||||
set(LibtorrentRasterbar_CUSTOM_DEFINITIONS
|
||||
-DBOOST_ALL_NO_LIB -DBOOST_ASIO_HASH_MAP_BUCKETS=1021
|
||||
-DBOOST_ASIO_SEPARATE_COMPILATION
|
||||
-DBOOST_EXCEPTION_DISABLE
|
||||
@@ -17,8 +17,9 @@ add_definitions(-DUNICODE
|
||||
-DWIN32
|
||||
-D_WIN32
|
||||
-DWIN32_LEAN_AND_MEAN
|
||||
-DNTDDI_VERSION=0x05010000
|
||||
-D_WIN32_WINNT=0x0501
|
||||
-D_WIN32_IE=0x0500
|
||||
-D_WIN32_IE=0x0501
|
||||
-D_CRT_SECURE_NO_DEPRECATE
|
||||
-D_SCL_SECURE_NO_DEPRECATE
|
||||
)
|
||||
|
||||
2
dist/mac/Info.plist
vendored
2
dist/mac/Info.plist
vendored
@@ -45,7 +45,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>3.3.11</string>
|
||||
<string>3.3.12</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>qBit</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
|
||||
1
dist/mac/bundle.cmake
vendored
1
dist/mac/bundle.cmake
vendored
@@ -1,2 +1,3 @@
|
||||
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
||||
include(BundleUtilities)
|
||||
fixup_bundle("$ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/qbittorrent.app" "" "")
|
||||
|
||||
85
dist/unix/qBittorrent.appdata.xml
vendored
85
dist/unix/qBittorrent.appdata.xml
vendored
@@ -1,61 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright 2014 sledgehammer999 <sledgehammer999@qbittorrent.org> -->
|
||||
<component type="desktop">
|
||||
<id>qBittorrent.desktop</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-2.0 and OpenSSL</project_license>
|
||||
<name>qBittorrent</name>
|
||||
<summary>A Bittorrent Client</summary>
|
||||
<description>
|
||||
<p>
|
||||
<id>qBittorrent.desktop</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-2.0 and OpenSSL</project_license>
|
||||
<name>qBittorrent</name>
|
||||
<summary>A Bittorrent Client</summary>
|
||||
<description>
|
||||
<p>
|
||||
Aiming to be a good alternative to all other bittorrent clients out
|
||||
there, qBittorrent is fast, stable and provides unicode support as well
|
||||
as many other features. Additionally, qBittorrent runs and provides those
|
||||
same features on all major platforms (Linux, Mac OS X, Windows, OS/2, FreeBSD).
|
||||
</p>
|
||||
<p>
|
||||
<p>
|
||||
It is programmed in C++ / Qt and uses libtorrent (sometimes called
|
||||
libtorrent-rasterbar) by Arvid Norberg. GeoLite data, created by MaxMind,
|
||||
are included in qBittorrent. Its features include:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Polished µTorrent-like User Interface</li>
|
||||
<li>Well-integrated and extensible Search Engine</li>
|
||||
<li>All Bittorrent extensions (DHT, Peer Exchange, Full encryption, Magnet/BitComet URIs, ...)</li>
|
||||
<li>Remote control through a Web user interface</li>
|
||||
<li>Advanced control over trackers, peers and torrents</li>
|
||||
<li>UPnP / NAT-PMP port forwarding support</li>
|
||||
<li>Available in ~25 languages (Unicode support)</li>
|
||||
<li>Torrent creation tool</li>
|
||||
<li>Advanced RSS support with download filters (inc. regex)</li>
|
||||
<li>Bandwidth scheduler</li>
|
||||
<li>IP Filtering (eMule and PeerGuardian compatible)</li>
|
||||
<li>IPv6 compliant</li>
|
||||
<li>Sequential downloading (aka "Download in order")</li>
|
||||
</ul>
|
||||
</description>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image width="1200" height="675">
|
||||
<ul>
|
||||
<li>Polished µTorrent-like User Interface</li>
|
||||
<li>Well-integrated and extensible Search Engine</li>
|
||||
<li>All Bittorrent extensions (DHT, Peer Exchange, Full encryption, Magnet/BitComet URIs, ...)</li>
|
||||
<li>Remote control through a Web user interface</li>
|
||||
<li>Advanced control over trackers, peers and torrents</li>
|
||||
<li>UPnP / NAT-PMP port forwarding support</li>
|
||||
<li>Available in ~25 languages (Unicode support)</li>
|
||||
<li>Torrent creation tool</li>
|
||||
<li>Advanced RSS support with download filters (inc. regex)</li>
|
||||
<li>Bandwidth scheduler</li>
|
||||
<li>IP Filtering (eMule and PeerGuardian compatible)</li>
|
||||
<li>IPv6 compliant</li>
|
||||
<li>Sequential downloading (aka "Download in order")</li>
|
||||
</ul>
|
||||
</description>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image height="675" width="1200">
|
||||
https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_01.png
|
||||
</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image width="1200" height="675">
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image height="675" width="1200">
|
||||
https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_02.png
|
||||
</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image width="1200" height="675">
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image height="675" width="1200">
|
||||
https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_03.png
|
||||
</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image width="1200" height="675">
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image height="675" width="1200">
|
||||
https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_04.png
|
||||
</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<url type="homepage">http://www.qbittorrent.org/</url>
|
||||
<update_contact>sledgehammer999@qbittorrent.org</update_contact>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<url type="homepage">http://www.qbittorrent.org/</url>
|
||||
<update_contact>sledgehammer999@qbittorrent.org</update_contact>
|
||||
<developer_name>The qBittorrent Project</developer_name>
|
||||
<url type="bugtracker">http://bugs.qbittorrent.org/</url>
|
||||
<url type="donation">https://www.qbittorrent.org/donate</url>
|
||||
<url type="help">http://forum.qbittorrent.org/</url>
|
||||
<url type="translate">https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent</url>
|
||||
</component>
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_AFRIKAANS} "A previous installation wa
|
||||
LangString inst_unist ${LANG_AFRIKAANS} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_AFRIKAANS} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_AFRIKAANS} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_ALBANIAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_ALBANIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_ALBANIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_ALBANIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_ARABIC} "A previous installation was d
|
||||
LangString inst_unist ${LANG_ARABIC} "جاري ازالة النسخة السابقة من البرنامج"
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_ARABIC} "تشغيل البرنامج"
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_ARABIC} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_BASQUE} "A previous installation was d
|
||||
LangString inst_unist ${LANG_BASQUE} "Aurreko bertsioa kentzen."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_BASQUE} "Abiarazi qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_BASQUE} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_BELARUSIAN} "A previous installation w
|
||||
LangString inst_unist ${LANG_BELARUSIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_BELARUSIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_BELARUSIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_BOSNIAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_BOSNIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_BOSNIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_BOSNIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_BRETON} "A previous installation was d
|
||||
LangString inst_unist ${LANG_BRETON} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_BRETON} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_BRETON} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_BULGARIAN} "A previous installation wa
|
||||
LangString inst_unist ${LANG_BULGARIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_BULGARIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_BULGARIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_CATALAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_CATALAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_CATALAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_CATALAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_CROATIAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_CROATIAN} "Deinstaliraj prethodnu verziju."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_CROATIAN} "Pokreni qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_CROATIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_CZECH} "A previous installation was de
|
||||
LangString inst_unist ${LANG_CZECH} "Odebírání předchozí verze."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_CZECH} "Spustit qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_CZECH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_DANISH} "A previous installation was d
|
||||
LangString inst_unist ${LANG_DANISH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_DANISH} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_DANISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_DUTCH} "A previous installation was de
|
||||
LangString inst_unist ${LANG_DUTCH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_DUTCH} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_DUTCH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_ENGLISH} "A previous installation was
|
||||
LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
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_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_ESPERANTO} "A previous installation wa
|
||||
LangString inst_unist ${LANG_ESPERANTO} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_ESPERANTO} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_ESPERANTO} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_ESTONIAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_ESTONIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_ESTONIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_ESTONIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_FARSI} "A previous installation was de
|
||||
LangString inst_unist ${LANG_FARSI} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_FARSI} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_FARSI} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_FINNISH} "A previous installation was
|
||||
LangString inst_unist ${LANG_FINNISH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_FINNISH} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_FINNISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_FRENCH} "Une installation précédente
|
||||
LangString inst_unist ${LANG_FRENCH} "Désinstallation de la version précédente."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_FRENCH} "Lancer qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_FRENCH} "Cet installateur ne fonctionne que dans les versions 64 bits de Windows."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_GALICIAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_GALICIAN} "Desinstalando a versión anterior."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_GALICIAN} "Iniciar qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_GALICIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_GERMAN} "Eine ältere Installation wur
|
||||
LangString inst_unist ${LANG_GERMAN} "Vorherige Version wird deinstalliert."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_GERMAN} "Starte qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_GERMAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_GREEK} "A previous installation was de
|
||||
LangString inst_unist ${LANG_GREEK} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_GREEK} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_GREEK} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_HEBREW} "A previous installation was d
|
||||
LangString inst_unist ${LANG_HEBREW} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_HEBREW} "Launch 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."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_HUNGARIAN} "A previous installation wa
|
||||
LangString inst_unist ${LANG_HUNGARIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_HUNGARIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_HUNGARIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_ICELANDIC} "A previous installation wa
|
||||
LangString inst_unist ${LANG_ICELANDIC} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_ICELANDIC} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_ICELANDIC} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_INDONESIAN} "A previous installation w
|
||||
LangString inst_unist ${LANG_INDONESIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_INDONESIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_INDONESIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_IRISH} "A previous installation was de
|
||||
LangString inst_unist ${LANG_IRISH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_IRISH} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_IRISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_ITALIAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_ITALIAN} "Disinstallazione versione precedente."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_ITALIAN} "Esegui qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_ITALIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_JAPANESE} "A previous installation was
|
||||
LangString inst_unist ${LANG_JAPANESE} "以前のバージョンをアンインストールしています。"
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_JAPANESE} "qBittorrent を起動する"
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_JAPANESE} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_KOREAN} "A previous installation was d
|
||||
LangString inst_unist ${LANG_KOREAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_KOREAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_KOREAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_KURDISH} "A previous installation was
|
||||
LangString inst_unist ${LANG_KURDISH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_KURDISH} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_KURDISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_LATVIAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_LATVIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_LATVIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_LATVIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_LITHUANIAN} "A previous installation w
|
||||
LangString inst_unist ${LANG_LITHUANIAN} "Šalinu ankstesnę versiją."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_LITHUANIAN} "Paleisti qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_LITHUANIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_LUXEMBOURGISH} "A previous installatio
|
||||
LangString inst_unist ${LANG_LUXEMBOURGISH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_LUXEMBOURGISH} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_LUXEMBOURGISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_MACEDONIAN} "A previous installation w
|
||||
LangString inst_unist ${LANG_MACEDONIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_MACEDONIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_MACEDONIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_MALAY} "A previous installation was de
|
||||
LangString inst_unist ${LANG_MALAY} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_MALAY} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_MALAY} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_MONGOLIAN} "A previous installation wa
|
||||
LangString inst_unist ${LANG_MONGOLIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_MONGOLIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_MONGOLIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_NORWEGIAN} "A previous installation wa
|
||||
LangString inst_unist ${LANG_NORWEGIAN} "Avinstallerer forrige versjon."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_NORWEGIAN} "Sett i gang qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_NORWEGIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_NORWEGIANNYNORSK} "A previous installa
|
||||
LangString inst_unist ${LANG_NORWEGIANNYNORSK} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_NORWEGIANNYNORSK} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_NORWEGIANNYNORSK} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_POLISH} "A previous installation was d
|
||||
LangString inst_unist ${LANG_POLISH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_POLISH} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_POLISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_PORTUGUESE} "Uma antiga instalação f
|
||||
LangString inst_unist ${LANG_PORTUGUESE} "A desinstalar versão anterior."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_PORTUGUESE} "Iniciar qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_PORTUGUESE} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_PORTUGUESEBR} "Uma instalação anteri
|
||||
LangString inst_unist ${LANG_PORTUGUESEBR} "Desinstalando versão anterior."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_PORTUGUESEBR} "Executar qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_PORTUGUESEBR} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_ROMANIAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_ROMANIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_ROMANIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_ROMANIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_RUSSIAN} "Обнаружена пре
|
||||
LangString inst_unist ${LANG_RUSSIAN} "Деинсталлируем старую версию."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_RUSSIAN} "Запустить qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_RUSSIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_SERBIAN} "A previous installation was
|
||||
LangString inst_unist ${LANG_SERBIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_SERBIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_SERBIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_SERBIANLATIN} "A previous installation
|
||||
LangString inst_unist ${LANG_SERBIANLATIN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_SERBIANLATIN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_SERBIANLATIN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_SIMPCHINESE} "A previous installation
|
||||
LangString inst_unist ${LANG_SIMPCHINESE} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_SIMPCHINESE} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_SIMPCHINESE} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_SLOVAK} "A previous installation was d
|
||||
LangString inst_unist ${LANG_SLOVAK} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_SLOVAK} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_SLOVAK} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_SLOVENIAN} "A previous installation wa
|
||||
LangString inst_unist ${LANG_SLOVENIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_SLOVENIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_SLOVENIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_SPANISH} "Se detectó una instalación
|
||||
LangString inst_unist ${LANG_SPANISH} "Desinstalando la versión anterior."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_SPANISH} "Iniciar qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_SPANISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_SPANISHINTERNATIONAL} "Se detectó una
|
||||
LangString inst_unist ${LANG_SPANISHINTERNATIONAL} "Desinstalando la versión anterior."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_SPANISHINTERNATIONAL} "Iniciar qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_SPANISHINTERNATIONAL} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_SWEDISH} "A previous installation was
|
||||
LangString inst_unist ${LANG_SWEDISH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_SWEDISH} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_SWEDISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
2
dist/windows/installer-translations/thai.nsi
vendored
2
dist/windows/installer-translations/thai.nsi
vendored
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_THAI} "A previous installation was det
|
||||
LangString inst_unist ${LANG_THAI} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_THAI} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_THAI} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_TRADCHINESE} "A previous installation
|
||||
LangString inst_unist ${LANG_TRADCHINESE} "正在移除先前版本"
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_TRADCHINESE} "啟動 qBittorrent"
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_TRADCHINESE} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_TURKISH} "Önceki bir kurulum algılan
|
||||
LangString inst_unist ${LANG_TURKISH} "Önceki sürüm kaldırılıyor."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_TURKISH} "qBittorrent'i çalıştır."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_TURKISH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_UKRAINIAN} "A previous installation wa
|
||||
LangString inst_unist ${LANG_UKRAINIAN} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_UKRAINIAN} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_UKRAINIAN} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_UZBEK} "A previous installation was de
|
||||
LangString inst_unist ${LANG_UZBEK} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_UZBEK} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_UZBEK} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
@@ -22,6 +22,8 @@ LangString inst_uninstall_question ${LANG_WELSH} "A previous installation was de
|
||||
LangString inst_unist ${LANG_WELSH} "Uninstalling previous version."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_WELSH} "Launch qBittorrent."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_WELSH} "This installer works only in 64-bit Windows versions."
|
||||
|
||||
|
||||
;------------------------------------
|
||||
|
||||
69
dist/windows/installer.nsi
vendored
69
dist/windows/installer.nsi
vendored
@@ -1,14 +1,17 @@
|
||||
Section "-hidden"
|
||||
Var uninstallerPath
|
||||
|
||||
Section "-hidden"
|
||||
|
||||
;Search if qBittorrent is already installed.
|
||||
FindFirst $0 $1 "$INSTDIR\uninst.exe"
|
||||
FindFirst $0 $1 "$uninstallerPath\uninst.exe"
|
||||
FindClose $0
|
||||
StrCmp $1 "" done
|
||||
|
||||
;Run the uninstaller of the previous install.
|
||||
DetailPrint $(inst_unist)
|
||||
ExecWait '"$INSTDIR\uninst.exe" /S _?=$INSTDIR'
|
||||
Delete "$INSTDIR\uninst.exe"
|
||||
ExecWait '"$uninstallerPath\uninst.exe" /S _?=$uninstallerPath'
|
||||
Delete "$uninstallerPath\uninst.exe"
|
||||
RMDir "$uninstallerPath"
|
||||
|
||||
done:
|
||||
|
||||
@@ -18,14 +21,14 @@ SectionEnd
|
||||
Section $(inst_qbt_req) ;"qBittorrent (required)"
|
||||
|
||||
SectionIn RO
|
||||
|
||||
|
||||
; Set output path to the installation directory.
|
||||
SetOutPath $INSTDIR
|
||||
|
||||
|
||||
;Create 'translations' directory
|
||||
CreateDirectory $INSTDIR\translations
|
||||
|
||||
; Put file there
|
||||
|
||||
; Put file there
|
||||
File "qbittorrent.exe"
|
||||
File "qbittorrent.pdb"
|
||||
File "qt.conf"
|
||||
@@ -74,10 +77,10 @@ Section $(inst_qbt_req) ;"qBittorrent (required)"
|
||||
File /oname=translations\qtbase_ru.qm "translations\qtbase_ru.qm"
|
||||
File /oname=translations\qtbase_sk.qm "translations\qtbase_sk.qm"
|
||||
File /oname=translations\qtbase_uk.qm "translations\qtbase_uk.qm"
|
||||
|
||||
; Write the installation path into the registry
|
||||
|
||||
; Write the installation path into the registry
|
||||
WriteRegStr HKLM "Software\qBittorrent" "InstallLocation" "$INSTDIR"
|
||||
|
||||
|
||||
; Write the uninstall keys for Windows
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayName" "qBittorrent ${PROG_VERSION}"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "UninstallString" '"$INSTDIR\uninst.exe"'
|
||||
@@ -87,53 +90,53 @@ Section $(inst_qbt_req) ;"qBittorrent (required)"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayVersion" "${PROG_VERSION}"
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "NoModify" 1
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "NoRepair" 1
|
||||
WriteUninstaller "uninst.exe"
|
||||
WriteUninstaller "uninst.exe"
|
||||
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
|
||||
IntFmt $0 "0x%08X" $0
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "EstimatedSize" "$0"
|
||||
|
||||
|
||||
; qBittorrent ProgID
|
||||
WriteRegStr HKLM "Software\Classes\qBittorrent" "" "qBittorrent Torrent File"
|
||||
WriteRegStr HKLM "Software\Classes\qBittorrent" "FriendlyTypeName" "qBittorrent Torrent File"
|
||||
WriteRegStr HKLM "Software\Classes\qBittorrent\shell" "" "open"
|
||||
WriteRegStr HKLM "Software\Classes\qBittorrent\shell\open\command" "" '"$INSTDIR\qbittorrent.exe" "%1"'
|
||||
WriteRegStr HKLM "Software\Classes\qBittorrent\DefaultIcon" "" '"$INSTDIR\qbittorrent.exe",1'
|
||||
|
||||
|
||||
SectionEnd
|
||||
|
||||
; Optional section (can be disabled by the user)
|
||||
Section /o $(inst_dekstop) ;"Create Desktop Shortcut"
|
||||
|
||||
CreateShortCut "$DESKTOP\qBittorrent.lnk" "$INSTDIR\qbittorrent.exe"
|
||||
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section $(inst_startmenu) ;"Create Start Menu Shortcut"
|
||||
|
||||
CreateDirectory "$SMPROGRAMS\qBittorrent"
|
||||
CreateDirectory "$SMPROGRAMS\qBittorrent"
|
||||
CreateShortCut "$SMPROGRAMS\qBittorrent\qBittorrent.lnk" "$INSTDIR\qbittorrent.exe"
|
||||
CreateShortCut "$SMPROGRAMS\qBittorrent\Uninstall.lnk" "$INSTDIR\uninst.exe"
|
||||
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section $(inst_torrent) ;"Open .torrent files with qBittorrent"
|
||||
|
||||
ReadRegStr $0 HKLM "Software\Classes\.torrent" ""
|
||||
|
||||
|
||||
StrCmp $0 "qBittorrent" clear_errors 0
|
||||
;Check if empty string
|
||||
StrCmp $0 "" clear_errors 0
|
||||
;Write old value to OpenWithProgIds
|
||||
WriteRegStr HKLM "Software\Classes\.torrent\OpenWithProgIds" $0 ""
|
||||
|
||||
|
||||
clear_errors:
|
||||
ClearErrors
|
||||
|
||||
WriteRegStr HKLM "Software\Classes\.torrent" "" "qBittorrent"
|
||||
WriteRegStr HKLM "Software\Classes\.torrent" "Content Type" "application/x-bittorrent"
|
||||
|
||||
|
||||
!insertmacro UAC_AsUser_Call Function inst_torrent_user ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR}
|
||||
|
||||
|
||||
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
||||
|
||||
SectionEnd
|
||||
@@ -141,13 +144,13 @@ SectionEnd
|
||||
Function inst_torrent_user
|
||||
|
||||
ReadRegStr $0 HKCU "Software\Classes\.torrent" ""
|
||||
|
||||
|
||||
StrCmp $0 "qBittorrent" clear_errors 0
|
||||
;Check if empty string
|
||||
StrCmp $0 "" clear_errors 0
|
||||
;Write old value to OpenWithProgIds
|
||||
WriteRegStr HKCU "Software\Classes\.torrent\OpenWithProgIds" $0 ""
|
||||
|
||||
|
||||
clear_errors:
|
||||
ClearErrors
|
||||
|
||||
@@ -164,7 +167,7 @@ Section $(inst_magnet) ;"Open magnet links with qBittorrent"
|
||||
WriteRegStr HKLM "Software\Classes\magnet\DefaultIcon" "" '"$INSTDIR\qbittorrent.exe",1'
|
||||
WriteRegStr HKLM "Software\Classes\magnet\shell" "" "open"
|
||||
WriteRegStr HKLM "Software\Classes\magnet\shell\open\command" "" '"$INSTDIR\qbittorrent.exe" "%1"'
|
||||
|
||||
|
||||
!insertmacro UAC_AsUser_Call Function inst_magnet_user ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR}
|
||||
|
||||
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
||||
@@ -185,8 +188,8 @@ FunctionEnd
|
||||
Section $(inst_firewall)
|
||||
|
||||
DetailPrint $(inst_firewallinfo)
|
||||
nsisFirewallW::AddAuthorizedApplication "$INSTDIR\qbittorrent.exe" "qBittorrent"
|
||||
|
||||
nsisFirewallW::AddAuthorizedApplication "$INSTDIR\qbittorrent.exe" "qBittorrent"
|
||||
|
||||
SectionEnd
|
||||
|
||||
;--------------------------------
|
||||
@@ -196,11 +199,21 @@ Function .onInit
|
||||
!insertmacro Init "installer"
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
!ifdef APP64BIT
|
||||
${IfNot} ${RunningX64}
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_64bit)
|
||||
Abort
|
||||
${EndIf}
|
||||
!endif
|
||||
|
||||
;Search if qBittorrent is already installed.
|
||||
FindFirst $0 $1 "$INSTDIR\uninst.exe"
|
||||
FindClose $0
|
||||
StrCmp $1 "" done
|
||||
|
||||
;Copy old value to var so we can call the correct uninstaller
|
||||
StrCpy $uninstallerPath $INSTDIR
|
||||
|
||||
;Inform the user
|
||||
MessageBox MB_OKCANCEL|MB_ICONINFORMATION $(inst_uninstall_question) /SD IDOK IDOK done
|
||||
Quit
|
||||
@@ -228,3 +241,7 @@ Function PageFinishRun
|
||||
!insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\qbittorrent.exe" "" "" ""
|
||||
|
||||
FunctionEnd
|
||||
|
||||
Function .onInstSuccess
|
||||
SetErrorLevel 0
|
||||
FunctionEnd
|
||||
|
||||
38
dist/windows/options.nsi
vendored
38
dist/windows/options.nsi
vendored
@@ -1,4 +1,5 @@
|
||||
Unicode true
|
||||
ManifestDPIAware true
|
||||
;Compress the header too
|
||||
!packhdr "$%TEMP%\exehead.tmp" 'upx.exe -9 --best --ultra-brute "$%TEMP%\exehead.tmp"'
|
||||
|
||||
@@ -7,9 +8,15 @@ SetCompressor /SOLID LZMA
|
||||
SetCompressorDictSize 64
|
||||
XPStyle on
|
||||
|
||||
;Uncomment when packaging 64bit qbittorrent
|
||||
;!define APP64BIT
|
||||
|
||||
!include "MUI.nsh"
|
||||
!include "UAC.nsh"
|
||||
!include "FileFunc.nsh"
|
||||
!ifdef APP64BIT
|
||||
!include "x64.nsh"
|
||||
!endif
|
||||
|
||||
;For the file association
|
||||
!define SHCNE_ASSOCCHANGED 0x8000000
|
||||
@@ -19,16 +26,26 @@ XPStyle on
|
||||
!define CSIDL_APPDATA '0x1A' ;Application Data path
|
||||
!define CSIDL_LOCALAPPDATA '0x1C' ;Local Application Data path
|
||||
|
||||
!define PROG_VERSION "3.3.11"
|
||||
; Program specific
|
||||
!define PROG_VERSION "3.3.12"
|
||||
|
||||
!define MUI_FINISHPAGE_RUN
|
||||
!define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun
|
||||
!define MUI_FINISHPAGE_RUN_TEXT $(launch_qbt)
|
||||
|
||||
; The name of the installer
|
||||
Name "qBittorrent ${PROG_VERSION}"
|
||||
!ifndef APP64BIT
|
||||
; The name of the installer
|
||||
Name "qBittorrent ${PROG_VERSION}"
|
||||
|
||||
; The file to write
|
||||
OutFile "qbittorrent_${PROG_VERSION}_setup.exe"
|
||||
; The file to write
|
||||
OutFile "qbittorrent_${PROG_VERSION}_setup.exe"
|
||||
!else
|
||||
; The name of the installer
|
||||
Name "qBittorrent ${PROG_VERSION} x64"
|
||||
|
||||
; The file to write
|
||||
OutFile "qbittorrent_${PROG_VERSION}_x64_setup.exe"
|
||||
!endif
|
||||
|
||||
;Installer Version Information
|
||||
VIAddVersionKey "ProductName" "qBittorrent"
|
||||
@@ -39,8 +56,15 @@ VIAddVersionKey "FileVersion" "${PROG_VERSION}"
|
||||
|
||||
VIProductVersion "${PROG_VERSION}.0"
|
||||
|
||||
; The default installation directory
|
||||
InstallDir $PROGRAMFILES\qBittorrent
|
||||
; The default installation directory. It changes depending if we install in the 64bit dir or not.
|
||||
; A caveat of this is if a user has installed a 32bit version and then runs the 64bit installer
|
||||
; (which in turn launches the 32bit uninstaller first) the value will still point to the 32bit location.
|
||||
; The user has to manually uninstall the old version and THEN run the 64bit installer
|
||||
!ifndef APP64BIT
|
||||
InstallDir $PROGRAMFILES32\qBittorrent
|
||||
!else
|
||||
InstallDir $PROGRAMFILES64\qBittorrent
|
||||
!endif
|
||||
|
||||
; Registry key to check for directory (so if you install again, it will
|
||||
; overwrite the old one automatically)
|
||||
|
||||
38
dist/windows/uninstaller.nsi
vendored
38
dist/windows/uninstaller.nsi
vendored
@@ -1,10 +1,10 @@
|
||||
Section "un.$(remove_files)" ;"un.Remove files"
|
||||
SectionIn RO
|
||||
|
||||
; Remove files and uninstaller
|
||||
|
||||
; Remove files and uninstaller
|
||||
Delete "$INSTDIR\qbittorrent.exe"
|
||||
Delete "$INSTDIR\qbittorrent.pdb"
|
||||
Delete "$INSTDIR\qt.conf"
|
||||
Delete "$INSTDIR\qt.conf"
|
||||
Delete "$INSTDIR\translations\qt_ar.qm"
|
||||
Delete "$INSTDIR\translations\qt_bg.qm"
|
||||
Delete "$INSTDIR\translations\qt_ca.qm"
|
||||
@@ -51,8 +51,8 @@
|
||||
Delete "$INSTDIR\translations\qtbase_sk.qm"
|
||||
Delete "$INSTDIR\translations\qtbase_uk.qm"
|
||||
Delete "$INSTDIR\uninst.exe"
|
||||
|
||||
; Remove directories used
|
||||
|
||||
; Remove directories used
|
||||
RMDir /r "$INSTDIR\translations"
|
||||
RMDir "$INSTDIR"
|
||||
SectionEnd
|
||||
@@ -71,16 +71,16 @@ Section "un.$(remove_associations)" ;"un.Remove file associations"
|
||||
DetailPrint "$(uninst_tor_warn) $0"
|
||||
DeleteRegValue HKLM "Software\Classes\.torrent" ""
|
||||
DeleteRegKey /ifempty HKLM "Software\Classes\.torrent"
|
||||
|
||||
|
||||
torrent_end:
|
||||
ReadRegStr $0 HKLM "Software\Classes\magnet\shell\open\command" ""
|
||||
StrCmp $0 '"$INSTDIR\qbittorrent.exe" "%1"' 0 magnet_end
|
||||
DetailPrint "$(uninst_mag_warn) $0"
|
||||
DeleteRegKey HKLM "Software\Classes\magnet"
|
||||
|
||||
|
||||
magnet_end:
|
||||
!insertmacro UAC_AsUser_Call Function un.remove_associations_user ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR}
|
||||
|
||||
|
||||
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
||||
SectionEnd
|
||||
|
||||
@@ -90,23 +90,23 @@ Function un.remove_associations_user
|
||||
DetailPrint "$(uninst_tor_warn) $0"
|
||||
DeleteRegValue HKCU "Software\Classes\.torrent" ""
|
||||
DeleteRegKey /ifempty HKCU "Software\Classes\.torrent"
|
||||
|
||||
|
||||
torrent_end:
|
||||
ReadRegStr $0 HKCU "Software\Classes\magnet\shell\open\command" ""
|
||||
StrCmp $0 '"$INSTDIR\qbittorrent.exe" "%1"' 0 magnet_end
|
||||
DetailPrint "$(uninst_mag_warn) $0"
|
||||
DeleteRegKey HKCU "Software\Classes\magnet"
|
||||
|
||||
|
||||
magnet_end:
|
||||
FunctionEnd
|
||||
|
||||
Section "un.$(remove_registry)" ;"un.Remove registry keys"
|
||||
SectionIn RO
|
||||
Section "un.$(remove_registry)" ;"un.Remove registry keys"
|
||||
SectionIn RO
|
||||
; Remove registry keys
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent"
|
||||
DeleteRegKey HKLM "Software\qBittorrent"
|
||||
DeleteRegKey HKLM "Software\Classes\qBittorrent"
|
||||
|
||||
|
||||
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
||||
SectionEnd
|
||||
|
||||
@@ -114,7 +114,7 @@ Section "un.$(remove_firewall)" ;
|
||||
|
||||
DetailPrint $(remove_firewallinfo)
|
||||
nsisFirewallW::RemoveAuthorizedApplication "$INSTDIR\qbittorrent.exe"
|
||||
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section /o "un.$(remove_conf)" ;"un.Remove configuration files"
|
||||
@@ -150,7 +150,7 @@ Function un.onInit
|
||||
|
||||
!insertmacro Init "uninstaller"
|
||||
!insertmacro MUI_UNGETLANGUAGE
|
||||
|
||||
|
||||
FunctionEnd
|
||||
|
||||
Function un.check_instance
|
||||
@@ -162,7 +162,11 @@ Function un.check_instance
|
||||
|
||||
done:
|
||||
Abort
|
||||
|
||||
|
||||
notfound:
|
||||
|
||||
|
||||
FunctionEnd
|
||||
|
||||
Function un.onUninstSuccess
|
||||
SetErrorLevel 0
|
||||
FunctionEnd
|
||||
|
||||
@@ -55,6 +55,7 @@ if (WIN32)
|
||||
else (MINGW)
|
||||
list (APPEND QBT_APP_SOURCES ../qbittorrent.rc)
|
||||
endif (MINGW)
|
||||
list(APPEND QBT_APP_SOURCES ../qbittorent.exe.manifest)
|
||||
endif (WIN32)
|
||||
|
||||
if (UNIX)
|
||||
@@ -179,6 +180,6 @@ install(TARGETS ${QBT_TARGET_NAME}
|
||||
BUNDLE DESTINATION .
|
||||
COMPONENT runtime)
|
||||
|
||||
if (APPLE)
|
||||
if (APPLE AND GUI)
|
||||
install(SCRIPT ${OSX_RES_SRC_DIR}/bundle.cmake)
|
||||
endif (APPLE)
|
||||
endif (APPLE AND GUI)
|
||||
|
||||
@@ -129,7 +129,7 @@ Application::Application(const QString &id, int &argc, char **argv)
|
||||
if (isFileLoggerEnabled())
|
||||
m_fileLogger = new FileLogger(fileLoggerPath(), isFileLoggerBackup(), fileLoggerMaxSize(), isFileLoggerDeleteOld(), fileLoggerAge(), static_cast<FileLogger::FileLogAgeType>(fileLoggerAgeType()));
|
||||
|
||||
Logger::instance()->addMessage(tr("qBittorrent %1 started", "qBittorrent v3.2.0alpha started").arg(VERSION));
|
||||
Logger::instance()->addMessage(tr("qBittorrent %1 started", "qBittorrent v3.2.0alpha started").arg(QBT_VERSION));
|
||||
}
|
||||
|
||||
#ifndef DISABLE_GUI
|
||||
@@ -512,7 +512,6 @@ void Application::initializeTranslation()
|
||||
Preferences* const pref = Preferences::instance();
|
||||
// Load translation
|
||||
QString localeStr = pref->getLocale();
|
||||
QLocale::setDefault(QLocale(localeStr));
|
||||
|
||||
if (
|
||||
#ifdef QBT_USES_QT5
|
||||
|
||||
@@ -193,7 +193,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
// Set environment variable
|
||||
if (!qputenv("QBITTORRENT", QByteArray(VERSION)))
|
||||
if (!qputenv("QBITTORRENT", QBT_VERSION))
|
||||
std::cerr << "Couldn't set environment variable...\n";
|
||||
|
||||
#ifndef DISABLE_GUI
|
||||
@@ -259,7 +259,6 @@ int main(int argc, char *argv[])
|
||||
&& isatty(fileno(stdout)))) return EXIT_FAILURE;
|
||||
#endif
|
||||
|
||||
srand(time(0));
|
||||
#ifdef DISABLE_GUI
|
||||
if (params.shouldDaemonize) {
|
||||
app.reset(); // Destroy current application
|
||||
@@ -364,7 +363,7 @@ void sigAbnormalHandler(int signum)
|
||||
const char str1[] = "\n\n*************************************************************\nCatching signal: ";
|
||||
const char *sigName = sysSigName[signum];
|
||||
const char str2[] = "\nPlease file a bug report at http://bug.qbittorrent.org and provide the following information:\n\n"
|
||||
"qBittorrent version: " VERSION "\n";
|
||||
"qBittorrent version: " QBT_VERSION "\n";
|
||||
write(STDERR_FILENO, str1, strlen(str1));
|
||||
write(STDERR_FILENO, sigName, strlen(sigName));
|
||||
write(STDERR_FILENO, str2, strlen(str2));
|
||||
@@ -385,7 +384,7 @@ void showSplashScreen()
|
||||
{
|
||||
QPixmap splash_img(":/icons/skin/splash.png");
|
||||
QPainter painter(&splash_img);
|
||||
QString version = VERSION;
|
||||
QString version = QBT_VERSION;
|
||||
painter.setPen(QPen(Qt::white));
|
||||
painter.setFont(QFont("Arial", 22, QFont::Black));
|
||||
painter.drawText(224 - painter.fontMetrics().width(version), 270, version);
|
||||
@@ -398,7 +397,7 @@ void showSplashScreen()
|
||||
|
||||
void displayVersion()
|
||||
{
|
||||
std::cout << qPrintable(qApp->applicationName()) << " " << VERSION << std::endl;
|
||||
std::cout << qPrintable(qApp->applicationName()) << " " << QBT_VERSION << std::endl;
|
||||
}
|
||||
|
||||
QString makeUsage(const QString &prg_name)
|
||||
|
||||
@@ -60,7 +60,11 @@ public:
|
||||
"</p></font>"
|
||||
"<br/><hr><br/>"
|
||||
"<p align=center><font size=4>"
|
||||
"qBittorrent version: " VERSION "<br/>"
|
||||
#if defined(__x86_64__) || defined(_M_X64)
|
||||
"qBittorrent version: " QBT_VERSION " (64-bit)<br/>"
|
||||
#else
|
||||
"qBittorrent version: " QBT_VERSION " (32-bit)<br/>"
|
||||
#endif
|
||||
"Libtorrent version: %1<br/>"
|
||||
"Qt version: " QT_VERSION_STR "<br/>"
|
||||
"Boost version: %2<br/>"
|
||||
|
||||
@@ -44,6 +44,7 @@ rss/rssmanager.h
|
||||
utils/fs.h
|
||||
utils/gzip.h
|
||||
utils/misc.h
|
||||
utils/random.h
|
||||
utils/string.h
|
||||
filesystemwatcher.h
|
||||
iconprovider.h
|
||||
@@ -103,6 +104,7 @@ rss/rssmanager.cpp
|
||||
utils/fs.cpp
|
||||
utils/gzip.cpp
|
||||
utils/misc.cpp
|
||||
utils/random.cpp
|
||||
utils/string.cpp
|
||||
filesystemwatcher.cpp
|
||||
iconprovider.cpp
|
||||
|
||||
@@ -52,6 +52,7 @@ HEADERS += \
|
||||
$$PWD/utils/fs.h \
|
||||
$$PWD/utils/gzip.h \
|
||||
$$PWD/utils/misc.h \
|
||||
$$PWD/utils/random.h \
|
||||
$$PWD/utils/string.h \
|
||||
$$PWD/unicodestrings.h \
|
||||
$$PWD/torrentfileguard.h \
|
||||
@@ -107,6 +108,7 @@ SOURCES += \
|
||||
$$PWD/utils/fs.cpp \
|
||||
$$PWD/utils/gzip.cpp \
|
||||
$$PWD/utils/misc.cpp \
|
||||
$$PWD/utils/random.cpp \
|
||||
$$PWD/utils/string.cpp \
|
||||
$$PWD/torrentfileguard.cpp \
|
||||
$$PWD/torrentfilter.cpp \
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
#include "base/unicodestrings.h"
|
||||
#include "base/utils/misc.h"
|
||||
#include "base/utils/fs.h"
|
||||
#include "base/utils/random.h"
|
||||
#include "base/utils/string.h"
|
||||
#include "cachestatus.h"
|
||||
#include "magneturi.h"
|
||||
@@ -90,7 +91,7 @@
|
||||
|
||||
static const char PEER_ID[] = "qB";
|
||||
static const char RESUME_FOLDER[] = "BT_backup";
|
||||
static const char USER_AGENT[] = "qBittorrent " VERSION;
|
||||
static const char USER_AGENT[] = "qBittorrent/" QBT_VERSION_2;
|
||||
|
||||
namespace libt = libtorrent;
|
||||
using namespace BitTorrent;
|
||||
@@ -301,7 +302,7 @@ Session::Session(QObject *parent)
|
||||
;
|
||||
|
||||
#if LIBTORRENT_VERSION_NUM < 10100
|
||||
libt::fingerprint fingerprint(PEER_ID, VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, VERSION_BUILD);
|
||||
libt::fingerprint fingerprint(PEER_ID, QBT_VERSION_MAJOR, QBT_VERSION_MINOR, QBT_VERSION_BUGFIX, QBT_VERSION_BUILD);
|
||||
std::string peerId = fingerprint.to_string();
|
||||
const ushort port = this->port();
|
||||
std::pair<int, int> ports(port, port);
|
||||
@@ -331,7 +332,7 @@ Session::Session(QObject *parent)
|
||||
dispatchAlerts(alertPtr.release());
|
||||
});
|
||||
#else
|
||||
std::string peerId = libt::generate_fingerprint(PEER_ID, VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, VERSION_BUILD);
|
||||
std::string peerId = libt::generate_fingerprint(PEER_ID, QBT_VERSION_MAJOR, QBT_VERSION_MINOR, QBT_VERSION_BUGFIX, QBT_VERSION_BUILD);
|
||||
libt::settings_pack pack;
|
||||
pack.set_int(libt::settings_pack::alert_mask, alertMask);
|
||||
pack.set_str(libt::settings_pack::peer_fingerprint, peerId);
|
||||
@@ -2210,7 +2211,7 @@ void Session::setSaveResumeDataInterval(uint value)
|
||||
|
||||
int Session::port() const
|
||||
{
|
||||
static int randomPort = rand() % 64512 + 1024;
|
||||
static int randomPort = Utils::Random::rand(1024, 65535);
|
||||
if (useRandomPort())
|
||||
return randomPort;
|
||||
return m_port;
|
||||
|
||||
@@ -103,7 +103,7 @@ void TorrentCreatorThread::run()
|
||||
{
|
||||
emit updateProgress(0);
|
||||
|
||||
QString creator_str("qBittorrent " VERSION);
|
||||
QString creator_str("qBittorrent " QBT_VERSION);
|
||||
try {
|
||||
libt::file_storage fs;
|
||||
// Adding files to the torrent
|
||||
|
||||
@@ -153,42 +153,6 @@ TorrentState::operator int() const
|
||||
|
||||
// TorrentHandle
|
||||
|
||||
#define SAFE_CALL(func, ...) \
|
||||
try { \
|
||||
m_nativeHandle.func(__VA_ARGS__); \
|
||||
} \
|
||||
catch (std::exception &exc) { \
|
||||
qDebug() << Q_FUNC_INFO << " throws exception: " << exc.what(); \
|
||||
}
|
||||
|
||||
#define SAFE_CALL_BOOL(func, ...) \
|
||||
try { \
|
||||
m_nativeHandle.func(__VA_ARGS__); \
|
||||
return true; \
|
||||
} \
|
||||
catch (std::exception &exc) { \
|
||||
qDebug() << Q_FUNC_INFO << " throws exception: " << exc.what(); \
|
||||
return false; \
|
||||
}
|
||||
|
||||
#define SAFE_RETURN(type, func, val) \
|
||||
type result = val; \
|
||||
try { \
|
||||
result = m_nativeHandle.func(); \
|
||||
} \
|
||||
catch (std::exception &exc) { \
|
||||
qDebug() << Q_FUNC_INFO << " throws exception: " << exc.what(); \
|
||||
} \
|
||||
return result;
|
||||
|
||||
#define SAFE_GET(var, func, ...) \
|
||||
try { \
|
||||
var = m_nativeHandle.func(__VA_ARGS__); \
|
||||
} \
|
||||
catch (std::exception &exc) { \
|
||||
qDebug() << Q_FUNC_INFO << " throws exception: " << exc.what(); \
|
||||
}
|
||||
|
||||
const qreal TorrentHandle::USE_GLOBAL_RATIO = -2.;
|
||||
const qreal TorrentHandle::NO_RATIO_LIMIT = -1.;
|
||||
|
||||
@@ -378,8 +342,8 @@ QList<TrackerEntry> TorrentHandle::trackers() const
|
||||
{
|
||||
QList<TrackerEntry> entries;
|
||||
std::vector<libt::announce_entry> announces;
|
||||
SAFE_GET(announces, trackers);
|
||||
|
||||
announces = m_nativeHandle.trackers();
|
||||
foreach (const libt::announce_entry &tracker, announces)
|
||||
entries << tracker;
|
||||
|
||||
@@ -417,21 +381,15 @@ void TorrentHandle::replaceTrackers(QList<TrackerEntry> trackers)
|
||||
existingTrackers.removeOne(tracker);
|
||||
}
|
||||
|
||||
try {
|
||||
m_nativeHandle.replace_trackers(announces);
|
||||
if (addedTrackers.isEmpty() && existingTrackers.isEmpty()) {
|
||||
m_session->handleTorrentTrackersChanged(this);
|
||||
}
|
||||
else {
|
||||
if (!existingTrackers.isEmpty())
|
||||
m_session->handleTorrentTrackersRemoved(this, existingTrackers);
|
||||
if (!addedTrackers.isEmpty())
|
||||
m_session->handleTorrentTrackersAdded(this, addedTrackers);
|
||||
}
|
||||
|
||||
m_nativeHandle.replace_trackers(announces);
|
||||
if (addedTrackers.isEmpty() && existingTrackers.isEmpty()) {
|
||||
m_session->handleTorrentTrackersChanged(this);
|
||||
}
|
||||
catch (std::exception &exc) {
|
||||
qDebug("torrent_handle::replace_trackers() throws exception: %s", exc.what());
|
||||
else {
|
||||
if (!existingTrackers.isEmpty())
|
||||
m_session->handleTorrentTrackersRemoved(this, existingTrackers);
|
||||
if (!addedTrackers.isEmpty())
|
||||
m_session->handleTorrentTrackersAdded(this, addedTrackers);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -440,14 +398,14 @@ bool TorrentHandle::addTracker(const TrackerEntry &tracker)
|
||||
if (trackers().contains(tracker))
|
||||
return false;
|
||||
|
||||
SAFE_CALL_BOOL(add_tracker, tracker.nativeEntry());
|
||||
m_nativeHandle.add_tracker(tracker.nativeEntry());
|
||||
return true;
|
||||
}
|
||||
|
||||
QList<QUrl> TorrentHandle::urlSeeds() const
|
||||
{
|
||||
QList<QUrl> urlSeeds;
|
||||
std::set<std::string> seeds;
|
||||
SAFE_GET(seeds, url_seeds);
|
||||
std::set<std::string> seeds = m_nativeHandle.url_seeds();
|
||||
|
||||
foreach (const std::string &urlSeed, seeds)
|
||||
urlSeeds.append(QUrl(urlSeed.c_str()));
|
||||
@@ -484,7 +442,8 @@ bool TorrentHandle::addUrlSeed(const QUrl &urlSeed)
|
||||
QList<QUrl> seeds = urlSeeds();
|
||||
if (seeds.contains(urlSeed)) return false;
|
||||
|
||||
SAFE_CALL_BOOL(add_url_seed, Utils::String::toStdString(urlSeed.toString()));
|
||||
m_nativeHandle.add_url_seed(Utils::String::toStdString(urlSeed.toString()));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TorrentHandle::removeUrlSeed(const QUrl &urlSeed)
|
||||
@@ -492,7 +451,8 @@ bool TorrentHandle::removeUrlSeed(const QUrl &urlSeed)
|
||||
QList<QUrl> seeds = urlSeeds();
|
||||
if (!seeds.contains(urlSeed)) return false;
|
||||
|
||||
SAFE_CALL_BOOL(remove_url_seed, Utils::String::toStdString(urlSeed.toString()));
|
||||
m_nativeHandle.remove_url_seed(Utils::String::toStdString(urlSeed.toString()));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TorrentHandle::connectPeer(const PeerAddress &peerAddress)
|
||||
@@ -502,14 +462,15 @@ bool TorrentHandle::connectPeer(const PeerAddress &peerAddress)
|
||||
if (ec) return false;
|
||||
|
||||
boost::asio::ip::tcp::endpoint ep(addr, peerAddress.port);
|
||||
SAFE_CALL_BOOL(connect_peer, ep);
|
||||
m_nativeHandle.connect_peer(ep);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TorrentHandle::needSaveResumeData() const
|
||||
{
|
||||
if (m_needSaveResumeData) return true;
|
||||
|
||||
SAFE_RETURN(bool, need_save_resume_data, false);
|
||||
return m_nativeHandle.need_save_resume_data();
|
||||
}
|
||||
|
||||
void TorrentHandle::saveResumeData(bool updateStatus)
|
||||
@@ -517,7 +478,7 @@ void TorrentHandle::saveResumeData(bool updateStatus)
|
||||
if (updateStatus) // to update queue_position, see discussion in PR #6154
|
||||
this->updateStatus();
|
||||
|
||||
SAFE_CALL(save_resume_data);
|
||||
m_nativeHandle.save_resume_data();
|
||||
m_needSaveResumeData = false;
|
||||
}
|
||||
|
||||
@@ -613,7 +574,7 @@ QStringList TorrentHandle::absoluteFilePathsUnwanted() const
|
||||
QDir saveDir(savePath(true));
|
||||
QStringList res;
|
||||
std::vector<int> fp;
|
||||
SAFE_GET(fp, file_priorities);
|
||||
fp = m_nativeHandle.file_priorities();
|
||||
|
||||
int count = static_cast<int>(fp.size());
|
||||
for (int i = 0; i < count; ++i) {
|
||||
@@ -630,7 +591,7 @@ QStringList TorrentHandle::absoluteFilePathsUnwanted() const
|
||||
QVector<int> TorrentHandle::filePriorities() const
|
||||
{
|
||||
std::vector<int> fp;
|
||||
SAFE_GET(fp, file_priorities);
|
||||
fp = m_nativeHandle.file_priorities();
|
||||
|
||||
return QVector<int>::fromStdVector(fp);
|
||||
}
|
||||
@@ -718,7 +679,9 @@ bool TorrentHandle::isErrored() const
|
||||
bool TorrentHandle::isSeed() const
|
||||
{
|
||||
// Affected by bug http://code.rasterbar.com/libtorrent/ticket/402
|
||||
//SAFE_RETURN(bool, is_seed, false);
|
||||
//bool result;
|
||||
//result = m_nativeHandle.is_seed());
|
||||
//return result;
|
||||
// May suffer from approximation problems
|
||||
//return (progress() == 1.);
|
||||
// This looks safe
|
||||
@@ -742,7 +705,7 @@ bool TorrentHandle::hasFirstLastPiecePriority() const
|
||||
|
||||
// Get int first media file
|
||||
std::vector<int> fp;
|
||||
SAFE_GET(fp, file_priorities);
|
||||
fp = m_nativeHandle.file_priorities();
|
||||
|
||||
TorrentInfo::PieceRange extremities;
|
||||
bool found = false;
|
||||
@@ -758,10 +721,8 @@ bool TorrentHandle::hasFirstLastPiecePriority() const
|
||||
|
||||
if (!found) return false; // No media file
|
||||
|
||||
int first = 0;
|
||||
int last = 0;
|
||||
SAFE_GET(first, piece_priority, extremities.first());
|
||||
SAFE_GET(last, piece_priority, extremities.last());
|
||||
int first = m_nativeHandle.piece_priority(extremities.first());
|
||||
int last = m_nativeHandle.piece_priority(extremities.last());
|
||||
|
||||
return ((first == 7) && (last == 7));
|
||||
}
|
||||
@@ -840,8 +801,7 @@ bool TorrentHandle::hasError() const
|
||||
|
||||
bool TorrentHandle::hasFilteredPieces() const
|
||||
{
|
||||
std::vector<int> pp;
|
||||
SAFE_GET(pp, piece_priorities);
|
||||
std::vector<int> pp = m_nativeHandle.piece_priorities();
|
||||
|
||||
foreach (const int priority, pp)
|
||||
if (priority == 0) return true;
|
||||
@@ -914,7 +874,7 @@ QVector<qreal> TorrentHandle::filesProgress() const
|
||||
{
|
||||
std::vector<boost::int64_t> fp;
|
||||
QVector<qreal> result;
|
||||
SAFE_CALL(file_progress, fp, libt::torrent_handle::piece_granularity);
|
||||
m_nativeHandle.file_progress(fp, libt::torrent_handle::piece_granularity);
|
||||
|
||||
int count = static_cast<int>(fp.size());
|
||||
for (int i = 0; i < count; ++i) {
|
||||
@@ -1007,12 +967,12 @@ int TorrentHandle::timeSinceActivity() const
|
||||
|
||||
int TorrentHandle::downloadLimit() const
|
||||
{
|
||||
SAFE_RETURN(int, download_limit, -1)
|
||||
return m_nativeHandle.download_limit();
|
||||
}
|
||||
|
||||
int TorrentHandle::uploadLimit() const
|
||||
{
|
||||
SAFE_RETURN(int, upload_limit, -1)
|
||||
return m_nativeHandle.upload_limit();
|
||||
}
|
||||
|
||||
bool TorrentHandle::superSeeding() const
|
||||
@@ -1025,7 +985,7 @@ QList<PeerInfo> TorrentHandle::peers() const
|
||||
QList<PeerInfo> peers;
|
||||
std::vector<libt::peer_info> nativePeers;
|
||||
|
||||
SAFE_CALL(get_peer_info, nativePeers);
|
||||
m_nativeHandle.get_peer_info(nativePeers);
|
||||
|
||||
foreach (const libt::peer_info &peer, nativePeers)
|
||||
peers << PeerInfo(this, peer);
|
||||
@@ -1048,7 +1008,7 @@ QBitArray TorrentHandle::downloadingPieces() const
|
||||
QBitArray result(piecesCount());
|
||||
|
||||
std::vector<libt::partial_piece_info> queue;
|
||||
SAFE_CALL(get_download_queue, queue);
|
||||
m_nativeHandle.get_download_queue(queue);
|
||||
|
||||
std::vector<libt::partial_piece_info>::const_iterator it = queue.begin();
|
||||
std::vector<libt::partial_piece_info>::const_iterator itend = queue.end();
|
||||
@@ -1061,7 +1021,7 @@ QBitArray TorrentHandle::downloadingPieces() const
|
||||
QVector<int> TorrentHandle::pieceAvailability() const
|
||||
{
|
||||
std::vector<int> avail;
|
||||
SAFE_CALL(piece_availability, avail);
|
||||
m_nativeHandle.piece_availability(avail);
|
||||
|
||||
return QVector<int>::fromStdVector(avail);
|
||||
}
|
||||
@@ -1206,12 +1166,12 @@ void TorrentHandle::move_impl(QString path)
|
||||
|
||||
void TorrentHandle::forceReannounce(int index)
|
||||
{
|
||||
SAFE_CALL(force_reannounce, 0, index);
|
||||
m_nativeHandle.force_reannounce(0, index);
|
||||
}
|
||||
|
||||
void TorrentHandle::forceDHTAnnounce()
|
||||
{
|
||||
SAFE_CALL(force_dht_announce);
|
||||
m_nativeHandle.force_dht_announce();
|
||||
}
|
||||
|
||||
void TorrentHandle::forceRecheck()
|
||||
@@ -1223,13 +1183,13 @@ void TorrentHandle::forceRecheck()
|
||||
resume();
|
||||
}
|
||||
|
||||
SAFE_CALL(force_recheck);
|
||||
m_nativeHandle.force_recheck();
|
||||
}
|
||||
|
||||
void TorrentHandle::setSequentialDownload(bool b)
|
||||
{
|
||||
if (b != isSequentialDownload()) {
|
||||
SAFE_CALL(set_sequential_download, b);
|
||||
m_nativeHandle.set_sequential_download(b);
|
||||
m_nativeStatus.sequential_download = b; // prevent return cached value
|
||||
}
|
||||
}
|
||||
@@ -1243,10 +1203,8 @@ void TorrentHandle::setFirstLastPiecePriority(bool b)
|
||||
{
|
||||
if (!hasMetadata()) return;
|
||||
|
||||
std::vector<int> fp;
|
||||
SAFE_GET(fp, file_priorities);
|
||||
std::vector<int> pp;
|
||||
SAFE_GET(pp, piece_priorities);
|
||||
std::vector<int> fp = m_nativeHandle.file_priorities();
|
||||
std::vector<int> pp = m_nativeHandle.piece_priorities();
|
||||
|
||||
// Download first and last pieces first for all media files in the torrent
|
||||
int nbfiles = static_cast<int>(fp.size());
|
||||
@@ -1270,7 +1228,7 @@ void TorrentHandle::setFirstLastPiecePriority(bool b)
|
||||
}
|
||||
}
|
||||
|
||||
SAFE_CALL(prioritize_pieces, pp);
|
||||
m_nativeHandle.prioritize_pieces(pp);
|
||||
}
|
||||
|
||||
void TorrentHandle::toggleFirstLastPiecePriority()
|
||||
@@ -1282,28 +1240,18 @@ void TorrentHandle::pause()
|
||||
{
|
||||
if (isPaused()) return;
|
||||
|
||||
try {
|
||||
m_nativeHandle.auto_managed(false);
|
||||
m_nativeHandle.pause();
|
||||
}
|
||||
catch (std::exception &exc) {
|
||||
qDebug() << Q_FUNC_INFO << " throws exception: " << exc.what();
|
||||
}
|
||||
m_nativeHandle.auto_managed(false);
|
||||
m_nativeHandle.pause();
|
||||
}
|
||||
|
||||
void TorrentHandle::resume(bool forced)
|
||||
{
|
||||
try {
|
||||
if (hasError())
|
||||
m_nativeHandle.clear_error();
|
||||
m_hasMissingFiles = false;
|
||||
m_nativeHandle.set_upload_mode(false);
|
||||
m_nativeHandle.auto_managed(!forced);
|
||||
m_nativeHandle.resume();
|
||||
}
|
||||
catch (std::exception &exc) {
|
||||
qDebug() << Q_FUNC_INFO << " throws exception: " << exc.what();
|
||||
}
|
||||
if (hasError())
|
||||
m_nativeHandle.clear_error();
|
||||
m_hasMissingFiles = false;
|
||||
m_nativeHandle.set_upload_mode(false);
|
||||
m_nativeHandle.auto_managed(!forced);
|
||||
m_nativeHandle.resume();
|
||||
}
|
||||
|
||||
void TorrentHandle::moveStorage(const QString &newPath)
|
||||
@@ -1317,28 +1265,24 @@ void TorrentHandle::moveStorage(const QString &newPath)
|
||||
if (QDir(oldPath) == QDir(newPath)) return;
|
||||
|
||||
qDebug("move storage: %s to %s", qPrintable(oldPath), qPrintable(newPath));
|
||||
try {
|
||||
// Actually move the storage
|
||||
m_nativeHandle.move_storage(newPath.toUtf8().constData());
|
||||
m_oldPath = oldPath;
|
||||
m_newPath = newPath;
|
||||
}
|
||||
catch (std::exception &exc) {
|
||||
qDebug("torrent_handle::move_storage() throws exception: %s", exc.what());
|
||||
}
|
||||
// Actually move the storage
|
||||
m_nativeHandle.move_storage(newPath.toUtf8().constData());
|
||||
m_oldPath = oldPath;
|
||||
m_newPath = newPath;
|
||||
}
|
||||
}
|
||||
|
||||
void TorrentHandle::setTrackerLogin(const QString &username, const QString &password)
|
||||
{
|
||||
SAFE_CALL(set_tracker_login, std::string(username.toLocal8Bit().constData()), std::string(password.toLocal8Bit().constData()));
|
||||
m_nativeHandle.set_tracker_login(std::string(username.toLocal8Bit().constData())
|
||||
, std::string(password.toLocal8Bit().constData()));
|
||||
}
|
||||
|
||||
void TorrentHandle::renameFile(int index, const QString &name)
|
||||
{
|
||||
++m_renameCount;
|
||||
qDebug() << Q_FUNC_INFO << index << name;
|
||||
SAFE_CALL(rename_file, index, Utils::String::toStdString(Utils::Fs::toNativePath(name)));
|
||||
m_nativeHandle.rename_file(index, Utils::String::toStdString(Utils::Fs::toNativePath(name)));
|
||||
}
|
||||
|
||||
bool TorrentHandle::saveTorrentFile(const QString &path)
|
||||
@@ -1359,8 +1303,7 @@ bool TorrentHandle::saveTorrentFile(const QString &path)
|
||||
|
||||
void TorrentHandle::setFilePriority(int index, int priority)
|
||||
{
|
||||
std::vector<int> priorities;
|
||||
SAFE_GET(priorities, file_priorities);
|
||||
std::vector<int> priorities = m_nativeHandle.file_priorities();
|
||||
|
||||
if ((priorities.size() > static_cast<quint64>(index)) && (priorities[index] != priority)) {
|
||||
priorities[index] = priority;
|
||||
@@ -1805,10 +1748,7 @@ bool TorrentHandle::useTempPath() const
|
||||
|
||||
void TorrentHandle::updateStatus()
|
||||
{
|
||||
libt::torrent_status status;
|
||||
SAFE_GET(status, status);
|
||||
|
||||
updateStatus(status);
|
||||
updateStatus(m_nativeHandle.status());
|
||||
}
|
||||
|
||||
void TorrentHandle::updateStatus(const libtorrent::torrent_status &nativeStatus)
|
||||
@@ -1835,24 +1775,24 @@ void TorrentHandle::setRatioLimit(qreal limit)
|
||||
|
||||
void TorrentHandle::setUploadLimit(int limit)
|
||||
{
|
||||
SAFE_CALL(set_upload_limit, limit)
|
||||
m_nativeHandle.set_upload_limit(limit);
|
||||
}
|
||||
|
||||
void TorrentHandle::setDownloadLimit(int limit)
|
||||
{
|
||||
SAFE_CALL(set_download_limit, limit)
|
||||
m_nativeHandle.set_download_limit(limit);
|
||||
}
|
||||
|
||||
void TorrentHandle::setSuperSeeding(bool enable)
|
||||
{
|
||||
SAFE_CALL(super_seeding, enable)
|
||||
m_nativeHandle.super_seeding(enable);
|
||||
if (superSeeding() != enable)
|
||||
updateStatus();
|
||||
}
|
||||
|
||||
void TorrentHandle::flushCache()
|
||||
{
|
||||
SAFE_CALL(flush_cache)
|
||||
m_nativeHandle.flush_cache();
|
||||
}
|
||||
|
||||
QString TorrentHandle::toMagnetUri() const
|
||||
@@ -1880,7 +1820,7 @@ void TorrentHandle::prioritizeFiles(const QVector<int> &priorities)
|
||||
}
|
||||
|
||||
qDebug() << Q_FUNC_INFO << "Changing files priorities...";
|
||||
SAFE_CALL(prioritize_files, priorities.toStdVector());
|
||||
m_nativeHandle.prioritize_files(priorities.toStdVector());
|
||||
|
||||
qDebug() << Q_FUNC_INFO << "Moving unwanted files to .unwanted folder and conversely...";
|
||||
QString spath = savePath(true);
|
||||
|
||||
@@ -28,14 +28,18 @@
|
||||
* exception statement from your version.
|
||||
*/
|
||||
|
||||
#include "server.h"
|
||||
|
||||
#include <QNetworkProxy>
|
||||
#include <QStringList>
|
||||
|
||||
#ifndef QT_NO_OPENSSL
|
||||
#include <QSslSocket>
|
||||
#else
|
||||
#include <QTcpSocket>
|
||||
#endif
|
||||
#include <QNetworkProxy>
|
||||
|
||||
#include "connection.h"
|
||||
#include "server.h"
|
||||
|
||||
using namespace Http;
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ void DNSUpdater::checkPublicIP()
|
||||
|
||||
DownloadHandler *handler = DownloadManager::instance()->downloadUrl(
|
||||
"http://checkip.dyndns.org", false, 0, false,
|
||||
QString("qBittorrent/%1").arg(VERSION));
|
||||
"qBittorrent/" QBT_VERSION_2);
|
||||
connect(handler, SIGNAL(downloadFinished(QString, QByteArray)), SLOT(ipRequestFinished(QString, QByteArray)));
|
||||
connect(handler, SIGNAL(downloadFailed(QString, QString)), SLOT(ipRequestFailed(QString, QString)));
|
||||
|
||||
@@ -127,7 +127,7 @@ void DNSUpdater::updateDNSService()
|
||||
m_lastIPCheckTime = QDateTime::currentDateTime();
|
||||
DownloadHandler *handler = DownloadManager::instance()->downloadUrl(
|
||||
getUpdateUrl(), false, 0, false,
|
||||
QString("qBittorrent/%1").arg(VERSION));
|
||||
"qBittorrent/" QBT_VERSION_2);
|
||||
connect(handler, SIGNAL(downloadFinished(QString, QByteArray)), SLOT(ipUpdateFinished(QString, QByteArray)));
|
||||
connect(handler, SIGNAL(downloadFailed(QString, QString)), SLOT(ipUpdateFailed(QString, QString)));
|
||||
}
|
||||
|
||||
75
src/base/utils/random.cpp
Normal file
75
src/base/utils/random.cpp
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2017 Mike Tzou
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* In addition, as a special exception, the copyright holders give permission to
|
||||
* link this program with the OpenSSL project's "OpenSSL" library (or with
|
||||
* modified versions of it that use the same license as the "OpenSSL" library),
|
||||
* and distribute the linked executables. You must obey the GNU General Public
|
||||
* License in all respects for all of the code used other than "OpenSSL". If you
|
||||
* modify file(s), you may extend this exception to your version of the file(s),
|
||||
* but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
* exception statement from your version.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "random.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <chrono>
|
||||
#include <random>
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#include <QThreadStorage>
|
||||
#endif
|
||||
|
||||
// on some platform `std::random_device` may generate the same number sequence
|
||||
static bool hasTrueRandomDevice{ std::random_device{}() != std::random_device{}() };
|
||||
|
||||
uint32_t Utils::Random::rand(const uint32_t min, const uint32_t max)
|
||||
{
|
||||
#ifdef Q_OS_MAC // workaround for Apple xcode: https://stackoverflow.com/a/29929949
|
||||
static QThreadStorage<std::mt19937> generator;
|
||||
if (!generator.hasLocalData())
|
||||
generator.localData().seed(
|
||||
hasTrueRandomDevice
|
||||
? std::random_device{}()
|
||||
: (std::random_device::result_type) std::chrono::system_clock::now().time_since_epoch().count()
|
||||
);
|
||||
#else
|
||||
static thread_local std::mt19937 generator{
|
||||
hasTrueRandomDevice
|
||||
? std::random_device{}()
|
||||
: (std::random_device::result_type) std::chrono::system_clock::now().time_since_epoch().count()
|
||||
};
|
||||
#endif
|
||||
|
||||
// better replacement for `std::rand`, don't use this for real cryptography application
|
||||
// min <= returned_value <= max
|
||||
assert(min <= max);
|
||||
|
||||
// new distribution is cheap: http://stackoverflow.com/a/19036349
|
||||
std::uniform_int_distribution<uint32_t> uniform(min, max);
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
return uniform(generator.localData());
|
||||
#else
|
||||
return uniform(generator);
|
||||
#endif
|
||||
}
|
||||
44
src/base/utils/random.h
Normal file
44
src/base/utils/random.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2017 Mike Tzou
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* In addition, as a special exception, the copyright holders give permission to
|
||||
* link this program with the OpenSSL project's "OpenSSL" library (or with
|
||||
* modified versions of it that use the same license as the "OpenSSL" library),
|
||||
* and distribute the linked executables. You must obey the GNU General Public
|
||||
* License in all respects for all of the code used other than "OpenSSL". If you
|
||||
* modify file(s), you may extend this exception to your version of the file(s),
|
||||
* but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
* exception statement from your version.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef UTILS_RANDOM_H
|
||||
#define UTILS_RANDOM_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
|
||||
namespace Utils
|
||||
{
|
||||
namespace Random
|
||||
{
|
||||
uint32_t rand(uint32_t min = 0, uint32_t max = UINT32_MAX);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // UTILS_FS_H
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <QByteArray>
|
||||
#include <QtGlobal>
|
||||
#include <QLocale>
|
||||
|
||||
#ifdef QBT_USES_QT5
|
||||
#include <QCollator>
|
||||
#endif
|
||||
@@ -217,6 +218,23 @@ QString Utils::String::toHtmlEscaped(const QString &str)
|
||||
#ifdef QBT_USES_QT5
|
||||
return str.toHtmlEscaped();
|
||||
#else
|
||||
return Qt::escape(str);
|
||||
// code from Qt
|
||||
QString rich;
|
||||
const int len = str.length();
|
||||
rich.reserve(int(len * 1.1));
|
||||
for (int i = 0; i < len; ++i) {
|
||||
if (str.at(i) == QLatin1Char('<'))
|
||||
rich += QLatin1String("<");
|
||||
else if (str.at(i) == QLatin1Char('>'))
|
||||
rich += QLatin1String(">");
|
||||
else if (str.at(i) == QLatin1Char('&'))
|
||||
rich += QLatin1String("&");
|
||||
else if (str.at(i) == QLatin1Char('"'))
|
||||
rich += QLatin1String(""");
|
||||
else
|
||||
rich += str.at(i);
|
||||
}
|
||||
rich.squeeze();
|
||||
return rich;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -47,7 +47,11 @@ public:
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
||||
// Title
|
||||
lb_name->setText("<b><h2>qBittorrent " VERSION "</h2></b>");
|
||||
#if defined(__x86_64__) || defined(_M_X64)
|
||||
lb_name->setText("<b><h2>qBittorrent " QBT_VERSION " (64-bit)</h2></b>");
|
||||
#else
|
||||
lb_name->setText("<b><h2>qBittorrent " QBT_VERSION " (32-bit)</h2></b>");
|
||||
#endif
|
||||
|
||||
// About
|
||||
QString aboutText = QString(
|
||||
|
||||
@@ -211,7 +211,7 @@ QVariant CategoryFilterModel::data(const QModelIndex &index, int role) const
|
||||
}
|
||||
|
||||
if ((index.column() == 0) && (role == Qt::DisplayRole)) {
|
||||
return QString(QStringLiteral("%1 (%2)"))
|
||||
return QString(QStringLiteral("%1 (%2)"))
|
||||
.arg(item->name()).arg(item->torrentsCount());
|
||||
}
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
Preferences *const pref = Preferences::instance();
|
||||
m_uiLocked = pref->isUILocked();
|
||||
setWindowTitle("qBittorrent " VERSION);
|
||||
setWindowTitle("qBittorrent " QBT_VERSION);
|
||||
m_displaySpeedInTitle = pref->speedInTitleBar();
|
||||
// Setting icons
|
||||
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC))
|
||||
@@ -1332,7 +1332,7 @@ void MainWindow::updateGUI()
|
||||
setWindowTitle(tr("[D: %1, U: %2] qBittorrent %3", "D = Download; U = Upload; %3 is qBittorrent version")
|
||||
.arg(Utils::Misc::friendlyUnit(status.payloadDownloadRate(), true))
|
||||
.arg(Utils::Misc::friendlyUnit(status.payloadUploadRate(), true))
|
||||
.arg(VERSION));
|
||||
.arg(QBT_VERSION));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1495,7 +1495,7 @@ void MainWindow::on_actionSpeedInTitleBar_triggered()
|
||||
if (m_displaySpeedInTitle)
|
||||
updateGUI();
|
||||
else
|
||||
setWindowTitle("qBittorrent " VERSION);
|
||||
setWindowTitle("qBittorrent " QBT_VERSION);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionRSSReader_triggered()
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
#include "base/torrentfileguard.h"
|
||||
#include "base/unicodestrings.h"
|
||||
#include "base/utils/fs.h"
|
||||
#include "base/utils/random.h"
|
||||
#include "addnewtorrentdialog.h"
|
||||
#include "advancedsettings.h"
|
||||
#include "guiiconprovider.h"
|
||||
@@ -1002,7 +1003,7 @@ int OptionsDialog::getPort() const
|
||||
void OptionsDialog::on_randomButton_clicked()
|
||||
{
|
||||
// Range [1024: 65535]
|
||||
m_ui->spinPort->setValue(rand() % 64512 + 1024);
|
||||
m_ui->spinPort->setValue(Utils::Random::rand(1024, 65535));
|
||||
}
|
||||
|
||||
int OptionsDialog::getEncryptionSetting() const
|
||||
|
||||
@@ -66,7 +66,7 @@ void ProgramUpdater::checkForUpdates()
|
||||
RSS_URL, false, 0, false,
|
||||
// Don't change this User-Agent. In case our updater goes haywire,
|
||||
// the filehost can identify it and contact us.
|
||||
QString("qBittorrent/%1 ProgramUpdater (www.qbittorrent.org)").arg(VERSION));
|
||||
"qBittorrent/" QBT_VERSION_2 " ProgramUpdater (www.qbittorrent.org)");
|
||||
connect(handler, SIGNAL(downloadFinished(QString,QByteArray)), SLOT(rssDownloadFinished(QString,QByteArray)));
|
||||
connect(handler, SIGNAL(downloadFailed(QString,QString)), SLOT(rssDownloadFailed(QString,QString)));
|
||||
}
|
||||
@@ -137,9 +137,9 @@ void ProgramUpdater::updateProgram()
|
||||
bool ProgramUpdater::isVersionMoreRecent(const QString &remoteVersion) const
|
||||
{
|
||||
QRegExp regVer("([0-9.]+)");
|
||||
if (regVer.indexIn(QString(VERSION)) >= 0) {
|
||||
if (regVer.indexIn(QBT_VERSION) >= 0) {
|
||||
QString localVersion = regVer.cap(1);
|
||||
qDebug() << Q_FUNC_INFO << "local version:" << localVersion << "/" << VERSION;
|
||||
qDebug() << Q_FUNC_INFO << "local version:" << localVersion << "/" << QBT_VERSION;
|
||||
QStringList remoteParts = remoteVersion.split('.');
|
||||
QStringList localParts = localVersion.split('.');
|
||||
for (int i = 0; i<qMin(remoteParts.size(), localParts.size()); ++i) {
|
||||
@@ -153,7 +153,7 @@ bool ProgramUpdater::isVersionMoreRecent(const QString &remoteVersion) const
|
||||
return true;
|
||||
// versions are equal, check if the local version is a development release, in which case it is older (2.9.2beta < 2.9.2)
|
||||
QRegExp regDevel("(alpha|beta|rc)");
|
||||
if (regDevel.indexIn(VERSION) >= 0)
|
||||
if (regDevel.indexIn(QBT_VERSION) >= 0)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "transferlistwidget.h"
|
||||
#include "base/bittorrent/session.h"
|
||||
#include "base/bittorrent/torrenthandle.h"
|
||||
#include "base/logger.h"
|
||||
#include "base/torrentfilter.h"
|
||||
#include "transferlistdelegate.h"
|
||||
#include "previewselect.h"
|
||||
@@ -260,12 +261,14 @@ void TransferListWidget::setSelectedTorrentsLocation()
|
||||
|
||||
const QString newLocation = QFileDialog::getExistingDirectory(this, tr("Choose save path"), oldLocation,
|
||||
QFileDialog::DontConfirmOverwrite | QFileDialog::ShowDirsOnly | QFileDialog::HideNameFilterDetails);
|
||||
if (!QDir(newLocation).exists()) return;
|
||||
if (newLocation.isEmpty() || !QDir(newLocation).exists()) return;
|
||||
qDebug("New location is %s", qPrintable(newLocation));
|
||||
|
||||
// Actually move storage
|
||||
foreach (BitTorrent::TorrentHandle *const torrent, torrents)
|
||||
foreach (BitTorrent::TorrentHandle *const torrent, torrents) {
|
||||
Logger::instance()->addMessage(tr("Set location: moving \"%1\", from \"%2\" to \"%3\"", "Set location: moving \"ubuntu_16_04.iso\", from \"/home/dir1\" to \"/home/dir2\"").arg(torrent->name()).arg(torrent->savePath()).arg(newLocation));
|
||||
torrent->move(Utils::Fs::expandPathAbs(newLocation));
|
||||
}
|
||||
}
|
||||
|
||||
void TransferListWidget::pauseAllTorrents()
|
||||
|
||||
@@ -10,18 +10,33 @@ Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=false
|
||||
StartupWMClass=qbittorrent
|
||||
Keywords=bittorrent;torrent;magnet;download;p2p;
|
||||
|
||||
# Translations
|
||||
Comment[oc]=Telecargar e partejar de fichièrs amb BitTorrent
|
||||
GenericName[oc]=Client BitTorrent
|
||||
Name[oc]=qBittorrent
|
||||
Comment[af]=Aflaai en deel lêers oor BitTorrent
|
||||
GenericName[af]=BitTorrent kliënt
|
||||
Name[af]=qBittorrent
|
||||
Comment[ar]=نزّل وشارك الملفات عبر كيوبتتورنت
|
||||
GenericName[ar]=عميل بت تورنت
|
||||
GenericName[ar]=عميل بتتورنت
|
||||
Name[ar]=كيوبتتورنت
|
||||
Comment[be]=Сцягванне і раздача файлаў праз пратакол BitTorrent
|
||||
GenericName[be]=BitTorrent-кліент
|
||||
Name[be]=qBittorrent
|
||||
GenericName[bg]=Торент клиент
|
||||
Comment[bn]=ডাউনলোড করুন এবং ফাইল শেয়ার করুন
|
||||
GenericName[bn]=কিউবিটরেন্ট ক্লায়েন্ট
|
||||
Name[bn]=কিউবিটরেন্ট
|
||||
Comment[bg]=Сваляне и споделяне на файлове чрез BitTorrent
|
||||
GenericName[bg]=BitTorrent клиент
|
||||
Name[bg]=qBittorrent
|
||||
Comment[bn]=বিটটরেন্টে ফাইল ডাউনলোড এবং শেয়ার করুন
|
||||
GenericName[bn]=বিটটরেন্ট ক্লায়েন্ট
|
||||
Name[bn]=কিউবি্টটরেন্ট
|
||||
Comment[bs]=Preuzmi i dijeli datoteke preko BitTorrent-a
|
||||
GenericName[bs]=BitTorrent klijent
|
||||
Name[bs]=qBittorrent
|
||||
Comment[ca]=Baixeu i compartiu fitxers mitjançant BitTorrent
|
||||
GenericName[ca]=Client de BitTorrent
|
||||
Name[ca]=qBittorrent
|
||||
Comment[cs]=Stahování a sdílení souborů přes síť BitTorrent
|
||||
GenericName[cs]=BitTorrent klient
|
||||
Name[cs]=qBittorrent
|
||||
@@ -31,8 +46,8 @@ Name[da]=qBittorrent
|
||||
Comment[de]=Über BitTorrent Dateien herunterladen und teilen
|
||||
GenericName[de]=BitTorrent Client
|
||||
Name[de]=qBittorrent
|
||||
Comment[el]=Λήψη και διαμοιρασμός αρχείων μέσω BitTorrent
|
||||
GenericName[el]=BitTorrent πελάτης
|
||||
Comment[el]=Κάντε λήψη και ανταλάξτε αρχεία μέσω BitTorrent
|
||||
GenericName[el]=Πελάτης BitTorrent
|
||||
Name[el]=qBittorrent
|
||||
Comment[en_GB]=Download and share files over BitTorrent
|
||||
GenericName[en_GB]=BitTorrent client
|
||||
@@ -43,19 +58,36 @@ Name[es]=qBittorrent
|
||||
Comment[eu]=Jeitsi eta elkarbanatu agiriak BitTorrent-en
|
||||
GenericName[eu]=BitTorrent bezeroa
|
||||
Name[eu]=qBittorrent
|
||||
Comment[fa]=دانلود و به اشتراک گذاری فایل های بوسیله بیت تورنت
|
||||
GenericName[fa]=بیت تورنت نسخه کلاینت
|
||||
Name[fa]=کیو بیت تورنت
|
||||
Comment[fi]=Lataa ja jaa tiedostoja BitTorrentia käyttäen
|
||||
GenericName[fi]=BitTorrent-ohjelma
|
||||
GenericName[fi]=BitTorrent-asiakasohjelma
|
||||
Name[fi]=qBittorrent
|
||||
Comment[fr]=Télécharger et partager des fichiers avec BitTorrent
|
||||
GenericName[fr]=Client BitTorrent
|
||||
Name[fr]=qBittorrent
|
||||
Comment[gl]=Descargue e comparta ficheiros co protocolo BitTorrent
|
||||
Comment[gl]=Descargar e compartir ficheiros co protocolo BitTorrent
|
||||
GenericName[gl]=Cliente BitTorrent
|
||||
Name[gl]=qBittorrent
|
||||
Comment[gu]=બિટ્ટોરેંટ પર ફાઈલો ડાઉનલોડ અને શેર કરો
|
||||
GenericName[gu]=બિટ્ટોરેંટ ક્લાયન્ટ
|
||||
Name[gu]=ક્યૂ-બિટ્ટોરેંટ
|
||||
Comment[he]=הורד ושתף קבצים על גבי ביטורנט
|
||||
GenericName[he]=לקוח ביטורנט
|
||||
Name[he]=qBittorrent
|
||||
Comment[hr]=Preuzmite i dijelite datoteke putem BitTorrenta
|
||||
GenericName[hr]=BitTorrent klijent
|
||||
Name[hr]=qBittorrent
|
||||
Comment[hu]=Fájlok letöltése és megosztása a BitTorrent hálózaton keresztül
|
||||
GenericName[hu]=BitTorrent kliens
|
||||
Name[hu]=qBittorrent
|
||||
Comment[id]=Unduh dan berbagi berkas melalui BitTorrent
|
||||
GenericName[id]=Klien BitTorrent
|
||||
Name[id]=qBittorrent
|
||||
Comment[is]=Sækja og deila skrám yfir BitTorrent
|
||||
GenericName[is]=BitTorrent biðlarar
|
||||
Name[is]=qBittorrent
|
||||
Comment[it]=Client BitTorrent per il download di file via internet
|
||||
GenericName[it]=Client BitTorrent
|
||||
Name[it]=qBittorrent
|
||||
@@ -65,9 +97,9 @@ Name[ja]=qBittorrent
|
||||
Comment[ka]=ჩამოტვირთე და გააზიარე ფაილები Bittorrent-ის საშუალებით
|
||||
GenericName[ka]=BitTorrent კლიენტი
|
||||
Name[ka]=qBittorrent
|
||||
Comment[ko]=비트 토렌트를 통해 파일을 다운로드하고 공유합니다
|
||||
GenericName[ko]=비트 토렌트 클라이언트
|
||||
Name[ko]=큐빗 토렌트
|
||||
Comment[ko]=비트토런트를 통해 파일을 다운로드하고 공유합니다
|
||||
GenericName[ko]=비트토런트 클라이언트
|
||||
Name[ko]=큐빗토런트
|
||||
Comment[zh]=通过 BitTorrent 下载和分享文件
|
||||
GenericName[zh]=BitTorrent 客户端
|
||||
Name[zh]=qBittorrent
|
||||
@@ -87,16 +119,16 @@ Comment[pl]=Pobieraj i dziel się plikami przez BitTorrent
|
||||
GenericName[pl]=Klient BitTorrent
|
||||
Name[pl]=qBittorrent
|
||||
Comment[pt]=Transferir e partilhar ficheiros por BitTorrent
|
||||
GenericName[pt]=Aplicação BitTorrent
|
||||
GenericName[pt]=Cliente BitTorrent
|
||||
Name[pt]=qBittorrent
|
||||
Comment[pt_BR]=Baixe e compartilhe arquivos através do qBittorrent
|
||||
Comment[pt_BR]=Baixe e compartilhe arquivos por BitTorrent
|
||||
GenericName[pt_BR]=Cliente BitTorrent
|
||||
Name[pt_BR]=qBittorrent
|
||||
Comment[ro]=Descărcați și partajați fișiere prin BitTorrent
|
||||
GenericName[ro]=Client BitTorrent
|
||||
Name[ro]=qBittorrent
|
||||
Comment[ru]=Скачивайте и делитесь файлами с помощью BitTorrent
|
||||
GenericName[ru]=клиент BitTorrent
|
||||
GenericName[ru]=BitTorrent-клиент
|
||||
Name[ru]=qBittorrent
|
||||
Comment[sk]=Sťahovanie a zdieľanie súborov prostredníctvom siete BitTorrent
|
||||
GenericName[sk]=Klient siete BitTorrent
|
||||
@@ -105,13 +137,22 @@ Comment[sl]=Prenesite in delite datoteke preko BitTorrenta
|
||||
GenericName[sl]=BitTorrent odjemalec
|
||||
Name[sl]=qBittorrent
|
||||
GenericName[sr]=BitTorrent-клијент
|
||||
Comment[sr@latin]=Preuzimanje i deljenje fajlova preko BitTorrent-a
|
||||
GenericName[sr@latin]=BitTorrent klijent
|
||||
Name[sr@latin]=qBittorrent
|
||||
Comment[sv]=Hämta och dela filer över BitTorrent
|
||||
GenericName[sv]=BitTorrent-klient
|
||||
Name[sv]=qBittorrent
|
||||
Comment[uz@Latn]=BitTorrent orqali fayllarni yuklab olish va baham ko‘rish
|
||||
GenericName[uz@Latn]=BitTorrent mijozi
|
||||
Name[uz@Latn]=qBittorrent
|
||||
Comment[te]=క్యు బిట్ టొరెంట్ తో ఫైల్స్ దిగుమతి చేసుకోండి , పంచుకోండి
|
||||
GenericName[te]=క్యు బిట్ టొరెంట్ క్లయింట్
|
||||
Name[te]=క్యు బిట్ టొరెంట్
|
||||
Comment[hi_IN]= अपनी फाइलें BitTorrent के माध्यम से डाउनलोड आैर साॅझा करें
|
||||
GenericName[hi_IN]=BitTorrent उपभोक्ता
|
||||
Name[hi_IN]=qBittorrent
|
||||
Comment[tr]=Dosyaları BitTorrent üzerinden indir ve paylaş
|
||||
Comment[tr]=Dosyaları BitTorrent üzerinden indirin ve paylaşın
|
||||
GenericName[tr]=BitTorrent istemcisi
|
||||
Name[tr]=qBittorrent
|
||||
Comment[uk]=Завантажувати і обмінюватися файлами через BitTorrent
|
||||
@@ -120,9 +161,30 @@ Name[uk]=qBittorrent
|
||||
Comment[vi]=Tải về và chia sẻ các tập tin thông qua BitTorrent
|
||||
GenericName[vi]=Máy trạm dạng BitTorrent
|
||||
Name[vi]=qBittorrent
|
||||
Comment[zh_HK]=經由BitTorrent下載並分享檔案
|
||||
GenericName[zh_HK]=BitTorrent用戶端
|
||||
Name[zh_HK]=qBittorrent
|
||||
Comment[zh_TW]=經由 BitTorrent 下載並分享檔案
|
||||
GenericName[zh_TW]=BitTorrent 客戶端
|
||||
Name[zh_TW]=qBittorrent
|
||||
Comment[lv_LV]=Lejupielādēt un koplietot failus ar BitTorrent
|
||||
GenericName[lv_LV]=BitTorrent klients
|
||||
Name[lv_LV]=qBittorrent
|
||||
Comment[ms_MY]=Muat turun dan kongsi fail melalui BitTorrent
|
||||
GenericName[ms_MY]=Klien BitTorrent
|
||||
Name[ms_MY]=qBittorrent
|
||||
Comment[eo]=Elŝutu kaj kunhavigu dosierojn per BitTorrent
|
||||
GenericName[eo]=BitTorrent-kliento
|
||||
Name[eo]=qBittorrent
|
||||
Comment[mn_MN]=BitTorrent ашиглан файлуудыг татаж түгээх
|
||||
GenericName[mn_MN]=BitTorrent үйлчлүүлэгч
|
||||
Name[mn_MN]=qBittorrent
|
||||
Comment[ne_NP]=फाइलहरू डाउनलोड गर्नुहोस् र BitTorrent मा साझा गर्नुहोस्
|
||||
GenericName[ne_NP]=BitTorrent क्लाइन्ट
|
||||
Name[ne_NP]=qBittorrent
|
||||
Comment[en_AU]=Download and share files over BitTorrent
|
||||
GenericName[en_AU]=BitTorrent client
|
||||
Name[en_AU]=qBittorrent
|
||||
Comment[th]=ดาว์นโหลดและแชร์ไฟล์ด้วยบิททอเร้น
|
||||
GenericName[th]=โปรแกรมบิททอเร้น
|
||||
Name[th]=qBittorrent
|
||||
|
||||
@@ -1,8 +1,39 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
|
||||
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*' />
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
</assembly>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0">
|
||||
<!-- Enable use of version 6 of the common controls (Win XP and later) -->
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*" />
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
|
||||
<!-- Indicate UAC compliance, with no need for elevated privileges (Win Vista and later) -->
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<!-- Declare support for various versions of Windows -->
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
||||
|
||||
Binary file not shown.
@@ -26,6 +26,8 @@
|
||||
* exception statement from your version.
|
||||
*/
|
||||
|
||||
#include "abstractwebapplication.h"
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
@@ -37,8 +39,8 @@
|
||||
|
||||
#include "base/preferences.h"
|
||||
#include "base/utils/fs.h"
|
||||
#include "base/utils/random.h"
|
||||
#include "websessiondata.h"
|
||||
#include "abstractwebapplication.h"
|
||||
|
||||
// UnbanTimer
|
||||
|
||||
@@ -85,8 +87,8 @@ AbstractWebApplication::AbstractWebApplication(QObject *parent)
|
||||
, session_(0)
|
||||
{
|
||||
QTimer *timer = new QTimer(this);
|
||||
timer->setInterval(60000); // 1 min.
|
||||
connect(timer, SIGNAL(timeout()), SLOT(removeInactiveSessions()));
|
||||
timer->start(60 * 1000); // 1 min.
|
||||
}
|
||||
|
||||
AbstractWebApplication::~AbstractWebApplication()
|
||||
@@ -204,7 +206,7 @@ bool AbstractWebApplication::readFile(const QString& path, QByteArray &data, QSt
|
||||
translateDocument(dataStr);
|
||||
|
||||
if (path.endsWith("about.html") || path.endsWith("index.html") || path.endsWith("client.js"))
|
||||
dataStr.replace("${VERSION}", VERSION);
|
||||
dataStr.replace("${VERSION}", QBT_VERSION);
|
||||
|
||||
data = dataStr.toUtf8();
|
||||
translatedFiles_[path] = data; // cashing translated file
|
||||
@@ -226,13 +228,12 @@ QString AbstractWebApplication::generateSid()
|
||||
{
|
||||
QString sid;
|
||||
|
||||
qsrand(QDateTime::currentDateTime().toTime_t());
|
||||
do {
|
||||
const size_t size = 6;
|
||||
quint32 tmp[size];
|
||||
|
||||
for (size_t i = 0; i < size; ++i)
|
||||
tmp[i] = qrand();
|
||||
tmp[i] = Utils::Random::rand();
|
||||
|
||||
sid = QByteArray::fromRawData(reinterpret_cast<const char *>(tmp), sizeof(quint32) * size).toBase64();
|
||||
}
|
||||
@@ -361,6 +362,7 @@ bool AbstractWebApplication::sessionStart()
|
||||
sessions_[session_->id] = session_;
|
||||
|
||||
QNetworkCookie cookie(C_SID, session_->id.toUtf8());
|
||||
cookie.setHttpOnly(true);
|
||||
cookie.setPath(QLatin1String("/"));
|
||||
header(Http::HEADER_SET_COOKIE, cookie.toRawForm());
|
||||
|
||||
@@ -373,9 +375,9 @@ bool AbstractWebApplication::sessionStart()
|
||||
bool AbstractWebApplication::sessionEnd()
|
||||
{
|
||||
if ((session_ != 0) && (sessions_.contains(session_->id))) {
|
||||
QNetworkCookie cookie(C_SID, session_->id.toUtf8());
|
||||
QNetworkCookie cookie(C_SID);
|
||||
cookie.setPath(QLatin1String("/"));
|
||||
cookie.setExpirationDate(QDateTime::currentDateTime());
|
||||
cookie.setExpirationDate(QDateTime::currentDateTime().addDays(-1));
|
||||
|
||||
sessions_.remove(session_->id);
|
||||
delete session_;
|
||||
|
||||
@@ -29,12 +29,13 @@
|
||||
#ifndef ABSTRACTWEBAPPLICATION_H
|
||||
#define ABSTRACTWEBAPPLICATION_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QMap>
|
||||
#include <QHash>
|
||||
#include "base/http/types.h"
|
||||
#include "base/http/responsebuilder.h"
|
||||
#include <QMap>
|
||||
#include <QObject>
|
||||
|
||||
#include "base/http/irequesthandler.h"
|
||||
#include "base/http/responsebuilder.h"
|
||||
#include "base/http/types.h"
|
||||
|
||||
struct WebSession;
|
||||
struct WebSessionData;
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include <QElapsedTimer>
|
||||
#endif
|
||||
|
||||
#include "base/bittorrent/cachestatus.h"
|
||||
#include "base/bittorrent/session.h"
|
||||
#include "base/bittorrent/sessionstatus.h"
|
||||
#include "base/bittorrent/peerinfo.h"
|
||||
@@ -52,6 +53,7 @@
|
||||
#include "base/torrentfilter.h"
|
||||
#include "base/utils/fs.h"
|
||||
#include "base/utils/misc.h"
|
||||
#include "base/utils/string.h"
|
||||
#include "jsonutils.h"
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
|
||||
@@ -119,7 +121,7 @@ static const char KEY_TORRENT_AMOUNT_DOWNLOADED[] = "downloaded";
|
||||
static const char KEY_TORRENT_AMOUNT_UPLOADED[] = "uploaded";
|
||||
static const char KEY_TORRENT_AMOUNT_DOWNLOADED_SESSION[] = "downloaded_session";
|
||||
static const char KEY_TORRENT_AMOUNT_UPLOADED_SESSION[] = "uploaded_session";
|
||||
static const char KEY_TORRENT_AMOUNT_LEFT[] = "remaining";
|
||||
static const char KEY_TORRENT_AMOUNT_LEFT[] = "amount_left";
|
||||
static const char KEY_TORRENT_AMOUNT_COMPLETED[] = "completed";
|
||||
static const char KEY_TORRENT_RATIO_LIMIT[] = "ratio_limit";
|
||||
static const char KEY_TORRENT_LAST_SEEN_COMPLETE_TIME[] = "seen_complete";
|
||||
@@ -204,6 +206,20 @@ static const char KEY_TRANSFER_UPRATELIMIT[] = "up_rate_limit";
|
||||
static const char KEY_TRANSFER_DHT_NODES[] = "dht_nodes";
|
||||
static const char KEY_TRANSFER_CONNECTION_STATUS[] = "connection_status";
|
||||
|
||||
// Statistics keys
|
||||
static const char KEY_TRANSFER_ALLTIME_DL[] = "alltime_dl";
|
||||
static const char KEY_TRANSFER_ALLTIME_UL[] = "alltime_ul";
|
||||
static const char KEY_TRANSFER_TOTAL_WASTE_SESSION[] = "total_wasted_session";
|
||||
static const char KEY_TRANSFER_GLOBAL_RATIO[] = "global_ratio";
|
||||
static const char KEY_TRANSFER_TOTAL_PEER_CONNECTIONS[] = "total_peer_connections";
|
||||
static const char KEY_TRANSFER_READ_CACHE_HITS[] = "read_cache_hits";
|
||||
static const char KEY_TRANSFER_TOTAL_BUFFERS_SIZE[] = "total_buffers_size";
|
||||
static const char KEY_TRANSFER_WRITE_CACHE_OVERLOAD[] = "write_cache_overload";
|
||||
static const char KEY_TRANSFER_READ_CACHE_OVERLOAD[] = "read_cache_overload";
|
||||
static const char KEY_TRANSFER_QUEUED_IO_JOBS[] = "queued_io_jobs";
|
||||
static const char KEY_TRANSFER_AVERAGE_TIME_QUEUE[] = "average_time_queue";
|
||||
static const char KEY_TRANSFER_TOTAL_QUEUED_SIZE[] = "total_queued_size";
|
||||
|
||||
// Sync main data keys
|
||||
static const char KEY_SYNC_MAINDATA_QUEUEING[] = "queueing";
|
||||
static const char KEY_SYNC_MAINDATA_USE_ALT_SPEED_LIMITS[] = "use_alt_speed_limits";
|
||||
@@ -711,12 +727,37 @@ QVariantMap getTranserInfoMap()
|
||||
{
|
||||
QVariantMap map;
|
||||
BitTorrent::SessionStatus sessionStatus = BitTorrent::Session::instance()->status();
|
||||
BitTorrent::CacheStatus cacheStatus = BitTorrent::Session::instance()->cacheStatus();
|
||||
map[KEY_TRANSFER_DLSPEED] = sessionStatus.payloadDownloadRate();
|
||||
map[KEY_TRANSFER_DLDATA] = sessionStatus.totalPayloadDownload();
|
||||
map[KEY_TRANSFER_UPSPEED] = sessionStatus.payloadUploadRate();
|
||||
map[KEY_TRANSFER_UPDATA] = sessionStatus.totalPayloadUpload();
|
||||
map[KEY_TRANSFER_DLRATELIMIT] = BitTorrent::Session::instance()->downloadSpeedLimit();
|
||||
map[KEY_TRANSFER_UPRATELIMIT] = BitTorrent::Session::instance()->uploadSpeedLimit();
|
||||
|
||||
quint64 atd = BitTorrent::Session::instance()->getAlltimeDL();
|
||||
quint64 atu = BitTorrent::Session::instance()->getAlltimeUL();
|
||||
map[KEY_TRANSFER_ALLTIME_DL] = atd;
|
||||
map[KEY_TRANSFER_ALLTIME_UL] = atu;
|
||||
map[KEY_TRANSFER_TOTAL_WASTE_SESSION] = sessionStatus.totalWasted();
|
||||
map[KEY_TRANSFER_GLOBAL_RATIO] = ( atd > 0 && atu > 0 ) ? Utils::String::fromDouble((qreal)atu / (qreal)atd, 2) : "-";
|
||||
map[KEY_TRANSFER_TOTAL_PEER_CONNECTIONS] = sessionStatus.peersCount();
|
||||
|
||||
qreal readRatio = cacheStatus.readRatio();
|
||||
map[KEY_TRANSFER_READ_CACHE_HITS] = (readRatio >= 0) ? Utils::String::fromDouble(100 * readRatio, 2) : "-";
|
||||
map[KEY_TRANSFER_TOTAL_BUFFERS_SIZE] = cacheStatus.totalUsedBuffers() * 16 * 1024;
|
||||
|
||||
// num_peers is not reliable (adds up peers, which didn't even overcome tcp handshake)
|
||||
quint32 peers = 0;
|
||||
foreach (BitTorrent::TorrentHandle *const torrent, BitTorrent::Session::instance()->torrents())
|
||||
peers += torrent->peersCount();
|
||||
map[KEY_TRANSFER_WRITE_CACHE_OVERLOAD] = ((sessionStatus.diskWriteQueue() > 0) && (peers > 0)) ? Utils::String::fromDouble((100. * sessionStatus.diskWriteQueue()) / peers, 2) : "0";
|
||||
map[KEY_TRANSFER_READ_CACHE_OVERLOAD] = ((sessionStatus.diskReadQueue() > 0) && (peers > 0)) ? Utils::String::fromDouble((100. * sessionStatus.diskReadQueue()) / peers, 2) : "0";
|
||||
|
||||
map[KEY_TRANSFER_QUEUED_IO_JOBS] = cacheStatus.jobQueueLength();
|
||||
map[KEY_TRANSFER_AVERAGE_TIME_QUEUE] = cacheStatus.averageJobTime();
|
||||
map[KEY_TRANSFER_TOTAL_QUEUED_SIZE] = cacheStatus.queuedBytes();
|
||||
|
||||
map[KEY_TRANSFER_DHT_NODES] = sessionStatus.dhtNodes();
|
||||
if (!BitTorrent::Session::instance()->isListening())
|
||||
map[KEY_TRANSFER_CONNECTION_STATUS] = "disconnected";
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
#include "websessiondata.h"
|
||||
#include "webapplication.h"
|
||||
|
||||
static const int API_VERSION = 12;
|
||||
static const int API_VERSION_MIN = 11;
|
||||
static const int API_VERSION = 13;
|
||||
static const int API_VERSION_MIN = 13;
|
||||
|
||||
const QString WWW_FOLDER = ":/www/public/";
|
||||
const QString PRIVATE_FOLDER = ":/www/private/";
|
||||
@@ -348,7 +348,7 @@ void WebApplication::action_version_api_min()
|
||||
void WebApplication::action_version_qbittorrent()
|
||||
{
|
||||
CHECK_URI(0);
|
||||
print(QString(VERSION), Http::CONTENT_TYPE_TXT);
|
||||
print(QString(QBT_VERSION), Http::CONTENT_TYPE_TXT);
|
||||
}
|
||||
|
||||
void WebApplication::action_command_shutdown()
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
<file>www/public/scripts/prop-trackers.js</file>
|
||||
<file>www/public/scripts/prop-webseeds.js</file>
|
||||
<file>www/public/scripts/prop-files.js</file>
|
||||
<file>www/public/statistics.html</file>
|
||||
<file>www/public/transferlist.html</file>
|
||||
<file>www/public/upload.html</file>
|
||||
<file>www/public/uploadlimit.html</file>
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
<ul>
|
||||
<li><a id="showTopToolbarLink"><img class="MyMenuIcon" src="theme/checked" alt="QBT_TR(&Top Toolbar)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Top Toolbar)QBT_TR</a></li>
|
||||
<li><a id="speedInBrowserTitleBarLink"><img class="MyMenuIcon" src="theme/checked" alt="QBT_TR(S&peed in Title Bar)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(S&peed in Title Bar)QBT_TR</a></li>
|
||||
<li><a id=StatisticsLink ><img class="MyMenuIcon" src="theme/view-statistics" alt="QBT_TR(&About)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Statistics)QBT_TR</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
||||
@@ -367,6 +367,23 @@ window.addEvent('load', function () {
|
||||
}else
|
||||
document.title = "qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR";
|
||||
$('DHTNodes').set('html', 'QBT_TR(DHT: %1 nodes)QBT_TR'.replace("%1", serverState.dht_nodes));
|
||||
|
||||
<!-- Statistics dialog -->
|
||||
if (document.getElementById("statisticspage")) {
|
||||
$('AlltimeDL').set('html', 'Alltime download: %1'.replace("%1", friendlyUnit(serverState.alltime_dl, false)));
|
||||
$('AlltimeUL').set('html', 'Alltime upload: %1'.replace("%1", friendlyUnit(serverState.alltime_ul, false)));
|
||||
$('TotalWastedSession').set('html', 'Total wasted (this session): %1'.replace("%1", friendlyUnit(serverState.total_wasted_session, false)));
|
||||
$('GlobalRatio').set('html', 'Global ratio: %1'.replace("%1", serverState.global_ratio ));
|
||||
$('TotalPeerConnections').set('html', 'Total peer connections: %1'.replace("%1", serverState.total_peer_connections ));
|
||||
$('ReadCacheHits').set('html', 'Read cache hits: %1'.replace("%1", serverState.read_cache_hits ));
|
||||
$('TotalBuffersSize').set('html', 'Total buffers size: %1'.replace("%1", friendlyUnit(serverState.total_buffers_size, false)));
|
||||
$('WriteCacheOverload').set('html', 'Write cache overload: %1'.replace("%1", serverState.write_cache_overload ));
|
||||
$('ReadCacheOverload').set('html', 'Read cache overload: %1'.replace("%1", serverState.read_cache_overload ));
|
||||
$('QueuedIOJobs').set('html', 'Queued I/O jobs: %1'.replace("%1", serverState.queued_io_jobs ));
|
||||
$('AverageTimeInQueue').set('html', 'Average time in queue: %1'.replace("%1", serverState.average_time_queue ));
|
||||
$('TotalQueuedSize').set('html', 'Total queued size: %1'.replace("%1", friendlyUnit(serverState.total_queued_size, false) ));
|
||||
}
|
||||
|
||||
if (serverState.connection_status == "connected")
|
||||
$('connectionStatus').src = 'images/skin/connected.png';
|
||||
else if (serverState.connection_status == "firewalled")
|
||||
@@ -451,6 +468,8 @@ window.addEvent('load', function () {
|
||||
processServerState();
|
||||
});
|
||||
|
||||
$('StatisticsLink').addEvent('click', StatisticsLinkFN);
|
||||
|
||||
new MochaUI.Panel({
|
||||
id : 'transferList',
|
||||
title : 'Panel',
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
**************************************************************/
|
||||
|
||||
var DynamicTableHeaderContextMenuClass = null;
|
||||
var ProgressColumnWidth = -1;
|
||||
|
||||
var DynamicTable = new Class({
|
||||
|
||||
@@ -851,25 +852,34 @@ var TorrentsTable = new Class({
|
||||
|
||||
if (td.getChildren('div').length) {
|
||||
var div = td.getChildren('div')[0];
|
||||
var newWidth = td.offsetWidth - 5;
|
||||
if (div.lastWidth !== newWidth) {
|
||||
div.setWidth(newWidth);
|
||||
div.lastWidth = newWidth;
|
||||
if (td.resized) {
|
||||
td.resized = false;
|
||||
div.setWidth(ProgressColumnWidth - 5);
|
||||
}
|
||||
if (div.getValue() != progressFormated)
|
||||
div.setValue(progressFormated);
|
||||
}
|
||||
else
|
||||
else {
|
||||
if (ProgressColumnWidth < 0)
|
||||
ProgressColumnWidth = td.offsetWidth;
|
||||
td.adopt(new ProgressBar(progressFormated.toFloat(), {
|
||||
'width' : td.offsetWidth - 5
|
||||
'width' : ProgressColumnWidth - 5
|
||||
}));
|
||||
td.resized = false;
|
||||
}
|
||||
};
|
||||
|
||||
this.columns['progress'].onResize = function (columnName) {
|
||||
var pos = this.getColumnPos(columnName);
|
||||
var trs = this.tableBody.getElements('tr');
|
||||
for (var i = 0; i < trs.length; i++)
|
||||
this.columns[columnName].updateTd(trs[i].getElements('td')[pos], this.rows.get(trs[i].rowId));
|
||||
ProgressColumnWidth = -1;
|
||||
for (var i = 0; i < trs.length; i++) {
|
||||
var td = trs[i].getElements('td')[pos];
|
||||
if (ProgressColumnWidth < 0)
|
||||
ProgressColumnWidth = td.offsetWidth;
|
||||
td.resized = true;
|
||||
this.columns[columnName].updateTd(td, this.rows.get(trs[i].rowId));
|
||||
}
|
||||
}.bind(this);
|
||||
|
||||
// num_seeds
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user