Compare commits
2937 Commits
release-2.
...
release-3.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19adad5e43 | ||
|
|
edcd9539e7 | ||
|
|
066c70b047 | ||
|
|
2b24018f7a | ||
|
|
c421da873f | ||
|
|
1ae49d1743 | ||
|
|
aecb51c42b | ||
|
|
19c0a98701 | ||
|
|
ba1f9558a9 | ||
|
|
79f3c6439c | ||
|
|
99a596ab8d | ||
|
|
9a74b27a85 | ||
|
|
b12f250642 | ||
|
|
2dede108e7 | ||
|
|
7cf1e7b8ca | ||
|
|
e1934e8c16 | ||
|
|
14b958216b | ||
|
|
1120c14890 | ||
|
|
88075d9226 | ||
|
|
36464fcd59 | ||
|
|
f7f1c81238 | ||
|
|
b8da4bcf74 | ||
|
|
bf7a6aceb0 | ||
|
|
3ef2da898b | ||
|
|
d0cd939143 | ||
|
|
e36d76d457 | ||
|
|
daa4314093 | ||
|
|
f707d6c9d5 | ||
|
|
83b6619b16 | ||
|
|
8b322648c8 | ||
|
|
d159117965 | ||
|
|
1fd2dce0bd | ||
|
|
f97238e1c9 | ||
|
|
67355810ae | ||
|
|
7246b0c254 | ||
|
|
03345b95c1 | ||
|
|
16f6e26f67 | ||
|
|
5e643ffefd | ||
|
|
0bd4308d0f | ||
|
|
c78ad12144 | ||
|
|
cb838edb50 | ||
|
|
8fac3c793d | ||
|
|
26896de9ad | ||
|
|
238715ad22 | ||
|
|
a3710251a7 | ||
|
|
f6634ccacd | ||
|
|
e4df557208 | ||
|
|
355c55452a | ||
|
|
87350e3842 | ||
|
|
0031cfc60a | ||
|
|
d0374dd425 | ||
|
|
d8c8d51386 | ||
|
|
5740c933fb | ||
|
|
1f13dd0cc3 | ||
|
|
84d9fc2da2 | ||
|
|
47ec418e9c | ||
|
|
72ca101830 | ||
|
|
0625ef62c1 | ||
|
|
8161185b08 | ||
|
|
739132ec82 | ||
|
|
cf61dd3d09 | ||
|
|
82768e2098 | ||
|
|
3b9dc7add2 | ||
|
|
af2145d567 | ||
|
|
d7d604d83a | ||
|
|
9aaf958fad | ||
|
|
20204ac4c4 | ||
|
|
0c3d5f0430 | ||
|
|
820a558bca | ||
|
|
19ac362103 | ||
|
|
f64e8f9459 | ||
|
|
bc77a7c2d1 | ||
|
|
1a7f2b29b7 | ||
|
|
037aaf752e | ||
|
|
5cb04f9b31 | ||
|
|
ac166a89ae | ||
|
|
cd9515982d | ||
|
|
808a4d7e9b | ||
|
|
f75f5616b1 | ||
|
|
da81d3351d | ||
|
|
9d05d864e2 | ||
|
|
9aee1632ae | ||
|
|
714cfe3241 | ||
|
|
ddbe5b18d5 | ||
|
|
15a948675b | ||
|
|
cea3f71e61 | ||
|
|
d04f829e35 | ||
|
|
e252c19342 | ||
|
|
2f0d6815c9 | ||
|
|
54eaf51880 | ||
|
|
6f5f661f30 | ||
|
|
8659fec3f2 | ||
|
|
2cf8b86dad | ||
|
|
0b0e9675c4 | ||
|
|
8267bd6434 | ||
|
|
6593cb774d | ||
|
|
fcee431dee | ||
|
|
60d7e3ef30 | ||
|
|
dac8e20aad | ||
|
|
d845b57ad1 | ||
|
|
a9310e0f19 | ||
|
|
6c56e9736c | ||
|
|
b63915f10a | ||
|
|
bf173d894c | ||
|
|
d11e0f523c | ||
|
|
e09d75f68e | ||
|
|
077006d4d6 | ||
|
|
092a1d4f33 | ||
|
|
0047ba5dc5 | ||
|
|
42efa21ef3 | ||
|
|
09538393a6 | ||
|
|
2b6ee130a2 | ||
|
|
b14777584e | ||
|
|
d8c40084a7 | ||
|
|
4aa9ed946f | ||
|
|
b6ef38e7a7 | ||
|
|
0f900268da | ||
|
|
c1831a4e97 | ||
|
|
6d961cdcc5 | ||
|
|
292e077562 | ||
|
|
e2bebdf57b | ||
|
|
db6cc8336b | ||
|
|
1af271653a | ||
|
|
bd1a34bebe | ||
|
|
7ccefae3f8 | ||
|
|
f4a9597ae8 | ||
|
|
41e5216371 | ||
|
|
b41b044d02 | ||
|
|
8d5cfcdabd | ||
|
|
ef58c08876 | ||
|
|
52f59371cf | ||
|
|
311e78d016 | ||
|
|
d1c514ea3e | ||
|
|
3974861955 | ||
|
|
af04d80d93 | ||
|
|
de9d675d3d | ||
|
|
b734532b18 | ||
|
|
bfd864efce | ||
|
|
573b0d921e | ||
|
|
758e357fc5 | ||
|
|
0b235dc968 | ||
|
|
8305d8ff64 | ||
|
|
534a94310d | ||
|
|
26e6787e85 | ||
|
|
c659a180d2 | ||
|
|
632faf55be | ||
|
|
5c7bc46451 | ||
|
|
6932c960da | ||
|
|
a4d9e65d38 | ||
|
|
ab83c2fff5 | ||
|
|
106f5d7cc0 | ||
|
|
11943f6b88 | ||
|
|
665e0967a5 | ||
|
|
85b42fc3cf | ||
|
|
99e6d0010d | ||
|
|
b294d89b4f | ||
|
|
b78d1a82df | ||
|
|
96644c12ab | ||
|
|
45d10b1398 | ||
|
|
ef328f83c5 | ||
|
|
6cf780f57c | ||
|
|
37b048f2ab | ||
|
|
260ed50f10 | ||
|
|
307b5b7091 | ||
|
|
1de9da89c1 | ||
|
|
5fadb0d53e | ||
|
|
49fa853dde | ||
|
|
7555380964 | ||
|
|
36d299f891 | ||
|
|
658cc53f85 | ||
|
|
08f4c0ed12 | ||
|
|
5917b33ec6 | ||
|
|
65ec3d0e0f | ||
|
|
61c0c439f1 | ||
|
|
4cbe3fd6f7 | ||
|
|
94df3f44d7 | ||
|
|
370effd0d3 | ||
|
|
ff6e058dea | ||
|
|
d3a6bcf7bf | ||
|
|
c6a9a94331 | ||
|
|
abdcaebc8e | ||
|
|
c5a433a71e | ||
|
|
0a10b98975 | ||
|
|
506f933c48 | ||
|
|
1399a9c86a | ||
|
|
1fc916865c | ||
|
|
8790092a81 | ||
|
|
00f9180b81 | ||
|
|
0236b1bd6d | ||
|
|
bb61b3c05f | ||
|
|
78469c8faa | ||
|
|
3947f9c8ae | ||
|
|
6c6ebaf485 | ||
|
|
57915462b0 | ||
|
|
8b94da20d3 | ||
|
|
84c65c2b50 | ||
|
|
e8c9db0084 | ||
|
|
19419b85ff | ||
|
|
5eb8a2a9f0 | ||
|
|
95bdb61ad2 | ||
|
|
d79c79b4ae | ||
|
|
9b77d1f9f3 | ||
|
|
659fa242e2 | ||
|
|
1ba13b32a8 | ||
|
|
1c38568f42 | ||
|
|
7c1f712181 | ||
|
|
81d813c4c5 | ||
|
|
2cf7e94767 | ||
|
|
9f71dd2c61 | ||
|
|
f93374a946 | ||
|
|
4158465109 | ||
|
|
125d130984 | ||
|
|
f66ef95918 | ||
|
|
634b4d4f4d | ||
|
|
ced950a764 | ||
|
|
d84c367db5 | ||
|
|
79aa3dfbcf | ||
|
|
a308c6b9d0 | ||
|
|
614c1f5d6e | ||
|
|
fde9c2b9e9 | ||
|
|
84a39671de | ||
|
|
20086543de | ||
|
|
1002e69e44 | ||
|
|
09aa930142 | ||
|
|
ada76381a1 | ||
|
|
e4d5e38727 | ||
|
|
99349193b4 | ||
|
|
d69047df2e | ||
|
|
8318fc2b61 | ||
|
|
ff5a633a8e | ||
|
|
28fcadc9ee | ||
|
|
8a98cd5e20 | ||
|
|
0706c3b3c8 | ||
|
|
17188e31c5 | ||
|
|
45d1e93ad2 | ||
|
|
4c6f8413cb | ||
|
|
db5e06a48f | ||
|
|
e51013117c | ||
|
|
11148fcda6 | ||
|
|
d74e96f65f | ||
|
|
454cd4c120 | ||
|
|
8d5992d7cf | ||
|
|
c37ad843b4 | ||
|
|
2d130bfa85 | ||
|
|
4ac1f7b09e | ||
|
|
db8d8b73a1 | ||
|
|
c2dbf50d0b | ||
|
|
7bb99ceeea | ||
|
|
44fff4f503 | ||
|
|
a087232404 | ||
|
|
ac96667af2 | ||
|
|
8f5a0a273f | ||
|
|
74869d87f6 | ||
|
|
1f0ccabd1c | ||
|
|
c6e294a130 | ||
|
|
96bff490a3 | ||
|
|
7c3155ba44 | ||
|
|
74b26edc0d | ||
|
|
959ee4c46b | ||
|
|
4a9b772b72 | ||
|
|
d5aef5c8cc | ||
|
|
7780e9ad0a | ||
|
|
4612a5a882 | ||
|
|
3a5fe38be0 | ||
|
|
d68b0c529b | ||
|
|
c41082f610 | ||
|
|
b6af8f190c | ||
|
|
850018c86b | ||
|
|
7dbda1b3cf | ||
|
|
29ead90638 | ||
|
|
d9061416a0 | ||
|
|
42406b38fb | ||
|
|
102b1b2065 | ||
|
|
c110c5a084 | ||
|
|
e24fb4ec73 | ||
|
|
9f7d4f0898 | ||
|
|
c0b7cd79a8 | ||
|
|
d4c7b7be40 | ||
|
|
5cecdc18ed | ||
|
|
48240fbded | ||
|
|
dbab9e3b93 | ||
|
|
e4d1ee44a9 | ||
|
|
4ae6035ee9 | ||
|
|
722d851082 | ||
|
|
01f253b24a | ||
|
|
a4ab14e6d0 | ||
|
|
8676fbae02 | ||
|
|
203c1750a6 | ||
|
|
2db2f73b48 | ||
|
|
3efba63e23 | ||
|
|
8f29befc65 | ||
|
|
630fd7c344 | ||
|
|
c74334669b | ||
|
|
c7dc6d0edf | ||
|
|
0f9ece76f8 | ||
|
|
ec31081927 | ||
|
|
6598b3266c | ||
|
|
0d723af8f6 | ||
|
|
5559af8d07 | ||
|
|
f50290d46d | ||
|
|
0dd3f6672d | ||
|
|
d515a5b86a | ||
|
|
e810fa1053 | ||
|
|
12ea7efd5c | ||
|
|
bcf2534e23 | ||
|
|
412e6b0a43 | ||
|
|
0d85124a46 | ||
|
|
3abfbf107e | ||
|
|
643803edfd | ||
|
|
3fbb61033f | ||
|
|
ddbe96c807 | ||
|
|
44d0baf9a2 | ||
|
|
ae67141fed | ||
|
|
b9cb41cc4a | ||
|
|
2e3341172a | ||
|
|
4310b14e0e | ||
|
|
db96dede87 | ||
|
|
ba41a7bd9c | ||
|
|
7fb9a2196c | ||
|
|
781fcc800a | ||
|
|
819da54868 | ||
|
|
276377138e | ||
|
|
a23198324f | ||
|
|
7712ca3efd | ||
|
|
389c5fb114 | ||
|
|
a360e222e8 | ||
|
|
87e9adb666 | ||
|
|
d15107c1b4 | ||
|
|
e08ae6b668 | ||
|
|
c6bc4d2cd2 | ||
|
|
08cd1c9b0c | ||
|
|
909716849e | ||
|
|
3e0ea7b490 | ||
|
|
4402c7a8ef | ||
|
|
672cd5a999 | ||
|
|
14310f9b05 | ||
|
|
d0a4b2da79 | ||
|
|
1e802f2090 | ||
|
|
c311080d8d | ||
|
|
6a45e9dbd7 | ||
|
|
bbf47b0907 | ||
|
|
a1a5fb065e | ||
|
|
36ae095c69 | ||
|
|
4ac19e2b27 | ||
|
|
08138307da | ||
|
|
eeb43d6bfd | ||
|
|
4cd134a35e | ||
|
|
2b03f2382a | ||
|
|
dbf8675de3 | ||
|
|
b78ea79d30 | ||
|
|
89b82778e6 | ||
|
|
da561ccd38 | ||
|
|
11ebb9f0f7 | ||
|
|
e7c27c9b8b | ||
|
|
0f298397b3 | ||
|
|
70215bd3ff | ||
|
|
fcebe1e485 | ||
|
|
ae8c6ecf1c | ||
|
|
62cc91efc4 | ||
|
|
774d749eef | ||
|
|
2fc53613cd | ||
|
|
135165d856 | ||
|
|
0ea8fd6996 | ||
|
|
f8fdd58e20 | ||
|
|
6e9ed4ead7 | ||
|
|
d09b0d5f72 | ||
|
|
251d5b1921 | ||
|
|
4f8ccd0dfc | ||
|
|
04430a4cdd | ||
|
|
c7aa2cb684 | ||
|
|
65012bc517 | ||
|
|
0b0e137175 | ||
|
|
6bea659d50 | ||
|
|
37f821556e | ||
|
|
532bec5d87 | ||
|
|
74a1cce46c | ||
|
|
6cdbf6f869 | ||
|
|
51cde405f9 | ||
|
|
17c122e5ad | ||
|
|
4f99b04a42 | ||
|
|
c8cc727aea | ||
|
|
8ca7603f38 | ||
|
|
af40488e5c | ||
|
|
a1298fbf58 | ||
|
|
f276ad568e | ||
|
|
a1f82db5d5 | ||
|
|
9bd8b90dbe | ||
|
|
ed49c3ad31 | ||
|
|
3c813d456c | ||
|
|
881c2babe5 | ||
|
|
2a8b530b46 | ||
|
|
1b2de035b4 | ||
|
|
2ea427bd24 | ||
|
|
02fab15e7b | ||
|
|
3b43d48836 | ||
|
|
94cfba6f23 | ||
|
|
06cd53ab92 | ||
|
|
68602cb375 | ||
|
|
ecaa81da0f | ||
|
|
d3e744d0fb | ||
|
|
d57381a524 | ||
|
|
b033beec60 | ||
|
|
d05761f1f0 | ||
|
|
6ed0d4bc1c | ||
|
|
75ff773068 | ||
|
|
caf1a050c8 | ||
|
|
4cd3c144dc | ||
|
|
4d51cc6c0f | ||
|
|
f3e90265fd | ||
|
|
d97c1d2b6b | ||
|
|
ec4490a7cb | ||
|
|
d03261480d | ||
|
|
b610ab4825 | ||
|
|
4662bcf112 | ||
|
|
890f9a7e19 | ||
|
|
7f713cbd8c | ||
|
|
0841e91ac7 | ||
|
|
73d1abd6f0 | ||
|
|
f6f69ddf63 | ||
|
|
abe3cf9323 | ||
|
|
213fd9ffb7 | ||
|
|
e67156b403 | ||
|
|
5ccf3adb4d | ||
|
|
115855a177 | ||
|
|
a052963775 | ||
|
|
84b4e7b65e | ||
|
|
c96eff2c15 | ||
|
|
7d99b21c20 | ||
|
|
224772f4c2 | ||
|
|
02c161be60 | ||
|
|
53c1846757 | ||
|
|
17d3a51285 | ||
|
|
ed0acede20 | ||
|
|
14808d2bef | ||
|
|
4cd4ad457b | ||
|
|
bb6d7ba2ff | ||
|
|
cc04ebd45f | ||
|
|
0e72583c1f | ||
|
|
7d4a3e007e | ||
|
|
6c89df7206 | ||
|
|
dd78744695 | ||
|
|
d1020b0dc7 | ||
|
|
8664a4d7ba | ||
|
|
de3108e1e5 | ||
|
|
fd8a2e05a4 | ||
|
|
e028fa9be0 | ||
|
|
42e81b9d19 | ||
|
|
107906928a | ||
|
|
7adf012f9c | ||
|
|
13cd42f053 | ||
|
|
e1750c8994 | ||
|
|
82171f5a08 | ||
|
|
7a16146f6f | ||
|
|
4f063a478c | ||
|
|
864202c757 | ||
|
|
4b42480f74 | ||
|
|
9924bb94b2 | ||
|
|
19a5fc03aa | ||
|
|
836a7c8517 | ||
|
|
3104c6aba0 | ||
|
|
e192fd35c4 | ||
|
|
235bb7c3a4 | ||
|
|
fbd97aea3f | ||
|
|
6d9c3bc644 | ||
|
|
aa327fb2df | ||
|
|
080377b662 | ||
|
|
798bd2388b | ||
|
|
102b2dc738 | ||
|
|
fca0c8ace4 | ||
|
|
522d68ab0b | ||
|
|
a730c27aef | ||
|
|
743134856e | ||
|
|
47291ea7e7 | ||
|
|
85d4946486 | ||
|
|
b6c59fd70b | ||
|
|
050aadd3fa | ||
|
|
05fc956e61 | ||
|
|
323de569df | ||
|
|
216778be64 | ||
|
|
25f8740751 | ||
|
|
0cfa3ba06d | ||
|
|
8711722257 | ||
|
|
bf59997bac | ||
|
|
a36c52ea44 | ||
|
|
c6329f6327 | ||
|
|
f261c18d73 | ||
|
|
e604d78c3c | ||
|
|
64a26e596e | ||
|
|
af997c5802 | ||
|
|
f6e4ff1ab9 | ||
|
|
09abc9d8b7 | ||
|
|
18edf7a20c | ||
|
|
7f858dfef5 | ||
|
|
625cebcaad | ||
|
|
b00950aa7a | ||
|
|
267f30414d | ||
|
|
89e3500a8e | ||
|
|
2fa0f86df4 | ||
|
|
ea0d10ebc0 | ||
|
|
5c95048b74 | ||
|
|
32a8105590 | ||
|
|
6584de3a19 | ||
|
|
1047f14680 | ||
|
|
da169fd26e | ||
|
|
2ee57ddb20 | ||
|
|
b1b29b06fe | ||
|
|
f8ce9fa98d | ||
|
|
f3e0bf3584 | ||
|
|
b7758fd6ba | ||
|
|
a284f47c42 | ||
|
|
686fd33f3e | ||
|
|
3fc1f4e162 | ||
|
|
803dc1a571 | ||
|
|
33890c297f | ||
|
|
98403e3816 | ||
|
|
7f7802680b | ||
|
|
47ffe15793 | ||
|
|
52b2cba8e2 | ||
|
|
82a0c4585c | ||
|
|
ea3c6b6b09 | ||
|
|
8bd5576b1f | ||
|
|
c085648063 | ||
|
|
f1845813a0 | ||
|
|
c8d51e91f4 | ||
|
|
ba014d0033 | ||
|
|
b486d419dc | ||
|
|
b5d447e6d0 | ||
|
|
33d9ae1e4a | ||
|
|
d8afccf948 | ||
|
|
2a4e8c1b63 | ||
|
|
30bf0a4c5f | ||
|
|
e1d85627a8 | ||
|
|
44a4889074 | ||
|
|
64fabfed5b | ||
|
|
7b04e8204f | ||
|
|
65621e2886 | ||
|
|
23b52f3d11 | ||
|
|
fbaaf10ee5 | ||
|
|
f1a3a1424f | ||
|
|
073b09ab41 | ||
|
|
d4dd04cbdc | ||
|
|
8e7ef66011 | ||
|
|
6fde7050ec | ||
|
|
164f3b761d | ||
|
|
04ad78404c | ||
|
|
1e6aa54f0e | ||
|
|
a29f858f77 | ||
|
|
7c1e91f256 | ||
|
|
2dece90144 | ||
|
|
bc605fe09e | ||
|
|
d52d64cbaf | ||
|
|
050893d8df | ||
|
|
0c514a0f07 | ||
|
|
147068afbf | ||
|
|
cdc893a6cf | ||
|
|
84c2ba2f4e | ||
|
|
4ec176b683 | ||
|
|
6b660d505c | ||
|
|
2647d9e994 | ||
|
|
70a0de8de5 | ||
|
|
454dbd5cd8 | ||
|
|
a4085ef68c | ||
|
|
0e09717a02 | ||
|
|
647f81ff84 | ||
|
|
2c7441b31d | ||
|
|
3d9b4988d9 | ||
|
|
e797365e3d | ||
|
|
a261ab14ee | ||
|
|
be5a1ae272 | ||
|
|
9913484f68 | ||
|
|
2de8b9112d | ||
|
|
75e28bb3e6 | ||
|
|
7a99eb8e23 | ||
|
|
0b15515f59 | ||
|
|
9ff7eab83b | ||
|
|
b32a68318c | ||
|
|
029505bf1d | ||
|
|
01307b377e | ||
|
|
0322002b46 | ||
|
|
e5617f4cde | ||
|
|
64dad99c36 | ||
|
|
f227130388 | ||
|
|
38d78b7606 | ||
|
|
a77be2f6ce | ||
|
|
1ad9d9b4e0 | ||
|
|
f4e5d7bc11 | ||
|
|
22e2bafa7a | ||
|
|
562e9ce108 | ||
|
|
b8598bfc14 | ||
|
|
2a31d378a5 | ||
|
|
a33a959f63 | ||
|
|
1ff3818e6b | ||
|
|
116fa8936a | ||
|
|
78663b9c27 | ||
|
|
0213b5f511 | ||
|
|
559e0ac218 | ||
|
|
94b58ca229 | ||
|
|
7aa3eff845 | ||
|
|
9a0a26dae1 | ||
|
|
d1c3a07ba6 | ||
|
|
a30dc3a823 | ||
|
|
8464720d99 | ||
|
|
4f667c6e7d | ||
|
|
365ba4341a | ||
|
|
c928987313 | ||
|
|
d5aa316613 | ||
|
|
43271d3ea7 | ||
|
|
9aa0041422 | ||
|
|
f0e98e2828 | ||
|
|
1e7668608a | ||
|
|
f918e7f0b0 | ||
|
|
a685349ae6 | ||
|
|
7c2e679c8b | ||
|
|
b6e16fbdc0 | ||
|
|
a2d3a1c41c | ||
|
|
4af28bfe81 | ||
|
|
4ba5e43933 | ||
|
|
6debc1e958 | ||
|
|
9651d8736b | ||
|
|
07ec2cce31 | ||
|
|
698171bbcf | ||
|
|
3519cb281f | ||
|
|
df23fc1de2 | ||
|
|
f445c8f872 | ||
|
|
eb035e2199 | ||
|
|
dac3a1a0ca | ||
|
|
902aa4503e | ||
|
|
314fc003b3 | ||
|
|
c36b2774ed | ||
|
|
ec08bfac07 | ||
|
|
cd754fd239 | ||
|
|
a6e7588593 | ||
|
|
008ba33ce9 | ||
|
|
f49ba3e93d | ||
|
|
e98fb61400 | ||
|
|
13e57fb9dd | ||
|
|
7234a93293 | ||
|
|
56cff16b07 | ||
|
|
aa74244abb | ||
|
|
a998f4c980 | ||
|
|
5f2fe1d5a6 | ||
|
|
f01c301839 | ||
|
|
0c0c7459f1 | ||
|
|
34a88c83f0 | ||
|
|
a8f29e51c5 | ||
|
|
964b321458 | ||
|
|
dec726c0ae | ||
|
|
025f4f9737 | ||
|
|
66b982ad03 | ||
|
|
3309706964 | ||
|
|
9d275d6d34 | ||
|
|
91f9a46c18 | ||
|
|
e017ba6863 | ||
|
|
9c7807ded4 | ||
|
|
0fa0be2d0e | ||
|
|
4e0dc5d51a | ||
|
|
14bfc4f4ed | ||
|
|
7039e2b10f | ||
|
|
e5f0edaa0a | ||
|
|
72dd95a81e | ||
|
|
4e2750262d | ||
|
|
3b60c23178 | ||
|
|
12a6ecf353 | ||
|
|
c5b5241964 | ||
|
|
eb0d1748c3 | ||
|
|
1f0d4ce871 | ||
|
|
b64caf2cb8 | ||
|
|
b286bead09 | ||
|
|
dc4d0a7078 | ||
|
|
5ec68f3ca0 | ||
|
|
da3406b811 | ||
|
|
6c753ac183 | ||
|
|
1549a443c5 | ||
|
|
28df59b9e6 | ||
|
|
1f25e6d0fe | ||
|
|
47f5d165a8 | ||
|
|
13a195d73b | ||
|
|
04e4295140 | ||
|
|
fe98c36abf | ||
|
|
ee84af0826 | ||
|
|
e1d09303f9 | ||
|
|
3749817e1b | ||
|
|
a6e862d9ea | ||
|
|
c28641ba94 | ||
|
|
5e5d8118c7 | ||
|
|
b0a01f60f7 | ||
|
|
c04095673f | ||
|
|
88d22e4309 | ||
|
|
e05cce9b59 | ||
|
|
a7a4557b29 | ||
|
|
4cb783d5bf | ||
|
|
cd830768d6 | ||
|
|
6f46c60360 | ||
|
|
d9d63141bb | ||
|
|
b6f156b7dd | ||
|
|
a647968a6f | ||
|
|
93c64d03e3 | ||
|
|
6fddbd8178 | ||
|
|
67ca3315fd | ||
|
|
168de06d47 | ||
|
|
3ee79afe4f | ||
|
|
a3163a419a | ||
|
|
a2e4e2ad37 | ||
|
|
367b17e315 | ||
|
|
ccd50262c6 | ||
|
|
c7efd0dd05 | ||
|
|
287e2a7c2d | ||
|
|
9618cc1628 | ||
|
|
d435eae35c | ||
|
|
80021c4ef6 | ||
|
|
d959a5918c | ||
|
|
5b092b3aea | ||
|
|
749e668a03 | ||
|
|
257f75a201 | ||
|
|
cfa1e8441b | ||
|
|
5b66b7a24f | ||
|
|
78ee01b03c | ||
|
|
653d49ab3c | ||
|
|
c13776d000 | ||
|
|
e71facf6d6 | ||
|
|
f2f2dad402 | ||
|
|
c6ba3b4ca3 | ||
|
|
feadedf8ef | ||
|
|
ccce8f58c9 | ||
|
|
e85efb828d | ||
|
|
4d739d4050 | ||
|
|
b172196512 | ||
|
|
3e7329fb07 | ||
|
|
9b121fd5d0 | ||
|
|
405885209b | ||
|
|
12f0954c4c | ||
|
|
8046ba4103 | ||
|
|
dce5c217c8 | ||
|
|
0161e64481 | ||
|
|
b768005f44 | ||
|
|
6838edb4fe | ||
|
|
2309c25aa4 | ||
|
|
1090e87f3a | ||
|
|
104b2aecdc | ||
|
|
465eaf028e | ||
|
|
2a76ddb81d | ||
|
|
3f2098ff5d | ||
|
|
13cd4815ee | ||
|
|
5eaf4201ae | ||
|
|
606ee3c883 | ||
|
|
a1a73af7da | ||
|
|
ed26846a54 | ||
|
|
e7125d21cb | ||
|
|
64fb49e085 | ||
|
|
0c0a90c6c2 | ||
|
|
5ca5441a48 | ||
|
|
88960556e3 | ||
|
|
d3b4ec77bc | ||
|
|
08dc932d00 | ||
|
|
d6b99a8d70 | ||
|
|
e13eeeed60 | ||
|
|
b71570bdf7 | ||
|
|
a9cffd8863 | ||
|
|
0ace60a39b | ||
|
|
d740b051cb | ||
|
|
f369e22de0 | ||
|
|
64fd3044b1 | ||
|
|
bcd81c0791 | ||
|
|
965f7f5d26 | ||
|
|
636e052faa | ||
|
|
6e1f250470 | ||
|
|
92e24e332a | ||
|
|
687d192e71 | ||
|
|
4f1cb5ab7c | ||
|
|
2fbc979136 | ||
|
|
3e98bd49e2 | ||
|
|
186bbd7fc3 | ||
|
|
34fc7407a2 | ||
|
|
aecf069975 | ||
|
|
ec90fc480c | ||
|
|
4012a64327 | ||
|
|
646c6b6e64 | ||
|
|
3eae8b3db2 | ||
|
|
8148f9a95a | ||
|
|
a756c264f9 | ||
|
|
add29f9a5c | ||
|
|
6a16ca31a2 | ||
|
|
b1cf8c16df | ||
|
|
5b2947764d | ||
|
|
452fdbcc6f | ||
|
|
1b3a758f28 | ||
|
|
4db73d421d | ||
|
|
643840d969 | ||
|
|
062b7733b1 | ||
|
|
8302b9e1d7 | ||
|
|
12bd5c9dd7 | ||
|
|
57a609a62c | ||
|
|
26228e747d | ||
|
|
6f88b072d1 | ||
|
|
f55ea07c1d | ||
|
|
0cdb833aa6 | ||
|
|
54e99b73d6 | ||
|
|
680998f9c2 | ||
|
|
12d062cd7e | ||
|
|
bb1663636a | ||
|
|
c19b33afc1 | ||
|
|
7fba885d48 | ||
|
|
aee105ec6c | ||
|
|
b6cedbe4af | ||
|
|
c8753c96db | ||
|
|
1a5056763c | ||
|
|
6621a7aa1c | ||
|
|
737e9393f4 | ||
|
|
38f1d27223 | ||
|
|
37016aebad | ||
|
|
d6e067d654 | ||
|
|
6894a4b640 | ||
|
|
8a27c79716 | ||
|
|
f2c05131c3 | ||
|
|
31ffbb1edd | ||
|
|
177e6738e4 | ||
|
|
47c40b04e4 | ||
|
|
a899209a01 | ||
|
|
ef9cb84b01 | ||
|
|
3e979931d0 | ||
|
|
60c3244faa | ||
|
|
bd89dca0af | ||
|
|
b97c6cadee | ||
|
|
1a965cc0bd | ||
|
|
4749fa45e8 | ||
|
|
6b7bd55931 | ||
|
|
a50aa2d8e5 | ||
|
|
93cdd1b98c | ||
|
|
d6353fc3b2 | ||
|
|
1809de7f1a | ||
|
|
2e3cd114bc | ||
|
|
694477855b | ||
|
|
84322976ba | ||
|
|
b7de633090 | ||
|
|
6faa227df3 | ||
|
|
051341a42a | ||
|
|
634be0012f | ||
|
|
5a4dee374c | ||
|
|
f32818d811 | ||
|
|
7d49e8868c | ||
|
|
bd3dd337c1 | ||
|
|
d85ff9e088 | ||
|
|
c82174de6b | ||
|
|
05330632f2 | ||
|
|
7d1e2e2b2a | ||
|
|
76f959599f | ||
|
|
66a4777413 | ||
|
|
65660004c5 | ||
|
|
22ed4c08f8 | ||
|
|
3dd7ac0549 | ||
|
|
89d3678adc | ||
|
|
aeb5fa036c | ||
|
|
6cf2f942e7 | ||
|
|
8758be5912 | ||
|
|
c6edf31480 | ||
|
|
c221b08982 | ||
|
|
2fc9382d7e | ||
|
|
26314fae01 | ||
|
|
573dac0b91 | ||
|
|
3bc85c29ae | ||
|
|
51bc6bd95a | ||
|
|
3598235906 | ||
|
|
b651cdb4a1 | ||
|
|
7bd9139d28 | ||
|
|
32bfd8741f | ||
|
|
51aae059e3 | ||
|
|
c7f1f52f1c | ||
|
|
222e89a782 | ||
|
|
1b54b4dbb7 | ||
|
|
f347bdeab5 | ||
|
|
559ac673e2 | ||
|
|
806ab07865 | ||
|
|
819dcacae0 | ||
|
|
7e57a63ec5 | ||
|
|
3e294d6918 | ||
|
|
a214823dcf | ||
|
|
5488d55ca2 | ||
|
|
459d2c5408 | ||
|
|
f691ce2238 | ||
|
|
38f825c8c6 | ||
|
|
948702e98b | ||
|
|
4c24f5f513 | ||
|
|
b0972fdc94 | ||
|
|
7f10f04025 | ||
|
|
eb726c42c6 | ||
|
|
b2b959d5e3 | ||
|
|
6f693bc36e | ||
|
|
adb82dfc2e | ||
|
|
aa8e4ccdef | ||
|
|
37dec0d927 | ||
|
|
847da2b106 | ||
|
|
0088c67fa7 | ||
|
|
312263da49 | ||
|
|
d12c5cdf55 | ||
|
|
8a12382f1f | ||
|
|
64f944b571 | ||
|
|
b8720b8d1c | ||
|
|
83efb442ae | ||
|
|
cf3f0a606d | ||
|
|
2508d54c10 | ||
|
|
e3c78d3a81 | ||
|
|
a5a9b47ce4 | ||
|
|
d09a0f6167 | ||
|
|
c79e801929 | ||
|
|
2a5c9ae382 | ||
|
|
7af964cfe6 | ||
|
|
e482900754 | ||
|
|
de43a0b7a1 | ||
|
|
cf7bc882f5 | ||
|
|
06c8e658aa | ||
|
|
7aa39e42c1 | ||
|
|
ca2a659970 | ||
|
|
f73f267997 | ||
|
|
d7ea394993 | ||
|
|
3f755de80b | ||
|
|
00945e5749 | ||
|
|
c43c362903 | ||
|
|
268dad58f6 | ||
|
|
61511201db | ||
|
|
38daa23be2 | ||
|
|
45ba858022 | ||
|
|
8ad821c468 | ||
|
|
5fe5c4d147 | ||
|
|
f3e465c142 | ||
|
|
d849ac32f9 | ||
|
|
e0114ebffc | ||
|
|
0fdacf4d54 | ||
|
|
30be83d445 | ||
|
|
e9d075049b | ||
|
|
c7c627015d | ||
|
|
d62554aaba | ||
|
|
d2a6887248 | ||
|
|
879f8f080d | ||
|
|
10f147ff40 | ||
|
|
23ea811095 | ||
|
|
dac0d67717 | ||
|
|
399d957142 | ||
|
|
368ae43849 | ||
|
|
669d5a12a2 | ||
|
|
0fe09aa088 | ||
|
|
6711c58ff1 | ||
|
|
2b02ec3a4e | ||
|
|
e664047c5a | ||
|
|
d7c36c9c3c | ||
|
|
82fbb351dd | ||
|
|
726c5c5f7f | ||
|
|
99089356f5 | ||
|
|
fd2ba6f635 | ||
|
|
0d1f9fcc58 | ||
|
|
a70e565edb | ||
|
|
0efcdbaf52 | ||
|
|
12e24ade70 | ||
|
|
7b659add36 | ||
|
|
d1e30cacf8 | ||
|
|
aecdc57cd4 | ||
|
|
58bc10fc47 | ||
|
|
ad7c9ace50 | ||
|
|
b897708a41 | ||
|
|
d1060ac5f3 | ||
|
|
b8e5cc01c1 | ||
|
|
a26723a57a | ||
|
|
1811ec6cab | ||
|
|
c50c9239ea | ||
|
|
820d94e014 | ||
|
|
c03f2bffce | ||
|
|
9c61acc95d | ||
|
|
e62abdd651 | ||
|
|
75cf25de62 | ||
|
|
6a8f09f9ee | ||
|
|
7340f1dc26 | ||
|
|
a78cc700c0 | ||
|
|
41d4096890 | ||
|
|
8104c41332 | ||
|
|
81b0a7f785 | ||
|
|
e73bff817c | ||
|
|
486779ceb2 | ||
|
|
283a9950f3 | ||
|
|
7f0875cda7 | ||
|
|
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 | ||
|
|
ce4d25952c | ||
|
|
3e27595cf1 | ||
|
|
44ab905131 | ||
|
|
2a04ac55de | ||
|
|
45ad494a3e | ||
|
|
78fe44ec01 | ||
|
|
536bd85fd0 | ||
|
|
84705489fc | ||
|
|
ff085e955e | ||
|
|
4b62c24e54 | ||
|
|
c7658e2e96 | ||
|
|
9fe693630c | ||
|
|
3bba7578af | ||
|
|
53b6a25442 | ||
|
|
5e7de313fc | ||
|
|
8c91e9d4e2 | ||
|
|
078ee59b4e | ||
|
|
438e277c42 | ||
|
|
a4c1b93a42 | ||
|
|
82877a9afa | ||
|
|
6bee757652 | ||
|
|
d8cdc3094a | ||
|
|
db455c9832 | ||
|
|
b6c931905a | ||
|
|
6647973391 | ||
|
|
4c85ea678d | ||
|
|
dc27b5e976 | ||
|
|
4828f6190e | ||
|
|
84a0f92546 | ||
|
|
e3a9194010 | ||
|
|
727e212b8e | ||
|
|
df64ede724 | ||
|
|
8a07e01181 | ||
|
|
d67d4a38ce | ||
|
|
3b898c52d3 | ||
|
|
4e79411d9f | ||
|
|
524875e458 | ||
|
|
3c75774cfb | ||
|
|
596737ba2f | ||
|
|
e142aafea1 | ||
|
|
09da69918e | ||
|
|
e0c2e3dd2c | ||
|
|
5dc79e67fc | ||
|
|
14341f3be2 | ||
|
|
2acf90d813 | ||
|
|
ae1d6492d0 | ||
|
|
0a0579bc8b | ||
|
|
ead93baa21 | ||
|
|
39bad79f5a | ||
|
|
f25b198516 | ||
|
|
15d3b07f34 | ||
|
|
feeecbf395 | ||
|
|
e7abeb9bd4 | ||
|
|
879a010c3d | ||
|
|
89e64a212e | ||
|
|
82c7c02611 | ||
|
|
b6c3189fe3 | ||
|
|
82e41f36ee | ||
|
|
4b1eade157 | ||
|
|
b79ed40e32 | ||
|
|
d06e0b639e | ||
|
|
d1cfb4f066 | ||
|
|
efa1f4ebb4 | ||
|
|
fa4eda9c87 | ||
|
|
1efb122d9c | ||
|
|
c2e5ecaaa0 | ||
|
|
313dfd6475 | ||
|
|
8dd753ce46 | ||
|
|
435d0e1019 | ||
|
|
37cd9c5b7b | ||
|
|
8b9971003d | ||
|
|
79cdad47f1 | ||
|
|
8f1276350e | ||
|
|
c05e6ba580 | ||
|
|
2da5e03741 | ||
|
|
a9ce197d04 | ||
|
|
1bce5b7837 | ||
|
|
74718bc568 | ||
|
|
217937217d | ||
|
|
af1dfd41ab | ||
|
|
54c6ccc087 | ||
|
|
d9e15e40f4 | ||
|
|
12d1e852f4 | ||
|
|
802d262776 | ||
|
|
04b63829d7 | ||
|
|
8568b29cc1 | ||
|
|
b1471c2a45 | ||
|
|
a86b87244d | ||
|
|
e431b96ca1 | ||
|
|
ce5cdd0eea | ||
|
|
c5a831b8ec | ||
|
|
872002b730 | ||
|
|
cb6fad87de | ||
|
|
0f1473e212 | ||
|
|
b45171ba43 | ||
|
|
28b8f36f16 | ||
|
|
35c1389794 | ||
|
|
6ae7db4afb | ||
|
|
7b646018ea | ||
|
|
4c7a5633da | ||
|
|
76d3e9033d | ||
|
|
c9d5370dc4 | ||
|
|
7cdbe8ef34 | ||
|
|
8b819d7e9e | ||
|
|
7f0c8dde24 | ||
|
|
74c32a0ecd | ||
|
|
87174ef3a4 | ||
|
|
462c821df9 | ||
|
|
42d7e20c1d | ||
|
|
933b924766 | ||
|
|
be15e6d34c | ||
|
|
d6997e7833 | ||
|
|
e94769b58b | ||
|
|
7616c22897 | ||
|
|
138cd90736 | ||
|
|
9aae8040ef | ||
|
|
2d5612435c | ||
|
|
2b1e4912f2 | ||
|
|
b1fe50e056 | ||
|
|
09a45abd92 | ||
|
|
adf615d0cc | ||
|
|
954e010493 | ||
|
|
86b4db75be | ||
|
|
587c4f3b14 | ||
|
|
8238c13dc0 | ||
|
|
5c8dd9f0fb | ||
|
|
dfcdb18b41 | ||
|
|
e402674092 | ||
|
|
783004ae58 | ||
|
|
6ff7c6ed06 | ||
|
|
a0ecbe01a1 | ||
|
|
47c2f2e30a | ||
|
|
721fa821f7 | ||
|
|
6580d23263 | ||
|
|
0b874d9c42 | ||
|
|
679c91435d | ||
|
|
d68b7fc9cb | ||
|
|
02722dc3c9 | ||
|
|
844bd52c67 | ||
|
|
51bc67042e | ||
|
|
a8978b2ae4 | ||
|
|
fcf3b8e14a | ||
|
|
015bdc7930 | ||
|
|
370b986ab1 | ||
|
|
9d7591fc84 | ||
|
|
9b6b357c9e | ||
|
|
8fd7b86f45 | ||
|
|
35a4e4aa1c | ||
|
|
d24abc3088 | ||
|
|
615e08b74f | ||
|
|
4644b5cf15 | ||
|
|
cb719e2bf5 | ||
|
|
ab8e35b6b4 | ||
|
|
76ea7525e3 | ||
|
|
64615adc23 | ||
|
|
a205591178 | ||
|
|
25e27f4614 | ||
|
|
4a66c33a2c | ||
|
|
16be6fe474 | ||
|
|
e170d9c3a8 | ||
|
|
3adc58bb87 | ||
|
|
55aa6c36ee | ||
|
|
350bf0ffd4 | ||
|
|
a9565e363a | ||
|
|
378e24411c | ||
|
|
22c785b951 | ||
|
|
eb0053fe48 | ||
|
|
6996ccc2c8 | ||
|
|
fcef304427 | ||
|
|
bf5c1951ba | ||
|
|
e931209860 | ||
|
|
db4520a13b | ||
|
|
4305e6b1e0 | ||
|
|
b173458814 | ||
|
|
833750513b | ||
|
|
9e63a0babb | ||
|
|
e48909dea4 | ||
|
|
f306d02ac9 | ||
|
|
f9f3642116 | ||
|
|
1537c70988 | ||
|
|
847a6c75d7 | ||
|
|
ecffc5e550 | ||
|
|
65e9401c5d | ||
|
|
ae3632e5c1 | ||
|
|
9ba3862be1 | ||
|
|
793c1be9bd | ||
|
|
1ce6f4a7c3 | ||
|
|
816cfefbac | ||
|
|
0eec718354 | ||
|
|
b80148c7e4 | ||
|
|
3bc946bfb9 | ||
|
|
a62169001e | ||
|
|
3ccc69848d | ||
|
|
5191a43923 | ||
|
|
f9e887900e | ||
|
|
82553471cc | ||
|
|
bba7b366ef | ||
|
|
355e776852 | ||
|
|
c1aec8671a | ||
|
|
01b9e5c754 | ||
|
|
3ccb2fddff | ||
|
|
0d55befc1f | ||
|
|
57ad73c4e9 | ||
|
|
a5ff654baf | ||
|
|
3177668d61 | ||
|
|
6367953c26 | ||
|
|
b3baf52387 | ||
|
|
f40ca3eadf | ||
|
|
c8d02fc10e | ||
|
|
759fe77e7f | ||
|
|
f6b96694e0 | ||
|
|
818a032aac | ||
|
|
fb443bb6e7 | ||
|
|
4790949e16 | ||
|
|
8b8e837f78 | ||
|
|
93b295e8c4 | ||
|
|
2955f9d82a | ||
|
|
813095b912 | ||
|
|
0ae42b375d | ||
|
|
fb03982312 | ||
|
|
41cd8428b2 | ||
|
|
b03fa32624 | ||
|
|
e19a5df968 | ||
|
|
3a2ecc6dee | ||
|
|
ace3995847 | ||
|
|
b3ddb21d88 | ||
|
|
50ad2597c4 | ||
|
|
1d33211004 | ||
|
|
37b4cb9d06 | ||
|
|
888427d2df | ||
|
|
30d94d7c4d | ||
|
|
1fb510b2b0 | ||
|
|
214c3cba73 | ||
|
|
7a7d351017 | ||
|
|
b3f89027fc | ||
|
|
636f9b2912 | ||
|
|
81cf3782c0 | ||
|
|
eabda8ee75 | ||
|
|
b09b1bb285 | ||
|
|
a8c2bc37c2 | ||
|
|
2b179a53bf | ||
|
|
b9afd63080 | ||
|
|
83ff66e0b1 | ||
|
|
5dfca9c685 | ||
|
|
6f6b938dfc | ||
|
|
1b08c087c0 | ||
|
|
6d241270b5 | ||
|
|
155316c30e | ||
|
|
64f4775a81 | ||
|
|
5696944c6f | ||
|
|
a9fbef62b6 | ||
|
|
cc4e1c5bbe | ||
|
|
20d90e0e0c | ||
|
|
be32669baf | ||
|
|
f772e28bf9 | ||
|
|
486f9c55dd | ||
|
|
44864be673 | ||
|
|
8247709a13 | ||
|
|
d20384b3a0 | ||
|
|
d2b6ed950d | ||
|
|
ddf5779756 | ||
|
|
8def5c5a1b | ||
|
|
57c1df1d1e | ||
|
|
694f7b172a | ||
|
|
e93ef4a959 | ||
|
|
384eaf54ef | ||
|
|
c14deec893 | ||
|
|
35ea06214a | ||
|
|
64df47b49f | ||
|
|
050601498c | ||
|
|
1d28eeb3d7 | ||
|
|
b060f967d7 | ||
|
|
af63ba9a8d | ||
|
|
747eb4562a | ||
|
|
61d9f68bee | ||
|
|
ab579e3449 | ||
|
|
9fc60abc1a | ||
|
|
77445645db | ||
|
|
bc035b3873 | ||
|
|
a421c2aa63 | ||
|
|
f639bea467 | ||
|
|
fb81d1c8c9 | ||
|
|
f5b3564392 | ||
|
|
6bcbfa2e05 | ||
|
|
4065972179 | ||
|
|
897d0be08e | ||
|
|
c3b7aeadd7 | ||
|
|
89abde61d6 | ||
|
|
4614764552 | ||
|
|
c3322cdc91 | ||
|
|
d124c24e89 | ||
|
|
a48ef3f94f | ||
|
|
15ab369f62 | ||
|
|
29426265a7 | ||
|
|
9742bb016b | ||
|
|
78f71a9e1b | ||
|
|
d31f55ae28 | ||
|
|
7294cdafbf | ||
|
|
493499cded | ||
|
|
2cc82c6256 | ||
|
|
1696504a57 | ||
|
|
ef84e95ec0 | ||
|
|
c307a7477a | ||
|
|
02dcfb2763 | ||
|
|
f510852cd7 | ||
|
|
25ead318da | ||
|
|
ebf97a9ee8 | ||
|
|
473a74af93 | ||
|
|
b61e4363f5 | ||
|
|
0b9a4e8aee | ||
|
|
052825e5c4 | ||
|
|
e72d9de34a | ||
|
|
8d699dc177 | ||
|
|
216c70b758 | ||
|
|
e1fef17311 | ||
|
|
7bb44e725b | ||
|
|
c80e95b219 | ||
|
|
879f59c922 | ||
|
|
0fa79f0d63 | ||
|
|
264ac4e706 | ||
|
|
dff1e65634 | ||
|
|
ec37673a21 | ||
|
|
3feffdf8fa | ||
|
|
8bcb51ba9c | ||
|
|
7c580a87e2 | ||
|
|
797a4608bf | ||
|
|
abb8554c51 | ||
|
|
258a3ea3b0 | ||
|
|
6d1ad28d8c | ||
|
|
38aca6af6f | ||
|
|
0fd8ecd9ee | ||
|
|
f24224649d | ||
|
|
b41aa38f39 | ||
|
|
b267ac169d | ||
|
|
1c0f1b91e7 | ||
|
|
9bf673210f | ||
|
|
42f5cbf2a6 | ||
|
|
45f0383ee2 | ||
|
|
a39c7f52cf | ||
|
|
f1ca4f40af | ||
|
|
62503fb663 | ||
|
|
0853ae4691 | ||
|
|
bb19cfce1f | ||
|
|
287cdc43c1 | ||
|
|
79e595c195 | ||
|
|
d198451bb0 | ||
|
|
ebf252ce86 | ||
|
|
f9ece8b447 | ||
|
|
efe5ca6242 | ||
|
|
0dbcf5653d | ||
|
|
20a201703c | ||
|
|
bfaa6c69fd | ||
|
|
6744ee8a4d | ||
|
|
20630e91ec | ||
|
|
cec74eb080 | ||
|
|
4e51393dd2 | ||
|
|
5d86930c80 | ||
|
|
cc1b812232 | ||
|
|
0fcbcd0dcd | ||
|
|
dd9e290a60 | ||
|
|
61a05c7e5b | ||
|
|
1c27e2bd35 | ||
|
|
68f66579ea | ||
|
|
e5eaea8949 | ||
|
|
ed491cf7cb | ||
|
|
3b3642bbba | ||
|
|
28eddb74ed | ||
|
|
401693dccd | ||
|
|
826e137aa5 | ||
|
|
7d4805988e | ||
|
|
bc2694bb88 | ||
|
|
19db0d471f | ||
|
|
2f337f9191 | ||
|
|
e05536a115 | ||
|
|
7364815ef3 | ||
|
|
bcc6597e93 | ||
|
|
661e2cb6fc | ||
|
|
8a5dc1f239 | ||
|
|
61208fce13 | ||
|
|
71c4f6e7e3 | ||
|
|
b169083fe2 | ||
|
|
efe5e7b068 | ||
|
|
ee3d4ce8f1 | ||
|
|
2707bf6349 | ||
|
|
a4b6228542 | ||
|
|
d49164b362 | ||
|
|
906b0755eb | ||
|
|
52f81a8066 | ||
|
|
d8af5d681c | ||
|
|
d05c725253 | ||
|
|
5fc3aa17b9 | ||
|
|
e15ac643de | ||
|
|
0b9f9aa0d7 | ||
|
|
549fcf8b4c | ||
|
|
19b11b8fa8 | ||
|
|
ba83354f32 | ||
|
|
a63eecc86a | ||
|
|
1ad80a8e2b | ||
|
|
b7ae2eabc7 | ||
|
|
c9ff34af8d | ||
|
|
8a1e79d22f | ||
|
|
1ca084038c | ||
|
|
c77eb35f5b | ||
|
|
f5cf5c2176 | ||
|
|
2b4043dc43 | ||
|
|
a3db4790a7 | ||
|
|
299b0f90bc | ||
|
|
a58d5c0f32 | ||
|
|
ea631f6675 | ||
|
|
7a5f9195fc | ||
|
|
6629c39f01 | ||
|
|
29e465d2f6 | ||
|
|
8c33daa369 | ||
|
|
147060fdee | ||
|
|
1fd326aa15 | ||
|
|
e5032a52c4 | ||
|
|
a640b08414 | ||
|
|
3144bfebc7 | ||
|
|
df04427c6a | ||
|
|
6a689e83c4 | ||
|
|
9fe64982bb | ||
|
|
5cd376d2c3 | ||
|
|
1d795d85d2 | ||
|
|
d5898f024d | ||
|
|
2de4c50d4f | ||
|
|
e57f8b6204 | ||
|
|
9c67aaf641 | ||
|
|
af562ecf89 | ||
|
|
d76877b1a2 | ||
|
|
01cc4452b2 | ||
|
|
1cb30d77fd | ||
|
|
126e2e7c75 | ||
|
|
9c13ed2635 | ||
|
|
e11545c8a3 | ||
|
|
ad087d7e88 | ||
|
|
c387c15eb0 | ||
|
|
345222cf42 | ||
|
|
adffd7df74 | ||
|
|
4de980c1a1 | ||
|
|
578a5c9551 | ||
|
|
c47dbfb1f5 | ||
|
|
cb0942b388 | ||
|
|
1904bc1abb | ||
|
|
5a02c56865 | ||
|
|
d7b0299416 | ||
|
|
265ab7bef2 | ||
|
|
e824bc8bb1 | ||
|
|
046ebb5a8f | ||
|
|
8b83d60732 | ||
|
|
d2754fb242 | ||
|
|
30ba1a428e | ||
|
|
0553668da8 | ||
|
|
ff63d75532 | ||
|
|
b7ec18e4f1 | ||
|
|
9c9944715a | ||
|
|
ea1a54c5f1 | ||
|
|
34cb5efb72 | ||
|
|
8597689a52 | ||
|
|
41a61ced89 | ||
|
|
da95d5e0df | ||
|
|
8276c301c2 | ||
|
|
75ff9984fa | ||
|
|
cda77d1724 | ||
|
|
583b8c60bb | ||
|
|
5c2b57052b | ||
|
|
9cf79a4a76 | ||
|
|
c4968edb79 | ||
|
|
a859a6d179 | ||
|
|
e2c75b5a11 | ||
|
|
12195b186b | ||
|
|
658d876ff7 | ||
|
|
390508e7db | ||
|
|
0a2efaf5fc | ||
|
|
6b7af5b464 | ||
|
|
a2c19302cb | ||
|
|
1638554944 | ||
|
|
1d1b49205d | ||
|
|
0ca7100168 | ||
|
|
26c680ae1f | ||
|
|
6c1eda8755 | ||
|
|
0374f9d0a8 | ||
|
|
080a36de5f | ||
|
|
071801fee7 | ||
|
|
bee507cb45 | ||
|
|
7d6df2a3c2 | ||
|
|
a2ffecd6bd | ||
|
|
1532b24448 | ||
|
|
c4dae02ef6 | ||
|
|
846962aab1 | ||
|
|
35e98b6cbb | ||
|
|
ecfc3d0118 | ||
|
|
3ecc8c8d67 | ||
|
|
a83fbf5a98 | ||
|
|
328e4fd860 | ||
|
|
b98d0282ce | ||
|
|
166dad51d5 | ||
|
|
e3ccea3b17 | ||
|
|
8a64a6441e | ||
|
|
c34000ab17 | ||
|
|
90dd337069 | ||
|
|
31e4b8dc31 | ||
|
|
5145abe5c8 | ||
|
|
7ec842929a | ||
|
|
39778baaf5 | ||
|
|
0a510db95e | ||
|
|
c73243b0d2 | ||
|
|
46b75b760f | ||
|
|
fc3ae51122 | ||
|
|
05d9f28f8b | ||
|
|
b1b2a2c775 | ||
|
|
105de3161a | ||
|
|
354d968a94 | ||
|
|
f617b74bac | ||
|
|
3664134e02 | ||
|
|
1875846326 | ||
|
|
64f0adc813 | ||
|
|
a9d4b38bd3 | ||
|
|
44fa7388d5 | ||
|
|
24df142b02 | ||
|
|
958b73f2cb | ||
|
|
1962898e24 | ||
|
|
56b88661bc | ||
|
|
5b47a762ac | ||
|
|
a5c6bcceea | ||
|
|
290932e128 | ||
|
|
f53fe96191 | ||
|
|
fc8a822dac | ||
|
|
b7a3ae2b4c | ||
|
|
26d19b33e6 | ||
|
|
4ba9dc1fed | ||
|
|
2c3f99692d | ||
|
|
a27d2dcac2 | ||
|
|
f7cb6a7da5 | ||
|
|
6855edf649 | ||
|
|
aff27558dd | ||
|
|
f6172f8c77 | ||
|
|
1562088bc8 | ||
|
|
67973515d5 | ||
|
|
7867cf68f9 | ||
|
|
1eb26bd78b | ||
|
|
a8d635f7ac | ||
|
|
289ad37f06 | ||
|
|
94de42bf2e | ||
|
|
ca9f40eb7f | ||
|
|
4013f9fefd | ||
|
|
ccf0002c0f | ||
|
|
86fb4a323a | ||
|
|
38c56a2b5f | ||
|
|
2d1286158a | ||
|
|
6e7309316c | ||
|
|
593fdad426 | ||
|
|
933a831eb1 | ||
|
|
7c55082464 | ||
|
|
fa3e70316e | ||
|
|
c9c2ab320d | ||
|
|
53d9817d8a | ||
|
|
828ecb6b3c | ||
|
|
af61ed7c72 | ||
|
|
1e86ea8c0a | ||
|
|
129bfac549 | ||
|
|
4815bb9f11 | ||
|
|
81eb8b1341 | ||
|
|
1596dc5206 | ||
|
|
76a22fabcd | ||
|
|
3d7bf26f85 | ||
|
|
69661406a0 | ||
|
|
74fba0fb7e | ||
|
|
d56fc9fcd4 | ||
|
|
124dcee7b8 | ||
|
|
b5b06ce36d | ||
|
|
ef01088411 | ||
|
|
bc87c1c409 | ||
|
|
bbe4328c06 | ||
|
|
d557410156 | ||
|
|
a150e24ce4 | ||
|
|
261d02863c | ||
|
|
c64f02c9bf | ||
|
|
790db14b51 | ||
|
|
2500ac2cb7 | ||
|
|
cd8a7cf0e0 | ||
|
|
b3be32126d | ||
|
|
643bc5516c | ||
|
|
eb94c59892 | ||
|
|
72f4c81f4c | ||
|
|
9543bd63f9 | ||
|
|
7ae7a71782 | ||
|
|
8994ca6dd5 | ||
|
|
354dceeaf0 | ||
|
|
50c7225c1e | ||
|
|
44d945b5c0 | ||
|
|
4ff6104601 | ||
|
|
80760dd7af | ||
|
|
7835a13573 | ||
|
|
9b26fd50b2 | ||
|
|
eb54d81c5e | ||
|
|
431d2f082c | ||
|
|
a0ff0cdc7e | ||
|
|
fb91558261 | ||
|
|
fc2a47ca31 | ||
|
|
dcccbaad59 | ||
|
|
99d040de3f | ||
|
|
ee30a75b57 | ||
|
|
8c001aa478 | ||
|
|
849bc11a01 | ||
|
|
5024e0b092 | ||
|
|
d93447489b | ||
|
|
33988e70ab | ||
|
|
d2b41d70c8 | ||
|
|
8e1e51d268 | ||
|
|
53500ea005 | ||
|
|
e048389dea | ||
|
|
fa7b1a205d | ||
|
|
7dd6b7e9bb | ||
|
|
78b96accda | ||
|
|
73d0e2568a | ||
|
|
92fc212a0e | ||
|
|
6f4d7b7c1b | ||
|
|
63ee1c36e8 | ||
|
|
7d07debcb5 | ||
|
|
dd67e1ee9d | ||
|
|
493efdbf10 | ||
|
|
e323175275 | ||
|
|
c1fa7f8645 | ||
|
|
275b962363 | ||
|
|
3847c33017 | ||
|
|
9e21f52213 | ||
|
|
25cf9b33ec | ||
|
|
c7a2d3589f | ||
|
|
d8dd3834c3 | ||
|
|
ee01c2c745 | ||
|
|
e7e5a2b4e9 | ||
|
|
ff16f59be1 | ||
|
|
2cd4937ddc | ||
|
|
0e9abc1762 | ||
|
|
e24ce87946 | ||
|
|
308e358d3f | ||
|
|
d15e6a4847 | ||
|
|
e311239a28 | ||
|
|
df677789d2 | ||
|
|
0af44eadb6 | ||
|
|
85cafe530e | ||
|
|
7609db28f1 | ||
|
|
fefda39284 | ||
|
|
b2f98bd059 | ||
|
|
26c69fe6d4 | ||
|
|
bf4f1a7c37 | ||
|
|
9b0dd39d9d | ||
|
|
66d4cc2ab8 | ||
|
|
0bcbaf6521 | ||
|
|
e074872b24 | ||
|
|
63ec1e618e | ||
|
|
331c15b76c | ||
|
|
d2089c9aad | ||
|
|
3c8326d3b6 | ||
|
|
2d0713ca1d | ||
|
|
afaca423cc | ||
|
|
ff08abe177 | ||
|
|
159be479cc | ||
|
|
f3066b07b5 | ||
|
|
aa58636832 | ||
|
|
5d1a584eac | ||
|
|
7ee9abd646 | ||
|
|
4d977a8d46 | ||
|
|
5c891724c4 | ||
|
|
185af18790 | ||
|
|
fa6da97cf9 | ||
|
|
9503d9b024 | ||
|
|
de7b6ca553 | ||
|
|
1788078594 | ||
|
|
3caf473424 | ||
|
|
5435bd2354 | ||
|
|
1cdb22a7e3 | ||
|
|
95a9424ae7 | ||
|
|
902196a176 | ||
|
|
dbfef8665b | ||
|
|
b3d8f2400f | ||
|
|
c12ae58868 | ||
|
|
4b77bb57ad | ||
|
|
a6b1d308c2 | ||
|
|
b483f09d11 | ||
|
|
bbb5ad31c4 | ||
|
|
3d4c1fe7da | ||
|
|
7a2c0d5d5a | ||
|
|
39d86c5f61 | ||
|
|
e2cdbbb184 | ||
|
|
e83f9245a9 | ||
|
|
52f25c44eb | ||
|
|
1ed565d8e5 | ||
|
|
10801f111b | ||
|
|
efe1655834 | ||
|
|
7f71e3981e | ||
|
|
8113f8df63 | ||
|
|
62f579fdbe | ||
|
|
1d4454c6eb | ||
|
|
310433fb54 | ||
|
|
c0520146e9 | ||
|
|
35f6675d86 | ||
|
|
9494b15bd5 | ||
|
|
3b82120923 | ||
|
|
b9a0adc311 | ||
|
|
1e21ac3d79 | ||
|
|
864bb8285e | ||
|
|
208e988c70 | ||
|
|
5cbcfb8efb | ||
|
|
107b833703 | ||
|
|
e2208a484e | ||
|
|
5ab7c91d49 | ||
|
|
a91ad3c9c7 | ||
|
|
385f950c2b | ||
|
|
4667a84939 | ||
|
|
5af0cacf0c | ||
|
|
bceb00d35f | ||
|
|
51068294f1 | ||
|
|
bcdf4e42fa | ||
|
|
214bb13843 | ||
|
|
7998395532 | ||
|
|
35aee18112 | ||
|
|
8ddbdd34ed | ||
|
|
66a5e479c7 | ||
|
|
8f5bd2bc9f | ||
|
|
5be2624cb1 | ||
|
|
f9684d662d | ||
|
|
9373796dd5 | ||
|
|
2634517cdb | ||
|
|
121a636b4e | ||
|
|
aad42d4a57 | ||
|
|
c8b8518608 | ||
|
|
0c40a8ab05 | ||
|
|
b9241ad5ad | ||
|
|
d354d7133e | ||
|
|
a1157c78b2 | ||
|
|
fb8d52e6e0 | ||
|
|
80c42cae1a | ||
|
|
f242fce5fd | ||
|
|
6223514704 | ||
|
|
8fb7445e20 | ||
|
|
3172c6859d | ||
|
|
58be573d02 | ||
|
|
82f7bdb9cc | ||
|
|
b41c39b7ce | ||
|
|
9e4958e96a | ||
|
|
65091f7cb9 | ||
|
|
75b758bb1f | ||
|
|
5028ff3ddd | ||
|
|
a246f76ec3 | ||
|
|
eeec067481 | ||
|
|
3ee44ad0c2 | ||
|
|
c38ff5b0b7 | ||
|
|
e51dc6758c | ||
|
|
7bb32643fa | ||
|
|
3172e1f530 | ||
|
|
7778877fa7 | ||
|
|
b4f6745251 | ||
|
|
4fd7f16911 | ||
|
|
ca29b5d7fc | ||
|
|
79d5a635a4 | ||
|
|
7f615c580e | ||
|
|
967dbbda89 | ||
|
|
452c0411d2 | ||
|
|
32d3ed2144 | ||
|
|
4efae21f1d | ||
|
|
c43efd7fb3 | ||
|
|
93b1dbd931 | ||
|
|
571896b888 | ||
|
|
9f5d31b2b1 | ||
|
|
c01f7102e6 | ||
|
|
df39e46c84 | ||
|
|
7f12bb5dfb | ||
|
|
ca762139f6 | ||
|
|
67f41ad991 | ||
|
|
621ec11ae3 | ||
|
|
de3135c43b | ||
|
|
faed0ba45a | ||
|
|
2104e4e2ce | ||
|
|
907a17a73b | ||
|
|
a1a9f8bc7e | ||
|
|
a9a3bb74e7 | ||
|
|
b7de3fcebd | ||
|
|
0b70b857b9 | ||
|
|
9c8a957dd7 | ||
|
|
cf65e4d77d | ||
|
|
762962270c | ||
|
|
a2067af4ea | ||
|
|
2f4f06ca8b | ||
|
|
56dba2cb10 | ||
|
|
f824357358 | ||
|
|
778cfff4b3 | ||
|
|
8ee762695b | ||
|
|
7dd9680e26 | ||
|
|
92661e1d53 | ||
|
|
09d5665ff9 | ||
|
|
c5dfe623c8 | ||
|
|
2665e2ef39 | ||
|
|
dfecdb1956 | ||
|
|
5a82aee76b | ||
|
|
4f07426010 | ||
|
|
9e575e45b7 | ||
|
|
39b32bf1cd | ||
|
|
54131001b0 | ||
|
|
f8134b1a62 | ||
|
|
13927599c8 | ||
|
|
0d85d0a777 | ||
|
|
0da83694e0 | ||
|
|
9bdac4d1e3 | ||
|
|
00c92d6d61 | ||
|
|
9628a9e156 | ||
|
|
f1bfcb4822 | ||
|
|
87879b6738 | ||
|
|
a4ff7047d1 | ||
|
|
da599da36d | ||
|
|
335e7366fd | ||
|
|
a993b2b3f1 | ||
|
|
b81c8d29ba | ||
|
|
08a08e4b24 | ||
|
|
8b5886cc6e | ||
|
|
22b3d8d594 | ||
|
|
17efa04257 | ||
|
|
e71f144c40 | ||
|
|
5e7cafb8c0 | ||
|
|
d01385a7ac | ||
|
|
ac80dd78a8 | ||
|
|
061f1000cf | ||
|
|
c36fed3081 | ||
|
|
75002906aa | ||
|
|
a451cf2d5f | ||
|
|
ca10c0ab09 | ||
|
|
80d76ae038 | ||
|
|
f699ee1363 | ||
|
|
bd97a4bd7c | ||
|
|
ec3b749ef6 | ||
|
|
44fc86e7da | ||
|
|
2cd940e7c7 | ||
|
|
cc6d371667 | ||
|
|
8fcc33b375 | ||
|
|
e44b570c3d | ||
|
|
8576847a99 | ||
|
|
c9fc9373e5 | ||
|
|
ae46d449e5 | ||
|
|
fe57cef756 | ||
|
|
3affb38ba2 | ||
|
|
a0dc6aa173 | ||
|
|
a357a690ce | ||
|
|
bce7959332 | ||
|
|
eef6f600c9 | ||
|
|
a3822c5aa8 | ||
|
|
eeaa1e83a9 | ||
|
|
387fb93b5b | ||
|
|
d470059c56 | ||
|
|
2e382fa88c | ||
|
|
e1e7e782d5 | ||
|
|
6f314502f6 | ||
|
|
3284d7a8e6 | ||
|
|
609ea7b4c2 | ||
|
|
7e8d21145e | ||
|
|
c31b5f1f97 | ||
|
|
11fe685a6b | ||
|
|
1127947f52 | ||
|
|
789b2cf326 | ||
|
|
b9394f2ba2 | ||
|
|
7ab206ebac | ||
|
|
0beb9fff73 | ||
|
|
65b8d0c24d | ||
|
|
715fe46f45 | ||
|
|
8209f341fb | ||
|
|
0d4b55ca32 | ||
|
|
ae7362706f | ||
|
|
4ca648a79b | ||
|
|
4ca0b14300 | ||
|
|
4386b6c2c4 | ||
|
|
61246f81c7 | ||
|
|
70f2bfdd9a | ||
|
|
5f23cbc470 | ||
|
|
2e0c8f848f | ||
|
|
f8add0ee04 | ||
|
|
f23051c1fd | ||
|
|
60636af544 | ||
|
|
2e685ea851 | ||
|
|
b61a06350f | ||
|
|
c9ece4695e | ||
|
|
4805690dbe | ||
|
|
8ec1621334 | ||
|
|
682377ff66 | ||
|
|
656beed82b | ||
|
|
ba4a0fac77 | ||
|
|
b719bfaecb | ||
|
|
4e1366bf0d | ||
|
|
b67938aa3f | ||
|
|
f4c29c07bf | ||
|
|
63a0f4bf11 | ||
|
|
a8a2ba188d | ||
|
|
a0d685bfe2 | ||
|
|
a3041b7f9f | ||
|
|
83a2ae7ad3 | ||
|
|
830a6250c6 | ||
|
|
f0e23ab1fc | ||
|
|
5b07c488b0 | ||
|
|
f61bccf700 | ||
|
|
4fd10bc5f5 | ||
|
|
c1a72f075d | ||
|
|
5c4450f3cd | ||
|
|
bb606e0b2f | ||
|
|
eed86aa9e1 | ||
|
|
338d4fd31e | ||
|
|
58a36f7cfd | ||
|
|
8b436f70d6 | ||
|
|
223fd4f0ba | ||
|
|
2e51e69cc9 | ||
|
|
bbac79c030 | ||
|
|
607bba4625 | ||
|
|
1a0cc3215c | ||
|
|
f0981c81c8 | ||
|
|
472604d1b0 | ||
|
|
781d33b869 | ||
|
|
8db8841c9c | ||
|
|
6e3b570be4 | ||
|
|
defd77b94c | ||
|
|
c09294df2f | ||
|
|
cc97ee86df | ||
|
|
10d6dd5a23 | ||
|
|
29e79dc54d | ||
|
|
982390f074 | ||
|
|
963d73af4e | ||
|
|
bdd8cbb1d8 | ||
|
|
80bd232054 | ||
|
|
c2da227254 | ||
|
|
e846c67bfa | ||
|
|
475c7094ab | ||
|
|
4434566d85 | ||
|
|
6bd557d22c | ||
|
|
4832a24ac5 | ||
|
|
b9a3890dd5 | ||
|
|
4cf9de6515 | ||
|
|
994c798264 | ||
|
|
119bda1595 | ||
|
|
bf73c47bc5 | ||
|
|
ea99f44893 | ||
|
|
4ec1fd3968 | ||
|
|
0b9e25ee65 | ||
|
|
73a9985599 | ||
|
|
a65f7bfa65 | ||
|
|
72cc1eb4d4 | ||
|
|
ed7ae32a69 | ||
|
|
54b53f3aba | ||
|
|
2f7728f987 | ||
|
|
f3a93af242 | ||
|
|
5a4ad2f822 | ||
|
|
c669240037 | ||
|
|
ce4fd8429e | ||
|
|
cc532d95da | ||
|
|
c800a0a6b5 | ||
|
|
5675c045ae | ||
|
|
e16ca862f4 | ||
|
|
29e757bb3a | ||
|
|
822f1a9557 | ||
|
|
7acfb27a1f | ||
|
|
83d6731fa9 | ||
|
|
de4f0272c1 | ||
|
|
df50a875df | ||
|
|
5f814f23b4 | ||
|
|
98ec373f8c | ||
|
|
0bbeab9ad2 | ||
|
|
ed4c711ef5 | ||
|
|
fc33702b81 | ||
|
|
70c79f31c3 | ||
|
|
82dc2103b5 | ||
|
|
529ab304b4 | ||
|
|
53919446d4 | ||
|
|
1052cd019b | ||
|
|
4f87819abf | ||
|
|
b94ecb2383 | ||
|
|
c00d83dee9 | ||
|
|
34052ce8f9 | ||
|
|
0a0c8948ee | ||
|
|
0cc9283275 | ||
|
|
6b2e9f057b | ||
|
|
3a1fc9ec77 | ||
|
|
e4399412b6 | ||
|
|
37650d8156 | ||
|
|
b4fa164dc3 | ||
|
|
6148e6b192 | ||
|
|
057743a779 | ||
|
|
530ba2a0bd | ||
|
|
977b2bda7c | ||
|
|
76eb93ba1a | ||
|
|
ae3c50c074 | ||
|
|
31017602fc | ||
|
|
ef7e2abdaf | ||
|
|
a6abedd67d | ||
|
|
9824d86a3c | ||
|
|
1eac3d1700 | ||
|
|
48585bb049 | ||
|
|
843e49a5a8 | ||
|
|
db01276f1d | ||
|
|
772028106e | ||
|
|
0cd5253857 | ||
|
|
eaf321facb | ||
|
|
81ecb5c7c8 | ||
|
|
3b3a452df6 | ||
|
|
65b1e29414 | ||
|
|
a6e3b9afac | ||
|
|
a7792701a2 | ||
|
|
846372e48b | ||
|
|
1597007ea1 | ||
|
|
dbceed21f5 | ||
|
|
3254dae59f | ||
|
|
12881dd4c4 | ||
|
|
35ec93ccb1 | ||
|
|
cb159ed00d | ||
|
|
e5b8b41373 | ||
|
|
492814a56e | ||
|
|
d639712303 | ||
|
|
f5d1c8a679 | ||
|
|
aea3d4be7a | ||
|
|
8d1fd7ee8e | ||
|
|
a98a002d57 | ||
|
|
fb874695c9 | ||
|
|
63457c034f | ||
|
|
daff6dce4c | ||
|
|
94c7c5cebe | ||
|
|
f2c4901dd0 | ||
|
|
95d8eb9714 | ||
|
|
62165445fe | ||
|
|
6b12371f50 | ||
|
|
38cb4ccbd3 | ||
|
|
8ccaaae085 | ||
|
|
6f7ae4770a | ||
|
|
5aa348a574 | ||
|
|
7b8fa49482 | ||
|
|
789cf654d0 | ||
|
|
a300a6094e | ||
|
|
37b09e70b0 | ||
|
|
530fbfc9b4 | ||
|
|
73c312ec1a | ||
|
|
318a959470 | ||
|
|
f9cc98791a | ||
|
|
263eb3c632 | ||
|
|
52b3926f92 | ||
|
|
af3755bf91 | ||
|
|
419d719ab8 | ||
|
|
3877cf9ab8 | ||
|
|
912056a364 | ||
|
|
165b33a94e | ||
|
|
12fff1b966 | ||
|
|
128eba7ec3 | ||
|
|
5bb370df0e | ||
|
|
6431343ad7 | ||
|
|
bd292076e3 | ||
|
|
ce0ddbe517 | ||
|
|
5451bb185e | ||
|
|
057cf3648e | ||
|
|
80d5c5d85c | ||
|
|
671a997092 | ||
|
|
f2fbfdf017 | ||
|
|
1ea7340111 | ||
|
|
7b38ea4151 | ||
|
|
c4ed12bbd1 | ||
|
|
c32b352ec1 | ||
|
|
9b2565dff9 | ||
|
|
f833f26212 | ||
|
|
66a7082b5c | ||
|
|
cc3a6350a5 | ||
|
|
9202ce8757 | ||
|
|
c0e4f126de | ||
|
|
44ca0a4904 | ||
|
|
64ddf393aa | ||
|
|
a60615a2d8 | ||
|
|
d9fa9c3566 | ||
|
|
5115b8739e | ||
|
|
854fb4acc0 | ||
|
|
07ef81fd95 | ||
|
|
17e39f56dd | ||
|
|
040e94cab7 | ||
|
|
93563365ac | ||
|
|
c287879e55 | ||
|
|
537c73d548 | ||
|
|
ad3f5f6e20 | ||
|
|
a468404ab5 | ||
|
|
6d7fba1a6c | ||
|
|
5c734a80f8 | ||
|
|
edfee5193c | ||
|
|
9900651c55 | ||
|
|
948adbe350 | ||
|
|
ade0ba794c | ||
|
|
5494c33a89 | ||
|
|
c8f5cab636 | ||
|
|
4a8a40a6f2 | ||
|
|
70d41cdc79 | ||
|
|
aec99ed14f | ||
|
|
9a645b4b19 | ||
|
|
bea3c33a46 | ||
|
|
e082c02630 | ||
|
|
291b94bef0 | ||
|
|
f119be3ed5 | ||
|
|
9034094cf9 | ||
|
|
c48766aeb7 | ||
|
|
28a6afeb02 | ||
|
|
c8d0f5a104 | ||
|
|
3c396257de | ||
|
|
a9be841d2d | ||
|
|
7d0581a7a5 | ||
|
|
4efeb66b73 | ||
|
|
3b05f8b4b4 | ||
|
|
6b4f09d740 | ||
|
|
f1b02c1280 | ||
|
|
3d546a4c5d | ||
|
|
19368bcefa | ||
|
|
dbbf26449c | ||
|
|
8f28804f8c | ||
|
|
b7edfea4ce | ||
|
|
23b2f94c40 | ||
|
|
8f40f41fef | ||
|
|
33f868144b | ||
|
|
b2545bb709 | ||
|
|
3b6e1e82d9 | ||
|
|
7710c88797 | ||
|
|
4d5001d18d | ||
|
|
0f4f108eb5 | ||
|
|
f0d0bb7170 | ||
|
|
66157da5c2 | ||
|
|
13493e1afe | ||
|
|
f6bfacda2c | ||
|
|
f7a86b5484 | ||
|
|
66cd3f8184 | ||
|
|
3a237c93be | ||
|
|
4c34066727 | ||
|
|
1960008c83 | ||
|
|
deffbd6321 | ||
|
|
53927c9aa0 | ||
|
|
d84346616a | ||
|
|
e1183dbc0b | ||
|
|
602f1574ca | ||
|
|
358f7d16da | ||
|
|
e4006d6175 | ||
|
|
949b4ce4e9 | ||
|
|
cbafac8ea9 | ||
|
|
e4bf116ce8 | ||
|
|
bccdad4b1b | ||
|
|
9b372b3cce | ||
|
|
98d0c00f85 | ||
|
|
9d2f2230ee | ||
|
|
81c6958428 | ||
|
|
f976eda6a9 | ||
|
|
fe8d5a3528 | ||
|
|
240c3508fe | ||
|
|
1065f5fb86 | ||
|
|
2b37986007 | ||
|
|
22d0c4a241 | ||
|
|
dd47ce6767 | ||
|
|
5c80ce42e0 | ||
|
|
adb727d282 | ||
|
|
e17ca355ae | ||
|
|
b80940ac4f | ||
|
|
1eca139db9 | ||
|
|
25278beb2f | ||
|
|
5922ffff62 | ||
|
|
ff084e9681 | ||
|
|
86e5d219d2 | ||
|
|
b78e0a54ed | ||
|
|
4bfacb8b91 | ||
|
|
e9ad58a373 | ||
|
|
09c48539ad | ||
|
|
3693ecdd30 | ||
|
|
ddc66e6005 | ||
|
|
fd0b1f8931 | ||
|
|
1a4f638ff6 | ||
|
|
77239db3c5 | ||
|
|
0ea59c8d58 | ||
|
|
54e2a8c7fe | ||
|
|
245a8e0a3a | ||
|
|
51e474c893 | ||
|
|
81d3e64518 | ||
|
|
95da161be3 | ||
|
|
8618f13b7a | ||
|
|
e24e7578f2 | ||
|
|
a03ad3de23 | ||
|
|
9bd40a9b79 | ||
|
|
b4b61b9b7d | ||
|
|
5656fe9a9b | ||
|
|
fb79146ae6 | ||
|
|
ba27191b2a | ||
|
|
dc87aa3d5c | ||
|
|
83cf3aebab | ||
|
|
dedd9bd03c | ||
|
|
ab36a358b7 | ||
|
|
6ea97f09cf | ||
|
|
5f7822d202 | ||
|
|
6a87225dd0 | ||
|
|
b6f56c0812 | ||
|
|
c4ce2a2549 | ||
|
|
41650da297 | ||
|
|
74c61e6805 | ||
|
|
e8dd7bbcc9 | ||
|
|
335d012d55 | ||
|
|
17fc58840a | ||
|
|
0e8c55b9f5 | ||
|
|
d581f653c6 | ||
|
|
48dbaf05ae | ||
|
|
540da69d61 | ||
|
|
06efd64a80 | ||
|
|
62d872984b | ||
|
|
1dd11dd8f8 | ||
|
|
2ce375d8eb | ||
|
|
8ed0e58d63 | ||
|
|
660a6929fd | ||
|
|
44f6c972d4 | ||
|
|
6a6077bf1d | ||
|
|
30234a4e78 | ||
|
|
dc9edf7538 | ||
|
|
92574458d0 | ||
|
|
c35ef9ad15 | ||
|
|
4059bcc0fa | ||
|
|
1840d1c49f | ||
|
|
cbd948f6f3 | ||
|
|
454c093033 | ||
|
|
45eaf7ce58 | ||
|
|
04b7af4df5 | ||
|
|
8c6978be82 | ||
|
|
6c9e7156f7 | ||
|
|
bc89845523 | ||
|
|
9ffe9c2006 | ||
|
|
1d598d7772 | ||
|
|
7f576ccc82 | ||
|
|
d5da8a6277 | ||
|
|
a297204b27 | ||
|
|
e0182bb03e | ||
|
|
ca5bf5e9d7 | ||
|
|
5475d730ff | ||
|
|
7796520580 | ||
|
|
340500c351 | ||
|
|
043d33ff91 | ||
|
|
baf991b342 | ||
|
|
dc47e90126 | ||
|
|
67e3f9e686 | ||
|
|
aaeb6b90ed | ||
|
|
d124ada755 | ||
|
|
31105aefe4 | ||
|
|
44c258796e | ||
|
|
26100120a9 | ||
|
|
0db8ce891b | ||
|
|
979aba5685 | ||
|
|
396da6bd94 | ||
|
|
1b0d86220f | ||
|
|
957d2c0d1a | ||
|
|
455657912a | ||
|
|
e3da1902df | ||
|
|
d0f8e9208f | ||
|
|
de50346428 | ||
|
|
c7ca51f950 | ||
|
|
4522174555 | ||
|
|
126230ad08 | ||
|
|
6aa1f4156a | ||
|
|
2726faa090 | ||
|
|
230b84032d | ||
|
|
9c4c5e2d1a | ||
|
|
2bf8e2d2d7 | ||
|
|
9bb05c8dea | ||
|
|
2707aa2818 | ||
|
|
93c644da88 | ||
|
|
4a114c0fdc | ||
|
|
f95108155d | ||
|
|
75f75854c2 | ||
|
|
e20c3cd0b6 | ||
|
|
2273ea4099 | ||
|
|
b115b0c6a3 | ||
|
|
9d79a51f18 | ||
|
|
db9005158e | ||
|
|
4491999a8c | ||
|
|
113a502a7e | ||
|
|
7ad39003f4 | ||
|
|
4b43871708 | ||
|
|
aa8f7552a2 | ||
|
|
19d94b53d2 | ||
|
|
ca98a261e6 | ||
|
|
535ec2ced6 | ||
|
|
a300c236ba | ||
|
|
b16c26b24c | ||
|
|
1b1dde3fc8 | ||
|
|
bd5880843f | ||
|
|
abf35a31f3 | ||
|
|
015638035a | ||
|
|
8e27fe83f1 | ||
|
|
ce4b105065 | ||
|
|
37a7b79a6f | ||
|
|
ef19e8aeef | ||
|
|
f6886b4749 | ||
|
|
8306959cb4 | ||
|
|
d1918ee206 | ||
|
|
b2b76f9e35 | ||
|
|
a07fb264e8 | ||
|
|
881f2d04d2 | ||
|
|
e1b629df88 | ||
|
|
eab6a194e1 | ||
|
|
3733bc9148 | ||
|
|
ae5746a636 | ||
|
|
cb509cebb3 | ||
|
|
511c4474c7 | ||
|
|
d063aea977 | ||
|
|
447efc52d8 | ||
|
|
296acf820c | ||
|
|
6ae49acb69 | ||
|
|
af1b06c5be | ||
|
|
4732c8565d | ||
|
|
52dd1476db | ||
|
|
63170b9214 | ||
|
|
2203b399df | ||
|
|
d80f7a6ef3 | ||
|
|
88c56d8250 | ||
|
|
fca24a8f84 | ||
|
|
6d140a141a | ||
|
|
a18e325c18 | ||
|
|
c4d9c51e49 | ||
|
|
27e980de28 | ||
|
|
3c4906bb4d | ||
|
|
da796c80c3 | ||
|
|
7a2af0f506 | ||
|
|
3e562e7450 | ||
|
|
4fc777268b | ||
|
|
037e57b687 | ||
|
|
2b289655c1 | ||
|
|
118ea6093d | ||
|
|
cac6f7428c | ||
|
|
ae6acc4ca2 | ||
|
|
641c6f0132 | ||
|
|
56dc8cad71 | ||
|
|
7cc07d842c | ||
|
|
baaadf07fa | ||
|
|
719b32ba36 | ||
|
|
af5c1096b5 | ||
|
|
3008222b92 | ||
|
|
5ef9faacd5 | ||
|
|
ff65b6ea2f | ||
|
|
4c8a087b81 | ||
|
|
8f4bf93f02 | ||
|
|
824b2f6fff | ||
|
|
ba0c7334b7 | ||
|
|
a1dd724220 | ||
|
|
a7820e5f08 | ||
|
|
1a2eee8060 | ||
|
|
4a2713a9f0 | ||
|
|
5ece0b4f70 | ||
|
|
44e8ec2b37 | ||
|
|
d7e5f4b895 | ||
|
|
b0c7bdf82b | ||
|
|
a239ac1a52 | ||
|
|
99459dc55d | ||
|
|
78ba99778a | ||
|
|
96d3df3135 | ||
|
|
cbe4bbac6a | ||
|
|
f502e82ec4 | ||
|
|
a5d8766a9e | ||
|
|
55d8e3d76b | ||
|
|
7b7fb4d278 | ||
|
|
09c7c50ad3 | ||
|
|
131250dc03 | ||
|
|
130187723c | ||
|
|
7bac95c9ad | ||
|
|
add2475700 | ||
|
|
533e402bca | ||
|
|
b87a23037e | ||
|
|
6d88bb5b83 | ||
|
|
435801c893 | ||
|
|
9d0577fa5c | ||
|
|
f2891dae74 | ||
|
|
a43a1f5b67 | ||
|
|
ee9ca1ece7 | ||
|
|
8271e20fac | ||
|
|
132b1f7ffe | ||
|
|
77b4d97069 | ||
|
|
2168d5a30e | ||
|
|
7ad90b1b80 | ||
|
|
f60ef5dbd5 | ||
|
|
4dc26d0a77 | ||
|
|
551273b831 | ||
|
|
d5a09674ae | ||
|
|
907e620e9e | ||
|
|
f96ec75eec | ||
|
|
4d00db2b42 | ||
|
|
db564b4521 | ||
|
|
3f2076d195 | ||
|
|
ed13c43e93 | ||
|
|
b5a9fe71e1 | ||
|
|
d0037d90f4 | ||
|
|
e885ee0d35 | ||
|
|
ff5e5d1062 | ||
|
|
1bfadf5219 | ||
|
|
4f9eca78d9 | ||
|
|
7aa2994078 | ||
|
|
1128b3ea83 | ||
|
|
9d06947125 | ||
|
|
14cc600a8b | ||
|
|
4f3fd86f91 | ||
|
|
e663717d64 | ||
|
|
8b5d388e77 | ||
|
|
22d781edd5 | ||
|
|
4252832ba5 | ||
|
|
fab58296af | ||
|
|
e142877e10 | ||
|
|
6f6e453ae4 | ||
|
|
50e620daf2 | ||
|
|
c334439df6 | ||
|
|
2d9b4f273e | ||
|
|
15c7099e85 | ||
|
|
d2b1f6176f | ||
|
|
8306d7931b | ||
|
|
b07fbb726e | ||
|
|
9586f0e61c | ||
|
|
7d66c07cef | ||
|
|
28ecb2fe1d | ||
|
|
a9cafeaa76 | ||
|
|
5fc69ccb73 | ||
|
|
bc626e3512 | ||
|
|
98561f9db9 | ||
|
|
b56dee2a92 | ||
|
|
885a7f592e | ||
|
|
6965448a24 | ||
|
|
475d63dad8 | ||
|
|
c87a0bde0b | ||
|
|
c1bc9886b7 | ||
|
|
88f8437c5a | ||
|
|
411a1c641d | ||
|
|
dc0ad73eca | ||
|
|
04e008afa0 | ||
|
|
a6207f70d5 | ||
|
|
b8a30be7bc | ||
|
|
67d60766c1 | ||
|
|
97c0b28a98 | ||
|
|
c61aded388 | ||
|
|
1fd57b5d63 | ||
|
|
755b8dec30 | ||
|
|
ecd5c1fcc3 | ||
|
|
db5402385a | ||
|
|
09ef3073a1 | ||
|
|
6dd3833e0f | ||
|
|
d4762a4d8d | ||
|
|
38cc55ea09 | ||
|
|
5d60295db3 | ||
|
|
18bd3b855c | ||
|
|
868d423c82 | ||
|
|
edb6857de0 | ||
|
|
ed803fb994 | ||
|
|
83d83a364d | ||
|
|
690bb92154 | ||
|
|
8e39eef7aa | ||
|
|
1923a51c59 | ||
|
|
3dc1107b40 | ||
|
|
dd22e9009c | ||
|
|
c7ccf39abf | ||
|
|
af166f53d3 | ||
|
|
21eb26a374 | ||
|
|
e2aaf5d1de | ||
|
|
0b7ca15c4f | ||
|
|
07ee2a4aff | ||
|
|
141d3b6737 | ||
|
|
e2c3e6dbaa | ||
|
|
b1126556c0 | ||
|
|
69cb8d1398 | ||
|
|
094d979ce6 | ||
|
|
92dd669597 |
15
.gitignore
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
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
|
||||
src/lang/qbittorrent_*.qm
|
||||
53
.travis.yml
Normal file
@@ -0,0 +1,53 @@
|
||||
language:
|
||||
- cpp
|
||||
|
||||
env:
|
||||
# use libtorrent 0.15.10
|
||||
- lt_source=from_dist gui=true
|
||||
- lt_source=from_dist gui=false
|
||||
# use libtorrent 0.16.X from RC_0_16 svn branch
|
||||
- lt_source=from_svn gui=true
|
||||
- lt_source=from_svn gui=false
|
||||
|
||||
branches:
|
||||
except:
|
||||
- search_encoding_windows
|
||||
- v2_9_x
|
||||
|
||||
notifications:
|
||||
email:
|
||||
on_success: change
|
||||
on_failure: change
|
||||
|
||||
before_install:
|
||||
- shopt -s expand_aliases
|
||||
- alias sudo="sudo "
|
||||
# Using nprocs/2 sometimes may fail (gcc is killed by system), just use two threads
|
||||
- alias make="colormake -j2 "
|
||||
|
||||
# Also setup a virtual display for after_success target when gui == true
|
||||
- if ! $gui; then qbtconf="$qbtconf --disable-gui"; else export "DISPLAY=:99.0" && /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 ; fi
|
||||
- ltconf=" --with-libgeoip=system"
|
||||
|
||||
- echo settings
|
||||
- echo $lt_source
|
||||
- echo $ltconf
|
||||
- echo $gui
|
||||
- echo $qbtconf
|
||||
|
||||
- sudo apt-get -qq update
|
||||
# Travis can stall during heavy load if these packages are installed in one step - split the command
|
||||
- sudo apt-get -qq install debhelper qconf colormake libssl-dev libgeoip-dev
|
||||
- sudo apt-get -qq install libboost-dev libboost-filesystem-dev libboost-system-dev
|
||||
- sudo apt-get -qq install libqt4-dev
|
||||
|
||||
install:
|
||||
- if [[ "$lt_source" == "from_dist" ]]; then sudo apt-get -qq install libtorrent-rasterbar-dev; fi
|
||||
- if [[ "$lt_source" == "from_svn" ]]; then cd .. && svn co svn://svn.code.sf.net/p/libtorrent/code/branches/RC_0_16 ./libtorrent && (cd libtorrent && ./autotool.sh && ./configure $ltconf && sudo make install) && sudo ldconfig /usr/local/lib && cd $TRAVIS_BUILD_DIR ; fi
|
||||
|
||||
script:
|
||||
- qt-qconf
|
||||
- ./configure $qbtconf && sudo make install
|
||||
|
||||
after_success:
|
||||
- if $gui ; then qbittorrent --version ; else qbittorrent-nox --version ; fi
|
||||
18
.tx/config
Normal file
@@ -0,0 +1,18 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[qbittorrent.qbittorrent_v3_1_x]
|
||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||
source_file = src/lang/qbittorrent_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
minimum_perc = 23
|
||||
mode = developer
|
||||
|
||||
|
||||
[qbittorrent.qbittorrentdesktop_master]
|
||||
source_file = src/Icons/qBittorrent.desktop
|
||||
source_lang = en
|
||||
type = DESKTOP
|
||||
minimum_perc = 23
|
||||
mode = developer
|
||||
80
AUTHORS
@@ -1,17 +1,38 @@
|
||||
Author:
|
||||
Current maintainer:
|
||||
* Sledgehammer999 <sledgehammer999@qbittorrent.org>
|
||||
|
||||
Original author:
|
||||
* Christophe Dumez <chris@qbittorrent.org>
|
||||
|
||||
Contributors:
|
||||
* Vladimir Golovnev <glassez@yandex.ru>
|
||||
* Stefanos Antaris <santaris@csd.auth.gr>
|
||||
* Mohammad Dib <mdib@qbittorrent.org>
|
||||
* Mirco Chinelli <infinity89@fastwebmail.it>
|
||||
* Ishan Arora <ishan@qbittorrent.org>
|
||||
* Arnaud Demaizière <arnaud@qbittorrent.org>
|
||||
* Grigis Gaëtan <cipher16@gmail.com>
|
||||
* Christian Kandeler <zambesi@users.sourceforge.net>
|
||||
* Silvan Scherrer <silvan.scherrer@aroa.ch>
|
||||
* Nick Tiskov <daymansmail@gmail.com>
|
||||
|
||||
Code from other projects:
|
||||
* files src/qtsingleapp/* src/lineedit/*
|
||||
copyright: Nokia Corporation
|
||||
license: LGPL
|
||||
|
||||
* files src/ico.cpp src/ico.h
|
||||
copyright: Malte Starostik <malte@kde.org>
|
||||
license: LGPL
|
||||
|
||||
* files src/search_engine/socks.py
|
||||
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
||||
license: BSD
|
||||
|
||||
* file src/stacktrace_win.h
|
||||
copyright: Quassel Project
|
||||
license: GPLv2/3
|
||||
|
||||
Images Authors:
|
||||
* files: src/Icons/*.png
|
||||
copyright: Gnome Icon Theme
|
||||
@@ -24,9 +45,9 @@ Images Authors:
|
||||
url: http://www.oxygen-icons.org
|
||||
|
||||
* files: src/Icons/flags/*.png
|
||||
copyright: Open Clip Art Library
|
||||
license: Creative Commons Public Domain Dedication
|
||||
url: http://www.openclipart.org
|
||||
copyright: Mark James <mjames@gmail.com>
|
||||
license: Public Domain
|
||||
url: http://www.famfamfam.com
|
||||
|
||||
* files: src/Icons/skin/*.png
|
||||
files: src/menuicons/YYxYY/*.png
|
||||
@@ -37,6 +58,10 @@ Images Authors:
|
||||
copyright: Greg Houston <gregory.houston@gmail.com>
|
||||
license: MIT
|
||||
|
||||
* file: src/Icons/skin/qbittorrent_mono*
|
||||
copyright: Daniel Eguren <deguren@gmail.com>
|
||||
license: LGPL
|
||||
|
||||
* file: src/search_engine/engines/btjunkie.png
|
||||
copyright: Downloaded from btjunkie.org
|
||||
|
||||
@@ -54,33 +79,46 @@ Images Authors:
|
||||
|
||||
Translations authors:
|
||||
* files: src/lang/*.ts
|
||||
* file: src/Icons/qBittorrent.desktop
|
||||
copyright:
|
||||
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
|
||||
- Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)
|
||||
- Catalan: Gekko Dam Beer (gekko04@users.sourceforge.net)
|
||||
- Arabic: SDERAWI (abz8868@msn.com), sn51234 (nesseyan@gmail.com) and Ibrahim Saed ibraheem_alex(Transifex)
|
||||
- Armenian: Hrant Ohanyan (hrantohanyan@mail.am)
|
||||
- Basque: Xabier Aramendi (azpidatziak@gmail.com)
|
||||
- Belarusian: Mihas Varantsou (meequz@gmail.com)
|
||||
- Bulgarian: Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)
|
||||
- Catalan: Francisco Luque Contreras (frannoe@ya.com)
|
||||
- Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com)
|
||||
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com)
|
||||
- Czech: Jirka Vilim (web@tets.cz)
|
||||
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex)
|
||||
- Croatian: Oliver Mucafir (oliver.untwist@gmail.com)
|
||||
- Czech: Jirka Vilim (web@tets.cz) and Petr Cernobila abr(Transifex)
|
||||
- Danish: Mathias Nielsen (comoneo@gmail.com)
|
||||
- Dutch: Joost Schipper (heavyjoost@users.sourceforge.net)
|
||||
- Dutch: Pieter Heyvaert (pieter_heyvaert@hotmail.com)
|
||||
- English: Christophe Dumez (chris@qbittorrent.org)
|
||||
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
|
||||
- English(Australia): Robert Readman readmanr(Transifex)
|
||||
- English(United Kingdom): Robert Readman readmanr(Transifex)
|
||||
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net), Pekka Niemi (pekka.niemi@iki.fi) and Jiri Grönroos artnay(Transifex)
|
||||
- French: Christophe Dumez (chris@qbittorrent.org)
|
||||
- Galician: Marcos Lans (marcoslansgarza@gmail.com) and antiparvos(Transifex)
|
||||
- Georgian: Beqa Arabuli (arabulibeqa@yahoo.com)
|
||||
- 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), Stephanos Antaris (santaris@csd.auth.gr), sledgehammer999(hammered999@gmail.com) and Γιάννης Ανθυμίδης Evropi(Transifex)
|
||||
- Hebrew: David Deutsch (d.deffo@gmail.com)
|
||||
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
||||
- Italian: Mirko Ferrari (mirkoferrari@gmail.com) and Ferraro Luciano (luciano.ferraro@gmail.com)
|
||||
- Japanese: Nardog (alphisation@gmail.com)
|
||||
- Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)
|
||||
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
|
||||
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
||||
- Norwegian: Lars-Erik Labori (hamil@users.sourceforge.net)
|
||||
- Lithuanian: Naglis Jonaitis (njonaitis@gmail.com)
|
||||
- Norwegian: Tomaso
|
||||
- Polish: Mariusz Fik (fisiu@opensuse.org)
|
||||
- Portuguese: Nick Marinho (nickmarinho@gmail.com)
|
||||
- Romanian: Obada Denis (obadadenis@users.sourceforge.net)
|
||||
- Russian: Nick Khazov (m2k3d0n at users.sourceforge.net)
|
||||
- Portuguese: Sérgio Marques smarquespt(Transifex)
|
||||
- Portuguese(Brazil): Nick Marinho (nickmarinho@gmail.com)
|
||||
- Romanian: Obada Denis (obadadenis@users.sourceforge.net), Adrian Gabor Adriannho(Transifex) and Mihai Coman z0id(Transifex)
|
||||
- Russian: Nick Khazov (m2k3d0n at users.sourceforge.net), Alexey Morsov (samurai@ricom.ru), Nick Tiskov Dayman(daymansmail (at) gmail (dot) com), Dmitry DmitryKX(Transifex) and kraleksandr kraleksandr(Transifex)
|
||||
- Serbian: Anaximandar Milet (anaximandar at operamail.com)
|
||||
- Slovak: helix84
|
||||
- Spanish: Vicente Raul Plata Fonseca (silverxnt@users.sourceforge.net)
|
||||
- Swedish: Daniel Nylander (po@danielnylander.se)
|
||||
- Spanish: Francisco Luque Contreras (frannoe@ya.com), Alfredo Monclus alfrix(Transifex) and José Antonio Moray moray33(Transifex)
|
||||
- Swedish: Daniel Nylander (po@danielnylander.se) and Emil Hammarberg Ooglogput(Transifex)
|
||||
- Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
|
||||
- Ukrainian: Andrey Shpachenko (masterfix@users.sourceforge.net)
|
||||
- Ukrainian: Oleh Prypin (blaxpirit@gmail.com) and zubr139(Transifex)
|
||||
- Vietnamese: Anh Phan ppanhh(Transifex)
|
||||
license: GPLv2
|
||||
|
||||
10
COPYING
@@ -69,7 +69,7 @@ patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
@@ -124,7 +124,7 @@ above, provided that you also meet all of these conditions:
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
@@ -182,7 +182,7 @@ access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
@@ -239,7 +239,7 @@ impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
@@ -292,7 +292,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
|
||||
487
Changelog
@@ -1,3 +1,490 @@
|
||||
* Wed Feb 22 2015 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.12
|
||||
- OSX: Fix build to work with older machines. (sledgehammer999, Noctem)
|
||||
- WINDOWS: Fix automatic Python download. (sledgehammer999)
|
||||
- WINDOWS: Fix crashes due to memory corruption and improve Python registry searching. (glassez)
|
||||
|
||||
* Wed Oct 22 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.11
|
||||
- FEATURE: Allow relative torrent paths when qBittorrent is already running (pmzqla)
|
||||
- FEATURE: Make Windows icons suitable for high dpi screens (pmzqla)
|
||||
- FEATURE: Increase maximum size of system icons (pmzqla)
|
||||
- BUGFIX: Fix crash in the "Content" widget when user would right click in it without a torrent selected (Ivan Sorokin)
|
||||
- BUGFIX: Don't show multiple unlock UI dialogs. Closes #2040. (sledgehammer999)
|
||||
- SEARCH: Fix bug where python would falsely be detected and nothing worked (paolo-sz)
|
||||
- SEARCH: Fix TorrentReactor search plugin (Bruno Barbieri)
|
||||
- SEARCH: Fix search engine encoding issues with python3 on Windows (Bruno Barbieri)
|
||||
- SEARCH: Pirate bay search engine update (DoumanAsh)
|
||||
- SEARCH: Internal improvements in the python code (Bruno Barbieri)
|
||||
- WINDOWS: Fix magnet link association. Closes #1952. (sledgehammer999)
|
||||
- WINDOWS and OSX: Fix again the program updater. The url was changed by sourceforge.net. Closes #1954. (sledgehammer999)
|
||||
- OSX: Fix compilation (sledgehammer999)
|
||||
- WEBUI: Set correct HTTP Content-Type in case of forbidden access. (pmzqla)
|
||||
- COSMETIC: Remove unneeded tooltip (pmzqla)
|
||||
- COSMETIC: Don't stretch the last section in the transfer list (pmzqla)
|
||||
- COSMETIC: Set minimum width of the left panel in the preferences (pmzqla)
|
||||
- OTHER: Optimize sorting of rows. This should have less CPU impact when many torrents are present. (Ivan Sorokin)
|
||||
- OTHER: Use the correct character encoding for exceptions coming from libtorrent. (sledgehammer999)
|
||||
- OTHER: Use boost:bind() as the docs show. Allows compilation with older gcc versions. (sledgehammer999)
|
||||
|
||||
* Sun Sep 21 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.10
|
||||
- FEATURE: Allow disabling of OS cache. This will prevent RAM increases on Windows when seeding many files. Closes #1699. (sledgehammer999)
|
||||
- FEATURE: Add 'Completed' column. Closes #1241. (sledgehammer999)
|
||||
- FEATURE: Added 'Ratio Limit' column. Closes #936. (sledgehammer999)
|
||||
- FEATURE: Add 'Open' and 'Open Containing Folder' entries in the content's right-click menu. Closes #1143. (sledgehammer999)
|
||||
- FEATURE: Don't listen on IPv6 address by default. Prevents network connectivity problems. Closes #1880. (sledgehammer999)
|
||||
- FEATURE: Added 'Shutdown now' button in shutdown confirmation dialog. Closes #969. (sledgehammer999)
|
||||
- FEATURE: Add peer port column to PeerListWidget. Closes #1650. (Ivanov Juriy)
|
||||
- COSMETIC: Fix weird ratio values when torrent was imported or downloaded history was lost due to crash. (sledgehammer999)
|
||||
- COSMETIC: Use 'μTP' instead of 'uTP'. (sledgehammer999)
|
||||
- COSMETIC: Show the loaded torrents in the transferlist when qBT is launched with a torrent/magnet and the AddNewTorrentDialog is showing. Closes #1564. (sledgehammer999)
|
||||
- COSMETIC: Don't mix finished/unifinished torrents when sorting by ETA. Closes #1688. (sledgehammer999)
|
||||
- COSMETIC: Sort finished torrents by completed date when sorting by queue number. (sledgehammer999)
|
||||
- COSMETIC: Right align numerical values in the transfer list. Partially revert 51a9a9aab. Closes #1903. (sledgehammer999)
|
||||
- COSMETIC: Don't display the Search Engine tab by default. (sledgehammer999)
|
||||
- WINDOWS: Correctly associate torrents and magnet links with qBittorrent under non-admin accounts. Closes #291 #527 #579 #614 #964. (glassez, sledgehammer999)
|
||||
- WINDOWS: Check for python before creating the search engine tab. Prevents the creation of python specific files in the user's PC if no python is found. Closes #1370. (sledgehammer999)
|
||||
- WINDOWS: Don't create keys in the registry if python isn't found. Closes #1370. (sledgehammer999)
|
||||
- WINDOWS: Can now correctly detect 64bit and 32bit python installations on 64bit Windows. Closes #1148 #445 #795 #1708. (sledgehammer999)
|
||||
- WINDOWS: Search first in PATH for python. Closes #956. (sledgehammer999)
|
||||
- OSX: Enable system tray in MACOSX (Nick Korotysh).
|
||||
- OSX: Fix headless (nox) build. (sledgehammer999)
|
||||
- WEBUI: Correctly save/load settings and other improvements (glassez)
|
||||
- WEBUI: Removed broken 'Report a bug' iframe. Closes #1343 (Benjamin Hutchins)
|
||||
- WEBUI: Removed broken 'Documentation'. Improves fix for #1343 (Benjamin Hutchins)
|
||||
- WEBUI: Removed essentially useless 'Visit website' iframe and changed it to a regular link. Improves fix for #1343 (Benjamin Hutchins)
|
||||
- BUGFIX: Fix RSS feed icon. The tmp file gets deleted in the feed destructor. Closes #1639 (sledgehammer999)
|
||||
- BUGFIX: fix issue #1674: AddNewTorrentDialog is shown again and again even if checkbox "dont ask me again" is set (Ivan Sorokin)
|
||||
- BUGFIX: Don't show availability bar for magnet links (Ivan Sorokin)
|
||||
- BUGFIX: Fix crash when the selected torrent disappears from the transfer list. Closes #1661 (sledgehammer999)
|
||||
- BUGFIX: Fix tracker announcing problem(hit-and-run) when many torrents are being active. Closes #1571 (sledgehammer999)
|
||||
- BUGFIX: Count magnet links in the 'downloading' filter and make them prevent system inhibition. Closes #1558 (sledgehammer999)
|
||||
- BUGFIX: Pick up updated plugins. Closes #1745. (sledgehammer999)
|
||||
- BUGFIX: Bring mainwindow in front when notification is clicked and other windows are in front. (sledgehammer999)
|
||||
- BUGFIX: Speedup torrent moving (Ivan Sorokin)
|
||||
- BUGFIX: Fix bug when moving a torrent before the previous move is completed (Ivan Sorokin)
|
||||
- BUGFIX: Add option to hibernate computer in Auto-Shutdown menu (Bruno Barbieri)
|
||||
- BUGFIX: Fix column resizing issues (Bryan Roscoe)
|
||||
- BUGFIX: Fix possible crashes. Closes #1814. (sledgehammer999)
|
||||
- BUGFIX: Limit max cache to 1800MiB for 32bits compiled binaries and to 4GiB for other. Closes #1698. (sledgehammer999)
|
||||
- BUGFIX: Don't localize double numbers in the webui. Closes #1525. (sledgehammer999)
|
||||
- BUGFIX: Don't shrink transferlist rows when scrolling horizontally. Closes #1613. (sledgehammer999)
|
||||
- BUGFIX: When qBT is launched with a magnet don't show it in the transferlist while the metadata are being loaded in the background. (sledgehammer999)
|
||||
- BUGFIX: Show disk space while retrieving metadata. Closes #1693. (sledgehammer999)
|
||||
- BUGFIX: Don't disable DHT/LSD/UPnP in the GUI when anonymous mode is enabled. (sledgehammer999)
|
||||
- BUGFIX: Possible fix for crash in RSS code. Closes #1901. (sledgehammer999)
|
||||
- BUGFIX: Fixed SMTP emailing code (Ivanov Juriy, sledgehammer999)
|
||||
- BUGFIX: Don't display the context menu in 'Content' and 'HTTP Sources' buttons when no torrent is selected. It prevents crashes. Closes #1906, #1900. (sledgehammer999)
|
||||
- BUGFIX: Don't translate file extensions. Closes #1907. (sledgehammer999)
|
||||
- BUGFIX: Fix available disk space label on single file torrents. (sledgehammer999)
|
||||
- BUGFIX: Show stalled downloads that are uploading under the 'Active' filter. Closes #1654." (sledgehammer999)
|
||||
- BUGFIX: fix import torrent with "Keep incomplete torrents in:" enabled (lojack5)
|
||||
- BUGFIX: Send a spoofed user agent for the search engines(fixes some of them) (Martin Janco)
|
||||
- BUGFIX: Support URLs that redirect to magnet links (Gelmir)
|
||||
- BUGFIX: Consider queued items before deciding to 'auto-shutdown on downloads completion'. Closes #1942. (sledgehammer999)
|
||||
|
||||
* Tue Apr 29 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.9.2
|
||||
- OTHER: The v3.1.9.1 Windows build was broken
|
||||
|
||||
* Mon Apr 28 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.9.1
|
||||
- OTHER: This is an excuse to produce new builds with an OpenSSL version that isn't affected by the heartbleed bug for Windows and Mac. This bug should only affect the WebUI and only if HTTPS/SSL authentication was enabled.
|
||||
|
||||
* Sat Mar 01 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.9
|
||||
- BUGFIX: Fix nox build. Closes #1368 (bob23450)
|
||||
- BUGFIX: Fix build with libtorrent 0.15.x (sledgehammer999)
|
||||
- BUGFIX: Fix missing percentage signs. Closes #1392. (sledgehammer999)
|
||||
- BUGFIX: Fix queue sorting order. (alfrix)
|
||||
- BUGFIX: Fix build using qt < 4.7 Closes #1385. (Evgeny Lensky)
|
||||
- BUGFIX: Fix autoupdater. Send our user-agent to sourceforge.net (sledgehammer999)
|
||||
- FEATURE: Add button for links in toolbar (alfrix)
|
||||
|
||||
* Sun Feb 02 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.8
|
||||
- BUGFIX: Really fix build of v3.1.6
|
||||
|
||||
* Sun Feb 02 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.7
|
||||
- BUGFIX: Fix build of v3.1.6
|
||||
|
||||
* Sun Feb 02 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.6
|
||||
- BUGFIX: Fix 'preview file' regression. Closes #1285. (sledgehammer999)
|
||||
- BUGFIX: Fix peers and seeds sorting in transfer list. (Angel Alonso)
|
||||
- BUGFIX: Fix btdigg search engine. (BTDigg research team)
|
||||
- BUGFIX: Save statistics every 15min and only if there was new traffic. Fixes #1288 and partially #1272. (sledgehammer999)
|
||||
- BUGFIX: Fix share ratio text in the 'general' tab. (sledgehammer999)
|
||||
- BUGFIX: Output a more generic message when blocking IPs and don't use italics in the log. (sledgehammer999)
|
||||
- BUGFIX: Allow 2 decimals when setting the share ratio. Closes #1303. (sledgehammer999)
|
||||
- BUGFIX: Fix extratorrents search plugin. (sledgehammer999)
|
||||
- BUGFIX: Use shorter names for amount columns in main UI (Gelmir)
|
||||
- BUGFIX: Fix overstretched options dialog. Closes #1293. (sledgehammer999)
|
||||
- BUGFIX: Don't show a popup menu when no torrent is selected. (sledgehammer999)
|
||||
- BUGFIX: Launch external programs async and don't block. Closes #1252. (sledgehammer999)
|
||||
- BUGFIX: Don't re-announce to trackers when torrent is paused. Closes #1310. (sledgehammer999)
|
||||
- BUGFIX: Bring dialog boxes in the front when qbt doesn't have focus. (sledgehammer999)
|
||||
- BUGFIX: Correctly resize 'name' column of the content tab. Closes #1360. (sledgehammer999)
|
||||
- BUGFIX: Correctly restore 'name' column width when loading magnet links in the 'Add new torrent dialog'. Closes #1334. (sledgehammer999)
|
||||
- WEBUI: Fix sorting by size in WebUI when non-default locale used. (Vladimir Golovnev)
|
||||
- UI: Reposition statistics menu item. (sledgehammer999)
|
||||
- UI: Convert more accurately decimal numbers to text. (sledgehammer999)
|
||||
- WINDOWS/OSX: Improvements on the behavior of the program updater(closes #1282) (sledgehammer999)
|
||||
- LINUX: Explicitle tell that we don't support freedesktop's startup notify standard. Fixes GNOME issues. Closes #1217. (sledgehammer999)
|
||||
- LINUX: Add our WM_CLASS in the .desktop file so window managers know how to group our windows. (sledgehammer999)
|
||||
- OTHER: Sync translations from Transifex.
|
||||
|
||||
* Thu 16 Jan 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.5
|
||||
- BUGFIX: Fix compilation with Qt 4.7. Closes #1215. (sledgehammer999)
|
||||
- BUGFIX: Third attempt at fixing saving settings on OS shutdown. (sledgehammer999)
|
||||
- BUGFIX: Preview now correctly uses the selected file. Closes #1222 #1182. (sledgehammer999)
|
||||
- BUGFIX: Allow to resize the columns in Add New Torrent dialog. Closes #1207 #676 (sledgehammer999)
|
||||
- BUGFIX: Ensure that at least one column in the tranferlist is always visible. Closes #1165. (sledgehammer999)
|
||||
- BUGFIX: Ensure that the options window will always be placed onscreen. Closes #1226. (sledgehammer999)
|
||||
- BUGFIX: Delete temporary files after they aren't needed. Closes #1188. (sledgehammer999)
|
||||
- BUGFIX: Correctly detect libtorrent version. (sledgehammer999)
|
||||
- BUGFIX: Various code cppcheck fixes (Konstantin Goncharik)
|
||||
- BUGFIX: Remove isohunt search engine and update thepiratebay url (sledgehammer999)
|
||||
- BUGFIX: Fix rss settings corruption when checking regexp and going to other rule. (Gelmir)
|
||||
- BUGFIX: Don't count paused torrents for the autoshutdown. Closes #1280. (sledgehammer999)
|
||||
- LINUX: Fix notifications with xfce4-notifyd.
|
||||
- OSX: Added basic retina support. Closes #1251. (Sébastien Lavoie)
|
||||
- OTHER: Sync translations from Transifex.
|
||||
|
||||
* Sun 29 Dec 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.4
|
||||
- FEATURE: Statistics dialog (Gelmir)
|
||||
- FEATURE: Tooltips explaining each peer's connection flags (sledgehammer999)
|
||||
- FEATURE: Win/Mac Check for program updates every 15min and allow the user to manually check for updates through the help menu. (sledgehammer999)
|
||||
- BUGFIX: Better dialog message for torrent delete confirmation (sledgehammer999)
|
||||
- BUGFIX: Fix resizing grip location. Closes #1146. (sledgehammer999)
|
||||
- BUGFIX: Lock toolbar in place. Closes #1144. (sledgehammer999)
|
||||
- BUGFIX: Second attempt at fixing saving settings on shutdown. (sledgehammer999)
|
||||
- BUGFIX: Sort labels in 'Add new torrent' dialog. Closes #1150 #411. (sledgehammer999)
|
||||
- LINUX: Fix build under Ubuntu 13.10 (sledgehammer999)
|
||||
- LINUX: Make sleep and shutdown functions work on systemd's logind (Faheem Pervez)
|
||||
|
||||
* Mon Nov 20 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.3
|
||||
- FEATURE: Add a key shortcut to "Add link to torrent..." (Angel Alonso)
|
||||
- BUGFIX: Make all columns and headers use the same text alignment in the transferlist. (sledgehammer999)
|
||||
- BUGFIX: Fix build system for Unix/Linux. (sledgehammer999)
|
||||
- BUGFIX: Case insensitive sort in Peers list. Closes #1066. (sledgehammer999)
|
||||
- BUGFIX: Small optimization of WebUI responses when there isn't a data payload. (sledgehammer999)
|
||||
- BUGFIX: Hide empty folders after filtering. Closes #74. (sledgehammer999)
|
||||
- BUGFIX: Expand folders when filtering files. Closes #1076. (sledgehammer999)
|
||||
- BUGFIX: Updated search plugin's URL (Zach Thibeau)
|
||||
- BUGFIX: Strip some png to fix incorrect sRGB profiles. (Angel Alonso)
|
||||
- BUGFIX: Fixed font issues on OSX Mavericks (Zach Thibeau)
|
||||
- BUGFIX: Improve text in the About dialog (Artem S. Tashkinov)
|
||||
- BUGFIX: Always show a peer IP address as a tool tip (Artem S. Tashkinov)
|
||||
- BUGFIX: Fix inhibit system functionality. Closes #766. (sledgehammer999)
|
||||
- BUGFIX: WebUI: Don't gzip too small payloads. (sledgehammer999)
|
||||
- BUGFIX: Correctly detect if the browser supports gzip compression. (sledgehammer999)
|
||||
- BUGFIX: Fix WebUI link to 'Anonymous mode' explanation. Closes #1093. (sledgehammer999)
|
||||
- BUGFIX: Correctly update tracker tier number in the trackers tab. Closes #1075. (sledgehammer999)
|
||||
- BUGFIX: Speed improvements.(sledgehammer999)
|
||||
- OTHER: Updated translations.
|
||||
|
||||
* Tue Nov 05 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.2
|
||||
- BUGFIX: Fix WebUI gzip compression. Closes #1037. (sledgehammer999)
|
||||
- BUGFIX: Fix compilation with qt < 4.8.0. Closes #1043. (sledgehammer999)
|
||||
- OTHER: Updated translations.
|
||||
|
||||
* Mon Oct 28 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.1
|
||||
- FEATURE: Show external IP in the log. Closes #968. (sledgehammer999)
|
||||
- FEATURE: Enable gzip compression in the webui. It should be faster now. (sledgehammer999)
|
||||
- FEATURE: Torrents show more states(queued for checking, downloading metadata, allocating, checking resume). (sledgehammer999)
|
||||
- FEATURE: Reenable "force reannounce" to all trackers. (sledgehammer999)
|
||||
- FEATURE: Allow to clear the UI lock password. Closes #973. (sledgehammer999)
|
||||
- FEATURE: New translations: English(Australia) and English(United Kingdom)
|
||||
- BUGFIX: Expose all available translation in the WebUI. Closes #976. (sledgehammer999)
|
||||
- BUGFIX: Copy IP copied wrong data. Closes #970 (sledgehammer999)
|
||||
- BUGFIX: "Preview file..." didn't work on single file torrents. (sledgehammer999)
|
||||
- BUGFIX: Fix and improve the scheduler (Gelmir and sledgehammer999)
|
||||
- BUGFIX: RSS fixes. Closes #960, #998 (Gelmir)
|
||||
- BUGFIX: Fix 'append label to save path' with magnet links. (sledgehammer999)
|
||||
- BUGFIX: Can download up to 10MB .torrent file when a link is provided. Closes #879 (sledgehammer999)
|
||||
- OTHER: Updated translations.
|
||||
- LINUX: Fix missing conf.pri error (leigh123linux)
|
||||
- WINDOWS: Don't remove file associations if they aren't our own. (sledgehammer999)
|
||||
|
||||
* Sat Oct 12 2013 - Christophe Dumez <chris@qbittorrent.org> and sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.0
|
||||
- FEATURE: Add command line option to daemonize qbittorrent-nox (ngaro)
|
||||
- FEATURE: Add "Shutdown qBittorrent" button to Web UI (ngaro)
|
||||
- FEATURE: Add setting to copy .torrent files for finished downloads (Driim)
|
||||
- FEATURE: Add option to start qBittorrent on Windows startup (sledgehammer999)
|
||||
- FEATURE: Add context menu to Web seed list (Gelmir)
|
||||
- FEATURE: Add support for tracker tiers / groups to creator (Gelmir)
|
||||
- FEATURE: Allow clearing execution and ban logs (Gelmir)
|
||||
- FEATURE: Add option to use random port on each startup (ireallylikeher)
|
||||
- FEATURE: Expose the cache expiry to the user (Gelmir)
|
||||
- FEATURE: Support Atom feeds (Gelmir)
|
||||
- FEATURE: Add "save path" column (John Peterson)
|
||||
- FEATURE: Add μTorrent-compatible "Flags" column in the peer tab(sledgehammer999)
|
||||
- FEATURE: Load magnet metadata in the background while the "Add New Torrent" Dialog is showing (Gelmir)
|
||||
- FEATURE: Allow to enter only an info-hash for download(sledgehammer999)
|
||||
- FEATURE: Bring the "Add New Torrent" Dialog to the front(glassez)
|
||||
- BUGFIX: Add confirmation dialog for "Force recheck" action (closes #131)
|
||||
- BUGFIX: Greatly improve RSS manager performance (closes #34)
|
||||
- BUGFIX: Ensure that all columns in the tranferlist have a size > 0.
|
||||
- BUGFIX: Don't mark RSS item as read when it failed to download (Gelmir)
|
||||
- BUGFIX: Fix ETA calculation when some files are downloaded and marked afterwards as 'do not download'(sledgehammer999)
|
||||
- BUGFIX: Make the UI show that PEX/DHT/LSD are actually disabled on private torrents(sledgehammer999)
|
||||
- BUGFIX: Scheduler should be much more robust and correct now(sledgehammer999)
|
||||
- BUGFIX: Now qBt won't forget torrent settings after an unclean shutdown(sledgehammer999)
|
||||
- BUGFIX: Text boxes in edit dialogs will fit to text width(Gelmir)
|
||||
- BUGFIX: Enable edit/rename via F2 or double click in various places(Gelmir)
|
||||
- BUGFIX: Allow to edit trackers and copy their urls(Gelmir and Driim)
|
||||
- BUGFIX: Add Uploaded column to main view(Gelmir)
|
||||
- BUGFIX: Calculate ETA for seeding torrents(Gelmir)
|
||||
- BUGFIX: Add option to ignore global share ratio limits for created torrents(Gelmir)
|
||||
- OTHER: Many RSS bugfixes and improvements all over the place(Gelmir)
|
||||
- OTHER: Generate translations at configure time to reduce tarball size
|
||||
- OTHER: Make peer tab sortable by ip too (Gelmir)
|
||||
- OTHER: Translations moved to Transifex(https://www.transifex.com/projects/p/qbittorrent/)
|
||||
- OTHER: New Translation - Vietnamese (Anh Phan)
|
||||
- PERFORMANCE: Impove drawing speed of tranferlist when there are many torrents(>100)
|
||||
- PERFORMANCE: Impove drawing speed of peers list when there are many peers
|
||||
|
||||
* 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
|
||||
- FEATURE: Added search field for torrent content
|
||||
- FEATURE: Added auto-shutdown confirmation dialog
|
||||
- FEATURE: Added option to skip torrent deletion confirmation (Ville Kiiskinen)
|
||||
- FEATURE: IP address reported to trackers is now customizable
|
||||
- FEATURE: Inhibit system sleep when torrents are active (Vladimir Golovnev)
|
||||
- FEATURE: Added option to bypass Web UI authentication for localhost
|
||||
- FEATURE: Added option to disable program exit confirmation
|
||||
- FEATURE: Added per-torrent ratio limiting (Christian Kandeler)
|
||||
- FEATURE: Torrent content list is now sortable
|
||||
- BUGFIX: Fix compilation with namespaced Qt (Christian Kandeler)
|
||||
- BUGFIX: Added length restriction on UI lock password
|
||||
- COSMETIC: Added monochrome tray icon
|
||||
- COSMETIC: Improved status bar's style
|
||||
- OTHER: Make QtDBus dependency optional (X11)
|
||||
|
||||
* Sun Jan 9 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.0
|
||||
- FEATURE: Use system icons (Linux, Qt >= 4.6)
|
||||
- FEATURE: Improved ETA calculation
|
||||
- FEATURE: Simplify program preferences
|
||||
- FEATURE: Software update check can now be disabled (Mac OS X / Windows)
|
||||
- FEATURE: Display pieces size in torrent properties
|
||||
- FEATURE: Added "Time Active/Seeded" column to transfer list
|
||||
- FEATURE: Give feedback regarding the IP filter parsing
|
||||
- FEATURE: Added a button to reload the IP filter
|
||||
- FEATURE: Search engine results can now be opened in a Web browser
|
||||
- FEATURE: Added a search engine plugin to extratorrent.com
|
||||
- FEATURE: Added a search engine plugin for kickasstorrents.com
|
||||
- FEATURE: Added auto-suspend upon downloads completion feature
|
||||
- BUGFIX: Hide unwanted files that have to be partly downloaded
|
||||
- BUGFIX: Do not allocate space for unwanted files (preallocation mode)
|
||||
- I18N: Added Galician translation
|
||||
- COSMETIC: Same deletion confirmation dialog in the GUI and Web UI
|
||||
- COSMETIC: Simplified the top toolbar
|
||||
- COSMETIC: Display execution log as a tab instead of a modal window
|
||||
|
||||
* Sun Dec 5 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.5.0
|
||||
- FEATURE: qBittorrent can now act as a tracker
|
||||
- FEATURE: New and improved RSS feed automated downloader
|
||||
- FEATURE: Added feature to shutdown qbittorrent on torrents completion
|
||||
- FEATURE: Added a torrent import assistant to seed or keep downloading outside torrents
|
||||
- FEATURE: qBittorrent can update itself from Sourceforge (Windows/Mac OS X only)
|
||||
- FEATURE: Added a transfer list column to display the current tracker
|
||||
- FEATURE: Remember the last trackers used in the torrent creation tool
|
||||
- FEATURE: The optimal piece size is now automatically computed in the torrent creation tool
|
||||
- FEATURE: Bring up the connection settings when clicking on the connection status icon
|
||||
- FEATURE: Major code refactoring and optimization
|
||||
- FEATURE: Added "Amount downloaded/left" columns to transfer list
|
||||
- FEATURE: Simplified proxy settings
|
||||
- FEATURE: Optimized and improved the peer country resolution code
|
||||
- FEATURE: Download first/last pieces first when sequential download is
|
||||
enabled (Thanks Ahmad)
|
||||
- FEATURE: Download first/last pieces first now applies to all media files
|
||||
in the torrent (Thanks Ahmad)
|
||||
- BUGFIX: Fix SOCKS5 proxy authentication in search engine(closes #680072)
|
||||
- BUGFIX: Fix two advanced settings (ignore limits on LAN and protocol
|
||||
overhead inclusion in rate limiter)
|
||||
- BUGFIX: Fix strict super seeding (was not working)
|
||||
- BUGFIX: Improve magnet save path handling (closes #683395)
|
||||
- BUGFIX: Disable overwrite confirmation in torrent addition dialog (closes # 685269)
|
||||
- COSMETIC: Replaced message box by on-screen notification for download errors
|
||||
- COSMETIC: Improved the torrent creation tool appearance
|
||||
- COSMETIC: Use country flags by Mark James (Thanks to Dmytro Pukha)
|
||||
- COSMETIC: Use bigger alternative speed icon
|
||||
- OTHERS: Dropped support for Qt <= 4.4
|
||||
|
||||
* Tue Aug 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.0
|
||||
- FEATURE: Added actions to "Move to top/bottom" of priority queue
|
||||
- FEATURE: Auto-Shutdown on downloads completion
|
||||
- FEATURE: Email notification on download completion
|
||||
- FEATURE: Added button to password-lock the UI
|
||||
- FEATURE: Added label-level Pause/Resume/Delete actions
|
||||
- FEATURE: Torrents can now be filtered by name
|
||||
- FEATURE: Run external program on torrent completion
|
||||
- FEATURE: Detect executable updates in order to advise the user to restart
|
||||
|
||||
* Tue Jul 27 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.3.0
|
||||
- FEATURE: Simplified torrent root folder renaming/truncating (< v2.3.0 is no longer forward compatible)
|
||||
- FEATURE: Remember previous save paths in torrent addition dialog
|
||||
- FEATURE: Max number of half-open connections can now be edited
|
||||
- FEATURE: Added support for strict super seeding
|
||||
- FEATURE: The user can force listening on a particular network interface
|
||||
- FEATURE: Added cookie support for RSS feeds
|
||||
- FEATURE: User can force tracker reannounce
|
||||
- FEATURE: Added "No action" setting for double-click action
|
||||
- FEATURE: Several torrents can be moved at once
|
||||
- FEATURE: Added error state for torrents (error is displayed in a tooltip)
|
||||
- FEATURE: Added filter for paused/error torrents
|
||||
- FEATURE: Add Check/Uncheck all feature in Web UI
|
||||
- FEATURE: Search engine can now be disabled
|
||||
- FEATURE: Torrents can be automatically paused once they reach a given ratio
|
||||
- FEATURE: Several files can now be disabled at once
|
||||
- FEATURE: Added "Select All/None" buttons to files list
|
||||
- FEATURE: Added support for BitComet links (bc://bt/...)
|
||||
- BUGFIX: Hide seeding torrents files priorities in Web UI
|
||||
- BUGFIX: The user can disable permanently recursive torrent download
|
||||
- BUGFIX: Peer Exchange status is now correctly reported
|
||||
- BUGFIX: Use an INI file instead of the registry on Windows (More reliable)
|
||||
- BUGFIX: Removed client spoofing feature to avoid tracker blacklisting
|
||||
- COSMETIC: Display peers country name in tooltip
|
||||
- COSMETIC: Display number of torrents in transfers tab label
|
||||
- COSMETIC: Simplified program preferences
|
||||
- COSMETIC: Fix naming of actions opening new dialogs (use Name...)
|
||||
|
||||
* Sun Mar 14 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.2.0
|
||||
- FEATURE: User can set alternative speed limits for fast toggling
|
||||
- FEATURE: Bandwidth scheduler (automatically use alternative speed limits for a given period)
|
||||
- FEATURE: Added "Added/Completed On" columns to transfer list
|
||||
- FEATURE: Added "Upload/Download limit" columns to transfer list
|
||||
- FEATURE: Torrent files can be exported to a given directory
|
||||
- FEATURE: Outgoing ports range can be customized (for QoS)
|
||||
- FEATURE: User can choose to apply transfer limits on LAN too
|
||||
- FEATURE: User can choose to include the protocol overhead in transfer limits
|
||||
- FEATURE: Torrents can be automatically rechecked on completion
|
||||
- FEATURE: If 2 torrents have the same hash, add new trackers/URL seeds to the existing torrent
|
||||
- FEATURE: Trackers can be added from Web UI
|
||||
- FEATURE: Global transfer information are displayed in the new Web UI status bar
|
||||
- FEATURE: Allow to change the priority of several files at once
|
||||
- FEATURE: Support for multiple scan folders (Patch by Christian Kandeler)
|
||||
- BUGFIX: Only one log window can be opened at a time
|
||||
- BUGFIX: Optimized RSS module memory usage
|
||||
- BUGFIX: Consider HTTP downloads >1MB as invalid .torrent files and abort
|
||||
- BUGFIX: Fix Web UI authentication with some browsers
|
||||
- BUGFIX: Set Web UI ban period to 1 hour
|
||||
- COSMETIC: Improved style management
|
||||
|
||||
* Mon Jan 18 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.1.0
|
||||
- FEATURE: Graphical User Interface can be disabled at compilation time (headless running)
|
||||
- FEATURE: Torrents can be labeled/categorized
|
||||
- FEATURE: Labeled torrent can be downloaded corresponding subfolders
|
||||
- FEATURE: Disk cache size can be set from preferences
|
||||
- FEATURE: Peer Exchange (PeX) can be disabled from preferences
|
||||
- FEATURE: Append !.qB extension to incomplete files option (libtorrent >= v0.15 only)
|
||||
- FEATURE: Torrent files/folders can be renamed (torrent addition dialog or files properties)
|
||||
- FEATURE: uTorrent compatible tracker list support (use torrentz.com url as a default)
|
||||
- FEATURE: Better proxy support and preferences remodeling
|
||||
- FEATURE: qBittorrent can identify itself as uTorrent, Vuze or KTorrent (Any stable version)
|
||||
- FEATURE: Torrents can be renamed in transfer list
|
||||
- FEATURE: Display torrent addition dialog for magnet links too
|
||||
- FEATURE: Files contained in a torrent are opened on double click (files panel)
|
||||
- FEATURE: Added support for magnet links in search engine
|
||||
- FEATURE: Added vertor.com and torrentdownloads.net search plugins
|
||||
- FEATURE: Search engine can now use a SOCKS5 proxy
|
||||
- FEATURE: HTTP proxy support for peer communication
|
||||
- BUGFIX: Search engine loads new proxy settings without program restart
|
||||
- BUGFIX: Use XDG folders (.cache, .local) instead of .qbittorrent
|
||||
- BUGFIX: Added legal notice on startup that the user must accept
|
||||
- BUGFIX: Protect Web UI authentication against brute forcing
|
||||
- BUGFIX: Use HTTP digest mode for Web UI authentication (instead of Basic)
|
||||
- BUGFIX: Properly display torrents with one file in subfolder(s)
|
||||
- BUGFIX: Display Web UI favicon
|
||||
- BUGFIX: File priority can be set for finished torrents that have filtered files
|
||||
- COSMETIC: Use checkboxes to filter torrent content instead of comboboxes
|
||||
- COSMETIC: Use alternating row colors in transfer list (set in program preferences)
|
||||
- COSMETIC: Added a spin box to speed limiting dialog for manual input
|
||||
|
||||
* Mon Jan 11 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.0.7
|
||||
- BUGFIX: Fix 'Add in pause' setting in torrent addition dialog
|
||||
- BUGFIX: Update RSS feed as soon as feed downloader is enabled
|
||||
- BUGFIX: RSS Feed downloader ignores articles above maximum number of articles
|
||||
- BUGFIX: Fix possible bug when deleting a RSS folder
|
||||
- BUGFIX: Remove persistant data when a RSS feed is deleted
|
||||
- BUGFIX: RSS filters are now alphabetically sorted
|
||||
- BUGFIX: Fix crash when renaming currently displayed RSS filter
|
||||
- BUGFIX: Remove overwriting confirmation when exporting RSS filters since Qt takes care of it
|
||||
|
||||
* Tue Jan 5 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.0.6
|
||||
- BUGFIX: Fix detection of invalid torrent files
|
||||
- BUGFIX: Stop catching signals once one has been caught to avoid possible infinite loop
|
||||
- BUGFIX: Force data recheck whenever a torrent is moved
|
||||
- BUGFIX: Detect existing torrent data even if incomplete torrents are saved to a different folder
|
||||
- COSMETIC: Improve torrent deletion confirmation dialog so that the text that not get truncated
|
||||
|
||||
* Thu Dec 31 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.5
|
||||
- BUGFIX: Fix crash with downloaded/availability bars when the torrent has too many pieces
|
||||
|
||||
* Wed Dec 30 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.4
|
||||
- BUGFIX: Fix PeerGuardian .p2b binary filter support
|
||||
- BUGFIX: Fix possible crash when closing a search engine tab
|
||||
- BUGFIX: Make sure service port does not change
|
||||
- BUGFIX: Fix possible DHT port saving issue
|
||||
- BUGFIX: Fix communication between qBittorrent and Web UI (Qt 4.6)
|
||||
- BUGFIX: Use Wildcard matching instead of full regex in RSS feed downloader
|
||||
- BUGFIX: Fix code for listening on a random port whenever it failed to listen on the one defined
|
||||
- BUGFIX: Use global maximum transfer rates as maximum values in per-torrent speed limiting dialogs
|
||||
- BUGFIX: Fix global download rate limiting from Web UI
|
||||
- COSMETIC: Display a disconnected icon in status bar whenever qBittorrent failed to listen on the port defined
|
||||
|
||||
* Wed Dec 23 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.3
|
||||
- BUGFIX: Minor cosmetic fix to program preferences
|
||||
- BUGFIX: Fix "Temp path" button in program preferences
|
||||
- BUGFIX: Handle paths with [~, ., ..] properly
|
||||
- BUGFIX: Trackers are now displayed for torrents without metadata
|
||||
- BUGFIX: Fix issue with speed limiting (unlimited was not handled properly)
|
||||
- BUGFIX: Use the save path set in program preferences as a default in torrent addition dialog
|
||||
|
||||
* Fri Dec 18 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.2
|
||||
- BUGFIX: Fix .qbittorrent folder not being created (critical bug introduced in v2.0.1 that makes qBittorrent unusuable for new users)
|
||||
- BUGFIX: Fix RSS Feed downloader for some feeds
|
||||
|
||||
61
INSTALL
@@ -1,32 +1,55 @@
|
||||
qBittorrent - A BitTorrent client in C++ / Qt4
|
||||
------------------------------------------
|
||||
|
||||
./configure
|
||||
make && make install
|
||||
qbittorrent
|
||||
1) Compile and install qBittorrent with Qt4 Graphical Interface
|
||||
|
||||
will install and execute qBittorrent hopefully without any problems.
|
||||
$ ./configure
|
||||
$ make && make install
|
||||
$ qbittorrent
|
||||
|
||||
Dependencies:
|
||||
- Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
|
||||
will install and execute qBittorrent hopefully without any problems.
|
||||
|
||||
- libtorrent-rasterbar by Arvid Norberg (>= 0.14.0 REQUIRED, >= v0.15.0 ADVISED)
|
||||
-> http://www.qbittorrent.org/download.php (advised)
|
||||
-> http://www.libtorrent.net
|
||||
Be careful: another library (the one used by rTorrent) uses a similar name.
|
||||
Dependencies:
|
||||
- Qt >= 4.6.0 (libqtgui, libqtcore, libqtnetwork, libqtxml, libqtdbus/optional)
|
||||
|
||||
- libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization
|
||||
- pkg-config executable
|
||||
|
||||
- python >= 2.3 (needed by search engine)
|
||||
* Run time only dependency
|
||||
- libtorrent-rasterbar by Arvid Norberg (>= 0.15.0)
|
||||
-> http://www.libtorrent.net
|
||||
Be careful: another library (the one used by rTorrent) uses a similar name.
|
||||
|
||||
- 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
|
||||
- libboost 1.34.x (libboost-filesystem°) + libasio
|
||||
or
|
||||
- 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)
|
||||
* Run time only dependency
|
||||
|
||||
- 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.
|
||||
* Run time only dependency
|
||||
|
||||
2) Compile and install qBittorrent without Qt4 Graphical interface
|
||||
|
||||
$ ./configure --disable-gui
|
||||
$ make && make install
|
||||
$ qbittorrent
|
||||
|
||||
will install and execute qBittorrent hopefully without any problems.
|
||||
|
||||
Dependencies:
|
||||
- Qt >= 4.4.0 (libqt-devel, libqtcore, libqtnetwork)
|
||||
|
||||
- pkg-config executable
|
||||
|
||||
- libtorrent-rasterbar by Arvid Norberg (>= v0.15.0)
|
||||
-> http://www.libtorrent.net
|
||||
Be careful: another library (the one used by rTorrent) uses a similar name.
|
||||
|
||||
- libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization
|
||||
|
||||
- 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.
|
||||
* Run time only dependency
|
||||
|
||||
DOCUMENTATION:
|
||||
Please note that there is a documentation with a "compiling howto" at http://wiki.qbittorrent.org.
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
qBittorrent - A BitTorrent client in Qt4
|
||||
qBittorrent - A BitTorrent client in Qt
|
||||
------------------------------------------
|
||||
|
||||
Description:
|
||||
[](https://travis-ci.org/qbittorrent/qBittorrent)
|
||||
********************************
|
||||
qBittorrent is a bittorrent client programmed in C++ / Qt4 that uses
|
||||
libtorrent (sometimes called rblibtorrent) by Arvid Norberg.
|
||||
###Description:
|
||||
qBittorrent is a bittorrent client programmed in C++ / Qt that uses
|
||||
libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg.
|
||||
|
||||
It aims to be a good alternative to all other bittorrent clients
|
||||
out there. qBittorrent is fast, stable and provides unicode
|
||||
@@ -13,13 +14,14 @@ support as well as many features.
|
||||
This product includes GeoLite data created by MaxMind, available from
|
||||
http://maxmind.com/
|
||||
|
||||
Installation:
|
||||
********************************
|
||||
### Installation:
|
||||
For installation, follow the instructions from INSTALL file, but simple:
|
||||
|
||||
```
|
||||
./configure
|
||||
make && make install
|
||||
qbittorrent
|
||||
```
|
||||
|
||||
will install and execute qBittorrent hopefully without any problem.
|
||||
|
||||
@@ -32,9 +34,9 @@ http://wiki.qbittorrent.org
|
||||
Please report any bug (or feature request) to:
|
||||
http://bugs.qbittorrent.org
|
||||
|
||||
You can also meet me (chris-qBT) on IRC:
|
||||
#qbittorrent on irc.freenode.net
|
||||
You can also meet me (sledgehammer_999) on IRC:
|
||||
`#qbittorrent on irc.freenode.net`
|
||||
|
||||
------------------------------------------
|
||||
Christophe Dumez <chris@qbittorrent.org>
|
||||
sledgehammer999 <sledgehammer999@qbittorrent.org>
|
||||
|
||||
74
README.os2
Normal file
@@ -0,0 +1,74 @@
|
||||
qBittorrent - A BitTorrent client in Qt4
|
||||
------------------------------------------
|
||||
|
||||
This is the eComStation (OS/2) qBittorrent part of the readme. See also README for more general information.
|
||||
|
||||
|
||||
Building qBittorrent
|
||||
********************
|
||||
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
- gcc based build env (recommended gcc v4.4.2 or greater)
|
||||
|
||||
- Qt4 for eCS (OS/2) dev package (see http://svn.netlabs.org/qt4 for more information)
|
||||
|
||||
- libtorrent-rasterbar for eCS (OS/2) port (see http://svn.netlabs.org/ports for more information)
|
||||
|
||||
- boost for eCS (OS/2) port (see http://svn.netlabs.org/ports for more information)
|
||||
|
||||
|
||||
How to build
|
||||
============
|
||||
|
||||
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:
|
||||
|
||||
##### conf.pri content beginn #####
|
||||
BINDIR = ./bin
|
||||
INCDIR = ./include
|
||||
LIBDIR = ./lib
|
||||
DATADIR = ./share
|
||||
|
||||
CONFIG += staticlib
|
||||
INCLUDEPATH += x:/trees/libtorrent/trunk/include
|
||||
LIBS += -Lx:/trees/libtorrent/trunk/src/.libs \
|
||||
-Lx:/trees/boost/trunk/stage/lib \
|
||||
-Lx:/trees/openssl \
|
||||
-Lx:/extras/lib
|
||||
##### conf.pri content end #####
|
||||
|
||||
Of course all the above path references have to be adjusted to your build env.
|
||||
|
||||
Now you can either do a normal build or a shadow build. A shadow build has the
|
||||
advantage that no created files are in the same dir as the sources are.
|
||||
|
||||
For a normal build do the following:
|
||||
|
||||
Simply type:
|
||||
$ qmake
|
||||
|
||||
Followed by:
|
||||
$ make
|
||||
|
||||
For a shadow build do the following:
|
||||
given your sources are in x:\trees\qbittorrent\trunk create a
|
||||
x:\trees\qbittorrent\build directory
|
||||
|
||||
Now switch to the created directory and type:
|
||||
$ qmake ..\trunk
|
||||
|
||||
Followed by:
|
||||
$ make
|
||||
|
||||
If all works fine you should get a working qbittorrent executable.
|
||||
|
||||
If you have any question regarding the eCS (OS/2) port of qBittorrent you can meet me (_diver) on IRC:
|
||||
#netlabs on irc.freenode.net
|
||||
|
||||
------------------------------------------
|
||||
Silvan Scherrer <silvan.scherrer@aroa.ch>
|
||||
|
||||
|
||||
372
configure
vendored
@@ -18,12 +18,24 @@ Main options:
|
||||
--help This help text.
|
||||
|
||||
Dependency options:
|
||||
--with-libboost-inc=[path] Path to libboost include files
|
||||
--disable-libnotify Disable use of libnotify
|
||||
--disable-geoip-database Disable use of geoip-database
|
||||
--with-geoip-database-embedded Geoip Database will be embedded in
|
||||
qBittorrent executable (please follow
|
||||
instructions in src/geoip/README)
|
||||
--enable-debug Enable debug mode
|
||||
--disable-gui Disable qBittorrent
|
||||
Graphical user interface for
|
||||
headless running
|
||||
--disable-qt-dbus Disable use of qt-dbus
|
||||
--with-libboost-inc=[path] Path to libboost include
|
||||
files
|
||||
--with-libboost-lib=[path] Path to libboost library
|
||||
files
|
||||
--disable-geoip-database Disable use of geoip-database
|
||||
--with-geoip-database-embedded Geoip Database will be
|
||||
embedded in qBittorrent
|
||||
executable (please follow
|
||||
instructions in
|
||||
src/geoip/README)
|
||||
--with-qtsingleapplication=[system|shipped] Use the shipped
|
||||
qtsingleapplication library
|
||||
or the system one
|
||||
|
||||
EOT
|
||||
}
|
||||
@@ -140,13 +152,28 @@ while [ $# -gt 0 ]; do
|
||||
shift
|
||||
;;
|
||||
|
||||
--enable-debug)
|
||||
QC_ENABLE_DEBUG="Y"
|
||||
shift
|
||||
;;
|
||||
|
||||
--disable-gui)
|
||||
QC_DISABLE_GUI="Y"
|
||||
shift
|
||||
;;
|
||||
|
||||
--disable-qt-dbus)
|
||||
QC_DISABLE_qt_dbus="Y"
|
||||
shift
|
||||
;;
|
||||
|
||||
--with-libboost-inc=*)
|
||||
QC_WITH_LIBBOOST_INC=$optarg
|
||||
shift
|
||||
;;
|
||||
|
||||
--disable-libnotify)
|
||||
QC_DISABLE_libnotify="Y"
|
||||
--with-libboost-lib=*)
|
||||
QC_WITH_LIBBOOST_LIB=$optarg
|
||||
shift
|
||||
;;
|
||||
|
||||
@@ -160,6 +187,11 @@ while [ $# -gt 0 ]; do
|
||||
shift
|
||||
;;
|
||||
|
||||
--with-qtsingleapplication=*)
|
||||
QC_WITH_QTSINGLEAPPLICATION=$optarg
|
||||
shift
|
||||
;;
|
||||
|
||||
--verbose)
|
||||
QC_VERBOSE="Y"
|
||||
shift
|
||||
@@ -181,10 +213,14 @@ echo PREFIX=$PREFIX
|
||||
echo BINDIR=$BINDIR
|
||||
echo DATADIR=$DATADIR
|
||||
echo EX_QTDIR=$EX_QTDIR
|
||||
echo QC_ENABLE_DEBUG=$QC_ENABLE_DEBUG
|
||||
echo QC_DISABLE_GUI=$QC_DISABLE_GUI
|
||||
echo QC_DISABLE_qt_dbus=$QC_DISABLE_qt_dbus
|
||||
echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC
|
||||
echo QC_DISABLE_libnotify=$QC_DISABLE_libnotify
|
||||
echo QC_WITH_LIBBOOST_LIB=$QC_WITH_LIBBOOST_LIB
|
||||
echo QC_DISABLE_geoip_database=$QC_DISABLE_geoip_database
|
||||
echo QC_WITH_GEOIP_DATABASE_EMBEDDED=$QC_WITH_GEOIP_DATABASE_EMBEDDED
|
||||
echo QC_WITH_QTSINGLEAPPLICATION=$QC_WITH_QTSINGLEAPPLICATION
|
||||
echo
|
||||
fi
|
||||
|
||||
@@ -289,22 +325,87 @@ cat >$1/modules.cpp <<EOT
|
||||
#line 1 "qt4.qcm"
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: Qt >= 4.4
|
||||
name: Qt >= 4.6
|
||||
arg: enable-debug, Enable debug mode
|
||||
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
class qc_qt4 : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_qt4(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "Qt >= 4.4"; }
|
||||
QString shortname() const { return "Qt 4.4"; }
|
||||
QString name() const { return "Qt >= 4.6"; }
|
||||
QString shortname() const { return "Qt 4.6"; }
|
||||
bool exec()
|
||||
{
|
||||
if(QT_VERSION >= 0x040500) {
|
||||
conf->addDefine("QT_4_5");
|
||||
// NOX mode
|
||||
if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
||||
conf->addExtra("CONFIG += nox");
|
||||
}
|
||||
// Debug mode
|
||||
if(!conf->getenv("QC_ENABLE_DEBUG").isEmpty()) {
|
||||
conf->addExtra("CONFIG -= release");
|
||||
conf->addExtra("CONFIG += debug");
|
||||
} else {
|
||||
conf->addExtra("CONFIG -= debug");
|
||||
conf->addExtra("CONFIG += release");
|
||||
}
|
||||
return(QT_VERSION >= 0x040400);
|
||||
|
||||
#ifdef Q_OS_FREEBSD
|
||||
conf->addLib("-lexecinfo");
|
||||
conf->addExtra("MANPREFIX = \$\$PREFIX");
|
||||
#else
|
||||
conf->addExtra("MANPREFIX = \$\$PREFIX/share");
|
||||
#endif
|
||||
return(QT_VERSION >= 0x040600);
|
||||
}
|
||||
};
|
||||
#line 1 "qt-dbus.qcm"
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: qt-dbus
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
// see Conf::findPkgConfig
|
||||
class qc_qt_dbus : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_qt_dbus(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "QtDBus >= 4.5"; }
|
||||
QString shortname() const { return "qt-dbus"; }
|
||||
QString checkString() const {
|
||||
if(!conf->getenv("QC_DISABLE_qt_dbus").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty())
|
||||
return "";
|
||||
return ConfObj::checkString();
|
||||
}
|
||||
bool exec(){
|
||||
if(!conf->getenv("QC_DISABLE_qt_dbus").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty())
|
||||
return false;
|
||||
QStringList incs;
|
||||
QString req_ver = "4.5.0";
|
||||
QString version, libs, other;
|
||||
VersionMode mode = VersionMin;
|
||||
if(conf->findPkgConfig("QtDBus", mode, req_ver, &version, &incs, &libs, &other)) {
|
||||
conf->addExtra("CONFIG += dbus");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
#line 1 "pkg-config.qcm"
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: pkg-config
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
#include <QProcess>
|
||||
class qc_pkg_config : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_pkg_config(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "pkg-config executable"; }
|
||||
QString shortname() const { return "pkg-config"; }
|
||||
bool exec(){
|
||||
return !conf->findProgram("pkg-config").isEmpty();
|
||||
}
|
||||
};
|
||||
#line 1 "libtorrent-rasterbar.qcm"
|
||||
@@ -318,24 +419,17 @@ class qc_libtorrent_rasterbar : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.15.0 advised)"; }
|
||||
QString name() const { return "libtorrent-rasterbar >= 0.15.0"; }
|
||||
QString shortname() const { return "libtorrent-rasterbar"; }
|
||||
bool exec(){
|
||||
QStringList incs;
|
||||
QString req_ver = "0.14.0";
|
||||
QString adv_ver = "0.15.0";
|
||||
QString req_ver = "0.15.0";
|
||||
QString version, libs, other;
|
||||
VersionMode mode = VersionMin;
|
||||
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
|
||||
return false;
|
||||
for(int n = 0; n < incs.count(); ++n)
|
||||
conf->addIncludePath(incs[n]);
|
||||
if(!libs.isEmpty())
|
||||
conf->addLib(libs);
|
||||
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other))
|
||||
printf("\nWarning: libtorrent-rasterbar v%s was detected.\nAlthough it will compile and run, you will be missing some features. Please consider updating to v%s.\n", version.toLocal8Bit().data(), adv_ver.toUtf8().data());
|
||||
else
|
||||
conf->addDefine("LIBTORRENT_0_15");
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -344,99 +438,98 @@ public:
|
||||
-----BEGIN QCMOD-----
|
||||
name: libboost
|
||||
arg: with-libboost-inc=[path], Path to libboost include files
|
||||
arg: with-libboost-lib=[path], Path to libboost library files
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
#include <boost/version.hpp>
|
||||
#include <libtorrent/version.hpp>
|
||||
|
||||
class qc_libboost : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_libboost(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "libboost"; }
|
||||
QString shortname() const { return "libboost"; }
|
||||
bool exec(){
|
||||
QString s;
|
||||
s = conf->getenv("QC_WITH_LIBBOOST_INC");
|
||||
if(!s.isEmpty()) {
|
||||
if(!conf->checkHeader(s, "boost/format.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/thread.hpp")) {
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
QStringList sl;
|
||||
sl << "/usr/include";
|
||||
sl << "/usr/local/include";
|
||||
bool found = false;
|
||||
foreach(s, sl){
|
||||
if(conf->checkHeader(s, "boost/format.hpp")){
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/thread.hpp")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
conf->addIncludePath(s);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
#line 1 "libnotify.qcm"
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: libnotify
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
// see Conf::findPkgConfig
|
||||
class qc_libnotify : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_libnotify(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "libnotify >= 0.4.2 (optional)"; }
|
||||
QString shortname() const { return "libnotify"; }
|
||||
bool exec(){
|
||||
QStringList incs;
|
||||
QString req_ver = "0.4.2";
|
||||
QString version, libs, other;
|
||||
VersionMode mode = VersionMin;
|
||||
if(conf->findPkgConfig("libnotify", mode, req_ver, &version, &incs, &libs, &other)) {
|
||||
conf->addDefine("WITH_LIBNOTIFY");
|
||||
for(int n = 0; n < incs.count(); ++n)
|
||||
conf->addIncludePath(incs[n]);
|
||||
if(!libs.isEmpty())
|
||||
conf->addLib(libs);
|
||||
QStringList incs2;
|
||||
QString req_ver2 = "2.0";
|
||||
QString version2, libs2, other2;
|
||||
if(conf->findPkgConfig("glib-2.0", mode, req_ver2, &version2, &incs2, &libs2, &other2)) {
|
||||
for(int n = 0; n < incs2.count(); ++n)
|
||||
conf->addIncludePath(incs2[n]);
|
||||
if(!libs2.isEmpty())
|
||||
conf->addLib(libs2);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
qc_libboost(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "libboost"; }
|
||||
QString shortname() const { return "libboost"; }
|
||||
|
||||
QString findBoostLib(QString path, QString lib) const {
|
||||
QString name;
|
||||
QDir libDir(path);
|
||||
QStringList filters;
|
||||
filters << "libboost_"+lib+"*-mt*.so";
|
||||
QStringList result = libDir.entryList(filters, QDir::Files);
|
||||
if(!result.empty()) {
|
||||
name = result.first().mid(3);
|
||||
// Remove .so
|
||||
name.chop(3);
|
||||
} else {
|
||||
// Fall back to non -mt boost lib
|
||||
filters.clear();
|
||||
filters << "libboost_"+lib+"*.so";
|
||||
result = libDir.entryList(filters, QDir::Files);
|
||||
if(!result.empty()) {
|
||||
name = result.first().mid(3);
|
||||
// Remove .so
|
||||
name.chop(3);
|
||||
}
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
bool exec(){
|
||||
QStringList sl;
|
||||
QString s = conf->getenv("QC_WITH_LIBBOOST_INC");
|
||||
if (!s.isEmpty())
|
||||
sl << s;
|
||||
sl << "/usr/include";
|
||||
sl << "/usr/local/include";
|
||||
bool found = false;
|
||||
foreach (s, sl) {
|
||||
if (conf->checkHeader(s, "boost/format.hpp")
|
||||
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
||||
&& conf->checkHeader(s, "boost/filesystem/path.hpp")
|
||||
#endif
|
||||
) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
return false;
|
||||
|
||||
conf->addIncludePath(s);
|
||||
|
||||
// Find library
|
||||
s = conf->getenv("QC_WITH_LIBBOOST_LIB");
|
||||
QStringList required_libs;
|
||||
#if BOOST_VERSION >= 103500
|
||||
required_libs << "system";
|
||||
#endif
|
||||
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
||||
required_libs << "filesystem" ;
|
||||
#endif
|
||||
//required_libs << "thread";
|
||||
QStringList libDirs;
|
||||
if (!s.isEmpty())
|
||||
libDirs << s;
|
||||
libDirs << "/usr/lib/" << "/usr/lib/i386-linux-gnu/" << "/usr/lib64/" << "/usr/lib/x86_64-linux-gnu/" << "/usr/local/lib/" << "/usr/lib/local/i386-linux-gnu/" << "/usr/local/lib64/" << "/usr/local/lib/x86_64-linux-gnu/";
|
||||
|
||||
foreach(const QString& lib, required_libs) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
#line 1 "geoip-database.qcm"
|
||||
/*
|
||||
@@ -452,7 +545,15 @@ public:
|
||||
qc_geoip_database(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "GeoIP Database (optional)"; }
|
||||
QString shortname() const { return "GeoIP Database"; }
|
||||
QString checkString() const {
|
||||
if(!conf->getenv("QC_DISABLE_geoip_database").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty())
|
||||
return "";
|
||||
return ConfObj::checkString();
|
||||
}
|
||||
bool exec() {
|
||||
if(!conf->getenv("QC_DISABLE_geoip_database").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
#ifdef Q_WS_X11
|
||||
if(!conf->getenv("QC_WITH_GEOIP_DATABASE_EMBEDDED").isEmpty()) {
|
||||
#endif
|
||||
@@ -468,24 +569,57 @@ public:
|
||||
#endif
|
||||
}
|
||||
};
|
||||
#line 1 "qtsingleapplication.qcm"
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: qtsingleapplication
|
||||
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
class qc_qtsingleapplication : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_qtsingleapplication(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "qtsingleapplication library"; }
|
||||
QString shortname() const { return "qtsingleapplication"; }
|
||||
|
||||
bool exec(){
|
||||
QString s;
|
||||
s = conf->getenv("QC_WITH_QTSINGLEAPPLICATION");
|
||||
if(s.compare("system", Qt::CaseInsensitive) == 0) {
|
||||
// System
|
||||
conf->addExtra("CONFIG += usesystemqtsingleapplication");
|
||||
printf(" [system] ");
|
||||
} else {
|
||||
printf(" [shipped] ");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
EOT
|
||||
cat >$1/modules_new.cpp <<EOT
|
||||
o = new qc_qt4(conf);
|
||||
o->required = true;
|
||||
o->disabled = false;
|
||||
o = new qc_qt_dbus(conf);
|
||||
o->required = false;
|
||||
o->disabled = false;
|
||||
o = new qc_pkg_config(conf);
|
||||
o->required = true;
|
||||
o->disabled = false;
|
||||
o = new qc_libtorrent_rasterbar(conf);
|
||||
o->required = true;
|
||||
o->disabled = false;
|
||||
o = new qc_libboost(conf);
|
||||
o->required = true;
|
||||
o->disabled = false;
|
||||
o = new qc_libnotify(conf);
|
||||
o->required = false;
|
||||
o->disabled = false;
|
||||
o = new qc_geoip_database(conf);
|
||||
o->required = false;
|
||||
o->disabled = false;
|
||||
o = new qc_qtsingleapplication(conf);
|
||||
o->required = true;
|
||||
o->disabled = false;
|
||||
|
||||
EOT
|
||||
cat >$1/conf4.h <<EOT
|
||||
@@ -1431,10 +1565,14 @@ export PREFIX
|
||||
export BINDIR
|
||||
export DATADIR
|
||||
export EX_QTDIR
|
||||
export QC_ENABLE_DEBUG
|
||||
export QC_DISABLE_GUI
|
||||
export QC_DISABLE_qt_dbus
|
||||
export QC_WITH_LIBBOOST_INC
|
||||
export QC_DISABLE_libnotify
|
||||
export QC_WITH_LIBBOOST_LIB
|
||||
export QC_DISABLE_geoip_database
|
||||
export QC_WITH_GEOIP_DATABASE_EMBEDDED
|
||||
export QC_WITH_QTSINGLEAPPLICATION
|
||||
export QC_VERBOSE
|
||||
rm -rf .qconftemp
|
||||
(
|
||||
|
||||
44
doc/qbittorrent-nox.1
Normal file
@@ -0,0 +1,44 @@
|
||||
.\" This manpage has been automatically generated by docbook2man
|
||||
.\" from a DocBook document. This tool can be found at:
|
||||
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>.
|
||||
.TH "QBITTORRENT\-NOX" "1" "January 16th 2010" "Command line Bittorrent client written in C++ / Qt4" ""
|
||||
|
||||
.SH "NAME"
|
||||
qBittorrent\-nox \- a command line Bittorrent client written in C++ / Qt4
|
||||
|
||||
.SH "SYNOPSIS"
|
||||
|
||||
\fBqbittorrent\-nox\fR [\-\-d|\-\-daemon] [\-\-webui-port=x] [TORRENT_FILE | URL]...
|
||||
|
||||
\fBqbittorrent\-nox\fR \-\-help
|
||||
|
||||
\fBqbittorrent\-nox\fR \-\-version
|
||||
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
\fBqBittorrent-nox\fR is an advanced command-line Bittorrent client written in C++ / Qt4,
|
||||
using the \fBlibtorrent-rasterbar\fR library by Arvid Norberg. qBittorrent\-nox aims
|
||||
to be a good alternative to other command line bittorrent clients and provides features similar to popular graphical clients.
|
||||
|
||||
qBittorrent\-nox is fast, stable, light and it supports unicode.
|
||||
It also comes with UPnP port forwarding / NAT-PMP, encryption (Vuze compatible),
|
||||
FAST extension (mainline) and PeX support (utorrent compatible).
|
||||
|
||||
qBittorrent\-nox is meant to be controlled via its feature-rich Web UI which is accessible as a default on http://localhost:8080. The Web UI access is secured and the default account user name is "admin" with "adminadmin" as a password.
|
||||
|
||||
.SH "OPTIONS"
|
||||
|
||||
\fB--help\fR Prints the command line options.
|
||||
|
||||
\fB--version\fR Prints qbittorrent program version number.
|
||||
|
||||
\fB--webui-port=x\fR Changes Web UI port to x (default: 8080).
|
||||
|
||||
.SH "BUGS"
|
||||
|
||||
If you find a bug, please report it at http://bugs.qbittorrent.org
|
||||
|
||||
.SH "AUTHOR"
|
||||
|
||||
Christophe Dumez <chris@qbittorrent.org>
|
||||
@@ -1,14 +1,14 @@
|
||||
.\" This manpage has been automatically generated by docbook2man
|
||||
.\" from a DocBook document. This tool can be found at:
|
||||
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>.
|
||||
.TH "QBITTORRENT" "1" "September 30th 2009" "Bittorrent client written in C++ / Qt4" ""
|
||||
.TH "QBITTORRENT" "1" "January 16th 2010" "Bittorrent client written in C++ / Qt4" ""
|
||||
|
||||
.SH "NAME"
|
||||
qBittorrent \- a Bittorrent client written in C++ / Qt4
|
||||
|
||||
.SH "SYNOPSIS"
|
||||
|
||||
\fBqbittorrent\fR [\-\-no-splash] [TORRENT_FILE | URL]...
|
||||
\fBqbittorrent\fR [\-\-no-splash] [\-\-webui-port=x] [TORRENT_FILE | URL]...
|
||||
|
||||
\fBqbittorrent\fR \-\-help
|
||||
|
||||
@@ -18,10 +18,9 @@ qBittorrent \- a Bittorrent client written in C++ / Qt4
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
\fBqBittorrent\fR is an advanced Bittorrent client written in C++ / Qt4,
|
||||
using the \fBrblibtorrent\fR library by Arvid Norberg. qBittorrent aims
|
||||
to be a good alternative to all other bittorrent clients out there. qBittorrent
|
||||
using the \fBlibtorrent-rasterbar\fR library by Arvid Norberg. qBittorrent is similar to uTorrent. qBittorrent
|
||||
is fast, stable, light, it supports unicode and it provides a good integrated search engine.
|
||||
It also comes with UPnP port forwarding / NAT-PMP, encryption (Azureus compatible),
|
||||
It also comes with UPnP port forwarding / NAT-PMP, encryption (Vuze compatible),
|
||||
FAST extension (mainline) and PeX support (utorrent compatible).
|
||||
|
||||
.SH "OPTIONS"
|
||||
@@ -32,6 +31,8 @@ FAST extension (mainline) and PeX support (utorrent compatible).
|
||||
|
||||
\fB--no-splash\fR Disables splash screen on startup.
|
||||
|
||||
\fB--webui-port=x\fR Changes Web UI port to x (default: 8080).
|
||||
|
||||
.SH "BUGS"
|
||||
|
||||
If you find a bug, please report it at http://bugs.qbittorrent.org
|
||||
|
||||
187
install.os2
Normal file
@@ -0,0 +1,187 @@
|
||||
QBittorrent installation
|
||||
|
||||
|
||||
|
||||
0. CONTENTS OF THIS FILE
|
||||
========================
|
||||
|
||||
1. INTRODUCTION
|
||||
|
||||
2. REQUIREMENTS
|
||||
|
||||
3. INSTALLATION
|
||||
|
||||
4. BUGREPORTS
|
||||
|
||||
5. CREDITS
|
||||
|
||||
6. SUPPORT AND DONATIONS
|
||||
|
||||
7. HISTORY
|
||||
|
||||
|
||||
1. INTRODUCTION
|
||||
===============
|
||||
|
||||
Welcome to QBittorrent port for OS/2 and eComStation.
|
||||
|
||||
|
||||
2. REQUIREMENTS
|
||||
===============
|
||||
|
||||
The following requirements can be installed either by rpm or by zip files.
|
||||
|
||||
RPM Installation:
|
||||
|
||||
klibc
|
||||
-----
|
||||
|
||||
1. yum install libc
|
||||
|
||||
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.5 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
|
||||
===============
|
||||
|
||||
To install QBittorrent, do the following:
|
||||
|
||||
1. Create a directory for QBittorrent.
|
||||
2. Extract the QBittorrent package to the new directory.
|
||||
3. Create a WPS object for QBittorrent.exe.
|
||||
4. Start QBittorrent
|
||||
5. Happy torrenting
|
||||
|
||||
|
||||
4. BUGREPORTS
|
||||
=============
|
||||
|
||||
Please create bugreports at http://svn.netlabs.org/qtapps
|
||||
Only bug reports with a reproducable bug are accepted. :-)
|
||||
|
||||
|
||||
5. CREDITS
|
||||
==========
|
||||
|
||||
The port was done by:
|
||||
|
||||
Silvan Scherrer aka _diver
|
||||
|
||||
Thanks go to:
|
||||
|
||||
* Dmitry A. Kuminov
|
||||
|
||||
They either helped me when I had some nasty questions or did some testing for
|
||||
me.
|
||||
|
||||
|
||||
6. SUPPORT AND DONATIONS
|
||||
========================
|
||||
|
||||
QBittorrent port is based on volunteer work. If you would like to support further
|
||||
development, you can do so in one of the following ways:
|
||||
|
||||
|
||||
* Donate to the Qt4 project: see qt.netlabs.org for more information
|
||||
|
||||
* Contribute to the project: Besides actual development, this also includes
|
||||
maintaining the documentation and the project web site as well as help
|
||||
for users.
|
||||
|
||||
|
||||
7. HISTORY
|
||||
==========
|
||||
|
||||
2012-09-19
|
||||
|
||||
* updated to 3.0.4 code level of QBittorrent
|
||||
* updated libtorrent to 0.16.3 level
|
||||
|
||||
2012-09-06
|
||||
|
||||
* updated to 3.0.2 code level of QBittorrent
|
||||
|
||||
2012-05-14
|
||||
|
||||
* updated to 2.9.8 code level of QBittorrent
|
||||
|
||||
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
|
||||
|
||||
* updated to 2.5.2 code level of QBittorrent
|
||||
|
||||
2010-11-22
|
||||
|
||||
* updated to 2.4.11 code level of QBittorrent
|
||||
|
||||
2010-xx-xx
|
||||
|
||||
* initial port
|
||||
|
||||
66
macxconf.pri
Normal file
@@ -0,0 +1,66 @@
|
||||
PREFIX = /usr/local
|
||||
BINDIR = /usr/local/bin
|
||||
DATADIR = /usr/local/share
|
||||
|
||||
# Use pkg-config to get all necessary libtorrent DEFINES
|
||||
CONFIG += link_pkgconfig
|
||||
PKGCONFIG += libtorrent-rasterbar
|
||||
DEFINES += BOOST_ASIO_DYN_LINK
|
||||
|
||||
# Special include/libs paths (homebrew and macports)
|
||||
INCLUDEPATH += /usr/local/include /opt/local/include /usr/include
|
||||
LIBS += -L/usr/local/lib -L/opt/local/lib -L/usr/lib
|
||||
|
||||
# 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
|
||||
# Zlib
|
||||
LIBS += -lz
|
||||
|
||||
document_icon.path = Contents/Resources
|
||||
document_icon.files = mac/qBitTorrentDocument.icns
|
||||
QMAKE_BUNDLE_DATA += document_icon
|
||||
|
||||
qt_conf.path = Contents/Resources
|
||||
qt_conf.files = mac/qt.conf
|
||||
QMAKE_BUNDLE_DATA += qt_conf
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||
|
||||
qt_translations.path = Contents/translations
|
||||
qt_translations.files = qt-translations/qt_ar.qm \
|
||||
qt-translations/qt_bg.qm \
|
||||
qt-translations/qt_ca.qm \
|
||||
qt-translations/qt_cs.qm \
|
||||
qt-translations/qt_da.qm \
|
||||
qt-translations/qt_de.qm \
|
||||
qt-translations/qt_es.qm \
|
||||
qt-translations/qt_fi.qm \
|
||||
qt-translations/qt_fr.qm \
|
||||
qt-translations/qt_gl.qm \
|
||||
qt-translations/qt_he.qm \
|
||||
qt-translations/qt_hu.qm \
|
||||
qt-translations/qt_it.qm \
|
||||
qt-translations/qt_ja.qm \
|
||||
qt-translations/qt_ko.qm \
|
||||
qt-translations/qt_lt.qm \
|
||||
qt-translations/qt_nl.qm \
|
||||
qt-translations/qt_pl.qm \
|
||||
qt-translations/qt_pt.qm \
|
||||
qt-translations/qt_pt_BR.qm \
|
||||
qt-translations/qt_ru.qm \
|
||||
qt-translations/qt_sk.qm \
|
||||
qt-translations/qt_sv.qm \
|
||||
qt-translations/qt_tr.qm \
|
||||
qt-translations/qt_uk.qm \
|
||||
qt-translations/qt_zh_CN.qm \
|
||||
qt-translations/qt_zh_TW.qm
|
||||
QMAKE_BUNDLE_DATA += qt_translations
|
||||
|
||||
ICON = mac/qbittorrent_mac.icns
|
||||
QMAKE_INFO_PLIST = mac/Info.plist
|
||||
|
||||
DEFINES += WITH_GEOIP_EMBEDDED
|
||||
message("On Mac OS X, GeoIP database must be embedded.")
|
||||
19
os2conf.pri
Normal file
@@ -0,0 +1,19 @@
|
||||
exists(conf.pri) {
|
||||
# to the conf.pri goes all system dependent stuff
|
||||
include(conf.pri)
|
||||
}
|
||||
|
||||
LIBS += -ltorrent-rasterbar \
|
||||
-lboost_thread \
|
||||
-lboost_system \
|
||||
-lboost_filesystem \
|
||||
-lssl -lcrypto -lidn -lpthread -lz
|
||||
|
||||
RC_FILE = qbittorrent_os2.rc
|
||||
|
||||
# LIBTORRENT DEFINES
|
||||
DEFINES += WITH_SHIPPED_GEOIP_H
|
||||
DEFINES += BOOST_ASIO_DYN_LINK
|
||||
|
||||
DEFINES += WITH_GEOIP_EMBEDDED
|
||||
message("On eCS(OS/2), GeoIP database must be embedded.")
|
||||
@@ -1,199 +0,0 @@
|
||||
<?xml version = '1.0'?>
|
||||
<kdevelop>
|
||||
<general>
|
||||
<author>Christophe Dumez</author>
|
||||
<email>chris@qbittorrent.org</email>
|
||||
<version>1.0.0</version>
|
||||
<projectmanagement>KDevTrollProject</projectmanagement>
|
||||
<primarylanguage>C++</primarylanguage>
|
||||
<keywords>
|
||||
<keyword>Qt</keyword>
|
||||
</keywords>
|
||||
<projectname>qBittorrent</projectname>
|
||||
<ignoreparts/>
|
||||
<projectdirectory>.</projectdirectory>
|
||||
<absoluteprojectpath>false</absoluteprojectpath>
|
||||
<description/>
|
||||
<defaultencoding/>
|
||||
<versioncontrol>kdevsubversion</versioncontrol>
|
||||
</general>
|
||||
<kdevfileview>
|
||||
<groups>
|
||||
<group pattern="*.cpp;*.cxx;*.h" name="Sources" />
|
||||
<group pattern="*.ui" name="User Interface" />
|
||||
<group pattern="*.png" name="Icons" />
|
||||
<group pattern="*" name="Others" />
|
||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||
<hidenonlocation>false</hidenonlocation>
|
||||
</groups>
|
||||
<tree>
|
||||
<hidepatterns>*.o,*.lo,CVS</hidepatterns>
|
||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||
<showvcsfields>false</showvcsfields>
|
||||
</tree>
|
||||
</kdevfileview>
|
||||
<kdevdoctreeview>
|
||||
<ignoretocs>
|
||||
<toc>bash</toc>
|
||||
<toc>bash_bugs</toc>
|
||||
<toc>clanlib</toc>
|
||||
<toc>w3c-dom-level2-html</toc>
|
||||
<toc>fortran_bugs_gcc</toc>
|
||||
<toc>gnome1</toc>
|
||||
<toc>gnustep</toc>
|
||||
<toc>gtk</toc>
|
||||
<toc>gtk_bugs</toc>
|
||||
<toc>haskell</toc>
|
||||
<toc>haskell_bugs_ghc</toc>
|
||||
<toc>java_bugs_gcc</toc>
|
||||
<toc>java_bugs_sun</toc>
|
||||
<toc>kde2book</toc>
|
||||
<toc>opengl</toc>
|
||||
<toc>pascal_bugs_fp</toc>
|
||||
<toc>php</toc>
|
||||
<toc>php_bugs</toc>
|
||||
<toc>perl</toc>
|
||||
<toc>perl_bugs</toc>
|
||||
<toc>python</toc>
|
||||
<toc>python_bugs</toc>
|
||||
<toc>qt-kdev3</toc>
|
||||
<toc>ruby</toc>
|
||||
<toc>ruby_bugs</toc>
|
||||
<toc>sdl</toc>
|
||||
<toc>stl</toc>
|
||||
<toc>w3c-svg</toc>
|
||||
<toc>sw</toc>
|
||||
<toc>w3c-uaag10</toc>
|
||||
<toc>wxwidgets_bugs</toc>
|
||||
</ignoretocs>
|
||||
<ignoredoxygen>
|
||||
<toc>KDE Libraries (Doxygen)</toc>
|
||||
</ignoredoxygen>
|
||||
</kdevdoctreeview>
|
||||
<kdevdebugger>
|
||||
<general>
|
||||
<dbgshell/>
|
||||
<gdbpath/>
|
||||
<configGdbScript/>
|
||||
<runShellScript/>
|
||||
<runGdbScript/>
|
||||
<breakonloadinglibs>true</breakonloadinglibs>
|
||||
<separatetty>false</separatetty>
|
||||
<floatingtoolbar>false</floatingtoolbar>
|
||||
</general>
|
||||
<display>
|
||||
<staticmembers>false</staticmembers>
|
||||
<demanglenames>true</demanglenames>
|
||||
<outputradix>10</outputradix>
|
||||
</display>
|
||||
</kdevdebugger>
|
||||
<kdevcppsupport>
|
||||
<qt>
|
||||
<version>4</version>
|
||||
<used>true</used>
|
||||
<includestyle>4</includestyle>
|
||||
<designerintegration>ExternalDesigner</designerintegration>
|
||||
<root>/usr/lib/qt4</root>
|
||||
<qmake>/usr/bin/qmake</qmake>
|
||||
<designer>/usr/bin/designer</designer>
|
||||
<designerpluginpaths/>
|
||||
</qt>
|
||||
<references>
|
||||
<pcs>automatic_%2Fhome%2Fishanarora%2Fprojects%2Fqbittorrent</pcs>
|
||||
</references>
|
||||
<codecompletion>
|
||||
<automaticCodeCompletion>true</automaticCodeCompletion>
|
||||
<automaticArgumentsHint>true</automaticArgumentsHint>
|
||||
<automaticHeaderCompletion>true</automaticHeaderCompletion>
|
||||
<codeCompletionDelay>250</codeCompletionDelay>
|
||||
<argumentsHintDelay>400</argumentsHintDelay>
|
||||
<headerCompletionDelay>250</headerCompletionDelay>
|
||||
<showOnlyAccessibleItems>false</showOnlyAccessibleItems>
|
||||
<completionBoxItemOrder>0</completionBoxItemOrder>
|
||||
<howEvaluationContextMenu>true</howEvaluationContextMenu>
|
||||
<showCommentWithArgumentHint>true</showCommentWithArgumentHint>
|
||||
<statusBarTypeEvaluation>false</statusBarTypeEvaluation>
|
||||
<namespaceAliases>std=_GLIBCXX_STD;__gnu_cxx=std</namespaceAliases>
|
||||
<processPrimaryTypes>true</processPrimaryTypes>
|
||||
<processFunctionArguments>true</processFunctionArguments>
|
||||
<preProcessAllHeaders>true</preProcessAllHeaders>
|
||||
<parseMissingHeadersExperimental>true</parseMissingHeadersExperimental>
|
||||
<resolveIncludePathsUsingMakeExperimental>true</resolveIncludePathsUsingMakeExperimental>
|
||||
<alwaysParseInBackground>true</alwaysParseInBackground>
|
||||
<usePermanentCaching>true</usePermanentCaching>
|
||||
<alwaysIncludeNamespaces>false</alwaysIncludeNamespaces>
|
||||
<includePaths>.;</includePaths>
|
||||
</codecompletion>
|
||||
<creategettersetter>
|
||||
<prefixGet>get</prefixGet>
|
||||
<prefixSet>set</prefixSet>
|
||||
<prefixVariable>m_,_</prefixVariable>
|
||||
<parameterName>theValue</parameterName>
|
||||
<inlineGet>true</inlineGet>
|
||||
<inlineSet>true</inlineSet>
|
||||
</creategettersetter>
|
||||
<splitheadersource>
|
||||
<enabled>false</enabled>
|
||||
<synchronize>true</synchronize>
|
||||
<orientation>Vertical</orientation>
|
||||
</splitheadersource>
|
||||
</kdevcppsupport>
|
||||
<kdevfilecreate>
|
||||
<filetypes/>
|
||||
<useglobaltypes>
|
||||
<type ext="ui" />
|
||||
<type ext="cpp" />
|
||||
<type ext="h" />
|
||||
</useglobaltypes>
|
||||
</kdevfilecreate>
|
||||
<kdevtrollproject>
|
||||
<general>
|
||||
<activedir>src</activedir>
|
||||
</general>
|
||||
<run>
|
||||
<directoryradio>executable</directoryradio>
|
||||
<mainprogram>/home/ishanarora/projects/qbittorrent/src/qbittorrent</mainprogram>
|
||||
<programargs/>
|
||||
<globaldebugarguments/>
|
||||
<globalcwd>/home/ishanarora/projects/qbittorrent</globalcwd>
|
||||
<useglobalprogram>true</useglobalprogram>
|
||||
<terminal>false</terminal>
|
||||
<autocompile>true</autocompile>
|
||||
<autoinstall>false</autoinstall>
|
||||
<autokdesu>false</autokdesu>
|
||||
<envvars/>
|
||||
</run>
|
||||
<make>
|
||||
<abortonerror>true</abortonerror>
|
||||
<runmultiplejobs>false</runmultiplejobs>
|
||||
<numberofjobs>1</numberofjobs>
|
||||
<dontact>false</dontact>
|
||||
<makebin/>
|
||||
<prio>0</prio>
|
||||
<envvars/>
|
||||
</make>
|
||||
<qmake>
|
||||
<savebehaviour>2</savebehaviour>
|
||||
<replacePaths>false</replacePaths>
|
||||
<disableDefaultOpts>true</disableDefaultOpts>
|
||||
</qmake>
|
||||
</kdevtrollproject>
|
||||
<cppsupportpart>
|
||||
<filetemplates>
|
||||
<interfacesuffix>.h</interfacesuffix>
|
||||
<implementationsuffix>.cpp</implementationsuffix>
|
||||
</filetemplates>
|
||||
</cppsupportpart>
|
||||
<ctagspart>
|
||||
<customArguments/>
|
||||
<customTagfilePath>/home/ishanarora/projects/qbittorrent/tags</customTagfilePath>
|
||||
<activeTagsFiles/>
|
||||
</ctagspart>
|
||||
<kdevdocumentation>
|
||||
<projectdoc>
|
||||
<docsystem/>
|
||||
<docurl/>
|
||||
<usermanualurl/>
|
||||
</projectdoc>
|
||||
</kdevdocumentation>
|
||||
</kdevelop>
|
||||
@@ -1,6 +1,19 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
include(conf.pri)
|
||||
|
||||
SUBDIRS += src
|
||||
|
||||
include(version.pri)
|
||||
include(qm_gen.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
|
||||
|
||||
@@ -6,14 +6,20 @@
|
||||
<dep type='qt4'>
|
||||
<required/>
|
||||
</dep>
|
||||
<dep type='qt-dbus'>
|
||||
</dep>
|
||||
<dep type='pkg-config'>
|
||||
<required/>
|
||||
</dep>
|
||||
<dep type='libtorrent-rasterbar'>
|
||||
<required/>
|
||||
</dep>
|
||||
<dep type='libboost'>
|
||||
<required/>
|
||||
</dep>
|
||||
<dep type='libnotify'>
|
||||
</dep>
|
||||
<dep type='geoip-database'>
|
||||
</dep>
|
||||
<dep type='qtsingleapplication'>
|
||||
<required/>
|
||||
</dep>
|
||||
</qconf>
|
||||
|
||||
@@ -11,7 +11,15 @@ public:
|
||||
qc_geoip_database(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "GeoIP Database (optional)"; }
|
||||
QString shortname() const { return "GeoIP Database"; }
|
||||
QString checkString() const {
|
||||
if(!conf->getenv("QC_DISABLE_geoip_database").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty())
|
||||
return "";
|
||||
return ConfObj::checkString();
|
||||
}
|
||||
bool exec() {
|
||||
if(!conf->getenv("QC_DISABLE_geoip_database").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
#ifdef Q_WS_X11
|
||||
if(!conf->getenv("QC_WITH_GEOIP_DATABASE_EMBEDDED").isEmpty()) {
|
||||
#endif
|
||||
|
||||
133
qcm/libboost.qcm
@@ -2,55 +2,96 @@
|
||||
-----BEGIN QCMOD-----
|
||||
name: libboost
|
||||
arg: with-libboost-inc=[path], Path to libboost include files
|
||||
arg: with-libboost-lib=[path], Path to libboost library files
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
#include <boost/version.hpp>
|
||||
#include <libtorrent/version.hpp>
|
||||
|
||||
class qc_libboost : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_libboost(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "libboost"; }
|
||||
QString shortname() const { return "libboost"; }
|
||||
bool exec(){
|
||||
QString s;
|
||||
s = conf->getenv("QC_WITH_LIBBOOST_INC");
|
||||
if(!s.isEmpty()) {
|
||||
if(!conf->checkHeader(s, "boost/format.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/thread.hpp")) {
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
QStringList sl;
|
||||
sl << "/usr/include";
|
||||
sl << "/usr/local/include";
|
||||
bool found = false;
|
||||
foreach(s, sl){
|
||||
if(conf->checkHeader(s, "boost/format.hpp")){
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) {
|
||||
return false;
|
||||
}
|
||||
if(!conf->checkHeader(s, "boost/thread.hpp")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
conf->addIncludePath(s);
|
||||
return true;
|
||||
}
|
||||
qc_libboost(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "libboost"; }
|
||||
QString shortname() const { return "libboost"; }
|
||||
|
||||
QString findBoostLib(QString path, QString lib) const {
|
||||
QString name;
|
||||
QDir libDir(path);
|
||||
QStringList filters;
|
||||
filters << "libboost_"+lib+"*-mt*.so";
|
||||
QStringList result = libDir.entryList(filters, QDir::Files);
|
||||
if(!result.empty()) {
|
||||
name = result.first().mid(3);
|
||||
// Remove .so
|
||||
name.chop(3);
|
||||
} else {
|
||||
// Fall back to non -mt boost lib
|
||||
filters.clear();
|
||||
filters << "libboost_"+lib+"*.so";
|
||||
result = libDir.entryList(filters, QDir::Files);
|
||||
if(!result.empty()) {
|
||||
name = result.first().mid(3);
|
||||
// Remove .so
|
||||
name.chop(3);
|
||||
}
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
bool exec(){
|
||||
QStringList sl;
|
||||
QString s = conf->getenv("QC_WITH_LIBBOOST_INC");
|
||||
if (!s.isEmpty())
|
||||
sl << s;
|
||||
sl << "/usr/include";
|
||||
sl << "/usr/local/include";
|
||||
bool found = false;
|
||||
foreach (s, sl) {
|
||||
if (conf->checkHeader(s, "boost/format.hpp")
|
||||
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
||||
&& conf->checkHeader(s, "boost/filesystem/path.hpp")
|
||||
#endif
|
||||
) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
return false;
|
||||
|
||||
conf->addIncludePath(s);
|
||||
|
||||
// Find library
|
||||
s = conf->getenv("QC_WITH_LIBBOOST_LIB");
|
||||
QStringList required_libs;
|
||||
#if BOOST_VERSION >= 103500
|
||||
required_libs << "system";
|
||||
#endif
|
||||
#if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16
|
||||
required_libs << "filesystem" ;
|
||||
#endif
|
||||
//required_libs << "thread";
|
||||
QStringList libDirs;
|
||||
if (!s.isEmpty())
|
||||
libDirs << s;
|
||||
libDirs << "/usr/lib/" << "/usr/lib/i386-linux-gnu/" << "/usr/lib64/" << "/usr/lib/x86_64-linux-gnu/" << "/usr/local/lib/" << "/usr/lib/local/i386-linux-gnu/" << "/usr/local/lib64/" << "/usr/local/lib/x86_64-linux-gnu/";
|
||||
|
||||
foreach(const QString& lib, required_libs) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -10,13 +10,21 @@ public:
|
||||
qc_libnotify(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "libnotify >= 0.4.2 (optional)"; }
|
||||
QString shortname() const { return "libnotify"; }
|
||||
QString checkString() const {
|
||||
if(!conf->getenv("QC_DISABLE_libnotify").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty())
|
||||
return "";
|
||||
return ConfObj::checkString();
|
||||
}
|
||||
bool exec(){
|
||||
if(!conf->getenv("QC_DISABLE_libnotify").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
QStringList incs;
|
||||
QString req_ver = "0.4.2";
|
||||
QString version, libs, other;
|
||||
VersionMode mode = VersionMin;
|
||||
if(conf->findPkgConfig("libnotify", mode, req_ver, &version, &incs, &libs, &other)) {
|
||||
conf->addDefine("WITH_LIBNOTIFY");
|
||||
conf->addExtra("CONFIG += libnotify");
|
||||
for(int n = 0; n < incs.count(); ++n)
|
||||
conf->addIncludePath(incs[n]);
|
||||
if(!libs.isEmpty())
|
||||
@@ -32,10 +40,21 @@ public:
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
QStringList incs3;
|
||||
QString req_ver3 = "2.0";
|
||||
QString version3, libs3, other3;
|
||||
if(conf->findPkgConfig("gtk+-2.0", mode, req_ver3, &version3, &incs3, &libs3, &other3)) {
|
||||
for(int n = 0; n < incs3.count(); ++n)
|
||||
conf->addIncludePath(incs3[n]);
|
||||
if(!libs3.isEmpty())
|
||||
conf->addLib(libs3);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -8,24 +8,17 @@ class qc_libtorrent_rasterbar : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.15.0 advised)"; }
|
||||
QString name() const { return "libtorrent-rasterbar >= 0.15.0"; }
|
||||
QString shortname() const { return "libtorrent-rasterbar"; }
|
||||
bool exec(){
|
||||
QStringList incs;
|
||||
QString req_ver = "0.14.0";
|
||||
QString adv_ver = "0.15.0";
|
||||
QString req_ver = "0.15.0";
|
||||
QString version, libs, other;
|
||||
VersionMode mode = VersionMin;
|
||||
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
|
||||
return false;
|
||||
for(int n = 0; n < incs.count(); ++n)
|
||||
conf->addIncludePath(incs[n]);
|
||||
if(!libs.isEmpty())
|
||||
conf->addLib(libs);
|
||||
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other))
|
||||
printf("\nWarning: libtorrent-rasterbar v%s was detected.\nAlthough it will compile and run, you will be missing some features. Please consider updating to v%s.\n", version.toLocal8Bit().data(), adv_ver.toUtf8().data());
|
||||
else
|
||||
conf->addDefine("LIBTORRENT_0_15");
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
16
qcm/pkg-config.qcm
Normal file
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: pkg-config
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
#include <QProcess>
|
||||
class qc_pkg_config : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_pkg_config(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "pkg-config executable"; }
|
||||
QString shortname() const { return "pkg-config"; }
|
||||
bool exec(){
|
||||
return !conf->findProgram("pkg-config").isEmpty();
|
||||
}
|
||||
};
|
||||
31
qcm/qt-dbus.qcm
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: qt-dbus
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
// see Conf::findPkgConfig
|
||||
class qc_qt_dbus : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_qt_dbus(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "QtDBus >= 4.5"; }
|
||||
QString shortname() const { return "qt-dbus"; }
|
||||
QString checkString() const {
|
||||
if(!conf->getenv("QC_DISABLE_qt_dbus").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty())
|
||||
return "";
|
||||
return ConfObj::checkString();
|
||||
}
|
||||
bool exec(){
|
||||
if(!conf->getenv("QC_DISABLE_qt_dbus").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty())
|
||||
return false;
|
||||
QStringList incs;
|
||||
QString req_ver = "4.5.0";
|
||||
QString version, libs, other;
|
||||
VersionMode mode = VersionMin;
|
||||
if(conf->findPkgConfig("QtDBus", mode, req_ver, &version, &incs, &libs, &other)) {
|
||||
conf->addExtra("CONFIG += dbus");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
31
qcm/qt-svg.qcm
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: qt-svg
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
// see Conf::findPkgConfig
|
||||
class qc_qt_svg : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_qt_svg(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "QtSvg >= 4.5"; }
|
||||
QString shortname() const { return "qt-svg"; }
|
||||
QString checkString() const {
|
||||
if(!conf->getenv("QC_DISABLE_qt_svg").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty())
|
||||
return "";
|
||||
return ConfObj::checkString();
|
||||
}
|
||||
bool exec(){
|
||||
if(!conf->getenv("QC_DISABLE_qt_svg").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty())
|
||||
return false;
|
||||
QStringList incs;
|
||||
QString req_ver = "4.5.0";
|
||||
QString version, libs, other;
|
||||
VersionMode mode = VersionMin;
|
||||
if(conf->findPkgConfig("QtSvg", mode, req_ver, &version, &incs, &libs, &other)) {
|
||||
conf->addExtra("CONFIG += svg");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
30
qcm/qt4.qcm
@@ -1,20 +1,36 @@
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: Qt >= 4.4
|
||||
name: Qt >= 4.6
|
||||
arg: enable-debug, Enable debug mode
|
||||
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
class qc_qt4 : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_qt4(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "Qt >= 4.4"; }
|
||||
QString shortname() const { return "Qt 4.4"; }
|
||||
QString name() const { return "Qt >= 4.6"; }
|
||||
QString shortname() const { return "Qt 4.6"; }
|
||||
bool exec()
|
||||
{
|
||||
if(QT_VERSION >= 0x040500) {
|
||||
conf->addDefine("QT_4_5");
|
||||
// NOX mode
|
||||
if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) {
|
||||
conf->addExtra("CONFIG += nox");
|
||||
}
|
||||
// Debug mode
|
||||
if(!conf->getenv("QC_ENABLE_DEBUG").isEmpty()) {
|
||||
conf->addExtra("CONFIG -= release");
|
||||
conf->addExtra("CONFIG += debug");
|
||||
} else {
|
||||
conf->addExtra("CONFIG -= debug");
|
||||
conf->addExtra("CONFIG += release");
|
||||
}
|
||||
return(QT_VERSION >= 0x040400);
|
||||
|
||||
#ifdef Q_OS_FREEBSD
|
||||
conf->addLib("-lexecinfo");
|
||||
conf->addExtra("MANPREFIX = $$PREFIX");
|
||||
#else
|
||||
conf->addExtra("MANPREFIX = $$PREFIX/share");
|
||||
#endif
|
||||
return(QT_VERSION >= 0x040600);
|
||||
}
|
||||
};
|
||||
|
||||
26
qcm/qtsingleapplication.qcm
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: qtsingleapplication
|
||||
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
class qc_qtsingleapplication : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_qtsingleapplication(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "qtsingleapplication library"; }
|
||||
QString shortname() const { return "qtsingleapplication"; }
|
||||
|
||||
bool exec(){
|
||||
QString s;
|
||||
s = conf->getenv("QC_WITH_QTSINGLEAPPLICATION");
|
||||
if(s.compare("system", Qt::CaseInsensitive) == 0) {
|
||||
// System
|
||||
conf->addExtra("CONFIG += usesystemqtsingleapplication");
|
||||
printf(" [system] ");
|
||||
} else {
|
||||
printf(" [shipped] ");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
19
qm_gen.pri
Normal file
@@ -0,0 +1,19 @@
|
||||
TS_IN = $$fromfile(src/src.pro,TRANSLATIONS)
|
||||
TS_IN_NOEXT = $$replace(TS_IN,".ts","")
|
||||
|
||||
isEmpty(QMAKE_LRELEASE) {
|
||||
win32|os2:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe
|
||||
else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
|
||||
unix {
|
||||
!exists($$QMAKE_LRELEASE) { QMAKE_LRELEASE = lrelease-qt4 }
|
||||
} else {
|
||||
!exists($$QMAKE_LRELEASE) { QMAKE_LRELEASE = lrelease }
|
||||
}
|
||||
}
|
||||
|
||||
message("Building translations")
|
||||
for(L,TS_IN_NOEXT) {
|
||||
message("Processing $${L}")
|
||||
system("$$QMAKE_LRELEASE -silent src/$${L}.ts -qm src/$${L}.qm")
|
||||
!exists("src/$${L}.qm"):error("Building translations failed, cannot continue")
|
||||
}
|
||||
918
src/GUI.cpp
@@ -1,918 +0,0 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt4 and libtorrent.
|
||||
* Copyright (C) 2006 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
|
||||
*/
|
||||
#ifdef WITH_LIBNOTIFY
|
||||
#include <glib.h>
|
||||
#include <unistd.h>
|
||||
#include <libnotify/notify.h>
|
||||
#endif
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QDesktopWidget>
|
||||
#include <QTimer>
|
||||
#include <QDesktopServices>
|
||||
#include <QStatusBar>
|
||||
#include <QClipboard>
|
||||
#include <QLocalServer>
|
||||
#include <QLocalSocket>
|
||||
#include <QCloseEvent>
|
||||
#include <QShortcut>
|
||||
|
||||
#include "GUI.h"
|
||||
#include "transferlistwidget.h"
|
||||
#include "misc.h"
|
||||
#include "createtorrent_imp.h"
|
||||
#include "downloadfromurldlg.h"
|
||||
#include "torrentadditiondlg.h"
|
||||
#include "searchengine.h"
|
||||
#include "rss_imp.h"
|
||||
#include "bittorrent.h"
|
||||
#include "about_imp.h"
|
||||
#include "trackerlogin.h"
|
||||
#include "options_imp.h"
|
||||
#include "speedlimitdlg.h"
|
||||
#include "preferences.h"
|
||||
#include "console_imp.h"
|
||||
#include "torrentpersistentdata.h"
|
||||
#include "transferlistfilterswidget.h"
|
||||
#include "propertieswidget.h"
|
||||
#include "statusbar.h"
|
||||
|
||||
using namespace libtorrent;
|
||||
|
||||
#define TIME_TRAY_BALLOON 5000
|
||||
|
||||
/*****************************************************
|
||||
* *
|
||||
* GUI *
|
||||
* *
|
||||
*****************************************************/
|
||||
|
||||
// Constructor
|
||||
GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), displaySpeedInTitle(false), force_exit(false) {
|
||||
setupUi(this);
|
||||
setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent v0.x").arg(QString::fromUtf8(VERSION)));
|
||||
// Setting icons
|
||||
this->setWindowIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent32.png")));
|
||||
actionOpen->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/open.png")));
|
||||
actionExit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/exit.png")));
|
||||
actionDownload_from_URL->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/url.png")));
|
||||
actionOptions->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/settings.png")));
|
||||
actionAbout->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/info.png")));
|
||||
actionWebsite->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent32.png")));
|
||||
actionBugReport->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/bug.png")));
|
||||
actionStart->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/play.png")));
|
||||
actionPause->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/pause.png")));
|
||||
actionDelete->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete.png")));
|
||||
actionPause_All->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/pause_all.png")));
|
||||
actionStart_All->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/play_all.png")));
|
||||
actionClearLog->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete.png")));
|
||||
actionPreview_file->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/preview.png")));
|
||||
actionSet_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
|
||||
actionSet_download_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/download.png")));
|
||||
actionSet_global_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
|
||||
actionSet_global_download_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/download.png")));
|
||||
actionDocumentation->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/qb_question.png")));
|
||||
prioSeparator = toolBar->insertSeparator(actionDecreasePriority);
|
||||
prioSeparator2 = menu_Edit->insertSeparator(actionDecreasePriority);
|
||||
prioSeparator->setVisible(false);
|
||||
prioSeparator2->setVisible(false);
|
||||
actionCreate_torrent->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/new.png")));
|
||||
// Fix Tool bar layout
|
||||
toolBar->layout()->setSpacing(7);
|
||||
// Creating Bittorrent session
|
||||
BTSession = new Bittorrent();
|
||||
connect(BTSession, SIGNAL(fullDiskError(QTorrentHandle&, QString)), this, SLOT(fullDiskError(QTorrentHandle&, QString)));
|
||||
connect(BTSession, SIGNAL(finishedTorrent(QTorrentHandle&)), this, SLOT(finishedTorrent(QTorrentHandle&)));
|
||||
connect(BTSession, SIGNAL(trackerAuthenticationRequired(QTorrentHandle&)), this, SLOT(trackerAuthenticationRequired(QTorrentHandle&)));
|
||||
connect(BTSession, SIGNAL(newDownloadedTorrent(QString, QString)), this, SLOT(processDownloadedFiles(QString, QString)));
|
||||
connect(BTSession, SIGNAL(downloadFromUrlFailure(QString, QString)), this, SLOT(handleDownloadFromUrlFailure(QString, QString)));
|
||||
|
||||
qDebug("create tabWidget");
|
||||
tabs = new QTabWidget();
|
||||
connect(tabs, SIGNAL(currentChanged(int)), this, SLOT(tab_changed(int)));
|
||||
vSplitter = new QSplitter(Qt::Horizontal);
|
||||
//vSplitter->setChildrenCollapsible(false);
|
||||
hSplitter = new QSplitter(Qt::Vertical);
|
||||
hSplitter->setChildrenCollapsible(false);
|
||||
|
||||
// Transfer List tab
|
||||
transferList = new TransferListWidget(hSplitter, this, BTSession);
|
||||
properties = new PropertiesWidget(hSplitter, this, transferList, BTSession);
|
||||
transferListFilters = new TransferListFiltersWidget(vSplitter, transferList);
|
||||
hSplitter->addWidget(transferList);
|
||||
hSplitter->addWidget(properties);
|
||||
vSplitter->addWidget(transferListFilters);
|
||||
vSplitter->addWidget(hSplitter);
|
||||
vSplitter->setCollapsible(0, true);
|
||||
vSplitter->setCollapsible(1, false);
|
||||
tabs->addTab(vSplitter, QIcon(QString::fromUtf8(":/Icons/oxygen/folder-remote.png")), tr("Transfers"));
|
||||
vboxLayout->addWidget(tabs);
|
||||
|
||||
// Transfer list slots
|
||||
connect(actionStart, SIGNAL(triggered()), transferList, SLOT(startSelectedTorrents()));
|
||||
connect(actionStart_All, SIGNAL(triggered()), transferList, SLOT(startAllTorrents()));
|
||||
connect(actionPause, SIGNAL(triggered()), transferList, SLOT(pauseSelectedTorrents()));
|
||||
connect(actionPause_All, SIGNAL(triggered()), transferList, SLOT(pauseAllTorrents()));
|
||||
connect(actionDelete, SIGNAL(triggered()), transferList, SLOT(deleteSelectedTorrents()));
|
||||
connect(actionIncreasePriority, SIGNAL(triggered()), transferList, SLOT(increasePrioSelectedTorrents()));
|
||||
connect(actionDecreasePriority, SIGNAL(triggered()), transferList, SLOT(decreasePrioSelectedTorrents()));
|
||||
|
||||
// Search engine tab
|
||||
searchEngine = new SearchEngine(this, BTSession);
|
||||
tabs->addTab(searchEngine, QIcon(QString::fromUtf8(":/Icons/oxygen/edit-find.png")), tr("Search"));
|
||||
|
||||
// Configure BT session according to options
|
||||
loadPreferences(false);
|
||||
// Resume unfinished torrents
|
||||
BTSession->startUpTorrents();
|
||||
// Add torrent given on command line
|
||||
processParams(torrentCmdLine);
|
||||
// Use a tcp server to allow only one instance of qBittorrent
|
||||
localServer = new QLocalServer();
|
||||
QString uid = QString::number(getuid());
|
||||
#ifdef Q_WS_X11
|
||||
if(QFile::exists(QDir::tempPath()+QDir::separator()+QString("qBittorrent-")+uid)) {
|
||||
// Socket was not closed cleanly
|
||||
std::cerr << "Warning: Local domain socket was not closed cleanly, deleting file...\n";
|
||||
QFile::remove(QDir::tempPath()+QDir::separator()+QString("qBittorrent-")+uid);
|
||||
}
|
||||
#endif
|
||||
if (!localServer->listen("qBittorrent-"+uid)) {
|
||||
std::cerr << "Couldn't create socket, single instance mode won't work...\n";
|
||||
}
|
||||
connect(localServer, SIGNAL(newConnection()), this, SLOT(acceptConnection()));
|
||||
// Start connection checking timer
|
||||
guiUpdater = new QTimer(this);
|
||||
connect(guiUpdater, SIGNAL(timeout()), this, SLOT(updateGUI()));
|
||||
guiUpdater->start(2000);
|
||||
// Accept drag 'n drops
|
||||
setAcceptDrops(true);
|
||||
createKeyboardShortcuts();
|
||||
// Create status bar
|
||||
status_bar = new StatusBar(QMainWindow::statusBar(), BTSession);
|
||||
|
||||
show();
|
||||
|
||||
// Load Window state and sizes
|
||||
readSettings();
|
||||
properties->readSettings();
|
||||
|
||||
if(Preferences::startMinimized()) {
|
||||
setWindowState(Qt::WindowMinimized);
|
||||
}
|
||||
|
||||
qDebug("GUI Built");
|
||||
}
|
||||
|
||||
// Destructor
|
||||
GUI::~GUI() {
|
||||
qDebug("GUI destruction");
|
||||
hide();
|
||||
// Async deletion of Bittorrent session as early as possible
|
||||
// in order to speed up exit
|
||||
session_proxy sp = BTSession->asyncDeletion();
|
||||
// Some saving
|
||||
properties->saveSettings();
|
||||
disconnect(tabs, SIGNAL(currentChanged(int)), this, SLOT(tab_changed(int)));
|
||||
// Delete other GUI objects
|
||||
delete status_bar;
|
||||
delete transferList;
|
||||
delete guiUpdater;
|
||||
|
||||
if(rssWidget)
|
||||
delete rssWidget;
|
||||
delete searchEngine;
|
||||
delete transferListFilters;
|
||||
delete properties;
|
||||
delete hSplitter;
|
||||
delete vSplitter;
|
||||
if(systrayCreator) {
|
||||
delete systrayCreator;
|
||||
}
|
||||
if(systrayIcon) {
|
||||
delete systrayIcon;
|
||||
delete myTrayIconMenu;
|
||||
}
|
||||
localServer->close();
|
||||
delete localServer;
|
||||
delete tabs;
|
||||
// Keyboard shortcuts
|
||||
delete switchSearchShortcut;
|
||||
delete switchSearchShortcut2;
|
||||
delete switchTransferShortcut;
|
||||
delete switchRSSShortcut;
|
||||
// Delete BTSession objects
|
||||
delete BTSession;
|
||||
// May freeze for a few seconds after the next line
|
||||
// because the Bittorrent session proxy will
|
||||
// actually be deleted now and destruction
|
||||
// becomes synchronous
|
||||
qDebug("Exiting GUI destructor...");
|
||||
}
|
||||
|
||||
void GUI::displayRSSTab(bool enable) {
|
||||
if(enable) {
|
||||
// RSS tab
|
||||
if(!rssWidget) {
|
||||
rssWidget = new RSSImp(BTSession);
|
||||
int index_tab = tabs->addTab(rssWidget, tr("RSS"));
|
||||
tabs->setTabIcon(index_tab, QIcon(QString::fromUtf8(":/Icons/rss32.png")));
|
||||
}
|
||||
} else {
|
||||
if(rssWidget) {
|
||||
delete rssWidget;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::on_actionWebsite_triggered() const {
|
||||
QDesktopServices::openUrl(QUrl(QString::fromUtf8("http://www.qbittorrent.org")));
|
||||
}
|
||||
|
||||
void GUI::on_actionDocumentation_triggered() const {
|
||||
QDesktopServices::openUrl(QUrl(QString::fromUtf8("http://doc.qbittorrent.org")));
|
||||
}
|
||||
|
||||
void GUI::on_actionBugReport_triggered() const {
|
||||
QDesktopServices::openUrl(QUrl(QString::fromUtf8("http://bugs.qbittorrent.org")));
|
||||
}
|
||||
|
||||
void GUI::tab_changed(int new_tab) {
|
||||
if(new_tab == TAB_TRANSFER) {
|
||||
qDebug("Changed tab to transfer list, refreshing the list");
|
||||
transferList->refreshList();
|
||||
properties->loadDynamicData();
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::writeSettings() {
|
||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||
settings.beginGroup(QString::fromUtf8("MainWindow"));
|
||||
settings.setValue(QString::fromUtf8("size"), size());
|
||||
settings.setValue(QString::fromUtf8("pos"), pos());
|
||||
// Splitter size
|
||||
QStringList sizes_str;
|
||||
sizes_str << QString::number(vSplitter->sizes().first());
|
||||
sizes_str << QString::number(vSplitter->sizes().last());
|
||||
settings.setValue(QString::fromUtf8("vSplitterSizes"), sizes_str);
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// called when a torrent has finished
|
||||
void GUI::finishedTorrent(QTorrentHandle& h) const {
|
||||
if(!TorrentPersistentData::isSeed(h.hash()))
|
||||
showNotificationBaloon(tr("Download completion"), tr("%1 has finished downloading.", "e.g: xxx.avi has finished downloading.").arg(h.name()));
|
||||
}
|
||||
|
||||
// Notification when disk is full
|
||||
void GUI::fullDiskError(QTorrentHandle& h, QString msg) const {
|
||||
if(!h.is_valid()) return;
|
||||
showNotificationBaloon(tr("I/O Error", "i.e: Input/Output Error"), tr("An I/O error occured for torrent %1.\n Reason: %2", "e.g: An error occured for torrent xxx.avi.\n Reason: disk is full.").arg(h.name()).arg(msg));
|
||||
// Download will be paused by libtorrent. Updating GUI information accordingly
|
||||
QString hash = h.hash();
|
||||
qDebug("Full disk error, pausing torrent %s", hash.toLocal8Bit().data());
|
||||
BTSession->addConsoleMessage(tr("An error occured (full disk?), '%1' paused.", "e.g: An error occured (full disk?), 'xxx.avi' paused.").arg(h.name()));
|
||||
}
|
||||
|
||||
void GUI::createKeyboardShortcuts() {
|
||||
actionCreate_torrent->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+N")));
|
||||
actionOpen->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+O")));
|
||||
actionExit->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Q")));
|
||||
switchTransferShortcut = new QShortcut(QKeySequence(tr("Alt+1", "shortcut to switch to first tab")), this);
|
||||
connect(switchTransferShortcut, SIGNAL(activated()), this, SLOT(displayTransferTab()));
|
||||
switchSearchShortcut = new QShortcut(QKeySequence(tr("Alt+2", "shortcut to switch to third tab")), this);
|
||||
connect(switchSearchShortcut, SIGNAL(activated()), this, SLOT(displaySearchTab()));
|
||||
switchSearchShortcut2 = new QShortcut(QKeySequence(tr("Ctrl+F", "shortcut to switch to search tab")), this);
|
||||
connect(switchSearchShortcut2, SIGNAL(activated()), this, SLOT(displaySearchTab()));
|
||||
switchRSSShortcut = new QShortcut(QKeySequence(tr("Alt+3", "shortcut to switch to fourth tab")), this);
|
||||
connect(switchRSSShortcut, SIGNAL(activated()), this, SLOT(displayRSSTab()));
|
||||
actionDocumentation->setShortcut(QKeySequence("F1"));
|
||||
actionOptions->setShortcut(QKeySequence(QString::fromUtf8("Alt+O")));
|
||||
actionDelete->setShortcut(QKeySequence(QString::fromUtf8("Del")));
|
||||
actionStart->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+S")));
|
||||
actionStart_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+S")));
|
||||
actionPause->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+P")));
|
||||
actionPause_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+P")));
|
||||
actionDecreasePriority->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+-")));
|
||||
actionIncreasePriority->setShortcut(QKeySequence(QString::fromUtf8("Ctrl++")));
|
||||
}
|
||||
|
||||
// Keyboard shortcuts slots
|
||||
void GUI::displayTransferTab() const {
|
||||
tabs->setCurrentIndex(TAB_TRANSFER);
|
||||
}
|
||||
|
||||
void GUI::displaySearchTab() const {
|
||||
tabs->setCurrentIndex(TAB_SEARCH);
|
||||
}
|
||||
|
||||
void GUI::displayRSSTab() const {
|
||||
tabs->setCurrentIndex(TAB_RSS);
|
||||
}
|
||||
|
||||
// End of keyboard shortcuts slots
|
||||
|
||||
void GUI::readSettings() {
|
||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||
settings.beginGroup(QString::fromUtf8("MainWindow"));
|
||||
resize(settings.value(QString::fromUtf8("size"), size()).toSize());
|
||||
move(settings.value(QString::fromUtf8("pos"), screenCenter()).toPoint());
|
||||
QStringList sizes_str = settings.value("vSplitterSizes", QStringList()).toStringList();
|
||||
// Splitter size
|
||||
QList<int> sizes;
|
||||
if(sizes_str.size() == 2) {
|
||||
sizes << sizes_str.first().toInt();
|
||||
sizes << sizes_str.last().toInt();
|
||||
} else {
|
||||
qDebug("Default splitter size");
|
||||
sizes << 120;
|
||||
sizes << vSplitter->width()-120;
|
||||
}
|
||||
vSplitter->setSizes(sizes);
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
void GUI::balloonClicked() {
|
||||
if(isHidden()) {
|
||||
show();
|
||||
if(isMinimized()) {
|
||||
showNormal();
|
||||
}
|
||||
raise();
|
||||
activateWindow();
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::acceptConnection() {
|
||||
QLocalSocket *clientConnection = localServer->nextPendingConnection();
|
||||
connect(clientConnection, SIGNAL(disconnected()), this, SLOT(readParamsOnSocket()));
|
||||
qDebug("accepted connection from another instance");
|
||||
}
|
||||
|
||||
void GUI::readParamsOnSocket() {
|
||||
QLocalSocket *clientConnection = static_cast<QLocalSocket*>(sender());
|
||||
if(clientConnection) {
|
||||
QByteArray params = clientConnection->readAll();
|
||||
if(!params.isEmpty()) {
|
||||
processParams(QString::fromUtf8(params.data()).split(QString::fromUtf8("\n")));
|
||||
qDebug("Received parameters from another instance");
|
||||
}
|
||||
clientConnection->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::handleDownloadFromUrlFailure(QString url, QString reason) const{
|
||||
// Display a message box
|
||||
QMessageBox::critical(0, tr("Url download error"), tr("Couldn't download file at url: %1, reason: %2.").arg(url).arg(reason));
|
||||
}
|
||||
|
||||
void GUI::on_actionSet_global_upload_limit_triggered() {
|
||||
qDebug("actionSet_global_upload_limit_triggered");
|
||||
bool ok;
|
||||
long new_limit = SpeedLimitDialog::askSpeedLimit(&ok, tr("Global Upload Speed Limit"), BTSession->getSession()->upload_rate_limit());
|
||||
if(ok) {
|
||||
qDebug("Setting global upload rate limit to %.1fKb/s", new_limit/1024.);
|
||||
BTSession->getSession()->set_upload_rate_limit(new_limit);
|
||||
if(new_limit <= 0)
|
||||
Preferences::setGlobalUploadLimit(-1);
|
||||
else
|
||||
Preferences::setGlobalUploadLimit(new_limit/1024.);
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::on_actionShow_console_triggered() {
|
||||
new consoleDlg(this, BTSession);
|
||||
}
|
||||
|
||||
void GUI::on_actionSet_global_download_limit_triggered() {
|
||||
qDebug("actionSet_global_download_limit_triggered");
|
||||
bool ok;
|
||||
long new_limit = SpeedLimitDialog::askSpeedLimit(&ok, tr("Global Download Speed Limit"), BTSession->getSession()->download_rate_limit());
|
||||
if(ok) {
|
||||
qDebug("Setting global download rate limit to %.1fKb/s", new_limit/1024.);
|
||||
BTSession->getSession()->set_download_rate_limit(new_limit);
|
||||
if(new_limit <= 0)
|
||||
Preferences::setGlobalDownloadLimit(-1);
|
||||
else
|
||||
Preferences::setGlobalDownloadLimit(new_limit/1024.);
|
||||
}
|
||||
}
|
||||
|
||||
// Necessary if we want to close the window
|
||||
// in one time if "close to systray" is enabled
|
||||
void GUI::on_actionExit_triggered() {
|
||||
force_exit = true;
|
||||
close();
|
||||
}
|
||||
|
||||
int GUI::getCurrentTabIndex() const {
|
||||
if(isMinimized() || !isVisible())
|
||||
return -1;
|
||||
return tabs->currentIndex();
|
||||
}
|
||||
|
||||
void GUI::setTabText(int index, QString text) const {
|
||||
tabs->setTabText(index, text);
|
||||
}
|
||||
|
||||
// Toggle Main window visibility
|
||||
void GUI::toggleVisibility(QSystemTrayIcon::ActivationReason e) {
|
||||
if(e == QSystemTrayIcon::Trigger || e == QSystemTrayIcon::DoubleClick) {
|
||||
if(isHidden()) {
|
||||
show();
|
||||
if(isMinimized()) {
|
||||
if(isMaximized()) {
|
||||
showMaximized();
|
||||
}else{
|
||||
showNormal();
|
||||
}
|
||||
}
|
||||
raise();
|
||||
activateWindow();
|
||||
}else{
|
||||
hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Center window
|
||||
QPoint GUI::screenCenter() const{
|
||||
int scrn = 0;
|
||||
QWidget *w = this->topLevelWidget();
|
||||
|
||||
if(w)
|
||||
scrn = QApplication::desktop()->screenNumber(w);
|
||||
else if(QApplication::desktop()->isVirtualDesktop())
|
||||
scrn = QApplication::desktop()->screenNumber(QCursor::pos());
|
||||
else
|
||||
scrn = QApplication::desktop()->screenNumber(this);
|
||||
|
||||
QRect desk(QApplication::desktop()->availableGeometry(scrn));
|
||||
return QPoint((desk.width() - this->frameGeometry().width()) / 2, (desk.height() - this->frameGeometry().height()) / 2);
|
||||
}
|
||||
|
||||
// Display About Dialog
|
||||
void GUI::on_actionAbout_triggered() {
|
||||
//About dialog
|
||||
new about(this);
|
||||
}
|
||||
|
||||
void GUI::showEvent(QShowEvent *e) {
|
||||
qDebug("** Show Event **");
|
||||
if(getCurrentTabIndex() == TAB_TRANSFER) {
|
||||
qDebug("-> Refreshing transfer list");
|
||||
transferList->refreshList();
|
||||
properties->loadDynamicData();
|
||||
}
|
||||
e->accept();
|
||||
}
|
||||
|
||||
// Called when we close the program
|
||||
void GUI::closeEvent(QCloseEvent *e) {
|
||||
|
||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||
bool goToSystrayOnExit = settings.value(QString::fromUtf8("Preferences/General/CloseToTray"), false).toBool();
|
||||
if(!force_exit && systrayIcon && goToSystrayOnExit && !this->isHidden()) {
|
||||
hide();
|
||||
//e->ignore();
|
||||
e->accept();
|
||||
return;
|
||||
}
|
||||
if(settings.value(QString::fromUtf8("Preferences/General/ExitConfirm"), true).toBool() && BTSession->hasActiveTorrents()) {
|
||||
show();
|
||||
if(!isMaximized())
|
||||
showNormal();
|
||||
if(e->spontaneous() == true || force_exit == true) {
|
||||
if(QMessageBox::question(this,
|
||||
tr("Are you sure you want to quit?")+QString::fromUtf8(" -- ")+tr("qBittorrent"),
|
||||
tr("Some files are currently transferring.\nAre you sure you want to quit qBittorrent?"),
|
||||
tr("&Yes"), tr("&No"),
|
||||
QString(), 0, 1)) {
|
||||
e->ignore();
|
||||
force_exit = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
hide();
|
||||
if(systrayIcon) {
|
||||
// Hide tray icon
|
||||
systrayIcon->hide();
|
||||
}
|
||||
// Save window size, columns size
|
||||
writeSettings();
|
||||
// Accept exit
|
||||
e->accept();
|
||||
qApp->exit();
|
||||
}
|
||||
|
||||
|
||||
// Display window to create a torrent
|
||||
void GUI::on_actionCreate_torrent_triggered() {
|
||||
createtorrent *ct = new createtorrent(this);
|
||||
connect(ct, SIGNAL(torrent_to_seed(QString)), this, SLOT(addTorrent(QString)));
|
||||
}
|
||||
|
||||
bool GUI::event(QEvent * e) {
|
||||
if(e->type() == QEvent::WindowStateChange) {
|
||||
//Now check to see if the window is minimised
|
||||
if(isMinimized()) {
|
||||
qDebug("minimisation");
|
||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||
if(systrayIcon && settings.value(QString::fromUtf8("Preferences/General/MinimizeToTray"), false).toBool()) {
|
||||
hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
return QMainWindow::event(e);
|
||||
}
|
||||
|
||||
// Action executed when a file is dropped
|
||||
void GUI::dropEvent(QDropEvent *event) {
|
||||
event->acceptProposedAction();
|
||||
QStringList files;
|
||||
if(event->mimeData()->hasUrls()) {
|
||||
QList<QUrl> urls = event->mimeData()->urls();
|
||||
foreach(const QUrl &url, urls) {
|
||||
QString tmp = url.toString().trimmed();
|
||||
if(!tmp.isEmpty())
|
||||
files << url.toString();
|
||||
}
|
||||
} else {
|
||||
files = event->mimeData()->text().split(QString::fromUtf8("\n"));
|
||||
}
|
||||
// Add file to download list
|
||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||
bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool();
|
||||
foreach(QString file, files) {
|
||||
file = file.trimmed().replace(QString::fromUtf8("file://"), QString::fromUtf8(""), Qt::CaseInsensitive);
|
||||
qDebug("Dropped file %s on download list", file.toLocal8Bit().data());
|
||||
if(file.startsWith(QString::fromUtf8("http://"), Qt::CaseInsensitive) || file.startsWith(QString::fromUtf8("ftp://"), Qt::CaseInsensitive) || file.startsWith(QString::fromUtf8("https://"), Qt::CaseInsensitive)) {
|
||||
BTSession->downloadFromUrl(file);
|
||||
continue;
|
||||
}
|
||||
if(file.startsWith("magnet:", Qt::CaseInsensitive)) {
|
||||
// FIXME: Possibly skipped torrent addition dialog
|
||||
BTSession->addMagnetUri(file);
|
||||
continue;
|
||||
}
|
||||
if(useTorrentAdditionDialog) {
|
||||
torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession);
|
||||
dialog->showLoad(file);
|
||||
}else{
|
||||
BTSession->addTorrent(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Decode if we accept drag 'n drop or not
|
||||
void GUI::dragEnterEvent(QDragEnterEvent *event) {
|
||||
foreach(const QString &mime, event->mimeData()->formats()){
|
||||
qDebug("mimeData: %s", mime.toLocal8Bit().data());
|
||||
}
|
||||
if (event->mimeData()->hasFormat(QString::fromUtf8("text/plain")) || event->mimeData()->hasFormat(QString::fromUtf8("text/uri-list"))) {
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
* *
|
||||
* Torrent *
|
||||
* *
|
||||
*****************************************************/
|
||||
|
||||
// Display a dialog to allow user to add
|
||||
// torrents to download list
|
||||
void GUI::on_actionOpen_triggered() {
|
||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||
// Open File Open Dialog
|
||||
// Note: it is possible to select more than one file
|
||||
QStringList pathsList = QFileDialog::getOpenFileNames(0,
|
||||
tr("Open Torrent Files"), settings.value(QString::fromUtf8("MainWindowLastDir"), QDir::homePath()).toString(),
|
||||
tr("Torrent Files")+QString::fromUtf8(" (*.torrent)"));
|
||||
if(!pathsList.empty()) {
|
||||
bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool();
|
||||
unsigned int listSize = pathsList.size();
|
||||
for(unsigned int i=0; i<listSize; ++i) {
|
||||
if(useTorrentAdditionDialog) {
|
||||
torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession);
|
||||
dialog->showLoad(pathsList.at(i));
|
||||
}else{
|
||||
BTSession->addTorrent(pathsList.at(i));
|
||||
}
|
||||
}
|
||||
// Save last dir to remember it
|
||||
QStringList top_dir = pathsList.at(0).split(QDir::separator());
|
||||
top_dir.removeLast();
|
||||
settings.setValue(QString::fromUtf8("MainWindowLastDir"), top_dir.join(QDir::separator()));
|
||||
}
|
||||
}
|
||||
|
||||
// As program parameters, we can get paths or urls.
|
||||
// This function parse the parameters and call
|
||||
// the right addTorrent function, considering
|
||||
// the parameter type.
|
||||
void GUI::processParams(const QStringList& params) {
|
||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||
bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool();
|
||||
foreach(QString param, params) {
|
||||
param = param.trimmed();
|
||||
if(param.startsWith("--")) continue;
|
||||
if(param.startsWith(QString::fromUtf8("http://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("ftp://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("https://"), Qt::CaseInsensitive)) {
|
||||
BTSession->downloadFromUrl(param);
|
||||
}else{
|
||||
if(param.startsWith("magnet:", Qt::CaseInsensitive)) {
|
||||
// FIXME: Possibily skipped torrent addition dialog
|
||||
BTSession->addMagnetUri(param);
|
||||
} else {
|
||||
if(useTorrentAdditionDialog) {
|
||||
torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession);
|
||||
dialog->showLoad(param);
|
||||
}else{
|
||||
BTSession->addTorrent(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::addTorrent(QString path) {
|
||||
BTSession->addTorrent(path);
|
||||
}
|
||||
|
||||
void GUI::processDownloadedFiles(QString path, QString url) {
|
||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||
bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool();
|
||||
if(useTorrentAdditionDialog) {
|
||||
torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession);
|
||||
dialog->showLoad(path, url);
|
||||
}else{
|
||||
BTSession->addTorrent(path, false, url);
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::optionsSaved() {
|
||||
loadPreferences();
|
||||
}
|
||||
|
||||
// Load program preferences
|
||||
void GUI::loadPreferences(bool configure_session) {
|
||||
BTSession->addConsoleMessage(tr("Options were saved successfully."));
|
||||
bool newSystrayIntegration = Preferences::systrayIntegration();
|
||||
if(newSystrayIntegration != (systrayIcon!=0)) {
|
||||
if(newSystrayIntegration) {
|
||||
// create the trayicon
|
||||
if(!QSystemTrayIcon::isSystemTrayAvailable()) {
|
||||
if(!configure_session) { // Program startup
|
||||
systrayCreator = new QTimer(this);
|
||||
connect(systrayCreator, SIGNAL(timeout()), this, SLOT(createSystrayDelayed()));
|
||||
systrayCreator->setSingleShot(true);
|
||||
systrayCreator->start(2000);
|
||||
qDebug("Info: System tray is unavailable, trying again later.");
|
||||
} else {
|
||||
qDebug("Warning: System tray is unavailable.");
|
||||
}
|
||||
} else {
|
||||
createTrayIcon();
|
||||
}
|
||||
} else {
|
||||
// Destroy trayicon
|
||||
delete systrayIcon;
|
||||
delete myTrayIconMenu;
|
||||
}
|
||||
}
|
||||
// General
|
||||
bool new_displaySpeedInTitle = Preferences::speedInTitleBar();
|
||||
if(!new_displaySpeedInTitle && new_displaySpeedInTitle != displaySpeedInTitle) {
|
||||
// Reset title
|
||||
setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent vx.x").arg(QString::fromUtf8(VERSION)));
|
||||
}
|
||||
displaySpeedInTitle = new_displaySpeedInTitle;
|
||||
if(Preferences::isToolbarDisplayed()) {
|
||||
toolBar->setVisible(true);
|
||||
toolBar->layout()->setSpacing(7);
|
||||
} else {
|
||||
toolBar->setVisible(false);
|
||||
}
|
||||
unsigned int new_refreshInterval = Preferences::getRefreshInterval();
|
||||
transferList->setRefreshInterval(new_refreshInterval);
|
||||
|
||||
// Queueing System
|
||||
if(Preferences::isQueueingSystemEnabled()) {
|
||||
if(!configure_session || !BTSession->isQueueingEnabled()) {
|
||||
transferList->hidePriorityColumn(false);
|
||||
actionDecreasePriority->setVisible(true);
|
||||
actionIncreasePriority->setVisible(true);
|
||||
prioSeparator->setVisible(true);
|
||||
prioSeparator2->setVisible(true);
|
||||
toolBar->layout()->setSpacing(7);
|
||||
}
|
||||
} else {
|
||||
if(BTSession->isQueueingEnabled()) {
|
||||
transferList->hidePriorityColumn(true);
|
||||
actionDecreasePriority->setVisible(false);
|
||||
actionIncreasePriority->setVisible(false);
|
||||
prioSeparator->setVisible(false);
|
||||
prioSeparator2->setVisible(false);
|
||||
toolBar->layout()->setSpacing(7);
|
||||
}
|
||||
}
|
||||
|
||||
// RSS
|
||||
if(Preferences::isRSSEnabled()) {
|
||||
displayRSSTab(true);
|
||||
rssWidget->updateRefreshInterval(Preferences::getRSSRefreshInterval());
|
||||
} else {
|
||||
displayRSSTab(false);
|
||||
}
|
||||
|
||||
// Torrent properties
|
||||
properties->reloadPreferences();
|
||||
|
||||
if(configure_session)
|
||||
BTSession->configureSession();
|
||||
|
||||
qDebug("GUI settings loaded");
|
||||
}
|
||||
|
||||
void GUI::addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker) {
|
||||
// Trackers whose authentication was cancelled
|
||||
if(unauthenticated_trackers.indexOf(tracker) < 0) {
|
||||
unauthenticated_trackers << tracker;
|
||||
}
|
||||
}
|
||||
|
||||
// Called when a tracker requires authentication
|
||||
void GUI::trackerAuthenticationRequired(QTorrentHandle& h) {
|
||||
if(unauthenticated_trackers.indexOf(QPair<QTorrentHandle,QString>(h, h.current_tracker())) < 0) {
|
||||
// Tracker login
|
||||
new trackerLogin(this, h);
|
||||
}
|
||||
}
|
||||
|
||||
// Check connection status and display right icon
|
||||
void GUI::updateGUI() {
|
||||
// update global informations
|
||||
if(systrayIcon) {
|
||||
#ifdef Q_WS_WIN
|
||||
// Windows does not support html here
|
||||
QString html =tr("DL speed: %1 KiB/s", "e.g: Download speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadDownloadRate()/1024., 'f', 1)));
|
||||
html += "\n";
|
||||
html += tr("UP speed: %1 KiB/s", "e.g: Upload speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadUploadRate()/1024., 'f', 1)));
|
||||
#else
|
||||
QString html = "<div style='background-color: #678db2; color: #fff;height: 18px; font-weight: bold; margin-bottom: 5px;'>";
|
||||
html += tr("qBittorrent");
|
||||
html += "</div>";
|
||||
html += "<div style='vertical-align: baseline; height: 18px;'>";
|
||||
html += "<img src=':/Icons/skin/download.png'/> "+tr("DL speed: %1 KiB/s", "e.g: Download speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadDownloadRate()/1024., 'f', 1)));
|
||||
html += "</div>";
|
||||
html += "<div style='vertical-align: baseline; height: 18px;'>";
|
||||
html += "<img src=':/Icons/skin/seeding.png'/> "+tr("UP speed: %1 KiB/s", "e.g: Upload speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadUploadRate()/1024., 'f', 1)));
|
||||
html += "</div>";
|
||||
#endif
|
||||
systrayIcon->setToolTip(html); // tray icon
|
||||
}
|
||||
if(displaySpeedInTitle) {
|
||||
setWindowTitle(tr("qBittorrent %1 (Down: %2/s, Up: %3/s)", "%1 is qBittorrent version").arg(QString::fromUtf8(VERSION)).arg(misc::friendlyUnit(BTSession->getSessionStatus().payload_download_rate)).arg(misc::friendlyUnit(BTSession->getSessionStatus().payload_upload_rate)));
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::showNotificationBaloon(QString title, QString msg) const {
|
||||
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
|
||||
if(settings.value(QString::fromUtf8("Preferences/General/NotificationBaloons"), true).toBool()) {
|
||||
#ifdef WITH_LIBNOTIFY
|
||||
if (notify_init ("summary-body")) {
|
||||
NotifyNotification* notification;
|
||||
notification = notify_notification_new (title.toLocal8Bit().data(), msg.toLocal8Bit().data(), "qbittorrent", 0);
|
||||
gboolean success = notify_notification_show (notification, NULL);
|
||||
g_object_unref(G_OBJECT(notification));
|
||||
notify_uninit ();
|
||||
if(success) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if(systrayIcon)
|
||||
systrayIcon->showMessage(title, msg, QSystemTrayIcon::Information, TIME_TRAY_BALLOON);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
* *
|
||||
* Utils *
|
||||
* *
|
||||
*****************************************************/
|
||||
|
||||
void GUI::downloadFromURLList(const QStringList& url_list) {
|
||||
foreach(const QString url, url_list) {
|
||||
if(url.startsWith("magnet:", Qt::CaseInsensitive)) {
|
||||
BTSession->addMagnetUri(url);
|
||||
} else {
|
||||
BTSession->downloadFromUrl(url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
* *
|
||||
* Options *
|
||||
* *
|
||||
*****************************************************/
|
||||
|
||||
void GUI::createSystrayDelayed() {
|
||||
static int timeout = 20;
|
||||
if(QSystemTrayIcon::isSystemTrayAvailable()) {
|
||||
// Ok, systray integration is now supported
|
||||
// Create systray icon
|
||||
createTrayIcon();
|
||||
delete systrayCreator;
|
||||
} else {
|
||||
if(timeout) {
|
||||
// Retry a bit later
|
||||
systrayCreator->start(2000);
|
||||
--timeout;
|
||||
} else {
|
||||
// Timed out, apparently system really does not
|
||||
// support systray icon
|
||||
delete systrayCreator;
|
||||
// Disable it in program preferences to
|
||||
// avoid trying at earch startup
|
||||
Preferences::setSystrayIntegration(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GUI::createTrayIcon() {
|
||||
// Tray icon
|
||||
#ifdef Q_WS_WIN
|
||||
systrayIcon = new QSystemTrayIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent16.png")), this);
|
||||
#endif
|
||||
#ifndef Q_WS_WIN
|
||||
systrayIcon = new QSystemTrayIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent22.png")), this);
|
||||
#endif
|
||||
// Tray icon Menu
|
||||
myTrayIconMenu = new QMenu(this);
|
||||
myTrayIconMenu->addAction(actionOpen);
|
||||
myTrayIconMenu->addAction(actionDownload_from_URL);
|
||||
myTrayIconMenu->addSeparator();
|
||||
myTrayIconMenu->addAction(actionSet_global_download_limit);
|
||||
myTrayIconMenu->addAction(actionSet_global_upload_limit);
|
||||
myTrayIconMenu->addSeparator();
|
||||
myTrayIconMenu->addAction(actionStart_All);
|
||||
myTrayIconMenu->addAction(actionPause_All);
|
||||
myTrayIconMenu->addSeparator();
|
||||
myTrayIconMenu->addAction(actionExit);
|
||||
systrayIcon->setContextMenu(myTrayIconMenu);
|
||||
connect(systrayIcon, SIGNAL(messageClicked()), this, SLOT(balloonClicked()));
|
||||
// End of Icon Menu
|
||||
connect(systrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(toggleVisibility(QSystemTrayIcon::ActivationReason)));
|
||||
systrayIcon->show();
|
||||
}
|
||||
|
||||
// Display Program Options
|
||||
void GUI::on_actionOptions_triggered() {
|
||||
options = new options_imp(this);
|
||||
connect(options, SIGNAL(status_changed()), this, SLOT(optionsSaved()));
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
* *
|
||||
* HTTP Downloader *
|
||||
* *
|
||||
*****************************************************/
|
||||
|
||||
// Display an input dialog to prompt user for
|
||||
// an url
|
||||
void GUI::on_actionDownload_from_URL_triggered() {
|
||||
downloadFromURL *downloadFromURLDialog = new downloadFromURL(this);
|
||||
connect(downloadFromURLDialog, SIGNAL(urlsReadyToBeDownloaded(const QStringList&)), this, SLOT(downloadFromURLList(const QStringList&)));
|
||||
}
|
||||
|
||||
162
src/GUI.h
@@ -1,162 +0,0 @@
|
||||
/*
|
||||
* Bittorrent Client using Qt4 and libtorrent.
|
||||
* Copyright (C) 2006 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 GUI_H
|
||||
#define GUI_H
|
||||
|
||||
#include <QProcess>
|
||||
#include <QSystemTrayIcon>
|
||||
#include <QPointer>
|
||||
#include "ui_mainwindow.h"
|
||||
#include "qtorrenthandle.h"
|
||||
|
||||
enum TabIndex{TAB_TRANSFER, TAB_SEARCH, TAB_RSS};
|
||||
|
||||
class Bittorrent;
|
||||
class QTimer;
|
||||
class downloadFromURL;
|
||||
class SearchEngine;
|
||||
class QLocalServer;
|
||||
class QCloseEvent;
|
||||
class RSSImp;
|
||||
class QShortcut;
|
||||
class about;
|
||||
class options_imp;
|
||||
class QTabWidget;
|
||||
class TransferListWidget;
|
||||
class TransferListFiltersWidget;
|
||||
class QSplitter;
|
||||
class PropertiesWidget;
|
||||
class StatusBar;
|
||||
|
||||
class GUI : public QMainWindow, private Ui::MainWindow{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
// Bittorrent
|
||||
Bittorrent *BTSession;
|
||||
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; // Still needed?
|
||||
// GUI related
|
||||
QTimer *guiUpdater;
|
||||
QTabWidget *tabs;
|
||||
StatusBar *status_bar;
|
||||
QPointer<options_imp> options;
|
||||
QPointer<QSystemTrayIcon> systrayIcon;
|
||||
QPointer<QTimer> systrayCreator;
|
||||
QMenu *myTrayIconMenu;
|
||||
TransferListWidget *transferList;
|
||||
TransferListFiltersWidget *transferListFilters;
|
||||
PropertiesWidget *properties;
|
||||
bool displaySpeedInTitle;
|
||||
bool force_exit;
|
||||
// Keyboard shortcuts
|
||||
QShortcut *switchSearchShortcut;
|
||||
QShortcut *switchSearchShortcut2;
|
||||
QShortcut *switchTransferShortcut;
|
||||
QShortcut *switchRSSShortcut;
|
||||
// Widgets
|
||||
QAction *prioSeparator;
|
||||
QAction *prioSeparator2;
|
||||
QSplitter *hSplitter;
|
||||
QSplitter *vSplitter;
|
||||
// Search
|
||||
SearchEngine *searchEngine;
|
||||
// RSS
|
||||
QPointer<RSSImp> rssWidget;
|
||||
// Misc
|
||||
QLocalServer *localServer;
|
||||
|
||||
protected slots:
|
||||
// GUI related slots
|
||||
void dropEvent(QDropEvent *event);
|
||||
void dragEnterEvent(QDragEnterEvent *event);
|
||||
void toggleVisibility(QSystemTrayIcon::ActivationReason e);
|
||||
void on_actionAbout_triggered();
|
||||
void on_actionCreate_torrent_triggered();
|
||||
void on_actionWebsite_triggered() const;
|
||||
void on_actionBugReport_triggered() const;
|
||||
void on_actionShow_console_triggered();
|
||||
void readParamsOnSocket();
|
||||
void acceptConnection();
|
||||
void balloonClicked();
|
||||
void writeSettings();
|
||||
void readSettings();
|
||||
void on_actionExit_triggered();
|
||||
void createTrayIcon();
|
||||
void fullDiskError(QTorrentHandle& h, QString msg) const;
|
||||
void handleDownloadFromUrlFailure(QString, QString) const;
|
||||
void createSystrayDelayed();
|
||||
void tab_changed(int);
|
||||
// Keyboard shortcuts
|
||||
void createKeyboardShortcuts();
|
||||
void displayTransferTab() const;
|
||||
void displaySearchTab() const;
|
||||
void displayRSSTab() const;
|
||||
// Torrent actions
|
||||
void on_actionSet_global_upload_limit_triggered();
|
||||
void on_actionSet_global_download_limit_triggered();
|
||||
void on_actionDocumentation_triggered() const;
|
||||
void on_actionOpen_triggered();
|
||||
void updateGUI();
|
||||
void loadPreferences(bool configure_session=true);
|
||||
void processParams(const QStringList& params);
|
||||
void addTorrent(QString path);
|
||||
void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker);
|
||||
void processDownloadedFiles(QString path, QString url);
|
||||
void downloadFromURLList(const QStringList& urls);
|
||||
void finishedTorrent(QTorrentHandle& h) const;
|
||||
// Options slots
|
||||
void on_actionOptions_triggered();
|
||||
void optionsSaved();
|
||||
// HTTP slots
|
||||
void on_actionDownload_from_URL_triggered();
|
||||
|
||||
|
||||
public slots:
|
||||
void trackerAuthenticationRequired(QTorrentHandle& h);
|
||||
void setTabText(int index, QString text) const;
|
||||
void showNotificationBaloon(QString title, QString msg) const;
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent *);
|
||||
void showEvent(QShowEvent *);
|
||||
bool event(QEvent * event);
|
||||
void displayRSSTab(bool enable);
|
||||
|
||||
public:
|
||||
// Construct / Destruct
|
||||
GUI(QWidget *parent=0, QStringList torrentCmdLine=QStringList());
|
||||
~GUI();
|
||||
// Methods
|
||||
int getCurrentTabIndex() const;
|
||||
QPoint screenCenter() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
BIN
src/Icons/3-state-checkbox.gif
Normal file
|
After Width: | Height: | Size: 322 B |
BIN
src/Icons/L.gif
Normal file
|
After Width: | Height: | Size: 66 B |
|
Before Width: | Height: | Size: 722 B |
BIN
src/Icons/flags/ad.png
Executable file
|
After Width: | Height: | Size: 643 B |
BIN
src/Icons/flags/ae.png
Executable file
|
After Width: | Height: | Size: 408 B |
BIN
src/Icons/flags/af.png
Executable file
|
After Width: | Height: | Size: 604 B |
BIN
src/Icons/flags/ag.png
Executable file
|
After Width: | Height: | Size: 591 B |
BIN
src/Icons/flags/ai.png
Executable file
|
After Width: | Height: | Size: 643 B |
BIN
src/Icons/flags/al.png
Executable file
|
After Width: | Height: | Size: 600 B |
|
Before Width: | Height: | Size: 473 B |
BIN
src/Icons/flags/am.png
Executable file
|
After Width: | Height: | Size: 497 B |
BIN
src/Icons/flags/an.png
Executable file
|
After Width: | Height: | Size: 488 B |
BIN
src/Icons/flags/ao.png
Normal file
|
After Width: | Height: | Size: 428 B |
BIN
src/Icons/flags/ar.png
Executable file
|
After Width: | Height: | Size: 506 B |
|
Before Width: | Height: | Size: 308 B |
BIN
src/Icons/flags/as.png
Executable file
|
After Width: | Height: | Size: 647 B |
BIN
src/Icons/flags/at.png
Executable file
|
After Width: | Height: | Size: 403 B |
BIN
src/Icons/flags/au.png
Executable file
|
After Width: | Height: | Size: 673 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 285 B |
BIN
src/Icons/flags/aw.png
Executable file
|
After Width: | Height: | Size: 524 B |
BIN
src/Icons/flags/ax.png
Executable file
|
After Width: | Height: | Size: 663 B |
BIN
src/Icons/flags/az.png
Executable file
|
After Width: | Height: | Size: 589 B |
BIN
src/Icons/flags/ba.png
Executable file
|
After Width: | Height: | Size: 593 B |
BIN
src/Icons/flags/bb.png
Executable file
|
After Width: | Height: | Size: 585 B |
BIN
src/Icons/flags/bd.png
Executable file
|
After Width: | Height: | Size: 504 B |
BIN
src/Icons/flags/be.png
Executable file
|
After Width: | Height: | Size: 449 B |
|
Before Width: | Height: | Size: 373 B |
|
Before Width: | Height: | Size: 173 B |
BIN
src/Icons/flags/bf.png
Executable file
|
After Width: | Height: | Size: 497 B |
BIN
src/Icons/flags/bg.png
Executable file
|
After Width: | Height: | Size: 462 B |
BIN
src/Icons/flags/bh.png
Executable file
|
After Width: | Height: | Size: 457 B |
BIN
src/Icons/flags/bi.png
Executable file
|
After Width: | Height: | Size: 675 B |
BIN
src/Icons/flags/bj.png
Executable file
|
After Width: | Height: | Size: 486 B |
BIN
src/Icons/flags/bm.png
Executable file
|
After Width: | Height: | Size: 611 B |
BIN
src/Icons/flags/bn.png
Executable file
|
After Width: | Height: | Size: 639 B |
BIN
src/Icons/flags/bo.png
Executable file
|
After Width: | Height: | Size: 500 B |
|
Before Width: | Height: | Size: 583 B |
BIN
src/Icons/flags/br.png
Executable file
|
After Width: | Height: | Size: 593 B |
|
Before Width: | Height: | Size: 799 B |
BIN
src/Icons/flags/bs.png
Executable file
|
After Width: | Height: | Size: 526 B |
BIN
src/Icons/flags/bt.png
Executable file
|
After Width: | Height: | Size: 631 B |
|
Before Width: | Height: | Size: 200 B |
BIN
src/Icons/flags/bv.png
Executable file
|
After Width: | Height: | Size: 512 B |
BIN
src/Icons/flags/bw.png
Executable file
|
After Width: | Height: | Size: 443 B |
BIN
src/Icons/flags/by.png
Executable file
|
After Width: | Height: | Size: 514 B |
BIN
src/Icons/flags/bz.png
Executable file
|
After Width: | Height: | Size: 600 B |
BIN
src/Icons/flags/ca.png
Executable file
|
After Width: | Height: | Size: 628 B |
|
Before Width: | Height: | Size: 686 B |
BIN
src/Icons/flags/cc.png
Executable file
|
After Width: | Height: | Size: 625 B |
BIN
src/Icons/flags/cd.png
Normal file
|
After Width: | Height: | Size: 528 B |
BIN
src/Icons/flags/cf.png
Executable file
|
After Width: | Height: | Size: 614 B |
BIN
src/Icons/flags/cg.png
Executable file
|
After Width: | Height: | Size: 521 B |
BIN
src/Icons/flags/ch.png
Executable file
|
After Width: | Height: | Size: 367 B |
|
Before Width: | Height: | Size: 329 B |
BIN
src/Icons/flags/ci.png
Executable file
|
After Width: | Height: | Size: 453 B |
BIN
src/Icons/flags/ck.png
Executable file
|
After Width: | Height: | Size: 586 B |
BIN
src/Icons/flags/cl.png
Executable file
|
After Width: | Height: | Size: 450 B |
BIN
src/Icons/flags/cm.png
Executable file
|
After Width: | Height: | Size: 525 B |
BIN
src/Icons/flags/cn.png
Executable file
|
After Width: | Height: | Size: 472 B |
BIN
src/Icons/flags/co.png
Executable file
|
After Width: | Height: | Size: 483 B |
|
Before Width: | Height: | Size: 203 B |
BIN
src/Icons/flags/cr.png
Executable file
|
After Width: | Height: | Size: 477 B |
|
Before Width: | Height: | Size: 479 B |
BIN
src/Icons/flags/cs.png
Executable file
|
After Width: | Height: | Size: 423 B |
BIN
src/Icons/flags/cu.png
Executable file
|
After Width: | Height: | Size: 563 B |
BIN
src/Icons/flags/cv.png
Executable file
|
After Width: | Height: | Size: 529 B |
BIN
src/Icons/flags/cx.png
Executable file
|
After Width: | Height: | Size: 608 B |
BIN
src/Icons/flags/cy.png
Executable file
|
After Width: | Height: | Size: 428 B |
BIN
src/Icons/flags/cz.png
Executable file
|
After Width: | Height: | Size: 476 B |