You've already forked qBittorrent
							
							
				mirror of
				https://github.com/qbittorrent/qBittorrent
				synced 2025-11-02 08:10:54 +01:00 
			
		
		
		
	Compare commits
	
		
			726 Commits
		
	
	
		
			release-2.
			...
			release-3.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					55259ff3ba | ||
| 
						 | 
					da5b49fe5a | ||
| 
						 | 
					89bc0fb3e3 | ||
| 
						 | 
					c86bfe53d0 | ||
| 
						 | 
					dd177c03e6 | ||
| 
						 | 
					6615d4987b | ||
| 
						 | 
					c6e0facc0b | ||
| 
						 | 
					c6845781c7 | ||
| 
						 | 
					5decf71772 | ||
| 
						 | 
					b7f313a35c | ||
| 
						 | 
					8c14c7926f | ||
| 
						 | 
					ca6ec01f1f | ||
| 
						 | 
					2c42ab7544 | ||
| 
						 | 
					2dbbfc1031 | ||
| 
						 | 
					3762401cd9 | ||
| 
						 | 
					65c0f3f041 | ||
| 
						 | 
					7ab877c95e | ||
| 
						 | 
					7b658a52dd | ||
| 
						 | 
					3705cb8067 | ||
| 
						 | 
					8b4be9bef6 | ||
| 
						 | 
					38bef752dc | ||
| 
						 | 
					a61a84d419 | ||
| 
						 | 
					553abb6442 | ||
| 
						 | 
					14419c190e | ||
| 
						 | 
					4e6ab18446 | ||
| 
						 | 
					fdeec686bf | ||
| 
						 | 
					25e4f562e7 | ||
| 
						 | 
					d86baf1ed8 | ||
| 
						 | 
					8112405498 | ||
| 
						 | 
					7f73eca01d | ||
| 
						 | 
					9951017f8b | ||
| 
						 | 
					57bbaeab06 | ||
| 
						 | 
					52fefd3dd6 | ||
| 
						 | 
					c1cddd2f7a | ||
| 
						 | 
					caabe526ca | ||
| 
						 | 
					19475f5abb | ||
| 
						 | 
					dca36a4817 | ||
| 
						 | 
					e38ef96c94 | ||
| 
						 | 
					43aff3885d | ||
| 
						 | 
					4b4d52d8d3 | ||
| 
						 | 
					735247f41f | ||
| 
						 | 
					422d0c9210 | ||
| 
						 | 
					6ea90c9741 | ||
| 
						 | 
					c2bbb5b71a | ||
| 
						 | 
					a2656670f7 | ||
| 
						 | 
					ae2781b4c8 | ||
| 
						 | 
					65a81f4fca | ||
| 
						 | 
					e025b2aa10 | ||
| 
						 | 
					9399f06db9 | ||
| 
						 | 
					2e6370084a | ||
| 
						 | 
					adc478a8dc | ||
| 
						 | 
					247c9a85e2 | ||
| 
						 | 
					40fc98d354 | ||
| 
						 | 
					5797d86c05 | ||
| 
						 | 
					62de16c56e | ||
| 
						 | 
					d89f2b0783 | ||
| 
						 | 
					d6b2131a91 | ||
| 
						 | 
					b085fc12d0 | ||
| 
						 | 
					0da431b7a3 | ||
| 
						 | 
					3e18308301 | ||
| 
						 | 
					47c7ffba99 | ||
| 
						 | 
					42b1dffbb9 | ||
| 
						 | 
					73ebe7e1fb | ||
| 
						 | 
					c9c3589946 | ||
| 
						 | 
					62596ab533 | ||
| 
						 | 
					0be1c661aa | ||
| 
						 | 
					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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										122
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						
									
										122
									
								
								Changelog
									
									
									
									
									
								
							@@ -1,3 +1,125 @@
 | 
			
		||||
* Sat Mar 16 2013 - Christophe Dumez <chris@qbittorrent.org> - v3.0.9
 | 
			
		||||
    - BUGFIX: Raise qBittorrent windows when another instance is launched
 | 
			
		||||
    - BUGFIX: Show human readable names for network interfaces in preferences (Windows)
 | 
			
		||||
    - BUGFIX: Fix torrent creator bug when saving non-latin path (Windows)
 | 
			
		||||
    - BUGFIX: Enable 'copy magnet uri' for torrents without metadata too
 | 
			
		||||
    - BUGFIX: Fix a few JSON parser issues (Gelmir)
 | 
			
		||||
    - BUGFIX: Add support for gzipped encoded HTTP responses (daimor)
 | 
			
		||||
    - BUGFIX: Fix possibly missing "Add torrent" icon (Driim)
 | 
			
		||||
    - OTHER: Add search plugin for Legit Torrents
 | 
			
		||||
 | 
			
		||||
* 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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										63
									
								
								macxconf.pri
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								macxconf.pri
									
									
									
									
									
								
							@@ -2,15 +2,66 @@ 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
 | 
			
		||||
# Zlib
 | 
			
		||||
LIBS += -lz
 | 
			
		||||
 | 
			
		||||
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.")
 | 
			
		||||
 
 | 
			
		||||
@@ -7,9 +7,13 @@ LIBS += -ltorrent-rasterbar \
 | 
			
		||||
        -lboost_thread \
 | 
			
		||||
        -lboost_system \
 | 
			
		||||
        -lboost_filesystem \
 | 
			
		||||
        -lssl -lcrypto -lidn -lpthread
 | 
			
		||||
        -lssl -lcrypto -lidn -lpthread -lz
 | 
			
		||||
 | 
			
		||||
