You've already forked qBittorrent
							
							
				mirror of
				https://github.com/qbittorrent/qBittorrent
				synced 2025-10-30 23:30:54 +01:00 
			
		
		
		
	Compare commits
	
		
			660 Commits
		
	
	
		
			release-2.
			...
			release-3.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | eb10a80c3c | ||
|   | 3679c79b5c | ||
|   | a0816d1ec6 | ||
|   | 175ac42b43 | ||
|   | d39874551c | ||
|   | 16402f75cf | ||
|   | aacea44d41 | ||
|   | f2a90520d7 | ||
|   | 34d25006f4 | ||
|   | e382fb1bec | ||
|   | ba9e3558a2 | ||
|   | f6514b4e7d | ||
|   | fe7ffdd413 | ||
|   | 8d1a4cb40a | ||
|   | ad3f4842f8 | ||
|   | 944fc5cf38 | ||
|   | 026c065ebc | ||
|   | 00ac784a4d | ||
|   | 7d99223547 | ||
|   | 65a338b5c2 | ||
|   | b0fd6ac756 | ||
|   | c268ca1278 | ||
|   | 13e3141dfb | ||
|   | 70fbd61758 | ||
|   | db638319c7 | ||
|   | 8d36a03f68 | ||
|   | 2b8dc3df18 | ||
|   | 11c5172588 | ||
|   | 43f55f5d3c | ||
|   | 153ebe2b77 | ||
|   | 70d11217de | ||
|   | 82beff5527 | ||
|   | 2e4f0876b0 | ||
|   | 072a72316f | ||
|   | d199482205 | ||
|   | eae7953061 | ||
|   | d88d4e9165 | ||
|   | cea36bc756 | ||
|   | c517444258 | ||
|   | a109274d1f | ||
|   | 490cb9dfdb | ||
|   | ab748166d5 | ||
|   | a796df9019 | ||
|   | 85abc98759 | ||
|   | 041540de6b | ||
|   | 72a06ad176 | ||
|   | eea69630fb | ||
|   | 19846758d8 | ||
|   | 7532fcfd3c | ||
|   | 616575911f | ||
|   | 227a1f6532 | ||
|   | 2c7186a381 | ||
|   | b4775b9d29 | ||
|   | ad8d7e3373 | ||
|   | b5e7443ae3 | ||
|   | 5a33c0d9ba | ||
|   | 7064ac994b | ||
|   | 3c05e660b3 | ||
|   | ed54c5f7ac | ||
|   | 63d6dd3735 | ||
|   | 02d56fd026 | ||
|   | d4c9da6475 | ||
|   | 99f126d0b6 | ||
|   | 8110d0eb01 | ||
|   | 90a2021948 | ||
|   | 7bfd0e058b | ||
|   | 6dcfe5b215 | ||
|   | 7daeb0297d | ||
|   | 76597fa080 | ||
|   | 14908f3fc8 | ||
|   | 3269cdfa70 | ||
|   | 5f0e3e3443 | ||
|   | fcd37dcbb4 | ||
|   | 528759fdaa | ||
|   | cfe1235b57 | ||
|   | e5d5f84ae7 | ||
|   | bbda5c4f44 | ||
|   | 9605192834 | ||
|   | 4c6e526e6c | ||
|   | e43fa17429 | ||
|   | c5dd14788a | ||
|   | 334ba32d69 | ||
|   | 8ba1941ab9 | ||
|   | ea85532cc2 | ||
|   | d3ee2e66af | ||
|   | 4ac917ef66 | ||
|   | 41660385d7 | ||
|   | e5ae8e5ac9 | ||
|   | 7fb87660ac | ||
|   | 6ea7b5b1d0 | ||
|   | b624ad312b | ||
|   | b64f4081cf | ||
|   | bd9b153e9b | ||
|   | 32ca66f234 | ||
|   | 753e9181fe | ||
|   | 9546a73182 | ||
|   | c0ee99c553 | ||
|   | 50976b8dc2 | ||
|   | 6a312461a1 | ||
|   | 3fe09bde12 | ||
|   | f851b18b80 | ||
|   | ced29ced1b | ||
|   | 5023b1ab74 | ||
|   | c2ef78de8d | ||
|   | 6fbe452b55 | ||
|   | 51c4a0d8d0 | ||
|   | b191a977af | ||
|   | 61858814ee | ||
|   | 365387f092 | ||
|   | df295d96c2 | ||
|   | a069f806d9 | ||
|   | 4638a9e6ee | ||
|   | af790e40f8 | ||
|   | 76fd5d3eb4 | ||
|   | dc8a8fbc06 | ||
|   | 30e0cc20c8 | ||
|   | 63dcb81384 | ||
|   | ce391ad328 | ||
|   | 7b908c7adf | ||
|   | 0d26d734b3 | ||
|   | f836c40fc4 | ||
|   | 21fe7f2ca6 | ||
|   | da85a57f83 | ||
|   | e35664b188 | ||
|   | 2fc350b265 | ||
|   | 83bcd6a2d7 | ||
|   | edcfa4df12 | ||
|   | 12a83e1aec | ||
|   | 7d50a8b28c | ||
|   | 232e112d84 | ||
|   | 5b1ee883b4 | ||
|   | b07fceec65 | ||
|   | 4c9cf6c773 | ||
|   | 164f37e961 | ||
|   | 093fb303f3 | ||
|   | f3d5039e33 | ||
|   | 007c307388 | ||
|   | 4079689f32 | ||
|   | 2b3d6926c8 | ||
|   | 14b3414e9d | ||
|   | 73254962f1 | ||
|   | 74f042516b | ||
|   | 8c0853248c | ||
|   | 80ea0a67b5 | ||
|   | 6d2b51203c | ||
|   | 8ac82156b3 | ||
|   | c1806b099a | ||
|   | 1046c816bf | ||
|   | cfbb5ecde5 | ||
|   | afdec02674 | ||
|   | 927e6bc6cc | ||
|   | e862d3332c | ||
|   | 699144a83d | ||
|   | 1792f44bfa | ||
|   | 64e4095ef1 | ||
|   | 1d1ffcec7c | ||
|   | e73bff817c | ||
|   | 486779ceb2 | ||
|   | 283a9950f3 | ||
|   | 4d601f5383 | ||
|   | 4d76bd33fc | ||
|   | 179985954c | ||
|   | ef34285855 | ||
|   | bbd1c9ee42 | ||
|   | 7cffd267d8 | ||
|   | bb11d11a72 | ||
|   | ae09bee193 | ||
|   | abf8c179fc | ||
|   | 5874c7bd57 | ||
|   | 12280c6a0f | ||
|   | c40801ce99 | ||
|   | cc192d7d47 | ||
|   | 64c256109a | ||
|   | d93a63e01a | ||
|   | 1c6ef50b77 | ||
|   | 497e2e92f8 | ||
|   | 2e950cc28b | ||
|   | f09ea1a884 | ||
|   | eebb7c8477 | ||
|   | 8feb6644a3 | ||
|   | dd30ada095 | ||
|   | 0627968c2f | ||
|   | 89249c140f | ||
|   | 90373897d6 | ||
|   | a85ddada25 | ||
|   | 3bb474e12f | ||
|   | 3b4a312b97 | ||
|   | 7a58df594d | ||
|   | 524f837ca5 | ||
|   | 4800b456c2 | ||
|   | 4652eb8ff3 | ||
|   | c2096e2ecd | ||
|   | e27a648594 | ||
|   | 90b1567d13 | ||
|   | 41132d39ae | ||
|   | 0ffba231d4 | ||
|   | c6ab0b148b | ||
|   | 183453488e | ||
|   | c96f14a7c8 | ||
|   | c5841146ff | ||
|   | 4ff249525b | ||
|   | 5d5bf403a8 | ||
|   | 2747481816 | ||
|   | c9591a66e8 | ||
|   | 02c4be4eaa | ||
|   | ee96f83211 | ||
|   | b095a1e3fe | ||
|   | d5aaa24ad6 | ||
|   | 9efd576d53 | ||
|   | 8e0d01643f | ||
|   | cb817bc06f | ||
|   | 1b905d5126 | ||
|   | ca26cc0000 | ||
|   | 00f40e6771 | ||
|   | 7a64c1ebb4 | ||
|   | 5d5f3cbdfd | ||
|   | 8bd35852dc | ||
|   | 92189b6c50 | ||
|   | e50ab2639e | ||
|   | 33832a46c1 | ||
|   | 6a905fc9e0 | ||
|   | 15d1e3505c | ||
|   | fda1797149 | ||
|   | 096baaf441 | ||
|   | 69cb9b906f | ||
|   | 755dc40ee4 | ||
|   | f601aa3cfb | ||
|   | 79cb430878 | ||
|   | 90f90936e1 | ||
|   | a98ad63d8b | ||
|   | 6d31af676e | ||
|   | 1204bf6e80 | ||
|   | 48f2b6fb66 | ||
|   | 10a4556479 | ||
|   | f4320cb58a | ||
|   | d31d935522 | ||
|   | 85d2fd8ce0 | ||
|   | ad79cbb9a1 | ||
|   | bdb0e125a4 | ||
|   | d26179cca0 | ||
|   | 8d612e8e2d | ||
|   | e74b39f5af | ||
|   | aaf3194670 | ||
|   | 74079b2c86 | ||
|   | 2eae22ac06 | ||
|   | 80359f3e5e | ||
|   | ccefe68e4c | ||
|   | f039cec4ca | ||
|   | 5a65580169 | ||
|   | 39ea57fe29 | ||
|   | 361db3d2cd | ||
|   | 83494f999a | ||
|   | de4cb2ede7 | ||
|   | 2f6ef9af51 | ||
|   | 2f0e15bc25 | ||
|   | 0cd4c079e9 | ||
|   | 3197d5cc2f | ||
|   | 81e4e39878 | ||
|   | 55a6bc3855 | ||
|   | acd4b64a8b | ||
|   | 984acc581c | ||
|   | 75a65a5f49 | ||
|   | 91af418254 | ||
|   | 901326c004 | ||
|   | 8986d87ef3 | ||
|   | a0d21ead18 | ||
|   | 122655758d | ||
|   | 9a964d871d | ||
|   | fc4989d738 | ||
|   | 5f59ab7e48 | ||
|   | 99557543fc | ||
|   | d7c907d17d | ||
|   | fd9ae50a57 | ||
|   | 1398a39768 | ||
|   | 7b4b2fe0f5 | ||
|   | 23848be6eb | ||
|   | d55f3b5aff | ||
|   | 716e84264e | ||
|   | 600c33dfa3 | ||
|   | e6e2baf3a8 | ||
|   | cfb4ded943 | ||
|   | dfe5fbe34c | ||
|   | 82788b9a02 | ||
|   | ff3cc4b8de | ||
|   | f74a471177 | ||
|   | 50ee44a1cf | ||
|   | 7a29f3d71d | ||
|   | 30d5273bb5 | ||
|   | 0f291629cc | ||
|   | e6e63fa529 | ||
|   | 766b210d06 | ||
|   | c502edf9e1 | ||
|   | 53f55a79b3 | ||
|   | f05ecf900a | ||
|   | 810a9710d7 | ||
|   | ef6c3f5a64 | ||
|   | 0e425d6a04 | ||
|   | 29d28b1d96 | ||
|   | c12467ee3e | ||
|   | 82e2b3a6cd | ||
|   | 33a0828a33 | ||
|   | 95e2b7ee1a | ||
|   | bc6fd3aa72 | ||
|   | a940917144 | ||
|   | 7bd4a1b849 | ||
|   | f62c38a8a7 | ||
|   | 41c503eb54 | ||
|   | 8cc538085f | ||
|   | b93cebacb2 | ||
|   | 30a3110ca7 | ||
|   | cf447296fb | ||
|   | dfc5e02edd | ||
|   | bcb29fb5fa | ||
|   | 41b57a0878 | ||
|   | 0b13fa6914 | ||
|   | c32e651c39 | ||
|   | fefc7df910 | ||
|   | 90b520651b | ||
|   | 3389820c73 | ||
|   | 85167c9043 | ||
|   | ce6f942ed3 | ||
|   | 5cf7e47ffa | ||
|   | bd4bb42e95 | ||
|   | 6778b7460a | ||
|   | 0c279e0567 | ||
|   | 1bee9c6a9d | ||
|   | 691b976e11 | ||
|   | 75efd4ea6b | ||
|   | 9363b1b4f2 | ||
|   | a69cbd2289 | ||
|   | ca6f732c7b | ||
|   | 5f5382297c | ||
|   | a5452d04ae | ||
|   | 8f4c4e8c40 | ||
|   | b1f1fbf114 | ||
|   | a2d9cce181 | ||
|   | 06ccae591e | ||
|   | 30bc14c940 | ||
|   | 33f5c8e903 | ||
|   | 8e529fc179 | ||
|   | f3448125c3 | ||
|   | 00b4ad6ec8 | ||
|   | a8a7b61ea9 | ||
|   | 9acac03f14 | ||
|   | b78d6ba243 | ||
|   | d53ca1d096 | ||
|   | 50a3e4e776 | ||
|   | a13bb06ec3 | ||
|   | 32a6c89c8c | ||
|   | 1905a6f0d1 | ||
|   | 3bc75bb068 | ||
|   | f0f7924325 | ||
|   | 5e48708920 | ||
|   | 58603451b4 | ||
|   | 9e3deb68de | ||
|   | 2fea7eaef2 | ||
|   | a53a70742d | ||
|   | 0c9dbc15f9 | ||
|   | ed468083c5 | ||
|   | 737982e92f | ||
|   | b43e641d21 | ||
|   | c25586b500 | ||
|   | 60d9bfe077 | ||
|   | 0d0c7559bf | ||
|   | de4559659d | ||
|   | 16071ec266 | ||
|   | fb03682df4 | ||
|   | 68041e382d | ||
|   | fb60a6489b | ||
|   | dd7e515f9c | ||
|   | 1bc6130da5 | ||
|   | 323275c340 | ||
|   | 3da9fec665 | ||
|   | f6254e9db6 | ||
|   | f06f820047 | ||
|   | 05643ca5d9 | ||
|   | c0eb048fe2 | ||
|   | 78bb4104b0 | ||
|   | 6c10936f6d | ||
|   | 4ca665eb0c | ||
|   | 39e1ebaa9b | ||
|   | 0a0033b242 | ||
|   | 9eea35f530 | ||
|   | 345e9ec870 | ||
|   | 53be56746b | ||
|   | 26b8decb24 | ||
|   | a275e26ba7 | ||
|   | 96c918ff8d | ||
|   | 2283bd2358 | ||
|   | f6b7b8bd6e | ||
|   | 1b8a2bf7c1 | ||
|   | 33325cdfee | ||
|   | d81f633d6b | ||
|   | 422b483d78 | ||
|   | ec5b9c769a | ||
|   | 74081bc6f8 | ||
|   | 3c650038e2 | ||
|   | 3e4f74ab4e | ||
|   | f7c586b47a | ||
|   | 98b09f68ae | ||
|   | 357e309dad | ||
|   | 2e544f6a74 | ||
|   | b0d6f3f9bf | ||
|   | 380989d808 | ||
|   | 6357d6372c | ||
|   | d744968ea6 | ||
|   | 76ca967d70 | ||
|   | 9cff66df3f | ||
|   | 72af6cb206 | ||
|   | c7043d5c39 | ||
|   | 1036990499 | ||
|   | f386fd9e23 | ||
|   | 1e75fa9086 | ||
|   | 252d2009cd | ||
|   | a48d36c9a2 | ||
|   | 01ad2e9746 | ||
|   | 2f7b20c704 | ||
|   | aae85b4498 | ||
|   | c39244aeb6 | ||
|   | 8f22279428 | ||
|   | 5a68bc5801 | ||
|   | 46a3b382db | ||
|   | dae959a533 | ||
|   | eeda9379d5 | ||
|   | 80bf89857a | ||
|   | 65eb40d1f5 | ||
|   | 9cf37f5364 | ||
|   | 1ad1498c5d | ||
|   | 405b804eb5 | ||
|   | 183e150da1 | ||
|   | f98d4e9149 | ||
|   | dad1568657 | ||
|   | f13fd37819 | ||
|   | ae692ba9b8 | ||
|   | 2036326403 | ||
|   | 3ad81595df | ||
|   | 9115a2ddc2 | ||
|   | 102e25771c | ||
|   | d65fc4575a | ||
|   | 928936046e | ||
|   | fe6df6176d | ||
|   | 6c52dbd477 | ||
|   | 37f5c8710e | ||
|   | 341a88c2ef | ||
|   | efe2280224 | ||
|   | a6294e5739 | ||
|   | c9c481fe69 | ||
|   | 8219c29b0c | ||
|   | 1e1094f8da | ||
|   | 452a8b2ae2 | ||
|   | bf746be692 | ||
|   | de2d2c7469 | ||
|   | 384eae7014 | ||
|   | 09ef9947b0 | ||
|   | 4385b941bb | ||
|   | ab0355f8d6 | ||
|   | 8f439589ea | ||
|   | ce6348bc32 | ||
|   | 4c5dd66b0f | ||
|   | 5fe562c0fa | ||
|   | 61faf34ef7 | ||
|   | 1038376cdb | ||
|   | 28d1671bb8 | ||
|   | 8e026e68d7 | ||
|   | 4be897a4e5 | ||
|   | 3f4947259b | ||
|   | e10a51e61e | ||
|   | 381eaf4b53 | ||
|   | 1b7e681e6d | ||
|   | 1ad764de7b | ||
|   | 246903fa0a | ||
|   | b298f9a06e | ||
|   | efdcdeb210 | ||
|   | 6e4826a512 | ||
|   | 28ba0c25a7 | ||
|   | ea0f384dbf | ||
|   | 9218f69d87 | ||
|   | b9b82e959b | ||
|   | 6606cf60af | ||
|   | 94a23cf1d4 | ||
|   | 15c3836a25 | ||
|   | afbac42420 | ||
|   | 7354e9b738 | ||
|   | 8abb1d917b | ||
|   | 7bd8bb4880 | ||
|   | 3d5487dfcb | ||
|   | be09284192 | ||
|   | cdf68c90ba | ||
|   | a46f665dd4 | ||
|   | e5e254a184 | ||
|   | 2a55aba5fa | ||
|   | f5d04a1be9 | ||
|   | 73132afe6c | ||
|   | 1d27fa9c03 | ||
|   | 1585b307bc | ||
|   | c882bc8a1d | ||
|   | aefa1dba18 | ||
|   | 7bd19f7696 | ||
|   | c25f51e866 | ||
|   | 68b13f10fe | ||
|   | 9764fe2a91 | ||
|   | 7c29e613f0 | ||
|   | 2a88e790df | ||
|   | deb7327ee6 | ||
|   | a82ccd8e95 | ||
|   | 4ffe100287 | ||
|   | 5990615248 | ||
|   | e83618a1b2 | ||
|   | 9e9cdedfd3 | ||
|   | ed5e55f85d | ||
|   | d2907dc08c | ||
|   | 69984f9550 | ||
|   | 94f92aa4f9 | ||
|   | 9e5ec56770 | ||
|   | b58b4d0066 | ||
|   | 11a068dfdd | ||
|   | deb7cb9d9e | ||
|   | 085ab0e660 | ||
|   | 2ff28ff46f | ||
|   | eb159c0b18 | ||
|   | 51b3a5164d | ||
|   | fa30d7bd1c | ||
|   | ea159c0146 | ||
|   | f4c2fdd2fd | ||
|   | 0c7643cfb3 | ||
|   | 3282e53e93 | ||
|   | 2e07e911e4 | ||
|   | e838b515b3 | ||
|   | 7854911d2f | ||
|   | 7846afaeb8 | ||
|   | 72b27eecff | ||
|   | 8c491cc831 | ||
|   | ac097b9904 | ||
|   | 9066520076 | ||
|   | 2d83482395 | ||
|   | 7a7016b4bd | ||
|   | f2e222adb1 | ||
|   | d4d3991795 | ||
|   | 6d9e519cdc | ||
|   | 16ad56c13f | ||
|   | f2df8ce1d9 | ||
|   | 921512e51d | ||
|   | 3529c5c7a0 | ||
|   | 984e6f9927 | ||
|   | 8b2f7c4661 | ||
|   | 83ce77b398 | ||
|   | 170b0798fd | ||
|   | 4795e9980b | ||
|   | 83317ca2d0 | ||
|   | 02fbd6a135 | ||
|   | 53900c386b | ||
|   | 669d1a3a46 | ||
|   | 122db6a77e | ||
|   | 86d3c98069 | ||
|   | dc87b9f9f4 | ||
|   | c7c30ccaee | ||
|   | b59dded2a4 | ||
|   | b48b9479d2 | ||
|   | 65883317c3 | ||
|   | 18e08c319f | ||
|   | 6265e2e092 | ||
|   | bc10bbe135 | ||
|   | 31aebdc7bf | ||
|   | 269a50efe5 | ||
|   | 9b31b1cd72 | ||
|   | e989e686a4 | ||
|   | d6b5627363 | ||
|   | 7381b0dcf6 | ||
|   | 8589eb7c0f | ||
|   | 284fbf5512 | ||
|   | b9aec63e92 | ||
|   | 88c063cd4d | ||
|   | ed3fa0ccee | ||
|   | 4ec78d1405 | ||
|   | 8bfbb98509 | ||
|   | 44011c9cd9 | ||
|   | 92c7996ff4 | ||
|   | 0a17eb32cc | ||
|   | 52e7d4ad03 | ||
|   | f843a4b13a | ||
|   | 719c30c70b | ||
|   | b41bcdc605 | ||
|   | 0ead6f72c6 | ||
|   | 104ebbc9a1 | ||
|   | 982098a205 | ||
|   | d5bdd2ea3e | ||
|   | 641b38690c | ||
|   | ea433c0619 | ||
|   | 8847df60e1 | ||
|   | 3995af6489 | ||
|   | 4412476109 | ||
|   | 0c2a121304 | ||
|   | 885753391d | ||
|   | cff7174bbb | ||
|   | 40bd040c4a | ||
|   | 0241fa7593 | ||
|   | 2f06099518 | ||
|   | 4489934c21 | ||
|   | 10d815c60d | ||
|   | c85cb8799e | ||
|   | fd4f46485c | ||
|   | 3154461f28 | ||
|   | da32321f10 | ||
|   | aec3087528 | ||
|   | 9d83439b83 | ||
|   | 684e00d639 | ||
|   | f982501576 | ||
|   | 87a744fcf6 | ||
|   | aca939f0ce | ||
|   | 675e8282b0 | ||
|   | a1272fff82 | ||
|   | 5579c7ff3d | ||
|   | f5d4404b67 | ||
|   | 851a677a48 | ||
|   | fd8157f6ba | ||
|   | 450c1fc124 | ||
|   | 493d6ce702 | ||
|   | 35a2b227b2 | ||
|   | 6b0c976a0d | ||
|   | f9c4150374 | ||
|   | fad028cfa2 | ||
|   | d9aa8cf4fd | ||
|   | 6b2da46e87 | ||
|   | 037cc655ba | ||
|   | 58bfa6f1bb | ||
|   | 0a6f591cf5 | ||
|   | 4ee623f921 | ||
|   | e85059521e | ||
|   | 2a4abe6a77 | ||
|   | 8217ddc705 | ||
|   | 5f301b5a04 | ||
|   | 9a5568349f | ||
|   | dc2de49cdb | ||
|   | c63503aaa6 | ||
|   | eaac9180e5 | ||
|   | b8797d075f | ||
|   | ea04f79e0f | ||
|   | 6a3d0da4ad | ||
|   | 4828a05ced | ||
|   | f379084b68 | ||
|   | c7314b99ea | ||
|   | d0afd46fd3 | ||
|   | ba7ece348c | ||
|   | 01b5844174 | ||
|   | dfa16320f0 | ||
|   | 93a84655b6 | ||
|   | a24dc147ab | ||
|   | e247d0e5dc | ||
|   | b410b7751e | ||
|   | 028051d6a5 | ||
|   | 7d4a1bc92a | ||
|   | 924b09b0f1 | ||
|   | 188a8ae4f5 | ||
|   | 1489a6bbd6 | ||
|   | 9c57cca93c | ||
|   | 6ed4724e33 | ||
|   | 63feffd985 | ||
|   | d988b0df9c | ||
|   | 85d6365bc2 | ||
|   | 784d972602 | 
							
								
								
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| src/geoip/GeoIP.dat | ||||
| src/qbittorrent | ||||
| qbittorrent.pro.user | ||||
| conf.pri | ||||
| Makefile | ||||
| *.pyc | ||||
| *.log | ||||
| # Compiled object files | ||||
| *.o | ||||
| # Generated MOC, resource and UI files | ||||
| moc_*.cpp | ||||
| qrc_*.cpp | ||||
| ui_*.h | ||||
| *.moc | ||||
							
								
								
									
										12
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -50,7 +50,7 @@ Images Authors: | ||||
|   copyright: Greg Houston <gregory.houston@gmail.com> | ||||
|   license: MIT | ||||
|  | ||||
| * file: src/Icons/skin/qbittorrent_mono.svg | ||||
| * file: src/Icons/skin/qbittorrent_mono* | ||||
|   copyright: Daniel Eguren <deguren@gmail.com> | ||||
|   license: LGPL | ||||
|  | ||||
| @@ -74,6 +74,8 @@ Translations authors: | ||||
|   copyright: | ||||
|   - Arabic: SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com) | ||||
|   - Armenian: Hrant Ohanyan (hrantohanyan@mail.am) | ||||
|   - Basque: Xabier Aramendi (azpidatziak@gmail.com) | ||||
|   - Belarusian: Mihas Varantsou (meequz@gmail.com) | ||||
|   - Brazilian: Nick Marinho (nickmarinho@gmail.com) | ||||
|   - Bulgarian: Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net) | ||||
|   - Catalan: Francisco Luque Contreras (frannoe@ya.com) | ||||
| @@ -87,11 +89,13 @@ Translations authors: | ||||
|   - Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net) | ||||
|   - French: Christophe Dumez (chris@qbittorrent.org) | ||||
|   - Galician: Marcos Lans (marcoslansgarza@gmail.com) | ||||
|   - Georgian: Beqa Arabuli (arabulibeqa@yahoo.com) | ||||
|   - German: Niels Hoffmann (zentralmaschine@users.sourceforge.net) | ||||
|   - Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net) and Stephanos Antaris (santaris@csd.auth.gr) | ||||
|   - Hebrew: David Deutsch (d.deffo@gmail.com) | ||||
|   - Hungarian: Majoros Péter (majoros.j.p@t-online.hu) | ||||
|   - Italian: Matteo Sechi (bu17714@gmail.com) | ||||
|   - Japanese: Nardog (alphisation@gmail.com) | ||||
|   - Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com) | ||||
|   - Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com) | ||||
|   - Korean: Jin Woo Sin (jin828sin@users.sourceforge.net) | ||||
|   - Lithuanian: Naglis Jonaitis (njonaitis@gmail.com) | ||||
|   - Norwegian: Tomaso | ||||
| @@ -104,5 +108,5 @@ Translations authors: | ||||
|   - Spanish: Francisco Luque Contreras (frannoe@ya.com) | ||||
|   - Swedish: Daniel Nylander (po@danielnylander.se) | ||||
|   - Turkish: Hasan Yilmaz (iletisim@hedefturkce.com) | ||||
|   - Ukrainian: Andrey Shpachenko (masterfix@users.sourceforge.net) and Oleh Prypin (blaxpirit@gmail.com) | ||||
|   - Ukrainian: Oleh Prypin (blaxpirit@gmail.com) | ||||
|   license: GPLv2 | ||||
|   | ||||
							
								
								
									
										112
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						
									
										112
									
								
								Changelog
									
									
									
									
									
								
							| @@ -1,3 +1,115 @@ | ||||
