Compare commits
1135 Commits
release-1.
...
release-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42574242ef | ||
|
|
d5c174a6f8 | ||
|
|
173999e504 | ||
|
|
1ed928bc39 | ||
|
|
b85d51ba79 | ||
|
|
779b53722b | ||
|
|
76780c4c46 | ||
|
|
da74f24a71 | ||
|
|
01c56865db | ||
|
|
b541c9fa4c | ||
|
|
aac0fbcbe4 | ||
|
|
b315551edd | ||
|
|
58a885cb87 | ||
|
|
d19282285c | ||
|
|
32a8dec0e7 | ||
|
|
e0d8ca39a5 | ||
|
|
2dd5bccd49 | ||
|
|
ec3169c9b0 | ||
|
|
18d0283463 | ||
|
|
7bfd7e9cda | ||
|
|
459bb8c51d | ||
|
|
9fe807b6f1 | ||
|
|
9159a9f25d | ||
|
|
84f00bf3f6 | ||
|
|
8ea8f8a9f7 | ||
|
|
d3687fd863 | ||
|
|
d1a549a6cc | ||
|
|
c1552ff254 | ||
|
|
54a396bc6e | ||
|
|
ed732bca63 | ||
|
|
02a4464e8f | ||
|
|
7f97df4462 | ||
|
|
9d20af02a2 | ||
|
|
cbaef050f0 | ||
|
|
148139c2c4 | ||
|
|
793f8a103d | ||
|
|
ffa48b64ac | ||
|
|
59a8e651f9 | ||
|
|
fb9f2a01b5 | ||
|
|
944e25a5d8 | ||
|
|
ad597c72d2 | ||
|
|
abbbf1e562 | ||
|
|
d2dd29c35a | ||
|
|
906f2bab1e | ||
|
|
bb6468005d | ||
|
|
a2423e97eb | ||
|
|
ed1d75ecb1 | ||
|
|
1e4200345a | ||
|
|
be11f4e039 | ||
|
|
22ec528cdf | ||
|
|
ebf341a6de | ||
|
|
68ba6322e1 | ||
|
|
968a5f3017 | ||
|
|
8df1708491 | ||
|
|
da51ce1b71 | ||
|
|
95a6de9b00 | ||
|
|
269bbdf01d | ||
|
|
df03b042d6 | ||
|
|
3ec118d59b | ||
|
|
bce575ee68 | ||
|
|
83da56b0eb | ||
|
|
fa2891c225 | ||
|
|
c4bf42524c | ||
|
|
a096105f18 | ||
|
|
51f842aaef | ||
|
|
76c4466fb6 | ||
|
|
facd02a7ec | ||
|
|
ed8da2ef66 | ||
|
|
998352f9f1 | ||
|
|
8c1a135d16 | ||
|
|
b976d39207 | ||
|
|
f0a18ec1f5 | ||
|
|
f9a5afe446 | ||
|
|
b13c7abca0 | ||
|
|
1f104f62f5 | ||
|
|
f8f7729e77 | ||
|
|
eca262f5f4 | ||
|
|
df5f5a943b | ||
|
|
497cb07852 | ||
|
|
10ab8f107c | ||
|
|
3a6ff19418 | ||
|
|
ab317a3a62 | ||
|
|
617724c2b1 | ||
|
|
422c03b4ec | ||
|
|
4af05dc63c | ||
|
|
ac92287b43 | ||
|
|
c7634b3828 | ||
|
|
5d1d26b285 | ||
|
|
644fea69a1 | ||
|
|
4dc8959f67 | ||
|
|
63be5ffc74 | ||
|
|
c5a9e27cb3 | ||
|
|
ecf48b3a7b | ||
|
|
63e5339690 | ||
|
|
d8c27ac8c4 | ||
|
|
925597c43a | ||
|
|
ba8fd62900 | ||
|
|
3f61e176f0 | ||
|
|
542338972a | ||
|
|
fe91599eb4 | ||
|
|
d9817795ed | ||
|
|
6ede368f63 | ||
|
|
6885f46f4b | ||
|
|
9323660c79 | ||
|
|
88b77a63ed | ||
|
|
4d1ef40f6e | ||
|
|
9a68e0cc25 | ||
|
|
396427e3b6 | ||
|
|
e460f1c365 | ||
|
|
b9531c8245 | ||
|
|
27aff04f11 | ||
|
|
08fe5814c5 | ||
|
|
5af8b7c0e2 | ||
|
|
c1acbda38f | ||
|
|
afa5213c94 | ||
|
|
17b8ba27b3 | ||
|
|
3f9b74430a | ||
|
|
efed943366 | ||
|
|
1784c5cecb | ||
|
|
62fad5df87 | ||
|
|
6b04005d08 | ||
|
|
4908458729 | ||
|
|
9ada7c809b | ||
|
|
3c6635cdbe | ||
|
|
90207020f2 | ||
|
|
d22d6468c7 | ||
|
|
893c5e6784 | ||
|
|
77ded75613 | ||
|
|
ce31bef2cf | ||
|
|
45e56c02ee | ||
|
|
e1725e8001 | ||
|
|
d22e932ef7 | ||
|
|
d99dc65b19 | ||
|
|
ae10bc9270 | ||
|
|
3e56cf96a3 | ||
|
|
b6dc5f9675 | ||
|
|
d79cd07d50 | ||
|
|
9a16a9d11b | ||
|
|
52ac94cc73 | ||
|
|
672a83cfc4 | ||
|
|
5d33e3033b | ||
|
|
80a721fd36 | ||
|
|
058430d2cd | ||
|
|
d227e744d9 | ||
|
|
17f712e3e0 | ||
|
|
507b9b149e | ||
|
|
c28217f8fa | ||
|
|
d55553c53f | ||
|
|
01f38b05eb | ||
|
|
91efa0e2d4 | ||
|
|
b80843c602 | ||
|
|
9fa0ff78bc | ||
|
|
5d566bba86 | ||
|
|
5ef888d142 | ||
|
|
92b04b66c7 | ||
|
|
f15973f2c8 | ||
|
|
c075016b51 | ||
|
|
9708b335d8 | ||
|
|
950aa497c6 | ||
|
|
fe62efa145 | ||
|
|
cc2da45c2d | ||
|
|
c212d8beff | ||
|
|
93f3d0b687 | ||
|
|
b88d0e87d9 | ||
|
|
afaf40eee0 | ||
|
|
236c0da563 | ||
|
|
c48a3b55d6 | ||
|
|
6f69ab2b6d | ||
|
|
b2a0ddb9b1 | ||
|
|
aff7824b8d | ||
|
|
6206befbec | ||
|
|
ac2473da6d | ||
|
|
11fd99e2de | ||
|
|
d42ab6120e | ||
|
|
7c1d3dea86 | ||
|
|
e7f6ae3110 | ||
|
|
1c0bc205f0 | ||
|
|
aeb2c06e0f | ||
|
|
d4524993ee | ||
|
|
bf77b186c1 | ||
|
|
d1072afb89 | ||
|
|
a9b49ea3e0 | ||
|
|
33d77ccf39 | ||
|
|
11a41a1652 | ||
|
|
f04b19ddfa | ||
|
|
e35d100769 | ||
|
|
ce6f665a7b | ||
|
|
3958c990a4 | ||
|
|
30b5daaa2a | ||
|
|
f63199f7b7 | ||
|
|
4edab29bfe | ||
|
|
14e94c8971 | ||
|
|
31ca3c1334 | ||
|
|
0c09183f89 | ||
|
|
3eeeb73af4 | ||
|
|
cad6228ae0 | ||
|
|
cb27d530c0 | ||
|
|
bc52863aec | ||
|
|
68092f3b5c | ||
|
|
8650b20904 | ||
|
|
a83744289f | ||
|
|
34ba69e319 | ||
|
|
74f0737903 | ||
|
|
b1bbbd79c4 | ||
|
|
87f93a7a1d | ||
|
|
e187426dd5 | ||
|
|
13e22aef51 | ||
|
|
08710ed822 | ||
|
|
5fc4ff22d9 | ||
|
|
8b41d1973c | ||
|
|
c52e0cf841 | ||
|
|
2f4d27b422 | ||
|
|
508c765991 | ||
|
|
f9399714cc | ||
|
|
d25128e0b3 | ||
|
|
072200c5f9 | ||
|
|
72d82af147 | ||
|
|
581efd0afd | ||
|
|
8b78096366 | ||
|
|
573a18c20f | ||
|
|
b460f67cc4 | ||
|
|
823da52d18 | ||
|
|
c55666996c | ||
|
|
690215e2b0 | ||
|
|
8fe448d35f | ||
|
|
5544f2a138 | ||
|
|
c1d3f719df | ||
|
|
f5fc1884b2 | ||
|
|
002faac042 | ||
|
|
03552c9a1f | ||
|
|
d267d65e57 | ||
|
|
cdce77962a | ||
|
|
0c617f0a03 | ||
|
|
47d545633d | ||
|
|
fb6b40ccd1 | ||
|
|
ac021aaecb | ||
|
|
a4cfc77531 | ||
|
|
480d1b18db | ||
|
|
3827a66a3a | ||
|
|
eb3d7f31e8 | ||
|
|
62f57862e5 | ||
|
|
70c62f6294 | ||
|
|
d6e1dc9020 | ||
|
|
46f081d888 | ||
|
|
ef4c320af7 | ||
|
|
6673273830 | ||
|
|
154673a99b | ||
|
|
62604e32c0 | ||
|
|
873221ec14 | ||
|
|
e645133baf | ||
|
|
8c1851c0bd | ||
|
|
d15a177027 | ||
|
|
5d427d2acf | ||
|
|
aa0c2e611f | ||
|
|
332a4121c8 | ||
|
|
843168bb62 | ||
|
|
4ee47ce2b8 | ||
|
|
262b88930e | ||
|
|
d1646c169d | ||
|
|
c6a9ec7c6f | ||
|
|
ff2fef0dc1 | ||
|
|
b35cc2c9e4 | ||
|
|
98223e54e8 | ||
|
|
e36e500045 | ||
|
|
e2b8aeafa6 | ||
|
|
484a75ad64 | ||
|
|
5a88c1ad46 | ||
|
|
e8fba3e630 | ||
|
|
81412584e1 | ||
|
|
1b82dd315b | ||
|
|
ccdb2a82c3 | ||
|
|
8ada8d33c8 | ||
|
|
ac279979fb | ||
|
|
d5e2905ead | ||
|
|
1b0d2a7d55 | ||
|
|
da080a8979 | ||
|
|
41e18fd245 | ||
|
|
10c40c6485 | ||
|
|
e93fab40fe | ||
|
|
b64919234a | ||
|
|
fb4700907d | ||
|
|
d3c59f0814 | ||
|
|
cedc87a703 | ||
|
|
54f2e66464 | ||
|
|
8160449964 | ||
|
|
e467fd8fab | ||
|
|
5da2e6a9ee | ||
|
|
0cb5993f66 | ||
|
|
54d7c6dc54 | ||
|
|
c30ec7bb6e | ||
|
|
0bc2e9aeeb | ||
|
|
95469756d1 | ||
|
|
aa65cf9547 | ||
|
|
623933e2aa | ||
|
|
db92ffaf92 | ||
|
|
79e139268a | ||
|
|
6c796ff302 | ||
|
|
4ca2d060ea | ||
|
|
b9387cf4c4 | ||
|
|
ff5524475f | ||
|
|
31374d8d30 | ||
|
|
2b5522e165 | ||
|
|
3987d0b5ef | ||
|
|
7c84551150 | ||
|
|
47fc4679d4 | ||
|
|
bf6d7534d5 | ||
|
|
5ffcf5a9dc | ||
|
|
490ef19e64 | ||
|
|
94f3323270 | ||
|
|
bb4dc84824 | ||
|
|
660f478a70 | ||
|
|
f24749bbf8 | ||
|
|
04a3fcb0ed | ||
|
|
9fdc6a2acd | ||
|
|
4e8eaafd53 | ||
|
|
e30268cf3b | ||
|
|
eab216e5a8 | ||
|
|
7578e7404b | ||
|
|
7093c3576b | ||
|
|
c3281a1e8f | ||
|
|
561033d7eb | ||
|
|
f588882a96 | ||
|
|
6b0f855752 | ||
|
|
881c3be58c | ||
|
|
78346a881c | ||
|
|
b3ce32b405 | ||
|
|
3d790d131c | ||
|
|
9e9e6f028c | ||
|
|
cb32ed97a8 | ||
|
|
e9350e66f0 | ||
|
|
d843366c0d | ||
|
|
1b6e282938 | ||
|
|
aeb12e53ee | ||
|
|
31180bb00c | ||
|
|
36748b6729 | ||
|
|
d9cb73634d | ||
|
|
c5c09b09ee | ||
|
|
12106c308e | ||
|
|
f7f4d1333b | ||
|
|
1c08bf054a | ||
|
|
4824637681 | ||
|
|
5962ef79cb | ||
|
|
3762c37517 | ||
|
|
e97b805365 | ||
|
|
6dbd1daa5c | ||
|
|
59f21d592e | ||
|
|
946e2778f8 | ||
|
|
9fbe2ff6c4 | ||
|
|
a4383d1b7f | ||
|
|
131dda2617 | ||
|
|
51ebfadd85 | ||
|
|
0a1ae18412 | ||
|
|
cd50c3299e | ||
|
|
f7c196dbcf | ||
|
|
8260159ca4 | ||
|
|
d8c6e2bcc6 | ||
|
|
bc2a4b622b | ||
|
|
daef9ece75 | ||
|
|
a6f31c7950 | ||
|
|
0e93e8dc9d | ||
|
|
3fa98705bc | ||
|
|
4493752d2f | ||
|
|
6199d6d543 | ||
|
|
f9c8b6a66e | ||
|
|
743d54a745 | ||
|
|
5d09f89a0f | ||
|
|
ea2f5df95f | ||
|
|
a03c1d3d50 | ||
|
|
5fac6ef3b2 | ||
|
|
81658b9648 | ||
|
|
2e2e506162 | ||
|
|
d006327f14 | ||
|
|
21de03ffd4 | ||
|
|
308bd65c8f | ||
|
|
6afb82e2e2 | ||
|
|
5f8f7bdc17 | ||
|
|
611e33bf80 | ||
|
|
998b161696 | ||
|
|
f9da85ecfe | ||
|
|
d86cb62dc0 | ||
|
|
15427619bd | ||
|
|
9bc90fc7b2 | ||
|
|
6ecde51e45 | ||
|
|
bf727c11d3 | ||
|
|
6a028c9efd | ||
|
|
92a9d04568 | ||
|
|
a7da280f57 | ||
|
|
4a33917e89 | ||
|
|
8686ef0892 | ||
|
|
cee9ece4c7 | ||
|
|
c756412ee6 | ||
|
|
75e5a7e3d4 | ||
|
|
707e87f5b8 | ||
|
|
6b8521355f | ||
|
|
a0beccc04b | ||
|
|
6b6181a3ee | ||
|
|
2dddd2b24b | ||
|
|
9f9f6abec1 | ||
|
|
7caed10dc0 | ||
|
|
806eee9404 | ||
|
|
52638a2891 | ||
|
|
33324c190e | ||
|
|
8d59f3c4e1 | ||
|
|
e6465d784d | ||
|
|
31eb902494 | ||
|
|
c818c2dae6 | ||
|
|
23d1aa7691 | ||
|
|
bf7841cdb9 | ||
|
|
d6e90883cb | ||
|
|
ff6e9c0f9b | ||
|
|
be240f72ab | ||
|
|
e3a29d8ebf | ||
|
|
7792b4f849 | ||
|
|
53171c81e1 | ||
|
|
9b4cfa4a3d | ||
|
|
e4be70edec | ||
|
|
7f12bbb783 | ||
|
|
5d1ed7a564 | ||
|
|
92dd4c8c5b | ||
|
|
bc308741b7 | ||
|
|
66590bfa4a | ||
|
|
7fc0b02259 | ||
|
|
061a9c7ecf | ||
|
|
e97a6f5f08 | ||
|
|
fe3a6b8b57 | ||
|
|
92e569fc36 | ||
|
|
edfd93496e | ||
|
|
d8e4732627 | ||
|
|
966367aff6 | ||
|
|
1cc6086468 | ||
|
|
b00eeef04d | ||
|
|
e423285d88 | ||
|
|
74d8a00854 | ||
|
|
c65bf303cf | ||
|
|
24470a7cc3 | ||
|
|
edc25ba52f | ||
|
|
922112fc5b | ||
|
|
b7a26c6676 | ||
|
|
038c326f81 | ||
|
|
148d175ab0 | ||
|
|
3dd9ebc61d | ||
|
|
0485864d38 | ||
|
|
a2792efa72 | ||
|
|
00a17b9447 | ||
|
|
15df7029b9 | ||
|
|
2556346dda | ||
|
|
0433254ad8 | ||
|
|
741d95b33e | ||
|
|
55ff924e60 | ||
|
|
37158a32ad | ||
|
|
095dfe5b9e | ||
|
|
a9686e8c4b | ||
|
|
e2d801d920 | ||
|
|
194eb3ba6e | ||
|
|
8792637634 | ||
|
|
63ad2def91 | ||
|
|
f790b80aa3 | ||
|
|
ab78e5b438 | ||
|
|
05948e2edf | ||
|
|
c9c4f7001a | ||
|
|
6cd185d0d5 | ||
|
|
063219cbe7 | ||
|
|
e324f3792b | ||
|
|
0267ecc342 | ||
|
|
e53c7aaea6 | ||
|
|
3e90e56266 | ||
|
|
1c1b8acd67 | ||
|
|
811846e5fa | ||
|
|
3ba28885b9 | ||
|
|
8ed1c57c29 | ||
|
|
af5d24c5bc | ||
|
|
9dcd572d60 | ||
|
|
e024a3ff35 | ||
|
|
37342e0f0c | ||
|
|
bfbbc1f497 | ||
|
|
5d31dcdb15 | ||
|
|
6f89b1f131 | ||
|
|
9d35bda43c | ||
|
|
e780d83fd0 | ||
|
|
7a59d5e47c | ||
|
|
f2ea524be9 | ||
|
|
a33094519c | ||
|
|
e313ae808f | ||
|
|
dc9802fe1e | ||
|
|
64f1d306f4 | ||
|
|
f3af4867fd | ||
|
|
4fe22dbc57 | ||
|
|
1d9b524b77 | ||
|
|
63761afd0a | ||
|
|
8da148ffa1 | ||
|
|
e2dc2207d8 | ||
|
|
6e87d6655a | ||
|
|
d72485a955 | ||
|
|
04c6760892 | ||
|
|
382f3e3c86 | ||
|
|
c1378450fc | ||
|
|
4e10a8dbf7 | ||
|
|
4f7b4c2a55 | ||
|
|
f98f076335 | ||
|
|
b148a93a8f | ||
|
|
37cf23fe33 | ||
|
|
87f43123c6 | ||
|
|
11dd2d81b8 | ||
|
|
d18d07efed | ||
|
|
518a120c07 | ||
|
|
290bc8b7a6 | ||
|
|
0ede09efb5 | ||
|
|
15de12f6dd | ||
|
|
ef95d6df81 | ||
|
|
f382ba4fd0 | ||
|
|
01d504d992 | ||
|
|
cdd894a6a1 | ||
|
|
d7b2d3497f | ||
|
|
5dbd5c4326 | ||
|
|
9a14c4c599 | ||
|
|
3fa14cd47f | ||
|
|
941d9b9bd9 | ||
|
|
3d88b7b05c | ||
|
|
8d39e2a776 | ||
|
|
4a1c8a7279 | ||
|
|
b8d8862562 | ||
|
|
40e9105ee5 | ||
|
|
0984b8b8e1 | ||
|
|
3dd7dcc58f | ||
|
|
6ba5df3ec8 | ||
|
|
1560b4ca3b | ||
|
|
68d8a9ed47 | ||
|
|
ca00f3084d | ||
|
|
39c16b20ae | ||
|
|
666d4622b9 | ||
|
|
27388643b1 | ||
|
|
90d17d16a4 | ||
|
|
df0f01cd71 | ||
|
|
480d00d747 | ||
|
|
a0923741a4 | ||
|
|
8e2efc2950 | ||
|
|
91dee6058e | ||
|
|
f5c1343722 | ||
|
|
d4d0a08390 | ||
|
|
d02aca7323 | ||
|
|
fd81567ecd | ||
|
|
8e5f5b5d65 | ||
|
|
215d561b82 | ||
|
|
dc18780a97 | ||
|
|
06fb19e8be | ||
|
|
3550e31871 | ||
|
|
46c6c4fc9a | ||
|
|
e126de8ff5 | ||
|
|
f2d2e70967 | ||
|
|
48b14d1066 | ||
|
|
725700420c | ||
|
|
480df1f5dc | ||
|
|
2fa43dd973 | ||
|
|
b9f1586068 | ||
|
|
07dbe388f4 | ||
|
|
b2af40c95b | ||
|
|
05569a5011 | ||
|
|
73dbce45b2 | ||
|
|
fdaeafc701 | ||
|
|
9ca4e2f1f6 | ||
|
|
2b53aa7e81 | ||
|
|
8e79e918c5 | ||
|
|
687842a949 | ||
|
|
645ee86860 | ||
|
|
f50762dfa8 | ||
|
|
7e252d3fbd | ||
|
|
2dc9f10bf4 | ||
|
|
bca03706a0 | ||
|
|
e7663e7b6b | ||
|
|
2b0e05b453 | ||
|
|
4d67170d3e | ||
|
|
538c028f8a | ||
|
|
2cbbd6ef50 | ||
|
|
955d8069e2 | ||
|
|
25d998f1b5 | ||
|
|
462f6c41cd | ||
|
|
298f1e6a9a | ||
|
|
2926745102 | ||
|
|
c6003c7403 | ||
|
|
66e5a6672a | ||
|
|
c35500dd29 | ||
|
|
f80bd42361 | ||
|
|
0b9c05d41b | ||
|
|
2477dc1fc0 | ||
|
|
706362333d | ||
|
|
6fcf25af52 | ||
|
|
c8e8306e0a | ||
|
|
e429126934 | ||
|
|
7e71de558a | ||
|
|
09d8a4797d | ||
|
|
1bcb8b1ed8 | ||
|
|
d132d50f4d | ||
|
|
e619b6977a | ||
|
|
2742a54d6e | ||
|
|
360a327d7d | ||
|
|
b659303419 | ||
|
|
43108712be | ||
|
|
a038616fe5 | ||
|
|
81e5c295b6 | ||
|
|
08d079a563 | ||
|
|
454c8dc2bc | ||
|
|
337fc72ee6 | ||
|
|
b1e9c1ccf5 | ||
|
|
64806cb199 | ||
|
|
8e8e7cd3e7 | ||
|
|
27a18e01e2 | ||
|
|
fc9e7d74a3 | ||
|
|
037a1875f9 | ||
|
|
66baa4d3dc | ||
|
|
9e522a8a6c | ||
|
|
cfa4edd140 | ||
|
|
9e9134cd44 | ||
|
|
83a798b07e | ||
|
|
baee85684c | ||
|
|
88afb0f0e7 | ||
|
|
6f212f18f5 | ||
|
|
f04e600340 | ||
|
|
5140886567 | ||
|
|
0aa59694fd | ||
|
|
66d31b5ca1 | ||
|
|
47135932a4 | ||
|
|
40d0e44f15 | ||
|
|
16c30a2f10 | ||
|
|
7f2639fcbd | ||
|
|
8ad987a672 | ||
|
|
b24194068a | ||
|
|
f4e9b00ce3 | ||
|
|
5c0a24d58b | ||
|
|
c4aa23c86b | ||
|
|
96911a2c48 | ||
|
|
85abb80f43 | ||
|
|
2372f434cf | ||
|
|
ee6bc3c2e9 | ||
|
|
b6c6637c3b | ||
|
|
d358987316 | ||
|
|
6f28711f9e | ||
|
|
7b4b568859 | ||
|
|
c3aa2906bb | ||
|
|
9509bbaed4 | ||
|
|
b7c7245fb5 | ||
|
|
0153b03160 | ||
|
|
ca83fdecff | ||
|
|
bca898d8b6 | ||
|
|
c877c9c412 | ||
|
|
4dfd1f229b | ||
|
|
0d63f46035 | ||
|
|
106f7cdd32 | ||
|
|
0308825c11 | ||
|
|
8c21ef5c04 | ||
|
|
53c2fe4a60 | ||
|
|
64fef21a86 | ||
|
|
f6f4b5f219 | ||
|
|
f809b8a014 | ||
|
|
cf8dbf22f8 | ||
|
|
00d9f7c36b | ||
|
|
9a314db530 | ||
|
|
7db2ffc09f | ||
|
|
9a02c12ec9 | ||
|
|
2a77de686c | ||
|
|
a79b294885 | ||
|
|
13c670b96d | ||
|
|
65c4da6f0e | ||
|
|
bf9dc052d3 | ||
|
|
0ea6ee32be | ||
|
|
019bd476db | ||
|
|
baf5cb31af | ||
|
|
fc3c123f5b | ||
|
|
7dfdebd593 | ||
|
|
9835af4962 | ||
|
|
04cbd91f04 | ||
|
|
66db20cb47 | ||
|
|
2e0707bc0c | ||
|
|
e9c12cbf78 | ||
|
|
031de096f5 | ||
|
|
b85ed8ff38 | ||
|
|
00c5127ba1 | ||
|
|
714bf4f2ab | ||
|
|
c2244f746e | ||
|
|
8214d87ce5 | ||
|
|
e8454596ea | ||
|
|
1cc039c147 | ||
|
|
fe455970f1 | ||
|
|
36871a34ad | ||
|
|
4ea6ca75ca | ||
|
|
9e46c6c047 | ||
|
|
a2e9210665 | ||
|
|
aaf79add0b | ||
|
|
55743021e8 | ||
|
|
a8d627e1df | ||
|
|
eead11427f | ||
|
|
bec1388ba5 | ||
|
|
1542ff98bc | ||
|
|
0e9fd2dc3f | ||
|
|
cd618150b0 | ||
|
|
a2bcfa9192 | ||
|
|
1421f1450c | ||
|
|
288300d264 | ||
|
|
5e41a64c8b | ||
|
|
f4502367f3 | ||
|
|
273526b414 | ||
|
|
5b7b4b2cf3 | ||
|
|
ee99df0ba9 | ||
|
|
aec32db565 | ||
|
|
3894452840 | ||
|
|
54bfb7cda9 | ||
|
|
aa18f19ab7 | ||
|
|
3ae783e9cb | ||
|
|
83cac18690 | ||
|
|
3b09203937 | ||
|
|
a12621e1c0 | ||
|
|
60c3ccac7f | ||
|
|
1fbf7d42a1 | ||
|
|
4b73172105 | ||
|
|
ada5d2665b | ||
|
|
f1ca41a5c5 | ||
|
|
17e0700a52 | ||
|
|
cc77b2f578 | ||
|
|
85463e3910 | ||
|
|
7bd0dff802 | ||
|
|
4bc043146d | ||
|
|
fd78e0b5ce | ||
|
|
8565f1e61e | ||
|
|
4c6d6a35f3 | ||
|
|
fc79b7dc56 | ||
|
|
da11488ba1 | ||
|
|
968c3e1c3e | ||
|
|
68e30de763 | ||
|
|
573f00c66c | ||
|
|
ae81dbe088 | ||
|
|
2edbe66d91 | ||
|
|
f9f912906e | ||
|
|
7b4eee7a7d | ||
|
|
e799ac57ed | ||
|
|
30c93b9a4a | ||
|
|
03dc617874 | ||
|
|
bc29577a7b | ||
|
|
5509e94778 | ||
|
|
89330e11de | ||
|
|
c016c4bf66 | ||
|
|
3f1081b621 | ||
|
|
e3ae03c8a8 | ||
|
|
fbe292d06e | ||
|
|
1d294e43f1 | ||
|
|
d883ef27be | ||
|
|
be934837e5 | ||
|
|
956f97f6d6 | ||
|
|
de38ca3e23 | ||
|
|
1efaea46e3 | ||
|
|
2694a0947f | ||
|
|
f61d9d23f5 | ||
|
|
60dda258b3 | ||
|
|
c79a4a746f | ||
|
|
942b579d8e | ||
|
|
93bc6dca95 | ||
|
|
f36052351c | ||
|
|
d40c646561 | ||
|
|
9412ced722 | ||
|
|
7037b53ff8 | ||
|
|
adc72fb9a6 | ||
|
|
f0ca99ed6c | ||
|
|
e443aa75b7 | ||
|
|
282d0a4af6 | ||
|
|
25adf6b061 | ||
|
|
88f0ffe86d | ||
|
|
c786c42bb1 | ||
|
|
36bc2e96ba | ||
|
|
f9bf485ed7 | ||
|
|
c18103539c | ||
|
|
727f59f73f | ||
|
|
5d2d1dfa94 | ||
|
|
cf694d14f3 | ||
|
|
ec24fe2f49 | ||
|
|
a0b4e54410 | ||
|
|
c97bce4d61 | ||
|
|
afbfe1a96d | ||
|
|
2651ec5f0b | ||
|
|
330905da5e | ||
|
|
4c6359276c | ||
|
|
ff1fc527e0 | ||
|
|
d79cb6b66e | ||
|
|
0ac2554060 | ||
|
|
1d31e049a4 | ||
|
|
d5a4794610 | ||
|
|
29886acc01 | ||
|
|
f1ed7f06b9 | ||
|
|
a848538d66 | ||
|
|
b58046b1fc | ||
|
|
fe95e90e05 | ||
|
|
1544300616 | ||
|
|
028041f874 | ||
|
|
81f2d7ee4a | ||
|
|
66874fbd2f | ||
|
|
f47b3be0be | ||
|
|
87eee7029d | ||
|
|
713c80451e | ||
|
|
60889cac79 | ||
|
|
d398679c7e | ||
|
|
2e5330e54b | ||
|
|
1499138b9b | ||
|
|
2433a87445 | ||
|
|
d0de11909f | ||
|
|
3f5340523f | ||
|
|
cc5015773b | ||
|
|
cd260198f9 | ||
|
|
71e3061c18 | ||
|
|
6369401150 | ||
|
|
fa05441e74 | ||
|
|
81aac9ebcc | ||
|
|
7a1af536b6 | ||
|
|
45efcfce13 | ||
|
|
cddc3a0a43 | ||
|
|
c38a8a2bec | ||
|
|
1225d16413 | ||
|
|
384f3b23ee | ||
|
|
a3cfa6bba1 | ||
|
|
51638eddcc | ||
|
|
41c6a847b9 | ||
|
|
d57062a45a | ||
|
|
32f478a8c2 | ||
|
|
61dae1444b | ||
|
|
8ed40cc856 | ||
|
|
941b8c8d2a | ||
|
|
4f2a2dfab9 | ||
|
|
4a6ab376af | ||
|
|
1e37858cc4 | ||
|
|
668268b6b5 | ||
|
|
cfcd9b7eaf | ||
|
|
6a3dddd0cc | ||
|
|
dfb2046f82 | ||
|
|
3ae55b6a6f | ||
|
|
7e53d23e33 | ||
|
|
ce2294ee96 | ||
|
|
14646d0f9e | ||
|
|
717a4b00e1 | ||
|
|
fca3b66a25 | ||
|
|
1a861ef240 | ||
|
|
1590d9a98f | ||
|
|
112bcd7255 | ||
|
|
af29228cc9 | ||
|
|
b8c79e0b5f | ||
|
|
0d078f660a | ||
|
|
e7f89f256a | ||
|
|
cb693a0795 | ||
|
|
7b57345c4f | ||
|
|
90879386d5 | ||
|
|
3678aa4d23 | ||
|
|
e497789ec7 | ||
|
|
2134d404a5 | ||
|
|
e0707f6907 | ||
|
|
816f35cbab | ||
|
|
a73d3132df | ||
|
|
368c122dce | ||
|
|
c41d17043c | ||
|
|
3c17a1410b | ||
|
|
078110851d | ||
|
|
70725bdfe2 | ||
|
|
3c0a610a34 | ||
|
|
d5b74eecd0 | ||
|
|
1faf183c73 | ||
|
|
a1773a7cfd | ||
|
|
1af3515b00 | ||
|
|
70e2a5d3b3 | ||
|
|
78409570a9 | ||
|
|
5133931302 | ||
|
|
8326cebf5c | ||
|
|
ab46f11af2 | ||
|
|
91acb1a6ec | ||
|
|
c721fad54b | ||
|
|
2aea2a0032 | ||
|
|
3164337c3c | ||
|
|
b984c309ff | ||
|
|
cfbd06225b | ||
|
|
b0a0abd764 | ||
|
|
9618056b4e | ||
|
|
8b40e43432 | ||
|
|
01bc15d3f4 | ||
|
|
3282e1bcc9 | ||
|
|
e5b6a5605a | ||
|
|
9b67807926 | ||
|
|
f3729fbae6 | ||
|
|
0538c9c3e8 | ||
|
|
53a0e85b8d | ||
|
|
453dd93abf | ||
|
|
669cc2395a | ||
|
|
82706141cf | ||
|
|
c536f24d55 | ||
|
|
764b4e72ca | ||
|
|
19dd21062b | ||
|
|
2d24b468b6 | ||
|
|
2dc75cb98d | ||
|
|
5e3be25916 | ||
|
|
49e8bad7cc | ||
|
|
796aea19e6 | ||
|
|
dd35f1723b | ||
|
|
0177e1fee4 | ||
|
|
949eb2b5f5 | ||
|
|
2d59fe37bf | ||
|
|
b6f81c199e | ||
|
|
c2964dc340 | ||
|
|
8aebb93424 | ||
|
|
96c38f7be4 | ||
|
|
cf2abe45de | ||
|
|
88ac8adb30 | ||
|
|
b331478179 | ||
|
|
bfaa82ccba | ||
|
|
77f407724d | ||
|
|
2f5c2e6404 | ||
|
|
fbb2cdd1a9 | ||
|
|
63a4e06556 | ||
|
|
3d934b4a9c | ||
|
|
697c275d83 | ||
|
|
25b9601613 | ||
|
|
276dfd9df6 | ||
|
|
19f05f0a97 | ||
|
|
293aaefefe | ||
|
|
57cdf4ebd1 | ||
|
|
c4a0c8f100 | ||
|
|
306991e776 | ||
|
|
de2384e4a7 | ||
|
|
236dbcfb4a | ||
|
|
a1b133d883 | ||
|
|
4f8825e371 | ||
|
|
1aa0936c91 | ||
|
|
d5e22c523e | ||
|
|
6618e61a42 | ||
|
|
26283ec228 | ||
|
|
ed12f5c77e | ||
|
|
8e074a571a | ||
|
|
e2c7c973fd | ||
|
|
eec04761ef | ||
|
|
f73256e0ea | ||
|
|
fec1de6383 | ||
|
|
db35a7efb8 | ||
|
|
36eae88a5a | ||
|
|
c01fd75c92 | ||
|
|
103f2d0720 | ||
|
|
037c46b587 | ||
|
|
0879f2c0ca | ||
|
|
a65cd5c39c | ||
|
|
d219e7afeb | ||
|
|
892bb4c432 | ||
|
|
45b9c6335c | ||
|
|
78e643039c | ||
|
|
04e993c674 | ||
|
|
c3132fc1b0 | ||
|
|
b1c73cb401 | ||
|
|
ac6eb8c6bc | ||
|
|
8a64412cb5 | ||
|
|
56885cc914 | ||
|
|
cdd1f9b86c | ||
|
|
139360cf76 | ||
|
|
2931d51add | ||
|
|
aa0bec41b4 | ||
|
|
b32b42b53e | ||
|
|
06c4c717bd | ||
|
|
a3ed44baec | ||
|
|
0cbb4a7074 | ||
|
|
af2e487ef5 | ||
|
|
28fdfdfef1 | ||
|
|
c95cca6436 | ||
|
|
86024c6c74 | ||
|
|
75290cf715 | ||
|
|
321b76a72a | ||
|
|
95ecaec11e | ||
|
|
0e7c16901c | ||
|
|
43dcbf776b | ||
|
|
e21c28e9d2 | ||
|
|
918c1507d3 | ||
|
|
a189e4403d | ||
|
|
563291a2e8 | ||
|
|
9156c9ac8f | ||
|
|
f0049f1dae | ||
|
|
a622152747 | ||
|
|
8440e9982f | ||
|
|
602d73fa82 | ||
|
|
c32ebb8d9f | ||
|
|
deeead4008 | ||
|
|
937a491409 | ||
|
|
79d5ae18a6 | ||
|
|
5cce0c53bf | ||
|
|
681b8c14ad | ||
|
|
443567486e | ||
|
|
c10ebc3086 | ||
|
|
42a2acefd3 | ||
|
|
c781545609 | ||
|
|
ba06affec7 | ||
|
|
6140d69fcb | ||
|
|
71a81fd1b7 | ||
|
|
4e05b62bbe | ||
|
|
9d366c8c7d | ||
|
|
940744b0bf | ||
|
|
6c2518a704 | ||
|
|
ef51fabf63 | ||
|
|
1aedd97d4d | ||
|
|
ff26ea94f5 | ||
|
|
c7a289d183 | ||
|
|
2a70c8f4d8 | ||
|
|
e27b08d970 | ||
|
|
48ec57604f | ||
|
|
db1bbea26a | ||
|
|
7bbb2f542b | ||
|
|
5563e24781 | ||
|
|
f131f6210f | ||
|
|
0356fa4538 | ||
|
|
b9c4a434c9 | ||
|
|
a4318cc060 | ||
|
|
d6e7161eff | ||
|
|
e428489ebc | ||
|
|
fa4cffe3d4 | ||
|
|
a355a87ec5 | ||
|
|
39749620a4 | ||
|
|
e7674bfaf8 | ||
|
|
3e8ad9eb83 | ||
|
|
6a95f9170c | ||
|
|
cc4a542e9d | ||
|
|
fed63b0b85 | ||
|
|
bf7b11d87d | ||
|
|
bb959ba465 | ||
|
|
b77e28fb12 | ||
|
|
261f981a9a | ||
|
|
93ad7e889e | ||
|
|
b79e2906e8 | ||
|
|
99e8ac3d36 | ||
|
|
badd36e81e | ||
|
|
c835502692 | ||
|
|
4fe7fd537d | ||
|
|
88ea548eaf | ||
|
|
360c8500bb | ||
|
|
7a925f15ba | ||
|
|
15ce9a7369 | ||
|
|
4b8532ea2d | ||
|
|
8e7d0f4dc1 | ||
|
|
de0ac5cda4 | ||
|
|
9a9fd4e2d1 | ||
|
|
4be0cbd2e4 | ||
|
|
5fef86ec18 | ||
|
|
1acd05794a | ||
|
|
5a61b7543b | ||
|
|
b6b74752a5 | ||
|
|
27a71ba123 | ||
|
|
20ae3d997c | ||
|
|
b73d0548c8 | ||
|
|
ca118697e9 | ||
|
|
600308aaa1 | ||
|
|
9b1ea66659 | ||
|
|
d29cc3325b | ||
|
|
9f6e28b741 | ||
|
|
4c5f349f49 | ||
|
|
9a321adfb1 | ||
|
|
e233f27d1c | ||
|
|
1cadf73a40 | ||
|
|
77c97b5b43 | ||
|
|
0054a330fb | ||
|
|
8ba05c57b0 | ||
|
|
284b1c7f87 | ||
|
|
8bc470e427 | ||
|
|
8e5190ffc8 | ||
|
|
a8298b6c9a | ||
|
|
b5928aa2e3 | ||
|
|
0a9462aa63 | ||
|
|
7b8be9e15c | ||
|
|
2a41223ce1 | ||
|
|
214151b57b | ||
|
|
ba8afb6bdc | ||
|
|
dbc00a66f0 | ||
|
|
8dfc68e196 | ||
|
|
2dee67edbd | ||
|
|
f6cc600b94 | ||
|
|
de334d32b1 | ||
|
|
44c86053ca | ||
|
|
efebf8e0c3 | ||
|
|
06dd495915 | ||
|
|
5b0857c01d | ||
|
|
523b86e28e | ||
|
|
4e28aa1031 | ||
|
|
166c5b252e | ||
|
|
112ca10f32 | ||
|
|
649a8e0418 | ||
|
|
c9631c2a3f | ||
|
|
7b65998c72 | ||
|
|
6a1db644de | ||
|
|
fcf430eb7b | ||
|
|
d916bfd73e | ||
|
|
949678a4d3 | ||
|
|
322e9e3ccf | ||
|
|
6098bfebf8 | ||
|
|
3758c98d5e | ||
|
|
dca80c3006 | ||
|
|
95bad03321 | ||
|
|
cecd1e11b1 | ||
|
|
c6fd400fa5 | ||
|
|
2711794770 | ||
|
|
505baf4eed | ||
|
|
0e09ce1dd3 | ||
|
|
6f13325e76 | ||
|
|
adda3a2d34 | ||
|
|
f22c2f8c7b | ||
|
|
981d7fd5ce | ||
|
|
80cd14e730 | ||
|
|
a28de2fa21 | ||
|
|
f143596b91 | ||
|
|
d32813ed1f | ||
|
|
7f44ef75c4 | ||
|
|
478c9a871c | ||
|
|
296bd07e52 | ||
|
|
7ced943b88 | ||
|
|
1d235b2953 | ||
|
|
516f4dad48 | ||
|
|
edc04292f7 | ||
|
|
cb7e48b2e8 | ||
|
|
56d80118b7 | ||
|
|
711699e200 | ||
|
|
fc931d8c88 | ||
|
|
d26bebfbe2 | ||
|
|
7463552dcd | ||
|
|
ec5325ed3c | ||
|
|
8b814c724c | ||
|
|
ce627de39d | ||
|
|
5c054223e8 | ||
|
|
133007c451 | ||
|
|
b17c8b84d1 | ||
|
|
f6210d5857 | ||
|
|
6926b3f7a0 | ||
|
|
1a56141430 | ||
|
|
ffa10adecf | ||
|
|
b69a8a0709 | ||
|
|
4dece85483 | ||
|
|
8deb18fa9d | ||
|
|
5af8bddc16 | ||
|
|
0dd84c37a1 | ||
|
|
1be6333601 | ||
|
|
20552ea157 | ||
|
|
71a92bbb63 | ||
|
|
e9865c42bd | ||
|
|
9172985173 |
82
AUTHORS
@@ -2,5 +2,85 @@ Author:
|
|||||||
* Christophe Dumez <chris@qbittorrent.org>
|
* Christophe Dumez <chris@qbittorrent.org>
|
||||||
|
|
||||||
Contributors:
|
Contributors:
|
||||||
|
* Stefanos Antaris <santaris@csd.auth.gr>
|
||||||
|
* Ishan Arora <ishan@qbittorrent.org>
|
||||||
* Arnaud Demaizière <arnaud@qbittorrent.org>
|
* Arnaud Demaizière <arnaud@qbittorrent.org>
|
||||||
* Ishan Arora <ishanarora@gmail.com>
|
* Grigis Gaëtan <cipher16@gmail.com>
|
||||||
|
|
||||||
|
Code from other projects:
|
||||||
|
* files src/ico.cpp src/ico.h
|
||||||
|
copyright: Malte Starostik <malte@kde.org>
|
||||||
|
license: LGPL
|
||||||
|
|
||||||
|
Images Authors:
|
||||||
|
* files: src/Icons/*.png
|
||||||
|
copyright: Gnome Icon Theme
|
||||||
|
license: GPLv2
|
||||||
|
url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme
|
||||||
|
|
||||||
|
* files: src/oxygen/*.png
|
||||||
|
copyright: Oxygen Icon Theme (KDE)
|
||||||
|
license: LGPL
|
||||||
|
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
|
||||||
|
|
||||||
|
* files: src/Icons/skin/*.png
|
||||||
|
files: src/menuicons/YYxYY/*.png
|
||||||
|
copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
|
||||||
|
license: GPLv2
|
||||||
|
|
||||||
|
* file: src/Icons/skin/tabs.gif
|
||||||
|
copyright: Greg Houston <gregory.houston@gmail.com>
|
||||||
|
license: MIT
|
||||||
|
|
||||||
|
* file: src/search_engine/engines/btjunkie.png
|
||||||
|
copyright: Downloaded from btjunkie.org
|
||||||
|
|
||||||
|
* file: src/search_engine/engines/isohunt.png
|
||||||
|
copyright: Downloaded from isohunt.com
|
||||||
|
|
||||||
|
* file: src/search_engine/engines/mininova.png
|
||||||
|
copyright: Downloaded from mininova.org
|
||||||
|
|
||||||
|
* file: src/search_engine/engines/piratebay.png
|
||||||
|
copyright: Downloaded from thepiratebay.org
|
||||||
|
|
||||||
|
* file: src/search_engine/engines/torrentreactor.png
|
||||||
|
copyright: Downloaded from torrentreactor.net
|
||||||
|
|
||||||
|
Translations authors:
|
||||||
|
* files: src/lang/*.ts
|
||||||
|
copyright:
|
||||||
|
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
|
||||||
|
- Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)
|
||||||
|
- Catalan: Gekko Dam Beer (gekko04@users.sourceforge.net)
|
||||||
|
- Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com)
|
||||||
|
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com)
|
||||||
|
- Czech: Jirka Vilim (web@tets.cz)
|
||||||
|
- Danish: Mathias Nielsen (comoneo@gmail.com)
|
||||||
|
- Dutch: Joost Schipper (heavyjoost@users.sourceforge.net)
|
||||||
|
- English: Christophe Dumez (chris@qbittorrent.org)
|
||||||
|
- Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
|
||||||
|
- French: Christophe Dumez (chris@qbittorrent.org)
|
||||||
|
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
||||||
|
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net) and Stephanos Antaris (santaris@csd.auth.gr)
|
||||||
|
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
||||||
|
- Italian: Mirko Ferrari (mirkoferrari@gmail.com) and Ferraro Luciano (luciano.ferraro@gmail.com)
|
||||||
|
- Japanese: Nardog (alphisation@gmail.com)
|
||||||
|
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
||||||
|
- Norwegian: Lars-Erik Labori (hamil@users.sourceforge.net)
|
||||||
|
- 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)
|
||||||
|
- Serbian: Anaximandar Milet (anaximandar at operamail.com)
|
||||||
|
- Slovak: helix84
|
||||||
|
- Spanish: Vicente Raul Plata Fonseca (silverxnt@users.sourceforge.net)
|
||||||
|
- Swedish: Daniel Nylander (po@danielnylander.se)
|
||||||
|
- Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
|
||||||
|
- Ukrainian: Andrey Shpachenko (masterfix@users.sourceforge.net)
|
||||||
|
license: GPLv2
|
||||||
|
|||||||
14
COPYING
@@ -1,3 +1,17 @@
|
|||||||
|
qBittorrent is licensed under the GNU General Public License version 2 with the
|
||||||
|
addition of the following special exception:
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 2, June 1991
|
Version 2, June 1991
|
||||||
|
|
||||||
|
|||||||
291
Changelog
@@ -1,8 +1,292 @@
|
|||||||
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
|
* 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
|
||||||
|
- BUGFIX: Do not use home folder as a fallback when the save path is not accessible
|
||||||
|
- BUGFIX: Fix Mininova, ThePirateBay search engine plugins
|
||||||
|
- BUGFIX: Read RSS articles are remembered on restart for feeds with no torrents attached
|
||||||
|
|
||||||
|
* Sun Dec 13 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.1
|
||||||
|
- BUGFIX: µTorrent user-agent is now spoofed correctly
|
||||||
|
- BUGFIX: Fix column hiding behavior when queueing system is disabled
|
||||||
|
- BUGFIX: Fix link to plugins.qbittorrent.org in plugins dialog
|
||||||
|
- BUGFIX: ~/qBT_dir is created only when it is actually used
|
||||||
|
- BUGFIX: Fix possible missing slot message (toggleSelectedTorrentsSuperSeeding)
|
||||||
|
- BUGFIX: Fix possible crash in torrent properties (files)
|
||||||
|
- BUGFIX: Added Hex Magnet Links support (Thanks Haypo)
|
||||||
|
|
||||||
|
* Thu Dec 10 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.0
|
||||||
|
- FEATURE: Added program option to disable splash screen
|
||||||
|
- FEATURE: Dropped dependency on libcurl and libzzip
|
||||||
|
- FEATURE: Display more information regarding the torrent in its properties
|
||||||
|
- FEATURE: Various optimizations to save CPU and memory
|
||||||
|
- FEATURE: Folder scanning now works with CIFS and NFS mounted folders
|
||||||
|
- FEATURE: Speed up qBittorrent startup and shutdown
|
||||||
|
- FEATURE: Display per-torrent peer list
|
||||||
|
- FEATURE: Make sure torrent files are always sorted by name
|
||||||
|
- FEATURE: Seeds and Peers columns are now sortable
|
||||||
|
- FEATURE: Torrents can be rechecked from Web UI (Stephanos Antaris)
|
||||||
|
- FEATURE: New peers can manually be added to the torrents
|
||||||
|
- FEATURE: Support per-peer rate limiting
|
||||||
|
- FEATURE: Support peer manual ban
|
||||||
|
- FEATURE: Display total amounts transferred in status bar
|
||||||
|
- FEATURE: Display trackers status as well as error/warning messages
|
||||||
|
- FEATURE: Display the number of peers returned by each tracker & DHT/PeX/LSD
|
||||||
|
- FEATURE: Global upload/download speeds can be capped from status bar (µTorrent behavior)
|
||||||
|
- FEATURE: Added option to download first and last piece of a torrent main file first (for preview)
|
||||||
|
- FEATURE: Graphically display piece availability in torrent properties
|
||||||
|
- FEATURE: Dropped Qt 4.3 support (Qt >= 4.4 is now required)
|
||||||
|
- FEATURE: Display close tab button into the tabs in search engine (Qt >= 4.5 only)
|
||||||
|
- FEATURE: Show official documentation when pressing F1 key
|
||||||
|
- FEATURE: Search engine plugins now handle HTTP protocol gzip compression
|
||||||
|
- FEATURE: Enabled lazy bitfield as a counter-measure for ISP speed throttling
|
||||||
|
- FEATURE: Fall back to a random port if qBittorrent could not listen on the chosen port
|
||||||
|
- FEATURE: Announce to all trackers specified for a torrent (µTorrent behavior) (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Added per-torrent super seeding mode (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Support for storing symbolic links in .torrent files (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Support for uTorrent interpretation of multi-tracker torrents (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Handle torrents with duplicate filenames (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Support for merkle hash tree torrents (.merkle.torrent) (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Metadata download from swarm is now compatible with µtorrent (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Support tracker exchange between peers (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Better http seed support (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Tracker connections are now also subject to IP filtering (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Include DHT traffic in the rate limiter (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Support for bitcomet padding files (libtorrent >= v0.15 only)
|
||||||
|
- FEATURE: Option to skip file checking and start seeding immediately in torrent addition dialog (Stephanos Antaris) (libtorrent >= v0.15 only)
|
||||||
|
- BUGFIX: Made sure qBittorrent does not scrape the tracker too frequently (libtorrent >= 0.15 only)
|
||||||
|
- BUGFIX: Fix Paste action in search engine field
|
||||||
|
- BUGFIX: Fix possible double free in search engine destructor
|
||||||
|
- BUGFIX: Properly handle trackers error messages
|
||||||
|
- WEB UI: Remodeled Web UI to match new qBittorrent UI (Properties and preferences available)
|
||||||
|
- WEB UI: Added internationalization support
|
||||||
|
- WEB UI: Reduced computation in Javascript (do this one server side instead)
|
||||||
|
- WEB UI: Fixed Transfer list flickering
|
||||||
|
- WEB UI: Password is now stored as md5
|
||||||
|
- I18N: Added Serbian translation (By Anaximandar Milet)
|
||||||
|
- COSMETIC: Merged download / upload lists
|
||||||
|
- COSMETIC: Torrents can be filtered based on their status
|
||||||
|
- COSMETIC: Torrent properties are now displayed in main window
|
||||||
|
- COSMETIC: Made program preferences scrollable for usability on small screens (e.g. netbooks)
|
||||||
|
- COSMETIC: Added a "torrent status" column to transfer list
|
||||||
|
- COSMETIC: Display Seeds and Peers in two separate columns
|
||||||
|
- COSMETIC: New deletion confirmation dialog (Merged delete/delete permanently actions)
|
||||||
|
- COSMETIC: Improved status bar layout spacing
|
||||||
|
- COSMETIC: Display speeds with more user friendly units instead of always using KiB/s
|
||||||
|
- COSMETIC: New torrent status icons by Mateusz Tolola
|
||||||
|
- COSMETIC: Make use of libnotify if available for system notifications (Ubuntu, ...)
|
||||||
|
|
||||||
|
* Tue Nov 17 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.6
|
||||||
|
- BUGFIX: RSS feed articles can now be displayed using keyboard arrows
|
||||||
|
- BUGFIX: RSS feed downloader can only process unread articles now
|
||||||
|
- BUGFIX: Fixed memory leak in RSS parser
|
||||||
|
- BUGFIX: Fixed possible crash in search autocompletion
|
||||||
|
- BUGFIX: Improved ETA calculation for big torrents
|
||||||
|
- BUGFIX: Fixed per-torrent speed limiting
|
||||||
|
|
||||||
|
* Wed Nov 4 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.5
|
||||||
|
- BUGFIX: Fixed man page
|
||||||
|
- BUGFIX: Fix crash on torrent addition (if libtorrent-rasterbar has debug enabled)
|
||||||
|
- BUGFIX: Fix trackers addition to torrents (bug introduced in v1.5.4)
|
||||||
|
- BUGFIX: Suppress compilation warning regarding sortNewsList() not being used
|
||||||
|
- BUGFIX: Make sure scan folder is different than qBittorrent backup directory to avoid torrents deletion
|
||||||
|
- BUGFIX: Added safety mecanism which adds the torrents back to the list in case qbittorrent-resume.conf gets deleted or corrupted.
|
||||||
|
|
||||||
|
* Sun Oct 25 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.4
|
||||||
|
- BUGFIX: Updated man page
|
||||||
|
- BUGFIX: Fixed possible crash with torrents containing unicode characters
|
||||||
|
- BUGFIX: Fixed problem when disabling systray integration and starting minimized
|
||||||
|
- BUGFIX: Fixed PirateBay search plugin
|
||||||
|
- BUGFIX: Using Download button in search results list now downloads the right torrents
|
||||||
|
- BUGFIX: The search results list is no longer sorted automatically when a row color is updated
|
||||||
|
|
||||||
|
* Wed Sep 30 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.3
|
||||||
|
- BUGFIX: Fix a possible crash when pausing then deleting a torrent quickly
|
||||||
|
- BUGFIX: Fix a race condition in folder scanning and torrent downloader
|
||||||
|
- BUGFIX: Hide download url column in search results
|
||||||
|
- BUGFIX: Fix a crash when scanned directory does not exist
|
||||||
|
- BUGFIX: Fix compilation on Mac OS
|
||||||
|
- BUGFIX: Added a command line parameter to disable splash screen
|
||||||
|
- BUGFIX: Ignore permanent deletion button when no torrent is selected
|
||||||
|
- BUGFIX: When a selected torrent is deleted, select next suitable torrent
|
||||||
|
|
||||||
|
* Sun Sep 20 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.2
|
||||||
|
- BUGFIX: Some torrents were pausing for no reason
|
||||||
|
- I18N: Updated Korean translation
|
||||||
|
|
||||||
|
* Thu Sep 7 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.1
|
||||||
|
- BUGFIX: Fix crash in torrent addition dialog when save path does not exist (closes #425227)
|
||||||
|
- BUGFIX: Fix downloading from URL (broken in v1.5.0)
|
||||||
|
- BUGFIX: Pause torrents in error state
|
||||||
|
|
||||||
|
* Thu Sep 3 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.0
|
||||||
|
- FEATURE: Added Magnet URI support
|
||||||
|
- FEATURE: Search engine supports category-based requests
|
||||||
|
- FEATURE: Make use of torrent enclosure in RSS feeds for direct download
|
||||||
|
- FEATURE: Implemented a RSS feed downloader with filter support
|
||||||
|
- FEATURE: Save old RSS item to hard disk to remember them on start up
|
||||||
|
- FEATURE: Display free disk space in torrent addition dialog
|
||||||
|
- FEATURE: In torrent addition from URL, paste clipboard content if it contains an URL
|
||||||
|
- FEATURE: RSS feeds URLs can now be copied to clipboard
|
||||||
|
- FEATURE: RSS feeds can now be grouped into folders
|
||||||
|
- FEATURE: Added "Unread" item to RSS feed list to display all unread news
|
||||||
|
- FEATURE: If a torrent contains a torrent file, process downloaded torrent file too
|
||||||
|
- FEATURE: A random listening port can be chosen automatically
|
||||||
|
- BUGFIX: torrent resume code rewrited
|
||||||
|
- BUGFIX: Fixed uTorrent spoofing code
|
||||||
|
- BUGFIX: Greatly improved column sorting code
|
||||||
|
- BUGFIX: Possibility to create trackerless torrents
|
||||||
|
- BUGFIX: Better item coloring in torrent content filtering dialog
|
||||||
|
- COSMETIC: Redesigned search tab to improve usability
|
||||||
|
- COSMETIC: Redesigned RSS tab to improve usability
|
||||||
|
- COSMETIC: Improved tracker errors readability
|
||||||
|
|
||||||
|
* Sun Aug 21 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.4.1
|
||||||
|
- BUGFIX: Fix problems when changing save path (if using temporary download folder)
|
||||||
|
- BUGFIX: Display real save path instead of the temporary one in torrent properties
|
||||||
|
- BUGFIX: Catching invalid_handle exception to avoid rare crashes
|
||||||
|
- BUGFIX: Fixed popup menu position in RSS feeds list
|
||||||
|
- BUGFIX: Don't save RSS feed state if it could not be updated
|
||||||
|
|
||||||
|
* Thu Aug 13 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.4.0
|
||||||
|
- FEATURE: Display swarm information in lists
|
||||||
|
- FEATURE: Allow to define temporary download folder
|
||||||
|
- FEATURE: Display total amount of uploaded data in finished list
|
||||||
|
- FEATURE: Resizing a column in a search results tab affects all tabs
|
||||||
|
- FEATURE: Search results tab columns are now remembered upon startup
|
||||||
|
- FEATURE: Added right click menu in search engine to clear completion history
|
||||||
|
- FEATURE: Allow to set a different port for DHT (UDP) than the one used for Bittorrent
|
||||||
|
- FEATURE: Updated spoofing code to avoid trackers ban
|
||||||
|
- BUGFIX: Provide more helpful explanation when an I/O error occured
|
||||||
|
- BUGFIX: Stop enforcing UTF-8 and use system locale instead
|
||||||
|
- COSMETIC: Redesigned program preferences
|
||||||
|
- COSMETIC: Updated icons set
|
||||||
|
|
||||||
|
* Fri Jul 24 2009 - Christophe DUMEZ <chris@qbittorrent.org> - 1.3.5
|
||||||
|
- BUGFIX: Made IP filter parser more robust
|
||||||
|
- BUGFIX: Fixed torrent creation tool
|
||||||
|
- BUGFIX: Fixed possible overflow in progress calculation in arborescence.h
|
||||||
|
- BUGFIX: Save properties window size, position, columns width and restore them
|
||||||
|
- BUGFIX: Set a minimum default width for NAME column in properties
|
||||||
|
- BUGFIX: Remember visual indexes of columns in transfer lists
|
||||||
|
|
||||||
|
* Sun Jul 12 2009 - Christophe DUMEZ <chris@qbittorrent.org> - v1.3.4
|
||||||
|
- BUGFIX: Fixed IP filter file parsing on 64bits
|
||||||
|
- BUGFIX: Suppressed QLayout: Attempting to add QLayout "" to properties "properties" warning message when opening a properties dialog
|
||||||
|
- BUGFIX: Fixed a little bug in search engine plugins helper file
|
||||||
|
- BUGFIX: Fixed compilation problems with Qt 4.3
|
||||||
|
- BUGFIX: Percentages no longer disapear with default cleanlooks style
|
||||||
|
- BUGFIX: Cleanly fixed popup menus position in lists (no more workarounds)
|
||||||
|
- BUGFIX: Fixed memory leak in search engine
|
||||||
|
- BUGFIX: Torrents with an infinite ratio are no longer affected by ratio_limit set in program preferences
|
||||||
|
- BUGFIX: Display a ratio of 0.0 if total_upload and total_download are both 0
|
||||||
|
- BUGFIX: Remove last separator in top tool bar
|
||||||
|
- BUGFIX: Tuned lists properties to make sure display is correct
|
||||||
|
- COSMETIC: Display date as well as time in log window
|
||||||
|
|
||||||
|
* Sun Apr 5 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.3
|
||||||
|
- BUGFIX: Fixed Web UI torrent upload form
|
||||||
|
- BUGFIX: Fixed unicode support in search engine
|
||||||
|
- BUGFIX: Fixed search engine bug that prevented a torrent from appearing more than once among all tabs
|
||||||
|
- LICENSE: Added an exception to the license regarding OpenSSL.
|
||||||
|
- I18N: Updated Finnish translation
|
||||||
|
|
||||||
|
* Sat Mar 7 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.2
|
||||||
|
- BUGFIX: Fix top toolbar disabling
|
||||||
|
- BUGFIX: Fix building with Qt 4.5
|
||||||
|
- BUGFIX: RSS items read status is now remembered upon restart
|
||||||
|
|
||||||
|
* Mon Jan 26 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.1
|
||||||
|
- BUGFIX: Torrents paused due to an I/O error were displayed as queued
|
||||||
|
- BUGFIX: qBittorrent now prints backtrace in terminal when segfaulting
|
||||||
|
- BUGFIX: Fixed files progress display in torrent properties
|
||||||
|
- BUGFIX: Improved torrent ratio calculation
|
||||||
|
- BUGFIX: Fixed possible crash when parsing filter file
|
||||||
|
- BUGFIX: Made some code optimization
|
||||||
|
- BUGFIX: Fixed download/upload speed decrease problems
|
||||||
|
- I18N: Updated Finnish, Bulgarian and Greek translations
|
||||||
|
|
||||||
|
* Fri Jan 9 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.0
|
||||||
|
- FEATURE: Based on libtorrent-rasterbar v0.14.2
|
||||||
|
- FEATURE: Improved ratio calculation system
|
||||||
|
- FEATURE: Torrent creation code cleanup
|
||||||
|
- FEATURE: Allow to set maximum number of active seeds (queueing)
|
||||||
|
- FEATURE: Now seeds priorities are handled automatically by libtorrent-rasterbar (queueing)
|
||||||
|
- FEATURE: Code cleanup and optimization (save memory and cpu)
|
||||||
|
- FEATURE: ETA calculation now relies on average speed over all sessions
|
||||||
|
- FEATURE: Allow to force rechecking torrents
|
||||||
|
- FEATURE: Added support for 2 new extensions (uTorrent metadata and smart ban plugin)
|
||||||
|
- FEATURE: Allow to change the save path of torrents after addition
|
||||||
|
- FEATURE: Got rid of libmagick++ dependency
|
||||||
|
- FEATURE: Updated Web interface to MochaUI v0.9.5
|
||||||
|
- FEATURE: Added notification in WebUI when qBittorrent is not reachable
|
||||||
|
- FEATURE: Rewrote folder scanning code (Now uses a filesystem watcher)
|
||||||
|
- FEATURE: Added torrent deletion from hard drive function in Web UI
|
||||||
|
- FEATURE: Added queueing priority actions in Web UI
|
||||||
|
- FEATURE: Display progress using progress bars in Web UI
|
||||||
|
- BUGFIX: Made usage of fastresume data more reliable
|
||||||
|
- BUGFIX: qBittorrent shutdown is now faster
|
||||||
|
- BUGFIX: Fixed several memory leaks
|
||||||
|
- BUGFIX: WebUI is now working with IE7
|
||||||
|
- BUGFIX: Fixed spacing problem in toolbar when toggling its visibility
|
||||||
|
- BUGFIX: Fixed some compilation and Qt4 warnings
|
||||||
|
- BUGFIX: Do not use an addition dialog for torrents from folder scanning
|
||||||
|
- BUGFIX: Catch SIGTERM to exit cleanly (e.g. computer shutdown)
|
||||||
|
- BUGFIX: Improved proxy support code
|
||||||
|
- BUGFIX: Fixed systray icon tooltip on Windows
|
||||||
|
- BUGFIX: Proxy settings are now saved even if disabled
|
||||||
|
|
||||||
|
* Sun Nov 9 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.2.1
|
||||||
|
- BUGFIX: Fixed possible crash when deleting a torrent permanently
|
||||||
|
- BUGFIX: Queued_for_checking torrents were not displayed as checking in seeding list
|
||||||
|
- BUGFIX: Speed up startup time when having a lot of torrents
|
||||||
|
|
||||||
|
* Wed Oct 29th 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.2.0
|
||||||
|
- FEATURE: Torrent queueing system (with priorities)
|
||||||
|
- FEATURE: The number of DHT nodes is displayed
|
||||||
|
- FEATURE: RSS can now be disabled from program preferences
|
||||||
|
- FEATURE: Added collapse/expand all buttons in addition and properties dialogs
|
||||||
|
- FEATURE: Can have different proxies for Bittorrent and search engine
|
||||||
|
- FEATURE: Allow multiple item selection in Web UI transfer list
|
||||||
|
- FEATURE: Moved uploads to a separate list in Web UI
|
||||||
|
- BUGFIX: Totally rewritten Web UI list refresh system (fixed memory leak)
|
||||||
|
- BUGFIX: Disable ETA calculation when ETA column is hidden
|
||||||
|
- BUGFIX: Removed "disconnected" connection state, detection was far from perfect
|
||||||
|
- BUGFIX: Torrents are no longer starting from scratch when changing default save path (when torrent addition dialog is disabled)
|
||||||
|
- BUGFIX: Single instance code is now more reliable on Qt >= 4.4
|
||||||
|
- COSMETIC: Transfer speed, ratio, connection status and DHT nodes are displayed in status bar
|
||||||
|
- COSMETIC: RSS Tab is now hidden as a default
|
||||||
|
- COSMETIC: Allow to hide or display top toolbar
|
||||||
|
- COSMETIC: Log is now in a separate dialog
|
||||||
|
|
||||||
|
* Sun Sept 14 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.4
|
||||||
|
- FEATURE: DHT is no longer used as fallback only
|
||||||
|
- FEATURE: Ported WebUI to Mootools v1.2
|
||||||
|
- BUGFIX: Fixed 'start seeding after torrent creation' feature
|
||||||
|
- BUGFIX: Fixed compilation with boost v1.36
|
||||||
|
- BUGFIX: Some code optimization
|
||||||
|
- BUGFIX: Fixed memory leak in Web UI
|
||||||
|
- BUGFIX: Fixed problems with column sorting
|
||||||
|
- BUGFIX: Improved code for pausing torrents on startup
|
||||||
|
- BUGFIX: Torrent addition dialog is now disabled for downloads from WebUI
|
||||||
|
- BUGFIX: Give focus to input field in WebUI download dialog
|
||||||
|
|
||||||
|
* Tue Aug 26 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.3
|
||||||
|
- BUGFIX: Fixed ratio saving for seeding torrents
|
||||||
|
- I18N: Added czech and traditional chinese translations
|
||||||
|
|
||||||
|
* Sun Aug 17 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.2
|
||||||
|
- BUGFIX: Fixed progress calculation
|
||||||
|
- BUGFIX: Fixed finished torrent detection
|
||||||
|
|
||||||
|
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.1
|
||||||
|
- BUGFIX: Fixed bad resource file for icons
|
||||||
|
|
||||||
|
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
|
||||||
- FEATURE: Web interface to control qbittorrent (Ishan Arora)
|
- FEATURE: Web interface to control qbittorrent (Ishan Arora)
|
||||||
- FEATURE: Can spoof Azureus peer id to avoid ban
|
- FEATURE: Can spoof Azureus peer id to avoid ban
|
||||||
- FEATURE: Allow to hide/show some columns in download and seeding lists
|
- FEATURE: Allow to hide/show some columns in download and seeding lists
|
||||||
- FEATURE: Option to start qBittorrent minimized in systray
|
- FEATURE: Option to start qBittorrent minimized in systray
|
||||||
|
- FEATURE: Multi-tab support in search engine (Grigis Gaëtan)
|
||||||
- FEATURE: Allow to define double-click actions in torrents lists
|
- FEATURE: Allow to define double-click actions in torrents lists
|
||||||
- FEATURE: Allow to open torrent destination folder
|
- FEATURE: Allow to open torrent destination folder
|
||||||
- FEATURE: Real progress bar in torrent properties that displays downloaded pieces
|
- FEATURE: Real progress bar in torrent properties that displays downloaded pieces
|
||||||
@@ -14,14 +298,19 @@
|
|||||||
- FEATURE: Added support for PeerGuardian p2b filters (binary)
|
- FEATURE: Added support for PeerGuardian p2b filters (binary)
|
||||||
- FEATURE: Allow to customize folder scan interval
|
- FEATURE: Allow to customize folder scan interval
|
||||||
- FEATURE: Allow to add several trackers at once
|
- FEATURE: Allow to add several trackers at once
|
||||||
|
- BUGFIX: Allow to run one instance of qBittorrent per user
|
||||||
- BUGFIX: Do not display seeds number in seeding list (always 0)
|
- BUGFIX: Do not display seeds number in seeding list (always 0)
|
||||||
- BUGFIX: Threadified IP filter file parser to avoid GUI freeze
|
- BUGFIX: Threadified IP filter file parser to avoid GUI freeze
|
||||||
|
- BUGFIX: Ask if we want to redownload if content was deleted from hard drive
|
||||||
|
- BUGFIX: Added missing copyright/licensing information for some files
|
||||||
|
- BUGFIX: qBittorrent is no longer conflicting with rTorrent (libtorrent renamed to libtorrent-rasterbar)
|
||||||
- COSMETIC: Do not display progress bar in seeding list (always 100%)
|
- COSMETIC: Do not display progress bar in seeding list (always 100%)
|
||||||
- COSMETIC: Added a progress bar for torrent creation
|
- COSMETIC: Added a progress bar for torrent creation
|
||||||
- COSMETIC: Display tracker errors in a cleaner way
|
- COSMETIC: Display tracker errors in a cleaner way
|
||||||
- COSMETIC: Display "unpaused/total_torrent" in download/upload tabs
|
- COSMETIC: Display "unpaused/total_torrent" in download/upload tabs
|
||||||
- COSMETIC: Allow to resize RSS column
|
- COSMETIC: Allow to resize RSS column
|
||||||
- COSMETIC: Global UP/DL speeds and ratio are displayed above tabs
|
- COSMETIC: Global UP/DL speeds and ratio are displayed above tabs
|
||||||
|
- COSMETIC: Use infinity symbol for ETA when time is infinite
|
||||||
|
|
||||||
* Fri Apr 11 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.0.0
|
* Fri Apr 11 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.0.0
|
||||||
- FEATURE: Based on new libtorrent v0.13
|
- FEATURE: Based on new libtorrent v0.13
|
||||||
|
|||||||
31
INSTALL
@@ -1,12 +1,6 @@
|
|||||||
qBittorrent - A BitTorrent client in C++ / Qt4
|
qBittorrent - A BitTorrent client in C++ / Qt4
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
*** Necessary if qt3 is default on your system ***
|
|
||||||
export QTDIR=/usr/include/qt4
|
|
||||||
export PATH=$QTDIR/bin:$PATH
|
|
||||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
|
|
||||||
*** End ***
|
|
||||||
|
|
||||||
./configure
|
./configure
|
||||||
make && make install
|
make && make install
|
||||||
qbittorrent
|
qbittorrent
|
||||||
@@ -14,30 +8,25 @@ qbittorrent
|
|||||||
will install and execute qBittorrent hopefully without any problems.
|
will install and execute qBittorrent hopefully without any problems.
|
||||||
|
|
||||||
Dependencies:
|
Dependencies:
|
||||||
- Qt >= 4.3.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
|
- Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
|
||||||
|
|
||||||
- rblibtorrent by Arvid Norberg (>= v0.13 REQUIRED)
|
- libtorrent-rasterbar by Arvid Norberg (>= 0.14.0 REQUIRED, >= v0.15.0 ADVISED)
|
||||||
-> http://www.qbittorrent.org/download.php (advised)
|
-> http://www.qbittorrent.org/download.php (advised)
|
||||||
-> http://www.libtorrent.net
|
-> http://www.libtorrent.net
|
||||||
Be careful: another library (the one used by rTorrent) use the same name.
|
Be careful: another library (the one used by rTorrent) uses a similar name.
|
||||||
These are TWO different libraries and qBittorrent will only work with the one provided
|
|
||||||
on sourceforge (created by Arvid Norberg). The two libraries conflicts with each other.
|
|
||||||
|
|
||||||
- libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization
|
- libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization
|
||||||
|
|
||||||
- libcurl
|
|
||||||
|
|
||||||
- python >= 2.3 (needed by search engine)
|
- python >= 2.3 (needed by search engine)
|
||||||
|
* Run time only dependency
|
||||||
|
|
||||||
- libmagick++ (advised, not required)
|
- libnotify >= 0.4.2, glib-2.0 (optional)
|
||||||
* Needed for favicons support (RSS / Search plugins)
|
* Can be used for system notifications to replace standard Qt notifications
|
||||||
|
so that it integrates better into the Desktop
|
||||||
|
|
||||||
- libzzip (advised, not required)
|
- geoip-database (optional)
|
||||||
* Needed for zip support (Search plugins)
|
* 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
|
||||||
NOTE FOR NON-KDE USERS:
|
|
||||||
- qt4-qtconfig package is advised when using other systems than KDE.
|
|
||||||
You can also change qBittorrent style to Cleanlooks (GNOME like)
|
|
||||||
|
|
||||||
DOCUMENTATION:
|
DOCUMENTATION:
|
||||||
Please note that there is a documentation with a "compiling howto" at http://wiki.qbittorrent.org.
|
Please note that there is a documentation with a "compiling howto" at http://wiki.qbittorrent.org.
|
||||||
|
|||||||
6
README
@@ -10,6 +10,9 @@ It aims to be a good alternative to all other bittorrent clients
|
|||||||
out there. qBittorrent is fast, stable and provides unicode
|
out there. qBittorrent is fast, stable and provides unicode
|
||||||
support as well as many features.
|
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:
|
For installation, follow the instructions from INSTALL file, but simple:
|
||||||
@@ -23,6 +26,9 @@ will install and execute qBittorrent hopefully without any problem.
|
|||||||
For more information please visit:
|
For more information please visit:
|
||||||
http://www.qbittorrent.org
|
http://www.qbittorrent.org
|
||||||
|
|
||||||
|
or our wiki here:
|
||||||
|
http://wiki.qbittorrent.org
|
||||||
|
|
||||||
Please report any bug (or feature request) to:
|
Please report any bug (or feature request) to:
|
||||||
http://bugs.qbittorrent.org
|
http://bugs.qbittorrent.org
|
||||||
|
|
||||||
|
|||||||
37
TODO
@@ -1,37 +1,2 @@
|
|||||||
// Easy
|
See https://blueprints.launchpad.net/qbittorrent/
|
||||||
- Translations into as many languages as possible
|
|
||||||
- Use Launchpad/Rosetta for translations once it supports TS files
|
|
||||||
|
|
||||||
// Intermediate
|
|
||||||
- Port on MacOS, Windows (and create an installer for Windows) - Slow progress
|
|
||||||
- Add some transparency (menus,...), improve look / usabilty
|
|
||||||
- Skins support? (contact Mateusz)
|
|
||||||
|
|
||||||
// Harder
|
|
||||||
- Torrent scheduler ala µtorrent/Bitcomet
|
|
||||||
|
|
||||||
// Waiting for libtorrent
|
|
||||||
- Allow to prioritize torrents (may code this in qBittorrent?)
|
|
||||||
|
|
||||||
// Unsure
|
|
||||||
- Display the peers we are connected to for each torrent with infos (like flag, dl/up speeds, ...)
|
|
||||||
- Azureus spoofing to prevent ban from trackers?
|
|
||||||
- Option to shutdown computer when downloads are finished
|
|
||||||
- NAT checker/Tester
|
|
||||||
- Display hard drive space left?
|
|
||||||
- Make use of dbus on Linux for the single instance instead of socket communication?
|
|
||||||
(http://techbase.kde.org/Development/Tutorials/D-Bus/Accessing_Interfaces)
|
|
||||||
- When favicon can't be downloaded, try to parse the webpage for:
|
|
||||||
<link rel="icon" href="http://example.com/favicon.ico" type="image/vnd.microsoft.icon">
|
|
||||||
* Be careful, the link can be relative
|
|
||||||
- Improve search plugin install (choose in a list taken from plugins.qbittorrent.org)
|
|
||||||
- support zipped torrents? (useful?)
|
|
||||||
- Allow to limit the number of downloading torrents simultaneously (other are paused until a download finishes)
|
|
||||||
|
|
||||||
// in v1.2.0
|
|
||||||
- Allow user to organize the downloads into categories/folders?
|
|
||||||
|
|
||||||
// in v1.1.0
|
|
||||||
- Stop calculating ETAs when ETA column is hidden
|
|
||||||
-> See https://blueprints.launchpad.net/qbittorrent
|
|
||||||
|
|
||||||
|
|||||||
442
configure
vendored
@@ -18,18 +18,12 @@ Main options:
|
|||||||
--help This help text.
|
--help This help text.
|
||||||
|
|
||||||
Dependency options:
|
Dependency options:
|
||||||
--with-libtorrent-inc=[path] Path to libtorrent include files
|
--with-libboost-inc=[path] Path to libboost include files
|
||||||
--with-libtorrent-lib=[path] Path to libtorrent library files
|
--disable-libnotify Disable use of libnotify
|
||||||
--with-libtorrent-static-lib=[path] Path to libtorrent .a file
|
--disable-geoip-database Disable use of geoip-database
|
||||||
--with-libboost-inc=[path] Path to libboost include files
|
--with-geoip-database-embedded Geoip Database will be embedded in
|
||||||
--with-libcurl-inc=[path] Path to libcurl include files
|
qBittorrent executable (please follow
|
||||||
--with-libcurl-lib=[path] Path to libcurl library files
|
instructions in src/geoip/README)
|
||||||
--disable-libmagick Disable use of libmagick
|
|
||||||
--with-libmagick-inc=[path] Path to libmagick++ include files
|
|
||||||
--with-libmagick-lib=[path] Path to libmagick++ library files
|
|
||||||
--disable-libzzip Disable use of libzzip
|
|
||||||
--with-libzzip-inc=[path] Path to libzzip++ include files
|
|
||||||
--with-libzzip-lib=[path] Path to libzzip++ library files
|
|
||||||
|
|
||||||
EOT
|
EOT
|
||||||
}
|
}
|
||||||
@@ -146,63 +140,23 @@ while [ $# -gt 0 ]; do
|
|||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--with-libtorrent-inc=*)
|
|
||||||
QC_WITH_LIBTORRENT_INC=$optarg
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
|
|
||||||
--with-libtorrent-lib=*)
|
|
||||||
QC_WITH_LIBTORRENT_LIB=$optarg
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
|
|
||||||
--with-libtorrent-static-lib=*)
|
|
||||||
QC_WITH_LIBTORRENT_STATIC_LIB=$optarg
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
|
|
||||||
--with-libboost-inc=*)
|
--with-libboost-inc=*)
|
||||||
QC_WITH_LIBBOOST_INC=$optarg
|
QC_WITH_LIBBOOST_INC=$optarg
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--with-libcurl-inc=*)
|
--disable-libnotify)
|
||||||
QC_WITH_LIBCURL_INC=$optarg
|
QC_DISABLE_libnotify="Y"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--with-libcurl-lib=*)
|
--disable-geoip-database)
|
||||||
QC_WITH_LIBCURL_LIB=$optarg
|
QC_DISABLE_geoip_database="Y"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--disable-libmagick)
|
--with-geoip-database-embedded)
|
||||||
QC_DISABLE_libmagick="Y"
|
QC_WITH_GEOIP_DATABASE_EMBEDDED="Y"
|
||||||
shift
|
|
||||||
;;
|
|
||||||
|
|
||||||
--with-libmagick-inc=*)
|
|
||||||
QC_WITH_LIBMAGICK_INC=$optarg
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
|
|
||||||
--with-libmagick-lib=*)
|
|
||||||
QC_WITH_LIBMAGICK_LIB=$optarg
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
|
|
||||||
--disable-libzzip)
|
|
||||||
QC_DISABLE_libzzip="Y"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
|
|
||||||
--with-libzzip-inc=*)
|
|
||||||
QC_WITH_LIBZZIP_INC=$optarg
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
|
|
||||||
--with-libzzip-lib=*)
|
|
||||||
QC_WITH_LIBZZIP_LIB=$optarg
|
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -227,18 +181,10 @@ echo PREFIX=$PREFIX
|
|||||||
echo BINDIR=$BINDIR
|
echo BINDIR=$BINDIR
|
||||||
echo DATADIR=$DATADIR
|
echo DATADIR=$DATADIR
|
||||||
echo EX_QTDIR=$EX_QTDIR
|
echo EX_QTDIR=$EX_QTDIR
|
||||||
echo QC_WITH_LIBTORRENT_INC=$QC_WITH_LIBTORRENT_INC
|
|
||||||
echo QC_WITH_LIBTORRENT_LIB=$QC_WITH_LIBTORRENT_LIB
|
|
||||||
echo QC_WITH_LIBTORRENT_STATIC_LIB=$QC_WITH_LIBTORRENT_STATIC_LIB
|
|
||||||
echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC
|
echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC
|
||||||
echo QC_WITH_LIBCURL_INC=$QC_WITH_LIBCURL_INC
|
echo QC_DISABLE_libnotify=$QC_DISABLE_libnotify
|
||||||
echo QC_WITH_LIBCURL_LIB=$QC_WITH_LIBCURL_LIB
|
echo QC_DISABLE_geoip_database=$QC_DISABLE_geoip_database
|
||||||
echo QC_DISABLE_libmagick=$QC_DISABLE_libmagick
|
echo QC_WITH_GEOIP_DATABASE_EMBEDDED=$QC_WITH_GEOIP_DATABASE_EMBEDDED
|
||||||
echo QC_WITH_LIBMAGICK_INC=$QC_WITH_LIBMAGICK_INC
|
|
||||||
echo QC_WITH_LIBMAGICK_LIB=$QC_WITH_LIBMAGICK_LIB
|
|
||||||
echo QC_DISABLE_libzzip=$QC_DISABLE_libzzip
|
|
||||||
echo QC_WITH_LIBZZIP_INC=$QC_WITH_LIBZZIP_INC
|
|
||||||
echo QC_WITH_LIBZZIP_LIB=$QC_WITH_LIBZZIP_LIB
|
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -343,88 +289,53 @@ cat >$1/modules.cpp <<EOT
|
|||||||
#line 1 "qt4.qcm"
|
#line 1 "qt4.qcm"
|
||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: Qt >= 4.3
|
name: Qt >= 4.4
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
class qc_qt4 : public ConfObj
|
class qc_qt4 : public ConfObj
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_qt4(Conf *c) : ConfObj(c) {}
|
qc_qt4(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "Qt >= 4.3"; }
|
QString name() const { return "Qt >= 4.4"; }
|
||||||
QString shortname() const { return "Qt 4.3"; }
|
QString shortname() const { return "Qt 4.4"; }
|
||||||
bool exec()
|
bool exec()
|
||||||
{
|
{
|
||||||
return(QT_VERSION >= 0x040300);
|
if(QT_VERSION >= 0x040500) {
|
||||||
|
conf->addDefine("QT_4_5");
|
||||||
|
}
|
||||||
|
return(QT_VERSION >= 0x040400);
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
#line 1 "libtorrent.qcm"
|
#line 1 "libtorrent-rasterbar.qcm"
|
||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: libtorrent
|
name: libtorrent-rasterbar
|
||||||
arg: with-libtorrent-inc=[path], Path to libtorrent include files
|
|
||||||
arg: with-libtorrent-lib=[path], Path to libtorrent library files
|
|
||||||
arg: with-libtorrent-static-lib=[path], Path to libtorrent .a file
|
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
class qc_libtorrent : public ConfObj
|
// see Conf::findPkgConfig
|
||||||
|
class qc_libtorrent_rasterbar : public ConfObj
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_libtorrent(Conf *c) : ConfObj(c) {}
|
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "libtorrent >= 0.13"; }
|
QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.15.0 advised)"; }
|
||||||
QString shortname() const { return "libtorrent"; }
|
QString shortname() const { return "libtorrent-rasterbar"; }
|
||||||
bool exec(){
|
bool exec(){
|
||||||
QString s;
|
QStringList incs;
|
||||||
s = conf->getenv("QC_WITH_LIBTORRENT_INC");
|
QString req_ver = "0.14.0";
|
||||||
if(!s.isEmpty()) {
|
QString adv_ver = "0.15.0";
|
||||||
if(!conf->checkHeader(s, "libtorrent/lsd.hpp")) {
|
QString version, libs, other;
|
||||||
return false;
|
VersionMode mode = VersionMin;
|
||||||
}
|
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
|
||||||
}else{
|
return false;
|
||||||
QStringList sl;
|
for(int n = 0; n < incs.count(); ++n)
|
||||||
sl << "/usr/include";
|
conf->addIncludePath(incs[n]);
|
||||||
sl << "/usr/local/include";
|
if(!libs.isEmpty())
|
||||||
bool found = false;
|
conf->addLib(libs);
|
||||||
foreach(s, sl){
|
if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other))
|
||||||
if(conf->checkHeader(s, "libtorrent/lsd.hpp")){
|
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());
|
||||||
found = true;
|
else
|
||||||
break;
|
conf->addDefine("LIBTORRENT_0_15");
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
conf->addIncludePath(s);
|
|
||||||
conf->addIncludePath(s+QDir::separator()+"libtorrent");
|
|
||||||
|
|
||||||
s = conf->getenv("QC_WITH_LIBTORRENT_STATIC_LIB");
|
|
||||||
if(!s.isEmpty() && QFile::exists(s) && s.endsWith(".a")){
|
|
||||||
conf->addLib(s);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
s = conf->getenv("QC_WITH_LIBTORRENT_LIB");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!conf->checkLibrary(s, "torrent")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/lib/";
|
|
||||||
sl << "/usr/lib64/";
|
|
||||||
sl << "/usr/local/lib/";
|
|
||||||
sl << "/usr/local/lib64/";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkLibrary(s, "torrent")){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) return false;
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -485,218 +396,76 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
#line 1 "libcurl.qcm"
|
#line 1 "libnotify.qcm"
|
||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: libcommoncpp2
|
name: libnotify
|
||||||
arg: with-libcurl-inc=[path], Path to libcurl include files
|
|
||||||
arg: with-libcurl-lib=[path], Path to libcurl library files
|
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
class qc_libcurl : public ConfObj
|
// see Conf::findPkgConfig
|
||||||
|
class qc_libnotify : public ConfObj
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_libcurl(Conf *c) : ConfObj(c) {}
|
qc_libnotify(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "libcurl"; }
|
QString name() const { return "libnotify >= 0.4.2 (optional)"; }
|
||||||
QString shortname() const { return "libcurl"; }
|
QString shortname() const { return "libnotify"; }
|
||||||
bool exec(){
|
bool exec(){
|
||||||
QString s;
|
QStringList incs;
|
||||||
s = conf->getenv("QC_WITH_LIBCURL_INC");
|
QString req_ver = "0.4.2";
|
||||||
if(!s.isEmpty()) {
|
QString version, libs, other;
|
||||||
if(!conf->checkHeader(s, "curl/curl.h")) {
|
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;
|
return false;
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/include";
|
|
||||||
sl << "/usr/local/include";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkHeader(s, "curl/curl.h")){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(!found) {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
conf->addIncludePath(s);
|
|
||||||
|
|
||||||
s = conf->getenv("QC_WITH_LIBCURL_LIB");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!QFile::exists(s+QString("/libcurl.so")))
|
|
||||||
return false;
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/lib/";
|
|
||||||
sl << "/usr/lib64/";
|
|
||||||
sl << "/usr/local/lib/";
|
|
||||||
sl << "/usr/local/lib64/";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(QFile::exists(s+QString("libcurl.so"))){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) return false;
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
#line 1 "libmagick.qcm"
|
#line 1 "geoip-database.qcm"
|
||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: libmagick
|
name: geoip-database
|
||||||
arg: with-libmagick-inc=[path], Path to libmagick++ include files
|
arg: with-geoip-database-embedded, Geoip Database will be embedded in qBittorrent executable (please follow instructions in src/geoip/README)
|
||||||
arg: with-libmagick-lib=[path], Path to libmagick++ library files
|
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
#include <QProcess>
|
// see Conf::findPkgConfig
|
||||||
class qc_libmagick : public ConfObj
|
class qc_geoip_database : public ConfObj
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_libmagick(Conf *c) : ConfObj(c) {}
|
qc_geoip_database(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "ImageMagick library (libmagick++)"; }
|
QString name() const { return "GeoIP Database (optional)"; }
|
||||||
QString shortname() const { return "libmagick++"; }
|
QString shortname() const { return "GeoIP Database"; }
|
||||||
QString checkString() const {
|
bool exec() {
|
||||||
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
|
#ifdef Q_WS_X11
|
||||||
return "";
|
if(!conf->getenv("QC_WITH_GEOIP_DATABASE_EMBEDDED").isEmpty()) {
|
||||||
return ConfObj::checkString();
|
#endif
|
||||||
}
|
conf->addDefine("WITH_GEOIP_EMBEDDED");
|
||||||
bool exec(){
|
printf(" embedded and");
|
||||||
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
|
return true;
|
||||||
return false;
|
#ifdef Q_WS_X11
|
||||||
QString s;
|
|
||||||
s = conf->getenv("QC_WITH_LIBMAGICK_INC");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!conf->checkHeader(s, "Magick++.h")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/include";
|
|
||||||
sl << "/usr/local/include";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkHeader(s, "Magick++.h")){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found)
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
conf->addIncludePath(s);
|
if(QFile::exists("/usr/share/GeoIP/GeoIP.dat") || QFile::exists("/usr/local/share/GeoIP/GeoIP.dat") || QFile::exists("/var/lib/GeoIP/GeoIP.dat"))
|
||||||
|
return true;
|
||||||
s = conf->getenv("QC_WITH_LIBMAGICK_LIB");
|
printf("\nWarning: GeoIP database was not found at /usr/share/GeoIP/GeoIP.dat or /var/lib/GeoIP/GeoIP.dat\nCountry resolution will be slow.");
|
||||||
if(!s.isEmpty()) {
|
return false;
|
||||||
if(!conf->checkLibrary(s, "Magick++")) {
|
#endif
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/lib/";
|
|
||||||
sl << "/usr/lib64/";
|
|
||||||
sl << "/usr/local/lib/";
|
|
||||||
sl << "/usr/local/lib64/";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkLibrary(s, "Magick++")) {
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
QProcess magickConfig;
|
|
||||||
QStringList params;
|
|
||||||
params << "--libs";
|
|
||||||
magickConfig.start("Magick++-config", params, QIODevice::ReadOnly);
|
|
||||||
magickConfig.waitForStarted();
|
|
||||||
magickConfig.waitForFinished();
|
|
||||||
QByteArray result = magickConfig.readAll();
|
|
||||||
result = result.replace("\n", "");
|
|
||||||
conf->addLib(result.data());
|
|
||||||
conf->addDefine("HAVE_MAGICK");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#line 1 "libzzip.qcm"
|
|
||||||
/*
|
|
||||||
-----BEGIN QCMOD-----
|
|
||||||
name: libzzip
|
|
||||||
arg: with-libzzip-inc=[path], Path to libzzip++ include files
|
|
||||||
arg: with-libzzip-lib=[path], Path to libzzip++ library files
|
|
||||||
-----END QCMOD-----
|
|
||||||
*/
|
|
||||||
#include <QProcess>
|
|
||||||
class qc_libzzip : public ConfObj
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
qc_libzzip(Conf *c) : ConfObj(c) {}
|
|
||||||
QString name() const { return "Zzip library (libzzip)"; }
|
|
||||||
QString shortname() const { return "libzzip"; }
|
|
||||||
QString checkString() const {
|
|
||||||
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
|
|
||||||
return "";
|
|
||||||
return ConfObj::checkString();
|
|
||||||
}
|
|
||||||
bool exec(){
|
|
||||||
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
|
|
||||||
return false;
|
|
||||||
QString s;
|
|
||||||
s = conf->getenv("QC_WITH_LIBZZIP_INC");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!conf->checkHeader(s, "zzip/zzip.h")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/include";
|
|
||||||
sl << "/usr/local/include";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkHeader(s, "zzip/zzip.h")){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
conf->addIncludePath(s);
|
|
||||||
|
|
||||||
s = conf->getenv("QC_WITH_LIBZZIP_LIB");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!QFile::exists(s+QString("/libzzip.so"))){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/lib/";
|
|
||||||
sl << "/usr/lib64/";
|
|
||||||
sl << "/usr/local/lib/";
|
|
||||||
sl << "/usr/local/lib64/";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(QFile::exists(s+QString("libzzip.so"))){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
conf->addLib("-lzzip");
|
|
||||||
conf->addDefine("HAVE_ZZIP");
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -705,19 +474,16 @@ cat >$1/modules_new.cpp <<EOT
|
|||||||
o = new qc_qt4(conf);
|
o = new qc_qt4(conf);
|
||||||
o->required = true;
|
o->required = true;
|
||||||
o->disabled = false;
|
o->disabled = false;
|
||||||
o = new qc_libtorrent(conf);
|
o = new qc_libtorrent_rasterbar(conf);
|
||||||
o->required = true;
|
o->required = true;
|
||||||
o->disabled = false;
|
o->disabled = false;
|
||||||
o = new qc_libboost(conf);
|
o = new qc_libboost(conf);
|
||||||
o->required = true;
|
o->required = true;
|
||||||
o->disabled = false;
|
o->disabled = false;
|
||||||
o = new qc_libcurl(conf);
|
o = new qc_libnotify(conf);
|
||||||
o->required = true;
|
|
||||||
o->disabled = false;
|
|
||||||
o = new qc_libmagick(conf);
|
|
||||||
o->required = false;
|
o->required = false;
|
||||||
o->disabled = false;
|
o->disabled = false;
|
||||||
o = new qc_libzzip(conf);
|
o = new qc_geoip_database(conf);
|
||||||
o->required = false;
|
o->required = false;
|
||||||
o->disabled = false;
|
o->disabled = false;
|
||||||
|
|
||||||
@@ -1665,18 +1431,10 @@ export PREFIX
|
|||||||
export BINDIR
|
export BINDIR
|
||||||
export DATADIR
|
export DATADIR
|
||||||
export EX_QTDIR
|
export EX_QTDIR
|
||||||
export QC_WITH_LIBTORRENT_INC
|
|
||||||
export QC_WITH_LIBTORRENT_LIB
|
|
||||||
export QC_WITH_LIBTORRENT_STATIC_LIB
|
|
||||||
export QC_WITH_LIBBOOST_INC
|
export QC_WITH_LIBBOOST_INC
|
||||||
export QC_WITH_LIBCURL_INC
|
export QC_DISABLE_libnotify
|
||||||
export QC_WITH_LIBCURL_LIB
|
export QC_DISABLE_geoip_database
|
||||||
export QC_DISABLE_libmagick
|
export QC_WITH_GEOIP_DATABASE_EMBEDDED
|
||||||
export QC_WITH_LIBMAGICK_INC
|
|
||||||
export QC_WITH_LIBMAGICK_LIB
|
|
||||||
export QC_DISABLE_libzzip
|
|
||||||
export QC_WITH_LIBZZIP_INC
|
|
||||||
export QC_WITH_LIBZZIP_LIB
|
|
||||||
export QC_VERBOSE
|
export QC_VERBOSE
|
||||||
rm -rf .qconftemp
|
rm -rf .qconftemp
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -1,17 +1,19 @@
|
|||||||
.\" This manpage has been automatically generated by docbook2man
|
.\" This manpage has been automatically generated by docbook2man
|
||||||
.\" from a DocBook document. This tool can be found at:
|
.\" from a DocBook document. This tool can be found at:
|
||||||
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>.
|
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>.
|
||||||
.TH "QBITTORRENT" "1" "September 1st 2007" "Bittorrent client written in C++ / Qt4" ""
|
.TH "QBITTORRENT" "1" "September 30th 2009" "Bittorrent client written in C++ / Qt4" ""
|
||||||
|
|
||||||
.SH NAME
|
.SH "NAME"
|
||||||
qBittorrent \- a Bittorrent client written in C++ / Qt4
|
qBittorrent \- a Bittorrent client written in C++ / Qt4
|
||||||
.SH SYNOPSIS
|
|
||||||
|
|
||||||
\fBqbittorrent\fR [FILE | URL] [FILE | URL...]
|
.SH "SYNOPSIS"
|
||||||
|
|
||||||
|
\fBqbittorrent\fR [\-\-no-splash] [TORRENT_FILE | URL]...
|
||||||
|
|
||||||
\fBqbittorrent\fR \-\-help
|
\fBqbittorrent\fR \-\-help
|
||||||
|
|
||||||
\fBqbittorrent\fR \-\-version
|
\fBqbittorrent\fR \-\-version
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
.SH "DESCRIPTION"
|
.SH "DESCRIPTION"
|
||||||
|
|
||||||
@@ -19,10 +21,21 @@ qBittorrent \- a Bittorrent client written in C++ / Qt4
|
|||||||
using the \fBrblibtorrent\fR library by Arvid Norberg. qBittorrent aims
|
using the \fBrblibtorrent\fR library by Arvid Norberg. qBittorrent aims
|
||||||
to be a good alternative to all other bittorrent clients out there. qBittorrent
|
to be a good alternative to all other bittorrent clients out there. qBittorrent
|
||||||
is fast, stable, light, it supports unicode and it provides a good integrated search engine.
|
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), FAST extension (mainline) and PeX support (utorrent compatible).
|
It also comes with UPnP port forwarding / NAT-PMP, encryption (Azureus compatible),
|
||||||
|
FAST extension (mainline) and PeX support (utorrent compatible).
|
||||||
|
|
||||||
|
.SH "OPTIONS"
|
||||||
|
|
||||||
|
\fB--help\fR Prints the command line options.
|
||||||
|
|
||||||
|
\fB--version\fR Prints qbittorrent program version number.
|
||||||
|
|
||||||
|
\fB--no-splash\fR Disables splash screen on startup.
|
||||||
|
|
||||||
|
.SH "BUGS"
|
||||||
|
|
||||||
|
If you find a bug, please report it at http://bugs.qbittorrent.org
|
||||||
|
|
||||||
Please report any problem to http://bugs.qbittorrent.org
|
|
||||||
.PP
|
|
||||||
.SH "AUTHOR"
|
.SH "AUTHOR"
|
||||||
|
|
||||||
Christophe Dumez <chris@qbittorrent.org>
|
Christophe Dumez <chris@qbittorrent.org>
|
||||||
|
|||||||
@@ -1,134 +0,0 @@
|
|||||||
qbittorrent (0.6.1-1) unstable; urgency=low
|
|
||||||
|
|
||||||
* Disabled debug mode
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Mon, 28 Aug 2006 21:22:48 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.6.1-0) unstable; urgency=low
|
|
||||||
* BUGFIX: Fixed possible segfaults when using context menus
|
|
||||||
* BUGFIX: Cleanup up context menus code
|
|
||||||
* BUGFIX: Used best gzip compressing for manpage
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Thu, 24 Aug 2006 19:53:32 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.6.0) unstable; urgency=low
|
|
||||||
* FEATURE: Rewritten the download list from scratch (more flexible)
|
|
||||||
* FEATURE: Rewritten the search results list from scratch (more flexible)
|
|
||||||
* FEATURE: Rewritten the torrent properties list from scratch (more flexible)
|
|
||||||
* FEATURE: Improved and cleaned up search engine code
|
|
||||||
* FEATURE: Search results are now displayed in real time (not sequentially)
|
|
||||||
* FEATURE: Added two command lines parameters (--version, --help)
|
|
||||||
* FEATURE: Added a popup menu for download list
|
|
||||||
* FEATURE: Double-click on an item now toggles the paused state of a download
|
|
||||||
* FEATURE: Improved code to be more portable (Windows & MacOS versions should arrive soon)
|
|
||||||
* FEATURE: Allow to toggle selected state of a file within a torrent using double-click
|
|
||||||
* FEATURE: Remember columns width in download and search results lists
|
|
||||||
* BUGFIX: Don't use pkg-config for libcurl anymore (easier to compile)
|
|
||||||
* BUGFIX: Fixed ETA calculation when downloading while connecting
|
|
||||||
* BUGFIX: Download progress is now displayed correctly during first seconds of execution (was 0% before)
|
|
||||||
* BUGFIX: Code cleanup & optimization
|
|
||||||
* BUGFIX: Fixed sorting in download list
|
|
||||||
* BUGFIX: Fixed sorting in search results list
|
|
||||||
* BUGFIX: Fixed Parameters passing between instances
|
|
||||||
* BUGFIX: Fixed missing icon for clear action in infoBar popup menu
|
|
||||||
* BUGFIX: Fixed truncated lines in search results
|
|
||||||
* BUGFIX: Don't refresh download list when user is in search tab (save CPU)
|
|
||||||
* BUGFIX: Don't update Progress/DL Speed/ETA for finished downloads (save CPU)
|
|
||||||
* BUGFIX: Save selected search engines only when they have changed (faster program exit)
|
|
||||||
* COSMETIC: Increased icon size in toolbar from 24px to 32px
|
|
||||||
* COSMETIC: Display a progress bar to visualize each download progress
|
|
||||||
* COSMETIC: Size of each result in search are displayed in user friendly units
|
|
||||||
* COSMETIC: Display a progress bar to visualize each file progress within a torrent
|
|
||||||
* COSMETIC: Renamed 'ratio' to 'Session ratio' (makes more sense)
|
|
||||||
* COSMETIC: Improved layout of torrent properties window when maximized
|
|
||||||
* COSMETIC: Now number of search results is updated in real time
|
|
||||||
* COSMETIC: Remember last window size
|
|
||||||
* COSMETIC: Improved splash screen look
|
|
||||||
* COSMETIC: Improved default width of columns in download and search results lists
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Wed, 22 Aug 2006 10:42:37 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.5.0) unstable; urgency=low
|
|
||||||
* Improved "Download from url" feature (now supports https, ftp & redirections)
|
|
||||||
* Added a torrent creation tool
|
|
||||||
* Display progress for each file within a torrent
|
|
||||||
* Based on new libtorrent v0.10 (lot of improvements)
|
|
||||||
* Now possible to clear log textbox (popup menu)
|
|
||||||
* Added two search engines (isohunt, torrentreactor)
|
|
||||||
* Now Display share ratio on main window
|
|
||||||
* Use OSD (On Screen Display) when a download or a search is finished
|
|
||||||
* Allow only one instance of qBittorrent (and add new parameters to download list)
|
|
||||||
* Remember last selected search engines in search tab
|
|
||||||
* Improved search engines status output (Aborted, timed out, finished, no results)
|
|
||||||
* qBittorrent can now update search plugin from qbittorrent.org
|
|
||||||
* Added Slovak, Italian, Portuguese, Romanian and Traditional Chinese languages
|
|
||||||
* Fixed ThePirateBay parser for search engine (website had changed)
|
|
||||||
* Fixed filenames for results from ThePirateBay search engine
|
|
||||||
* Fixed unicode support for ThePirateBay search engine
|
|
||||||
* Now search results are sorted by seeds
|
|
||||||
* Overwrite nova.py search plugin only if it is outdated
|
|
||||||
* Fixed possible division by 0 in ETA calculation
|
|
||||||
* Improved ETA calculation precision
|
|
||||||
* Fixed default tab in options
|
|
||||||
* When saving options, reconnect only when listening ports changed
|
|
||||||
* qBittorrent has now its own new logo
|
|
||||||
* Display status "downloading" if DL Speed > 0 (even when tracker is down)
|
|
||||||
* Added a splashscreen
|
|
||||||
* qBittorrent has new cute icons
|
|
||||||
* Display number of results in search tab
|
|
||||||
* Added icons for each item in download list according to its state
|
|
||||||
* Redesigned Locale settings
|
|
||||||
* Fixed search engines names width (were cut on the right)
|
|
||||||
* Moved search engines to the left of the window (better ui)
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Wed, 2 Aug 2006 19:46:32 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.4.1) unstable; urgency=low
|
|
||||||
* Not counting "protocol chatter" in UP/DL speed anymore
|
|
||||||
* Download speed is now 0 when download is finished
|
|
||||||
* Paused torrents remain paused when qbittorrent is re-started
|
|
||||||
* Added option "go to systray when minimizing"
|
|
||||||
* Added option "Clear finished downloads on exit"
|
|
||||||
* Added option "Ask user for confirmation on exit"
|
|
||||||
* Added "Stalled" status for downloads (colored in orange, paused are in red and finished in green)
|
|
||||||
* Fixed Search window layout on maximizing
|
|
||||||
* Fixed a bug that caused upload limit not to be always applied
|
|
||||||
* Added Bulgarian translation
|
|
||||||
* Updated Translations
|
|
||||||
* Code optimization
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Thu, 22 Jun 2006 20:14:27 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.4.0) unstable; urgency=low
|
|
||||||
|
|
||||||
* Added a search engine (supports Mininova & thepiratebay websites)
|
|
||||||
* Fixed critical bug: some options were not applied correctly to BT session
|
|
||||||
* Possibility to download a torrent file from an URL
|
|
||||||
* Added confirmation dialog on qbittorrent exit
|
|
||||||
* Enabled sorting in Download list
|
|
||||||
* Added Ukrainian translation
|
|
||||||
* Support urls as program parameters
|
|
||||||
* Added more actions to trayicon menu
|
|
||||||
* Fixed exception catching when retrieving fastresume data
|
|
||||||
* use Binary prefix standards from IEC 60027-2 for units (B, KiB, MiB, GiB, TiB)
|
|
||||||
* Iconification to systray when minimizing
|
|
||||||
* Code Cleanup & optimization
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Wed, 14 Jun 2006 14:47:27 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.3.1) unstable; urgency=low
|
|
||||||
|
|
||||||
* Fixed toolbar layout (spacing).
|
|
||||||
* Added Russian translation.
|
|
||||||
* Resume also finished files on startup (for seeding).
|
|
||||||
* Added colors corresponding to download state.
|
|
||||||
* Fixed a segfault when deleting a download (if no scan dir is set).
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Sat, 6 Jun 2006 21:36:27 +0200
|
|
||||||
|
|
||||||
|
|
||||||
qbittorrent (0.3) unstable; urgency=low
|
|
||||||
|
|
||||||
* Initial Release.
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Sat, 3 Jun 2006 21:57:27 +0200
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
4
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
Source: qbittorrent
|
|
||||||
Section: net
|
|
||||||
Priority: optional
|
|
||||||
Maintainer: Christophe Dumez <chris@qbittorrent.org>
|
|
||||||
Build-Depends: debhelper (>= 4.0.0), autotools-dev, libqt4-core (>= 4.1.0), libqt4-dev (>= 4.1.0), libqt4-gui (>= 4.1.0), rb-libtorrent (>= 0.10), libcurl3-dev
|
|
||||||
Standards-Version: 3.6.2
|
|
||||||
|
|
||||||
Package: qbittorrent
|
|
||||||
Architecture: any
|
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, rb-libtorrent (>= 0.10), python (>= 2.3)
|
|
||||||
Description: Bittorrent client in Qt4.1 / C++
|
|
||||||
qBittorrent is a bittorrent client programmed in C++ / Qt4.1
|
|
||||||
using rb_libtorrent by Arvid Norberg. It aims to be a good
|
|
||||||
alternative to other bittorrent client out there. It is fast,
|
|
||||||
stable and provides unicode support.
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
This is qbittorrent, written and maintained by Christophe Dumez <chris@qbittorrent.org>
|
|
||||||
on Sat, 3 Jun 2006 21:57:27 +0200.
|
|
||||||
|
|
||||||
The original source can always be found at:
|
|
||||||
ftp://ftp.debian.org/dists/unstable/main/source/
|
|
||||||
|
|
||||||
Copyright (C) 2006 Christophe Dumez
|
|
||||||
|
|
||||||
License:
|
|
||||||
|
|
||||||
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 package; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
On Debian systems, the complete text of the GNU General
|
|
||||||
Public License can be found in `/usr/share/common-licenses/GPL'.
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
usr/bin
|
|
||||||
usr/sbin
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
NEWS
|
|
||||||
README
|
|
||||||
TODO
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
#!/usr/bin/make -f
|
|
||||||
# -*- makefile -*-
|
|
||||||
# Sample debian/rules that uses debhelper.
|
|
||||||
# This file was originally written by Joey Hess and Craig Small.
|
|
||||||
# As a special exception, when this file is copied by dh-make into a
|
|
||||||
# dh-make output file, you may use that output file without restriction.
|
|
||||||
# This special exception was added by Craig Small in version 0.37 of dh-make.
|
|
||||||
|
|
||||||
# Uncomment this to turn on verbose mode.
|
|
||||||
#export DH_VERBOSE=1
|
|
||||||
|
|
||||||
|
|
||||||
# These are used for cross-compiling and for saving the configure script
|
|
||||||
# from having to guess our platform (since we know it already)
|
|
||||||
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
|
||||||
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
|
||||||
|
|
||||||
|
|
||||||
CFLAGS = -Wall
|
|
||||||
|
|
||||||
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
|
||||||
CFLAGS += -O0
|
|
||||||
else
|
|
||||||
CFLAGS += -O2
|
|
||||||
endif
|
|
||||||
|
|
||||||
config.status: configure
|
|
||||||
dh_testdir
|
|
||||||
# Add here commands to configure the package.
|
|
||||||
CFLAGS="$(CFLAGS) -Wl,-z,defs" ./configure --prefix=/usr
|
|
||||||
|
|
||||||
|
|
||||||
build: build-stamp
|
|
||||||
|
|
||||||
build-stamp: config.status
|
|
||||||
dh_testdir
|
|
||||||
|
|
||||||
# Add here commands to compile the package.
|
|
||||||
$(MAKE)
|
|
||||||
#docbook-to-man debian/qbittorrent.sgml > qbittorrent.1
|
|
||||||
|
|
||||||
touch build-stamp
|
|
||||||
|
|
||||||
clean:
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
rm -f build-stamp
|
|
||||||
|
|
||||||
# Add here commands to clean up after the build process.
|
|
||||||
-$(MAKE) distclean
|
|
||||||
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
|
|
||||||
cp -f /usr/share/misc/config.sub config.sub
|
|
||||||
endif
|
|
||||||
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
|
|
||||||
cp -f /usr/share/misc/config.guess config.guess
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
dh_clean
|
|
||||||
|
|
||||||
install: build
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_clean -k
|
|
||||||
dh_installdirs
|
|
||||||
|
|
||||||
# Add here commands to install the package into debian/qbittorrent.
|
|
||||||
$(MAKE) install INSTALL_ROOT=$(CURDIR)/debian/qbittorrent
|
|
||||||
|
|
||||||
|
|
||||||
# Build architecture-independent files here.
|
|
||||||
binary-indep: build install
|
|
||||||
# We have nothing to do by default.
|
|
||||||
|
|
||||||
# Build architecture-dependent files here.
|
|
||||||
binary-arch: build install
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_installchangelogs Changelog
|
|
||||||
dh_installdocs
|
|
||||||
dh_installexamples
|
|
||||||
# dh_install
|
|
||||||
# dh_installmenu
|
|
||||||
# dh_installdebconf
|
|
||||||
# dh_installlogrotate
|
|
||||||
# dh_installemacsen
|
|
||||||
# dh_installpam
|
|
||||||
# dh_installmime
|
|
||||||
# dh_installinit
|
|
||||||
# dh_installcron
|
|
||||||
# dh_installinfo
|
|
||||||
dh_installman
|
|
||||||
dh_link
|
|
||||||
dh_strip
|
|
||||||
dh_compress
|
|
||||||
dh_fixperms
|
|
||||||
# dh_perl
|
|
||||||
# dh_python
|
|
||||||
# dh_makeshlibs
|
|
||||||
dh_installdeb
|
|
||||||
dh_shlibdeps
|
|
||||||
dh_gencontrol
|
|
||||||
dh_md5sums
|
|
||||||
dh_builddeb
|
|
||||||
|
|
||||||
binary: binary-indep binary-arch
|
|
||||||
.PHONY: build clean binary-indep binary-arch binary install
|
|
||||||
@@ -1,249 +0,0 @@
|
|||||||
|
|
||||||
%define name qbittorrent
|
|
||||||
%define major 0
|
|
||||||
%define minor 6
|
|
||||||
%define patch 1
|
|
||||||
%define version %{major}.%{minor}.%{patch}
|
|
||||||
%define release %mkrel 2
|
|
||||||
%define _iconsdir %{_datadir}/icons
|
|
||||||
%define _mandir %_datadir/man
|
|
||||||
|
|
||||||
Name: %{name}
|
|
||||||
Summary: A Bittorrent Client using C++ / Qt4
|
|
||||||
Version: %{version}
|
|
||||||
Release: %{release}
|
|
||||||
Source0: http://sourceforge.net/projects/qbittorrent/%{name}-%{version}.tar.gz
|
|
||||||
URL: http://sourceforge.net/projects/qbittorrent
|
|
||||||
Vendor: http://qbittorrent.sourceforge.net/
|
|
||||||
Group: Internet/File Transfer
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
|
|
||||||
License: GPL
|
|
||||||
BuildRequires: libqt4-devel >= 4.1.2, libqtgui4 >= 4.1.2, libqtcore4 >= 4.1.2, libqtxml4 >= 4.1.2, libqtnetwork4 >= 4.1.2, rb_libtorrent-devel >= 0.10-3, libcurl3-devel
|
|
||||||
Requires: libqtgui4 >= 4.1.2, libqtcore4 >= 4.1.2, libqtxml4 >= 4.1.2, libqtnetwork4 >= 4.1.2, librb_libtorrent0 >= 0.10-3, python >= 2.3, libcurl3
|
|
||||||
|
|
||||||
%description
|
|
||||||
A Bittorrent client using C++ / libtorrent and a Qt4 Graphical User Interface.
|
|
||||||
It aims to be as fast as possible and to provide multi-OS, unicode support.
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup
|
|
||||||
|
|
||||||
%build
|
|
||||||
# Export the Environment variables
|
|
||||||
export QTDIR=%_prefix/%_lib/qt4
|
|
||||||
export KDEDIR=%_prefix
|
|
||||||
export LD_LIBRARY_PATH=$QTDIR/%_lib:$KDEDIR/%_lib:$LD_LIBRARY_PATH
|
|
||||||
export PATH=$QTDIR/bin:$KDEDIR/bin:$PATH
|
|
||||||
|
|
||||||
|
|
||||||
# Change to the Source directory and configure
|
|
||||||
#cd src
|
|
||||||
CFLAGS="%optflags" CXXFLAGS="%optflags" \
|
|
||||||
./configure --prefix=%{buildroot}%{_prefix}
|
|
||||||
|
|
||||||
# Necessary to remove old compiled files.. if they exist
|
|
||||||
make clean
|
|
||||||
|
|
||||||
%make
|
|
||||||
|
|
||||||
%install
|
|
||||||
%makeinstall --directory=src
|
|
||||||
|
|
||||||
|
|
||||||
# Create the menu directory
|
|
||||||
install -d %{buildroot}%{_menudir}
|
|
||||||
|
|
||||||
# Build the Menu
|
|
||||||
#<package> <section> <file_in> <file_out> [requires] [title]
|
|
||||||
kdedesktop2mdkmenu.pl %{name} "%{group}" %{buildroot}%{_datadir}/applications/qBittorrent.desktop %{buildroot}%{_menudir}/%{name}
|
|
||||||
|
|
||||||
%clean
|
|
||||||
%{__rm} -rf %{buildroot}
|
|
||||||
|
|
||||||
%post
|
|
||||||
/sbin/ldconfig
|
|
||||||
%{update_menus}
|
|
||||||
|
|
||||||
%postun
|
|
||||||
/sbin/ldconfig
|
|
||||||
%{clean_menus}
|
|
||||||
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root)
|
|
||||||
%doc README INSTALL NEWS COPYING AUTHORS TODO Changelog
|
|
||||||
%doc %{_mandir}/man1/*.bz2
|
|
||||||
|
|
||||||
|
|
||||||
# The binaries
|
|
||||||
%_bindir/*
|
|
||||||
|
|
||||||
|
|
||||||
# Icon files
|
|
||||||
# Hi and Lo colour icons various sizes
|
|
||||||
%_iconsdir/hicolor/128x128/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/16x16/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/192x192/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/22x22/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/24x24/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/32x32/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/36x36/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/48x48/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/64x64/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/72x72/apps/qbittorrent.png
|
|
||||||
%_iconsdir/hicolor/96x96/apps/qbittorrent.png
|
|
||||||
## %_iconsdir/hicolor/scalable/apps/qbittorrent.svgz
|
|
||||||
|
|
||||||
|
|
||||||
# Desktop Link
|
|
||||||
%_datadir/applications/qBittorrent.desktop
|
|
||||||
|
|
||||||
# The qbittorrent Menu directory
|
|
||||||
%dir %{_menudir}
|
|
||||||
%{_menudir}/%{name}
|
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
|
||||||
|
|
||||||
* Wed Aug 23 2006 - Christophe Dumez <chris@qbittorrent.org> - 0.6.0-0.1.2006mdk
|
|
||||||
- FEATURE: Rewritten the download list from scratch (more flexible)
|
|
||||||
- FEATURE: Rewritten the search results list from scratch (more flexible)
|
|
||||||
- FEATURE: Rewritten the torrent properties list from scratch (more flexible)
|
|
||||||
- FEATURE: Improved and cleaned up search engine code
|
|
||||||
- FEATURE: Search results are now displayed in real time (not sequentially)
|
|
||||||
- FEATURE: Added two command lines parameters (--version, --help)
|
|
||||||
- FEATURE: Added a popup menu for download list
|
|
||||||
- FEATURE: Double-click on an item now toggles the paused state of a download
|
|
||||||
- FEATURE: Improved code to be more portable (Windows & MacOS versions should arrive soon)
|
|
||||||
- FEATURE: Allow to toggle selected state of a file within a torrent using double-click
|
|
||||||
- FEATURE: Remember columns width in download and search results lists
|
|
||||||
- BUGFIX: Don't use pkg-config for libcurl anymore (easier to compile)
|
|
||||||
- BUGFIX: Fixed ETA calculation when downloading while connecting
|
|
||||||
- BUGFIX: Download progress is now displayed correctly during first seconds of execution (was 0% before)
|
|
||||||
- BUGFIX: Code cleanup & optimization
|
|
||||||
- BUGFIX: Fixed sorting in download list
|
|
||||||
- BUGFIX: Fixed sorting in search results list
|
|
||||||
- BUGFIX: Fixed Parameters passing between instances
|
|
||||||
- BUGFIX: Fixed missing icon for clear action in infoBar popup menu
|
|
||||||
- BUGFIX: Fixed truncated lines in search results
|
|
||||||
- BUGFIX: Don't refresh download list when user is in search tab (save CPU)
|
|
||||||
- BUGFIX: Don't update Progress/DL Speed/ETA for finished downloads (save CPU)
|
|
||||||
- BUGFIX: Save selected search engines only when they have changed (faster program exit)
|
|
||||||
- COSMETIC: Increased icon size in toolbar from 24px to 32px
|
|
||||||
- COSMETIC: Display a progress bar to visualize each download progress
|
|
||||||
- COSMETIC: Size of each result in search are displayed in user friendly units
|
|
||||||
- COSMETIC: Display a progress bar to visualize each file progress within a torrent
|
|
||||||
- COSMETIC: Renamed 'ratio' to 'Session ratio' (makes more sense)
|
|
||||||
- COSMETIC: Improved layout of torrent properties window when maximized
|
|
||||||
- COSMETIC: Now number of search results is updated in real time
|
|
||||||
- COSMETIC: Remember last window size
|
|
||||||
- COSMETIC: Improved splash screen look
|
|
||||||
- COSMETIC: Improved default width of columns in download and search results lists
|
|
||||||
|
|
||||||
* Tue Aug 08 2006 - Christophe Dumez <chris@qbittorrent.org> - 0.5.0-0.1.20060mdk
|
|
||||||
- FEATURE: Improved "Download from url" feature (now supports https, ftp & redirections)
|
|
||||||
- FEATURE: Added a torrent creation tool
|
|
||||||
- FEATURE: Display progress for each file within a torrent
|
|
||||||
- FEATURE: Based on new libtorrent v0.10 (lot of improvements)
|
|
||||||
- FEATURE: Now possible to clear log textbox (popup menu)
|
|
||||||
- FEATURE: Added two search engines (isohunt, torrentreactor)
|
|
||||||
- FEATURE: Now Display share ratio on main window
|
|
||||||
- FEATURE: Use OSD (On Screen Display) when a download or a search is finished
|
|
||||||
- FEATURE: Allow only one instance of qBittorrent (and add new parameters to download list)
|
|
||||||
- FEATURE: Remember last selected search engines in search tab
|
|
||||||
- FEATURE: Improved search engines status output (Aborted, timed out, finished, no results)
|
|
||||||
- FEATURE: qBittorrent can now update search plugin from qbittorrent.org
|
|
||||||
- I18N: Added Slovak, Italian, Portuguese, Romanian and Traditional Chinese languages
|
|
||||||
- BUGFIX: Fixed ThePirateBay parser for search engine (website had changed)
|
|
||||||
- BUGFIX: Fixed filenames for results from ThePirateBay search engine
|
|
||||||
- BUGFIX: Fixed unicode support for ThePirateBay search engine
|
|
||||||
- BUGFIX: Now search results are sorted by seeds
|
|
||||||
- BUGFIX: Overwrite nova.py search plugin only if it is outdated
|
|
||||||
- BUGFIX: Fixed possible division by 0 in ETA calculation
|
|
||||||
- BUGFIX: Improved ETA calculation precision
|
|
||||||
- BUGFIX: Fixed default tab in options
|
|
||||||
- BUGFIX: When saving options, reconnect only when listening ports changed
|
|
||||||
- COSMETIC: qBittorrent has now its own new logo
|
|
||||||
- COSMETIC: Display status "downloading" if DL Speed > 0 (even when tracker is down)
|
|
||||||
- COSMETIC: Added a splashscreen
|
|
||||||
- COSMETIC: qBittorrent has new cute icons
|
|
||||||
- COSMETIC: Display number of results in search tab
|
|
||||||
- COSMETIC: Added icons for each item in download list according to its state
|
|
||||||
- COSMETIC: Redesigned Locale settings
|
|
||||||
- COSMETIC: Fixed search engines names width (were cut on the right)
|
|
||||||
- COSMETIC: Moved search engines to the left of the window (better ui)
|
|
||||||
|
|
||||||
* Fri Jun 23 2006 - Christophe Dumez <chris@qbittorrent.org> - 0.4.1-0.1.20060mdk
|
|
||||||
- Not counting "protocol chatter" in UP/DL speed anymore
|
|
||||||
- Download speed is now 0 when download is finished
|
|
||||||
- Paused torrents remain paused when qbittorrent is re-started
|
|
||||||
- Added option "go to systray when minimizing"
|
|
||||||
- Added option "Clear finished downloads on exit"
|
|
||||||
- Added option "Ask user for confirmation on exit"
|
|
||||||
- Added "Stalled" status for downloads (colored in orange, paused are in red and finished in green)
|
|
||||||
- Fixed Search window layout on maximizing
|
|
||||||
- Fixed a bug that caused upload limit not to be always applied
|
|
||||||
- Added Bulgarian translation
|
|
||||||
- Updated Translations
|
|
||||||
- Code optimization
|
|
||||||
|
|
||||||
* Tue Jun 13 2006 - Christophe Dumez <chris@qbittorrent.org> - 0.4.0-0.1.20060mdk
|
|
||||||
- Added a search engine (supports Mininova & thepiratebay websites)
|
|
||||||
- Fixed critical bug: some options were not applied correctly to BT session
|
|
||||||
- Possibility to download a torrent file from an URL
|
|
||||||
- Added confirmation dialog on qbittorrent exit
|
|
||||||
- Enabled sorting in Download list
|
|
||||||
- Added Ukrainian translation
|
|
||||||
- Support urls as program parameters
|
|
||||||
- Added more actions to trayicon menu
|
|
||||||
- Fixed exception catching when retrieving fastresume data
|
|
||||||
- use Binary prefix standards from IEC 60027-2 for units (B, KiB, MiB, GiB, TiB)
|
|
||||||
- Iconification to systray when minimizing
|
|
||||||
- Code Cleanup & optimization
|
|
||||||
|
|
||||||
* Tue Jun 06 2006 - Christophe Dumez <chris@qbittorrent.org> - 0.3.1-0.1.20060mdk
|
|
||||||
- Fixed toolbar layout (spacing)
|
|
||||||
- Added Russian translation
|
|
||||||
- Resume also finished files on startup (for seeding)
|
|
||||||
- Added colors corresponding to download state
|
|
||||||
- Fixed a segfault when deleting a download (if no scan dir is set)
|
|
||||||
|
|
||||||
* Mon Jun 05 2006 - Christophe Dumez <chris@qbittorrent.org> - 0.3-0.1.20060mdk
|
|
||||||
- Fixed auto-resume (worked only once)
|
|
||||||
- Fixed BT_Backup dir creation on first startup (thanks Peter)
|
|
||||||
- Now min port and max port are inverted if (min port > max port)
|
|
||||||
- Fixed memory leaks
|
|
||||||
- Added qbittorrent man page
|
|
||||||
- Allow to disable max connections limit (default is disabled)
|
|
||||||
- Disable upload limit by default
|
|
||||||
- Added Menu Entry with icon (thanks Peter)
|
|
||||||
- Restructured directory, now Makefile is in main directory (not src/)
|
|
||||||
- Updated README / INSTALL
|
|
||||||
|
|
||||||
* Fri Jun 02 2006 - Christophe Dumez <chris@qbittorrent.org> 0.2.3-0.1.20060mdk
|
|
||||||
- Fixed ports checking function (user couldn't type the value he wanted)
|
|
||||||
- Check tracker errors list size and clear it if it becomes too big.
|
|
||||||
- qBittorrent does not remove .torrent file from scanned directory anymore
|
|
||||||
- Small cosmetic change
|
|
||||||
|
|
||||||
* Wed May 31 2006 Christophe Dumez <chris@qbittorrent.org> 0.2.2-0.1.20060mdk
|
|
||||||
- Fixed missing icons
|
|
||||||
|
|
||||||
* Sat May 27 2006 Jeffery Fernandez <developer@jefferyfernandez.id.au> 0.2.1-0.1.20060mdk
|
|
||||||
- Initial Build for Mandriva Linux
|
|
||||||
|
|
||||||
* Thu May 25 2006 Christophe Dumez <chris@qbittorrent.org>
|
|
||||||
- Fixed "make install" rule
|
|
||||||
- Disabled debug mode
|
|
||||||
|
|
||||||
* Thu May 25 2006 Christophe Dumez <chris@qbittorrent.org> - v0.2
|
|
||||||
- Fixed a compatibility problem with some versions of qmake
|
|
||||||
- Added translations : Greek, Swedish
|
|
||||||
- Fixed Polish translation selection
|
|
||||||
- Fixed come warning because of two unexisting slots
|
|
||||||
- Improved "Apply" button behaviour in options
|
|
||||||
- Windows are now resizable
|
|
||||||
|
|
||||||
* Tue May 16 2006 Christophe Dumez <chris@qbittorrent.org> - v0.1
|
|
||||||
- Initial release (lack features & still need a lot of improvements)
|
|
||||||
|
|
||||||
@@ -1,147 +0,0 @@
|
|||||||
|
|
||||||
%define package_name rb_libtorrent
|
|
||||||
%define orig_name libtorrent
|
|
||||||
%define major 0
|
|
||||||
%define minor .10
|
|
||||||
%define patch .1
|
|
||||||
%define version %{major}%{minor}
|
|
||||||
%define candidate -rc1
|
|
||||||
%define lib_name %mklibname %{package_name} %{major}
|
|
||||||
%define release %mkrel 4
|
|
||||||
|
|
||||||
Summary : libtorrent is a C++ bittorrent library.
|
|
||||||
Name : %{package_name}
|
|
||||||
Version : %{version}
|
|
||||||
Release : %{release}
|
|
||||||
License : GPL
|
|
||||||
Group : Development/C++
|
|
||||||
Source0 : http://www.rasterbar.com/products/libtorrent/libtorrent-%{version}.tar.gz
|
|
||||||
URL : http://www.rasterbar.com
|
|
||||||
BuildRequires : boost >= 1.33.1
|
|
||||||
BuildRoot : %{_tmppath}/%{orig_name}-%{version}-%{release}-root
|
|
||||||
Patch0 : file_progress_arvid.patch.bz2
|
|
||||||
|
|
||||||
%description
|
|
||||||
libtorrent is a C++ library that aims to be a good alternative
|
|
||||||
to all the other bittorrent implementations around.
|
|
||||||
|
|
||||||
|
|
||||||
%package -n %{package_name}-devel
|
|
||||||
Group : Development/C++
|
|
||||||
Summary : Development files for %{package_name}
|
|
||||||
Conflicts : libtorrent7-devel
|
|
||||||
|
|
||||||
%description -n %{package_name}-devel
|
|
||||||
Development files for %{package_name}
|
|
||||||
|
|
||||||
%package -n %{lib_name}
|
|
||||||
Group : Development/C++
|
|
||||||
Summary : Library files for %{package_name}
|
|
||||||
Conflicts : libtorrent7
|
|
||||||
|
|
||||||
%description -n %{lib_name}
|
|
||||||
Library files for %{package_name}
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup -n %{orig_name}-%{version}
|
|
||||||
|
|
||||||
%build
|
|
||||||
%configure --prefix=%{_prefix}
|
|
||||||
%make
|
|
||||||
|
|
||||||
|
|
||||||
%install
|
|
||||||
%makeinstall
|
|
||||||
|
|
||||||
# Create directories for the package
|
|
||||||
install -d %{buildroot}%{_includedir}/%{orig_name}
|
|
||||||
install -d %{buildroot}%{_libdir}/pkgconfig
|
|
||||||
|
|
||||||
%clean
|
|
||||||
rm -rf %{buildroot}
|
|
||||||
|
|
||||||
# The binaries
|
|
||||||
%files %(orig_name)
|
|
||||||
%defattr(0644, root, root, 0755)
|
|
||||||
%{_bindir}/*
|
|
||||||
|
|
||||||
# Documentation
|
|
||||||
%defattr(-, root, root)
|
|
||||||
%doc README AUTHORS INSTALL COPYING ChangeLog NEWS
|
|
||||||
%doc docs/*
|
|
||||||
|
|
||||||
|
|
||||||
# Devel Package
|
|
||||||
%files -n %{package_name}-devel
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%dir %{_includedir}/%{orig_name}/
|
|
||||||
%dir %{_includedir}/%{orig_name}/asio/
|
|
||||||
%dir %{_includedir}/%{orig_name}/asio/detail/
|
|
||||||
%dir %{_includedir}/%{orig_name}/asio/impl/
|
|
||||||
%dir %{_includedir}/%{orig_name}/asio/ip/
|
|
||||||
%dir %{_includedir}/%{orig_name}/asio/ip/detail/
|
|
||||||
%dir %{_includedir}/%{orig_name}/asio/ssl/
|
|
||||||
%dir %{_includedir}/%{orig_name}/asio/ssl/detail/
|
|
||||||
%{_includedir}/%{orig_name}/*.hpp
|
|
||||||
%{_includedir}/%{orig_name}/asio/*.hpp
|
|
||||||
%{_includedir}/%{orig_name}/asio/detail/*.hpp
|
|
||||||
%{_includedir}/%{orig_name}/asio/impl/*.ipp
|
|
||||||
%{_includedir}/%{orig_name}/asio/ip/*.hpp
|
|
||||||
%{_includedir}/%{orig_name}/asio/ip/detail/*.hpp
|
|
||||||
%{_includedir}/%{orig_name}/asio/ssl/*.hpp
|
|
||||||
%{_includedir}/%{orig_name}/asio/ssl/detail/*.hpp
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%{_libdir}/%{orig_name}.a
|
|
||||||
%{_libdir}/%{orig_name}.la
|
|
||||||
%{_libdir}/%{orig_name}.so
|
|
||||||
%{_libdir}/pkgconfig/libtorrent.pc
|
|
||||||
|
|
||||||
|
|
||||||
# Library Package
|
|
||||||
%files -n %{lib_name}
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%_libdir/%{orig_name}.so.*
|
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
|
||||||
|
|
||||||
* Wed Aug 23 2006 Christophe Dumez <chris@qbittorrent.org> 10.0.1-2006mdk
|
|
||||||
- Added patch for Torrent Properties crash fix
|
|
||||||
|
|
||||||
* Sat Jul 1 2006 %{packager} %{version}-%{release}
|
|
||||||
- fixed a bug where the requested number of peers in a tracker request could
|
|
||||||
be too big.
|
|
||||||
- fixed a bug where empty files were not created in full allocation mode.
|
|
||||||
- fixed a bug in storage that would, in rare cases, fail to do a
|
|
||||||
complete check.
|
|
||||||
- exposed more settings for tweaking parameters in the piece-picker,
|
|
||||||
downloader and uploader (http_settings replaced by session_settings).
|
|
||||||
- tweaked default settings to improve high bandwidth transfers.
|
|
||||||
- improved the piece picker performance and made it possible to download
|
|
||||||
popular pieces in sequence to improve disk performance.
|
|
||||||
- added the possibility to control upload and download limits per peer.
|
|
||||||
- fixed problem with re-requesting skipped pieces when peer was sending pieces
|
|
||||||
out of fifo-order.
|
|
||||||
- added support for http seeding (the GetRight protocol)
|
|
||||||
- renamed identifiers called 'id' in the public interface to support linking
|
|
||||||
with Objective.C++
|
|
||||||
- changed the extensions protocol to use the new one, which is also
|
|
||||||
implemented by uTorrent.
|
|
||||||
- factorized the peer_connection and added web_peer_connection which is
|
|
||||||
able to download from http-sources.
|
|
||||||
- converted the network code to use asio (resulted in slight api changes
|
|
||||||
dealing with network addresses).
|
|
||||||
- made libtorrent build in vc7 (patches from Allen Zhao)
|
|
||||||
- fixed bug caused when binding outgoing connections to a non-local interface.
|
|
||||||
- add_torrent() will now throw if called while the session object is
|
|
||||||
being closed.
|
|
||||||
- added the ability to limit the number of simultaneous half-open
|
|
||||||
TCP connections. Flags in peer_info has been added.
|
|
||||||
|
|
||||||
|
|
||||||
* Thu Jun 1 2006 %{packager} %{version}-%{release}
|
|
||||||
- Initial Build for Mandriva Linux
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
qbittorrent (0.6.1-0ubuntu2) dapper; urgency=low
|
|
||||||
|
|
||||||
* Disabled debug mode
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Mon, 28 Aug 2006 19:29:17 +0000
|
|
||||||
|
|
||||||
qbittorrent (0.6.1-0ubuntu1) dapper; urgency=low
|
|
||||||
* BUGFIX: Fixed possible segfaults when using context menus
|
|
||||||
* BUGFIX: Cleanup up context menus code
|
|
||||||
* BUGFIX: Used best gzip compressing for manpage
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Thu, 24 Aug 2006 19:53:32 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.6.0) dapper; urgency=low
|
|
||||||
* FEATURE: Rewritten the download list from scratch (more flexible)
|
|
||||||
* FEATURE: Rewritten the search results list from scratch (more flexible)
|
|
||||||
* FEATURE: Rewritten the torrent properties list from scratch (more flexible)
|
|
||||||
* FEATURE: Improved and cleaned up search engine code
|
|
||||||
* FEATURE: Search results are now displayed in real time (not sequentially)
|
|
||||||
* FEATURE: Added two command lines parameters (--version, --help)
|
|
||||||
* FEATURE: Added a popup menu for download list
|
|
||||||
* FEATURE: Double-click on an item now toggles the paused state of a download
|
|
||||||
* FEATURE: Improved code to be more portable (Windows & MacOS versions should arrive soon)
|
|
||||||
* FEATURE: Allow to toggle selected state of a file within a torrent using double-click
|
|
||||||
* FEATURE: Remember columns width in download and search results lists
|
|
||||||
* BUGFIX: Don't use pkg-config for libcurl anymore (easier to compile)
|
|
||||||
* BUGFIX: Fixed ETA calculation when downloading while connecting
|
|
||||||
* BUGFIX: Download progress is now displayed correctly during first seconds of execution (was 0% before)
|
|
||||||
* BUGFIX: Code cleanup & optimization
|
|
||||||
* BUGFIX: Fixed sorting in download list
|
|
||||||
* BUGFIX: Fixed sorting in search results list
|
|
||||||
* BUGFIX: Fixed Parameters passing between instances
|
|
||||||
* BUGFIX: Fixed missing icon for clear action in infoBar popup menu
|
|
||||||
* BUGFIX: Fixed truncated lines in search results
|
|
||||||
* BUGFIX: Don't refresh download list when user is in search tab (save CPU)
|
|
||||||
* BUGFIX: Don't update Progress/DL Speed/ETA for finished downloads (save CPU)
|
|
||||||
* BUGFIX: Save selected search engines only when they have changed (faster program exit)
|
|
||||||
* COSMETIC: Increased icon size in toolbar from 24px to 32px
|
|
||||||
* COSMETIC: Display a progress bar to visualize each download progress
|
|
||||||
* COSMETIC: Size of each result in search are displayed in user friendly units
|
|
||||||
* COSMETIC: Display a progress bar to visualize each file progress within a torrent
|
|
||||||
* COSMETIC: Renamed 'ratio' to 'Session ratio' (makes more sense)
|
|
||||||
* COSMETIC: Improved layout of torrent properties window when maximized
|
|
||||||
* COSMETIC: Now number of search results is updated in real time
|
|
||||||
* COSMETIC: Remember last window size
|
|
||||||
* COSMETIC: Improved splash screen look
|
|
||||||
* COSMETIC: Improved default width of columns in download and search results lists
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Wed, 22 Aug 2006 10:42:37 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.5.0) dapper; urgency=low
|
|
||||||
* Improved "Download from url" feature (now supports https, ftp & redirections)
|
|
||||||
* Added a torrent creation tool
|
|
||||||
* Display progress for each file within a torrent
|
|
||||||
* Based on new libtorrent v0.10 (lot of improvements)
|
|
||||||
* Now possible to clear log textbox (popup menu)
|
|
||||||
* Added two search engines (isohunt, torrentreactor)
|
|
||||||
* Now Display share ratio on main window
|
|
||||||
* Use OSD (On Screen Display) when a download or a search is finished
|
|
||||||
* Allow only one instance of qBittorrent (and add new parameters to download list)
|
|
||||||
* Remember last selected search engines in search tab
|
|
||||||
* Improved search engines status output (Aborted, timed out, finished, no results)
|
|
||||||
* qBittorrent can now update search plugin from qbittorrent.org
|
|
||||||
* Added Slovak, Italian, Portuguese, Romanian and Traditional Chinese languages
|
|
||||||
* Fixed ThePirateBay parser for search engine (website had changed)
|
|
||||||
* Fixed filenames for results from ThePirateBay search engine
|
|
||||||
* Fixed unicode support for ThePirateBay search engine
|
|
||||||
* Now search results are sorted by seeds
|
|
||||||
* Overwrite nova.py search plugin only if it is outdated
|
|
||||||
* Fixed possible division by 0 in ETA calculation
|
|
||||||
* Improved ETA calculation precision
|
|
||||||
* Fixed default tab in options
|
|
||||||
* When saving options, reconnect only when listening ports changed
|
|
||||||
* qBittorrent has now its own new logo
|
|
||||||
* Display status "downloading" if DL Speed > 0 (even when tracker is down)
|
|
||||||
* Added a splashscreen
|
|
||||||
* qBittorrent has new cute icons
|
|
||||||
* Display number of results in search tab
|
|
||||||
* Added icons for each item in download list according to its state
|
|
||||||
* Redesigned Locale settings
|
|
||||||
* Fixed search engines names width (were cut on the right)
|
|
||||||
* Moved search engines to the left of the window (better ui)
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Wed, 2 Aug 2006 19:46:32 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.4.1) dapper; urgency=low
|
|
||||||
* Not counting "protocol chatter" in UP/DL speed anymore
|
|
||||||
* Download speed is now 0 when download is finished
|
|
||||||
* Paused torrents remain paused when qbittorrent is re-started
|
|
||||||
* Added option "go to systray when minimizing"
|
|
||||||
* Added option "Clear finished downloads on exit"
|
|
||||||
* Added option "Ask user for confirmation on exit"
|
|
||||||
* Added "Stalled" status for downloads (colored in orange, paused are in red and finished in green)
|
|
||||||
* Fixed Search window layout on maximizing
|
|
||||||
* Fixed a bug that caused upload limit not to be always applied
|
|
||||||
* Added Bulgarian translation
|
|
||||||
* Updated Translations
|
|
||||||
* Code optimization
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Thu, 22 Jun 2006 20:14:27 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.4.0) dapper; urgency=low
|
|
||||||
|
|
||||||
* Added a search engine (supports Mininova & thepiratebay websites)
|
|
||||||
* Fixed critical bug: some options were not applied correctly to BT session
|
|
||||||
* Possibility to download a torrent file from an URL
|
|
||||||
* Added confirmation dialog on qbittorrent exit
|
|
||||||
* Enabled sorting in Download list
|
|
||||||
* Added Ukrainian translation
|
|
||||||
* Support urls as program parameters
|
|
||||||
* Added more actions to trayicon menu
|
|
||||||
* Fixed exception catching when retrieving fastresume data
|
|
||||||
* use Binary prefix standards from IEC 60027-2 for units (B, KiB, MiB, GiB, TiB)
|
|
||||||
* Iconification to systray when minimizing
|
|
||||||
* Code Cleanup & optimization
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Wed, 14 Jun 2006 14:47:27 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.3.1) dapper; urgency=low
|
|
||||||
|
|
||||||
* Fixed toolbar layout (spacing).
|
|
||||||
* Added Russian translation.
|
|
||||||
* Resume also finished files on startup (for seeding).
|
|
||||||
* Added colors corresponding to download state.
|
|
||||||
* Fixed a segfault when deleting a download (if no scan dir is set).
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Sat, 6 Jun 2006 21:36:27 +0200
|
|
||||||
|
|
||||||
|
|
||||||
qbittorrent (0.3) dapper; urgency=low
|
|
||||||
|
|
||||||
* Initial Release.
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Sat, 3 Jun 2006 21:57:27 +0200
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
4
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
Source: qbittorrent
|
|
||||||
Section: net
|
|
||||||
Priority: optional
|
|
||||||
Maintainer: Christophe Dumez <chris@qbittorrent.org>
|
|
||||||
Build-Depends: debhelper (>= 4.0.0), autotools-dev, libqt4-core (>= 4.1.0), libqt4-dev (>= 4.1.0), libqt4-gui (>= 4.1.0), rb-libtorrent (>= 0.10), libcurl3-dev
|
|
||||||
Standards-Version: 3.6.2
|
|
||||||
|
|
||||||
Package: qbittorrent
|
|
||||||
Architecture: any
|
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, rb-libtorrent (>= 0.10), python (>= 2.3)
|
|
||||||
Description: Bittorrent client in Qt4.1 / C++
|
|
||||||
qBittorrent is a bittorrent client programmed in C++ / Qt4.1
|
|
||||||
using rb_libtorrent by Arvid Norberg. It aims to be a good
|
|
||||||
alternative to other bittorrent client out there. It is fast,
|
|
||||||
stable and provides unicode support.
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
This is qbittorrent, written and maintained by Christophe Dumez <chris@qbittorrent.org>
|
|
||||||
on Sat, 3 Jun 2006 21:57:27 +0200.
|
|
||||||
|
|
||||||
The original source can always be found at:
|
|
||||||
ftp://ftp.debian.org/dists/unstable/main/source/
|
|
||||||
|
|
||||||
Copyright (C) 2006 Christophe Dumez
|
|
||||||
|
|
||||||
License:
|
|
||||||
|
|
||||||
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 package; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
On Debian systems, the complete text of the GNU General
|
|
||||||
Public License can be found in `/usr/share/common-licenses/GPL'.
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
usr/bin
|
|
||||||
usr/sbin
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
NEWS
|
|
||||||
README
|
|
||||||
TODO
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
qbittorrent_0.6.1-0ubuntu2_i386.deb net optional
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
shlibs:Depends=libboost-date-time1.33.1, libboost-filesystem1.33.1, libboost-thread1.33.1, libc6 (>= 2.3.4-1), libcurl3 (>= 7.15.0-1), libgcc1 (>= 1:4.0.2), libqt4-core (>= 4.1.2), libqt4-gui (>= 4.1.2), libstdc++6 (>= 4.0.2-4), libx11-6, libxext6, zlib1g (>= 1:1.2.1)
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
#!/usr/bin/make -f
|
|
||||||
# -*- makefile -*-
|
|
||||||
# Sample debian/rules that uses debhelper.
|
|
||||||
# This file was originally written by Joey Hess and Craig Small.
|
|
||||||
# As a special exception, when this file is copied by dh-make into a
|
|
||||||
# dh-make output file, you may use that output file without restriction.
|
|
||||||
# This special exception was added by Craig Small in version 0.37 of dh-make.
|
|
||||||
|
|
||||||
# Uncomment this to turn on verbose mode.
|
|
||||||
#export DH_VERBOSE=1
|
|
||||||
|
|
||||||
|
|
||||||
# These are used for cross-compiling and for saving the configure script
|
|
||||||
# from having to guess our platform (since we know it already)
|
|
||||||
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
|
||||||
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
|
||||||
|
|
||||||
|
|
||||||
CFLAGS = -Wall
|
|
||||||
|
|
||||||
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
|
||||||
CFLAGS += -O0
|
|
||||||
else
|
|
||||||
CFLAGS += -O2
|
|
||||||
endif
|
|
||||||
|
|
||||||
config.status: configure
|
|
||||||
dh_testdir
|
|
||||||
# Add here commands to configure the package.
|
|
||||||
CFLAGS="$(CFLAGS) -Wl,-z,defs" ./configure --prefix=/usr
|
|
||||||
|
|
||||||
|
|
||||||
build: build-stamp
|
|
||||||
|
|
||||||
build-stamp: config.status
|
|
||||||
dh_testdir
|
|
||||||
|
|
||||||
# Add here commands to compile the package.
|
|
||||||
$(MAKE)
|
|
||||||
#docbook-to-man debian/qbittorrent.sgml > qbittorrent.1
|
|
||||||
|
|
||||||
touch build-stamp
|
|
||||||
|
|
||||||
clean:
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
rm -f build-stamp
|
|
||||||
|
|
||||||
# Add here commands to clean up after the build process.
|
|
||||||
-$(MAKE) distclean
|
|
||||||
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
|
|
||||||
cp -f /usr/share/misc/config.sub config.sub
|
|
||||||
endif
|
|
||||||
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
|
|
||||||
cp -f /usr/share/misc/config.guess config.guess
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
dh_clean
|
|
||||||
|
|
||||||
install: build
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_clean -k
|
|
||||||
dh_installdirs
|
|
||||||
|
|
||||||
# Add here commands to install the package into debian/qbittorrent.
|
|
||||||
$(MAKE) install INSTALL_ROOT=$(CURDIR)/debian/qbittorrent
|
|
||||||
|
|
||||||
|
|
||||||
# Build architecture-independent files here.
|
|
||||||
binary-indep: build install
|
|
||||||
# We have nothing to do by default.
|
|
||||||
|
|
||||||
# Build architecture-dependent files here.
|
|
||||||
binary-arch: build install
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_installchangelogs Changelog
|
|
||||||
dh_installdocs
|
|
||||||
dh_installexamples
|
|
||||||
# dh_install
|
|
||||||
# dh_installmenu
|
|
||||||
# dh_installdebconf
|
|
||||||
# dh_installlogrotate
|
|
||||||
# dh_installemacsen
|
|
||||||
# dh_installpam
|
|
||||||
# dh_installmime
|
|
||||||
# dh_installinit
|
|
||||||
# dh_installcron
|
|
||||||
# dh_installinfo
|
|
||||||
dh_installman
|
|
||||||
dh_link
|
|
||||||
dh_strip
|
|
||||||
dh_compress
|
|
||||||
dh_fixperms
|
|
||||||
# dh_perl
|
|
||||||
# dh_python
|
|
||||||
# dh_makeshlibs
|
|
||||||
dh_installdeb
|
|
||||||
dh_shlibdeps
|
|
||||||
dh_gencontrol
|
|
||||||
dh_md5sums
|
|
||||||
dh_builddeb
|
|
||||||
|
|
||||||
binary: binary-indep binary-arch
|
|
||||||
.PHONY: build clean binary-indep binary-arch binary install
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
qbittorrent (0.6.1-0ubuntu2) edgy; urgency=low
|
|
||||||
|
|
||||||
* Disabled debug mode
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Mon, 28 Aug 2006 21:22:48 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.6.1-0ubuntu1) edgy; urgency=low
|
|
||||||
* BUGFIX: Fixed possible segfaults when using context menus
|
|
||||||
* BUGFIX: Cleanup up context menus code
|
|
||||||
* BUGFIX: Used best gzip compressing for manpage
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Thu, 24 Aug 2006 19:53:32 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.6.0) edgy; urgency=low
|
|
||||||
* FEATURE: Rewritten the download list from scratch (more flexible)
|
|
||||||
* FEATURE: Rewritten the search results list from scratch (more flexible)
|
|
||||||
* FEATURE: Rewritten the torrent properties list from scratch (more flexible)
|
|
||||||
* FEATURE: Improved and cleaned up search engine code
|
|
||||||
* FEATURE: Search results are now displayed in real time (not sequentially)
|
|
||||||
* FEATURE: Added two command lines parameters (--version, --help)
|
|
||||||
* FEATURE: Added a popup menu for download list
|
|
||||||
* FEATURE: Double-click on an item now toggles the paused state of a download
|
|
||||||
* FEATURE: Improved code to be more portable (Windows & MacOS versions should arrive soon)
|
|
||||||
* FEATURE: Allow to toggle selected state of a file within a torrent using double-click
|
|
||||||
* FEATURE: Remember columns width in download and search results lists
|
|
||||||
* BUGFIX: Don't use pkg-config for libcurl anymore (easier to compile)
|
|
||||||
* BUGFIX: Fixed ETA calculation when downloading while connecting
|
|
||||||
* BUGFIX: Download progress is now displayed correctly during first seconds of execution (was 0% before)
|
|
||||||
* BUGFIX: Code cleanup & optimization
|
|
||||||
* BUGFIX: Fixed sorting in download list
|
|
||||||
* BUGFIX: Fixed sorting in search results list
|
|
||||||
* BUGFIX: Fixed Parameters passing between instances
|
|
||||||
* BUGFIX: Fixed missing icon for clear action in infoBar popup menu
|
|
||||||
* BUGFIX: Fixed truncated lines in search results
|
|
||||||
* BUGFIX: Don't refresh download list when user is in search tab (save CPU)
|
|
||||||
* BUGFIX: Don't update Progress/DL Speed/ETA for finished downloads (save CPU)
|
|
||||||
* BUGFIX: Save selected search engines only when they have changed (faster program exit)
|
|
||||||
* COSMETIC: Increased icon size in toolbar from 24px to 32px
|
|
||||||
* COSMETIC: Display a progress bar to visualize each download progress
|
|
||||||
* COSMETIC: Size of each result in search are displayed in user friendly units
|
|
||||||
* COSMETIC: Display a progress bar to visualize each file progress within a torrent
|
|
||||||
* COSMETIC: Renamed 'ratio' to 'Session ratio' (makes more sense)
|
|
||||||
* COSMETIC: Improved layout of torrent properties window when maximized
|
|
||||||
* COSMETIC: Now number of search results is updated in real time
|
|
||||||
* COSMETIC: Remember last window size
|
|
||||||
* COSMETIC: Improved splash screen look
|
|
||||||
* COSMETIC: Improved default width of columns in download and search results lists
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Wed, 22 Aug 2006 10:42:37 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.5.0) edgy; urgency=low
|
|
||||||
* Improved "Download from url" feature (now supports https, ftp & redirections)
|
|
||||||
* Added a torrent creation tool
|
|
||||||
* Display progress for each file within a torrent
|
|
||||||
* Based on new libtorrent v0.10 (lot of improvements)
|
|
||||||
* Now possible to clear log textbox (popup menu)
|
|
||||||
* Added two search engines (isohunt, torrentreactor)
|
|
||||||
* Now Display share ratio on main window
|
|
||||||
* Use OSD (On Screen Display) when a download or a search is finished
|
|
||||||
* Allow only one instance of qBittorrent (and add new parameters to download list)
|
|
||||||
* Remember last selected search engines in search tab
|
|
||||||
* Improved search engines status output (Aborted, timed out, finished, no results)
|
|
||||||
* qBittorrent can now update search plugin from qbittorrent.org
|
|
||||||
* Added Slovak, Italian, Portuguese, Romanian and Traditional Chinese languages
|
|
||||||
* Fixed ThePirateBay parser for search engine (website had changed)
|
|
||||||
* Fixed filenames for results from ThePirateBay search engine
|
|
||||||
* Fixed unicode support for ThePirateBay search engine
|
|
||||||
* Now search results are sorted by seeds
|
|
||||||
* Overwrite nova.py search plugin only if it is outdated
|
|
||||||
* Fixed possible division by 0 in ETA calculation
|
|
||||||
* Improved ETA calculation precision
|
|
||||||
* Fixed default tab in options
|
|
||||||
* When saving options, reconnect only when listening ports changed
|
|
||||||
* qBittorrent has now its own new logo
|
|
||||||
* Display status "downloading" if DL Speed > 0 (even when tracker is down)
|
|
||||||
* Added a splashscreen
|
|
||||||
* qBittorrent has new cute icons
|
|
||||||
* Display number of results in search tab
|
|
||||||
* Added icons for each item in download list according to its state
|
|
||||||
* Redesigned Locale settings
|
|
||||||
* Fixed search engines names width (were cut on the right)
|
|
||||||
* Moved search engines to the left of the window (better ui)
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Wed, 2 Aug 2006 19:46:32 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.4.1) edgy; urgency=low
|
|
||||||
* Not counting "protocol chatter" in UP/DL speed anymore
|
|
||||||
* Download speed is now 0 when download is finished
|
|
||||||
* Paused torrents remain paused when qbittorrent is re-started
|
|
||||||
* Added option "go to systray when minimizing"
|
|
||||||
* Added option "Clear finished downloads on exit"
|
|
||||||
* Added option "Ask user for confirmation on exit"
|
|
||||||
* Added "Stalled" status for downloads (colored in orange, paused are in red and finished in green)
|
|
||||||
* Fixed Search window layout on maximizing
|
|
||||||
* Fixed a bug that caused upload limit not to be always applied
|
|
||||||
* Added Bulgarian translation
|
|
||||||
* Updated Translations
|
|
||||||
* Code optimization
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Thu, 22 Jun 2006 20:14:27 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.4.0) edgy; urgency=low
|
|
||||||
|
|
||||||
* Added a search engine (supports Mininova & thepiratebay websites)
|
|
||||||
* Fixed critical bug: some options were not applied correctly to BT session
|
|
||||||
* Possibility to download a torrent file from an URL
|
|
||||||
* Added confirmation dialog on qbittorrent exit
|
|
||||||
* Enabled sorting in Download list
|
|
||||||
* Added Ukrainian translation
|
|
||||||
* Support urls as program parameters
|
|
||||||
* Added more actions to trayicon menu
|
|
||||||
* Fixed exception catching when retrieving fastresume data
|
|
||||||
* use Binary prefix standards from IEC 60027-2 for units (B, KiB, MiB, GiB, TiB)
|
|
||||||
* Iconification to systray when minimizing
|
|
||||||
* Code Cleanup & optimization
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Wed, 14 Jun 2006 14:47:27 +0200
|
|
||||||
|
|
||||||
qbittorrent (0.3.1) edgy; urgency=low
|
|
||||||
|
|
||||||
* Fixed toolbar layout (spacing).
|
|
||||||
* Added Russian translation.
|
|
||||||
* Resume also finished files on startup (for seeding).
|
|
||||||
* Added colors corresponding to download state.
|
|
||||||
* Fixed a segfault when deleting a download (if no scan dir is set).
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Sat, 6 Jun 2006 21:36:27 +0200
|
|
||||||
|
|
||||||
|
|
||||||
qbittorrent (0.3) edgy; urgency=low
|
|
||||||
|
|
||||||
* Initial Release.
|
|
||||||
|
|
||||||
-- Christophe Dumez <chris@qbittorrent.org> Sat, 3 Jun 2006 21:57:27 +0200
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
4
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
Source: qbittorrent
|
|
||||||
Section: net
|
|
||||||
Priority: optional
|
|
||||||
Maintainer: Christophe Dumez <chris@qbittorrent.org>
|
|
||||||
Build-Depends: debhelper (>= 4.0.0), autotools-dev, libqt4-core (>= 4.1.0), libqt4-dev (>= 4.1.0), libqt4-gui (>= 4.1.0), rb-libtorrent (>= 0.10), libcurl3-dev
|
|
||||||
Standards-Version: 3.6.2
|
|
||||||
|
|
||||||
Package: qbittorrent
|
|
||||||
Architecture: any
|
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, rb-libtorrent (>= 0.10), python (>= 2.3)
|
|
||||||
Description: Bittorrent client in Qt4.1 / C++
|
|
||||||
qBittorrent is a bittorrent client programmed in C++ / Qt4.1
|
|
||||||
using rb_libtorrent by Arvid Norberg. It aims to be a good
|
|
||||||
alternative to other bittorrent client out there. It is fast,
|
|
||||||
stable and provides unicode support.
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
This is qbittorrent, written and maintained by Christophe Dumez <chris@qbittorrent.org>
|
|
||||||
on Sat, 3 Jun 2006 21:57:27 +0200.
|
|
||||||
|
|
||||||
The original source can always be found at:
|
|
||||||
ftp://ftp.debian.org/dists/unstable/main/source/
|
|
||||||
|
|
||||||
Copyright (C) 2006 Christophe Dumez
|
|
||||||
|
|
||||||
License:
|
|
||||||
|
|
||||||
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 package; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
On Debian systems, the complete text of the GNU General
|
|
||||||
Public License can be found in `/usr/share/common-licenses/GPL'.
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
usr/bin
|
|
||||||
usr/sbin
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
NEWS
|
|
||||||
README
|
|
||||||
TODO
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
qbittorrent_0.6.1-0ubuntu2_i386.deb net optional
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
shlibs:Depends=libboost-date-time1.33.1, libboost-filesystem1.33.1, libboost-thread1.33.1, libc6 (>= 2.4-1), libcurl3 (>= 7.15.4-1), libgcc1 (>= 1:4.1.1-11ubuntu1), libqt4-core (>= 4.1.4), libqt4-gui (>= 4.1.4), libstdc++6 (>= 4.1.1-11ubuntu1), libx11-6, libxext6, zlib1g (>= 1:1.2.1)
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
#!/usr/bin/make -f
|
|
||||||
# -*- makefile -*-
|
|
||||||
# Sample debian/rules that uses debhelper.
|
|
||||||
# This file was originally written by Joey Hess and Craig Small.
|
|
||||||
# As a special exception, when this file is copied by dh-make into a
|
|
||||||
# dh-make output file, you may use that output file without restriction.
|
|
||||||
# This special exception was added by Craig Small in version 0.37 of dh-make.
|
|
||||||
|
|
||||||
# Uncomment this to turn on verbose mode.
|
|
||||||
#export DH_VERBOSE=1
|
|
||||||
|
|
||||||
|
|
||||||
# These are used for cross-compiling and for saving the configure script
|
|
||||||
# from having to guess our platform (since we know it already)
|
|
||||||
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
|
||||||
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
|
||||||
|
|
||||||
|
|
||||||
CFLAGS = -Wall
|
|
||||||
|
|
||||||
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
|
||||||
CFLAGS += -O0
|
|
||||||
else
|
|
||||||
CFLAGS += -O2
|
|
||||||
endif
|
|
||||||
|
|
||||||
config.status: configure
|
|
||||||
dh_testdir
|
|
||||||
# Add here commands to configure the package.
|
|
||||||
CFLAGS="$(CFLAGS) -Wl,-z,defs" ./configure --prefix=/usr
|
|
||||||
|
|
||||||
|
|
||||||
build: build-stamp
|
|
||||||
|
|
||||||
build-stamp: config.status
|
|
||||||
dh_testdir
|
|
||||||
|
|
||||||
# Add here commands to compile the package.
|
|
||||||
$(MAKE)
|
|
||||||
#docbook-to-man debian/qbittorrent.sgml > qbittorrent.1
|
|
||||||
|
|
||||||
touch build-stamp
|
|
||||||
|
|
||||||
clean:
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
rm -f build-stamp
|
|
||||||
|
|
||||||
# Add here commands to clean up after the build process.
|
|
||||||
-$(MAKE) distclean
|
|
||||||
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
|
|
||||||
cp -f /usr/share/misc/config.sub config.sub
|
|
||||||
endif
|
|
||||||
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
|
|
||||||
cp -f /usr/share/misc/config.guess config.guess
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
dh_clean
|
|
||||||
|
|
||||||
install: build
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_clean -k
|
|
||||||
dh_installdirs
|
|
||||||
|
|
||||||
# Add here commands to install the package into debian/qbittorrent.
|
|
||||||
$(MAKE) install INSTALL_ROOT=$(CURDIR)/debian/qbittorrent
|
|
||||||
|
|
||||||
|
|
||||||
# Build architecture-independent files here.
|
|
||||||
binary-indep: build install
|
|
||||||
# We have nothing to do by default.
|
|
||||||
|
|
||||||
# Build architecture-dependent files here.
|
|
||||||
binary-arch: build install
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_installchangelogs Changelog
|
|
||||||
dh_installdocs
|
|
||||||
dh_installexamples
|
|
||||||
# dh_install
|
|
||||||
# dh_installmenu
|
|
||||||
# dh_installdebconf
|
|
||||||
# dh_installlogrotate
|
|
||||||
# dh_installemacsen
|
|
||||||
# dh_installpam
|
|
||||||
# dh_installmime
|
|
||||||
# dh_installinit
|
|
||||||
# dh_installcron
|
|
||||||
# dh_installinfo
|
|
||||||
dh_installman
|
|
||||||
dh_link
|
|
||||||
dh_strip
|
|
||||||
dh_compress
|
|
||||||
dh_fixperms
|
|
||||||
# dh_perl
|
|
||||||
# dh_python
|
|
||||||
# dh_makeshlibs
|
|
||||||
dh_installdeb
|
|
||||||
dh_shlibdeps
|
|
||||||
dh_gencontrol
|
|
||||||
dh_md5sums
|
|
||||||
dh_builddeb
|
|
||||||
|
|
||||||
binary: binary-indep binary-arch
|
|
||||||
.PHONY: build clean binary-indep binary-arch binary install
|
|
||||||
@@ -6,15 +6,14 @@
|
|||||||
<dep type='qt4'>
|
<dep type='qt4'>
|
||||||
<required/>
|
<required/>
|
||||||
</dep>
|
</dep>
|
||||||
<dep type='libtorrent'>
|
<dep type='libtorrent-rasterbar'>
|
||||||
<required/>
|
<required/>
|
||||||
</dep>
|
</dep>
|
||||||
<dep type='libboost'>
|
<dep type='libboost'>
|
||||||
<required/>
|
<required/>
|
||||||
</dep>
|
</dep>
|
||||||
<dep type='libcurl'>
|
<dep type='libnotify'>
|
||||||
<required/>
|
</dep>
|
||||||
|
<dep type='geoip-database'>
|
||||||
</dep>
|
</dep>
|
||||||
<dep type='libmagick'/>
|
|
||||||
<dep type='libzzip'/>
|
|
||||||
</qconf>
|
</qconf>
|
||||||
|
|||||||
29
qcm/geoip-database.qcm
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
-----BEGIN QCMOD-----
|
||||||
|
name: geoip-database
|
||||||
|
arg: with-geoip-database-embedded, Geoip Database will be embedded in qBittorrent executable (please follow instructions in src/geoip/README)
|
||||||
|
-----END QCMOD-----
|
||||||
|
*/
|
||||||
|
// see Conf::findPkgConfig
|
||||||
|
class qc_geoip_database : public ConfObj
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
qc_geoip_database(Conf *c) : ConfObj(c) {}
|
||||||
|
QString name() const { return "GeoIP Database (optional)"; }
|
||||||
|
QString shortname() const { return "GeoIP Database"; }
|
||||||
|
bool exec() {
|
||||||
|
#ifdef Q_WS_X11
|
||||||
|
if(!conf->getenv("QC_WITH_GEOIP_DATABASE_EMBEDDED").isEmpty()) {
|
||||||
|
#endif
|
||||||
|
conf->addDefine("WITH_GEOIP_EMBEDDED");
|
||||||
|
printf(" embedded and");
|
||||||
|
return true;
|
||||||
|
#ifdef Q_WS_X11
|
||||||
|
}
|
||||||
|
if(QFile::exists("/usr/share/GeoIP/GeoIP.dat") || QFile::exists("/usr/local/share/GeoIP/GeoIP.dat") || QFile::exists("/var/lib/GeoIP/GeoIP.dat"))
|
||||||
|
return true;
|
||||||
|
printf("\nWarning: GeoIP database was not found at /usr/share/GeoIP/GeoIP.dat or /var/lib/GeoIP/GeoIP.dat\nCountry resolution will be slow.");
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
-----BEGIN QCMOD-----
|
|
||||||
name: libcommoncpp2
|
|
||||||
arg: with-libcommoncpp2-inc=[path], Path to libcommoncpp2 include files
|
|
||||||
arg: with-libcommoncpp2-lib=[path], Path to libcommoncpp2 library files
|
|
||||||
-----END QCMOD-----
|
|
||||||
*/
|
|
||||||
class qc_libcommoncpp2 : public ConfObj
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
qc_libcommoncpp2(Conf *c) : ConfObj(c) {}
|
|
||||||
QString name() const { return "GNU Common C++ library (libcommoncpp2)"; }
|
|
||||||
QString shortname() const { return "libcommoncpp2"; }
|
|
||||||
bool exec(){
|
|
||||||
QString s;
|
|
||||||
s = conf->getenv("QC_WITH_LIBCOMMONCPP2_INC");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!conf->checkHeader(s, "cc++/url.h")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/include";
|
|
||||||
sl << "/usr/local/include";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkHeader(s, "cc++/url.h")){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
conf->addIncludePath(s);
|
|
||||||
|
|
||||||
s = conf->getenv("QC_WITH_LIBCOMMONCPP2_LIB");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!QFile::exists(s+QString("/libccext2.so")))
|
|
||||||
return false;
|
|
||||||
if(!QFile::exists(s+QString("/libccgnu2.so")))
|
|
||||||
return false;
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/lib/";
|
|
||||||
sl << "/usr/lib64/";
|
|
||||||
sl << "/usr/local/lib/";
|
|
||||||
sl << "/usr/local/lib64/";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(QFile::exists(s+QString("libccext2.so"))){
|
|
||||||
if(QFile::exists(s+QString("libccgnu2.so"))){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) return false;
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
-----BEGIN QCMOD-----
|
|
||||||
name: libcommoncpp2
|
|
||||||
arg: with-libcurl-inc=[path], Path to libcurl include files
|
|
||||||
arg: with-libcurl-lib=[path], Path to libcurl library files
|
|
||||||
-----END QCMOD-----
|
|
||||||
*/
|
|
||||||
class qc_libcurl : public ConfObj
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
qc_libcurl(Conf *c) : ConfObj(c) {}
|
|
||||||
QString name() const { return "libcurl"; }
|
|
||||||
QString shortname() const { return "libcurl"; }
|
|
||||||
bool exec(){
|
|
||||||
QString s;
|
|
||||||
s = conf->getenv("QC_WITH_LIBCURL_INC");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!conf->checkHeader(s, "curl/curl.h")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/include";
|
|
||||||
sl << "/usr/local/include";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkHeader(s, "curl/curl.h")){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
conf->addIncludePath(s);
|
|
||||||
|
|
||||||
s = conf->getenv("QC_WITH_LIBCURL_LIB");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!QFile::exists(s+QString("/libcurl.so")))
|
|
||||||
return false;
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/lib/";
|
|
||||||
sl << "/usr/lib64/";
|
|
||||||
sl << "/usr/local/lib/";
|
|
||||||
sl << "/usr/local/lib64/";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(QFile::exists(s+QString("libcurl.so"))){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) return false;
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -64,14 +64,11 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
conf->addLib(QString("-L") + s);
|
conf->addLib(QString("-L") + s);
|
||||||
QProcess magickConfig;
|
QString out = "";
|
||||||
QStringList params;
|
QStringList params;
|
||||||
params << "--libs";
|
params << "--libs";
|
||||||
magickConfig.start("Magick++-config", params, QIODevice::ReadOnly);
|
qconf->doCommand("Magick++-config", params, &out);
|
||||||
magickConfig.waitForStarted();
|
out = out.replace("\n", "");
|
||||||
magickConfig.waitForFinished();
|
|
||||||
QByteArray result = magickConfig.readAll();
|
|
||||||
result = result.replace("\n", "");
|
|
||||||
conf->addLib(result.data());
|
conf->addLib(result.data());
|
||||||
conf->addDefine("HAVE_MAGICK");
|
conf->addDefine("HAVE_MAGICK");
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
41
qcm/libnotify.qcm
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
-----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;
|
||||||
|
}
|
||||||
|
};
|
||||||
31
qcm/libtorrent-rasterbar.qcm
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
-----BEGIN QCMOD-----
|
||||||
|
name: libtorrent-rasterbar
|
||||||
|
-----END QCMOD-----
|
||||||
|
*/
|
||||||
|
// see Conf::findPkgConfig
|
||||||
|
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 shortname() const { return "libtorrent-rasterbar"; }
|
||||||
|
bool exec(){
|
||||||
|
QStringList incs;
|
||||||
|
QString req_ver = "0.14.0";
|
||||||
|
QString adv_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;
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
/*
|
|
||||||
-----BEGIN QCMOD-----
|
|
||||||
name: libtorrent
|
|
||||||
arg: with-libtorrent-inc=[path], Path to libtorrent include files
|
|
||||||
arg: with-libtorrent-lib=[path], Path to libtorrent library files
|
|
||||||
arg: with-libtorrent-static-lib=[path], Path to libtorrent .a file
|
|
||||||
-----END QCMOD-----
|
|
||||||
*/
|
|
||||||
class qc_libtorrent : public ConfObj
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
qc_libtorrent(Conf *c) : ConfObj(c) {}
|
|
||||||
QString name() const { return "libtorrent >= 0.13"; }
|
|
||||||
QString shortname() const { return "libtorrent"; }
|
|
||||||
bool exec(){
|
|
||||||
QString s;
|
|
||||||
s = conf->getenv("QC_WITH_LIBTORRENT_INC");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!conf->checkHeader(s, "libtorrent/lsd.hpp")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/include";
|
|
||||||
sl << "/usr/local/include";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkHeader(s, "libtorrent/lsd.hpp")){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
conf->addIncludePath(s);
|
|
||||||
conf->addIncludePath(s+QDir::separator()+"libtorrent");
|
|
||||||
|
|
||||||
s = conf->getenv("QC_WITH_LIBTORRENT_STATIC_LIB");
|
|
||||||
if(!s.isEmpty() && QFile::exists(s) && s.endsWith(".a")){
|
|
||||||
conf->addLib(s);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
s = conf->getenv("QC_WITH_LIBTORRENT_LIB");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!conf->checkLibrary(s, "torrent")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/lib/";
|
|
||||||
sl << "/usr/lib64/";
|
|
||||||
sl << "/usr/local/lib/";
|
|
||||||
sl << "/usr/local/lib64/";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkLibrary(s, "torrent")){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found) return false;
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
/*
|
|
||||||
-----BEGIN QCMOD-----
|
|
||||||
name: libzzip
|
|
||||||
arg: with-libzzip-inc=[path], Path to libzzip++ include files
|
|
||||||
arg: with-libzzip-lib=[path], Path to libzzip++ library files
|
|
||||||
-----END QCMOD-----
|
|
||||||
*/
|
|
||||||
#include <QProcess>
|
|
||||||
class qc_libzzip : public ConfObj
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
qc_libzzip(Conf *c) : ConfObj(c) {}
|
|
||||||
QString name() const { return "Zzip library (libzzip)"; }
|
|
||||||
QString shortname() const { return "libzzip"; }
|
|
||||||
QString checkString() const {
|
|
||||||
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
|
|
||||||
return "";
|
|
||||||
return ConfObj::checkString();
|
|
||||||
}
|
|
||||||
bool exec(){
|
|
||||||
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
|
|
||||||
return false;
|
|
||||||
QString s;
|
|
||||||
s = conf->getenv("QC_WITH_LIBZZIP_INC");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!conf->checkHeader(s, "zzip/zzip.h")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/include";
|
|
||||||
sl << "/usr/local/include";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(conf->checkHeader(s, "zzip/zzip.h")){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
conf->addIncludePath(s);
|
|
||||||
|
|
||||||
s = conf->getenv("QC_WITH_LIBZZIP_LIB");
|
|
||||||
if(!s.isEmpty()) {
|
|
||||||
if(!QFile::exists(s+QString("/libzzip.so"))){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
QStringList sl;
|
|
||||||
sl << "/usr/lib/";
|
|
||||||
sl << "/usr/lib64/";
|
|
||||||
sl << "/usr/local/lib/";
|
|
||||||
sl << "/usr/local/lib64/";
|
|
||||||
bool found = false;
|
|
||||||
foreach(s, sl){
|
|
||||||
if(QFile::exists(s+QString("libzzip.so"))){
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
conf->addLib(QString("-L") + s);
|
|
||||||
conf->addLib("-lzzip");
|
|
||||||
conf->addDefine("HAVE_ZZIP");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
12
qcm/qt4.qcm
@@ -1,16 +1,20 @@
|
|||||||
/*
|
/*
|
||||||
-----BEGIN QCMOD-----
|
-----BEGIN QCMOD-----
|
||||||
name: Qt >= 4.3
|
name: Qt >= 4.4
|
||||||
-----END QCMOD-----
|
-----END QCMOD-----
|
||||||
*/
|
*/
|
||||||
class qc_qt4 : public ConfObj
|
class qc_qt4 : public ConfObj
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
qc_qt4(Conf *c) : ConfObj(c) {}
|
qc_qt4(Conf *c) : ConfObj(c) {}
|
||||||
QString name() const { return "Qt >= 4.3"; }
|
QString name() const { return "Qt >= 4.4"; }
|
||||||
QString shortname() const { return "Qt 4.3"; }
|
QString shortname() const { return "Qt 4.4"; }
|
||||||
bool exec()
|
bool exec()
|
||||||
{
|
{
|
||||||
return(QT_VERSION >= 0x040300);
|
if(QT_VERSION >= 0x040500) {
|
||||||
|
conf->addDefine("QT_4_5");
|
||||||
|
}
|
||||||
|
return(QT_VERSION >= 0x040400);
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,103 +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.
|
|
||||||
*
|
|
||||||
* Contact : chris@qbittorrent.org
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DLLISTDELEGATE_H
|
|
||||||
#define DLLISTDELEGATE_H
|
|
||||||
|
|
||||||
#include <QItemDelegate>
|
|
||||||
#include <QModelIndex>
|
|
||||||
#include <QPainter>
|
|
||||||
#include <QStyleOptionProgressBarV2>
|
|
||||||
#include <QStyleOptionViewItemV2>
|
|
||||||
#include <QProgressBar>
|
|
||||||
#include <QApplication>
|
|
||||||
#include "misc.h"
|
|
||||||
|
|
||||||
// Defines for download list list columns
|
|
||||||
#define NAME 0
|
|
||||||
#define SIZE 1
|
|
||||||
#define PROGRESS 2
|
|
||||||
#define DLSPEED 3
|
|
||||||
#define UPSPEED 4
|
|
||||||
#define SEEDSLEECH 5
|
|
||||||
#define RATIO 6
|
|
||||||
#define ETA 7
|
|
||||||
#define HASH 8
|
|
||||||
|
|
||||||
class DLListDelegate: public QItemDelegate {
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
DLListDelegate(QObject *parent) : QItemDelegate(parent){}
|
|
||||||
|
|
||||||
~DLListDelegate(){}
|
|
||||||
|
|
||||||
void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const{
|
|
||||||
QStyleOptionViewItemV2 opt = QItemDelegate::setOptions(index, option);
|
|
||||||
switch(index.column()){
|
|
||||||
case SIZE:
|
|
||||||
QItemDelegate::drawBackground(painter, opt, index);
|
|
||||||
QItemDelegate::drawDisplay(painter, opt, option.rect, misc::friendlyUnit(index.data().toLongLong()));
|
|
||||||
break;
|
|
||||||
case ETA:
|
|
||||||
QItemDelegate::drawBackground(painter, opt, index);
|
|
||||||
QItemDelegate::drawDisplay(painter, opt, option.rect, misc::userFriendlyDuration(index.data().toLongLong()));
|
|
||||||
break;
|
|
||||||
case UPSPEED:
|
|
||||||
case DLSPEED:{
|
|
||||||
QItemDelegate::drawBackground(painter, opt, index);
|
|
||||||
double speed = index.data().toDouble();
|
|
||||||
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(speed/1024., 'f', 1))+QString::fromUtf8(" ")+tr("KiB/s"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case RATIO:{
|
|
||||||
QItemDelegate::drawBackground(painter, opt, index);
|
|
||||||
double ratio = index.data().toDouble();
|
|
||||||
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(ratio, 'f', 1)));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case PROGRESS:{
|
|
||||||
QStyleOptionProgressBarV2 newopt;
|
|
||||||
double progress = index.data().toDouble()*100.;
|
|
||||||
newopt.rect = opt.rect;
|
|
||||||
newopt.text = QString(QByteArray::number(progress, 'f', 1))+QString::fromUtf8("%");
|
|
||||||
newopt.progress = (int)progress;
|
|
||||||
newopt.maximum = 100;
|
|
||||||
newopt.minimum = 0;
|
|
||||||
newopt.state |= QStyle::State_Enabled;
|
|
||||||
newopt.textVisible = true;
|
|
||||||
QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt,
|
|
||||||
painter);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
QItemDelegate::paint(painter, option, index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const {
|
|
||||||
// No editor here
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,81 +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.
|
|
||||||
*
|
|
||||||
* Contact : chris@qbittorrent.org
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef FINISHEDLISTDELEGATE_H
|
|
||||||
#define FINISHEDLISTDELEGATE_H
|
|
||||||
|
|
||||||
#include <QItemDelegate>
|
|
||||||
#include <QModelIndex>
|
|
||||||
#include <QPainter>
|
|
||||||
#include <QStyleOptionProgressBarV2>
|
|
||||||
#include <QStyleOptionViewItemV2>
|
|
||||||
#include <QProgressBar>
|
|
||||||
#include <QApplication>
|
|
||||||
#include "misc.h"
|
|
||||||
|
|
||||||
// Defines for download list list columns
|
|
||||||
#define F_NAME 0
|
|
||||||
#define F_SIZE 1
|
|
||||||
#define F_UPSPEED 2
|
|
||||||
#define F_LEECH 3
|
|
||||||
#define F_RATIO 4
|
|
||||||
#define F_HASH 5
|
|
||||||
|
|
||||||
class FinishedListDelegate: public QItemDelegate {
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
FinishedListDelegate(QObject *parent) : QItemDelegate(parent){}
|
|
||||||
|
|
||||||
~FinishedListDelegate(){}
|
|
||||||
|
|
||||||
void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const{
|
|
||||||
QStyleOptionViewItemV2 opt = QItemDelegate::setOptions(index, option);
|
|
||||||
switch(index.column()){
|
|
||||||
case F_SIZE:
|
|
||||||
QItemDelegate::drawBackground(painter, opt, index);
|
|
||||||
QItemDelegate::drawDisplay(painter, opt, option.rect, misc::friendlyUnit(index.data().toLongLong()));
|
|
||||||
break;
|
|
||||||
case F_UPSPEED:{
|
|
||||||
QItemDelegate::drawBackground(painter, opt, index);
|
|
||||||
double speed = index.data().toDouble();
|
|
||||||
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(speed/1024., 'f', 1))+QString::fromUtf8(" ")+tr("KiB/s"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case F_RATIO:{
|
|
||||||
QItemDelegate::drawBackground(painter, opt, index);
|
|
||||||
double ratio = index.data().toDouble();
|
|
||||||
QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(ratio, 'f', 1)));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
QItemDelegate::paint(painter, option, index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const {
|
|
||||||
// No editor here
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,594 +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.
|
|
||||||
*
|
|
||||||
* Contact : chris@qbittorrent.org
|
|
||||||
*/
|
|
||||||
#include "FinishedTorrents.h"
|
|
||||||
#include "misc.h"
|
|
||||||
#include "properties_imp.h"
|
|
||||||
#include "bittorrent.h"
|
|
||||||
#include "allocationDlg.h"
|
|
||||||
#include "FinishedListDelegate.h"
|
|
||||||
#include "GUI.h"
|
|
||||||
|
|
||||||
#include <QFile>
|
|
||||||
#include <QSettings>
|
|
||||||
#include <QStandardItemModel>
|
|
||||||
#include <QHeaderView>
|
|
||||||
#include <QMenu>
|
|
||||||
|
|
||||||
FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : parent(parent), BTSession(BTSession), nbFinished(0){
|
|
||||||
setupUi(this);
|
|
||||||
actionStart->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/play.png")));
|
|
||||||
actionPause->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/pause.png")));
|
|
||||||
connect(BTSession, SIGNAL(addedTorrent(QString, QTorrentHandle&, bool)), this, SLOT(torrentAdded(QString, QTorrentHandle&, bool)));
|
|
||||||
finishedListModel = new QStandardItemModel(0,6);
|
|
||||||
finishedListModel->setHeaderData(F_NAME, Qt::Horizontal, tr("Name", "i.e: file name"));
|
|
||||||
finishedListModel->setHeaderData(F_SIZE, Qt::Horizontal, tr("Size", "i.e: file size"));
|
|
||||||
finishedListModel->setHeaderData(F_UPSPEED, Qt::Horizontal, tr("UP Speed", "i.e: Upload speed"));
|
|
||||||
finishedListModel->setHeaderData(F_LEECH, Qt::Horizontal, tr("Leechers", "i.e: full/partial sources"));
|
|
||||||
finishedListModel->setHeaderData(F_RATIO, Qt::Horizontal, tr("Ratio"));
|
|
||||||
finishedList->setModel(finishedListModel);
|
|
||||||
loadHiddenColumns();
|
|
||||||
// Hide hash column
|
|
||||||
finishedList->hideColumn(F_HASH);
|
|
||||||
// Load last columns width for download list
|
|
||||||
if(!loadColWidthFinishedList()){
|
|
||||||
finishedList->header()->resizeSection(0, 200);
|
|
||||||
}
|
|
||||||
// Make download list header clickable for sorting
|
|
||||||
finishedList->header()->setClickable(true);
|
|
||||||
finishedList->header()->setSortIndicatorShown(true);
|
|
||||||
connect(finishedList->header(), SIGNAL(sectionPressed(int)), this, SLOT(sortFinishedList(int)));
|
|
||||||
finishedListDelegate = new FinishedListDelegate(finishedList);
|
|
||||||
finishedList->setItemDelegate(finishedListDelegate);
|
|
||||||
connect(finishedList, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFinishedListMenu(const QPoint&)));
|
|
||||||
finishedList->header()->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
||||||
connect(finishedList->header(), SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFinishedHoSMenu(const QPoint&)));
|
|
||||||
|
|
||||||
connect(finishedList, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(notifyTorrentDoubleClicked(const QModelIndex&)));
|
|
||||||
actionDelete->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete.png")));
|
|
||||||
actionPreview_file->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/preview.png")));
|
|
||||||
actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png")));
|
|
||||||
actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png")));
|
|
||||||
actionSet_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
|
|
||||||
connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered()));
|
|
||||||
connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered()));
|
|
||||||
connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered()));
|
|
||||||
connect(actionPreview_file, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPreview_file_triggered()));
|
|
||||||
connect(actionDelete_Permanently, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_Permanently_triggered()));
|
|
||||||
connect(actionOpen_destination_folder, SIGNAL(triggered()), (GUI*)parent, SLOT(openDestinationFolder()));
|
|
||||||
connect(actionBuy_it, SIGNAL(triggered()), (GUI*)parent, SLOT(goBuyPage()));
|
|
||||||
connect(actionTorrent_Properties, SIGNAL(triggered()), this, SLOT(propertiesSelection()));
|
|
||||||
|
|
||||||
connect(actionHOSColName, SIGNAL(triggered()), this, SLOT(hideOrShowColumnName()));
|
|
||||||
connect(actionHOSColSize, SIGNAL(triggered()), this, SLOT(hideOrShowColumnSize()));
|
|
||||||
connect(actionHOSColUpSpeed, SIGNAL(triggered()), this, SLOT(hideOrShowColumnUpSpeed()));
|
|
||||||
connect(actionHOSColLeechers, SIGNAL(triggered()), this, SLOT(hideOrShowColumnLeechers()));
|
|
||||||
connect(actionHOSColRatio, SIGNAL(triggered()), this, SLOT(hideOrShowColumnRatio()));
|
|
||||||
}
|
|
||||||
|
|
||||||
FinishedTorrents::~FinishedTorrents(){
|
|
||||||
saveColWidthFinishedList();
|
|
||||||
saveHiddenColumns();
|
|
||||||
delete finishedListDelegate;
|
|
||||||
delete finishedListModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::notifyTorrentDoubleClicked(const QModelIndex& index) {
|
|
||||||
unsigned int row = index.row();
|
|
||||||
QString hash = getHashFromRow(row);
|
|
||||||
emit torrentDoubleClicked(hash, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::addTorrent(QString hash){
|
|
||||||
if(!BTSession->isFinished(hash)){
|
|
||||||
BTSession->setFinishedTorrent(hash);
|
|
||||||
}
|
|
||||||
int row = getRowFromHash(hash);
|
|
||||||
if(row != -1) return;
|
|
||||||
row = finishedListModel->rowCount();
|
|
||||||
QTorrentHandle h = BTSession->getTorrentHandle(hash);
|
|
||||||
// Adding torrent to download list
|
|
||||||
finishedListModel->insertRow(row);
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(h.name()));
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_SIZE), QVariant((qlonglong)h.actual_size()));
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)0.));
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_LEECH), QVariant("0"));
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(QString::fromUtf8(misc::toString(BTSession->getRealRatio(hash)).c_str())));
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_HASH), QVariant(hash));
|
|
||||||
if(h.is_paused()) {
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_NAME), QIcon(":/Icons/skin/paused.png"), Qt::DecorationRole);
|
|
||||||
setRowColor(row, "red");
|
|
||||||
}else{
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(":/Icons/skin/seeding.png")), Qt::DecorationRole);
|
|
||||||
setRowColor(row, "orange");
|
|
||||||
}
|
|
||||||
// Update the number of finished torrents
|
|
||||||
++nbFinished;
|
|
||||||
emit finishedTorrentsNumberChanged(nbFinished);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::torrentAdded(QString, QTorrentHandle& h, bool) {
|
|
||||||
QString hash = h.hash();
|
|
||||||
if(BTSession->isFinished(hash)) {
|
|
||||||
addTorrent(hash);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the color of a row in data model
|
|
||||||
void FinishedTorrents::setRowColor(int row, QString color){
|
|
||||||
unsigned int nbColumns = finishedListModel->columnCount()-1;
|
|
||||||
for(unsigned int i=0; i<nbColumns; ++i){
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QStringList FinishedTorrents::getSelectedTorrents(bool only_one) const{
|
|
||||||
QStringList res;
|
|
||||||
QModelIndex index;
|
|
||||||
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
|
|
||||||
foreach(index, selectedIndexes) {
|
|
||||||
if(index.column() == F_NAME) {
|
|
||||||
// Get the file hash
|
|
||||||
QString hash = finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString();
|
|
||||||
res << hash;
|
|
||||||
if(only_one) break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int FinishedTorrents::getNbTorrentsInList() const {
|
|
||||||
return nbFinished;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load columns width in a file that were saved previously
|
|
||||||
// (finished list)
|
|
||||||
bool FinishedTorrents::loadColWidthFinishedList(){
|
|
||||||
qDebug("Loading columns width for finished list");
|
|
||||||
QSettings settings("qBittorrent", "qBittorrent");
|
|
||||||
QString line = settings.value("FinishedListColsWidth", QString()).toString();
|
|
||||||
if(line.isEmpty())
|
|
||||||
return false;
|
|
||||||
QStringList width_list = line.split(' ');
|
|
||||||
if(width_list.size() < finishedListModel->columnCount()-1)
|
|
||||||
return false;
|
|
||||||
unsigned int listSize = width_list.size();
|
|
||||||
for(unsigned int i=0; i<listSize; ++i){
|
|
||||||
finishedList->header()->resizeSection(i, width_list.at(i).toInt());
|
|
||||||
}
|
|
||||||
qDebug("Finished list columns width loaded");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save columns width in a file to remember them
|
|
||||||
// (finished list)
|
|
||||||
void FinishedTorrents::saveColWidthFinishedList() const{
|
|
||||||
qDebug("Saving columns width in finished list");
|
|
||||||
QSettings settings("qBittorrent", "qBittorrent");
|
|
||||||
QStringList width_list;
|
|
||||||
QStringList new_width_list;
|
|
||||||
short nbColumns = finishedListModel->columnCount()-1;
|
|
||||||
|
|
||||||
QString line = settings.value("FinishedListColsWidth", QString()).toString();
|
|
||||||
if(!line.isEmpty()) {
|
|
||||||
width_list = line.split(' ');
|
|
||||||
}
|
|
||||||
for(short i=0; i<nbColumns; ++i){
|
|
||||||
if(finishedList->columnWidth(i)<1 && width_list.size() == finishedListModel->columnCount()-1 && width_list.at(i).toInt()>=1) {
|
|
||||||
// load the former width
|
|
||||||
new_width_list << width_list.at(i);
|
|
||||||
} else if(finishedList->columnWidth(i)>=1) {
|
|
||||||
// usual case, save the current width
|
|
||||||
new_width_list << QString::fromUtf8(misc::toString(finishedList->columnWidth(i)).c_str());
|
|
||||||
} else {
|
|
||||||
// default width
|
|
||||||
finishedList->resizeColumnToContents(i);
|
|
||||||
new_width_list << QString::fromUtf8(misc::toString(finishedList->columnWidth(i)).c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
settings.setValue("FinishedListColsWidth", new_width_list.join(" "));
|
|
||||||
qDebug("Finished list columns width saved");
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::on_actionSet_upload_limit_triggered(){
|
|
||||||
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
|
|
||||||
QModelIndex index;
|
|
||||||
QStringList hashes;
|
|
||||||
foreach(index, selectedIndexes){
|
|
||||||
if(index.column() == F_NAME){
|
|
||||||
// Get the file hash
|
|
||||||
hashes << finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
new BandwidthAllocationDialog(this, true, BTSession, hashes);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::updateFinishedList(){
|
|
||||||
QString hash;
|
|
||||||
QStringList finishedSHAs = BTSession->getFinishedTorrents();
|
|
||||||
foreach(hash, finishedSHAs){
|
|
||||||
QTorrentHandle h = BTSession->getTorrentHandle(hash);
|
|
||||||
if(!h.is_valid()){
|
|
||||||
qDebug("Problem: This torrent is not valid in finished list");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
int row = getRowFromHash(hash);
|
|
||||||
if(row == -1){
|
|
||||||
qDebug("Cannot find torrent in finished list, adding it");
|
|
||||||
addTorrent(hash);
|
|
||||||
row = getRowFromHash(hash);
|
|
||||||
}
|
|
||||||
Q_ASSERT(row != -1);
|
|
||||||
if(h.is_paused()) continue;
|
|
||||||
if(BTSession->getTorrentsToPauseAfterChecking().indexOf(hash) != -1) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(h.state() == torrent_status::downloading || (h.state() != torrent_status::checking_files && h.state() != torrent_status::queued_for_checking && h.progress() < 1.)) {
|
|
||||||
// What are you doing here? go back to download tab!
|
|
||||||
qDebug("Info: a torrent was moved from finished to download tab");
|
|
||||||
deleteTorrent(hash);
|
|
||||||
BTSession->setFinishedTorrent(hash);
|
|
||||||
emit torrentMovedFromFinishedList(hash);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(h.state() == torrent_status::checking_files){
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/time.png"))), Qt::DecorationRole);
|
|
||||||
setRowColor(row, QString::fromUtf8("grey"));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
setRowColor(row, QString::fromUtf8("orange"));
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png"))), Qt::DecorationRole);
|
|
||||||
if(!finishedList->isColumnHidden(F_UPSPEED)) {
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)h.upload_payload_rate()));
|
|
||||||
}
|
|
||||||
if(!finishedList->isColumnHidden(F_LEECH)) {
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_LEECH), misc::toQString(h.num_peers() - h.num_seeds(), true));
|
|
||||||
}
|
|
||||||
if(!finishedList->isColumnHidden(F_RATIO)) {
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(misc::toQString(BTSession->getRealRatio(hash))));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int FinishedTorrents::getRowFromHash(QString hash) const{
|
|
||||||
unsigned int nbRows = finishedListModel->rowCount();
|
|
||||||
for(unsigned int i=0; i<nbRows; ++i){
|
|
||||||
if(finishedListModel->data(finishedListModel->index(i, F_HASH)) == hash){
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Note: does not actually pause the torrent in BT Session
|
|
||||||
void FinishedTorrents::pauseTorrent(QString hash) {
|
|
||||||
int row = getRowFromHash(hash);
|
|
||||||
if(row == -1)
|
|
||||||
return;
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)0.0));
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_NAME), QIcon(QString::fromUtf8(":/Icons/skin/paused.png")), Qt::DecorationRole);
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_LEECH), QVariant(QString::fromUtf8("0")));
|
|
||||||
setRowColor(row, QString::fromUtf8("red"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::resumeTorrent(QString hash) {
|
|
||||||
int row = getRowFromHash(hash);
|
|
||||||
Q_ASSERT(row != -1);
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png"))), Qt::DecorationRole);
|
|
||||||
setRowColor(row, QString::fromUtf8("orange"));
|
|
||||||
}
|
|
||||||
|
|
||||||
QString FinishedTorrents::getHashFromRow(unsigned int row) const {
|
|
||||||
Q_ASSERT(row < (unsigned int)finishedListModel->rowCount());
|
|
||||||
return finishedListModel->data(finishedListModel->index(row, F_HASH)).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Will move it to download tab
|
|
||||||
void FinishedTorrents::deleteTorrent(QString hash){
|
|
||||||
int row = getRowFromHash(hash);
|
|
||||||
if(row == -1){
|
|
||||||
qDebug("Torrent is not in finished list, nothing to delete");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
finishedListModel->removeRow(row);
|
|
||||||
--nbFinished;
|
|
||||||
emit finishedTorrentsNumberChanged(nbFinished);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Show torrent properties dialog
|
|
||||||
void FinishedTorrents::showProperties(const QModelIndex &index){
|
|
||||||
showPropertiesFromHash(finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::showPropertiesFromHash(QString hash){
|
|
||||||
QTorrentHandle h = BTSession->getTorrentHandle(hash);
|
|
||||||
properties *prop = new properties(this, BTSession, h);
|
|
||||||
connect(prop, SIGNAL(filteredFilesChanged(QString)), this, SLOT(updateFileSize(QString)));
|
|
||||||
connect(prop, SIGNAL(trackersChanged(QString)), BTSession, SLOT(saveTrackerFile(QString)));
|
|
||||||
prop->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::updateFileSize(QString hash){
|
|
||||||
int row = getRowFromHash(hash);
|
|
||||||
QTorrentHandle h = BTSession->getTorrentHandle(hash);
|
|
||||||
finishedListModel->setData(finishedListModel->index(row, F_SIZE), QVariant((qlonglong)h.actual_size()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// display properties of selected items
|
|
||||||
void FinishedTorrents::propertiesSelection(){
|
|
||||||
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
|
|
||||||
QModelIndex index;
|
|
||||||
foreach(index, selectedIndexes){
|
|
||||||
if(index.column() == F_NAME){
|
|
||||||
showProperties(index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::displayFinishedListMenu(const QPoint& pos){
|
|
||||||
QMenu myFinishedListMenu(this);
|
|
||||||
QModelIndex index;
|
|
||||||
// Enable/disable pause/start action given the DL state
|
|
||||||
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
|
|
||||||
bool has_pause = false, has_start = false, has_preview = false;
|
|
||||||
foreach(index, selectedIndexes) {
|
|
||||||
if(index.column() == F_NAME) {
|
|
||||||
// Get the file name
|
|
||||||
QString hash = finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString();
|
|
||||||
// Get handle and pause the torrent
|
|
||||||
QTorrentHandle h = BTSession->getTorrentHandle(hash);
|
|
||||||
if(!h.is_valid()) continue;
|
|
||||||
if(h.is_paused()) {
|
|
||||||
if(!has_start) {
|
|
||||||
myFinishedListMenu.addAction(actionStart);
|
|
||||||
has_start = true;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
if(!has_pause) {
|
|
||||||
myFinishedListMenu.addAction(actionPause);
|
|
||||||
has_pause = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(BTSession->isFilePreviewPossible(hash) && !has_preview) {
|
|
||||||
myFinishedListMenu.addAction(actionPreview_file);
|
|
||||||
has_preview = true;
|
|
||||||
}
|
|
||||||
if(has_pause && has_start && has_preview) break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
myFinishedListMenu.addSeparator();
|
|
||||||
myFinishedListMenu.addAction(actionDelete);
|
|
||||||
myFinishedListMenu.addAction(actionDelete_Permanently);
|
|
||||||
myFinishedListMenu.addSeparator();
|
|
||||||
myFinishedListMenu.addAction(actionSet_upload_limit);
|
|
||||||
myFinishedListMenu.addSeparator();
|
|
||||||
myFinishedListMenu.addAction(actionOpen_destination_folder);
|
|
||||||
myFinishedListMenu.addAction(actionTorrent_Properties);
|
|
||||||
myFinishedListMenu.addSeparator();
|
|
||||||
myFinishedListMenu.addAction(actionBuy_it);
|
|
||||||
|
|
||||||
// Call menu
|
|
||||||
// XXX: why mapToGlobal() is not enough?
|
|
||||||
myFinishedListMenu.exec(mapToGlobal(pos)+QPoint(10,55));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Hiding Columns functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
// hide/show columns menu
|
|
||||||
void FinishedTorrents::displayFinishedHoSMenu(const QPoint& pos){
|
|
||||||
QMenu hideshowColumn(this);
|
|
||||||
hideshowColumn.setTitle(tr("Hide or Show Column"));
|
|
||||||
for(int i=0; i<=F_RATIO; i++) {
|
|
||||||
hideshowColumn.addAction(getActionHoSCol(i));
|
|
||||||
}
|
|
||||||
// Call menu
|
|
||||||
hideshowColumn.exec(mapToGlobal(pos)+QPoint(10,55));
|
|
||||||
}
|
|
||||||
|
|
||||||
// toggle hide/show a column
|
|
||||||
void FinishedTorrents::hideOrShowColumn(int index) {
|
|
||||||
unsigned int nbVisibleColumns = 0;
|
|
||||||
unsigned int nbCols = finishedListModel->columnCount();
|
|
||||||
// Count visible columns
|
|
||||||
for(unsigned int i=0; i<nbCols; ++i) {
|
|
||||||
if(!finishedList->isColumnHidden(i))
|
|
||||||
++nbVisibleColumns;
|
|
||||||
}
|
|
||||||
if(!finishedList->isColumnHidden(index)) {
|
|
||||||
// User wants to hide the column
|
|
||||||
// Is there at least one other visible column?
|
|
||||||
if(nbVisibleColumns <= 1) return;
|
|
||||||
// User can hide the column, do it.
|
|
||||||
finishedList->setColumnHidden(index, true);
|
|
||||||
getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_cancel.png")));
|
|
||||||
--nbVisibleColumns;
|
|
||||||
} else {
|
|
||||||
// User want to display the column
|
|
||||||
finishedList->setColumnHidden(index, false);
|
|
||||||
getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_ok.png")));
|
|
||||||
++nbVisibleColumns;
|
|
||||||
}
|
|
||||||
//resize all others non-hidden columns
|
|
||||||
for(unsigned int i=0; i<nbCols; ++i) {
|
|
||||||
if(!finishedList->isColumnHidden(i)) {
|
|
||||||
finishedList->setColumnWidth(i, (int)ceil(finishedList->columnWidth(i)+(finishedList->columnWidth(index)/nbVisibleColumns)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::hideOrShowColumnName() {
|
|
||||||
hideOrShowColumn(F_NAME);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::hideOrShowColumnSize() {
|
|
||||||
hideOrShowColumn(F_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::hideOrShowColumnUpSpeed() {
|
|
||||||
hideOrShowColumn(F_UPSPEED);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::hideOrShowColumnLeechers() {
|
|
||||||
hideOrShowColumn(F_LEECH);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::hideOrShowColumnRatio() {
|
|
||||||
hideOrShowColumn(F_RATIO);
|
|
||||||
}
|
|
||||||
|
|
||||||
// load the previous settings, and hide the columns
|
|
||||||
bool FinishedTorrents::loadHiddenColumns() {
|
|
||||||
bool loaded = false;
|
|
||||||
QSettings settings("qBittorrent", "qBittorrent");
|
|
||||||
QString line = settings.value("FinishedListColsHoS", QString()).toString();
|
|
||||||
QStringList ishidden_list;
|
|
||||||
if(!line.isEmpty()) {
|
|
||||||
ishidden_list = line.split(' ');
|
|
||||||
if(ishidden_list.size() == finishedListModel->columnCount()-1) {
|
|
||||||
unsigned int listSize = ishidden_list.size();
|
|
||||||
for(unsigned int i=0; i<listSize; ++i){
|
|
||||||
finishedList->header()->resizeSection(i, ishidden_list.at(i).toInt());
|
|
||||||
}
|
|
||||||
loaded = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(int i=0; i<finishedListModel->columnCount()-1; i++) {
|
|
||||||
if(loaded && ishidden_list.at(i) == "0") {
|
|
||||||
finishedList->setColumnHidden(i, true);
|
|
||||||
getActionHoSCol(i)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_cancel.png")));
|
|
||||||
} else {
|
|
||||||
getActionHoSCol(i)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_ok.png")));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return loaded;
|
|
||||||
}
|
|
||||||
|
|
||||||
// save the hidden columns in settings
|
|
||||||
void FinishedTorrents::saveHiddenColumns() {
|
|
||||||
QSettings settings("qBittorrent", "qBittorrent");
|
|
||||||
QStringList ishidden_list;
|
|
||||||
short nbColumns = finishedListModel->columnCount()-1;
|
|
||||||
|
|
||||||
for(short i=0; i<nbColumns; ++i){
|
|
||||||
if(finishedList->isColumnHidden(i)) {
|
|
||||||
ishidden_list << QString::fromUtf8(misc::toString(0).c_str());
|
|
||||||
} else {
|
|
||||||
ishidden_list << QString::fromUtf8(misc::toString(1).c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
settings.setValue("FinishedListColsHoS", ishidden_list.join(" "));
|
|
||||||
}
|
|
||||||
|
|
||||||
// getter, return the action hide or show whose id is index
|
|
||||||
QAction* FinishedTorrents::getActionHoSCol(int index) {
|
|
||||||
switch(index) {
|
|
||||||
case F_NAME :
|
|
||||||
return actionHOSColName;
|
|
||||||
break;
|
|
||||||
case F_SIZE :
|
|
||||||
return actionHOSColSize;
|
|
||||||
break;
|
|
||||||
case F_UPSPEED :
|
|
||||||
return actionHOSColUpSpeed;
|
|
||||||
break;
|
|
||||||
case F_LEECH :
|
|
||||||
return actionHOSColLeechers;
|
|
||||||
break;
|
|
||||||
case F_RATIO :
|
|
||||||
return actionHOSColRatio;
|
|
||||||
break;
|
|
||||||
default :
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Sorting functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
void FinishedTorrents::sortFinishedList(int index){
|
|
||||||
static Qt::SortOrder sortOrder = Qt::AscendingOrder;
|
|
||||||
if(finishedList->header()->sortIndicatorSection() == index){
|
|
||||||
if(sortOrder == Qt::AscendingOrder){
|
|
||||||
sortOrder = Qt::DescendingOrder;
|
|
||||||
}else{
|
|
||||||
sortOrder = Qt::AscendingOrder;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finishedList->header()->setSortIndicator(index, sortOrder);
|
|
||||||
switch(index){
|
|
||||||
case F_SIZE:
|
|
||||||
case F_UPSPEED:
|
|
||||||
sortFinishedListFloat(index, sortOrder);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sortFinishedListString(index, sortOrder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::sortFinishedListFloat(int index, Qt::SortOrder sortOrder){
|
|
||||||
QList<QPair<int, double> > lines;
|
|
||||||
// insertion sorting
|
|
||||||
unsigned int nbRows = finishedListModel->rowCount();
|
|
||||||
for(unsigned int i=0; i<nbRows; ++i){
|
|
||||||
misc::insertSort(lines, QPair<int,double>(i, finishedListModel->data(finishedListModel->index(i, index)).toDouble()), sortOrder);
|
|
||||||
}
|
|
||||||
// Insert items in new model, in correct order
|
|
||||||
unsigned int nbRows_old = lines.size();
|
|
||||||
for(unsigned int row=0; row<nbRows_old; ++row){
|
|
||||||
finishedListModel->insertRow(finishedListModel->rowCount());
|
|
||||||
unsigned int sourceRow = lines[row].first;
|
|
||||||
unsigned int nbColumns = finishedListModel->columnCount();
|
|
||||||
for(unsigned int col=0; col<nbColumns; ++col){
|
|
||||||
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col)));
|
|
||||||
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::DecorationRole), Qt::DecorationRole);
|
|
||||||
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Remove old rows
|
|
||||||
finishedListModel->removeRows(0, nbRows_old);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FinishedTorrents::sortFinishedListString(int index, Qt::SortOrder sortOrder){
|
|
||||||
QList<QPair<int, QString> > lines;
|
|
||||||
// Insertion sorting
|
|
||||||
unsigned int nbRows = finishedListModel->rowCount();
|
|
||||||
for(unsigned int i=0; i<nbRows; ++i){
|
|
||||||
misc::insertSortString(lines, QPair<int, QString>(i, finishedListModel->data(finishedListModel->index(i, index)).toString()), sortOrder);
|
|
||||||
}
|
|
||||||
// Insert items in new model, in correct order
|
|
||||||
unsigned int nbRows_old = lines.size();
|
|
||||||
for(unsigned int row=0; row<nbRows_old; ++row){
|
|
||||||
finishedListModel->insertRow(finishedListModel->rowCount());
|
|
||||||
unsigned int sourceRow = lines[row].first;
|
|
||||||
unsigned int nbColumns = finishedListModel->columnCount();
|
|
||||||
for(unsigned int col=0; col<nbColumns; ++col){
|
|
||||||
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col)));
|
|
||||||
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::DecorationRole), Qt::DecorationRole);
|
|
||||||
finishedListModel->setData(finishedListModel->index(nbRows_old+row, col), finishedListModel->data(finishedListModel->index(sourceRow, col), Qt::ForegroundRole), Qt::ForegroundRole);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Remove old rows
|
|
||||||
finishedListModel->removeRows(0, nbRows_old);
|
|
||||||
}
|
|
||||||
@@ -1,92 +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.
|
|
||||||
*
|
|
||||||
* Contact : chris@qbittorrent.org
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SEEDING_H
|
|
||||||
#define SEEDING_H
|
|
||||||
|
|
||||||
#include "ui_seeding.h"
|
|
||||||
#include "qtorrenthandle.h"
|
|
||||||
|
|
||||||
class QStandardItemModel;
|
|
||||||
class bittorrent;
|
|
||||||
class FinishedListDelegate;
|
|
||||||
|
|
||||||
using namespace libtorrent;
|
|
||||||
|
|
||||||
class FinishedTorrents : public QWidget, public Ui::seeding {
|
|
||||||
Q_OBJECT
|
|
||||||
private:
|
|
||||||
QObject *parent;
|
|
||||||
bittorrent *BTSession;
|
|
||||||
FinishedListDelegate *finishedListDelegate;
|
|
||||||
QStandardItemModel *finishedListModel;
|
|
||||||
unsigned int nbFinished;
|
|
||||||
void hideOrShowColumn(int index);
|
|
||||||
bool loadHiddenColumns();
|
|
||||||
void saveHiddenColumns();
|
|
||||||
QAction* getActionHoSCol(int index);
|
|
||||||
|
|
||||||
public:
|
|
||||||
FinishedTorrents(QObject *parent, bittorrent *BTSession);
|
|
||||||
~FinishedTorrents();
|
|
||||||
// Methods
|
|
||||||
bool loadColWidthFinishedList();
|
|
||||||
int getRowFromHash(QString hash) const;
|
|
||||||
QStringList getSelectedTorrents(bool only_one=false) const;
|
|
||||||
unsigned int getNbTorrentsInList() const;
|
|
||||||
QString getHashFromRow(unsigned int row) const;
|
|
||||||
|
|
||||||
protected slots:
|
|
||||||
void showProperties(const QModelIndex &index);
|
|
||||||
void displayFinishedListMenu(const QPoint&);
|
|
||||||
void displayFinishedHoSMenu(const QPoint&);
|
|
||||||
void setRowColor(int row, QString color);
|
|
||||||
void saveColWidthFinishedList() const;
|
|
||||||
void sortFinishedList(int index);
|
|
||||||
void sortFinishedListFloat(int index, Qt::SortOrder sortOrder);
|
|
||||||
void sortFinishedListString(int index, Qt::SortOrder sortOrder);
|
|
||||||
void updateFileSize(QString hash);
|
|
||||||
void torrentAdded(QString path, QTorrentHandle& h, bool fastResume);
|
|
||||||
void on_actionSet_upload_limit_triggered();
|
|
||||||
void notifyTorrentDoubleClicked(const QModelIndex& index);
|
|
||||||
void hideOrShowColumnName();
|
|
||||||
void hideOrShowColumnSize();
|
|
||||||
void hideOrShowColumnUpSpeed();
|
|
||||||
void hideOrShowColumnLeechers();
|
|
||||||
void hideOrShowColumnRatio();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void addTorrent(QString hash);
|
|
||||||
void updateFinishedList();
|
|
||||||
void pauseTorrent(QString hash);
|
|
||||||
void resumeTorrent(QString hash);
|
|
||||||
void propertiesSelection();
|
|
||||||
void deleteTorrent(QString hash);
|
|
||||||
void showPropertiesFromHash(QString hash);
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void torrentMovedFromFinishedList(QString);
|
|
||||||
void torrentDoubleClicked(QString hash, bool finished);
|
|
||||||
void finishedTorrentsNumberChanged(unsigned int);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
1382
src/GUI.cpp
112
src/GUI.h
@@ -16,6 +16,15 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
* 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
|
* Contact : chris@qbittorrent.org
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -24,67 +33,65 @@
|
|||||||
|
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QSystemTrayIcon>
|
#include <QSystemTrayIcon>
|
||||||
|
#include <QPointer>
|
||||||
#include "ui_MainWindow.h"
|
#include "ui_mainwindow.h"
|
||||||
#include "qtorrenthandle.h"
|
#include "qtorrenthandle.h"
|
||||||
|
|
||||||
class bittorrent;
|
enum TabIndex{TAB_TRANSFER, TAB_SEARCH, TAB_RSS};
|
||||||
class createtorrent;
|
|
||||||
|
class Bittorrent;
|
||||||
class QTimer;
|
class QTimer;
|
||||||
class DownloadingTorrents;
|
|
||||||
class FinishedTorrents;
|
|
||||||
class downloadFromURL;
|
class downloadFromURL;
|
||||||
class SearchEngine;
|
class SearchEngine;
|
||||||
class QTcpServer;
|
class QLocalServer;
|
||||||
class QTcpSocket;
|
|
||||||
class QCloseEvent;
|
class QCloseEvent;
|
||||||
class RSSImp;
|
class RSSImp;
|
||||||
class QShortcut;
|
class QShortcut;
|
||||||
class about;
|
class about;
|
||||||
class previewSelect;
|
|
||||||
class options_imp;
|
class options_imp;
|
||||||
class QTabWidget;
|
class QTabWidget;
|
||||||
class QLabel;
|
class TransferListWidget;
|
||||||
class QModelIndex;
|
class TransferListFiltersWidget;
|
||||||
class HttpServer;
|
class QSplitter;
|
||||||
|
class PropertiesWidget;
|
||||||
|
class StatusBar;
|
||||||
|
|
||||||
class GUI : public QMainWindow, private Ui::MainWindow{
|
class GUI : public QMainWindow, private Ui::MainWindow{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Bittorrent
|
// Bittorrent
|
||||||
bittorrent *BTSession;
|
Bittorrent *BTSession;
|
||||||
QTimer *checkConnect;
|
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; // Still needed?
|
||||||
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers;
|
|
||||||
// GUI related
|
// GUI related
|
||||||
|
QTimer *guiUpdater;
|
||||||
QTabWidget *tabs;
|
QTabWidget *tabs;
|
||||||
options_imp *options;
|
StatusBar *status_bar;
|
||||||
QSystemTrayIcon *myTrayIcon;
|
QPointer<options_imp> options;
|
||||||
QTimer *systrayCreator;
|
QPointer<QSystemTrayIcon> systrayIcon;
|
||||||
|
QPointer<QTimer> systrayCreator;
|
||||||
QMenu *myTrayIconMenu;
|
QMenu *myTrayIconMenu;
|
||||||
DownloadingTorrents *downloadingTorrentTab;
|
TransferListWidget *transferList;
|
||||||
FinishedTorrents *finishedTorrentTab;
|
TransferListFiltersWidget *transferListFilters;
|
||||||
QLabel *connecStatusLblIcon;
|
PropertiesWidget *properties;
|
||||||
bool systrayIntegration;
|
|
||||||
bool displaySpeedInTitle;
|
bool displaySpeedInTitle;
|
||||||
bool force_exit;
|
bool force_exit;
|
||||||
unsigned int refreshInterval;
|
|
||||||
QTimer *refresher;
|
|
||||||
// Keyboard shortcuts
|
// Keyboard shortcuts
|
||||||
QShortcut *switchSearchShortcut;
|
QShortcut *switchSearchShortcut;
|
||||||
QShortcut *switchSearchShortcut2;
|
QShortcut *switchSearchShortcut2;
|
||||||
QShortcut *switchDownShortcut;
|
QShortcut *switchTransferShortcut;
|
||||||
QShortcut *switchUpShortcut;
|
|
||||||
QShortcut *switchRSSShortcut;
|
QShortcut *switchRSSShortcut;
|
||||||
|
// Widgets
|
||||||
|
QAction *prioSeparator;
|
||||||
|
QAction *prioSeparator2;
|
||||||
|
QSplitter *hSplitter;
|
||||||
|
QSplitter *vSplitter;
|
||||||
// Search
|
// Search
|
||||||
SearchEngine *searchEngine;
|
SearchEngine *searchEngine;
|
||||||
// RSS
|
// RSS
|
||||||
RSSImp *rssWidget;
|
QPointer<RSSImp> rssWidget;
|
||||||
// Web UI
|
|
||||||
HttpServer *httpServer;
|
|
||||||
// Misc
|
// Misc
|
||||||
QTcpServer *tcpServer;
|
QLocalServer *localServer;
|
||||||
QTcpSocket *clientConnection;
|
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
// GUI related slots
|
// GUI related slots
|
||||||
@@ -95,58 +102,39 @@ class GUI : public QMainWindow, private Ui::MainWindow{
|
|||||||
void on_actionCreate_torrent_triggered();
|
void on_actionCreate_torrent_triggered();
|
||||||
void on_actionWebsite_triggered() const;
|
void on_actionWebsite_triggered() const;
|
||||||
void on_actionBugReport_triggered() const;
|
void on_actionBugReport_triggered() const;
|
||||||
|
void on_actionShow_console_triggered();
|
||||||
void readParamsOnSocket();
|
void readParamsOnSocket();
|
||||||
void acceptConnection();
|
void acceptConnection();
|
||||||
void togglePausedState(QString hash);
|
|
||||||
void torrentDoubleClicked(QString hash, bool finished);
|
|
||||||
void on_actionPreview_file_triggered();
|
|
||||||
void previewFile(QString filePath);
|
|
||||||
void balloonClicked();
|
void balloonClicked();
|
||||||
void writeSettings();
|
void writeSettings();
|
||||||
void readSettings();
|
void readSettings();
|
||||||
void on_actionExit_triggered();
|
void on_actionExit_triggered();
|
||||||
void createTrayIcon();
|
void createTrayIcon();
|
||||||
void updateUnfinishedTorrentNumber(unsigned int nb);
|
void fullDiskError(QTorrentHandle& h, QString msg) const;
|
||||||
void updateFinishedTorrentNumber(unsigned int nb);
|
|
||||||
void fullDiskError(QTorrentHandle& h) const;
|
|
||||||
void handleDownloadFromUrlFailure(QString, QString) const;
|
void handleDownloadFromUrlFailure(QString, QString) const;
|
||||||
void createSystrayDelayed();
|
void createSystrayDelayed();
|
||||||
|
void tab_changed(int);
|
||||||
// Keyboard shortcuts
|
// Keyboard shortcuts
|
||||||
void createKeyboardShortcuts();
|
void createKeyboardShortcuts();
|
||||||
void displayDownTab() const;
|
void displayTransferTab() const;
|
||||||
void displayUpTab() const;
|
|
||||||
void displaySearchTab() const;
|
void displaySearchTab() const;
|
||||||
void displayRSSTab() const;
|
void displayRSSTab() const;
|
||||||
// Torrent actions
|
// Torrent actions
|
||||||
void on_actionTorrent_Properties_triggered();
|
|
||||||
void on_actionPause_triggered();
|
|
||||||
void on_actionPause_All_triggered();
|
|
||||||
void on_actionStart_triggered();
|
|
||||||
void on_actionStart_All_triggered();
|
|
||||||
void on_actionOpen_triggered();
|
|
||||||
void on_actionDelete_Permanently_triggered();
|
|
||||||
void on_actionDelete_triggered();
|
|
||||||
void on_actionSet_global_upload_limit_triggered();
|
void on_actionSet_global_upload_limit_triggered();
|
||||||
void on_actionSet_global_download_limit_triggered();
|
void on_actionSet_global_download_limit_triggered();
|
||||||
void on_actionDocumentation_triggered() const;
|
void on_actionDocumentation_triggered() const;
|
||||||
void checkConnectionStatus();
|
void on_actionOpen_triggered();
|
||||||
void configureSession(bool deleteOptions);
|
void updateGUI();
|
||||||
|
void loadPreferences(bool configure_session=true);
|
||||||
void processParams(const QStringList& params);
|
void processParams(const QStringList& params);
|
||||||
void addTorrent(QString path);
|
void addTorrent(QString path);
|
||||||
void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker);
|
void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker);
|
||||||
void processScannedFiles(const QStringList& params);
|
|
||||||
void processDownloadedFiles(QString path, QString url);
|
void processDownloadedFiles(QString path, QString url);
|
||||||
void downloadFromURLList(const QStringList& urls);
|
void downloadFromURLList(const QStringList& urls);
|
||||||
void deleteTorrent(QString hash);
|
|
||||||
void deleteRatioTorrent(QString fileName);
|
|
||||||
void finishedTorrent(QTorrentHandle& h) const;
|
void finishedTorrent(QTorrentHandle& h) const;
|
||||||
void torrentChecked(QString hash) const;
|
|
||||||
void updateLists();
|
|
||||||
bool initWebUi(QString username, QString password, int port);
|
|
||||||
void pauseTorrent(QString hash);
|
|
||||||
// Options slots
|
// Options slots
|
||||||
void on_actionOptions_triggered();
|
void on_actionOptions_triggered();
|
||||||
void OptionsSaved(QString info, bool deleteOptions);
|
void optionsSaved();
|
||||||
// HTTP slots
|
// HTTP slots
|
||||||
void on_actionDownload_from_URL_triggered();
|
void on_actionDownload_from_URL_triggered();
|
||||||
|
|
||||||
@@ -154,13 +142,13 @@ class GUI : public QMainWindow, private Ui::MainWindow{
|
|||||||
public slots:
|
public slots:
|
||||||
void trackerAuthenticationRequired(QTorrentHandle& h);
|
void trackerAuthenticationRequired(QTorrentHandle& h);
|
||||||
void setTabText(int index, QString text) const;
|
void setTabText(int index, QString text) const;
|
||||||
void openDestinationFolder() const;
|
void showNotificationBaloon(QString title, QString msg) const;
|
||||||
void goBuyPage() const;
|
|
||||||
void updateRatio();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *);
|
void closeEvent(QCloseEvent *);
|
||||||
void hideEvent(QHideEvent *);
|
void showEvent(QShowEvent *);
|
||||||
|
bool event(QEvent * event);
|
||||||
|
void displayRSSTab(bool enable);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Construct / Destruct
|
// Construct / Destruct
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1005 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 820 B |
|
Before Width: | Height: | Size: 821 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 998 B |
BIN
src/Icons/flags/algeria.png
Normal file
|
After Width: | Height: | Size: 473 B |
BIN
src/Icons/flags/argentina.png
Normal file
|
After Width: | Height: | Size: 308 B |
BIN
src/Icons/flags/australia.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/Icons/flags/austria.png
Normal file
|
After Width: | Height: | Size: 285 B |
BIN
src/Icons/flags/belarus.png
Normal file
|
After Width: | Height: | Size: 373 B |
BIN
src/Icons/flags/belgium.png
Normal file
|
After Width: | Height: | Size: 173 B |
BIN
src/Icons/flags/bosnia.png
Normal file
|
After Width: | Height: | Size: 583 B |
BIN
src/Icons/flags/canada.png
Normal file
|
After Width: | Height: | Size: 686 B |
BIN
src/Icons/flags/costa_rica.png
Normal file
|
After Width: | Height: | Size: 203 B |
BIN
src/Icons/flags/croatia.png
Normal file
|
After Width: | Height: | Size: 479 B |
BIN
src/Icons/flags/czech.png
Normal file
|
After Width: | Height: | Size: 455 B |
BIN
src/Icons/flags/egypt.png
Normal file
|
After Width: | Height: | Size: 314 B |
BIN
src/Icons/flags/georgia.png
Normal file
|
After Width: | Height: | Size: 680 B |
BIN
src/Icons/flags/iceland.png
Normal file
|
After Width: | Height: | Size: 439 B |
BIN
src/Icons/flags/india.png
Normal file
|
After Width: | Height: | Size: 400 B |
BIN
src/Icons/flags/indonesia.png
Normal file
|
After Width: | Height: | Size: 290 B |
BIN
src/Icons/flags/ireland.png
Normal file
|
After Width: | Height: | Size: 190 B |
BIN
src/Icons/flags/israel.png
Normal file
|
After Width: | Height: | Size: 476 B |
BIN
src/Icons/flags/luxembourg.png
Normal file
|
After Width: | Height: | Size: 185 B |
BIN
src/Icons/flags/malaysia.png
Normal file
|
After Width: | Height: | Size: 643 B |
BIN
src/Icons/flags/mexico.png
Normal file
|
After Width: | Height: | Size: 402 B |
BIN
src/Icons/flags/morocco.png
Normal file
|
After Width: | Height: | Size: 373 B |
BIN
src/Icons/flags/newzealand.png
Normal file
|
After Width: | Height: | Size: 679 B |
BIN
src/Icons/flags/pakistan.png
Normal file
|
After Width: | Height: | Size: 833 B |
BIN
src/Icons/flags/philippines.png
Normal file
|
After Width: | Height: | Size: 680 B |
BIN
src/Icons/flags/serbia.png
Normal file
|
After Width: | Height: | Size: 459 B |
BIN
src/Icons/flags/singapore.png
Normal file
|
After Width: | Height: | Size: 372 B |
BIN
src/Icons/flags/slovenia.png
Normal file
|
After Width: | Height: | Size: 361 B |
BIN
src/Icons/flags/south_africa.png
Normal file
|
After Width: | Height: | Size: 773 B |
BIN
src/Icons/flags/suisse.png
Normal file
|
After Width: | Height: | Size: 293 B |
BIN
src/Icons/flags/taiwan.png
Normal file
|
After Width: | Height: | Size: 333 B |
BIN
src/Icons/flags/thailand.png
Normal file
|
After Width: | Height: | Size: 198 B |
BIN
src/Icons/flags/united_arab_emirates.png
Normal file
|
After Width: | Height: | Size: 248 B |
BIN
src/Icons/flags/usa.png
Normal file
|
After Width: | Height: | Size: 657 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 846 B |
BIN
src/Icons/magnet.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 813 B |