You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-11-09 10:02:39 +01:00
Compare commits
521 Commits
release-2.
...
release-3.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
14b3414e9d | ||
|
|
73254962f1 | ||
|
|
74f042516b | ||
|
|
8c0853248c | ||
|
|
80ea0a67b5 | ||
|
|
6d2b51203c | ||
|
|
8ac82156b3 | ||
|
|
c1806b099a | ||
|
|
1046c816bf | ||
|
|
cfbb5ecde5 | ||
|
|
afdec02674 | ||
|
|
927e6bc6cc | ||
|
|
e862d3332c | ||
|
|
699144a83d | ||
|
|
1792f44bfa | ||
|
|
64e4095ef1 | ||
|
|
1d1ffcec7c | ||
|
|
e73bff817c | ||
|
|
486779ceb2 | ||
|
|
283a9950f3 | ||
|
|
4d601f5383 | ||
|
|
4d76bd33fc | ||
|
|
179985954c | ||
|
|
ef34285855 | ||
|
|
bbd1c9ee42 | ||
|
|
7cffd267d8 | ||
|
|
bb11d11a72 | ||
|
|
ae09bee193 | ||
|
|
abf8c179fc | ||
|
|
5874c7bd57 | ||
|
|
12280c6a0f | ||
|
|
c40801ce99 | ||
|
|
cc192d7d47 | ||
|
|
64c256109a | ||
|
|
d93a63e01a | ||
|
|
1c6ef50b77 | ||
|
|
497e2e92f8 | ||
|
|
2e950cc28b | ||
|
|
f09ea1a884 | ||
|
|
eebb7c8477 | ||
|
|
8feb6644a3 | ||
|
|
dd30ada095 | ||
|
|
0627968c2f | ||
|
|
89249c140f | ||
|
|
90373897d6 | ||
|
|
a85ddada25 | ||
|
|
3bb474e12f | ||
|
|
3b4a312b97 | ||
|
|
7a58df594d | ||
|
|
524f837ca5 | ||
|
|
4800b456c2 | ||
|
|
4652eb8ff3 | ||
|
|
c2096e2ecd | ||
|
|
e27a648594 | ||
|
|
90b1567d13 | ||
|
|
41132d39ae | ||
|
|
0ffba231d4 | ||
|
|
c6ab0b148b | ||
|
|
183453488e | ||
|
|
c96f14a7c8 | ||
|
|
c5841146ff | ||
|
|
4ff249525b | ||
|
|
5d5bf403a8 | ||
|
|
2747481816 | ||
|
|
c9591a66e8 | ||
|
|
02c4be4eaa | ||
|
|
ee96f83211 | ||
|
|
b095a1e3fe | ||
|
|
d5aaa24ad6 | ||
|
|
9efd576d53 | ||
|
|
8e0d01643f | ||
|
|
cb817bc06f | ||
|
|
1b905d5126 | ||
|
|
ca26cc0000 | ||
|
|
00f40e6771 | ||
|
|
7a64c1ebb4 | ||
|
|
5d5f3cbdfd | ||
|
|
8bd35852dc | ||
|
|
92189b6c50 | ||
|
|
e50ab2639e | ||
|
|
33832a46c1 | ||
|
|
6a905fc9e0 | ||
|
|
15d1e3505c | ||
|
|
fda1797149 | ||
|
|
096baaf441 | ||
|
|
69cb9b906f | ||
|
|
755dc40ee4 | ||
|
|
f601aa3cfb | ||
|
|
79cb430878 | ||
|
|
90f90936e1 | ||
|
|
a98ad63d8b | ||
|
|
6d31af676e | ||
|
|
1204bf6e80 | ||
|
|
48f2b6fb66 | ||
|
|
10a4556479 | ||
|
|
f4320cb58a | ||
|
|
d31d935522 | ||
|
|
85d2fd8ce0 | ||
|
|
ad79cbb9a1 | ||
|
|
bdb0e125a4 | ||
|
|
d26179cca0 | ||
|
|
8d612e8e2d | ||
|
|
e74b39f5af | ||
|
|
aaf3194670 | ||
|
|
74079b2c86 | ||
|
|
2eae22ac06 | ||
|
|
80359f3e5e | ||
|
|
ccefe68e4c | ||
|
|
f039cec4ca | ||
|
|
5a65580169 | ||
|
|
39ea57fe29 | ||
|
|
361db3d2cd | ||
|
|
83494f999a | ||
|
|
de4cb2ede7 | ||
|
|
2f6ef9af51 | ||
|
|
2f0e15bc25 | ||
|
|
0cd4c079e9 | ||
|
|
3197d5cc2f | ||
|
|
81e4e39878 | ||
|
|
55a6bc3855 | ||
|
|
acd4b64a8b | ||
|
|
984acc581c | ||
|
|
75a65a5f49 | ||
|
|
91af418254 | ||
|
|
901326c004 | ||
|
|
8986d87ef3 | ||
|
|
a0d21ead18 | ||
|
|
122655758d | ||
|
|
9a964d871d | ||
|
|
fc4989d738 | ||
|
|
5f59ab7e48 | ||
|
|
99557543fc | ||
|
|
d7c907d17d | ||
|
|
fd9ae50a57 | ||
|
|
1398a39768 | ||
|
|
7b4b2fe0f5 | ||
|
|
23848be6eb | ||
|
|
d55f3b5aff | ||
|
|
716e84264e | ||
|
|
600c33dfa3 | ||
|
|
e6e2baf3a8 | ||
|
|
cfb4ded943 | ||
|
|
dfe5fbe34c | ||
|
|
82788b9a02 | ||
|
|
ff3cc4b8de | ||
|
|
f74a471177 | ||
|
|
50ee44a1cf | ||
|
|
7a29f3d71d | ||
|
|
30d5273bb5 | ||
|
|
0f291629cc | ||
|
|
e6e63fa529 | ||
|
|
766b210d06 | ||
|
|
c502edf9e1 | ||
|
|
53f55a79b3 | ||
|
|
f05ecf900a | ||
|
|
810a9710d7 | ||
|
|
ef6c3f5a64 | ||
|
|
0e425d6a04 | ||
|
|
29d28b1d96 | ||
|
|
c12467ee3e | ||
|
|
82e2b3a6cd | ||
|
|
33a0828a33 | ||
|
|
95e2b7ee1a | ||
|
|
bc6fd3aa72 | ||
|
|
a940917144 | ||
|
|
7bd4a1b849 | ||
|
|
f62c38a8a7 | ||
|
|
41c503eb54 | ||
|
|
8cc538085f | ||
|
|
b93cebacb2 | ||
|
|
30a3110ca7 | ||
|
|
cf447296fb | ||
|
|
dfc5e02edd | ||
|
|
bcb29fb5fa | ||
|
|
41b57a0878 | ||
|
|
0b13fa6914 | ||
|
|
c32e651c39 | ||
|
|
fefc7df910 | ||
|
|
90b520651b | ||
|
|
3389820c73 | ||
|
|
85167c9043 | ||
|
|
ce6f942ed3 | ||
|
|
5cf7e47ffa | ||
|
|
bd4bb42e95 | ||
|
|
6778b7460a | ||
|
|
0c279e0567 | ||
|
|
1bee9c6a9d | ||
|
|
691b976e11 | ||
|
|
75efd4ea6b | ||
|
|
9363b1b4f2 | ||
|
|
a69cbd2289 | ||
|
|
ca6f732c7b | ||
|
|
5f5382297c | ||
|
|
a5452d04ae | ||
|
|
8f4c4e8c40 | ||
|
|
b1f1fbf114 | ||
|
|
a2d9cce181 | ||
|
|
06ccae591e | ||
|
|
30bc14c940 | ||
|
|
33f5c8e903 | ||
|
|
8e529fc179 | ||
|
|
f3448125c3 | ||
|
|
00b4ad6ec8 | ||
|
|
a8a7b61ea9 | ||
|
|
9acac03f14 | ||
|
|
b78d6ba243 | ||
|
|
d53ca1d096 | ||
|
|
50a3e4e776 | ||
|
|
a13bb06ec3 | ||
|
|
32a6c89c8c | ||
|
|
1905a6f0d1 | ||
|
|
3bc75bb068 | ||
|
|
f0f7924325 | ||
|
|
5e48708920 | ||
|
|
58603451b4 | ||
|
|
9e3deb68de | ||
|
|
2fea7eaef2 | ||
|
|
a53a70742d | ||
|
|
0c9dbc15f9 | ||
|
|
ed468083c5 | ||
|
|
737982e92f | ||
|
|
b43e641d21 | ||
|
|
c25586b500 | ||
|
|
60d9bfe077 | ||
|
|
0d0c7559bf | ||
|
|
de4559659d | ||
|
|
16071ec266 | ||
|
|
fb03682df4 | ||
|
|
68041e382d | ||
|
|
fb60a6489b | ||
|
|
dd7e515f9c | ||
|
|
1bc6130da5 | ||
|
|
323275c340 | ||
|
|
3da9fec665 | ||
|
|
f6254e9db6 | ||
|
|
f06f820047 | ||
|
|
05643ca5d9 | ||
|
|
c0eb048fe2 | ||
|
|
78bb4104b0 | ||
|
|
6c10936f6d | ||
|
|
4ca665eb0c | ||
|
|
39e1ebaa9b | ||
|
|
0a0033b242 | ||
|
|
9eea35f530 | ||
|
|
345e9ec870 | ||
|
|
53be56746b | ||
|
|
26b8decb24 | ||
|
|
a275e26ba7 | ||
|
|
96c918ff8d | ||
|
|
2283bd2358 | ||
|
|
f6b7b8bd6e | ||
|
|
1b8a2bf7c1 | ||
|
|
33325cdfee | ||
|
|
d81f633d6b | ||
|
|
422b483d78 | ||
|
|
ec5b9c769a | ||
|
|
74081bc6f8 | ||
|
|
3c650038e2 | ||
|
|
3e4f74ab4e | ||
|
|
f7c586b47a | ||
|
|
98b09f68ae | ||
|
|
357e309dad | ||
|
|
2e544f6a74 | ||
|
|
b0d6f3f9bf | ||
|
|
380989d808 | ||
|
|
6357d6372c | ||
|
|
d744968ea6 | ||
|
|
76ca967d70 | ||
|
|
9cff66df3f | ||
|
|
72af6cb206 | ||
|
|
c7043d5c39 | ||
|
|
1036990499 | ||
|
|
f386fd9e23 | ||
|
|
1e75fa9086 | ||
|
|
252d2009cd | ||
|
|
a48d36c9a2 | ||
|
|
01ad2e9746 | ||
|
|
2f7b20c704 | ||
|
|
aae85b4498 | ||
|
|
c39244aeb6 | ||
|
|
8f22279428 | ||
|
|
5a68bc5801 | ||
|
|
46a3b382db | ||
|
|
dae959a533 | ||
|
|
eeda9379d5 | ||
|
|
80bf89857a | ||
|
|
65eb40d1f5 | ||
|
|
9cf37f5364 | ||
|
|
1ad1498c5d | ||
|
|
405b804eb5 | ||
|
|
183e150da1 | ||
|
|
f98d4e9149 | ||
|
|
dad1568657 | ||
|
|
f13fd37819 | ||
|
|
ae692ba9b8 | ||
|
|
2036326403 | ||
|
|
3ad81595df | ||
|
|
9115a2ddc2 | ||
|
|
102e25771c | ||
|
|
d65fc4575a | ||
|
|
928936046e | ||
|
|
fe6df6176d | ||
|
|
6c52dbd477 | ||
|
|
37f5c8710e | ||
|
|
341a88c2ef | ||
|
|
efe2280224 | ||
|
|
a6294e5739 | ||
|
|
c9c481fe69 | ||
|
|
8219c29b0c | ||
|
|
1e1094f8da | ||
|
|
452a8b2ae2 | ||
|
|
bf746be692 | ||
|
|
de2d2c7469 | ||
|
|
384eae7014 | ||
|
|
09ef9947b0 | ||
|
|
4385b941bb | ||
|
|
ab0355f8d6 | ||
|
|
8f439589ea | ||
|
|
ce6348bc32 | ||
|
|
4c5dd66b0f | ||
|
|
5fe562c0fa | ||
|
|
61faf34ef7 | ||
|
|
1038376cdb | ||
|
|
28d1671bb8 | ||
|
|
8e026e68d7 | ||
|
|
4be897a4e5 | ||
|
|
3f4947259b | ||
|
|
e10a51e61e | ||
|
|
381eaf4b53 | ||
|
|
1b7e681e6d | ||
|
|
1ad764de7b | ||
|
|
246903fa0a | ||
|
|
b298f9a06e | ||
|
|
efdcdeb210 | ||
|
|
6e4826a512 | ||
|
|
28ba0c25a7 | ||
|
|
ea0f384dbf | ||
|
|
9218f69d87 | ||
|
|
b9b82e959b | ||
|
|
6606cf60af | ||
|
|
94a23cf1d4 | ||
|
|
15c3836a25 | ||
|
|
afbac42420 | ||
|
|
7354e9b738 | ||
|
|
8abb1d917b | ||
|
|
7bd8bb4880 | ||
|
|
3d5487dfcb | ||
|
|
be09284192 | ||
|
|
cdf68c90ba | ||
|
|
a46f665dd4 | ||
|
|
e5e254a184 | ||
|
|
2a55aba5fa | ||
|
|
f5d04a1be9 | ||
|
|
73132afe6c | ||
|
|
1d27fa9c03 | ||
|
|
1585b307bc | ||
|
|
c882bc8a1d | ||
|
|
aefa1dba18 | ||
|
|
7bd19f7696 | ||
|
|
c25f51e866 | ||
|
|
68b13f10fe | ||
|
|
9764fe2a91 | ||
|
|
7c29e613f0 | ||
|
|
2a88e790df | ||
|
|
deb7327ee6 | ||
|
|
a82ccd8e95 | ||
|
|
4ffe100287 | ||
|
|
5990615248 | ||
|
|
e83618a1b2 | ||
|
|
9e9cdedfd3 | ||
|
|
ed5e55f85d | ||
|
|
d2907dc08c | ||
|
|
69984f9550 | ||
|
|
94f92aa4f9 | ||
|
|
9e5ec56770 | ||
|
|
b58b4d0066 | ||
|
|
11a068dfdd | ||
|
|
deb7cb9d9e | ||
|
|
085ab0e660 | ||
|
|
2ff28ff46f | ||
|
|
eb159c0b18 | ||
|
|
51b3a5164d | ||
|
|
fa30d7bd1c | ||
|
|
ea159c0146 | ||
|
|
f4c2fdd2fd | ||
|
|
0c7643cfb3 | ||
|
|
3282e53e93 | ||
|
|
2e07e911e4 | ||
|
|
e838b515b3 | ||
|
|
7854911d2f | ||
|
|
7846afaeb8 | ||
|
|
72b27eecff | ||
|
|
8c491cc831 | ||
|
|
ac097b9904 | ||
|
|
9066520076 | ||
|
|
2d83482395 | ||
|
|
7a7016b4bd | ||
|
|
f2e222adb1 | ||
|
|
d4d3991795 | ||
|
|
6d9e519cdc | ||
|
|
16ad56c13f | ||
|
|
f2df8ce1d9 | ||
|
|
921512e51d | ||
|
|
3529c5c7a0 | ||
|
|
984e6f9927 | ||
|
|
8b2f7c4661 | ||
|
|
83ce77b398 | ||
|
|
170b0798fd | ||
|
|
4795e9980b | ||
|
|
83317ca2d0 | ||
|
|
02fbd6a135 | ||
|
|
53900c386b | ||
|
|
669d1a3a46 | ||
|
|
122db6a77e | ||
|
|
86d3c98069 | ||
|
|
dc87b9f9f4 | ||
|
|
c7c30ccaee | ||
|
|
b59dded2a4 | ||
|
|
b48b9479d2 | ||
|
|
65883317c3 | ||
|
|
18e08c319f | ||
|
|
6265e2e092 | ||
|
|
bc10bbe135 | ||
|
|
31aebdc7bf | ||
|
|
269a50efe5 | ||
|
|
9b31b1cd72 | ||
|
|
e989e686a4 | ||
|
|
d6b5627363 | ||
|
|
7381b0dcf6 | ||
|
|
8589eb7c0f | ||
|
|
284fbf5512 | ||
|
|
b9aec63e92 | ||
|
|
88c063cd4d | ||
|
|
ed3fa0ccee | ||
|
|
4ec78d1405 | ||
|
|
8bfbb98509 | ||
|
|
44011c9cd9 | ||
|
|
92c7996ff4 | ||
|
|
0a17eb32cc | ||
|
|
52e7d4ad03 | ||
|
|
f843a4b13a | ||
|
|
719c30c70b | ||
|
|
b41bcdc605 | ||
|
|
0ead6f72c6 | ||
|
|
104ebbc9a1 | ||
|
|
982098a205 | ||
|
|
d5bdd2ea3e | ||
|
|
641b38690c | ||
|
|
ea433c0619 | ||
|
|
8847df60e1 | ||
|
|
3995af6489 | ||
|
|
4412476109 | ||
|
|
0c2a121304 | ||
|
|
885753391d | ||
|
|
cff7174bbb | ||
|
|
40bd040c4a | ||
|
|
0241fa7593 | ||
|
|
2f06099518 | ||
|
|
4489934c21 | ||
|
|
10d815c60d | ||
|
|
c85cb8799e | ||
|
|
fd4f46485c | ||
|
|
3154461f28 | ||
|
|
da32321f10 | ||
|
|
aec3087528 | ||
|
|
9d83439b83 | ||
|
|
684e00d639 | ||
|
|
f982501576 | ||
|
|
87a744fcf6 | ||
|
|
aca939f0ce | ||
|
|
675e8282b0 | ||
|
|
a1272fff82 | ||
|
|
5579c7ff3d | ||
|
|
f5d4404b67 | ||
|
|
851a677a48 | ||
|
|
fd8157f6ba | ||
|
|
450c1fc124 | ||
|
|
493d6ce702 | ||
|
|
35a2b227b2 | ||
|
|
6b0c976a0d | ||
|
|
f9c4150374 | ||
|
|
fad028cfa2 | ||
|
|
d9aa8cf4fd | ||
|
|
6b2da46e87 | ||
|
|
037cc655ba | ||
|
|
58bfa6f1bb | ||
|
|
0a6f591cf5 | ||
|
|
4ee623f921 | ||
|
|
e85059521e | ||
|
|
2a4abe6a77 | ||
|
|
8217ddc705 | ||
|
|
5f301b5a04 | ||
|
|
9a5568349f | ||
|
|
dc2de49cdb | ||
|
|
c63503aaa6 | ||
|
|
eaac9180e5 | ||
|
|
b8797d075f | ||
|
|
ea04f79e0f | ||
|
|
6a3d0da4ad | ||
|
|
4828a05ced | ||
|
|
f379084b68 | ||
|
|
c7314b99ea | ||
|
|
d0afd46fd3 | ||
|
|
ba7ece348c | ||
|
|
01b5844174 | ||
|
|
dfa16320f0 | ||
|
|
93a84655b6 | ||
|
|
a24dc147ab | ||
|
|
e247d0e5dc | ||
|
|
b410b7751e | ||
|
|
028051d6a5 | ||
|
|
7d4a1bc92a | ||
|
|
924b09b0f1 | ||
|
|
188a8ae4f5 | ||
|
|
1489a6bbd6 | ||
|
|
9c57cca93c | ||
|
|
6ed4724e33 | ||
|
|
63feffd985 | ||
|
|
d988b0df9c | ||
|
|
85d6365bc2 | ||
|
|
784d972602 |
14
.gitignore
vendored
Normal file
14
.gitignore
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
src/geoip/GeoIP.dat
|
||||||
|
src/qbittorrent
|
||||||
|
qbittorrent.pro.user
|
||||||
|
conf.pri
|
||||||
|
Makefile
|
||||||
|
*.pyc
|
||||||
|
*.log
|
||||||
|
# Compiled object files
|
||||||
|
*.o
|
||||||
|
# Generated MOC, resource and UI files
|
||||||
|
moc_*.cpp
|
||||||
|
qrc_*.cpp
|
||||||
|
ui_*.h
|
||||||
|
*.moc
|
||||||
9
AUTHORS
9
AUTHORS
@@ -50,7 +50,7 @@ Images Authors:
|
|||||||
copyright: Greg Houston <gregory.houston@gmail.com>
|
copyright: Greg Houston <gregory.houston@gmail.com>
|
||||||
license: MIT
|
license: MIT
|
||||||
|
|
||||||
* file: src/Icons/skin/qbittorrent_mono.svg
|
* file: src/Icons/skin/qbittorrent_mono*
|
||||||
copyright: Daniel Eguren <deguren@gmail.com>
|
copyright: Daniel Eguren <deguren@gmail.com>
|
||||||
license: LGPL
|
license: LGPL
|
||||||
|
|
||||||
@@ -74,6 +74,8 @@ Translations authors:
|
|||||||
copyright:
|
copyright:
|
||||||
- Arabic: SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)
|
- Arabic: SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)
|
||||||
- Armenian: Hrant Ohanyan (hrantohanyan@mail.am)
|
- Armenian: Hrant Ohanyan (hrantohanyan@mail.am)
|
||||||
|
- Basque: Xabier Aramendi (azpidatziak@gmail.com)
|
||||||
|
- Belarusian: Mihas Varantsou (meequz@gmail.com)
|
||||||
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
|
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
|
||||||
- Bulgarian: Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)
|
- Bulgarian: Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)
|
||||||
- Catalan: Francisco Luque Contreras (frannoe@ya.com)
|
- Catalan: Francisco Luque Contreras (frannoe@ya.com)
|
||||||
@@ -87,11 +89,12 @@ Translations authors:
|
|||||||
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
|
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
|
||||||
- French: Christophe Dumez (chris@qbittorrent.org)
|
- French: Christophe Dumez (chris@qbittorrent.org)
|
||||||
- Galician: Marcos Lans (marcoslansgarza@gmail.com)
|
- Galician: Marcos Lans (marcoslansgarza@gmail.com)
|
||||||
|
- Georgian: Beqa Arabuli (arabulibeqa@yahoo.com)
|
||||||
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
||||||
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net) and Stephanos Antaris (santaris@csd.auth.gr)
|
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net) and Stephanos Antaris (santaris@csd.auth.gr)
|
||||||
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
||||||
- Italian: Matteo Sechi (bu17714@gmail.com)
|
- Italian: Matteo Sechi (bu17714@gmail.com)
|
||||||
- Japanese: Nardog (alphisation@gmail.com)
|
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
|
||||||
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
||||||
- Lithuanian: Naglis Jonaitis (njonaitis@gmail.com)
|
- Lithuanian: Naglis Jonaitis (njonaitis@gmail.com)
|
||||||
- Norwegian: Tomaso
|
- Norwegian: Tomaso
|
||||||
@@ -104,5 +107,5 @@ Translations authors:
|
|||||||
- Spanish: Francisco Luque Contreras (frannoe@ya.com)
|
- Spanish: Francisco Luque Contreras (frannoe@ya.com)
|
||||||
- Swedish: Daniel Nylander (po@danielnylander.se)
|
- Swedish: Daniel Nylander (po@danielnylander.se)
|
||||||
- Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
|
- Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
|
||||||
- Ukrainian: Andrey Shpachenko (masterfix@users.sourceforge.net) and Oleh Prypin (blaxpirit@gmail.com)
|
- Ukrainian: Oleh Prypin (blaxpirit@gmail.com)
|
||||||
license: GPLv2
|
license: GPLv2
|
||||||
|
|||||||
58
Changelog
58
Changelog
@@ -1,3 +1,61 @@
|
|||||||
|
* Tue Aug 21 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.1
|
||||||
|
- BUGFIX: Fix possible crash when adding a tracker to a magnet torrent without metadata (Closes #1034254)
|
||||||
|
- BUGFIX: Remember queue position for torrents without metadata (closes #17)
|
||||||
|
- BUGFIX: Fix crash when using unauthorized characters in label names (closes #19)
|
||||||
|
- BUGFIX: Fix search plugins updating (closes #25)
|
||||||
|
- BUGFIX: Make uTP connections rate limited by default
|
||||||
|
|
||||||
|
* Thu Aug 09 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.0
|
||||||
|
- FEATURE: Brand new torrent addition dialog
|
||||||
|
- FEATURE: Add the ability to choose the save path when using magnet links (mutoso)
|
||||||
|
- FEATURE: Add support for adding multiple local torrents at once (Web UI)
|
||||||
|
- COSMETIC: Improve style of left panel
|
||||||
|
- BUGFIX: Lower panels no longer gets disabled
|
||||||
|
- BUGFIX: Major code refactoring and various optimizations.
|
||||||
|
- BUGFIX: No longer strip root folder from torrent files
|
||||||
|
- OTHER: Drop support for libtorrent v0.14.x
|
||||||
|
- OTHER: Drop support for Qt 4.5
|
||||||
|
|
||||||
|
* Sat Oct 08 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.0
|
||||||
|
- FEATURE: Add file association settings to program preferences (Windows)
|
||||||
|
- FEATURE: Add setting to ignore slow torrents in queueing system
|
||||||
|
- FEATURE: Add advanced setting to announce to all trackers
|
||||||
|
- FEATURE: Add support for anonymous mode (libtorrent >= v0.16)
|
||||||
|
- FEATURE: Add quick "set as default save path" checkbox to torrent addition dialog (sledgehammer999)
|
||||||
|
- BUGFIX: Add tray menu entry for toggling window visibility
|
||||||
|
- BUGFIX: Fix execution log lines selection and copying
|
||||||
|
- BUGFIX: Reduce CPU usage when running Web UI
|
||||||
|
- BUGFIX: Save RSS items to disk regularly for safety
|
||||||
|
- BUGFIX: Fix ratio calculation (use all_time_download)
|
||||||
|
- BUGFIX: Fix torrent upload issues (Web UI)
|
||||||
|
- BUGFIX: Fix some IE incompatibilities (Web UI)
|
||||||
|
- COSMETIC: Display speed at the beginning of the Window title
|
||||||
|
- COSMETIC: Several cosmetic fixes to the Web UI
|
||||||
|
- COSMETIC: Make top toolbar follow system style
|
||||||
|
- OTHER: Display libraries versions in about dialog (sledgehammer999)
|
||||||
|
- OTHER: Display qBittorrent version in Web UI about dialog
|
||||||
|
|
||||||
|
* Thu Jun 02 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.8.0
|
||||||
|
- FEATURE: Added full libtorrent v0.16 support (uTP, ...)
|
||||||
|
- FEATURE: Proxy can be disabled for peer connections
|
||||||
|
- FEATURE: Added support for secure SMTP connection (SSL)
|
||||||
|
- FEATURE: Added support for SMTP authentication
|
||||||
|
- FEATURE: Added UPnP/NAT-PMP port forward for the Web UI port
|
||||||
|
- FEATURE: qBittorrent can update dynamic DNS services (DynDNS, no-ip)
|
||||||
|
- FEATURE: Display peer connection type in peer list (BT, uTP, Web)
|
||||||
|
- FEATURE: Added full regex support to RSS downloader
|
||||||
|
- FEATURE: Added regex help and validation in RSS downloader
|
||||||
|
- FEATURE: Added HTTPS support to Web UI (Ishan Arora)
|
||||||
|
- BUGFIX: Change systray icon on the fly (no restart needed)
|
||||||
|
- BUGFIX: Remember peer-level rate limits (requires libtorrent v0.16)
|
||||||
|
- BUGFIX: Stop annoncing to trackers an all tiers (more respectful)
|
||||||
|
- BUGFIX: Stop sharing private trackers with other peers
|
||||||
|
- BUGFIX: Tracker exchange extension can be disabled
|
||||||
|
- BUGFIX: Cleaner program exit on system log out
|
||||||
|
- BUGFIX: Fix possible magnet link parsing problems
|
||||||
|
- BUGFIX: Fix possible RSS URL parsing problems
|
||||||
|
- COSMETIC: Added monochrome icon for light themes
|
||||||
|
|
||||||
* Sun Mar 20 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.7.0
|
* Sun Mar 20 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.7.0
|
||||||
- FEATURE: Added search field for torrent content
|
- FEATURE: Added search field for torrent content
|
||||||
- FEATURE: Added auto-shutdown confirmation dialog
|
- FEATURE: Added auto-shutdown confirmation dialog
|
||||||
|
|||||||
16
INSTALL
16
INSTALL
@@ -10,25 +10,23 @@ qBittorrent - A BitTorrent client in C++ / Qt4
|
|||||||
will install and execute qBittorrent hopefully without any problems.
|
will install and execute qBittorrent hopefully without any problems.
|
||||||
|
|
||||||
Dependencies:
|
Dependencies:
|
||||||
- Qt >= 4.5.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
|
- Qt >= 4.6.0 (libqtgui, libqtcore, libqtnetwork, libqtxml, libqtdbus/optional)
|
||||||
|
|
||||||
- pkg-config executable
|
- pkg-config executable
|
||||||
|
|
||||||
- libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, compatible with v0.15.x)
|
- libtorrent-rasterbar by Arvid Norberg (>= 0.15.0)
|
||||||
-> http://www.libtorrent.net
|
-> http://www.libtorrent.net
|
||||||
Be careful: another library (the one used by rTorrent) uses a similar name.
|
Be careful: another library (the one used by rTorrent) uses a similar name.
|
||||||
|
|
||||||
- libboost 1.34.x (libboost-filesystem, libboost-date-time) + libasio
|
- libboost 1.34.x (libboost-filesystem°) + libasio
|
||||||
or
|
or
|
||||||
- libboost >= 1.35.x (libboost-system, libboost-filesystem, libboost-date-time)
|
- libboost >= 1.35.x (libboost-system, libboost-filesystem°)
|
||||||
|
|
||||||
|
°libboost-filesystem is not needed if libtorrent-rasterbar >= v0.16.x is used
|
||||||
|
|
||||||
- python >= 2.3 (needed by search engine)
|
- python >= 2.3 (needed by search engine)
|
||||||
* Run time only dependency
|
* Run time only dependency
|
||||||
|
|
||||||
- libnotify >= 0.4.2, glib-2.0 (optional)
|
|
||||||
* Can be used for system notifications to replace standard Qt notifications
|
|
||||||
so that it integrates better into the Desktop
|
|
||||||
|
|
||||||
- geoip-database (optional)
|
- geoip-database (optional)
|
||||||
* If qBittorrent cannot find this database, it will try to resolve countries using the Internet but it will be a lot slower.
|
* If qBittorrent cannot find this database, it will try to resolve countries using the Internet but it will be a lot slower.
|
||||||
* Run time only dependency
|
* Run time only dependency
|
||||||
@@ -46,7 +44,7 @@ qBittorrent - A BitTorrent client in C++ / Qt4
|
|||||||
|
|
||||||
- pkg-config executable
|
- pkg-config executable
|
||||||
|
|
||||||
- libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, >= v0.15.0 ADVISED)
|
- libtorrent-rasterbar by Arvid Norberg (>= v0.15.0)
|
||||||
-> http://www.libtorrent.net
|
-> http://www.libtorrent.net
|
||||||
Be careful: another library (the one used by rTorrent) uses a similar name.
|
Be careful: another library (the one used by rTorrent) uses a similar name.
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ First you need to create the conf.pri file in the same dir as this readme.os2 is
|
|||||||
the conf.pri file has the following content:
|
the conf.pri file has the following content:
|
||||||
|
|
||||||
##### conf.pri content beginn #####
|
##### conf.pri content beginn #####
|
||||||
PREFIX = .
|
|
||||||
BINDIR = ./bin
|
BINDIR = ./bin
|
||||||
INCDIR = ./include
|
INCDIR = ./include
|
||||||
LIBDIR = ./lib
|
LIBDIR = ./lib
|
||||||
|
|||||||
118
install.os2
118
install.os2
@@ -11,7 +11,7 @@ QBittorrent installation
|
|||||||
|
|
||||||
3. INSTALLATION
|
3. INSTALLATION
|
||||||
|
|
||||||
4. CONTACT
|
4. BUGREPORTS
|
||||||
|
|
||||||
5. CREDITS
|
5. CREDITS
|
||||||
|
|
||||||
@@ -29,17 +29,70 @@ Welcome to QBittorrent port for OS/2 and eComStation.
|
|||||||
2. REQUIREMENTS
|
2. REQUIREMENTS
|
||||||
===============
|
===============
|
||||||
|
|
||||||
* klibc 0.6.3 or later
|
The following requirements can be installed either by rpm or by zip files.
|
||||||
|
|
||||||
ftp://ftp.netlabs.org/pub/gcc/libc-0_6_3-csd3.wpi
|
RPM Installation:
|
||||||
|
|
||||||
* openssl 1.0
|
klibc
|
||||||
|
-----
|
||||||
ftp://ftp.netlabs.org/pub/unixos2/ssl10.zip
|
|
||||||
|
|
||||||
* Qt4 dll
|
1. yum install libc
|
||||||
|
|
||||||
see http://svn.netlabs.org/qt4 for more information whats needed and where to get the latest
|
openssl 1.0
|
||||||
|
-----------
|
||||||
|
|
||||||
|
1. yum install openssl
|
||||||
|
|
||||||
|
pthread
|
||||||
|
-------
|
||||||
|
|
||||||
|
1. yum install pthread
|
||||||
|
|
||||||
|
GCC4Core
|
||||||
|
--------
|
||||||
|
|
||||||
|
1. yum install libgcc
|
||||||
|
2. yum install gcc-stack-protector
|
||||||
|
3. yum install gcc-stdc++-shared-library
|
||||||
|
4. yum install gcc-supc++-shared-library
|
||||||
|
|
||||||
|
Qt4 dll
|
||||||
|
-------
|
||||||
|
|
||||||
|
1. yum install libqt4
|
||||||
|
|
||||||
|
|
||||||
|
ZIP Installation:
|
||||||
|
|
||||||
|
klibc
|
||||||
|
-----
|
||||||
|
|
||||||
|
1. Download klibc 0.6.4 or better (see http://svn.netlabs.org/libc for more information)
|
||||||
|
2. Install the files to your libpath eg x:\ecs\dll
|
||||||
|
|
||||||
|
openssl 1.0
|
||||||
|
-----------
|
||||||
|
|
||||||
|
1. Download the zip file from http://rpm.netlabs.org/release/00/zip
|
||||||
|
2. Install the files to your libpath eg. x:\ecs\dll
|
||||||
|
|
||||||
|
pthread
|
||||||
|
-------
|
||||||
|
|
||||||
|
1. Download pthread 2012-03-13 or better from http://rpm.netlabs.org/release/00/zip
|
||||||
|
2. Install the files to your libpath eg. x:\ecs\dll
|
||||||
|
|
||||||
|
GCC4Core
|
||||||
|
--------
|
||||||
|
|
||||||
|
1. Download GCC4Core 1.2.1 or better from http://ftp.netlabs.org/pub/gcc
|
||||||
|
2. Install the files to your libpath eg. x:\ecs\dll
|
||||||
|
|
||||||
|
Qt4 dll
|
||||||
|
-------
|
||||||
|
|
||||||
|
1. Download Qt4 4.7.3 or better (see http://svn.netlabs.org/qt4 for more information)
|
||||||
|
2. Install the files according to the readme
|
||||||
|
|
||||||
|
|
||||||
3. INSTALLATION
|
3. INSTALLATION
|
||||||
@@ -47,30 +100,6 @@ Welcome to QBittorrent port for OS/2 and eComStation.
|
|||||||
|
|
||||||
To install QBittorrent, do the following:
|
To install QBittorrent, do the following:
|
||||||
|
|
||||||
klibc
|
|
||||||
-----
|
|
||||||
|
|
||||||
1. Download klibc 0.6.3 csd3 or later.
|
|
||||||
2. Install the package by double-clicking on the WPI file.
|
|
||||||
|
|
||||||
|
|
||||||
openssl 1.0
|
|
||||||
-----------
|
|
||||||
|
|
||||||
1. Download the zip file
|
|
||||||
2. Install the files to your libpath eg. x:\ecs\dll
|
|
||||||
|
|
||||||
Qt4 dll
|
|
||||||
-------
|
|
||||||
|
|
||||||
1. Download the package
|
|
||||||
2. Install the package by double-clicking on the wpi file.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QBittorrent
|
|
||||||
-----------
|
|
||||||
|
|
||||||
1. Create a directory for QBittorrent.
|
1. Create a directory for QBittorrent.
|
||||||
2. Extract the QBittorrent package to the new directory.
|
2. Extract the QBittorrent package to the new directory.
|
||||||
3. Create a WPS object for QBittorrent.exe.
|
3. Create a WPS object for QBittorrent.exe.
|
||||||
@@ -78,18 +107,13 @@ QBittorrent
|
|||||||
5. Happy torrenting
|
5. Happy torrenting
|
||||||
|
|
||||||
|
|
||||||
|
4. BUGREPORTS
|
||||||
|
=============
|
||||||
|
|
||||||
4. CONTACT
|
Please create bugreports at http://svn.netlabs.org/qtapps
|
||||||
==========
|
|
||||||
|
|
||||||
Please send bugreports to:
|
|
||||||
|
|
||||||
ecs@aroa.ch
|
|
||||||
|
|
||||||
Only bug reports with a reproducable bug are accepted. :-)
|
Only bug reports with a reproducable bug are accepted. :-)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
5. CREDITS
|
5. CREDITS
|
||||||
==========
|
==========
|
||||||
|
|
||||||
@@ -122,6 +146,20 @@ development, you can do so in one of the following ways:
|
|||||||
7. HISTORY
|
7. HISTORY
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
2012-03-15
|
||||||
|
|
||||||
|
* updated to 2.9.5 code level of QBittorrent
|
||||||
|
|
||||||
|
2011-09-26
|
||||||
|
|
||||||
|
* updated to 2.8.5 code level of QBittorrent
|
||||||
|
* updated to Qt 4.7.3
|
||||||
|
|
||||||
|
2011-06-20
|
||||||
|
|
||||||
|
* updated to 2.7.3 code level of QBittorrent
|
||||||
|
* updated libtorrent to 0.15.6 level
|
||||||
|
|
||||||
2010-12-23
|
2010-12-23
|
||||||
|
|
||||||
* updated to 2.5.2 code level of QBittorrent
|
* updated to 2.5.2 code level of QBittorrent
|
||||||
|
|||||||
19
macxconf.pri
19
macxconf.pri
@@ -2,8 +2,23 @@ PREFIX = /usr/local
|
|||||||
BINDIR = /usr/local/bin
|
BINDIR = /usr/local/bin
|
||||||
DATADIR = /usr/local/share
|
DATADIR = /usr/local/share
|
||||||
|
|
||||||
INCLUDEPATH += /usr/local/include/libtorrent /usr/include/openssl /usr/include /opt/local/include/boost /opt/local/include
|
# Use pkg-config to get all necessary libtorrent DEFINES
|
||||||
LIBS += -ltorrent-rasterbar -lcrypto -L/opt/local/lib -lboost_system-mt -lboost_filesystem-mt -lboost_thread-mt -framework Cocoa -framework Carbon
|
CONFIG += link_pkgconfig
|
||||||
|
PKGCONFIG += libtorrent-rasterbar
|
||||||
|
DEFINES += BOOST_ASIO_DYN_LINK
|
||||||
|
|
||||||
|
# Special include/libs paths (macports)
|
||||||
|
INCLUDEPATH += /usr/include/openssl /usr/include /opt/local/include/boost /opt/local/include
|
||||||
|
LIBS += -L/opt/local/lib
|
||||||
|
|
||||||
|
# OpenSSL lib
|
||||||
|
LIBS += -lssl -lcrypto
|
||||||
|
# Boost system lib
|
||||||
|
LIBS += -lboost_system-mt
|
||||||
|
# Boost filesystem lib (Not needed for libtorrent >= 0.16.0)
|
||||||
|
LIBS += -lboost_filesystem-mt
|
||||||
|
# Carbon
|
||||||
|
LIBS += -framework Carbon -framework IOKit
|
||||||
|
|
||||||
document_icon.path = Contents/Resources
|
document_icon.path = Contents/Resources
|
||||||
document_icon.files = Icons/qBitTorrentDocument.icns
|
document_icon.files = Icons/qBitTorrentDocument.icns
|
||||||
|
|||||||
@@ -11,5 +11,8 @@ LIBS += -ltorrent-rasterbar \
|
|||||||
|
|
||||||
RC_FILE = qbittorrent_os2.rc
|
RC_FILE = qbittorrent_os2.rc
|
||||||
|
|
||||||
|
# LIBTORRENT DEFINES
|
||||||
|
DEFINES += WITH_SHIPPED_GEOIP_H
|
||||||
|
|
||||||
DEFINES += WITH_GEOIP_EMBEDDED
|
DEFINES += WITH_GEOIP_EMBEDDED
|
||||||
message("On eCS(OS/2), GeoIP database must be embedded.")
|
message("On eCS(OS/2), GeoIP database must be embedded.")
|
||||||
|
|||||||
@@ -2,3 +2,17 @@ TEMPLATE = subdirs
|
|||||||
|
|
||||||
SUBDIRS += src
|
SUBDIRS += src
|
||||||
|
|
||||||
|
include(version.pri)
|
||||||
|
|
||||||
|
# Dist
|
||||||
|
dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/ &&
|
||||||
|
dist.commands += git clone . ../$${PROJECT_NAME}-$${PROJECT_VERSION} &&
|
||||||
|
dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.git &&
|
||||||
|
dist.commands += rm -f ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.gitignore &&
|
||||||
|
dist.commands += cd .. &&
|
||||||
|
dist.commands += tar czf $${PROJECT_NAME}-$${PROJECT_VERSION}.tar.gz $${PROJECT_NAME}-$${PROJECT_VERSION} &&
|
||||||
|
dist.commands += tar cf $${PROJECT_NAME}-$${PROJECT_VERSION}.tar $${PROJECT_NAME}-$${PROJECT_VERSION} &&
|
||||||
|
dist.commands += xz -f $${PROJECT_NAME}-$${PROJECT_VERSION}.tar &&
|
||||||
|
dist.commands += rm -fR $${PROJECT_NAME}-$${PROJECT_VERSION}
|
||||||
|
|
||||||
|
QMAKE_EXTRA_TARGETS += dist
|
||||||
|
|||||||
@@ -8,8 +8,6 @@
|
|||||||
</dep>
|
</dep>
|
||||||
<dep type='qt-dbus'>
|
<dep type='qt-dbus'>
|
||||||
</dep>
|
</dep>
|
||||||
<dep type='qt-svg'>
|
|
||||||
</dep>
|
|
||||||
<dep type='pkg-config'>
|
<dep type='pkg-config'>
|
||||||
<required/>
|
<required/>
|
||||||
</dep>
|
</dep>
|
||||||
@@ -19,8 +17,6 @@
|
|||||||
<dep type='libboost'>
|
<dep type='libboost'>
|
||||||
<required/>
|
<required/>
|
||||||
</dep>
|
</dep>
|
||||||
<dep type='libnotify'>
|
|
||||||
</dep>
|
|
||||||
<dep type='geoip-database'>
|
<dep type='geoip-database'>
|
||||||
</dep>
|
</dep>
|
||||||
<dep type='qtsingleapplication'>
|
<dep type='qtsingleapplication'>
|
||||||
|
|||||||
117
qcm/libboost.qcm
117
qcm/libboost.qcm
@@ -6,12 +6,15 @@ arg: with-libboost-lib=[path], Path to libboost library files
|
|||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
#include <boost/version.hpp>
|
#include <boost/version.hpp>
|
||||||
|
#include <libtorrent/version.hpp>
|
||||||
|
|
||||||
class qc_libboost : public ConfObj
|
class qc_libboost : public ConfObj
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_libboost(Conf *c) : ConfObj(c) {}
|
qc_libboost(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "libboost"; }
|
QString name() const { return "libboost"; }
|
||||||
QString shortname() const { return "libboost"; }
|
QString shortname() const { return "libboost"; }
|
||||||
|
|
||||||
QString findBoostLib(QString path, QString lib) const {
|
QString findBoostLib(QString path, QString lib) const {
|
||||||
QString name;
|
QString name;
|
||||||
QDir libDir(path);
|
QDir libDir(path);
|
||||||
@@ -35,78 +38,60 @@ public:
|
|||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
bool exec(){
|
|
||||||
QString s;
|
bool exec(){
|
||||||
s = conf->getenv("QC_WITH_LIBBOOST_INC");
|
QStringList sl;
|
||||||
if(!s.isEmpty()) {
|
QString s = conf->getenv("QC_WITH_LIBBOOST_INC");
|
||||||
if(!conf->checkHeader(s, "boost/format.hpp")) {
|
if (!s.isEmpty())
|
||||||
return false;
|
sl << s;
|
||||||
}
|
sl << "/usr/include";
|
||||||
if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) {
|
sl << "/usr/local/include";
|
||||||
return false;
|
bool found = false;
|
||||||
}
|
foreach (s, sl) {
|
||||||
if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) {
|
if (conf->checkHeader(s, "boost/format.hpp")
|
||||||
return false;
|
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
||||||
}
|
&& conf->checkHeader(s, "boost/filesystem/path.hpp")
|
||||||
}else{
|
#endif
|
||||||
QStringList sl;
|
) {
|
||||||
sl << "/usr/include";
|
found = true;
|
||||||
sl << "/usr/local/include";
|
break;
|
||||||
bool found = false;
|
}
|
||||||
foreach(s, sl){
|
}
|
||||||
if(conf->checkHeader(s, "boost/format.hpp")){
|
if (!found)
|
||||||
found = true;
|
return false;
|
||||||
break;
|
|
||||||
}
|
conf->addIncludePath(s);
|
||||||
}
|
|
||||||
if(!found) {
|
// Find library
|
||||||
return false;
|
s = conf->getenv("QC_WITH_LIBBOOST_LIB");
|
||||||
}
|
|
||||||
if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
conf->addIncludePath(s);
|
|
||||||
// Find library
|
|
||||||
s = conf->getenv("QC_WITH_LIBBOOST_LIB");
|
|
||||||
QStringList required_libs;
|
QStringList required_libs;
|
||||||
#if BOOST_VERSION >= 103500
|
#if BOOST_VERSION >= 103500
|
||||||
required_libs << "system";
|
required_libs << "system";
|
||||||
#endif
|
#endif
|
||||||
if(conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
||||||
// Not required by nox
|
required_libs << "filesystem" ;
|
||||||
required_libs << "filesystem" ;
|
#endif
|
||||||
}
|
required_libs << "thread";
|
||||||
QStringList libDirs;
|
QStringList libDirs;
|
||||||
|
if (!s.isEmpty())
|
||||||
|
libDirs << s;
|
||||||
libDirs << "/usr/lib/" << "/usr/lib64/" << "/usr/local/lib/" << "/usr/local/lib64/";
|
libDirs << "/usr/lib/" << "/usr/lib64/" << "/usr/local/lib/" << "/usr/local/lib64/";
|
||||||
|
|
||||||
foreach(const QString& lib, required_libs) {
|
foreach(const QString& lib, required_libs) {
|
||||||
if(!s.isEmpty()) {
|
bool found = false;
|
||||||
QString detected_name = findBoostLib(s, lib);
|
foreach(const QString& libDir, libDirs) {
|
||||||
if(detected_name.isEmpty()) {
|
QString detected_name = findBoostLib(libDir, lib);
|
||||||
printf("Could not find boost %s library!\n", qPrintable(lib));
|
if(!detected_name.isEmpty()) {
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
conf->addLib("-l"+detected_name);
|
conf->addLib("-l"+detected_name);
|
||||||
}
|
found = true;
|
||||||
} else {
|
break;
|
||||||
bool found = false;
|
|
||||||
foreach(const QString& libDir, libDirs) {
|
|
||||||
QString detected_name = findBoostLib(libDir, lib);
|
|
||||||
if(!detected_name.isEmpty()) {
|
|
||||||
conf->addLib("-l"+detected_name);
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) {
|
|
||||||
printf("Could not find boost %s library!\n", qPrintable(lib));
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(!found) {
|
||||||
|
printf("Could not find boost %s library!\n", qPrintable(lib));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,20 +8,17 @@ class qc_libtorrent_rasterbar : public ConfObj
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
|
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "libtorrent-rasterbar >= 0.14.4"; }
|
QString name() const { return "libtorrent-rasterbar >= 0.15.0"; }
|
||||||
QString shortname() const { return "libtorrent-rasterbar"; }
|
QString shortname() const { return "libtorrent-rasterbar"; }
|
||||||
bool exec(){
|
bool exec(){
|
||||||
QStringList incs;
|
QStringList incs;
|
||||||
QString req_ver = "0.14.4";
|
QString req_ver = "0.15.0";
|
||||||
QString version, libs, other;
|
QString version, libs, other;
|
||||||
VersionMode mode = VersionMin;
|
VersionMode mode = VersionMin;
|
||||||
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
|
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
|
||||||
return false;
|
return false;
|
||||||
for(int n = 0; n < incs.count(); ++n)
|
for(int n = 0; n < incs.count(); ++n)
|
||||||
conf->addIncludePath(incs[n]);
|
conf->addIncludePath(incs[n]);
|
||||||
if(conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
|
||||||
conf->addLib("-lcrypto");
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
12
qcm/qt4.qcm
12
qcm/qt4.qcm
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: Qt >= 4.5
|
name: Qt >= 4.6
|
||||||
arg: enable-debug, Enable debug mode
|
arg: enable-debug, Enable debug mode
|
||||||
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
@@ -9,8 +9,8 @@ class qc_qt4 : public ConfObj
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_qt4(Conf *c) : ConfObj(c) {}
|
qc_qt4(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "Qt >= 4.5"; }
|
QString name() const { return "Qt >= 4.6"; }
|
||||||
QString shortname() const { return "Qt 4.5"; }
|
QString shortname() const { return "Qt 4.6"; }
|
||||||
bool exec()
|
bool exec()
|
||||||
{
|
{
|
||||||
// NOX mode
|
// NOX mode
|
||||||
@@ -19,7 +19,11 @@ public:
|
|||||||
}
|
}
|
||||||
// Debug mode
|
// Debug mode
|
||||||
if(!conf->getenv("QC_ENABLE_DEBUG").isEmpty()) {
|
if(!conf->getenv("QC_ENABLE_DEBUG").isEmpty()) {
|
||||||
|
conf->addExtra("CONFIG -= release");
|
||||||
conf->addExtra("CONFIG += debug");
|
conf->addExtra("CONFIG += debug");
|
||||||
|
} else {
|
||||||
|
conf->addExtra("CONFIG -= debug");
|
||||||
|
conf->addExtra("CONFIG += release");
|
||||||
}
|
}
|
||||||
#ifdef Q_OS_FREEBSD
|
#ifdef Q_OS_FREEBSD
|
||||||
conf->addLib("-lexecinfo");
|
conf->addLib("-lexecinfo");
|
||||||
@@ -27,6 +31,6 @@ public:
|
|||||||
#else
|
#else
|
||||||
conf->addExtra("MANPREFIX = $$PREFIX/share");
|
conf->addExtra("MANPREFIX = $$PREFIX/share");
|
||||||
#endif
|
#endif
|
||||||
return(QT_VERSION >= 0x040500);
|
return(QT_VERSION >= 0x040600);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
BIN
src/Icons/oxygen/security-high.png
Normal file
BIN
src/Icons/oxygen/security-high.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/Icons/oxygen/security-low.png
Normal file
BIN
src/Icons/oxygen/security-low.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/Icons/oxygen/task-attention.png
Normal file
BIN
src/Icons/oxygen/task-attention.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 651 B |
BIN
src/Icons/skin/qbittorrent_mono_dark.png
Normal file
BIN
src/Icons/skin/qbittorrent_mono_dark.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
BIN
src/Icons/skin/qbittorrent_mono_light.png
Normal file
BIN
src/Icons/skin/qbittorrent_mono_light.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
@@ -13,10 +13,6 @@
|
|||||||
<string>qBitTorrentDocument</string>
|
<string>qBitTorrentDocument</string>
|
||||||
<key>CFBundleTypeName</key>
|
<key>CFBundleTypeName</key>
|
||||||
<string>BitTorrent Document</string>
|
<string>BitTorrent Document</string>
|
||||||
<key>CFBundleTypeMIMETypes</key>
|
|
||||||
<array>
|
|
||||||
<string>application/x-bittorrent</string>
|
|
||||||
</array>
|
|
||||||
<key>CFBundleTypeRole</key>
|
<key>CFBundleTypeRole</key>
|
||||||
<string>Viewer</string>
|
<string>Viewer</string>
|
||||||
<key>LSHandlerRank</key>
|
<key>LSHandlerRank</key>
|
||||||
@@ -40,21 +36,55 @@
|
|||||||
<string>BitTorrent Magnet URL</string>
|
<string>BitTorrent Magnet URL</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>qBittorrent</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>qbittorrent_mac.icns</string>
|
<string>qbittorrent_mac.icns</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2.7.0</string>
|
<string>3.0.1</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>qBit</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>qbittorrent</string>
|
<string>qbittorrent</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.qbittorrent</string>
|
<string>org.qbittorrent</string>
|
||||||
<key>NOTE</key>
|
<key>NSAppleScriptEnabled</key>
|
||||||
<string>This file was generated by Qt/QMake.</string>
|
<string>YES</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>Copyright © 2006-2012 Christophe Dumez</string>
|
||||||
|
<key>UTExportedTypeDeclarations</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>UTTypeConformsTo</key>
|
||||||
|
<array>
|
||||||
|
<string>public.data</string>
|
||||||
|
<string>public.item</string>
|
||||||
|
<string>com.bittorrent.torrent</string>
|
||||||
|
</array>
|
||||||
|
<key>UTTypeDescription</key>
|
||||||
|
<string>BitTorrent Document</string>
|
||||||
|
<key>UTTypeIconFile</key>
|
||||||
|
<string>qBitTorrentDocument</string>
|
||||||
|
<key>UTTypeIdentifier</key>
|
||||||
|
<string>org.bittorrent.torrent</string>
|
||||||
|
<key>UTTypeReferenceURL</key>
|
||||||
|
<string>http://www.bittorrent.org/beps/bep_0000.html</string>
|
||||||
|
<key>UTTypeTagSpecification</key>
|
||||||
|
<dict>
|
||||||
|
<key>com.apple.ostype</key>
|
||||||
|
<string>TORR</string>
|
||||||
|
<key>public.filename-extension</key>
|
||||||
|
<array>
|
||||||
|
<string>torrent</string>
|
||||||
|
</array>
|
||||||
|
<key>public.mime-type</key>
|
||||||
|
<string>application/x-bittorrent</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
146
src/about.ui
146
src/about.ui
File diff suppressed because one or more lines are too long
@@ -33,6 +33,9 @@
|
|||||||
|
|
||||||
#include "ui_about.h"
|
#include "ui_about.h"
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
|
#include <QtGlobal>
|
||||||
|
#include <libtorrent/version.hpp>
|
||||||
|
#include <boost/version.hpp>
|
||||||
|
|
||||||
class about : public QDialog, private Ui::AboutDlg{
|
class about : public QDialog, private Ui::AboutDlg{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -42,7 +45,7 @@ class about : public QDialog, private Ui::AboutDlg{
|
|||||||
qDebug("Deleting about dlg");
|
qDebug("Deleting about dlg");
|
||||||
}
|
}
|
||||||
|
|
||||||
about(QWidget *parent): QDialog(parent){
|
about(QWidget *parent): QDialog(parent) {
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
setAttribute(Qt::WA_DeleteOnClose);
|
setAttribute(Qt::WA_DeleteOnClose);
|
||||||
// Set icons
|
// Set icons
|
||||||
@@ -61,6 +64,8 @@ class about : public QDialog, private Ui::AboutDlg{
|
|||||||
QString trans_txt = "<p>"+tr("I would like to thank the following people who volunteered to translate qBittorrent:")+"</p>";
|
QString trans_txt = "<p>"+tr("I would like to thank the following people who volunteered to translate qBittorrent:")+"</p>";
|
||||||
trans_txt += QString::fromUtf8("<ul><li><u>Arabic:</u> SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)</li>\
|
trans_txt += QString::fromUtf8("<ul><li><u>Arabic:</u> SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)</li>\
|
||||||
<li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li>\
|
<li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li>\
|
||||||
|
<li><u>Basque:</u> Xabier Aramendi (azpidatziak@gmail.com)</li>\
|
||||||
|
<li><u>Belarusian:</u> Mihas Varantsou (meequz@gmail.com)</li>\
|
||||||
<li><u>Brazilian:</u> Nick Marinho (nickmarinho@gmail.com)</li>\
|
<li><u>Brazilian:</u> Nick Marinho (nickmarinho@gmail.com)</li>\
|
||||||
<li><u>Bulgarian:</u> Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)</li>\
|
<li><u>Bulgarian:</u> Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)</li>\
|
||||||
<li><u>Catalan:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\
|
<li><u>Catalan:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\
|
||||||
@@ -72,11 +77,12 @@ class about : public QDialog, private Ui::AboutDlg{
|
|||||||
<li><u>Dutch:</u> Pieter Heyvaert (pieter_heyvaert@hotmail.com)</li>\
|
<li><u>Dutch:</u> Pieter Heyvaert (pieter_heyvaert@hotmail.com)</li>\
|
||||||
<li><u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net) and Pekka Niemi (pekka.niemi@iki.fi)</li>\
|
<li><u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net) and Pekka Niemi (pekka.niemi@iki.fi)</li>\
|
||||||
<li><u>Galician:</u> Marcos Lans (marcoslansgarza@gmail.com)</li>\
|
<li><u>Galician:</u> Marcos Lans (marcoslansgarza@gmail.com)</li>\
|
||||||
|
<li><u>Georgian:</u> Beqa Arabuli (arabulibeqa@yahoo.com)</li>\
|
||||||
<li><u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\
|
<li><u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\
|
||||||
<li><u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net)</li>\
|
<li><u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net)</li>\
|
||||||
<li><u>Hungarian:</u> Majoros Péter (majoros.peterj@gmail.com)</li>\
|
<li><u>Hungarian:</u> Majoros Péter (majoros.peterj@gmail.com)</li>\
|
||||||
<li><u>Italian:</u> Matteo Sechi (bu17714@gmail.com)</li>\
|
<li><u>Italian:</u> Matteo Sechi (bu17714@gmail.com)</li>\
|
||||||
<li><u>Japanese:</u> Nardog (alphisation@gmail.com)</li>\
|
<li><u>Japanese:</u> Masato Hashimoto (cabezon.hashimoto@gmail.com)</li>\
|
||||||
<li><u>Korean:</u> Jin Woo Sin (jin828sin@users.sourceforge.net)</li>\
|
<li><u>Korean:</u> Jin Woo Sin (jin828sin@users.sourceforge.net)</li>\
|
||||||
<li><u>Lithuanian:</u> Naglis Jonaitis (njonaitis@gmail.com)</li>\
|
<li><u>Lithuanian:</u> Naglis Jonaitis (njonaitis@gmail.com)</li>\
|
||||||
<li><u>Norwegian:</u> Tomaso</li>\
|
<li><u>Norwegian:</u> Tomaso</li>\
|
||||||
@@ -89,16 +95,20 @@ class about : public QDialog, private Ui::AboutDlg{
|
|||||||
<li><u>Spanish:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\
|
<li><u>Spanish:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\
|
||||||
<li><u>Swedish:</u> Daniel Nylander (po@danielnylander.se)</li>\
|
<li><u>Swedish:</u> Daniel Nylander (po@danielnylander.se)</li>\
|
||||||
<li><u>Turkish:</u> Hasan YILMAZ (iletisim@hedefturkce.com) and Erdem Bingöl (erdem84@gmail.com)</li>\
|
<li><u>Turkish:</u> Hasan YILMAZ (iletisim@hedefturkce.com) and Erdem Bingöl (erdem84@gmail.com)</li>\
|
||||||
<li><u>Ukrainian:</u> Andrey Shpachenko (masterfix@users.sourceforge.net) and Oleh Prypin (blaxpirit@gmail.com)</li></ul>");
|
<li><u>Ukrainian:</u> Oleh Prypin (blaxpirit@gmail.com)</li></ul>");
|
||||||
trans_txt += "<p>"+tr("Please contact me if you would like to translate qBittorrent into your own language.")+"</p>";
|
trans_txt += "<p>"+tr("Please contact me if you would like to translate qBittorrent into your own language.")+"</p>";
|
||||||
te_translation->setHtml(trans_txt);
|
te_translation->setHtml(trans_txt);
|
||||||
// License
|
// License
|
||||||
te_license->append(QString::fromUtf8("<a name='top'></a>"));
|
te_license->append(QString::fromUtf8("<a name='top'></a>"));
|
||||||
QFile licensefile(":/gpl.html");
|
QFile licensefile(":/gpl.html");
|
||||||
if(licensefile.open(QIODevice::ReadOnly|QIODevice::Text)) {
|
if (licensefile.open(QIODevice::ReadOnly|QIODevice::Text)) {
|
||||||
te_license->setHtml(licensefile.readAll());
|
te_license->setHtml(licensefile.readAll());
|
||||||
licensefile.close();
|
licensefile.close();
|
||||||
}
|
}
|
||||||
|
// Libraries
|
||||||
|
label_11->setText(QT_VERSION_STR);
|
||||||
|
label_12->setText(LIBTORRENT_VERSION);
|
||||||
|
label_13->setText(QString::number(BOOST_VERSION / 100000) + "." + QString::number((BOOST_VERSION / 100) % 1000) + "." + QString::number(BOOST_VERSION % 100));
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
599
src/addnewtorrentdialog.cpp
Normal file
599
src/addnewtorrentdialog.cpp
Normal file
File diff suppressed because it is too large
Load Diff
91
src/addnewtorrentdialog.h
Normal file
91
src/addnewtorrentdialog.h
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
* Bittorrent Client using Qt4 and libtorrent.
|
||||||
|
* Copyright (C) 2012 Christophe Dumez
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* Contact : chris@qbittorrent.org
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ADDNEWTORRENTDIALOG_H
|
||||||
|
#define ADDNEWTORRENTDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QUrl>
|
||||||
|
#include <libtorrent/torrent_info.hpp>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
namespace Ui {
|
||||||
|
class AddNewTorrentDialog;
|
||||||
|
}
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
class TorrentContentFilterModel;
|
||||||
|
class PropListDelegate;
|
||||||
|
|
||||||
|
class AddNewTorrentDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
~AddNewTorrentDialog();
|
||||||
|
|
||||||
|
static void showTorrent(const QString& torrent_path, const QString& from_url = QString());
|
||||||
|
static void showMagnet(const QString& torrent_link);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void showAdvancedSettings(bool show);
|
||||||
|
void displayContentTreeMenu(const QPoint&);
|
||||||
|
void on_buttonBox_accepted();
|
||||||
|
void updateDiskSpaceLabel();
|
||||||
|
void onSavePathChanged(int);
|
||||||
|
void relayout();
|
||||||
|
void renameSelectedFile();
|
||||||
|
void setdialogPosition();
|
||||||
|
|
||||||
|
private:
|
||||||
|
explicit AddNewTorrentDialog(QWidget *parent = 0);
|
||||||
|
bool loadTorrent(const QString& torrent_path, const QString& from_url);
|
||||||
|
bool loadMagnet(const QString& magnet_uri);
|
||||||
|
void loadSavePathHistory();
|
||||||
|
void saveSavePathHistory() const;
|
||||||
|
int indexOfSavePath(const QString& save_path);
|
||||||
|
void updateFileNameInSavePaths(const QString& new_filename);
|
||||||
|
void loadState();
|
||||||
|
void saveState();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::AddNewTorrentDialog *ui;
|
||||||
|
TorrentContentFilterModel *m_contentModel;
|
||||||
|
PropListDelegate *m_contentDelegate;
|
||||||
|
bool m_isMagnet;
|
||||||
|
QString m_filePath;
|
||||||
|
QString m_url;
|
||||||
|
QString m_hash;
|
||||||
|
boost::intrusive_ptr<libtorrent::torrent_info> m_torrentInfo;
|
||||||
|
QStringList m_filesPath;
|
||||||
|
bool m_hasRenamedFile;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ADDNEWTORRENTDIALOG_H
|
||||||
274
src/addnewtorrentdialog.ui
Normal file
274
src/addnewtorrentdialog.ui
Normal file
File diff suppressed because it is too large
Load Diff
@@ -59,7 +59,7 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg {
|
|||||||
|
|
||||||
static bool askForDeletionConfirmation(bool *delete_local_files) {
|
static bool askForDeletionConfirmation(bool *delete_local_files) {
|
||||||
DeletionConfirmationDlg dlg;
|
DeletionConfirmationDlg dlg;
|
||||||
if(dlg.exec() == QDialog::Accepted) {
|
if (dlg.exec() == QDialog::Accepted) {
|
||||||
*delete_local_files = dlg.shouldDeleteLocalFiles();
|
*delete_local_files = dlg.shouldDeleteLocalFiles();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
288
src/dnsupdater.cpp
Normal file
288
src/dnsupdater.cpp
Normal file
File diff suppressed because it is too large
Load Diff
81
src/dnsupdater.h
Normal file
81
src/dnsupdater.h
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* Bittorrent Client using Qt4 and libtorrent.
|
||||||
|
* Copyright (C) 2011 Christophe Dumez
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* Contact : chris@qbittorrent.org
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DNSUPDATER_H
|
||||||
|
#define DNSUPDATER_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QHostAddress>
|
||||||
|
#include <QNetworkReply>
|
||||||
|
#include <QDateTime>
|
||||||
|
#include <QTimer>
|
||||||
|
#include "preferences.h"
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Based on http://www.dyndns.com/developers/specs/
|
||||||
|
*/
|
||||||
|
class DNSUpdater : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit DNSUpdater(QObject *parent = 0);
|
||||||
|
~DNSUpdater();
|
||||||
|
static QUrl getRegistrationUrl(int service);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void updateCredentials();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void checkPublicIP();
|
||||||
|
void ipRequestFinished(QNetworkReply* reply);
|
||||||
|
void updateDNSService();
|
||||||
|
void ipUpdateFinished(QNetworkReply* reply);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QUrl getUpdateUrl() const;
|
||||||
|
void processIPUpdateReply(const QString &reply);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QHostAddress m_lastIP;
|
||||||
|
QDateTime m_lastIPCheckTime;
|
||||||
|
QTimer m_ipCheckTimer;
|
||||||
|
int m_state;
|
||||||
|
// Service creds
|
||||||
|
DNS::Service m_service;
|
||||||
|
QString m_domain;
|
||||||
|
QString m_username;
|
||||||
|
QString m_password;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const int IP_CHECK_INTERVAL_MS = 1800000; // 30 min
|
||||||
|
enum State { OK, INVALID_CREDS, FATAL };
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DNSUPDATER_H
|
||||||
@@ -43,38 +43,38 @@ class downloadFromURL : public QDialog, private Ui::downloadFromURL{
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
downloadFromURL(QWidget *parent): QDialog(parent){
|
downloadFromURL(QWidget *parent): QDialog(parent) {
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
setAttribute(Qt::WA_DeleteOnClose);
|
setAttribute(Qt::WA_DeleteOnClose);
|
||||||
setModal(true);
|
setModal(true);
|
||||||
show();
|
show();
|
||||||
// Paste clipboard if there is an URL in it
|
// Paste clipboard if there is an URL in it
|
||||||
QString clip_txt = qApp->clipboard()->text();
|
QString clip_txt = qApp->clipboard()->text();
|
||||||
if(clip_txt.startsWith("http://", Qt::CaseInsensitive) || clip_txt.startsWith("https://", Qt::CaseInsensitive) || clip_txt.startsWith("ftp://", Qt::CaseInsensitive) || clip_txt.startsWith("magnet:", Qt::CaseInsensitive) || clip_txt.startsWith("bc://bt/", Qt::CaseInsensitive)) {
|
if (clip_txt.startsWith("http://", Qt::CaseInsensitive) || clip_txt.startsWith("https://", Qt::CaseInsensitive) || clip_txt.startsWith("ftp://", Qt::CaseInsensitive) || clip_txt.startsWith("magnet:", Qt::CaseInsensitive) || clip_txt.startsWith("bc://bt/", Qt::CaseInsensitive)) {
|
||||||
textUrls->setText(clip_txt);
|
textUrls->setText(clip_txt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
~downloadFromURL(){}
|
~downloadFromURL() {}
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void urlsReadyToBeDownloaded(const QStringList& torrent_urls);
|
void urlsReadyToBeDownloaded(const QStringList& torrent_urls);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void on_downloadButton_clicked(){
|
void on_downloadButton_clicked() {
|
||||||
QString urls = textUrls->toPlainText();
|
QString urls = textUrls->toPlainText();
|
||||||
QStringList url_list = urls.split(QString::fromUtf8("\n"));
|
QStringList url_list = urls.split(QString::fromUtf8("\n"));
|
||||||
QString url;
|
QString url;
|
||||||
QStringList url_list_cleaned;
|
QStringList url_list_cleaned;
|
||||||
foreach(url, url_list){
|
foreach (url, url_list) {
|
||||||
url = url.trimmed();
|
url = url.trimmed();
|
||||||
if(!url.isEmpty()){
|
if (!url.isEmpty()) {
|
||||||
if(url_list_cleaned.indexOf(QRegExp(url, Qt::CaseInsensitive, QRegExp::FixedString)) < 0){
|
if (url_list_cleaned.indexOf(QRegExp(url, Qt::CaseInsensitive, QRegExp::FixedString)) < 0) {
|
||||||
url_list_cleaned << url;
|
url_list_cleaned << url;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!url_list_cleaned.size()){
|
if (!url_list_cleaned.size()) {
|
||||||
QMessageBox::critical(0, tr("No URL entered"), tr("Please type at least one URL."));
|
QMessageBox::critical(0, tr("No URL entered"), tr("Please type at least one URL."));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -83,7 +83,7 @@ class downloadFromURL : public QDialog, private Ui::downloadFromURL{
|
|||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_cancelButton_clicked(){
|
void on_cancelButton_clicked() {
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,31 +14,14 @@
|
|||||||
<string>Download from urls</string>
|
<string>Download from urls</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout">
|
<layout class="QVBoxLayout">
|
||||||
<property name="spacing">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="margin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<property name="spacing">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="margin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="downloadURL_lbl">
|
<widget class="QLabel" name="downloadURL_lbl">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<family>Sans Serif</family>
|
|
||||||
<pointsize>12</pointsize>
|
|
||||||
<weight>75</weight>
|
<weight>75</weight>
|
||||||
<italic>false</italic>
|
|
||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
<underline>false</underline>
|
|
||||||
<strikeout>false</strikeout>
|
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -65,13 +48,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<family>Sans Serif</family>
|
|
||||||
<pointsize>9</pointsize>
|
|
||||||
<weight>50</weight>
|
|
||||||
<italic>true</italic>
|
<italic>true</italic>
|
||||||
<bold>false</bold>
|
|
||||||
<underline>false</underline>
|
|
||||||
<strikeout>false</strikeout>
|
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -81,12 +58,6 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<property name="spacing">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="margin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|||||||
@@ -32,7 +32,6 @@
|
|||||||
#include <QNetworkAccessManager>
|
#include <QNetworkAccessManager>
|
||||||
#include <QNetworkRequest>
|
#include <QNetworkRequest>
|
||||||
#include <QNetworkProxy>
|
#include <QNetworkProxy>
|
||||||
#include <QNetworkCookie>
|
|
||||||
#include <QNetworkCookieJar>
|
#include <QNetworkCookieJar>
|
||||||
|
|
||||||
#include "downloadthread.h"
|
#include "downloadthread.h"
|
||||||
@@ -55,7 +54,7 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) {
|
|||||||
QString url = reply->url().toString();
|
QString url = reply->url().toString();
|
||||||
qDebug("Download finished: %s", qPrintable(url));
|
qDebug("Download finished: %s", qPrintable(url));
|
||||||
// Check if the request was successful
|
// Check if the request was successful
|
||||||
if(reply->error() != QNetworkReply::NoError) {
|
if (reply->error() != QNetworkReply::NoError) {
|
||||||
// Failure
|
// Failure
|
||||||
qDebug("Download failure (%s), reason: %s", qPrintable(url), qPrintable(errorCodeToString(reply->error())));
|
qDebug("Download failure (%s), reason: %s", qPrintable(url), qPrintable(errorCodeToString(reply->error())));
|
||||||
emit downloadFailure(url, errorCodeToString(reply->error()));
|
emit downloadFailure(url, errorCodeToString(reply->error()));
|
||||||
@@ -64,16 +63,21 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) {
|
|||||||
}
|
}
|
||||||
// Check if the server ask us to redirect somewhere lese
|
// Check if the server ask us to redirect somewhere lese
|
||||||
const QVariant redirection = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
|
const QVariant redirection = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
|
||||||
if(redirection.isValid()) {
|
if (redirection.isValid()) {
|
||||||
// We should redirect
|
// We should redirect
|
||||||
qDebug("Redirecting from %s to %s", qPrintable(url), qPrintable(redirection.toUrl().toString()));
|
QUrl newUrl = redirection.toUrl();
|
||||||
m_redirectMapping.insert(redirection.toUrl().toString(), url);
|
// Resolve relative urls
|
||||||
downloadUrl(redirection.toUrl().toString());
|
if (newUrl.isRelative())
|
||||||
|
newUrl = reply->url().resolved(newUrl);
|
||||||
|
const QString newUrlString = newUrl.toString();
|
||||||
|
qDebug("Redirecting from %s to %s", qPrintable(url), qPrintable(newUrlString));
|
||||||
|
m_redirectMapping.insert(newUrlString, url);
|
||||||
|
downloadUrl(newUrlString);
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Checking if it was redirected, restoring initial URL
|
// Checking if it was redirected, restoring initial URL
|
||||||
if(m_redirectMapping.contains(url)) {
|
if (m_redirectMapping.contains(url)) {
|
||||||
url = m_redirectMapping.take(url);
|
url = m_redirectMapping.take(url);
|
||||||
}
|
}
|
||||||
// Success
|
// Success
|
||||||
@@ -82,13 +86,12 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) {
|
|||||||
if (tmpfile->open()) {
|
if (tmpfile->open()) {
|
||||||
QString filePath = tmpfile->fileName();
|
QString filePath = tmpfile->fileName();
|
||||||
qDebug("Temporary filename is: %s", qPrintable(filePath));
|
qDebug("Temporary filename is: %s", qPrintable(filePath));
|
||||||
if(reply->isOpen() || reply->open(QIODevice::ReadOnly)) {
|
if (reply->isOpen() || reply->open(QIODevice::ReadOnly)) {
|
||||||
// TODO: Support GZIP compression
|
// TODO: Support GZIP compression
|
||||||
tmpfile->write(reply->readAll());
|
tmpfile->write(reply->readAll());
|
||||||
tmpfile->close();
|
tmpfile->close();
|
||||||
// XXX: For some reason, tmpfile has to be destroyed before
|
// XXX: tmpfile needs to be deleted on Windows before using the file
|
||||||
// the signal is sent or the file stays locked on Windows
|
// or it will complain that the file is used by another process.
|
||||||
// for some reason.
|
|
||||||
delete tmpfile;
|
delete tmpfile;
|
||||||
// Send finished signal
|
// Send finished signal
|
||||||
emit downloadFinished(url, filePath);
|
emit downloadFinished(url, filePath);
|
||||||
@@ -105,39 +108,21 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) {
|
|||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DISABLE_GUI
|
void DownloadThread::downloadTorrentUrl(const QString &url, const QList<QNetworkCookie>& cookies)
|
||||||
void DownloadThread::loadCookies(const QString &host_name, QString url) {
|
{
|
||||||
const QList<QByteArray> raw_cookies = RssSettings().getHostNameCookies(host_name);
|
|
||||||
QNetworkCookieJar *cookie_jar = m_networkManager.cookieJar();
|
|
||||||
QList<QNetworkCookie> cookies;
|
|
||||||
qDebug("Loading cookies for host name: %s", qPrintable(host_name));
|
|
||||||
foreach(const QByteArray& raw_cookie, raw_cookies) {
|
|
||||||
QList<QByteArray> cookie_parts = raw_cookie.split('=');
|
|
||||||
if(cookie_parts.size() == 2) {
|
|
||||||
qDebug("Loading cookie: %s", raw_cookie.constData());
|
|
||||||
cookies << QNetworkCookie(cookie_parts.first(), cookie_parts.last());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cookie_jar->setCookiesFromUrl(cookies, url);
|
|
||||||
m_networkManager.setCookieJar(cookie_jar);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void DownloadThread::downloadTorrentUrl(const QString &url) {
|
|
||||||
// Process request
|
// Process request
|
||||||
QNetworkReply *reply = downloadUrl(url);
|
QNetworkReply *reply = downloadUrl(url, cookies);
|
||||||
connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64)));
|
connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64)));
|
||||||
}
|
}
|
||||||
|
|
||||||
QNetworkReply* DownloadThread::downloadUrl(const QString &url){
|
QNetworkReply* DownloadThread::downloadUrl(const QString &url, const QList<QNetworkCookie>& cookies) {
|
||||||
// Update proxy settings
|
// Update proxy settings
|
||||||
applyProxySettings();
|
applyProxySettings();
|
||||||
#ifndef DISABLE_GUI
|
// Set cookies
|
||||||
// Load cookies
|
if (!cookies.empty()) {
|
||||||
QString host_name = QUrl::fromEncoded(url.toUtf8()).host();
|
qDebug("Setting %d cookies for url: %s", cookies.size(), qPrintable(url));
|
||||||
if(!host_name.isEmpty())
|
m_networkManager.cookieJar()->setCookiesFromUrl(cookies, url);
|
||||||
loadCookies(host_name, url);
|
}
|
||||||
#endif
|
|
||||||
// Process download request
|
// Process download request
|
||||||
qDebug("url is %s", qPrintable(url));
|
qDebug("url is %s", qPrintable(url));
|
||||||
const QUrl qurl = QUrl::fromEncoded(url.toUtf8());
|
const QUrl qurl = QUrl::fromEncoded(url.toUtf8());
|
||||||
@@ -147,7 +132,7 @@ QNetworkReply* DownloadThread::downloadUrl(const QString &url){
|
|||||||
request.setRawHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5");
|
request.setRawHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5");
|
||||||
qDebug("Downloading %s...", request.url().toEncoded().data());
|
qDebug("Downloading %s...", request.url().toEncoded().data());
|
||||||
qDebug("%d cookies for this URL", m_networkManager.cookieJar()->cookiesForUrl(url).size());
|
qDebug("%d cookies for this URL", m_networkManager.cookieJar()->cookiesForUrl(url).size());
|
||||||
for(int i=0; i<m_networkManager.cookieJar()->cookiesForUrl(url).size(); ++i) {
|
for (int i=0; i<m_networkManager.cookieJar()->cookiesForUrl(url).size(); ++i) {
|
||||||
qDebug("%s=%s", m_networkManager.cookieJar()->cookiesForUrl(url).at(i).name().data(), m_networkManager.cookieJar()->cookiesForUrl(url).at(i).value().data());
|
qDebug("%s=%s", m_networkManager.cookieJar()->cookiesForUrl(url).at(i).name().data(), m_networkManager.cookieJar()->cookiesForUrl(url).at(i).value().data());
|
||||||
qDebug("Domain: %s, Path: %s", qPrintable(m_networkManager.cookieJar()->cookiesForUrl(url).at(i).domain()), qPrintable(m_networkManager.cookieJar()->cookiesForUrl(url).at(i).path()));
|
qDebug("Domain: %s, Path: %s", qPrintable(m_networkManager.cookieJar()->cookiesForUrl(url).at(i).domain()), qPrintable(m_networkManager.cookieJar()->cookiesForUrl(url).at(i).path()));
|
||||||
}
|
}
|
||||||
@@ -156,10 +141,10 @@ QNetworkReply* DownloadThread::downloadUrl(const QString &url){
|
|||||||
|
|
||||||
void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) {
|
void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) {
|
||||||
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
|
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
|
||||||
if(!reply) return;
|
if (!reply) return;
|
||||||
if(bytesTotal > 0) {
|
if (bytesTotal > 0) {
|
||||||
// Total number of bytes is available
|
// Total number of bytes is available
|
||||||
if(bytesTotal > 1048576) {
|
if (bytesTotal > 1048576) {
|
||||||
// More than 1MB, this is probably not a torrent file, aborting...
|
// More than 1MB, this is probably not a torrent file, aborting...
|
||||||
reply->abort();
|
reply->abort();
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
@@ -167,7 +152,7 @@ void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal)
|
|||||||
disconnect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64)));
|
disconnect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64)));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(bytesReceived > 1048576) {
|
if (bytesReceived > 1048576) {
|
||||||
// More than 1MB, this is probably not a torrent file, aborting...
|
// More than 1MB, this is probably not a torrent file, aborting...
|
||||||
reply->abort();
|
reply->abort();
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
@@ -178,13 +163,13 @@ void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal)
|
|||||||
void DownloadThread::applyProxySettings() {
|
void DownloadThread::applyProxySettings() {
|
||||||
QNetworkProxy proxy;
|
QNetworkProxy proxy;
|
||||||
const Preferences pref;
|
const Preferences pref;
|
||||||
if(pref.isProxyEnabled()) {
|
if (pref.isProxyEnabled()) {
|
||||||
// Proxy enabled
|
// Proxy enabled
|
||||||
proxy.setHostName(pref.getProxyIp());
|
proxy.setHostName(pref.getProxyIp());
|
||||||
proxy.setPort(pref.getProxyPort());
|
proxy.setPort(pref.getProxyPort());
|
||||||
// Default proxy type is HTTP, we must change if it is SOCKS5
|
// Default proxy type is HTTP, we must change if it is SOCKS5
|
||||||
const int proxy_type = pref.getProxyType();
|
const int proxy_type = pref.getProxyType();
|
||||||
if(proxy_type == Proxy::SOCKS5 || proxy_type == Proxy::SOCKS5_PW) {
|
if (proxy_type == Proxy::SOCKS5 || proxy_type == Proxy::SOCKS5_PW) {
|
||||||
qDebug() << Q_FUNC_INFO << "using SOCKS proxy";
|
qDebug() << Q_FUNC_INFO << "using SOCKS proxy";
|
||||||
proxy.setType(QNetworkProxy::Socks5Proxy);
|
proxy.setType(QNetworkProxy::Socks5Proxy);
|
||||||
} else {
|
} else {
|
||||||
@@ -192,7 +177,7 @@ void DownloadThread::applyProxySettings() {
|
|||||||
proxy.setType(QNetworkProxy::HttpProxy);
|
proxy.setType(QNetworkProxy::HttpProxy);
|
||||||
}
|
}
|
||||||
// Authentication?
|
// Authentication?
|
||||||
if(pref.isProxyAuthEnabled()) {
|
if (pref.isProxyAuthEnabled()) {
|
||||||
qDebug("Proxy requires authentication, authenticating");
|
qDebug("Proxy requires authentication, authenticating");
|
||||||
proxy.setUser(pref.getProxyUsername());
|
proxy.setUser(pref.getProxyUsername());
|
||||||
proxy.setPassword(pref.getProxyPassword());
|
proxy.setPassword(pref.getProxyPassword());
|
||||||
@@ -204,7 +189,7 @@ void DownloadThread::applyProxySettings() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
QString DownloadThread::errorCodeToString(QNetworkReply::NetworkError status) {
|
QString DownloadThread::errorCodeToString(QNetworkReply::NetworkError status) {
|
||||||
switch(status){
|
switch(status) {
|
||||||
case QNetworkReply::HostNotFoundError:
|
case QNetworkReply::HostNotFoundError:
|
||||||
return tr("The remote host name was not found (invalid hostname)");
|
return tr("The remote host name was not found (invalid hostname)");
|
||||||
case QNetworkReply::OperationCanceledError:
|
case QNetworkReply::OperationCanceledError:
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
#define DOWNLOADTHREAD_H
|
#define DOWNLOADTHREAD_H
|
||||||
|
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
|
#include <QNetworkCookie>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
#include <QSslError>
|
#include <QSslError>
|
||||||
@@ -45,8 +46,8 @@ class DownloadThread : public QObject {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
DownloadThread(QObject* parent = 0);
|
DownloadThread(QObject* parent = 0);
|
||||||
QNetworkReply* downloadUrl(const QString &url);
|
QNetworkReply* downloadUrl(const QString &url, const QList<QNetworkCookie>& raw_cookies = QList<QNetworkCookie>());
|
||||||
void downloadTorrentUrl(const QString &url);
|
void downloadTorrentUrl(const QString &url, const QList<QNetworkCookie>& raw_cookies = QList<QNetworkCookie>());
|
||||||
//void setProxy(QString IP, int port, QString username, QString password);
|
//void setProxy(QString IP, int port, QString username, QString password);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -63,9 +64,6 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
QString errorCodeToString(QNetworkReply::NetworkError status);
|
QString errorCodeToString(QNetworkReply::NetworkError status);
|
||||||
void applyProxySettings();
|
void applyProxySettings();
|
||||||
#ifndef DISABLE_GUI
|
|
||||||
void loadCookies(const QString &host_name, QString url);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QNetworkAccessManager m_networkManager;
|
QNetworkAccessManager m_networkManager;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user