| * Sun Jan 20 2013 - Christophe Dumez <chris@qbittorrent.org> - v3.0.8 | ||||
|     - BUGFIX: Fix support for --no-splash command line argument | ||||
|     - BUGFIX: Fix compilation error with libtorrent v0.15 | ||||
|     - BUGFIX: Fix search issues with Python3 | ||||
|     - BUGFIX: Fix dead link about certificates in program preferences | ||||
|  | ||||
| * Sat Jan 19 2013 - Christophe Dumez <chris@qbittorrent.org> - v3.0.7 | ||||
|     - BUGFIX: Update max write cache size to 2048MB and set it to automatic by default (closes #148) | ||||
|     - BUGFIX: Add m4v to the list of previewable file extensions (closes #216) | ||||
|     - BUGFIX: Fix "Couldn't set environment variable..." message on start up (closes #245) | ||||
|     - BUGFIX: Use right path separator in torrent addition dialog on Windows | ||||
|     - BUGFIX: Fix "Set as default save path" setting (closes #254) | ||||
|     - BUGFIX: Reenable disk cache on Windows since the memory issue seems to be gone | ||||
|     - BUGFIX: Fixed several search engine plugins and removed the dead ones | ||||
|     - BUGFIX: Use https links in search plugins when possible | ||||
|     - BUGFIX: Bump Mootools to v1.4.5 (Web UI) | ||||
|     - BUGFIX: Require password to exit qBittorrent from tray icon when locked (closes #311) | ||||
|     - BUGFIX: Fix possible crash in loadPeers() (closes #222) | ||||
|  | ||||
| * Sun Oct 7 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.6 | ||||
|     - BUGFIX: Fix unicode support for command-line arguments on Windows (closes #139) | ||||
|     - BUGFIX: Do not store created torrent in memory before writing it to a file (closes #133) | ||||
|     - BUGFIX: No longer fallback to ANY interface if the user-selected interface cannot be found (closes #143) | ||||
|     - BUGFIX: Fix timezone parsing in RSS (closes #136) | ||||
|     - BUGFIX: Fix cookie support for RSS feeds (closes #119) | ||||
|  | ||||
| * Sun Sep 30 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.5 | ||||
|     - BUGFIX: Disabling systray icon no longer disables file association settings (closes #114) | ||||
|     - BUGFIX: Import new trackers from magnet link in case of duplicate torrent (closes #111) | ||||
|     - BUGFIX: Fix "Skip hash check" feature in torrent import dialog (closes #128) | ||||
|     - BUGFIX: Several Web UI connection fixes | ||||
|     - BUGFIX: Add Basque locale to Web UI | ||||
|  | ||||
| * Tue Sep 18 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.4 | ||||
|     - BUGFIX: Fix issue with downloads starting from scratch on startup if temporary | ||||
|       directory setting is enabled. | ||||
|  | ||||
| * Sun Sep 16 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.3 | ||||
|     - BUGFIX: Fix issue with temporary directory not being taken into consideration (closes #94) | ||||
|     - BUGFIX: Address encoding issues when using search engine on Windows (closes #29) | ||||
|     - BUGFIX: Bypass cache when uploading a torrent file in Web UI (closes #68) | ||||
|     - BUGFIX: "Completed On" column is not updated until restart (closes #84) | ||||
|     - BUGFIX: Fix possible build error on some systems | ||||
|     - I18N: Add hebrew translation | ||||
|  | ||||
| * Sat Sep 1 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.2 | ||||
|     - FEATURE: Add "clear" functionality to search field (closes #59) | ||||
|     - BUGFIX: Attempt to use qBittorrent icon from theme if available (closes #49) | ||||
|     - BUGFIX: Fix crash when a fastresume file is empty (closes #52) | ||||
|     - BUGFIX: Fix encoding problem for detected XDG Download folder (closes #53) | ||||
|     - BUGFIX: Improve performance when showing torrent content panel (Improves #24) | ||||
|     - BUGFIX: Fix label-based filtering of torrents whose label contains special characters | ||||
|     - BUGFIX: Fix possible crash due to labels (closes #64) | ||||
|  | ||||
| * Tue Aug 21 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.1 | ||||
|     - BUGFIX: Fix possible crash when adding a tracker to a magnet torrent without metadata (Closes #1034254) | ||||
|     - BUGFIX: Remember queue position for torrents without metadata (closes #17) | ||||
|     - BUGFIX: Fix crash when using unauthorized characters in label names (closes #19) | ||||
|     - BUGFIX: Fix search plugins updating (closes #25) | ||||
|     - BUGFIX: Make uTP connections rate limited by default | ||||
|  | ||||
| * Thu Aug 09 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.0 | ||||
|     - FEATURE: Brand new torrent addition dialog | ||||
|     - FEATURE: Add the ability to choose the save path when using magnet links (mutoso) | ||||
|     - FEATURE: Add support for adding multiple local torrents at once (Web UI) | ||||
|     - COSMETIC: Improve style of left panel | ||||
|     - BUGFIX: Lower panels no longer gets disabled | ||||
|     - BUGFIX: Major code refactoring and various optimizations. | ||||
|     - BUGFIX: No longer strip root folder from torrent files | ||||
|     - OTHER: Drop support for libtorrent v0.14.x | ||||
|     - OTHER: Drop support for Qt 4.5 | ||||
|  | ||||
| * Sat Oct 08 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.0 | ||||
|     - FEATURE: Add file association settings to program preferences (Windows) | ||||
|     - FEATURE: Add setting to ignore slow torrents in queueing system | ||||
|     - FEATURE: Add advanced setting to announce to all trackers | ||||
|     - FEATURE: Add support for anonymous mode (libtorrent >= v0.16) | ||||
|     - FEATURE: Add quick "set as default save path" checkbox to torrent addition dialog (sledgehammer999) | ||||
|     - BUGFIX: Add tray menu entry for toggling window visibility | ||||
|     - BUGFIX: Fix execution log lines selection and copying | ||||
|     - BUGFIX: Reduce CPU usage when running Web UI | ||||
|     - BUGFIX: Save RSS items to disk regularly for safety | ||||
|     - BUGFIX: Fix ratio calculation (use all_time_download) | ||||
|     - BUGFIX: Fix torrent upload issues (Web UI) | ||||
|     - BUGFIX: Fix some IE incompatibilities (Web UI) | ||||
|     - COSMETIC: Display speed at the beginning of the Window title | ||||
|     - COSMETIC: Several cosmetic fixes to the Web UI | ||||
|     - COSMETIC: Make top toolbar follow system style | ||||
|     - OTHER: Display libraries versions in about dialog (sledgehammer999) | ||||
|     - OTHER: Display qBittorrent version in Web UI about dialog | ||||
|  | ||||
| * Thu Jun 02 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.8.0 | ||||
|     - FEATURE: Added full libtorrent v0.16 support (uTP, ...) | ||||
|     - FEATURE: Proxy can be disabled for peer connections | ||||
|     - FEATURE: Added support for secure SMTP connection (SSL) | ||||
|     - FEATURE: Added support for SMTP authentication | ||||
|     - FEATURE: Added UPnP/NAT-PMP port forward for the Web UI port | ||||
|     - FEATURE: qBittorrent can update dynamic DNS services (DynDNS, no-ip) | ||||
|     - FEATURE: Display peer connection type in peer list (BT, uTP, Web) | ||||
|     - FEATURE: Added full regex support to RSS downloader | ||||
|     - FEATURE: Added regex help and validation in RSS downloader | ||||
|     - FEATURE: Added HTTPS support to Web UI (Ishan Arora) | ||||
|     - BUGFIX: Change systray icon on the fly (no restart needed) | ||||
|     - BUGFIX: Remember peer-level rate limits (requires libtorrent v0.16) | ||||
|     - BUGFIX: Stop annoncing to trackers an all tiers (more respectful) | ||||
|     - BUGFIX: Stop sharing private trackers with other peers | ||||
|     - BUGFIX: Tracker exchange extension can be disabled | ||||
|     - BUGFIX: Cleaner program exit on system log out | ||||
|     - BUGFIX: Fix possible magnet link parsing problems | ||||
|     - BUGFIX: Fix possible RSS URL parsing problems | ||||
|     - COSMETIC: Added monochrome icon for light themes  | ||||
|  | ||||
| * Sun Mar 20 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.7.0 | ||||
|     - FEATURE: Added search field for torrent content | ||||
|     - FEATURE: Added auto-shutdown confirmation dialog | ||||
|   | ||||
							
								
								
									
										16
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								INSTALL
									
									
									
									
									
								
							| @@ -10,25 +10,23 @@ qBittorrent - A BitTorrent client in C++ / Qt4 | ||||
|   will install and execute qBittorrent hopefully without any problems. | ||||
|  | ||||
|   Dependencies: | ||||
|     - Qt >= 4.5.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) | ||||
|     - Qt >= 4.6.0 (libqtgui, libqtcore, libqtnetwork, libqtxml, libqtdbus/optional) | ||||
|  | ||||
|     - pkg-config executable | ||||
|  | ||||
|     - libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, compatible with v0.15.x) | ||||
|     - libtorrent-rasterbar by Arvid Norberg (>= 0.15.0) | ||||
|         -> http://www.libtorrent.net | ||||
|         Be careful: another library (the one used by rTorrent) uses a similar name. | ||||
|  | ||||
|     - libboost 1.34.x (libboost-filesystem, libboost-date-time) + libasio | ||||
|     - libboost 1.34.x (libboost-filesystem°) + libasio | ||||
|       or | ||||
|     - libboost >= 1.35.x (libboost-system, libboost-filesystem, libboost-date-time) | ||||
|     - libboost >= 1.35.x (libboost-system, libboost-filesystem°) | ||||
|        | ||||
|     °libboost-filesystem is not needed if libtorrent-rasterbar >= v0.16.x is used | ||||
|  | ||||
|     - python >= 2.3 (needed by search engine) | ||||
|         * Run time only dependency | ||||
|  | ||||
|     - libnotify >= 0.4.2, glib-2.0 (optional) | ||||
|         * Can be used for system notifications to replace standard Qt notifications | ||||
|           so that it integrates better into the Desktop | ||||
|  | ||||
|     - geoip-database (optional) | ||||
|         * 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 | ||||
| @@ -46,7 +44,7 @@ qBittorrent - A BitTorrent client in C++ / Qt4 | ||||
|  | ||||
|     - pkg-config executable | ||||
|  | ||||
|     - libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, >= v0.15.0 ADVISED) | ||||
|     - libtorrent-rasterbar by Arvid Norberg (>= v0.15.0) | ||||
|         -> http://www.libtorrent.net | ||||
|         Be careful: another library (the one used by rTorrent) uses a similar name. | ||||
|  | ||||
|   | ||||
							
								
								
									
										16
									
								
								README.os2
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README.os2
									
									
									
									
									
								
							| @@ -27,7 +27,6 @@ First you need to create the conf.pri file in the same dir as this readme.os2 is | ||||
| the conf.pri file has the following content: | ||||
|  | ||||
| ##### conf.pri content beginn ##### | ||||
| PREFIX = . | ||||
| BINDIR = ./bin | ||||
| INCDIR = ./include | ||||
| LIBDIR = ./lib | ||||
| @@ -43,7 +42,10 @@ LIBS += -Lx:/trees/libtorrent/trunk/src/.libs \ | ||||
|  | ||||
| Of course all the above path references have to be adjusted to your build env. | ||||
|  | ||||
| It should now be easy to build qBittorrent: | ||||
| Now you can either do a normal build or a shadow build. A shadow build has the | ||||
| advantage that no created files are in the same dir as the sources are. | ||||
|  | ||||
| For a normal build do the following: | ||||
|  | ||||
| Simply type: | ||||
| $ qmake | ||||
| @@ -51,6 +53,16 @@ $ qmake | ||||
| Followed by: | ||||
| $ make | ||||
|  | ||||
| For a shadow build do the following: | ||||
| given your sources are in x:\trees\qbittorrent\trunk create a  | ||||
| x:\trees\qbittorrent\build directory | ||||
|  | ||||
| Now switch to the created directory and type: | ||||
| $ qmake ..\trunk | ||||
|  | ||||
| Followed by: | ||||
| $ make | ||||
|  | ||||
| If all works fine you should get a working qbittorrent executable. | ||||
|  | ||||
| If you have any question regarding the eCS (OS/2) port of qBittorrent you can meet me (_diver) on IRC: | ||||
|   | ||||
							
								
								
									
										131
									
								
								install.os2
									
									
									
									
									
								
							
							
						
						
									
										131
									
								
								install.os2
									
									
									
									
									
								
							| @@ -11,7 +11,7 @@ QBittorrent installation | ||||
|  | ||||
| 3. INSTALLATION | ||||
|  | ||||
| 4. CONTACT | ||||
| 4. BUGREPORTS | ||||
|  | ||||
| 5. CREDITS | ||||
|  | ||||
| @@ -29,17 +29,70 @@ Welcome to QBittorrent port for OS/2 and eComStation. | ||||
| 2. REQUIREMENTS | ||||
| =============== | ||||
|  | ||||
| * klibc 0.6.3 or later | ||||
| The following requirements can be installed either by rpm or by zip files. | ||||
|  | ||||
|     ftp://ftp.netlabs.org/pub/gcc/libc-0_6_3-csd3.wpi | ||||
| RPM Installation: | ||||
|  | ||||
| * openssl 1.0 | ||||
|   | ||||
|     ftp://ftp.netlabs.org/pub/unixos2/ssl10.zip | ||||
| klibc | ||||
| ----- | ||||
|  | ||||
| * Qt4 dll | ||||
|   1. yum install libc | ||||
|  | ||||
|     see http://svn.netlabs.org/qt4 for more information whats needed and where to get the latest | ||||
| openssl 1.0 | ||||
| ----------- | ||||
|  | ||||
|   1. yum install openssl | ||||
|  | ||||
| pthread | ||||
| ------- | ||||
|  | ||||
|   1. yum install pthread | ||||
|  | ||||
| GCC4Core | ||||
| -------- | ||||
|  | ||||
|   1. yum install libgcc | ||||
|   2. yum install gcc-stack-protector | ||||
|   3. yum install gcc-stdc++-shared-library | ||||
|   4. yum install gcc-supc++-shared-library | ||||
|  | ||||
| Qt4 dll | ||||
| ------- | ||||
|  | ||||
|   1. yum install libqt4 | ||||
|  | ||||
|  | ||||
| ZIP Installation: | ||||
|  | ||||
| klibc | ||||
| ----- | ||||
|  | ||||
|   1. Download klibc 0.6.5 or better (see http://svn.netlabs.org/libc for more information) | ||||
|   2. Install the files to your libpath eg x:\ecs\dll | ||||
|  | ||||
| openssl 1.0 | ||||
| ----------- | ||||
|  | ||||
|   1. Download the zip file from http://rpm.netlabs.org/release/00/zip | ||||
|   2. Install the files to your libpath eg. x:\ecs\dll | ||||
|  | ||||
| pthread | ||||
| ------- | ||||
|  | ||||
|   1. Download pthread 2012-03-13 or better from http://rpm.netlabs.org/release/00/zip | ||||
|   2. Install the files to your libpath eg. x:\ecs\dll | ||||
|  | ||||
| GCC4Core | ||||
| -------- | ||||
|  | ||||
|   1. Download GCC4Core 1.2.1 or better from http://ftp.netlabs.org/pub/gcc | ||||
|   2. Install the files to your libpath eg. x:\ecs\dll | ||||
|  | ||||
| Qt4 dll | ||||
| ------- | ||||
|  | ||||
|   1. Download Qt4 4.7.3 or better (see http://svn.netlabs.org/qt4 for more information) | ||||
|   2. Install the files according to the readme | ||||
|  | ||||
|  | ||||
| 3. INSTALLATION | ||||
| @@ -47,30 +100,6 @@ Welcome to QBittorrent port for OS/2 and eComStation. | ||||
|            | ||||
| To install QBittorrent, do the following: | ||||
|  | ||||
| klibc | ||||
| ----- | ||||
|  | ||||
|   1. Download klibc 0.6.3 csd3 or later. | ||||
|   2. Install the package by double-clicking on the WPI file. | ||||
|  | ||||
|  | ||||
| openssl 1.0 | ||||
| ----------- | ||||
|  | ||||
|   1. Download the zip file | ||||
|   2. Install the files to your libpath eg. x:\ecs\dll | ||||
|  | ||||
| Qt4 dll | ||||
| ------- | ||||
|  | ||||
|   1. Download the package | ||||
|   2. Install the package by double-clicking on the wpi file. | ||||
|  | ||||
|  | ||||
|  | ||||
| QBittorrent | ||||
| ----------- | ||||
|  | ||||
|   1. Create a directory for QBittorrent. | ||||
|   2. Extract the QBittorrent package to the new directory. | ||||
|   3. Create a WPS object for QBittorrent.exe. | ||||
| @@ -78,18 +107,13 @@ QBittorrent | ||||
|   5. Happy torrenting | ||||
|    | ||||
|  | ||||
| 4. BUGREPORTS | ||||
| ============= | ||||
|  | ||||
| 4. CONTACT | ||||
| ========== | ||||
|  | ||||
| Please send bugreports to: | ||||
|  | ||||
|   ecs@aroa.ch | ||||
|  | ||||
| Please create bugreports at http://svn.netlabs.org/qtapps | ||||
| Only bug reports with a reproducable bug are accepted. :-) | ||||
|  | ||||
|  | ||||
|  | ||||
| 5. CREDITS | ||||
| ========== | ||||
|  | ||||
| @@ -122,6 +146,33 @@ development, you can do so in one of the following ways: | ||||
| 7. HISTORY | ||||
| ========== | ||||
|  | ||||
| 2012-09-19 | ||||
|  | ||||
|   * updated to 3.0.4 code level of QBittorrent | ||||
|   * updated libtorrent to 0.16.3 level | ||||
|  | ||||
| 2012-09-06 | ||||
|  | ||||
|   * updated to 3.0.2 code level of QBittorrent | ||||
|  | ||||
| 2012-05-14 | ||||
|  | ||||
|   * updated to 2.9.8 code level of QBittorrent | ||||
|  | ||||
| 2012-03-15 | ||||
|  | ||||
|   * updated to 2.9.5 code level of QBittorrent | ||||
|  | ||||
| 2011-09-26 | ||||
|  | ||||
|   * updated to 2.8.5 code level of QBittorrent | ||||
|   * updated to Qt 4.7.3 | ||||
|  | ||||
| 2011-06-20 | ||||
|  | ||||
|   * updated to 2.7.3 code level of QBittorrent | ||||
|   * updated libtorrent to 0.15.6 level | ||||
|  | ||||
| 2010-12-23 | ||||
|  | ||||
|   * updated to 2.5.2 code level of QBittorrent | ||||
|   | ||||
							
								
								
									
										61
									
								
								macxconf.pri
									
									
									
									
									
								
							
							
						
						
									
										61
									
								
								macxconf.pri
									
									
									
									
									
								
							| @@ -2,15 +2,64 @@ PREFIX = /usr/local | ||||
| BINDIR = /usr/local/bin | ||||
| DATADIR = /usr/local/share | ||||
|  | ||||
| INCLUDEPATH += /usr/local/include/libtorrent /usr/include/openssl /usr/include /opt/local/include/boost /opt/local/include | ||||
| LIBS += -ltorrent-rasterbar -lcrypto -L/opt/local/lib -lboost_system-mt -lboost_filesystem-mt -lboost_thread-mt -framework Cocoa -framework Carbon | ||||
| # Use pkg-config to get all necessary libtorrent DEFINES | ||||
| CONFIG += link_pkgconfig | ||||
| PKGCONFIG += libtorrent-rasterbar | ||||
| DEFINES += BOOST_ASIO_DYN_LINK | ||||
|  | ||||
| # Special include/libs paths (macports) | ||||
| INCLUDEPATH += /usr/include/openssl /usr/include /opt/local/include/boost /opt/local/include | ||||
| LIBS += -L/opt/local/lib | ||||
|  | ||||
| # OpenSSL lib | ||||
| LIBS += -lssl -lcrypto | ||||
| # Boost system lib | ||||
| LIBS += -lboost_system-mt | ||||
| # Boost filesystem lib (Not needed for libtorrent >= 0.16.0) | ||||
| #LIBS += -lboost_filesystem-mt | ||||
| # Carbon | ||||
| LIBS += -framework Carbon -framework IOKit | ||||
|  | ||||
| document_icon.path = Contents/Resources | ||||
| document_icon.files = Icons/qBitTorrentDocument.icns | ||||
|  | ||||
| document_icon.files = mac/qBitTorrentDocument.icns | ||||
| QMAKE_BUNDLE_DATA += document_icon | ||||
| ICON = Icons/qbittorrent_mac.icns | ||||
| QMAKE_INFO_PLIST = Info.plist | ||||
|  | ||||
| qt_conf.path = Contents/Resources | ||||
| qt_conf.files = mac/qt.conf | ||||
| QMAKE_BUNDLE_DATA += qt_conf | ||||
|  | ||||
| qt_translations.path = Contents/MacOS/translations | ||||
| qt_translations.files = qt-translations/qt_ar.qm \ | ||||
|                         qt-translations/qt_bg.qm \ | ||||
|                         qt-translations/qt_ca.qm \ | ||||
|                         qt-translations/qt_cs.qm \ | ||||
|                         qt-translations/qt_da.qm \ | ||||
|                         qt-translations/qt_de.qm \ | ||||
|                         qt-translations/qt_es.qm \ | ||||
|                         qt-translations/qt_fi.qm \ | ||||
|                         qt-translations/qt_fr.qm \ | ||||
|                         qt-translations/qt_gl.qm \ | ||||
|                         qt-translations/qt_he.qm \ | ||||
|                         qt-translations/qt_hu.qm \ | ||||
|                         qt-translations/qt_it.qm \ | ||||
|                         qt-translations/qt_ja.qm \ | ||||
|                         qt-translations/qt_ko.qm \ | ||||
|                         qt-translations/qt_lt.qm \ | ||||
|                         qt-translations/qt_nl.qm \ | ||||
|                         qt-translations/qt_pl.qm \ | ||||
|                         qt-translations/qt_pt.qm \ | ||||
|                         qt-translations/qt_pt_BR.qm \ | ||||
|                         qt-translations/qt_ru.qm \ | ||||
|                         qt-translations/qt_sk.qm \ | ||||
|                         qt-translations/qt_sv.qm \ | ||||
|                         qt-translations/qt_tr.qm \ | ||||
|                         qt-translations/qt_uk.qm \ | ||||
|                         qt-translations/qt_zh_CN.qm \ | ||||
|                         qt-translations/qt_zh_TW.qm | ||||
| QMAKE_BUNDLE_DATA += qt_translations | ||||
|  | ||||
| ICON = mac/qbittorrent_mac.icns | ||||
| QMAKE_INFO_PLIST = mac/Info.plist | ||||
|  | ||||
| DEFINES += WITH_GEOIP_EMBEDDED | ||||
| message("On Mac OS X, GeoIP database must be embedded.") | ||||
|   | ||||
| @@ -11,5 +11,9 @@ LIBS += -ltorrent-rasterbar \ | ||||
|  | ||||
| RC_FILE = qbittorrent_os2.rc | ||||
|  | ||||
| # LIBTORRENT DEFINES | ||||
| DEFINES += WITH_SHIPPED_GEOIP_H | ||||
| DEFINES += BOOST_ASIO_DYN_LINK | ||||
|  | ||||
| DEFINES += WITH_GEOIP_EMBEDDED | ||||
| message("On eCS(OS/2), GeoIP database must be embedded.") | ||||
|   | ||||
| @@ -2,3 +2,17 @@ TEMPLATE = subdirs | ||||
|  | ||||
| SUBDIRS += src | ||||
|  | ||||
| include(version.pri) | ||||
|  | ||||
| # Dist | ||||
| dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/ && | ||||
| dist.commands += git clone . ../$${PROJECT_NAME}-$${PROJECT_VERSION} && | ||||
| dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.git && | ||||
| dist.commands += rm -f ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.gitignore && | ||||
| dist.commands += cd .. && | ||||
| dist.commands += tar czf $${PROJECT_NAME}-$${PROJECT_VERSION}.tar.gz $${PROJECT_NAME}-$${PROJECT_VERSION} && | ||||
| dist.commands += tar cf $${PROJECT_NAME}-$${PROJECT_VERSION}.tar $${PROJECT_NAME}-$${PROJECT_VERSION} && | ||||
| dist.commands += xz -f $${PROJECT_NAME}-$${PROJECT_VERSION}.tar && | ||||
| dist.commands += rm -fR $${PROJECT_NAME}-$${PROJECT_VERSION} | ||||
|  | ||||
| QMAKE_EXTRA_TARGETS += dist | ||||
|   | ||||
| @@ -8,8 +8,6 @@ | ||||
|   </dep> | ||||
|   <dep type='qt-dbus'> | ||||
|   </dep> | ||||
|   <dep type='qt-svg'> | ||||
|   </dep> | ||||
|   <dep type='pkg-config'> | ||||
|     <required/> | ||||
|   </dep> | ||||
| @@ -19,8 +17,6 @@ | ||||
|   <dep type='libboost'> | ||||
|     <required/> | ||||
|   </dep> | ||||
|   <dep type='libnotify'> | ||||
|   </dep> | ||||
|   <dep type='geoip-database'> | ||||
|   </dep> | ||||
|   <dep type='qtsingleapplication'> | ||||
|   | ||||
							
								
								
									
										117
									
								
								qcm/libboost.qcm
									
									
									
									
									
								
							
							
						
						
									
										117
									
								
								qcm/libboost.qcm
									
									
									
									
									
								
							| @@ -6,12 +6,15 @@ arg: with-libboost-lib=[path], Path to libboost library files | ||||
| -----END QCMOD----- | ||||
| */ | ||||
| #include <boost/version.hpp> | ||||
| #include <libtorrent/version.hpp> | ||||
|  | ||||
| class qc_libboost : public ConfObj | ||||
| { | ||||
| public: | ||||
| 	qc_libboost(Conf *c) : ConfObj(c) {} | ||||
| 	QString name() const { return "libboost"; } | ||||
| 	QString shortname() const { return "libboost"; } | ||||
|   qc_libboost(Conf *c) : ConfObj(c) {} | ||||
|   QString name() const { return "libboost"; } | ||||
|   QString shortname() const { return "libboost"; } | ||||
|  | ||||
|   QString findBoostLib(QString path, QString lib) const { | ||||
|     QString name; | ||||
|     QDir libDir(path); | ||||
| @@ -35,78 +38,60 @@ public: | ||||
|     } | ||||
|     return name; | ||||
|   } | ||||
| 	bool exec(){ | ||||
|         	QString s; | ||||
| 		s = conf->getenv("QC_WITH_LIBBOOST_INC"); | ||||
| 		if(!s.isEmpty()) { | ||||
| 			if(!conf->checkHeader(s, "boost/format.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 			if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 			if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 		}else{ | ||||
| 			QStringList sl; | ||||
| 			sl << "/usr/include"; | ||||
| 			sl << "/usr/local/include"; | ||||
| 			bool found = false; | ||||
| 			foreach(s, sl){ | ||||
| 				if(conf->checkHeader(s, "boost/format.hpp")){ | ||||
| 					found = true; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			if(!found) { | ||||
| 				return false; | ||||
|           		} | ||||
| 			if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 			if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 		} | ||||
| 		conf->addIncludePath(s); | ||||
| 		// Find library | ||||
| 		s = conf->getenv("QC_WITH_LIBBOOST_LIB"); | ||||
|  | ||||
|   bool exec(){ | ||||
|     QStringList sl; | ||||
|     QString s = conf->getenv("QC_WITH_LIBBOOST_INC"); | ||||
|     if (!s.isEmpty()) | ||||
|       sl << s; | ||||
|     sl << "/usr/include"; | ||||
|     sl << "/usr/local/include"; | ||||
|     bool found = false; | ||||
|     foreach (s, sl) { | ||||
|       if (conf->checkHeader(s, "boost/format.hpp") | ||||
| #if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16 | ||||
|           && conf->checkHeader(s, "boost/filesystem/path.hpp") | ||||
| #endif | ||||
|          ) { | ||||
|         found = true; | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|     if (!found) | ||||
|       return false; | ||||
|  | ||||
|     conf->addIncludePath(s); | ||||
|  | ||||
|     // Find library | ||||
|     s = conf->getenv("QC_WITH_LIBBOOST_LIB"); | ||||
|     QStringList required_libs; | ||||
| #if BOOST_VERSION >= 103500 | ||||
|       required_libs << "system";  | ||||
| #endif | ||||
|     if(conf->getenv("QC_DISABLE_GUI").isEmpty()) { | ||||
|       // Not required by nox | ||||
|       required_libs << "filesystem" ; | ||||
|     } | ||||
| #if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16 | ||||
|     required_libs << "filesystem" ; | ||||
| #endif | ||||
|     required_libs << "thread"; | ||||
|     QStringList libDirs; | ||||
|     if (!s.isEmpty()) | ||||
|       libDirs << s; | ||||
|     libDirs << "/usr/lib/" << "/usr/lib64/" << "/usr/local/lib/" << "/usr/local/lib64/"; | ||||
|  | ||||
|     foreach(const QString& lib, required_libs) { | ||||
|       if(!s.isEmpty()) { | ||||
|         QString detected_name = findBoostLib(s, lib); | ||||
|         if(detected_name.isEmpty()) { | ||||
|           printf("Could not find boost %s library!\n", qPrintable(lib)); | ||||
|           return false; | ||||
|         } else { | ||||
|       bool found = false; | ||||
|       foreach(const QString& libDir, libDirs) { | ||||
|         QString detected_name = findBoostLib(libDir, lib); | ||||
|         if(!detected_name.isEmpty()) { | ||||
|           conf->addLib("-l"+detected_name); | ||||
|         } | ||||
|       } else { | ||||
|         bool found = false; | ||||
|         foreach(const QString& libDir, libDirs) { | ||||
|           QString detected_name = findBoostLib(libDir, lib); | ||||
|           if(!detected_name.isEmpty()) { | ||||
|             conf->addLib("-l"+detected_name); | ||||
|             found = true; | ||||
|             break; | ||||
|           } | ||||
|         } | ||||
|         if(!found) { | ||||
|           printf("Could not find boost %s library!\n", qPrintable(lib)); | ||||
|           return false; | ||||
|           found = true; | ||||
|           break; | ||||
|         } | ||||
|       } | ||||
|       if(!found) { | ||||
|         printf("Could not find boost %s library!\n", qPrintable(lib)); | ||||
|         return false; | ||||
|       } | ||||
|     } | ||||
| 		return true; | ||||
| 	} | ||||
|     return true; | ||||
|   } | ||||
| }; | ||||
|   | ||||
| @@ -8,20 +8,17 @@ class qc_libtorrent_rasterbar : public ConfObj | ||||
| { | ||||
| public: | ||||
| 	qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {} | ||||
| 	QString name() const { return "libtorrent-rasterbar >= 0.14.4"; } | ||||
| 	QString name() const { return "libtorrent-rasterbar >= 0.15.0"; } | ||||
| 	QString shortname() const { return "libtorrent-rasterbar"; } | ||||
| 	bool exec(){ | ||||
| 		QStringList incs; | ||||
| 		QString req_ver = "0.14.4"; | ||||
| 		QString req_ver = "0.15.0"; | ||||
| 		QString version, libs, other; | ||||
| 		VersionMode mode = VersionMin; | ||||
| 		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other)) | ||||
| 			return false; | ||||
| 		for(int n = 0; n < incs.count(); ++n) | ||||
| 			conf->addIncludePath(incs[n]); | ||||
| 		if(conf->getenv("QC_DISABLE_GUI").isEmpty()) { | ||||
|   		  conf->addLib("-lcrypto"); | ||||
|                 } | ||||
| 		return true; | ||||
| 	} | ||||
| }; | ||||
|   | ||||
							
								
								
									
										12
									
								
								qcm/qt4.qcm
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								qcm/qt4.qcm
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
| -----BEGIN QCMOD----- | ||||
| name: Qt >= 4.5 | ||||
| name: Qt >= 4.6 | ||||
| arg: enable-debug, Enable debug mode | ||||
| arg: disable-gui, Disable qBittorrent Graphical user interface for headless running | ||||
| -----END QCMOD----- | ||||
| @@ -9,8 +9,8 @@ class qc_qt4 : public ConfObj | ||||
| { | ||||
| public: | ||||
| 	qc_qt4(Conf *c) : ConfObj(c) {} | ||||
| 	QString name() const { return "Qt >= 4.5"; } | ||||
| 	QString shortname() const { return "Qt 4.5"; } | ||||
| 	QString name() const { return "Qt >= 4.6"; } | ||||
| 	QString shortname() const { return "Qt 4.6"; } | ||||
| 	bool exec() | ||||
| 	{ | ||||
|                 // NOX mode | ||||
| @@ -19,7 +19,11 @@ public: | ||||
| 		} | ||||
|                 // Debug mode | ||||
|                 if(!conf->getenv("QC_ENABLE_DEBUG").isEmpty()) { | ||||
|                   conf->addExtra("CONFIG -= release"); | ||||
|                   conf->addExtra("CONFIG += debug"); | ||||
|                 } else { | ||||
|                   conf->addExtra("CONFIG -= debug"); | ||||
|                   conf->addExtra("CONFIG += release"); | ||||
|                 } | ||||
|                 #ifdef Q_OS_FREEBSD | ||||
|                   conf->addLib("-lexecinfo"); | ||||
| @@ -27,6 +31,6 @@ public: | ||||
|                 #else | ||||
|                   conf->addExtra("MANPREFIX = $$PREFIX/share");  | ||||
|                 #endif | ||||
| 		return(QT_VERSION >= 0x040500); | ||||
| 		return(QT_VERSION >= 0x040600); | ||||
| 	} | ||||
| }; | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								src/Icons/oxygen/security-high.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Icons/oxygen/security-high.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/oxygen/security-low.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Icons/oxygen/security-low.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/oxygen/task-attention.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Icons/oxygen/task-attention.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 651 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/skin/qbittorrent_mono_dark.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Icons/skin/qbittorrent_mono_dark.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/skin/qbittorrent_mono_light.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Icons/skin/qbittorrent_mono_light.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.6 KiB | 
							
								
								
									
										146
									
								
								src/about.ui
									
									
									
									
									
								
							
							
						
						
									
										146
									
								
								src/about.ui
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -33,6 +33,9 @@ | ||||
|  | ||||
| #include "ui_about.h" | ||||
| #include <QFile> | ||||
| #include <QtGlobal> | ||||
| #include <libtorrent/version.hpp> | ||||
| #include <boost/version.hpp> | ||||
|  | ||||
| class about : public QDialog, private Ui::AboutDlg{ | ||||
|   Q_OBJECT | ||||
| @@ -42,7 +45,7 @@ class about : public QDialog, private Ui::AboutDlg{ | ||||
|       qDebug("Deleting about dlg"); | ||||
|     } | ||||
|  | ||||
|     about(QWidget *parent): QDialog(parent){ | ||||
|     about(QWidget *parent): QDialog(parent) { | ||||
|       setupUi(this); | ||||
|       setAttribute(Qt::WA_DeleteOnClose); | ||||
|       // Set icons | ||||
| @@ -61,6 +64,8 @@ class about : public QDialog, private Ui::AboutDlg{ | ||||
|       QString trans_txt = "<p>"+tr("I would like to thank the following people who volunteered to translate qBittorrent:")+"</p>"; | ||||
|       trans_txt += QString::fromUtf8("<ul><li><u>Arabic:</u> SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)</li>\ | ||||
|           <li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li>\ | ||||
|           <li><u>Basque:</u> Xabier Aramendi (azpidatziak@gmail.com)</li>\ | ||||
|           <li><u>Belarusian:</u> Mihas Varantsou (meequz@gmail.com)</li>\ | ||||
|           <li><u>Brazilian:</u> Nick Marinho (nickmarinho@gmail.com)</li>\ | ||||
|           <li><u>Bulgarian:</u> Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)</li>\ | ||||
|           <li><u>Catalan:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\ | ||||
| @@ -72,11 +77,13 @@ class about : public QDialog, private Ui::AboutDlg{ | ||||
|           <li><u>Dutch:</u> Pieter Heyvaert (pieter_heyvaert@hotmail.com)</li>\ | ||||
|           <li><u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net) and Pekka Niemi (pekka.niemi@iki.fi)</li>\ | ||||
|           <li><u>Galician:</u> Marcos Lans (marcoslansgarza@gmail.com)</li>\ | ||||
|           <li><u>Georgian:</u> Beqa Arabuli (arabulibeqa@yahoo.com)</li>\ | ||||
|           <li><u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\ | ||||
|           <li><u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net)</li>\ | ||||
|           <li><u>Hebrew:</u> David Deutsch (d.deffo@gmail.com)</li>\ | ||||
|           <li><u>Hungarian:</u> Majoros Péter (majoros.peterj@gmail.com)</li>\ | ||||
|           <li><u>Italian:</u> Matteo Sechi (bu17714@gmail.com)</li>\ | ||||
|           <li><u>Japanese:</u> Nardog (alphisation@gmail.com)</li>\ | ||||
|           <li><u>Italian:</u> bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)</li>\ | ||||
|           <li><u>Japanese:</u> Masato Hashimoto (cabezon.hashimoto@gmail.com)</li>\ | ||||
|           <li><u>Korean:</u> Jin Woo Sin (jin828sin@users.sourceforge.net)</li>\ | ||||
|           <li><u>Lithuanian:</u> Naglis Jonaitis (njonaitis@gmail.com)</li>\ | ||||
|           <li><u>Norwegian:</u> Tomaso</li>\ | ||||
| @@ -89,16 +96,20 @@ class about : public QDialog, private Ui::AboutDlg{ | ||||
|           <li><u>Spanish:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\ | ||||
|           <li><u>Swedish:</u> Daniel Nylander (po@danielnylander.se)</li>\ | ||||
|           <li><u>Turkish:</u> Hasan YILMAZ (iletisim@hedefturkce.com) and Erdem Bingöl (erdem84@gmail.com)</li>\ | ||||
|           <li><u>Ukrainian:</u> Andrey Shpachenko (masterfix@users.sourceforge.net) and Oleh Prypin (blaxpirit@gmail.com)</li></ul>"); | ||||
|           <li><u>Ukrainian:</u> Oleh Prypin (blaxpirit@gmail.com)</li></ul>"); | ||||
|       trans_txt += "<p>"+tr("Please contact me if you would like to translate qBittorrent into your own language.")+"</p>"; | ||||
|       te_translation->setHtml(trans_txt); | ||||
|       // License | ||||
|       te_license->append(QString::fromUtf8("<a name='top'></a>")); | ||||
|       QFile licensefile(":/gpl.html"); | ||||
|       if(licensefile.open(QIODevice::ReadOnly|QIODevice::Text)) { | ||||
|       if (licensefile.open(QIODevice::ReadOnly|QIODevice::Text)) { | ||||
|         te_license->setHtml(licensefile.readAll()); | ||||
|         licensefile.close(); | ||||
|       } | ||||
|       // Libraries | ||||
|       label_11->setText(QT_VERSION_STR); | ||||
|       label_12->setText(LIBTORRENT_VERSION); | ||||
|       label_13->setText(QString::number(BOOST_VERSION / 100000) + "." + QString::number((BOOST_VERSION / 100) % 1000) + "." + QString::number(BOOST_VERSION % 100)); | ||||
|       show(); | ||||
|     } | ||||
| }; | ||||
|   | ||||
							
								
								
									
										601
									
								
								src/addnewtorrentdialog.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										601
									
								
								src/addnewtorrentdialog.cpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										91
									
								
								src/addnewtorrentdialog.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								src/addnewtorrentdialog.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | ||||
| /* | ||||
|  * Bittorrent Client using Qt4 and libtorrent. | ||||
|  * Copyright (C) 2012  Christophe Dumez | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License | ||||
|  * as published by the Free Software Foundation; either version 2 | ||||
|  * of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||
|  * | ||||
|  * In addition, as a special exception, the copyright holders give permission to | ||||
|  * link this program with the OpenSSL project's "OpenSSL" library (or with | ||||
|  * modified versions of it that use the same license as the "OpenSSL" library), | ||||
|  * and distribute the linked executables. You must obey the GNU General Public | ||||
|  * License in all respects for all of the code used other than "OpenSSL".  If you | ||||
|  * modify file(s), you may extend this exception to your version of the file(s), | ||||
|  * but you are not obligated to do so. If you do not wish to do so, delete this | ||||
|  * exception statement from your version. | ||||
|  * | ||||
|  * Contact : chris@qbittorrent.org | ||||
|  */ | ||||
|  | ||||
| #ifndef ADDNEWTORRENTDIALOG_H | ||||
| #define ADDNEWTORRENTDIALOG_H | ||||
|  | ||||
| #include <QDialog> | ||||
| #include <QUrl> | ||||
| #include <libtorrent/torrent_info.hpp> | ||||
|  | ||||
| QT_BEGIN_NAMESPACE | ||||
| namespace Ui { | ||||
| class AddNewTorrentDialog; | ||||
| } | ||||
| QT_END_NAMESPACE | ||||
|  | ||||
| class TorrentContentFilterModel; | ||||
| class PropListDelegate; | ||||
|  | ||||
| class AddNewTorrentDialog : public QDialog | ||||
| { | ||||
|   Q_OBJECT | ||||
|    | ||||
| public: | ||||
|   ~AddNewTorrentDialog(); | ||||
|  | ||||
|   static void showTorrent(const QString& torrent_path, const QString& from_url = QString()); | ||||
|   static void showMagnet(const QString& torrent_link); | ||||
|  | ||||
| private slots: | ||||
|   void showAdvancedSettings(bool show); | ||||
|   void displayContentTreeMenu(const QPoint&); | ||||
|   void on_buttonBox_accepted(); | ||||
|   void updateDiskSpaceLabel(); | ||||
|   void onSavePathChanged(int); | ||||
|   void relayout(); | ||||
|   void renameSelectedFile(); | ||||
|   void setdialogPosition(); | ||||
|  | ||||
| private: | ||||
|   explicit AddNewTorrentDialog(QWidget *parent = 0); | ||||
|   bool loadTorrent(const QString& torrent_path, const QString& from_url); | ||||
|   bool loadMagnet(const QString& magnet_uri); | ||||
|   void loadSavePathHistory(); | ||||
|   void saveSavePathHistory() const; | ||||
|   int indexOfSavePath(const QString& save_path); | ||||
|   void updateFileNameInSavePaths(const QString& new_filename); | ||||
|   void loadState(); | ||||
|   void saveState(); | ||||
|  | ||||
| private: | ||||
|   Ui::AddNewTorrentDialog *ui; | ||||
|   TorrentContentFilterModel *m_contentModel; | ||||
|   PropListDelegate *m_contentDelegate; | ||||
|   bool m_isMagnet; | ||||
|   QString m_filePath; | ||||
|   QString m_url; | ||||
|   QString m_hash; | ||||
|   boost::intrusive_ptr<libtorrent::torrent_info> m_torrentInfo; | ||||
|   QStringList m_filesPath; | ||||
|   bool m_hasRenamedFile; | ||||
| }; | ||||
|  | ||||
| #endif // ADDNEWTORRENTDIALOG_H | ||||
							
								
								
									
										274
									
								
								src/addnewtorrentdialog.ui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										274
									
								
								src/addnewtorrentdialog.ui
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -59,7 +59,7 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg { | ||||
|  | ||||
|   static bool askForDeletionConfirmation(bool *delete_local_files) { | ||||
|     DeletionConfirmationDlg dlg; | ||||
|     if(dlg.exec() == QDialog::Accepted) { | ||||
|     if (dlg.exec() == QDialog::Accepted) { | ||||
|       *delete_local_files = dlg.shouldDeleteLocalFiles(); | ||||
|       return true; | ||||
|     } | ||||
|   | ||||
							
								
								
									
										288
									
								
								src/dnsupdater.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										288
									
								
								src/dnsupdater.cpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										81
									
								
								src/dnsupdater.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								src/dnsupdater.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| /* | ||||
|  * Bittorrent Client using Qt4 and libtorrent. | ||||
|  * Copyright (C) 2011  Christophe Dumez | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License | ||||
|  * as published by the Free Software Foundation; either version 2 | ||||
|  * of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||
|  * | ||||
|  * In addition, as a special exception, the copyright holders give permission to | ||||
|  * link this program with the OpenSSL project's "OpenSSL" library (or with | ||||
|  * modified versions of it that use the same license as the "OpenSSL" library), | ||||
|  * and distribute the linked executables. You must obey the GNU General Public | ||||
|  * License in all respects for all of the code used other than "OpenSSL".  If you | ||||
|  * modify file(s), you may extend this exception to your version of the file(s), | ||||
|  * but you are not obligated to do so. If you do not wish to do so, delete this | ||||
|  * exception statement from your version. | ||||
|  * | ||||
|  * Contact : chris@qbittorrent.org | ||||
|  */ | ||||
|  | ||||
| #ifndef DNSUPDATER_H | ||||
| #define DNSUPDATER_H | ||||
|  | ||||
| #include <QObject> | ||||
| #include <QHostAddress> | ||||
| #include <QNetworkReply> | ||||
| #include <QDateTime> | ||||
| #include <QTimer> | ||||
| #include "preferences.h" | ||||
|  | ||||
| /*! | ||||
|  * Based on http://www.dyndns.com/developers/specs/ | ||||
|  */ | ||||
| class DNSUpdater : public QObject | ||||
| { | ||||
|   Q_OBJECT | ||||
| public: | ||||
|   explicit DNSUpdater(QObject *parent = 0); | ||||
|   ~DNSUpdater(); | ||||
|   static QUrl getRegistrationUrl(int service); | ||||
|  | ||||
| public slots: | ||||
|   void updateCredentials(); | ||||
|  | ||||
| private slots: | ||||
|   void checkPublicIP(); | ||||
|   void ipRequestFinished(QNetworkReply* reply); | ||||
|   void updateDNSService(); | ||||
|   void ipUpdateFinished(QNetworkReply* reply); | ||||
|  | ||||
| private: | ||||
|   QUrl getUpdateUrl() const; | ||||
|   void processIPUpdateReply(const QString &reply); | ||||
|  | ||||
| private: | ||||
|   QHostAddress m_lastIP; | ||||
|   QDateTime m_lastIPCheckTime; | ||||
|   QTimer m_ipCheckTimer; | ||||
|   int m_state; | ||||
|   // Service creds | ||||
|   DNS::Service m_service; | ||||
|   QString m_domain; | ||||
|   QString m_username; | ||||
|   QString m_password; | ||||
|  | ||||
| private: | ||||
|   static const int IP_CHECK_INTERVAL_MS = 1800000; // 30 min | ||||
|   enum State { OK, INVALID_CREDS, FATAL }; | ||||
| }; | ||||
|  | ||||
| #endif // DNSUPDATER_H | ||||
| @@ -43,38 +43,38 @@ class downloadFromURL : public QDialog, private Ui::downloadFromURL{ | ||||
|   Q_OBJECT | ||||
|  | ||||
|   public: | ||||
|     downloadFromURL(QWidget *parent): QDialog(parent){ | ||||
|     downloadFromURL(QWidget *parent): QDialog(parent) { | ||||
|       setupUi(this); | ||||
|       setAttribute(Qt::WA_DeleteOnClose); | ||||
|       setModal(true); | ||||
|       show(); | ||||
|       // Paste clipboard if there is an URL in it | ||||
|       QString clip_txt = qApp->clipboard()->text(); | ||||
|       if(clip_txt.startsWith("http://", Qt::CaseInsensitive) || clip_txt.startsWith("https://", Qt::CaseInsensitive) || clip_txt.startsWith("ftp://", Qt::CaseInsensitive) || clip_txt.startsWith("magnet:", Qt::CaseInsensitive) || clip_txt.startsWith("bc://bt/", Qt::CaseInsensitive)) { | ||||
|       if (clip_txt.startsWith("http://", Qt::CaseInsensitive) || clip_txt.startsWith("https://", Qt::CaseInsensitive) || clip_txt.startsWith("ftp://", Qt::CaseInsensitive) || clip_txt.startsWith("magnet:", Qt::CaseInsensitive) || clip_txt.startsWith("bc://bt/", Qt::CaseInsensitive)) { | ||||
|         textUrls->setText(clip_txt); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     ~downloadFromURL(){} | ||||
|     ~downloadFromURL() {} | ||||
|  | ||||
|   signals: | ||||
|     void urlsReadyToBeDownloaded(const QStringList& torrent_urls); | ||||
|  | ||||
|   public slots: | ||||
|     void on_downloadButton_clicked(){ | ||||
|     void on_downloadButton_clicked() { | ||||
|       QString urls = textUrls->toPlainText(); | ||||
|       QStringList url_list = urls.split(QString::fromUtf8("\n")); | ||||
|       QString url; | ||||
|       QStringList url_list_cleaned; | ||||
|       foreach(url, url_list){ | ||||
|       foreach (url, url_list) { | ||||
|         url = url.trimmed(); | ||||
|         if(!url.isEmpty()){ | ||||
|           if(url_list_cleaned.indexOf(QRegExp(url, Qt::CaseInsensitive, QRegExp::FixedString)) < 0){ | ||||
|         if (!url.isEmpty()) { | ||||
|           if (url_list_cleaned.indexOf(QRegExp(url, Qt::CaseInsensitive, QRegExp::FixedString)) < 0) { | ||||
|             url_list_cleaned << url; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       if(!url_list_cleaned.size()){ | ||||
|       if (!url_list_cleaned.size()) { | ||||
|         QMessageBox::critical(0, tr("No URL entered"), tr("Please type at least one URL.")); | ||||
|         return; | ||||
|       } | ||||
| @@ -83,7 +83,7 @@ class downloadFromURL : public QDialog, private Ui::downloadFromURL{ | ||||
|       close(); | ||||
|     } | ||||
|  | ||||
|     void on_cancelButton_clicked(){ | ||||
|     void on_cancelButton_clicked() { | ||||
|       close(); | ||||
|     } | ||||
| }; | ||||
|   | ||||
| @@ -14,31 +14,14 @@ | ||||
|    <string>Download from urls</string> | ||||
|   </property> | ||||
|   <layout class="QVBoxLayout"> | ||||
|    <property name="spacing"> | ||||
|     <number>6</number> | ||||
|    </property> | ||||
|    <property name="margin"> | ||||
|     <number>9</number> | ||||
|    </property> | ||||
|    <item> | ||||
|     <layout class="QHBoxLayout"> | ||||
|      <property name="spacing"> | ||||
|       <number>6</number> | ||||
|      </property> | ||||
|      <property name="margin"> | ||||
|       <number>0</number> | ||||
|      </property> | ||||
|      <item> | ||||
|       <widget class="QLabel" name="downloadURL_lbl"> | ||||
|        <property name="font"> | ||||
|         <font> | ||||
|          <family>Sans Serif</family> | ||||
|          <pointsize>12</pointsize> | ||||
|          <weight>75</weight> | ||||
|          <italic>false</italic> | ||||
|          <bold>true</bold> | ||||
|          <underline>false</underline> | ||||
|          <strikeout>false</strikeout> | ||||
|         </font> | ||||
|        </property> | ||||
|        <property name="text"> | ||||
| @@ -65,13 +48,7 @@ | ||||
|      </property> | ||||
|      <property name="font"> | ||||
|       <font> | ||||
|        <family>Sans Serif</family> | ||||
|        <pointsize>9</pointsize> | ||||
|        <weight>50</weight> | ||||
|        <italic>true</italic> | ||||
|        <bold>false</bold> | ||||
|        <underline>false</underline> | ||||
|        <strikeout>false</strikeout> | ||||
|       </font> | ||||
|      </property> | ||||
|      <property name="text"> | ||||
| @@ -81,12 +58,6 @@ | ||||
|    </item> | ||||
|    <item> | ||||
|     <layout class="QHBoxLayout"> | ||||
|      <property name="spacing"> | ||||
|       <number>6</number> | ||||
|      </property> | ||||
|      <property name="margin"> | ||||
|       <number>0</number> | ||||
|      </property> | ||||
|      <item> | ||||
|       <spacer> | ||||
|        <property name="orientation"> | ||||
|   | ||||
| @@ -32,7 +32,6 @@ | ||||
| #include <QNetworkAccessManager> | ||||
| #include <QNetworkRequest> | ||||
| #include <QNetworkProxy> | ||||
| #include <QNetworkCookie> | ||||
| #include <QNetworkCookieJar> | ||||
|  | ||||
| #include "downloadthread.h" | ||||
| @@ -55,7 +54,7 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
|   QString url = reply->url().toString(); | ||||
|   qDebug("Download finished: %s", qPrintable(url)); | ||||
|   // Check if the request was successful | ||||
|   if(reply->error() != QNetworkReply::NoError) { | ||||
|   if (reply->error() != QNetworkReply::NoError) { | ||||
|     // Failure | ||||
|     qDebug("Download failure (%s), reason: %s", qPrintable(url), qPrintable(errorCodeToString(reply->error()))); | ||||
|     emit downloadFailure(url, errorCodeToString(reply->error())); | ||||
| @@ -64,16 +63,21 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
|   } | ||||
|   // Check if the server ask us to redirect somewhere lese | ||||
|   const QVariant redirection = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); | ||||
|   if(redirection.isValid()) { | ||||
|   if (redirection.isValid()) { | ||||
|     // We should redirect | ||||
|     qDebug("Redirecting from %s to %s", qPrintable(url), qPrintable(redirection.toUrl().toString())); | ||||
|     m_redirectMapping.insert(redirection.toUrl().toString(), url); | ||||
|     downloadUrl(redirection.toUrl().toString()); | ||||
|     QUrl newUrl = redirection.toUrl(); | ||||
|     // Resolve relative urls | ||||
|     if (newUrl.isRelative()) | ||||
|         newUrl = reply->url().resolved(newUrl); | ||||
|     const QString newUrlString = newUrl.toString(); | ||||
|     qDebug("Redirecting from %s to %s", qPrintable(url), qPrintable(newUrlString)); | ||||
|     m_redirectMapping.insert(newUrlString, url); | ||||
|     downloadUrl(newUrlString); | ||||
|     reply->deleteLater(); | ||||
|     return; | ||||
|   } | ||||
|   // Checking if it was redirected, restoring initial URL | ||||
|   if(m_redirectMapping.contains(url)) { | ||||
|   if (m_redirectMapping.contains(url)) { | ||||
|     url = m_redirectMapping.take(url); | ||||
|   } | ||||
|   // Success | ||||
| @@ -82,13 +86,12 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
|   if (tmpfile->open()) { | ||||
|     QString filePath = tmpfile->fileName(); | ||||
|     qDebug("Temporary filename is: %s", qPrintable(filePath)); | ||||
|     if(reply->isOpen() || reply->open(QIODevice::ReadOnly)) { | ||||
|     if (reply->isOpen() || reply->open(QIODevice::ReadOnly)) { | ||||
|       // TODO: Support GZIP compression | ||||
|       tmpfile->write(reply->readAll()); | ||||
|       tmpfile->close(); | ||||
|       // XXX: For some reason, tmpfile has to be destroyed before | ||||
|       // the signal is sent or the file stays locked on Windows | ||||
|       // for some reason. | ||||
|       // XXX: tmpfile needs to be deleted on Windows before using the file | ||||
|       // or it will complain that the file is used by another process. | ||||
|       delete tmpfile; | ||||
|       // Send finished signal | ||||
|       emit downloadFinished(url, filePath); | ||||
| @@ -105,39 +108,21 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
|   reply->deleteLater(); | ||||
| } | ||||
|  | ||||
| #ifndef DISABLE_GUI | ||||
| void DownloadThread::loadCookies(const QString &host_name, QString url) { | ||||
|   const QList<QByteArray> raw_cookies = RssSettings().getHostNameCookies(host_name); | ||||
|   QNetworkCookieJar *cookie_jar = m_networkManager.cookieJar(); | ||||
|   QList<QNetworkCookie> cookies; | ||||
|   qDebug("Loading cookies for host name: %s", qPrintable(host_name)); | ||||
|   foreach(const QByteArray& raw_cookie, raw_cookies) { | ||||
|     QList<QByteArray> cookie_parts = raw_cookie.split('='); | ||||
|     if(cookie_parts.size() == 2) { | ||||
|       qDebug("Loading cookie: %s", raw_cookie.constData()); | ||||
|       cookies << QNetworkCookie(cookie_parts.first(), cookie_parts.last()); | ||||
|     } | ||||
|   } | ||||
|   cookie_jar->setCookiesFromUrl(cookies, url); | ||||
|   m_networkManager.setCookieJar(cookie_jar); | ||||
| } | ||||
| #endif | ||||
|  | ||||
| void DownloadThread::downloadTorrentUrl(const QString &url) { | ||||
| void DownloadThread::downloadTorrentUrl(const QString &url, const QList<QNetworkCookie>& cookies) | ||||
| { | ||||
|   // Process request | ||||
|   QNetworkReply *reply = downloadUrl(url); | ||||
|   QNetworkReply *reply = downloadUrl(url, cookies); | ||||
|   connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64))); | ||||
| } | ||||
|  | ||||
| QNetworkReply* DownloadThread::downloadUrl(const QString &url){ | ||||
| QNetworkReply* DownloadThread::downloadUrl(const QString &url, const QList<QNetworkCookie>& cookies) { | ||||
|   // Update proxy settings | ||||
|   applyProxySettings(); | ||||
| #ifndef DISABLE_GUI | ||||
|   // Load cookies | ||||
|   QString host_name = QUrl::fromEncoded(url.toUtf8()).host(); | ||||
|   if(!host_name.isEmpty()) | ||||
|     loadCookies(host_name, url); | ||||
| #endif | ||||
|   // Set cookies | ||||
|   if (!cookies.empty()) { | ||||
|     qDebug("Setting %d cookies for url: %s", cookies.size(), qPrintable(url)); | ||||
|     m_networkManager.cookieJar()->setCookiesFromUrl(cookies, url); | ||||
|   } | ||||
|   // Process download request | ||||
|   qDebug("url is %s", qPrintable(url)); | ||||
|   const QUrl qurl = QUrl::fromEncoded(url.toUtf8()); | ||||
| @@ -147,7 +132,7 @@ QNetworkReply* DownloadThread::downloadUrl(const QString &url){ | ||||
|   request.setRawHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"); | ||||
|   qDebug("Downloading %s...", request.url().toEncoded().data()); | ||||
|   qDebug("%d cookies for this URL", m_networkManager.cookieJar()->cookiesForUrl(url).size()); | ||||
|   for(int i=0; i<m_networkManager.cookieJar()->cookiesForUrl(url).size(); ++i) { | ||||
|   for (int i=0; i<m_networkManager.cookieJar()->cookiesForUrl(url).size(); ++i) { | ||||
|     qDebug("%s=%s", m_networkManager.cookieJar()->cookiesForUrl(url).at(i).name().data(), m_networkManager.cookieJar()->cookiesForUrl(url).at(i).value().data()); | ||||
|     qDebug("Domain: %s, Path: %s", qPrintable(m_networkManager.cookieJar()->cookiesForUrl(url).at(i).domain()), qPrintable(m_networkManager.cookieJar()->cookiesForUrl(url).at(i).path())); | ||||
|   } | ||||
| @@ -156,10 +141,10 @@ QNetworkReply* DownloadThread::downloadUrl(const QString &url){ | ||||
|  | ||||
| void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) { | ||||
|   QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); | ||||
|   if(!reply) return; | ||||
|   if(bytesTotal > 0) { | ||||
|   if (!reply) return; | ||||
|   if (bytesTotal > 0) { | ||||
|     // Total number of bytes is available | ||||
|     if(bytesTotal > 1048576) { | ||||
|     if (bytesTotal > 1048576) { | ||||
|       // More than 1MB, this is probably not a torrent file, aborting... | ||||
|       reply->abort(); | ||||
|       reply->deleteLater(); | ||||
| @@ -167,7 +152,7 @@ void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) | ||||
|       disconnect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64))); | ||||
|     } | ||||
|   } else { | ||||
|     if(bytesReceived  > 1048576) { | ||||
|     if (bytesReceived  > 1048576) { | ||||
|       // More than 1MB, this is probably not a torrent file, aborting... | ||||
|       reply->abort(); | ||||
|       reply->deleteLater(); | ||||
| @@ -178,13 +163,13 @@ void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) | ||||
| void DownloadThread::applyProxySettings() { | ||||
|   QNetworkProxy proxy; | ||||
|   const Preferences pref; | ||||
|   if(pref.isProxyEnabled()) { | ||||
|   if (pref.isProxyEnabled()) { | ||||
|     // Proxy enabled | ||||
|     proxy.setHostName(pref.getProxyIp()); | ||||
|     proxy.setPort(pref.getProxyPort()); | ||||
|     // Default proxy type is HTTP, we must change if it is SOCKS5 | ||||
|     const int proxy_type = pref.getProxyType(); | ||||
|     if(proxy_type == Proxy::SOCKS5 || proxy_type == Proxy::SOCKS5_PW) { | ||||
|     if (proxy_type == Proxy::SOCKS5 || proxy_type == Proxy::SOCKS5_PW) { | ||||
|       qDebug() << Q_FUNC_INFO << "using SOCKS proxy"; | ||||
|       proxy.setType(QNetworkProxy::Socks5Proxy); | ||||
|     } else { | ||||
| @@ -192,7 +177,7 @@ void DownloadThread::applyProxySettings() { | ||||
|       proxy.setType(QNetworkProxy::HttpProxy); | ||||
|     } | ||||
|     // Authentication? | ||||
|     if(pref.isProxyAuthEnabled()) { | ||||
|     if (pref.isProxyAuthEnabled()) { | ||||
|       qDebug("Proxy requires authentication, authenticating"); | ||||
|       proxy.setUser(pref.getProxyUsername()); | ||||
|       proxy.setPassword(pref.getProxyPassword()); | ||||
| @@ -204,7 +189,7 @@ void DownloadThread::applyProxySettings() { | ||||
| } | ||||
|  | ||||
| QString DownloadThread::errorCodeToString(QNetworkReply::NetworkError status) { | ||||
|   switch(status){ | ||||
|   switch(status) { | ||||
|   case QNetworkReply::HostNotFoundError: | ||||
|     return tr("The remote host name was not found (invalid hostname)"); | ||||
|   case QNetworkReply::OperationCanceledError: | ||||
|   | ||||
| @@ -32,6 +32,7 @@ | ||||
| #define DOWNLOADTHREAD_H | ||||
|  | ||||
| #include <QNetworkReply> | ||||
| #include <QNetworkCookie> | ||||
| #include <QObject> | ||||
| #include <QHash> | ||||
| #include <QSslError> | ||||
| @@ -45,8 +46,8 @@ class DownloadThread : public QObject { | ||||
|  | ||||
| public: | ||||
|   DownloadThread(QObject* parent = 0); | ||||
|   QNetworkReply* downloadUrl(const QString &url); | ||||
|   void downloadTorrentUrl(const QString &url); | ||||
|   QNetworkReply* downloadUrl(const QString &url, const QList<QNetworkCookie>& cookies = QList<QNetworkCookie>()); | ||||
|   void downloadTorrentUrl(const QString &url, const QList<QNetworkCookie>& cookies = QList<QNetworkCookie>()); | ||||
|   //void setProxy(QString IP, int port, QString username, QString password); | ||||
|  | ||||
| signals: | ||||
| @@ -63,9 +64,6 @@ private slots: | ||||
| private: | ||||
|   QString errorCodeToString(QNetworkReply::NetworkError status); | ||||
|   void applyProxySettings(); | ||||
| #ifndef DISABLE_GUI | ||||
|   void loadCookies(const QString &host_name, QString url); | ||||
| #endif | ||||
|  | ||||
| private: | ||||
|   QNetworkAccessManager m_networkManager; | ||||
|   | ||||
| @@ -1,32 +1,77 @@ | ||||
| /* | ||||
|  * Bittorrent Client using Qt4 and libtorrent. | ||||
|  * Copyright (C) 2011  Christophe Dumez | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License | ||||
|  * as published by the Free Software Foundation; either version 2 | ||||
|  * of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||
|  * | ||||
|  * In addition, as a special exception, the copyright holders give permission to | ||||
|  * link this program with the OpenSSL project's "OpenSSL" library (or with | ||||
|  * modified versions of it that use the same license as the "OpenSSL" library), | ||||
|  * and distribute the linked executables. You must obey the GNU General Public | ||||
|  * License in all respects for all of the code used other than "OpenSSL".  If you | ||||
|  * modify file(s), you may extend this exception to your version of the file(s), | ||||
|  * but you are not obligated to do so. If you do not wish to do so, delete this | ||||
|  * exception statement from your version. | ||||
|  * | ||||
|  * Contact : chris@qbittorrent.org | ||||
|  */ | ||||
|  | ||||
| #include <QListWidgetItem> | ||||
| #include <QLabel> | ||||
| #include "executionlog.h" | ||||
| #include "ui_executionlog.h" | ||||
| #include "qbtsession.h" | ||||
| #include "iconprovider.h" | ||||
| #include "loglistwidget.h" | ||||
|  | ||||
| ExecutionLog::ExecutionLog(QWidget *parent) : | ||||
|     QWidget(parent), | ||||
|     ui(new Ui::ExecutionLog) | ||||
|   QWidget(parent), | ||||
|   ui(new Ui::ExecutionLog), | ||||
|   m_logList(new LogListWidget(MAX_LOG_MESSAGES)), | ||||
|   m_banList(new LogListWidget(MAX_LOG_MESSAGES)) | ||||
| { | ||||
|     ui->setupUi(this); | ||||
|  | ||||
|     ui->tabConsole->setTabIcon(0, IconProvider::instance()->getIcon("view-calendar-journal")); | ||||
|     ui->tabConsole->setTabIcon(1, IconProvider::instance()->getIcon("view-filter")); | ||||
|     ui->textConsole->setHtml(QBtSession::instance()->getConsoleMessages().join("<br>")); | ||||
|     ui->tabGeneral->layout()->addWidget(m_logList); | ||||
|     ui->tabBan->layout()->addWidget(m_banList); | ||||
|  | ||||
|     const QStringList log_msgs = QBtSession::instance()->getConsoleMessages(); | ||||
|     foreach (const QString& msg, log_msgs) | ||||
|       addLogMessage(msg); | ||||
|     const QStringList ban_msgs = QBtSession::instance()->getPeerBanMessages(); | ||||
|     foreach (const QString& msg, ban_msgs) | ||||
|       addBanMessage(msg); | ||||
|     connect(QBtSession::instance(), SIGNAL(newConsoleMessage(QString)), SLOT(addLogMessage(QString))); | ||||
|     ui->textBannedPeers->setHtml(QBtSession::instance()->getPeerBanMessages().join("<br>")); | ||||
|     connect(QBtSession::instance(), SIGNAL(newBanMessage(QString)), SLOT(addBanMessage(QString))); | ||||
| } | ||||
|  | ||||
| ExecutionLog::~ExecutionLog() | ||||
| { | ||||
|   delete m_logList; | ||||
|   delete m_banList; | ||||
|   delete ui; | ||||
| } | ||||
|  | ||||
| void ExecutionLog::addLogMessage(const QString &msg) | ||||
| { | ||||
|    ui->textConsole->setHtml(msg+ui->textConsole->toHtml()); | ||||
|   m_logList->appendLine(msg); | ||||
| } | ||||
|  | ||||
| void ExecutionLog::addBanMessage(const QString &msg) | ||||
| { | ||||
|    ui->textBannedPeers->setHtml(msg+ui->textBannedPeers->toHtml()); | ||||
|   m_banList->appendLine(msg); | ||||
| } | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user