RC_FILE = qbittorrent_os2.rc
 | 
			
		||||
 | 
			
		||||
# LIBTORRENT DEFINES
 | 
			
		||||
DEFINES += WITH_SHIPPED_GEOIP_H
 | 
			
		||||
DEFINES += BOOST_ASIO_DYN_LINK
 | 
			
		||||
 | 
			
		||||
DEFINES += WITH_GEOIP_EMBEDDED
 | 
			
		||||
message("On eCS(OS/2), GeoIP database must be embedded.")
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
@@ -51,11 +50,61 @@ DownloadThread::DownloadThread(QObject* parent) : QObject(parent) {
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QByteArray DownloadThread::gUncompress(Bytef *inData, size_t len) {
 | 
			
		||||
  if (len <= 4) {
 | 
			
		||||
    qWarning("gUncompress: Input data is truncated");
 | 
			
		||||
    return QByteArray();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  QByteArray result;
 | 
			
		||||
  z_stream strm;
 | 
			
		||||
  static const int CHUNK_SIZE = 1024;
 | 
			
		||||
  char out[CHUNK_SIZE];
 | 
			
		||||
 | 
			
		||||
  /* allocate inflate state */
 | 
			
		||||
  strm.zalloc = Z_NULL;
 | 
			
		||||
  strm.zfree = Z_NULL;
 | 
			
		||||
  strm.opaque = Z_NULL;
 | 
			
		||||
  strm.avail_in = len;
 | 
			
		||||
  strm.next_in = inData;
 | 
			
		||||
 | 
			
		||||
  const int windowBits = 15;
 | 
			
		||||
  const int ENABLE_ZLIB_GZIP = 32;
 | 
			
		||||
 | 
			
		||||
  int ret = inflateInit2(&strm, windowBits|ENABLE_ZLIB_GZIP); // gzip decoding
 | 
			
		||||
  if (ret != Z_OK)
 | 
			
		||||
    return QByteArray();
 | 
			
		||||
 | 
			
		||||
  // run inflate()
 | 
			
		||||
  do {
 | 
			
		||||
    strm.avail_out = CHUNK_SIZE;
 | 
			
		||||
    strm.next_out = reinterpret_cast<unsigned char*>(out);
 | 
			
		||||
 | 
			
		||||
    ret = inflate(&strm, Z_NO_FLUSH);
 | 
			
		||||
    Q_ASSERT(ret != Z_STREAM_ERROR); // state not clobbered
 | 
			
		||||
 | 
			
		||||
    switch (ret) {
 | 
			
		||||
    case Z_NEED_DICT:
 | 
			
		||||
    case Z_DATA_ERROR:
 | 
			
		||||
    case Z_MEM_ERROR:
 | 
			
		||||
      (void) inflateEnd(&strm);
 | 
			
		||||
 | 
			
		||||
      return QByteArray();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    result.append(out, CHUNK_SIZE - strm.avail_out);
 | 
			
		||||
  } while (!strm.avail_out);
 | 
			
		||||
 | 
			
		||||
  // clean up and return
 | 
			
		||||
  inflateEnd(&strm);
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 +113,22 @@ 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);
 | 
			
		||||
    // redirecting with first cookies
 | 
			
		||||
    downloadUrl(newUrlString, m_networkManager.cookieJar()->cookiesForUrl(url));
 | 
			
		||||
    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 +137,16 @@ 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)) {
 | 
			
		||||
      // TODO: Support GZIP compression
 | 
			
		||||
      tmpfile->write(reply->readAll());
 | 
			
		||||
    if (reply->isOpen() || reply->open(QIODevice::ReadOnly)) {
 | 
			
		||||
      QByteArray replyData = reply->readAll();
 | 
			
		||||
      if (reply->rawHeader("Content-Encoding") == "gzip") {
 | 
			
		||||
        // uncompress gzip reply
 | 
			
		||||
        replyData = gUncompress(reinterpret_cast<unsigned char*>(replyData.data()), replyData.length());
 | 
			
		||||
      }
 | 
			
		||||
      tmpfile->write(replyData);
 | 
			
		||||
      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 +163,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,19 +187,21 @@ 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()));
 | 
			
		||||
  }
 | 
			
		||||
  // accept gzip
 | 
			
		||||
  request.setRawHeader("Accept-Encoding", "gzip");
 | 
			
		||||
  return m_networkManager.get(request);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 +209,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 +220,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 +234,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 +246,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,9 +32,11 @@
 | 
			
		||||
#define DOWNLOADTHREAD_H
 | 
			
		||||
 | 
			
		||||
#include <QNetworkReply>
 | 
			
		||||
#include <QNetworkCookie>
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QHash>
 | 
			
		||||
#include <QSslError>
 | 
			
		||||
#include <zlib.h>
 | 
			
		||||
 | 
			
		||||
QT_BEGIN_NAMESPACE
 | 
			
		||||
class QNetworkAccessManager;
 | 
			
		||||
@@ -45,8 +47,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:
 | 
			
		||||
@@ -61,11 +63,9 @@ private slots:
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
  static QByteArray gUncompress(Bytef *inData, size_t len);
 | 
			
		||||
  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