Compare commits
143 Commits
release-3.
...
release-3.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cb5174bfa2 | ||
|
|
9138156968 | ||
|
|
8a0b1fe0be | ||
|
|
3bbe304856 | ||
|
|
0356172a1d | ||
|
|
80f3b19356 | ||
|
|
39a569b438 | ||
|
|
edaa7e85a7 | ||
|
|
f9f7a8cbf2 | ||
|
|
7aef9828c9 | ||
|
|
18ad972936 | ||
|
|
8b5c275934 | ||
|
|
59765954b8 | ||
|
|
f5fff855bb | ||
|
|
26c713851e | ||
|
|
f9b64c4e73 | ||
|
|
edf6c30cd8 | ||
|
|
83860afa60 | ||
|
|
4b7362aa6b | ||
|
|
dd0537d8d2 | ||
|
|
3c50cc1d2c | ||
|
|
78fdb68457 | ||
|
|
bb1bd34ec0 | ||
|
|
1841834c89 | ||
|
|
30b70a99f1 | ||
|
|
f0f2e93e4d | ||
|
|
5852c5e318 | ||
|
|
b38827bb8e | ||
|
|
240046f720 | ||
|
|
78b1194da1 | ||
|
|
c1a66dad51 | ||
|
|
4a10d246c2 | ||
|
|
125ab378a4 | ||
|
|
4cd8a36b40 | ||
|
|
364df2e18c | ||
|
|
f8f2476aa5 | ||
|
|
d685c9739b | ||
|
|
6fdfcf38f1 | ||
|
|
7c85866881 | ||
|
|
37673cd86f | ||
|
|
a4a38d633c | ||
|
|
93bdc81e3c | ||
|
|
827d5a22fb | ||
|
|
34e56eade8 | ||
|
|
4a23e7da37 | ||
|
|
f577a26fe2 | ||
|
|
3f176d8265 | ||
|
|
cbc001e059 | ||
|
|
a66ed05ecd | ||
|
|
ec347d8dbe | ||
|
|
f0acafb853 | ||
|
|
1a12e891ec | ||
|
|
88ba8e2ceb | ||
|
|
2e403277f3 | ||
|
|
89349f60b0 | ||
|
|
0604d3729a | ||
|
|
cf16e3b8a1 | ||
|
|
dcb3496651 | ||
|
|
9d10da3ed2 | ||
|
|
0524deb496 | ||
|
|
787ae43d54 | ||
|
|
67bb2cc150 | ||
|
|
51995c80d1 | ||
|
|
5f43741b09 | ||
|
|
3328d8efd2 | ||
|
|
a54a9e5487 | ||
|
|
0181ca70f4 | ||
|
|
ff665af3f7 | ||
|
|
9275cdc5bf | ||
|
|
b7c3bdd443 | ||
|
|
5fd08f8664 | ||
|
|
84a4d323c7 | ||
|
|
8efb13bfaf | ||
|
|
0187b55610 | ||
|
|
2f606b2728 | ||
|
|
025f75beca | ||
|
|
4711cafd20 | ||
|
|
8d12ca9477 | ||
|
|
67b90bfb51 | ||
|
|
ab05c0c326 | ||
|
|
c5ea453438 | ||
|
|
4f041c16e1 | ||
|
|
28cfee7bd3 | ||
|
|
6272287fbb | ||
|
|
e7a1542902 | ||
|
|
5e371d8195 | ||
|
|
6bb189ea13 | ||
|
|
8496f31e39 | ||
|
|
08f634f748 | ||
|
|
2b5dc5c4a6 | ||
|
|
0a2f0aefb3 | ||
|
|
66e137b8ee | ||
|
|
f9be39545b | ||
|
|
789b8046a2 | ||
|
|
129bf497c8 | ||
|
|
a6d7693d62 | ||
|
|
4e9fbc4da5 | ||
|
|
23f6ff4673 | ||
|
|
3c0dfa6444 | ||
|
|
694311b2bd | ||
|
|
b77626897f | ||
|
|
b8081feac1 | ||
|
|
8b805f4518 | ||
|
|
8bb4f021f1 | ||
|
|
97c79050dc | ||
|
|
ac62a708de | ||
|
|
8d9789f51b | ||
|
|
559d0228fd | ||
|
|
1296e7b891 | ||
|
|
0333e23710 | ||
|
|
7320a80caa | ||
|
|
0579bfc069 | ||
|
|
d20d04299e | ||
|
|
50b2009e9c | ||
|
|
721d29edda | ||
|
|
bc9cae199b | ||
|
|
c38b250667 | ||
|
|
101b2f3ad2 | ||
|
|
9c4f798d93 | ||
|
|
249ff21738 | ||
|
|
f1149097b6 | ||
|
|
111b0df307 | ||
|
|
8041af72cd | ||
|
|
4be6d0b30f | ||
|
|
8c757969f2 | ||
|
|
ae6a82f814 | ||
|
|
eed3f0559a | ||
|
|
c7884e7621 | ||
|
|
2946ab7e7a | ||
|
|
ddb8e4d21a | ||
|
|
00d4f6141f | ||
|
|
7971a25c2a | ||
|
|
ab2411930a | ||
|
|
93f972bfca | ||
|
|
db638844d0 | ||
|
|
ba99eddc91 | ||
|
|
92428cee5d | ||
|
|
2c7d836925 | ||
|
|
7703dcf626 | ||
|
|
157520c4fc | ||
|
|
5bc728fa33 | ||
|
|
35fdc43b3f | ||
|
|
ae6ea29f2f |
14
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
**Please provide the following information**
|
||||||
|
|
||||||
|
### qBittorrent version and Operating System:
|
||||||
|
|
||||||
|
### If on linux, libtorrent and Qt version:
|
||||||
|
|
||||||
|
### What is the problem:
|
||||||
|
|
||||||
|
### What is the expected behavior:
|
||||||
|
|
||||||
|
### Steps to reproduce:
|
||||||
|
|
||||||
|
### Extra info(if any):
|
||||||
|
|
||||||
21
.travis.yml
@@ -17,6 +17,12 @@ env:
|
|||||||
global:
|
global:
|
||||||
- secure: "OI9CUjj4lTb0HwwIZU5PbECU3hLlAL6KC8KsbwohG8/O3j5fLcnmDsK4Ad9us5cC39sS11Jcd1kDP2qRcCuST/glVNhLkcjKkiQerOfd5nQ/qL4JYfz/1mfP5mdpz9jHKzpLUIG+TXkbSTjP6VVmsb5KPT+3pKEdRFZB+Pu9+J8="
|
- secure: "OI9CUjj4lTb0HwwIZU5PbECU3hLlAL6KC8KsbwohG8/O3j5fLcnmDsK4Ad9us5cC39sS11Jcd1kDP2qRcCuST/glVNhLkcjKkiQerOfd5nQ/qL4JYfz/1mfP5mdpz9jHKzpLUIG+TXkbSTjP6VVmsb5KPT+3pKEdRFZB+Pu9+J8="
|
||||||
- coverity_branch: coverity_scan
|
- coverity_branch: coverity_scan
|
||||||
|
matrix:
|
||||||
|
allow_failures:
|
||||||
|
- os: osx
|
||||||
|
env: lt_branch=RC_1_0 qt=4 gui=true
|
||||||
|
- os: osx
|
||||||
|
env: lt_branch=RC_1_0 qt=4 gui=false
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
except:
|
except:
|
||||||
@@ -120,14 +126,18 @@ install:
|
|||||||
fi
|
fi
|
||||||
- |
|
- |
|
||||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||||
mkdir -p "$HOME/hombebrew_cache" ;
|
|
||||||
wget https://builds.shiki.hu/homebrew/version ;
|
wget https://builds.shiki.hu/homebrew/version ;
|
||||||
if ! cmp --quiet "version" "$HOME/hombebrew_cache/version" ; then
|
if ! cmp --quiet "version" "$HOME/hombebrew_cache/version" ; then
|
||||||
echo "Cached files are different from server. Downloading new ones." ;
|
echo "Cached files are different from server. Downloading new ones." ;
|
||||||
|
# First delete old files
|
||||||
|
rm -r "$HOME/hombebrew_cache" ;
|
||||||
|
mkdir "$HOME/hombebrew_cache";
|
||||||
cp "version" $HOME/hombebrew_cache ;
|
cp "version" $HOME/hombebrew_cache ;
|
||||||
cd "$HOME/hombebrew_cache" ;
|
cd "$HOME/hombebrew_cache" ;
|
||||||
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar.rb ;
|
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar.rb ;
|
||||||
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar-1.0.10.el_capitan.bottle.tar.gz ;
|
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar-1.0.10.el_capitan.bottle.tar.gz ;
|
||||||
|
wget https://builds.shiki.hu/homebrew/qt5.rb ;
|
||||||
|
wget https://builds.shiki.hu/homebrew/qt5-5.7.1_1.el_capitan.bottle.tar.gz ;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
@@ -142,7 +152,14 @@ install:
|
|||||||
|
|
||||||
# Qt
|
# Qt
|
||||||
if [ "$qt" = 4 ]; then brew install qt && ln -s /usr/local/Cellar/qt/4.8.7_2/plugins /usr/local ; fi ;
|
if [ "$qt" = 4 ]; then brew install qt && ln -s /usr/local/Cellar/qt/4.8.7_2/plugins /usr/local ; fi ;
|
||||||
if [ "$qt" = 5 ]; then brew install qt5 && brew link --force qt5 && ln -s /usr/local/Cellar/qt5/5.7.0/plugins /usr/local ; fi ;
|
if [ "$qt" = 5 ]; then
|
||||||
|
# Copy custom qt5 bottle to homebrew's cache so it can find and install it
|
||||||
|
# Also install our custom qt5 formula by passing the local path to it
|
||||||
|
# These 2 files are restored from Travis' cache.
|
||||||
|
cp "$HOME/hombebrew_cache/qt5-5.7.1_1.el_capitan.bottle.tar.gz" "$(brew --cache)" ;
|
||||||
|
brew install "$HOME/hombebrew_cache/qt5.rb" ;
|
||||||
|
brew link --force qt5 ;
|
||||||
|
fi
|
||||||
|
|
||||||
# ccache
|
# ccache
|
||||||
if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
|
if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
|
||||||
|
|||||||
87
5B7CC9A2.asc
@@ -26,28 +26,67 @@ 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
|
||||||
=tDGM
|
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
|
||||||
|
xdpwp07LYo2ilhMI8RnzmtoRmg==
|
||||||
|
=UBeB
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
cmake_policy(VERSION 3.5)
|
cmake_policy(VERSION 3.5)
|
||||||
|
|
||||||
project(qBittorrent VERSION 3.4.0.0)
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||||
|
include(FunctionReadVersion)
|
||||||
|
|
||||||
set(VER_MAJOR ${qBittorrent_VERSION_MAJOR})
|
read_version("${CMAKE_CURRENT_SOURCE_DIR}/version.pri" VER_MAJOR VER_MINOR VER_BUGFIX VER_BUILD VER_STATUS)
|
||||||
set(VER_MINOR ${qBittorrent_VERSION_MINOR})
|
# message(STATUS "Project version is: ${VER_MAJOR}.${VER_MINOR}.${VER_BUGFIX}.${VER_BUILD} (${VER_STATUS})")
|
||||||
set(VER_BUGFIX ${qBittorrent_VERSION_PATCH})
|
|
||||||
set(VER_BUILD ${qBittorrent_VERSION_TWEAK})
|
project(qBittorrent VERSION ${VER_MAJOR}.${VER_MINOR}.${VER_BUGFIX}.${VER_BUILD})
|
||||||
set(VER_STATUS "alpha") # Should be empty for stable releases!
|
|
||||||
|
|
||||||
# Don't touch the rest part
|
|
||||||
set(PROJECT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUGFIX}")
|
set(PROJECT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUGFIX}")
|
||||||
|
|
||||||
if (NOT VER_BUILD EQUAL 0)
|
if (NOT VER_BUILD EQUAL 0)
|
||||||
@@ -28,7 +27,6 @@ add_definitions(-DVERSION_BUILD=${VER_BUILD})
|
|||||||
# } else {
|
# } else {
|
||||||
add_definitions(-DVERSION="v${PROJECT_VERSION}")
|
add_definitions(-DVERSION="v${PROJECT_VERSION}")
|
||||||
# }
|
# }
|
||||||
list(APPEND CMAKE_MODULE_PATH ${qBittorrent_SOURCE_DIR}/cmake/Modules)
|
|
||||||
|
|
||||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og")
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og")
|
||||||
if (UNIX AND NOT APPLE)
|
if (UNIX AND NOT APPLE)
|
||||||
|
|||||||
78
Changelog
@@ -1,3 +1,81 @@
|
|||||||
|
* 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)
|
||||||
|
- FEATURE: Remove settings to exchange trackers. It wasn't used by non-libtorrent clients. Also it has a privacy risk and you might be DDoSing someone. (sledgehammer999)
|
||||||
|
- FEATURE: Put temp files in .qBittorrent directory. Closes #4462. (Chocobo1)
|
||||||
|
- FEATURE: Use the numbers from tracker scrape response. Closes #5048, #6117. (Chocobo1)
|
||||||
|
- FEATURE: Implement category filter widget. Show categories in tree mode when subcategories are enabled. (glassez)
|
||||||
|
- FEATURE: Allow to toggle columns in searchtab (thalieht)
|
||||||
|
- FEATURE: PeerList: allow to hide zero values for the "uploaded" and "downloaded" columns (thalieht)
|
||||||
|
- FEATURE: Display more information in tracker tab (ngosang)
|
||||||
|
- FEATURE: Use Ctrl+F to search torrents. Closes #5797. (Tim Delaney)
|
||||||
|
- FEATURE: Transferlist: add hotkeys for double click and recheck selected torrents (thalieht)
|
||||||
|
- FEATURE: Add hotkey for execution log tab, Trackerlist, Peerlist etc (thalieht)
|
||||||
|
- FEATURE: Seperate seeds from peers for DHT, PeX and LSD (thalieht)
|
||||||
|
- BUGFIX: Do not remove added files unconditionally. Closes #6248 (Eugene Shalygin)
|
||||||
|
- BUGFIX: Ignore mouse wheel events in Advanced Settings. Closes #866. (Chocobo1)
|
||||||
|
- BUGFIX: Add queue repair code. It should fix missing torrents after restarting. (Eugene Shalygin, nxd4)
|
||||||
|
- BUGFIX: Fetch torrent status when generating final fastresume data. It should fix missing torrents after restarting. (Eugene Shalygin)
|
||||||
|
- BUGFIX: Fix queue overload for add torrent at session start. It should fix missing torrents after restarting. (falco)
|
||||||
|
- BUGFIX: After files relocate, don't remove the old folder even if it is empty. (Chocobo1)
|
||||||
|
- BUGFIX: Fix finding 'English' item in language dropdown menu when an unrecognized locale is requested. Closes #6109. (sledgehammer999)
|
||||||
|
- BUGIFX: Speedlimitdlg: raise slider default value to 10000. Closes #6150. (Chocobo1)
|
||||||
|
- BUGFIX: TransferListWidget: keep columns width even if they are hidden on qBittorrent startup (unless something goes wrong) (thalieht)
|
||||||
|
- BUGFIX: fix index overflow for torrents with invalid meta data or empty progress (Falco)
|
||||||
|
- BUGFIX: Immediately update torrent_status after manipulating super seeding mode. Partially fixes #6072. (sledgehammer999)
|
||||||
|
- BUGFIX: Use case-insensitive comparsion for torrent content window. Closes #6327. (Chocobo1)
|
||||||
|
- BUGFIX: Fixed sort order for datetime columns with empty values (closes #2988) (Vladimir Sinenko)
|
||||||
|
- BUGFIX: Disable proxy in WebUI HTTP server. Closes #6349. (Eugene Shalygin)
|
||||||
|
- COSMETIC: Use a disabled progressbar's palette for unselected files. (sledgehammer999)
|
||||||
|
- COSMETIC: Support fallback when selecting theme icons (Eugene Shalygin)
|
||||||
|
- COSMETIC: Do not resize SVG icons (Eugene Shalygin)
|
||||||
|
- COSMETIC: Align text to the right in columns that handle numbers for PeerList and SearchTab (thalieht)
|
||||||
|
- COSMETIC: Increased number of digits after the decimal point for Gibibytes and above (thalieht)
|
||||||
|
- COSMETIC: Use non-breaking spaces between numbers and units (thalieht)
|
||||||
|
- WEBUI: Fix proxy type bug (Oke Atime)
|
||||||
|
- WEBUI: Use the correct value for KEY_TORRENT_NUM_COMPLETE/KEY_TORRENT_NUM_INCOMPLETE (Chocobo1)
|
||||||
|
- WEBUI: Make torrents table scrollable horizontally (buinsky)
|
||||||
|
- WEBUI: Make torrent peers table scrollable horizontally (buinsky)
|
||||||
|
- WEBUI: Add tooltips to dynamic table header (buinsky)
|
||||||
|
- WEBUI: Implement dynamic table columns resizing, reordering and hiding (buinsky)
|
||||||
|
- WEBUI: Add some missing columns to dynamic tables (buinsky)
|
||||||
|
- WEBUI: Make too tall menus scrollable (buinksy)
|
||||||
|
- WEBUI: Prevent text wrapping in menus (buinsky)
|
||||||
|
- WEBUI: Add a vertical separator between columns (buinsky)
|
||||||
|
- WEBUI: Implement resizable progress bar in "Done" column (buinsky)
|
||||||
|
- WEBUI: Fix scrollbar covers menu item with long text (buinsky)
|
||||||
|
- WEBUI: Remove 300px limit of column width (buinsky)
|
||||||
|
- WEBUI: Avoid lags in firefox on resizing progress column (buinsky)
|
||||||
|
- WEBUI: Fix category in torrent upload. Closes #6260 (ngosang)
|
||||||
|
- WEBUI: Turn off port forwarding of WebUI by default for GUI users (Chocobo1)
|
||||||
|
- WEBUI: Exclude insecure ciphers. Fixes security issues reported by @beardog108 privately. (Chocobo1)
|
||||||
|
- WEBUI: Avoid clickjacking attacks. Fixes security issues reported by @beardog108 privately. (ngosang)
|
||||||
|
- WEBUI: Add X-XSS-Protection, X-Content-Type-Options, CSP header. Fixes security issues reported by @beardog108 privately. (Chocobo1)
|
||||||
|
- WEBUI: Escape various values that might contain injected html. Fixes security issues reported by @beardog108 privately. (Chocobo1)
|
||||||
|
- WEBUI: Bump API_VERSION to 12.
|
||||||
|
- SEARCH: Update extratorrent plugin. Closes #6261 (ngosang)
|
||||||
|
- SEARCH: SearchTab: can now save sorting column changes (thalieht)
|
||||||
|
- SEARCH: Use case-insensitive sort for Name column in Search tab. Closes #407. (Chocobo1)
|
||||||
|
- RSS: Fix tab order in RSS downloader. Closes #6164. (Tim Delaney)
|
||||||
|
- RSS: Move old RSS items to separate config file. Closes #6167. (Tim Delaney)
|
||||||
|
- RSS: Episode filter code refactoring (Tim Delaney)
|
||||||
|
- RSS: Allow resetting rule to no category. Closes #5539. (Tim Delaney)
|
||||||
|
- RSS: Save rule on enable/disable even if not selected. Closes #6163. (Tim Delaney)
|
||||||
|
- RSS: Allow | in RSS must contain. Closes #6171. (Tim Delaney)
|
||||||
|
- RSS: RSS use red text to indicate invalid filter. Closes #6165. (Tim Delaney)
|
||||||
|
- RSS: Allow episode zero (special) and leading zeroes in RSS episode filter. (Tim Delaney)
|
||||||
|
- RSS: RSS parse torrent episodes like 1x01 as well as S01E01. Closes #2749. (Tim Delaney)
|
||||||
|
- RSS: RSS allow infinite range to extend beyond current season. Closes #800, #3876, #6170. (Tim Delaney)
|
||||||
|
- RSS: Improve UI responsiveness during RSS downloading. Closes #873, #1089, #1235, #5423. (Tim Delaney)
|
||||||
|
- RSS: Show name of feed list and sort rules in editor. Closes #3782, #6281. (Tim Delaney)
|
||||||
|
- RSS: Fix regex matching. Closes #6337. (Tim Delaney)
|
||||||
|
- MACOS: Fix qbittorrent-nox build (Oke Atime)
|
||||||
|
- LINUX: fixes default indicator name (Bilal Elmoussaoui)
|
||||||
|
- OTHER: Workaround problem with moc from Qt4 and #if (Eugene Shalygin)
|
||||||
|
- OTHER: Print warning to the user if stacktrace contains no function names (Eugene Shalygin)
|
||||||
|
- OTHER: Various cmake fixes (Eugene Shalygin)
|
||||||
|
- OTHER: Fix finding qmake in configure when cross-compiling (Zach Bacon)
|
||||||
|
|
||||||
* Sat Dec 17 2016 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.3.10
|
* Sat Dec 17 2016 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.3.10
|
||||||
- BUGFIX: Fix share ratio limiting. Broken by commit 259b5e51c49b744. Closes #6039 #6048. (sledgehammer999)
|
- BUGFIX: Fix share ratio limiting. Broken by commit 259b5e51c49b744. Closes #6039 #6048. (sledgehammer999)
|
||||||
- BUGFIX: Case insensitive sort for client column. Closes #6054. (Oke Atime)
|
- BUGFIX: Case insensitive sort for client column. Closes #6054. (Oke Atime)
|
||||||
|
|||||||
@@ -14,6 +14,11 @@
|
|||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
|
|
||||||
|
macro(_detect_boost_components _outComponets librariesList)
|
||||||
|
string(REGEX MATCHALL "boost_[a-z_]+[-a-z]*" _boost_libraries "${librariesList}")
|
||||||
|
string(REGEX REPLACE "boost_([a-z_]+)[-a-z]*" "\\1" ${_outComponets} "${_boost_libraries}")
|
||||||
|
endmacro()
|
||||||
|
|
||||||
if(PKG_CONFIG_FOUND)
|
if(PKG_CONFIG_FOUND)
|
||||||
pkg_check_modules(PC_LIBTORRENT_RASTERBAR QUIET libtorrent-rasterbar)
|
pkg_check_modules(PC_LIBTORRENT_RASTERBAR QUIET libtorrent-rasterbar)
|
||||||
endif()
|
endif()
|
||||||
@@ -62,13 +67,33 @@ endif()
|
|||||||
set(LibtorrentRasterbar_LIBRARIES ${LibtorrentRasterbar_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
|
set(LibtorrentRasterbar_LIBRARIES ${LibtorrentRasterbar_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
set(LibtorrentRasterbar_INCLUDE_DIRS ${LibtorrentRasterbar_INCLUDE_DIR})
|
set(LibtorrentRasterbar_INCLUDE_DIRS ${LibtorrentRasterbar_INCLUDE_DIR})
|
||||||
|
|
||||||
if(NOT Boost_SYSTEM_FOUND OR NOT Boost_CHRONO_FOUND OR NOT Boost_RANDOM_FOUND)
|
# Without pkg-config, we can't possibly figure out the correct boost dependencies
|
||||||
find_package(Boost REQUIRED COMPONENTS date_time system chrono random thread)
|
if (LibtorrentRasterbar_CUSTOM_BOOST_DEPENDENCIES)
|
||||||
set(LibtorrentRasterbar_LIBRARIES
|
set(_boost_components "${LibtorrentRasterbar_CUSTOM_BOOST_DEPENDENCIES}")
|
||||||
${LibtorrentRasterbar_LIBRARIES} ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
else(LibtorrentRasterbar_CUSTOM_BOOST_DEPENDENCIES)
|
||||||
set(LibtorrentRasterbar_INCLUDE_DIRS
|
if(PC_LIBTORRENT_RASTERBAR_FOUND)
|
||||||
${LibtorrentRasterbar_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
|
_detect_boost_components(_boost_components "${PC_LIBTORRENT_RASTERBAR_LIBRARIES}")
|
||||||
endif()
|
else()
|
||||||
|
# all possible boost dependencies
|
||||||
|
set(_boost_components
|
||||||
|
date_time
|
||||||
|
system
|
||||||
|
chrono
|
||||||
|
random
|
||||||
|
thread
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif(LibtorrentRasterbar_CUSTOM_BOOST_DEPENDENCIES)
|
||||||
|
|
||||||
|
list(SORT _boost_components)
|
||||||
|
message(STATUS "Libtorrent Boost dependencies: ${_boost_components}")
|
||||||
|
find_package(Boost REQUIRED COMPONENTS ${_boost_components})
|
||||||
|
set(LibtorrentRasterbar_LIBRARIES ${LibtorrentRasterbar_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
foreach(_boost_cmpnt IN LISTS _boost_components)
|
||||||
|
list(APPEND LibtorrentRasterbar_LIBRARIES "Boost::${_boost_cmpnt}")
|
||||||
|
endforeach(_boost_cmpnt)
|
||||||
|
|
||||||
|
set(LibtorrentRasterbar_INCLUDE_DIRS ${LibtorrentRasterbar_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
|
||||||
|
|
||||||
list(FIND LibtorrentRasterbar_DEFINITIONS -DTORRENT_USE_OPENSSL LibtorrentRasterbar_ENCRYPTION_INDEX)
|
list(FIND LibtorrentRasterbar_DEFINITIONS -DTORRENT_USE_OPENSSL LibtorrentRasterbar_ENCRYPTION_INDEX)
|
||||||
if(LibtorrentRasterbar_ENCRYPTION_INDEX GREATER -1)
|
if(LibtorrentRasterbar_ENCRYPTION_INDEX GREATER -1)
|
||||||
@@ -83,10 +108,7 @@ include(FindPackageHandleStandardArgs)
|
|||||||
# if all listed variables are TRUE
|
# if all listed variables are TRUE
|
||||||
find_package_handle_standard_args(LibtorrentRasterbar DEFAULT_MSG
|
find_package_handle_standard_args(LibtorrentRasterbar DEFAULT_MSG
|
||||||
LibtorrentRasterbar_LIBRARY
|
LibtorrentRasterbar_LIBRARY
|
||||||
LibtorrentRasterbar_INCLUDE_DIR
|
LibtorrentRasterbar_INCLUDE_DIR)
|
||||||
Boost_SYSTEM_FOUND
|
|
||||||
Boost_CHRONO_FOUND
|
|
||||||
Boost_RANDOM_FOUND)
|
|
||||||
|
|
||||||
mark_as_advanced(LibtorrentRasterbar_INCLUDE_DIR LibtorrentRasterbar_LIBRARY
|
mark_as_advanced(LibtorrentRasterbar_INCLUDE_DIR LibtorrentRasterbar_LIBRARY
|
||||||
LibtorrentRasterbar_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES
|
LibtorrentRasterbar_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES
|
||||||
|
|||||||
28
cmake/Modules/FunctionReadVersion.cmake
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# function for parsing version variables that are set in version.pri file
|
||||||
|
# the version identifiers there are defined as follows:
|
||||||
|
# VER_MAJOR = 3
|
||||||
|
# VER_MINOR = 4
|
||||||
|
# VER_BUGFIX = 0
|
||||||
|
# VER_BUILD = 0
|
||||||
|
# VER_STATUS = alpha
|
||||||
|
|
||||||
|
function(read_version priFile outMajor outMinor outBugfix outBuild outStatus)
|
||||||
|
file(STRINGS ${priFile} _priFileContents REGEX "^VER_.+")
|
||||||
|
# message(STATUS "version.pri version contents: ${_priFileContents}")
|
||||||
|
# the _priFileContents variable contains something like the following:
|
||||||
|
# VER_MAJOR = 3;VER_MINOR = 4;VER_BUGFIX = 0;VER_BUILD = 0;VER_STATUS = alpha # Should be empty for stable releases!
|
||||||
|
set(_regex "VER_MAJOR += +([0-9]+);VER_MINOR += +([0-9]+);VER_BUGFIX += +([0-9]+);VER_BUILD += +([0-9]+);VER_STATUS += +([0-9A-Za-z]+)?")
|
||||||
|
# note quotes around _regex, they are needed because the variable contains semicolons
|
||||||
|
string(REGEX MATCH "${_regex}" _tmp "${_priFileContents}")
|
||||||
|
if (NOT _tmp)
|
||||||
|
message(FATAL_ERROR "Could not detect project version number from ${priFile}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# message(STATUS "Matched version string: ${_tmp}")
|
||||||
|
|
||||||
|
set(${outMajor} ${CMAKE_MATCH_1} PARENT_SCOPE)
|
||||||
|
set(${outMinor} ${CMAKE_MATCH_2} PARENT_SCOPE)
|
||||||
|
set(${outBugfix} ${CMAKE_MATCH_3} PARENT_SCOPE)
|
||||||
|
set(${outBuild} ${CMAKE_MATCH_4} PARENT_SCOPE)
|
||||||
|
set(${outStatus} ${CMAKE_MATCH_5} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
@@ -5,11 +5,23 @@
|
|||||||
macro (target_link_qt_components target)
|
macro (target_link_qt_components target)
|
||||||
if (QT4_FOUND)
|
if (QT4_FOUND)
|
||||||
foreach(_cmp ${ARGN})
|
foreach(_cmp ${ARGN})
|
||||||
list(APPEND _QT_CMPNTS "Qt4::Qt${_cmp}")
|
if ("${_cmp}" STREQUAL "PRIVATE" OR
|
||||||
|
"${_cmp}" STREQUAL "PUBLIC" OR
|
||||||
|
"${_cmp}" STREQUAL "INTERFACE")
|
||||||
|
list(APPEND _QT_CMPNTS "${_cmp}")
|
||||||
|
else()
|
||||||
|
list(APPEND _QT_CMPNTS "Qt4::Qt${_cmp}")
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
else (QT4_FOUND)
|
else (QT4_FOUND)
|
||||||
foreach(_cmp ${ARGN})
|
foreach(_cmp ${ARGN})
|
||||||
list(APPEND _QT_CMPNTS "Qt5::${_cmp}")
|
if ("${_cmp}" STREQUAL "PRIVATE" OR
|
||||||
|
"${_cmp}" STREQUAL "PUBLIC" OR
|
||||||
|
"${_cmp}" STREQUAL "INTERFACE")
|
||||||
|
list(APPEND _QT_CMPNTS "${_cmp}")
|
||||||
|
else()
|
||||||
|
list(APPEND _QT_CMPNTS "Qt5::${_cmp}")
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif (QT4_FOUND)
|
endif (QT4_FOUND)
|
||||||
target_link_libraries(${target} ${_QT_CMPNTS})
|
target_link_libraries(${target} ${_QT_CMPNTS})
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ set(LibtorrentRasterbar_CUSTOM_DEFINITIONS
|
|||||||
-DBOOST_EXCEPTION_DISABLE
|
-DBOOST_EXCEPTION_DISABLE
|
||||||
-DBOOST_SYSTEM_STATIC_LINK=1
|
-DBOOST_SYSTEM_STATIC_LINK=1
|
||||||
-DTORRENT_USE_OPENSSL
|
-DTORRENT_USE_OPENSSL
|
||||||
-DUNICODE
|
-D__USE_W32_SOCKETS
|
||||||
|
-D_FILE_OFFSET_BITS=64)
|
||||||
|
|
||||||
|
add_definitions(-DUNICODE
|
||||||
-D_UNICODE
|
-D_UNICODE
|
||||||
-DWIN32
|
-DWIN32
|
||||||
-D_WIN32
|
-D_WIN32
|
||||||
@@ -18,9 +21,7 @@ set(LibtorrentRasterbar_CUSTOM_DEFINITIONS
|
|||||||
-D_WIN32_IE=0x0500
|
-D_WIN32_IE=0x0500
|
||||||
-D_CRT_SECURE_NO_DEPRECATE
|
-D_CRT_SECURE_NO_DEPRECATE
|
||||||
-D_SCL_SECURE_NO_DEPRECATE
|
-D_SCL_SECURE_NO_DEPRECATE
|
||||||
-D__USE_W32_SOCKETS
|
)
|
||||||
-D_FILE_OFFSET_BITS=64)
|
|
||||||
|
|
||||||
# and boost
|
# and boost
|
||||||
set(Boost_USE_STATIC_LIBS True)
|
set(Boost_USE_STATIC_LIBS True)
|
||||||
# set(Boost_USE_STATIC_RUNTIME True)
|
# set(Boost_USE_STATIC_RUNTIME True)
|
||||||
@@ -29,16 +30,17 @@ set(Boost_USE_STATIC_LIBS True)
|
|||||||
# with usual unix subdirectories (bin, lib, include)
|
# with usual unix subdirectories (bin, lib, include)
|
||||||
# if so, we just need to set CMAKE_SYSTEM_PREFIX_PATH
|
# if so, we just need to set CMAKE_SYSTEM_PREFIX_PATH
|
||||||
# If it is not the case, individual paths need to be specified manually (see below)
|
# If it is not the case, individual paths need to be specified manually (see below)
|
||||||
set(COMMON_INSTALL_PREFIX "c:/usr")
|
set(COMMON_INSTALL_PREFIX "c:/usr" CACHE PATH "Prefix used to install all the required libraries")
|
||||||
list(APPEND CMAKE_SYSTEM_PREFIX_PATH "${COMMON_INSTALL_PREFIX}")
|
list(APPEND CMAKE_SYSTEM_PREFIX_PATH "${COMMON_INSTALL_PREFIX}")
|
||||||
|
|
||||||
# If two version of Qt are installed, separate prefixes are needed most likely
|
# If two version of Qt are installed, separate prefixes are needed most likely
|
||||||
set(QT4_INSTALL_PREFIX "${COMMON_INSTALL_PREFIX}/lib/qt4")
|
set(QT4_INSTALL_PREFIX "${COMMON_INSTALL_PREFIX}/lib/qt4" CACHE PATH "Prefix where Qt4 is installed")
|
||||||
set(QT5_INSTALL_PREFIX "${COMMON_INSTALL_PREFIX}/lib/qt5")
|
set(QT5_INSTALL_PREFIX "${COMMON_INSTALL_PREFIX}/lib/qt5" CACHE PATH "Prefix where Qt5 is installed")
|
||||||
|
|
||||||
# it is safe to set Qt dirs even if their files are directly in the prefix
|
# it is safe to set Qt dirs even if their files are directly in the prefix
|
||||||
# Qt4
|
# Qt4
|
||||||
if(NOT QT5)
|
if(NOT QT5)
|
||||||
|
# for qt 4 we need qmake, Qt5 provides cmake config files
|
||||||
LIST(APPEND CMAKE_PROGRAM_PATH "${QT4_INSTALL_PREFIX}/bin/")
|
LIST(APPEND CMAKE_PROGRAM_PATH "${QT4_INSTALL_PREFIX}/bin/")
|
||||||
endif(NOT QT5)
|
endif(NOT QT5)
|
||||||
|
|
||||||
|
|||||||
85
configure
vendored
@@ -4504,53 +4504,17 @@ fi
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
as_ac_File=`$as_echo "ac_cv_file_$QT_QMAKE/qmake" | $as_tr_sh`
|
if test -f "$QT_QMAKE/qmake"; then :
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $QT_QMAKE/qmake" >&5
|
|
||||||
$as_echo_n "checking for $QT_QMAKE/qmake... " >&6; }
|
|
||||||
if eval \${$as_ac_File+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
test "$cross_compiling" = yes &&
|
|
||||||
as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
|
|
||||||
if test -r "$QT_QMAKE/qmake"; then
|
|
||||||
eval "$as_ac_File=yes"
|
|
||||||
else
|
|
||||||
eval "$as_ac_File=no"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
eval ac_res=\$$as_ac_File
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
||||||
$as_echo "$ac_res" >&6; }
|
|
||||||
if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
|
|
||||||
QT_QMAKE="$QT_QMAKE/qmake"
|
QT_QMAKE="$QT_QMAKE/qmake"
|
||||||
else
|
else
|
||||||
as_ac_File=`$as_echo "ac_cv_file_$QT_QMAKE/qmake-qt5" | $as_tr_sh`
|
if test -f "$QT_QMAKE/qmake-qt5"; then :
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $QT_QMAKE/qmake-qt5" >&5
|
|
||||||
$as_echo_n "checking for $QT_QMAKE/qmake-qt5... " >&6; }
|
|
||||||
if eval \${$as_ac_File+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
test "$cross_compiling" = yes &&
|
|
||||||
as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
|
|
||||||
if test -r "$QT_QMAKE/qmake-qt5"; then
|
|
||||||
eval "$as_ac_File=yes"
|
|
||||||
else
|
|
||||||
eval "$as_ac_File=no"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
eval ac_res=\$$as_ac_File
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
||||||
$as_echo "$ac_res" >&6; }
|
|
||||||
if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
|
|
||||||
QT_QMAKE="$QT_QMAKE/qmake-qt5"
|
QT_QMAKE="$QT_QMAKE/qmake-qt5"
|
||||||
else
|
else
|
||||||
QT_QMAKE=""
|
QT_QMAKE=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt5 qmake >= 5.2.0" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt5 qmake >= 5.2.0" >&5
|
||||||
$as_echo_n "checking for Qt5 qmake >= 5.2.0... " >&6; }
|
$as_echo_n "checking for Qt5 qmake >= 5.2.0... " >&6; }
|
||||||
if test "x$QT_QMAKE" != "x"; then :
|
if test "x$QT_QMAKE" != "x"; then :
|
||||||
@@ -4621,53 +4585,17 @@ fi
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
as_ac_File=`$as_echo "ac_cv_file_$QT_QMAKE/qmake" | $as_tr_sh`
|
if test -f "$QT_QMAKE/qmake"; then :
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $QT_QMAKE/qmake" >&5
|
|
||||||
$as_echo_n "checking for $QT_QMAKE/qmake... " >&6; }
|
|
||||||
if eval \${$as_ac_File+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
test "$cross_compiling" = yes &&
|
|
||||||
as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
|
|
||||||
if test -r "$QT_QMAKE/qmake"; then
|
|
||||||
eval "$as_ac_File=yes"
|
|
||||||
else
|
|
||||||
eval "$as_ac_File=no"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
eval ac_res=\$$as_ac_File
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
||||||
$as_echo "$ac_res" >&6; }
|
|
||||||
if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
|
|
||||||
QT_QMAKE="$QT_QMAKE/qmake"
|
QT_QMAKE="$QT_QMAKE/qmake"
|
||||||
else
|
else
|
||||||
as_ac_File=`$as_echo "ac_cv_file_$QT_QMAKE/qmake-qt4" | $as_tr_sh`
|
if test -f "$QT_QMAKE/qmake-qt4"; then :
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $QT_QMAKE/qmake-qt4" >&5
|
|
||||||
$as_echo_n "checking for $QT_QMAKE/qmake-qt4... " >&6; }
|
|
||||||
if eval \${$as_ac_File+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
test "$cross_compiling" = yes &&
|
|
||||||
as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
|
|
||||||
if test -r "$QT_QMAKE/qmake-qt4"; then
|
|
||||||
eval "$as_ac_File=yes"
|
|
||||||
else
|
|
||||||
eval "$as_ac_File=no"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
eval ac_res=\$$as_ac_File
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
||||||
$as_echo "$ac_res" >&6; }
|
|
||||||
if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
|
|
||||||
QT_QMAKE="$QT_QMAKE/qmake-qt4"
|
QT_QMAKE="$QT_QMAKE/qmake-qt4"
|
||||||
else
|
else
|
||||||
QT_QMAKE=""
|
QT_QMAKE=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt4 qmake >= 4.8.0" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt4 qmake >= 4.8.0" >&5
|
||||||
$as_echo_n "checking for Qt4 qmake >= 4.8.0... " >&6; }
|
$as_echo_n "checking for Qt4 qmake >= 4.8.0... " >&6; }
|
||||||
if test "x$QT_QMAKE" != "x"; then :
|
if test "x$QT_QMAKE" != "x"; then :
|
||||||
@@ -5044,8 +4972,8 @@ fi
|
|||||||
if test "x$BOOST_CPPFLAGS" = "x"; then :
|
if test "x$BOOST_CPPFLAGS" = "x"; then :
|
||||||
as_fn_error $? "Could not find Boost" "$LINENO" 5
|
as_fn_error $? "Could not find Boost" "$LINENO" 5
|
||||||
else
|
else
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Boost CPPFLGAS: $BOOST_CPPFLAGS" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: Boost CPPFLAGS: $BOOST_CPPFLAGS" >&5
|
||||||
$as_echo "$as_me: Boost CPPFLGAS: $BOOST_CPPFLAGS" >&6;}
|
$as_echo "$as_me: Boost CPPFLAGS: $BOOST_CPPFLAGS" >&6;}
|
||||||
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
|
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
|
||||||
LDFLAGS="$BOOST_LDFLAGS $LDFLAGS"
|
LDFLAGS="$BOOST_LDFLAGS $LDFLAGS"
|
||||||
fi
|
fi
|
||||||
@@ -5094,6 +5022,7 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex
|
|||||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||||
|
|
||||||
CXXFLAGS_SAVE=$CXXFLAGS
|
CXXFLAGS_SAVE=$CXXFLAGS
|
||||||
|
CXXFLAGS=
|
||||||
|
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
/* end confdefs.h. */
|
/* end confdefs.h. */
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ AX_BOOST_BASE([1.35])
|
|||||||
# how to test for a set vs unset variable.
|
# how to test for a set vs unset variable.
|
||||||
AS_IF([test "x$BOOST_CPPFLAGS" = "x"],
|
AS_IF([test "x$BOOST_CPPFLAGS" = "x"],
|
||||||
[AC_MSG_ERROR([Could not find Boost])],
|
[AC_MSG_ERROR([Could not find Boost])],
|
||||||
[AC_MSG_NOTICE([Boost CPPFLGAS: $BOOST_CPPFLAGS])
|
[AC_MSG_NOTICE([Boost CPPFLAGS: $BOOST_CPPFLAGS])
|
||||||
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
|
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
|
||||||
LDFLAGS="$BOOST_LDFLAGS $LDFLAGS"])
|
LDFLAGS="$BOOST_LDFLAGS $LDFLAGS"])
|
||||||
|
|
||||||
|
|||||||
8
dist/mac/Info.plist
vendored
@@ -37,7 +37,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>qBittorrent</string>
|
<string>@EXECUTABLE@</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>qbittorrent_mac.icns</string>
|
<string>qbittorrent_mac.icns</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
@@ -45,11 +45,11 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.3.10</string>
|
<string>3.3.11</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>qBit</string>
|
<string>qBit</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>qbittorrent</string>
|
<string>@EXECUTABLE@</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.qbittorrent</string>
|
<string>org.qbittorrent</string>
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
<key>NSAppleScriptEnabled</key>
|
<key>NSAppleScriptEnabled</key>
|
||||||
<string>YES</string>
|
<string>YES</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>Copyright © 2006-2016 The qBittorrent project</string>
|
<string>Copyright © 2006-2017 The qBittorrent project</string>
|
||||||
<key>UTExportedTypeDeclarations</key>
|
<key>UTExportedTypeDeclarations</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
|
|||||||
BIN
dist/unix/menuicons/128x128/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
dist/unix/menuicons/16x16/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 893 B |
BIN
dist/unix/menuicons/192x192/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
dist/unix/menuicons/22x22/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
dist/unix/menuicons/24x24/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
dist/unix/menuicons/32x32/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
dist/unix/menuicons/36x36/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
dist/unix/menuicons/48x48/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
dist/unix/menuicons/64x64/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
dist/unix/menuicons/72x72/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
dist/unix/menuicons/96x96/status/qbittorrent-tray.png
vendored
Normal file
|
After Width: | Height: | Size: 14 KiB |
4
dist/windows/options.nsi
vendored
@@ -19,7 +19,7 @@ XPStyle on
|
|||||||
!define CSIDL_APPDATA '0x1A' ;Application Data path
|
!define CSIDL_APPDATA '0x1A' ;Application Data path
|
||||||
!define CSIDL_LOCALAPPDATA '0x1C' ;Local Application Data path
|
!define CSIDL_LOCALAPPDATA '0x1C' ;Local Application Data path
|
||||||
|
|
||||||
!define PROG_VERSION "3.3.10"
|
!define PROG_VERSION "3.3.11"
|
||||||
!define MUI_FINISHPAGE_RUN
|
!define MUI_FINISHPAGE_RUN
|
||||||
!define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun
|
!define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun
|
||||||
!define MUI_FINISHPAGE_RUN_TEXT $(launch_qbt)
|
!define MUI_FINISHPAGE_RUN_TEXT $(launch_qbt)
|
||||||
@@ -33,7 +33,7 @@ OutFile "qbittorrent_${PROG_VERSION}_setup.exe"
|
|||||||
;Installer Version Information
|
;Installer Version Information
|
||||||
VIAddVersionKey "ProductName" "qBittorrent"
|
VIAddVersionKey "ProductName" "qBittorrent"
|
||||||
VIAddVersionKey "CompanyName" "The qBittorrent project"
|
VIAddVersionKey "CompanyName" "The qBittorrent project"
|
||||||
VIAddVersionKey "LegalCopyright" "Copyright ©2006-2016 The qBittorrent project"
|
VIAddVersionKey "LegalCopyright" "Copyright ©2006-2017 The qBittorrent project"
|
||||||
VIAddVersionKey "FileDescription" "qBittorrent - A Bittorrent Client"
|
VIAddVersionKey "FileDescription" "qBittorrent - A Bittorrent Client"
|
||||||
VIAddVersionKey "FileVersion" "${PROG_VERSION}"
|
VIAddVersionKey "FileVersion" "${PROG_VERSION}"
|
||||||
|
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ AC_DEFUN([FIND_QT4],
|
|||||||
[QT_QMAKE=`AS_DIRNAME(["$QT_QMAKE"])`])
|
[QT_QMAKE=`AS_DIRNAME(["$QT_QMAKE"])`])
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_CHECK_FILE([$QT_QMAKE/qmake],
|
AS_IF([test -f "$QT_QMAKE/qmake"],
|
||||||
[QT_QMAKE="$QT_QMAKE/qmake"],
|
[QT_QMAKE="$QT_QMAKE/qmake"],
|
||||||
[AC_CHECK_FILE([$QT_QMAKE/qmake-qt4],
|
[AS_IF([test -f "$QT_QMAKE/qmake-qt4"],
|
||||||
[QT_QMAKE="$QT_QMAKE/qmake-qt4"],
|
[QT_QMAKE="$QT_QMAKE/qmake-qt4"],
|
||||||
[QT_QMAKE=""])
|
[QT_QMAKE=""])
|
||||||
])
|
])
|
||||||
@@ -36,9 +36,9 @@ AC_DEFUN([FIND_QT5],
|
|||||||
[host_bins])
|
[host_bins])
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_CHECK_FILE([$QT_QMAKE/qmake],
|
AS_IF([test -f "$QT_QMAKE/qmake"],
|
||||||
[QT_QMAKE="$QT_QMAKE/qmake"],
|
[QT_QMAKE="$QT_QMAKE/qmake"],
|
||||||
[AC_CHECK_FILE([$QT_QMAKE/qmake-qt5],
|
[AS_IF([test -f "$QT_QMAKE/qmake-qt5"],
|
||||||
[QT_QMAKE="$QT_QMAKE/qmake-qt5"],
|
[QT_QMAKE="$QT_QMAKE/qmake-qt5"],
|
||||||
[QT_QMAKE=""])
|
[QT_QMAKE=""])
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -161,10 +161,15 @@ endif (GUI AND WIN32)
|
|||||||
target_link_libraries(${QBT_TARGET_NAME} ${QBT_TARGET_LIBRARIES} QtSingleApplication::QtSingleApplication)
|
target_link_libraries(${QBT_TARGET_NAME} ${QBT_TARGET_LIBRARIES} QtSingleApplication::QtSingleApplication)
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
set(qbt_BUNDLE_NAME "${CMAKE_PROJECT_NAME}")
|
set(qbt_BUNDLE_NAME "${QBT_TARGET_NAME}")
|
||||||
|
|
||||||
|
# substitute @EXECUTABLE@ in dist/mac/Info.plist
|
||||||
|
set(EXECUTABLE ${qbt_BUNDLE_NAME})
|
||||||
|
configure_file(${qBittorrent_SOURCE_DIR}/dist/mac/Info.plist ${qBittorrent_BINARY_DIR}/dist/mac/Info.plist @ONLY)
|
||||||
|
|
||||||
set_target_properties(${QBT_TARGET_NAME} PROPERTIES
|
set_target_properties(${QBT_TARGET_NAME} PROPERTIES
|
||||||
MACOSX_BUNDLE_BUNDLE_NAME "${qbt_BUNDLE_NAME}"
|
MACOSX_BUNDLE_BUNDLE_NAME "${qbt_BUNDLE_NAME}"
|
||||||
MACOSX_BUNDLE_INFO_PLIST ${qBittorrent_SOURCE_DIR}/dist/mac/Info.plist
|
MACOSX_BUNDLE_INFO_PLIST ${qBittorrent_BINARY_DIR}/dist/mac/Info.plist
|
||||||
)
|
)
|
||||||
endif (APPLE)
|
endif (APPLE)
|
||||||
|
|
||||||
|
|||||||
@@ -511,36 +511,27 @@ void Application::initializeTranslation()
|
|||||||
{
|
{
|
||||||
Preferences* const pref = Preferences::instance();
|
Preferences* const pref = Preferences::instance();
|
||||||
// Load translation
|
// Load translation
|
||||||
QString locale = pref->getLocale();
|
QString localeStr = pref->getLocale();
|
||||||
|
QLocale::setDefault(QLocale(localeStr));
|
||||||
|
|
||||||
if (locale.isEmpty()) {
|
if (
|
||||||
locale = QLocale::system().name();
|
|
||||||
pref->setLocale(locale);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_qtTranslator.load(
|
|
||||||
#ifdef QBT_USES_QT5
|
#ifdef QBT_USES_QT5
|
||||||
QString::fromUtf8("qtbase_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)) ||
|
m_qtTranslator.load(QString::fromUtf8("qtbase_") + localeStr, QLibraryInfo::location(QLibraryInfo::TranslationsPath)) ||
|
||||||
m_qtTranslator.load(
|
|
||||||
#endif
|
#endif
|
||||||
QString::fromUtf8("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) {
|
m_qtTranslator.load(QString::fromUtf8("qt_") + localeStr, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
|
||||||
qDebug("Qt %s locale recognized, using translation.", qPrintable(locale));
|
qDebug("Qt %s locale recognized, using translation.", qPrintable(localeStr));
|
||||||
}
|
else
|
||||||
else {
|
qDebug("Qt %s locale unrecognized, using default (en).", qPrintable(localeStr));
|
||||||
qDebug("Qt %s locale unrecognized, using default (en).", qPrintable(locale));
|
|
||||||
}
|
|
||||||
installTranslator(&m_qtTranslator);
|
installTranslator(&m_qtTranslator);
|
||||||
|
|
||||||
if (m_translator.load(QString::fromUtf8(":/lang/qbittorrent_") + locale)) {
|
if (m_translator.load(QString::fromUtf8(":/lang/qbittorrent_") + localeStr))
|
||||||
qDebug("%s locale recognized, using translation.", qPrintable(locale));
|
qDebug("%s locale recognized, using translation.", qPrintable(localeStr));
|
||||||
}
|
else
|
||||||
else {
|
qDebug("%s locale unrecognized, using default (en).", qPrintable(localeStr));
|
||||||
qDebug("%s locale unrecognized, using default (en).", qPrintable(locale));
|
|
||||||
}
|
|
||||||
installTranslator(&m_translator);
|
installTranslator(&m_translator);
|
||||||
|
|
||||||
#ifndef DISABLE_GUI
|
#ifndef DISABLE_GUI
|
||||||
if (locale.startsWith("ar") || locale.startsWith("he")) {
|
if (localeStr.startsWith("ar") || localeStr.startsWith("he")) {
|
||||||
qDebug("Right to Left mode");
|
qDebug("Right to Left mode");
|
||||||
setLayoutDirection(Qt::RightToLeft);
|
setLayoutDirection(Qt::RightToLeft);
|
||||||
}
|
}
|
||||||
@@ -629,6 +620,7 @@ void Application::cleanup()
|
|||||||
delete m_fileLogger;
|
delete m_fileLogger;
|
||||||
Logger::freeInstance();
|
Logger::freeInstance();
|
||||||
IconProvider::freeInstance();
|
IconProvider::freeInstance();
|
||||||
|
Utils::Fs::removeDirRecursive(Utils::Fs::tempPath());
|
||||||
|
|
||||||
#ifndef DISABLE_GUI
|
#ifndef DISABLE_GUI
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
|
|||||||
@@ -141,6 +141,10 @@ int main(int argc, char *argv[])
|
|||||||
macMigratePlists();
|
macMigratePlists();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef DISABLE_GUI
|
||||||
|
migrateRSS();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Create Application
|
// Create Application
|
||||||
QString appId = QLatin1String("qBittorrent-") + Utils::Misc::getUserIDString();
|
QString appId = QLatin1String("qBittorrent-") + Utils::Misc::getUserIDString();
|
||||||
QScopedPointer<Application> app(new Application(appId, argc, argv));
|
QScopedPointer<Application> app(new Application(appId, argc, argv));
|
||||||
|
|||||||
@@ -15,78 +15,86 @@ static inline void print_stacktrace(FILE *out = stderr, unsigned int max_frames
|
|||||||
fprintf(out, "stack trace:\n");
|
fprintf(out, "stack trace:\n");
|
||||||
|
|
||||||
// storage array for stack trace address data
|
// storage array for stack trace address data
|
||||||
void* addrlist[max_frames+1];
|
void *addrlist[max_frames + 1];
|
||||||
|
|
||||||
// retrieve current stack addresses
|
// retrieve current stack addresses
|
||||||
int addrlen = backtrace(addrlist, sizeof(addrlist) / sizeof(void*));
|
int addrlen = backtrace(addrlist, sizeof(addrlist) / sizeof(void *));
|
||||||
|
|
||||||
if (addrlen == 0) {
|
if (addrlen == 0) {
|
||||||
fprintf(out, " <empty, possibly corrupt>\n");
|
fprintf(out, " <empty, possibly corrupt>\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// resolve addresses into strings containing "filename(function+address)",
|
// resolve addresses into strings containing "filename(function+address)",
|
||||||
// this array must be free()-ed
|
// this array must be free()-ed
|
||||||
char** symbollist = backtrace_symbols(addrlist, addrlen);
|
char * *symbollist = backtrace_symbols(addrlist, addrlen);
|
||||||
|
|
||||||
// allocate string which will be filled with the demangled function name
|
// allocate string which will be filled with the demangled function name
|
||||||
size_t funcnamesize = 256;
|
size_t funcnamesize = 256;
|
||||||
char* funcname = (char*)malloc(funcnamesize);
|
char *funcname = (char *)malloc(funcnamesize);
|
||||||
|
|
||||||
|
int functionNamesFound = 0;
|
||||||
// iterate over the returned symbol lines. skip the first, it is the
|
// iterate over the returned symbol lines. skip the first, it is the
|
||||||
// address of this function.
|
// address of this function.
|
||||||
for (int i = 2; i < addrlen; i++)
|
for (int i = 2; i < addrlen; i++) {
|
||||||
{
|
char *begin_name = 0, *begin_offset = 0, *end_offset = 0;
|
||||||
char *begin_name = 0, *begin_offset = 0, *end_offset = 0;
|
|
||||||
|
|
||||||
// find parentheses and +address offset surrounding the mangled name:
|
// find parentheses and +address offset surrounding the mangled name:
|
||||||
// ./module(function+0x15c) [0x8048a6d]
|
// ./module(function+0x15c) [0x8048a6d]
|
||||||
//fprintf(out, "%s TT\n", symbollist[i]);
|
// fprintf(out, "%s TT\n", symbollist[i]);
|
||||||
for (char *p = symbollist[i]; *p; ++p)
|
for (char *p = symbollist[i]; *p; ++p) {
|
||||||
{
|
if (*p == '(') {
|
||||||
if (*p == '(')
|
begin_name = p;
|
||||||
begin_name = p;
|
}
|
||||||
else if (*p == '+')
|
else if (*p == '+') {
|
||||||
begin_offset = p;
|
begin_offset = p;
|
||||||
else if (*p == ')' && begin_offset) {
|
}
|
||||||
end_offset = p;
|
else if ((*p == ')') && begin_offset) {
|
||||||
break;
|
end_offset = p;
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (begin_name && begin_offset && end_offset
|
if (begin_name && begin_offset && end_offset
|
||||||
&& begin_name < begin_offset)
|
&& (begin_name < begin_offset)) {
|
||||||
{
|
*begin_name++ = '\0';
|
||||||
*begin_name++ = '\0';
|
*begin_offset++ = '\0';
|
||||||
*begin_offset++ = '\0';
|
*end_offset = '\0';
|
||||||
*end_offset = '\0';
|
|
||||||
|
|
||||||
// mangled name is now in [begin_name, begin_offset) and caller
|
// mangled name is now in [begin_name, begin_offset) and caller
|
||||||
// offset in [begin_offset, end_offset). now apply
|
// offset in [begin_offset, end_offset). now apply
|
||||||
// __cxa_demangle():
|
// __cxa_demangle():
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
char* ret = abi::__cxa_demangle(begin_name,
|
char *ret = abi::__cxa_demangle(begin_name,
|
||||||
funcname, &funcnamesize, &status);
|
funcname, &funcnamesize, &status);
|
||||||
if (status == 0) {
|
if (status == 0) {
|
||||||
funcname = ret; // use possibly realloc()-ed string
|
funcname = ret; // use possibly realloc()-ed string
|
||||||
fprintf(out, " %s : %s+%s %s\n",
|
fprintf(out, " %s : %s+%s %s\n",
|
||||||
symbollist[i], funcname, begin_offset, ++end_offset);
|
symbollist[i], funcname, begin_offset, ++end_offset);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// demangling failed. Output function name as a C function with
|
// demangling failed. Output function name as a C function with
|
||||||
// no arguments.
|
// no arguments.
|
||||||
fprintf(out, " %s : %s()+%s %s\n",
|
fprintf(out, " %s : %s()+%s %s\n",
|
||||||
symbollist[i], begin_name, begin_offset, ++end_offset);
|
symbollist[i], begin_name, begin_offset, ++end_offset);
|
||||||
}
|
}
|
||||||
}
|
++functionNamesFound;
|
||||||
else
|
}
|
||||||
{
|
else {
|
||||||
// couldn't parse the line? print the whole line.
|
// couldn't parse the line? print the whole line.
|
||||||
fprintf(out, " %s\n", symbollist[i]);
|
fprintf(out, " %s\n", symbollist[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!functionNamesFound) {
|
||||||
|
fprintf(out, "There were no function names found in the stack trace\n."
|
||||||
|
"Seems like debug symbols are not installed, and the stack trace is useless.\n");
|
||||||
|
}
|
||||||
|
if (functionNamesFound < addrlen - 2) {
|
||||||
|
fprintf(out, "Consider installing debug symbols for packages containing files with empty"
|
||||||
|
" function names (i.e. empty braces \"()\") to make your stack trace more useful\n");
|
||||||
|
}
|
||||||
free(funcname);
|
free(funcname);
|
||||||
free(symbollist);
|
free(symbollist);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -228,7 +228,6 @@ bool upgrade(bool ask = true)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
void migratePlistToIni(const QString &application)
|
void migratePlistToIni(const QString &application)
|
||||||
{
|
{
|
||||||
@@ -257,5 +256,22 @@ void macMigratePlists()
|
|||||||
}
|
}
|
||||||
#endif // Q_OS_MAC
|
#endif // Q_OS_MAC
|
||||||
|
|
||||||
|
#ifndef DISABLE_GUI
|
||||||
|
void migrateRSS()
|
||||||
|
{
|
||||||
|
// Copy old feed items to new file if needed
|
||||||
|
QIniSettings qBTRSS("qBittorrent", "qBittorrent-rss-feeds");
|
||||||
|
if (!qBTRSS.allKeys().isEmpty()) return; // We move the contents of RSS old_items only if inifile does not exist (is empty).
|
||||||
|
|
||||||
|
QIniSettings qBTRSSLegacy("qBittorrent", "qBittorrent-rss");
|
||||||
|
QHash<QString, QVariant> allOldItems = qBTRSSLegacy.value("old_items", QHash<QString, QVariant>()).toHash();
|
||||||
|
|
||||||
|
if (!allOldItems.empty()) {
|
||||||
|
qDebug("Moving %d old items for feeds to qBittorrent-rss-feeds", allOldItems.size());
|
||||||
|
qBTRSS.setValue("old_items", allOldItems);
|
||||||
|
qBTRSSLegacy.remove("old_items");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // UPGRADE_H
|
#endif // UPGRADE_H
|
||||||
|
|||||||
@@ -117,24 +117,24 @@ tristatebool.cpp
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_library(qbt_base STATIC ${QBT_BASE_HEADERS} ${QBT_BASE_SOURCES})
|
add_library(qbt_base STATIC ${QBT_BASE_HEADERS} ${QBT_BASE_SOURCES})
|
||||||
target_link_libraries(qbt_base ZLIB::ZLIB LibtorrentRasterbar::LibTorrent)
|
target_link_libraries(qbt_base PRIVATE ZLIB::ZLIB PUBLIC LibtorrentRasterbar::LibTorrent)
|
||||||
target_link_qt_components(qbt_base Core Network Xml)
|
target_link_qt_components(qbt_base PUBLIC Core Network Xml)
|
||||||
if (QT4_FOUND)
|
if (QT4_FOUND)
|
||||||
if (GUI)
|
if (GUI)
|
||||||
target_link_libraries(qbt_base Qt4::QtGui)
|
target_link_libraries(qbt_base PUBLIC Qt4::QtGui)
|
||||||
endif (GUI)
|
endif (GUI)
|
||||||
else (QT4_FOUND)
|
else (QT4_FOUND)
|
||||||
if (GUI)
|
if (GUI)
|
||||||
target_link_libraries(qbt_base Qt5::Gui Qt5::Widgets)
|
target_link_libraries(qbt_base PUBLIC Qt5::Gui Qt5::Widgets)
|
||||||
endif (GUI)
|
endif (GUI)
|
||||||
endif (QT4_FOUND)
|
endif (QT4_FOUND)
|
||||||
|
|
||||||
if (DBUS)
|
if (DBUS)
|
||||||
target_link_qt_components(qbt_base DBus)
|
target_link_qt_components(qbt_base PRIVATE DBus)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
find_library(IOKit_LIBRARY IOKit)
|
find_library(IOKit_LIBRARY IOKit)
|
||||||
find_library(Carbon_LIBRARY Carbon)
|
find_library(Carbon_LIBRARY Carbon)
|
||||||
target_link_libraries(qbt_base ${Carbon_LIBRARY} ${IOKit_LIBRARY})
|
target_link_libraries(qbt_base PRIVATE ${Carbon_LIBRARY} ${IOKit_LIBRARY})
|
||||||
endif (APPLE)
|
endif (APPLE)
|
||||||
|
|||||||
@@ -49,11 +49,6 @@ class FilterParserThread : public QThread
|
|||||||
public:
|
public:
|
||||||
FilterParserThread(libtorrent::session *s, QObject *parent = 0);
|
FilterParserThread(libtorrent::session *s, QObject *parent = 0);
|
||||||
~FilterParserThread();
|
~FilterParserThread();
|
||||||
|
|
||||||
int parseDATFilterFile(QString filePath, libtorrent::ip_filter &filter);
|
|
||||||
int parseP2PFilterFile(QString filePath, libtorrent::ip_filter &filter);
|
|
||||||
int getlineInStream(QDataStream &stream, std::string &name, char delim);
|
|
||||||
int parseP2BFilterFile(QString filePath, libtorrent::ip_filter &filter);
|
|
||||||
void processFilterFile(QString filePath);
|
void processFilterFile(QString filePath);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -65,6 +60,11 @@ protected:
|
|||||||
void run();
|
void run();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
int parseDATFilterFile(QString filePath, libtorrent::ip_filter &filter);
|
||||||
|
int parseP2PFilterFile(QString filePath, libtorrent::ip_filter &filter);
|
||||||
|
int getlineInStream(QDataStream &stream, std::string &name, char delim);
|
||||||
|
int parseP2BFilterFile(QString filePath, libtorrent::ip_filter &filter);
|
||||||
|
|
||||||
libtorrent::session *m_session;
|
libtorrent::session *m_session;
|
||||||
bool m_abort;
|
bool m_abort;
|
||||||
QString m_filePath;
|
QString m_filePath;
|
||||||
|
|||||||