Compare commits
	
		
			184 Commits
		
	
	
		
			release-3.
			...
			release-3.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					bfd864efce | ||
| 
						 | 
					573b0d921e | ||
| 
						 | 
					758e357fc5 | ||
| 
						 | 
					0b235dc968 | ||
| 
						 | 
					8305d8ff64 | ||
| 
						 | 
					534a94310d | ||
| 
						 | 
					26e6787e85 | ||
| 
						 | 
					c659a180d2 | ||
| 
						 | 
					632faf55be | ||
| 
						 | 
					5c7bc46451 | ||
| 
						 | 
					6932c960da | ||
| 
						 | 
					a4d9e65d38 | ||
| 
						 | 
					ab83c2fff5 | ||
| 
						 | 
					106f5d7cc0 | ||
| 
						 | 
					11943f6b88 | ||
| 
						 | 
					665e0967a5 | ||
| 
						 | 
					85b42fc3cf | ||
| 
						 | 
					99e6d0010d | ||
| 
						 | 
					b294d89b4f | ||
| 
						 | 
					b78d1a82df | ||
| 
						 | 
					96644c12ab | ||
| 
						 | 
					45d10b1398 | ||
| 
						 | 
					ef328f83c5 | ||
| 
						 | 
					6cf780f57c | ||
| 
						 | 
					37b048f2ab | ||
| 
						 | 
					260ed50f10 | ||
| 
						 | 
					307b5b7091 | ||
| 
						 | 
					1de9da89c1 | ||
| 
						 | 
					5fadb0d53e | ||
| 
						 | 
					49fa853dde | ||
| 
						 | 
					7555380964 | ||
| 
						 | 
					36d299f891 | ||
| 
						 | 
					658cc53f85 | ||
| 
						 | 
					08f4c0ed12 | ||
| 
						 | 
					5917b33ec6 | ||
| 
						 | 
					65ec3d0e0f | ||
| 
						 | 
					61c0c439f1 | ||
| 
						 | 
					4cbe3fd6f7 | ||
| 
						 | 
					94df3f44d7 | ||
| 
						 | 
					370effd0d3 | ||
| 
						 | 
					ff6e058dea | ||
| 
						 | 
					d3a6bcf7bf | ||
| 
						 | 
					c6a9a94331 | ||
| 
						 | 
					abdcaebc8e | ||
| 
						 | 
					c5a433a71e | ||
| 
						 | 
					0a10b98975 | ||
| 
						 | 
					506f933c48 | ||
| 
						 | 
					1399a9c86a | ||
| 
						 | 
					1fc916865c | ||
| 
						 | 
					8790092a81 | ||
| 
						 | 
					00f9180b81 | ||
| 
						 | 
					0236b1bd6d | ||
| 
						 | 
					bb61b3c05f | ||
| 
						 | 
					78469c8faa | ||
| 
						 | 
					3947f9c8ae | ||
| 
						 | 
					6c6ebaf485 | ||
| 
						 | 
					57915462b0 | ||
| 
						 | 
					8b94da20d3 | ||
| 
						 | 
					84c65c2b50 | ||
| 
						 | 
					e8c9db0084 | ||
| 
						 | 
					19419b85ff | ||
| 
						 | 
					5eb8a2a9f0 | ||
| 
						 | 
					95bdb61ad2 | ||
| 
						 | 
					d79c79b4ae | ||
| 
						 | 
					9b77d1f9f3 | ||
| 
						 | 
					659fa242e2 | ||
| 
						 | 
					1ba13b32a8 | ||
| 
						 | 
					1c38568f42 | ||
| 
						 | 
					7c1f712181 | ||
| 
						 | 
					81d813c4c5 | ||
| 
						 | 
					2cf7e94767 | ||
| 
						 | 
					9f71dd2c61 | ||
| 
						 | 
					f93374a946 | ||
| 
						 | 
					4158465109 | ||
| 
						 | 
					125d130984 | ||
| 
						 | 
					f66ef95918 | ||
| 
						 | 
					634b4d4f4d | ||
| 
						 | 
					ced950a764 | ||
| 
						 | 
					d84c367db5 | ||
| 
						 | 
					79aa3dfbcf | ||
| 
						 | 
					a308c6b9d0 | ||
| 
						 | 
					614c1f5d6e | ||
| 
						 | 
					fde9c2b9e9 | ||
| 
						 | 
					84a39671de | ||
| 
						 | 
					20086543de | ||
| 
						 | 
					1002e69e44 | ||
| 
						 | 
					09aa930142 | ||
| 
						 | 
					ada76381a1 | ||
| 
						 | 
					e4d5e38727 | ||
| 
						 | 
					99349193b4 | ||
| 
						 | 
					d69047df2e | ||
| 
						 | 
					8318fc2b61 | ||
| 
						 | 
					ff5a633a8e | ||
| 
						 | 
					28fcadc9ee | ||
| 
						 | 
					8a98cd5e20 | ||
| 
						 | 
					0706c3b3c8 | ||
| 
						 | 
					17188e31c5 | ||
| 
						 | 
					45d1e93ad2 | ||
| 
						 | 
					4c6f8413cb | ||
| 
						 | 
					db5e06a48f | ||
| 
						 | 
					e51013117c | ||
| 
						 | 
					11148fcda6 | ||
| 
						 | 
					d74e96f65f | ||
| 
						 | 
					454cd4c120 | ||
| 
						 | 
					8d5992d7cf | ||
| 
						 | 
					c37ad843b4 | ||
| 
						 | 
					2d130bfa85 | ||
| 
						 | 
					4ac1f7b09e | ||
| 
						 | 
					db8d8b73a1 | ||
| 
						 | 
					c2dbf50d0b | ||
| 
						 | 
					7bb99ceeea | ||
| 
						 | 
					44fff4f503 | ||
| 
						 | 
					a087232404 | ||
| 
						 | 
					ac96667af2 | ||
| 
						 | 
					8f5a0a273f | ||
| 
						 | 
					74869d87f6 | ||
| 
						 | 
					1f0ccabd1c | ||
| 
						 | 
					c6e294a130 | ||
| 
						 | 
					96bff490a3 | ||
| 
						 | 
					7c3155ba44 | ||
| 
						 | 
					74b26edc0d | ||
| 
						 | 
					959ee4c46b | ||
| 
						 | 
					4a9b772b72 | ||
| 
						 | 
					d5aef5c8cc | ||
| 
						 | 
					7780e9ad0a | ||
| 
						 | 
					4612a5a882 | ||
| 
						 | 
					3a5fe38be0 | ||
| 
						 | 
					d68b0c529b | ||
| 
						 | 
					c41082f610 | ||
| 
						 | 
					b6af8f190c | ||
| 
						 | 
					850018c86b | ||
| 
						 | 
					7dbda1b3cf | ||
| 
						 | 
					29ead90638 | ||
| 
						 | 
					d9061416a0 | ||
| 
						 | 
					42406b38fb | ||
| 
						 | 
					102b1b2065 | ||
| 
						 | 
					c110c5a084 | ||
| 
						 | 
					e24fb4ec73 | ||
| 
						 | 
					9f7d4f0898 | ||
| 
						 | 
					c0b7cd79a8 | ||
| 
						 | 
					d4c7b7be40 | ||
| 
						 | 
					5cecdc18ed | ||
| 
						 | 
					48240fbded | ||
| 
						 | 
					dbab9e3b93 | ||
| 
						 | 
					e4d1ee44a9 | ||
| 
						 | 
					4ae6035ee9 | ||
| 
						 | 
					722d851082 | ||
| 
						 | 
					01f253b24a | ||
| 
						 | 
					a4ab14e6d0 | ||
| 
						 | 
					8676fbae02 | ||
| 
						 | 
					203c1750a6 | ||
| 
						 | 
					2db2f73b48 | ||
| 
						 | 
					3efba63e23 | ||
| 
						 | 
					8f29befc65 | ||
| 
						 | 
					630fd7c344 | ||
| 
						 | 
					c74334669b | ||
| 
						 | 
					c7dc6d0edf | ||
| 
						 | 
					0f9ece76f8 | ||
| 
						 | 
					ec31081927 | ||
| 
						 | 
					6598b3266c | ||
| 
						 | 
					0d723af8f6 | ||
| 
						 | 
					5559af8d07 | ||
| 
						 | 
					f50290d46d | ||
| 
						 | 
					0dd3f6672d | ||
| 
						 | 
					d515a5b86a | ||
| 
						 | 
					e810fa1053 | ||
| 
						 | 
					12ea7efd5c | ||
| 
						 | 
					bcf2534e23 | ||
| 
						 | 
					412e6b0a43 | ||
| 
						 | 
					0d85124a46 | ||
| 
						 | 
					3abfbf107e | ||
| 
						 | 
					643803edfd | ||
| 
						 | 
					3fbb61033f | ||
| 
						 | 
					ddbe96c807 | ||
| 
						 | 
					44d0baf9a2 | ||
| 
						 | 
					ae67141fed | ||
| 
						 | 
					b9cb41cc4a | ||
| 
						 | 
					2e3341172a | ||
| 
						 | 
					4310b14e0e | ||
| 
						 | 
					db96dede87 | ||
| 
						 | 
					ba41a7bd9c | ||
| 
						 | 
					7fb9a2196c | ||
| 
						 | 
					781fcc800a | ||
| 
						 | 
					819da54868 | 
@@ -43,7 +43,7 @@ before_install:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
  - if [[ "$lt_source" == "from_dist" ]]; then sudo apt-get -qq install libtorrent-rasterbar-dev; fi
 | 
					  - if [[ "$lt_source" == "from_dist" ]]; then sudo apt-get -qq install libtorrent-rasterbar-dev; fi
 | 
				
			||||||
  - if [[ "$lt_source" == "from_svn" ]]; then cd .. && svn co svn://svn.code.sf.net/p/libtorrent/code/branches/RC_0_16 ./libtorrent && (cd libtorrent && ./autotool.sh && ./configure $ltconf && sudo make install) && sudo ldconfig /usr/local/lib && cd $TRAVIS_BUILD_DIR ; fi
 | 
					  - if [[ "$lt_source" == "from_svn" ]]; then cd .. && svn co http://libtorrent.googlecode.com/svn/branches/RC_0_16 ./libtorrent && (cd libtorrent && ./autotool.sh && ./configure $ltconf && sudo make install) && sudo ldconfig /usr/local/lib && cd $TRAVIS_BUILD_DIR ; fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
script:
 | 
					script:
 | 
				
			||||||
  - qt-qconf
 | 
					  - qt-qconf
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
[main]
 | 
					[main]
 | 
				
			||||||
host = https://www.transifex.com
 | 
					host = https://www.transifex.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[qbittorrent.qbittorrent_ents]
 | 
					[qbittorrent.qbittorrent_v3_1_x]
 | 
				
			||||||
file_filter = src/lang/qbittorrent_<lang>.ts
 | 
					file_filter = src/lang/qbittorrent_<lang>.ts
 | 
				
			||||||
source_file = src/lang/qbittorrent_en.ts
 | 
					source_file = src/lang/qbittorrent_en.ts
 | 
				
			||||||
source_lang = en
 | 
					source_lang = en
 | 
				
			||||||
@@ -10,7 +10,7 @@ minimum_perc = 23
 | 
				
			|||||||
mode = developer
 | 
					mode = developer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[qbittorrent.qbittorrentdesktop]
 | 
					[qbittorrent.qbittorrentdesktop_master]
 | 
				
			||||||
source_file = src/Icons/qBittorrent.desktop
 | 
					source_file = src/Icons/qBittorrent.desktop
 | 
				
			||||||
source_lang = en
 | 
					source_lang = en
 | 
				
			||||||
type = DESKTOP
 | 
					type = DESKTOP
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						@@ -81,7 +81,7 @@ Translations authors:
 | 
				
			|||||||
* files: src/lang/*.ts
 | 
					* files: src/lang/*.ts
 | 
				
			||||||
* file: src/Icons/qBittorrent.desktop
 | 
					* file: src/Icons/qBittorrent.desktop
 | 
				
			||||||
  copyright:
 | 
					  copyright:
 | 
				
			||||||
  - Arabic: SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)
 | 
					  - Arabic: SDERAWI (abz8868@msn.com), sn51234 (nesseyan@gmail.com) and  Ibrahim Saed ibraheem_alex(Transifex)
 | 
				
			||||||
  - Armenian: Hrant Ohanyan (hrantohanyan@mail.am)
 | 
					  - Armenian: Hrant Ohanyan (hrantohanyan@mail.am)
 | 
				
			||||||
  - Basque: Xabier Aramendi (azpidatziak@gmail.com)
 | 
					  - Basque: Xabier Aramendi (azpidatziak@gmail.com)
 | 
				
			||||||
  - Belarusian: Mihas Varantsou (meequz@gmail.com)
 | 
					  - Belarusian: Mihas Varantsou (meequz@gmail.com)
 | 
				
			||||||
@@ -90,11 +90,13 @@ Translations authors:
 | 
				
			|||||||
  - Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com)
 | 
					  - Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com)
 | 
				
			||||||
  - Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex)
 | 
					  - Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex)
 | 
				
			||||||
  - Croatian: Oliver Mucafir (oliver.untwist@gmail.com)
 | 
					  - Croatian: Oliver Mucafir (oliver.untwist@gmail.com)
 | 
				
			||||||
  - Czech: Jirka Vilim (web@tets.cz)
 | 
					  - Czech: Jirka Vilim (web@tets.cz) and Petr Cernobila abr(Transifex)
 | 
				
			||||||
  - Danish: Mathias Nielsen (comoneo@gmail.com)
 | 
					  - Danish: Mathias Nielsen (comoneo@gmail.com)
 | 
				
			||||||
  - Dutch: Pieter Heyvaert (pieter_heyvaert@hotmail.com)
 | 
					  - Dutch: Pieter Heyvaert (pieter_heyvaert@hotmail.com)
 | 
				
			||||||
  - English: Christophe Dumez (chris@qbittorrent.org)
 | 
					  - English: Christophe Dumez (chris@qbittorrent.org)
 | 
				
			||||||
  - Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net)
 | 
					  - English(Australia): Robert Readman readmanr(Transifex)
 | 
				
			||||||
 | 
					  - English(United Kingdom): Robert Readman readmanr(Transifex)
 | 
				
			||||||
 | 
					  - Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net), Pekka Niemi (pekka.niemi@iki.fi) and Jiri Grönroos artnay(Transifex)
 | 
				
			||||||
  - French: Christophe Dumez (chris@qbittorrent.org)
 | 
					  - French: Christophe Dumez (chris@qbittorrent.org)
 | 
				
			||||||
  - Galician: Marcos Lans (marcoslansgarza@gmail.com) and antiparvos(Transifex)
 | 
					  - Galician: Marcos Lans (marcoslansgarza@gmail.com) and antiparvos(Transifex)
 | 
				
			||||||
  - Georgian: Beqa Arabuli (arabulibeqa@yahoo.com)
 | 
					  - Georgian: Beqa Arabuli (arabulibeqa@yahoo.com)
 | 
				
			||||||
@@ -110,12 +112,12 @@ Translations authors:
 | 
				
			|||||||
  - Polish: Mariusz Fik (fisiu@opensuse.org)
 | 
					  - Polish: Mariusz Fik (fisiu@opensuse.org)
 | 
				
			||||||
  - Portuguese: Sérgio Marques smarquespt(Transifex)
 | 
					  - Portuguese: Sérgio Marques smarquespt(Transifex)
 | 
				
			||||||
  - Portuguese(Brazil): Nick Marinho (nickmarinho@gmail.com)
 | 
					  - Portuguese(Brazil): Nick Marinho (nickmarinho@gmail.com)
 | 
				
			||||||
  - Romanian: Obada Denis (obadadenis@users.sourceforge.net)
 | 
					  - Romanian: Obada Denis (obadadenis@users.sourceforge.net), Adrian Gabor Adriannho(Transifex) and Mihai Coman z0id(Transifex)
 | 
				
			||||||
  - Russian: Nick Khazov (m2k3d0n at users.sourceforge.net), Alexey Morsov (samurai@ricom.ru), Nick Tiskov Dayman(daymansmail (at) gmail (dot) com), Dmitry DmitryKX(Transifex) and kraleksandr kraleksandr(Transifex)
 | 
					  - Russian: Nick Khazov (m2k3d0n at users.sourceforge.net), Alexey Morsov (samurai@ricom.ru), Nick Tiskov Dayman(daymansmail (at) gmail (dot) com), Dmitry DmitryKX(Transifex) and kraleksandr kraleksandr(Transifex)
 | 
				
			||||||
  - Serbian: Anaximandar Milet (anaximandar at operamail.com)
 | 
					  - Serbian: Anaximandar Milet (anaximandar at operamail.com)
 | 
				
			||||||
  - Slovak:  helix84
 | 
					  - Slovak:  helix84
 | 
				
			||||||
  - Spanish: Francisco Luque Contreras (frannoe@ya.com), Alfredo Monclus alfrix(Transifex) and José Antonio Moray moray33(Transifex)
 | 
					  - Spanish: Francisco Luque Contreras (frannoe@ya.com), Alfredo Monclus alfrix(Transifex) and José Antonio Moray moray33(Transifex)
 | 
				
			||||||
  - Swedish: Daniel Nylander (po@danielnylander.se)
 | 
					  - Swedish: Daniel Nylander (po@danielnylander.se) and Emil Hammarberg Ooglogput(Transifex)
 | 
				
			||||||
  - Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
 | 
					  - Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
 | 
				
			||||||
  - Ukrainian: Oleh Prypin (blaxpirit@gmail.com) and zubr139(Transifex)
 | 
					  - Ukrainian: Oleh Prypin (blaxpirit@gmail.com) and zubr139(Transifex)
 | 
				
			||||||
  - Vietnamese: Anh Phan ppanhh(Transifex)
 | 
					  - Vietnamese: Anh Phan ppanhh(Transifex)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										113
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						@@ -1,3 +1,116 @@
 | 
				
			|||||||
 | 
					* Sat Mar 01 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.9
 | 
				
			||||||
 | 
					    - BUGFIX: Fix nox build. Closes #1368 (bob23450)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix build with libtorrent 0.15.x (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix missing percentage signs. Closes #1392. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix queue sorting order. (alfrix)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix build using qt < 4.7 Closes #1385. (Evgeny Lensky)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix autoupdater. Send our user-agent to sourceforge.net (sledgehammer999)
 | 
				
			||||||
 | 
					    - FEATURE: Add button for links in toolbar (alfrix)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Sun Feb 02 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.8
 | 
				
			||||||
 | 
					    - BUGFIX: Really fix build of v3.1.6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Sun Feb 02 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.7
 | 
				
			||||||
 | 
					    - BUGFIX: Fix build of v3.1.6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Sun Feb 02 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.6
 | 
				
			||||||
 | 
					    - BUGFIX: Fix 'preview file' regression. Closes #1285. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix peers and seeds sorting in transfer list. (Angel Alonso)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix btdigg search engine. (BTDigg research team)
 | 
				
			||||||
 | 
					    - BUGFIX: Save statistics every 15min and only if there was new traffic. Fixes #1288 and partially #1272. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix share ratio text in the 'general' tab. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Output a more generic message when blocking IPs and don't use italics in the log. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Allow 2 decimals when setting the share ratio. Closes #1303. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix extratorrents search plugin. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Use shorter names for amount columns in main UI (Gelmir)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix overstretched options dialog. Closes #1293. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Don't show a popup menu when no torrent is selected. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Launch external programs async and don't block. Closes #1252. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Don't re-announce to trackers when torrent is paused. Closes #1310. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Bring dialog boxes in the front when qbt doesn't have focus. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Correctly resize 'name' column of the content tab. Closes #1360. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Correctly restore 'name' column width when loading magnet links in the 'Add new torrent dialog'. Closes #1334. (sledgehammer999)
 | 
				
			||||||
 | 
					    - WEBUI: Fix sorting by size in WebUI when non-default locale used. (Vladimir Golovnev)
 | 
				
			||||||
 | 
					    - UI: Reposition statistics menu item. (sledgehammer999)
 | 
				
			||||||
 | 
					    - UI: Convert more accurately decimal numbers to text. (sledgehammer999)
 | 
				
			||||||
 | 
					    - WINDOWS/OSX: Improvements on the behavior of the program updater(closes #1282) (sledgehammer999)
 | 
				
			||||||
 | 
					    - LINUX: Explicitle tell that we don't support freedesktop's startup notify standard. Fixes GNOME issues. Closes #1217. (sledgehammer999)
 | 
				
			||||||
 | 
					    - LINUX: Add our WM_CLASS in the .desktop file so window managers know how to group our windows. (sledgehammer999)
 | 
				
			||||||
 | 
					    - OTHER: Sync translations from Transifex.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Thu 16 Jan 2014 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.5
 | 
				
			||||||
 | 
					    - BUGFIX: Fix compilation with Qt 4.7. Closes #1215. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Third attempt at fixing saving settings on OS shutdown. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Preview now correctly uses the selected file. Closes #1222 #1182. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Allow to resize the columns in Add New Torrent dialog. Closes #1207 #676 (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Ensure that at least one column in the tranferlist is always visible. Closes #1165. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Ensure that the options window will always be placed onscreen. Closes #1226. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Delete temporary files after they aren't needed. Closes #1188. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Correctly detect libtorrent version. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Various code cppcheck fixes (Konstantin Goncharik)
 | 
				
			||||||
 | 
					    - BUGFIX: Remove isohunt search engine and update thepiratebay url (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix rss settings corruption when checking regexp and going to other rule. (Gelmir)
 | 
				
			||||||
 | 
					    - BUGFIX: Don't count paused torrents for the autoshutdown. Closes #1280. (sledgehammer999)
 | 
				
			||||||
 | 
					    - LINUX: Fix notifications with xfce4-notifyd.
 | 
				
			||||||
 | 
					    - OSX: Added basic retina support. Closes #1251. (Sébastien Lavoie)
 | 
				
			||||||
 | 
					    - OTHER: Sync translations from Transifex.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Sun 29 Dec 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.4
 | 
				
			||||||
 | 
					    - FEATURE: Statistics dialog (Gelmir)
 | 
				
			||||||
 | 
					    - FEATURE: Tooltips explaining each peer's connection flags (sledgehammer999)
 | 
				
			||||||
 | 
					    - FEATURE: Win/Mac Check for program updates every 15min and allow the user to manually check for updates through the help menu. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Better dialog message for torrent delete confirmation (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix resizing grip location. Closes #1146. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Lock toolbar in place. Closes #1144. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Second attempt at fixing saving settings on shutdown. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Sort labels in 'Add new torrent' dialog. Closes #1150 #411. (sledgehammer999)
 | 
				
			||||||
 | 
					    - LINUX: Fix build under Ubuntu 13.10 (sledgehammer999)
 | 
				
			||||||
 | 
					    - LINUX: Make sleep and shutdown functions work on systemd's logind (Faheem Pervez)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Mon Nov 20 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.3
 | 
				
			||||||
 | 
					    - FEATURE: Add a key shortcut to "Add link to torrent..." (Angel Alonso)
 | 
				
			||||||
 | 
					    - BUGFIX: Make all columns and headers use the same text alignment in the transferlist. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix build system for Unix/Linux. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Case insensitive sort in Peers list. Closes #1066. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Small optimization of WebUI responses when there isn't a data payload. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Hide empty folders after filtering. Closes #74. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Expand folders when filtering files. Closes #1076. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Updated search plugin's URL (Zach Thibeau)
 | 
				
			||||||
 | 
					    - BUGFIX: Strip some png to fix incorrect sRGB profiles. (Angel Alonso)
 | 
				
			||||||
 | 
					    - BUGFIX: Fixed font issues on OSX Mavericks (Zach Thibeau)
 | 
				
			||||||
 | 
					    - BUGFIX: Improve text in the About dialog (Artem S. Tashkinov)
 | 
				
			||||||
 | 
					    - BUGFIX: Always show a peer IP address as a tool tip (Artem S. Tashkinov)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix inhibit system functionality. Closes #766. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: WebUI: Don't gzip too small payloads. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Correctly detect if the browser supports gzip compression. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix WebUI link to 'Anonymous mode' explanation. Closes #1093. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Correctly update tracker tier number in the trackers tab. Closes #1075. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Speed improvements.(sledgehammer999)
 | 
				
			||||||
 | 
					    - OTHER: Updated translations.
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					* Tue Nov 05 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.2
 | 
				
			||||||
 | 
					    - BUGFIX: Fix WebUI gzip compression. Closes #1037. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix compilation with qt < 4.8.0. Closes #1043. (sledgehammer999)
 | 
				
			||||||
 | 
					    - OTHER: Updated translations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Mon Oct 28 2013 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.1
 | 
				
			||||||
 | 
					    - FEATURE: Show external IP in the log. Closes #968. (sledgehammer999)
 | 
				
			||||||
 | 
					    - FEATURE: Enable gzip compression in the webui. It should be faster now. (sledgehammer999)
 | 
				
			||||||
 | 
					    - FEATURE: Torrents show more states(queued for checking, downloading metadata, allocating, checking resume). (sledgehammer999)
 | 
				
			||||||
 | 
					    - FEATURE: Reenable "force reannounce" to all trackers. (sledgehammer999)
 | 
				
			||||||
 | 
					    - FEATURE: Allow to clear the UI lock password. Closes #973. (sledgehammer999)
 | 
				
			||||||
 | 
					    - FEATURE: New translations: English(Australia) and English(United Kingdom)
 | 
				
			||||||
 | 
					    - BUGFIX: Expose all available translation in the WebUI. Closes #976. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Copy IP copied wrong data. Closes #970 (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: "Preview file..." didn't work on single file torrents. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix and improve the scheduler (Gelmir and sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: RSS fixes. Closes #960, #998 (Gelmir)
 | 
				
			||||||
 | 
					    - BUGFIX: Fix 'append label to save path' with magnet links. (sledgehammer999)
 | 
				
			||||||
 | 
					    - BUGFIX: Can download up to 10MB .torrent file when a link is provided. Closes #879 (sledgehammer999)
 | 
				
			||||||
 | 
					    - OTHER: Updated translations.
 | 
				
			||||||
 | 
					    - LINUX: Fix missing conf.pri error (leigh123linux)
 | 
				
			||||||
 | 
					    - WINDOWS: Don't remove file associations if they aren't our own. (sledgehammer999)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Sat Oct 12 2013 - Christophe Dumez <chris@qbittorrent.org> and sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.0
 | 
					* Sat Oct 12 2013 - Christophe Dumez <chris@qbittorrent.org> and sledgehammer999 <sledgehammer999@qbittorrent.org> - v3.1.0
 | 
				
			||||||
    - FEATURE: Add command line option to daemonize qbittorrent-nox (ngaro)
 | 
					    - FEATURE: Add command line option to daemonize qbittorrent-nox (ngaro)
 | 
				
			||||||
    - FEATURE: Add "Shutdown qBittorrent" button to Web UI (ngaro)
 | 
					    - FEATURE: Add "Shutdown qBittorrent" button to Web UI (ngaro)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -511,7 +511,7 @@ public:
 | 
				
			|||||||
    QStringList libDirs;
 | 
					    QStringList libDirs;
 | 
				
			||||||
    if (!s.isEmpty())
 | 
					    if (!s.isEmpty())
 | 
				
			||||||
      libDirs << s;
 | 
					      libDirs << s;
 | 
				
			||||||
    libDirs << "/usr/lib/" << "/usr/lib64/" << "/usr/local/lib/" << "/usr/local/lib64/";
 | 
					    libDirs << "/usr/lib/" << "/usr/lib/i386-linux-gnu/" << "/usr/lib64/" << "/usr/lib/x86_64-linux-gnu/" << "/usr/local/lib/" << "/usr/lib/local/i386-linux-gnu/" << "/usr/local/lib64/" << "/usr/local/lib/x86_64-linux-gnu/";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    foreach(const QString& lib, required_libs) {
 | 
					    foreach(const QString& lib, required_libs) {
 | 
				
			||||||
      bool found = false;
 | 
					      bool found = false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,7 +75,7 @@ public:
 | 
				
			|||||||
    QStringList libDirs;
 | 
					    QStringList libDirs;
 | 
				
			||||||
    if (!s.isEmpty())
 | 
					    if (!s.isEmpty())
 | 
				
			||||||
      libDirs << s;
 | 
					      libDirs << s;
 | 
				
			||||||
    libDirs << "/usr/lib/" << "/usr/lib64/" << "/usr/local/lib/" << "/usr/local/lib64/";
 | 
					    libDirs << "/usr/lib/" << "/usr/lib/i386-linux-gnu/" << "/usr/lib64/" << "/usr/lib/x86_64-linux-gnu/" << "/usr/local/lib/" << "/usr/lib/local/i386-linux-gnu/" << "/usr/local/lib64/" << "/usr/local/lib/x86_64-linux-gnu/";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    foreach(const QString& lib, required_libs) {
 | 
					    foreach(const QString& lib, required_libs) {
 | 
				
			||||||
      bool found = false;
 | 
					      bool found = false;
 | 
				
			||||||
 
 | 
				
			|||||||
| 
		 Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 4.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/oxygen/view-statistics.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.3 KiB  | 
@@ -8,9 +8,14 @@ MimeType=application/x-bittorrent;x-scheme-handler/magnet;
 | 
				
			|||||||
Name=qBittorrent
 | 
					Name=qBittorrent
 | 
				
			||||||
Terminal=false
 | 
					Terminal=false
 | 
				
			||||||
Type=Application
 | 
					Type=Application
 | 
				
			||||||
 | 
					StartupNotify=false
 | 
				
			||||||
 | 
					StartupWMClass=qbittorrent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Translations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Translations
 | 
					# Translations
 | 
				
			||||||
GenericName[ar]=العميل BitTorrent
 | 
					GenericName[ar]=العميل BitTorrent
 | 
				
			||||||
Comment[be]=Сцягванне і раздача файлаў праз пратакол BitTorrent
 | 
					Comment[be]=Сцягванне і раздача файлаў праз пратакол BitTorrent
 | 
				
			||||||
@@ -18,12 +23,19 @@ GenericName[be]=BitTorrent-кліент
 | 
				
			|||||||
Name[be]=qBittorrent
 | 
					Name[be]=qBittorrent
 | 
				
			||||||
Icon[be]=qbittorrent
 | 
					Icon[be]=qbittorrent
 | 
				
			||||||
GenericName[bg]=Торент клиент
 | 
					GenericName[bg]=Торент клиент
 | 
				
			||||||
 | 
					Comment[cs]=Stahování a sdílení souborů přes síť BitTorrent
 | 
				
			||||||
GenericName[cs]=BitTorrent klient
 | 
					GenericName[cs]=BitTorrent klient
 | 
				
			||||||
 | 
					Name[cs]=qBittorrent
 | 
				
			||||||
 | 
					Icon[cs]=qbittorrent
 | 
				
			||||||
GenericName[de]=BitTorren Client
 | 
					GenericName[de]=BitTorren Client
 | 
				
			||||||
Comment[el]=Λήψη και διαμοιρασμός αρχείων μέσω BitTorrent
 | 
					Comment[el]=Λήψη και διαμοιρασμός αρχείων μέσω BitTorrent
 | 
				
			||||||
GenericName[el]=BitTorrent πελάτης
 | 
					GenericName[el]=BitTorrent πελάτης
 | 
				
			||||||
Name[el]=qBittorrent
 | 
					Name[el]=qBittorrent
 | 
				
			||||||
Icon[el]=qbittorrent
 | 
					Icon[el]=qbittorrent
 | 
				
			||||||
 | 
					Comment[en_GB]=Download and share files over BitTorrent
 | 
				
			||||||
 | 
					GenericName[en_GB]=BitTorrent client
 | 
				
			||||||
 | 
					Name[en_GB]=qBittorrent
 | 
				
			||||||
 | 
					Icon[en_GB]=qbittorrent
 | 
				
			||||||
Comment[es]=Descarga y comparte archivos por BitTorrent
 | 
					Comment[es]=Descarga y comparte archivos por BitTorrent
 | 
				
			||||||
GenericName[es]=Cliente BitTorrent
 | 
					GenericName[es]=Cliente BitTorrent
 | 
				
			||||||
Name[es]=qBittorrent
 | 
					Name[es]=qBittorrent
 | 
				
			||||||
@@ -32,7 +44,10 @@ Comment[eu]=Jeitsi eta elkarbanatu agiriak BitTorrent-en
 | 
				
			|||||||
GenericName[eu]=BitTorrent bezeroa
 | 
					GenericName[eu]=BitTorrent bezeroa
 | 
				
			||||||
Name[eu]=qBittorrent
 | 
					Name[eu]=qBittorrent
 | 
				
			||||||
Icon[eu]=qbittorrent
 | 
					Icon[eu]=qbittorrent
 | 
				
			||||||
 | 
					Comment[fi]=Lataa ja jaa tiedostoja BitTorrentia käyttäen
 | 
				
			||||||
GenericName[fi]=BitTorrent-ohjelma
 | 
					GenericName[fi]=BitTorrent-ohjelma
 | 
				
			||||||
 | 
					Name[fi]=qBittorrent
 | 
				
			||||||
 | 
					Icon[fi]=qbittorrent
 | 
				
			||||||
Comment[fr]=Télécharger et partager des fichiers avec BitTorrent
 | 
					Comment[fr]=Télécharger et partager des fichiers avec BitTorrent
 | 
				
			||||||
GenericName[fr]=Client BitTorrent
 | 
					GenericName[fr]=Client BitTorrent
 | 
				
			||||||
Comment[gl]=Descargue e comparta ficheiros co protocolo BitTorrent
 | 
					Comment[gl]=Descargue e comparta ficheiros co protocolo BitTorrent
 | 
				
			||||||
@@ -73,16 +88,25 @@ Comment[pt_BR]=Baixe e compartilhe arquivos através do qBittorrent
 | 
				
			|||||||
GenericName[pt_BR]=Cliente BitTorrent
 | 
					GenericName[pt_BR]=Cliente BitTorrent
 | 
				
			||||||
Name[pt_BR]=qBittorrent
 | 
					Name[pt_BR]=qBittorrent
 | 
				
			||||||
Icon[pt_BR]=qbittorrent
 | 
					Icon[pt_BR]=qbittorrent
 | 
				
			||||||
 | 
					Comment[ro]=Descărcați  și partajați fișiere prin BitTorrent
 | 
				
			||||||
GenericName[ro]=Client BitTorrent
 | 
					GenericName[ro]=Client BitTorrent
 | 
				
			||||||
 | 
					Name[ro]=qBittorrent
 | 
				
			||||||
 | 
					Icon[ro]=qbittorrent
 | 
				
			||||||
Comment[ru]=Скачивайте и делитесь файлами с помощью BitTorrent
 | 
					Comment[ru]=Скачивайте и делитесь файлами с помощью BitTorrent
 | 
				
			||||||
GenericName[ru]=клиент BitTorrent
 | 
					GenericName[ru]=клиент BitTorrent
 | 
				
			||||||
Name[ru]=qBittorrent
 | 
					Name[ru]=qBittorrent
 | 
				
			||||||
Icon[ru]=qbittorrent
 | 
					Icon[ru]=qbittorrent
 | 
				
			||||||
GenericName[sk]=Klient siete BitTorrent
 | 
					GenericName[sk]=Klient siete BitTorrent
 | 
				
			||||||
GenericName[sr]=BitTorrent-клијент
 | 
					GenericName[sr]=BitTorrent-клијент
 | 
				
			||||||
 | 
					Comment[sv]=Hämta och dela filer över BitTorrent
 | 
				
			||||||
GenericName[sv]=BitTorrent-klient
 | 
					GenericName[sv]=BitTorrent-klient
 | 
				
			||||||
 | 
					Name[sv]=qBittorrent
 | 
				
			||||||
 | 
					Icon[sv]=qbittorrent
 | 
				
			||||||
GenericName[tr]=BitTorrent istemcisi
 | 
					GenericName[tr]=BitTorrent istemcisi
 | 
				
			||||||
 | 
					Comment[uk]=Завантажувати і обмінюватися файлами через BitTorrent
 | 
				
			||||||
GenericName[uk]=BitTorrent-клієнт
 | 
					GenericName[uk]=BitTorrent-клієнт
 | 
				
			||||||
 | 
					Name[uk]=qBittorrent
 | 
				
			||||||
 | 
					Icon[uk]=qbittorrent
 | 
				
			||||||
Comment[vi]=Tải về và chia sẻ các tập tin thông qua BitTorrent
 | 
					Comment[vi]=Tải về và chia sẻ các tập tin thông qua BitTorrent
 | 
				
			||||||
GenericName[vi]=Máy trạm dạng BitTorrent
 | 
					GenericName[vi]=Máy trạm dạng BitTorrent
 | 
				
			||||||
Name[vi]=qBittorrent
 | 
					Name[vi]=qBittorrent
 | 
				
			||||||
@@ -91,3 +115,7 @@ Comment[zh_TW]=經由 BitTorrent 下載並分享檔案
 | 
				
			|||||||
GenericName[zh_TW]=BitTorrent 客戶端
 | 
					GenericName[zh_TW]=BitTorrent 客戶端
 | 
				
			||||||
Name[zh_TW]=qBittorrent
 | 
					Name[zh_TW]=qBittorrent
 | 
				
			||||||
Icon[zh_TW]=qbittorrent
 | 
					Icon[zh_TW]=qbittorrent
 | 
				
			||||||
 | 
					Comment[en_AU]=Download and share files over BitTorrent
 | 
				
			||||||
 | 
					GenericName[en_AU]=BitTorrent client
 | 
				
			||||||
 | 
					Name[en_AU]=qBittorrent
 | 
				
			||||||
 | 
					Icon[en_AU]=qbittorrent
 | 
				
			||||||
 
 | 
				
			|||||||
| 
		 Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 593 B  | 
| 
		 Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 590 B  | 
| 
		 Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 426 B  | 
| 
		 Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 522 B  | 
| 
		 Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 443 B  | 
| 
		 Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 495 B  | 
| 
		 Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 359 B  | 
| 
		 Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 538 B  | 
| 
		 Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 591 B  | 
| 
		 Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 583 B  | 
@@ -50,7 +50,7 @@ class about : public QDialog, private Ui::AboutDlg{
 | 
				
			|||||||
      setAttribute(Qt::WA_DeleteOnClose);
 | 
					      setAttribute(Qt::WA_DeleteOnClose);
 | 
				
			||||||
      // About
 | 
					      // About
 | 
				
			||||||
      QString aboutText =
 | 
					      QString aboutText =
 | 
				
			||||||
          QString::fromUtf8("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\"><html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">p, li { white-space: pre-wrap; }</style></head><body style=\" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;\"><p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">") +
 | 
					          QString::fromUtf8("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\"><html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">p, li { white-space: pre-wrap; }</style></head><body style=\" font-size:11pt; font-weight:400; font-style:normal;\"><p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">") +
 | 
				
			||||||
          tr("An advanced BitTorrent client programmed in C++, based on Qt4 toolkit and libtorrent-rasterbar.") +
 | 
					          tr("An advanced BitTorrent client programmed in C++, based on Qt4 toolkit and libtorrent-rasterbar.") +
 | 
				
			||||||
          QString::fromUtf8(" <br /><br />") +
 | 
					          QString::fromUtf8(" <br /><br />") +
 | 
				
			||||||
          trUtf8("Copyright ©2006-2013 The qBittorrent project") +
 | 
					          trUtf8("Copyright ©2006-2013 The qBittorrent project") +
 | 
				
			||||||
@@ -80,7 +80,7 @@ class about : public QDialog, private Ui::AboutDlg{
 | 
				
			|||||||
      te_thanks->setHtml(thanks_txt);
 | 
					      te_thanks->setHtml(thanks_txt);
 | 
				
			||||||
      // Translation
 | 
					      // Translation
 | 
				
			||||||
      QString trans_txt = "<p>"+tr("I would like to thank the following people who volunteered to translate qBittorrent:")+"</p>";
 | 
					      QString trans_txt = "<p>"+tr("I would like to thank the following people who volunteered to translate qBittorrent:")+"</p>";
 | 
				
			||||||
      trans_txt += QString::fromUtf8("<ul><li><u>Arabic:</u> SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)</li>\
 | 
					      trans_txt += QString::fromUtf8("<ul><li><u>Arabic:</u> SDERAWI (abz8868@msn.com), sn51234 (nesseyan@gmail.com) and  Ibrahim Saed ibraheem_alex(Transifex)</li>\
 | 
				
			||||||
          <li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li>\
 | 
					          <li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li>\
 | 
				
			||||||
          <li><u>Basque:</u> Xabier Aramendi (azpidatziak@gmail.com)</li>\
 | 
					          <li><u>Basque:</u> Xabier Aramendi (azpidatziak@gmail.com)</li>\
 | 
				
			||||||
          <li><u>Belarusian:</u> Mihas Varantsou (meequz@gmail.com)</li>\
 | 
					          <li><u>Belarusian:</u> Mihas Varantsou (meequz@gmail.com)</li>\
 | 
				
			||||||
@@ -89,10 +89,12 @@ class about : public QDialog, private Ui::AboutDlg{
 | 
				
			|||||||
          <li><u>Chinese (Simplified):</u> Guo Yue (yue.guo0418@gmail.com)</li>\
 | 
					          <li><u>Chinese (Simplified):</u> Guo Yue (yue.guo0418@gmail.com)</li>\
 | 
				
			||||||
          <li><u>Chinese (Traditional):</u> Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex)</li>\
 | 
					          <li><u>Chinese (Traditional):</u> Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex)</li>\
 | 
				
			||||||
          <li><u>Croatian:</u> Oliver Mucafir (oliver.untwist@gmail.com)</li>\
 | 
					          <li><u>Croatian:</u> Oliver Mucafir (oliver.untwist@gmail.com)</li>\
 | 
				
			||||||
          <li><u>Czech:</u> Jirka Vilim (web@tets.cz)</li>\
 | 
					          <li><u>Czech:</u> Jirka Vilim (web@tets.cz) and Petr Cernobila abr(Transifex)</li>\
 | 
				
			||||||
          <li><u>Danish:</u> Mathias Nielsen (comoneo@gmail.com)</li>\
 | 
					          <li><u>Danish:</u> Mathias Nielsen (comoneo@gmail.com)</li>\
 | 
				
			||||||
          <li><u>Dutch:</u> Pieter Heyvaert (pieter_heyvaert@hotmail.com)</li>\
 | 
					          <li><u>Dutch:</u> Pieter Heyvaert (pieter_heyvaert@hotmail.com)</li>\
 | 
				
			||||||
          <li><u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net) and Pekka Niemi (pekka.niemi@iki.fi)</li>\
 | 
					          <li><u>English(Australia):</u> Robert Readman readmanr(Transifex)</li>\
 | 
				
			||||||
 | 
					          <li><u>English(United Kingdom):</u> Robert Readman readmanr(Transifex)</li>\
 | 
				
			||||||
 | 
					          <li><u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net), Pekka Niemi (pekka.niemi@iki.fi) and Jiri Grönroos artnay(Transifex)</li>\
 | 
				
			||||||
          <li><u>Galician:</u> Marcos Lans (marcoslansgarza@gmail.com) and antiparvos(Transifex)</li>\
 | 
					          <li><u>Galician:</u> Marcos Lans (marcoslansgarza@gmail.com) and antiparvos(Transifex)</li>\
 | 
				
			||||||
          <li><u>Georgian:</u> Beqa Arabuli (arabulibeqa@yahoo.com)</li>\
 | 
					          <li><u>Georgian:</u> Beqa Arabuli (arabulibeqa@yahoo.com)</li>\
 | 
				
			||||||
          <li><u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\
 | 
					          <li><u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\
 | 
				
			||||||
@@ -107,12 +109,12 @@ class about : public QDialog, private Ui::AboutDlg{
 | 
				
			|||||||
          <li><u>Polish:</u> Mariusz Fik (fisiu@opensuse.org)</li>\
 | 
					          <li><u>Polish:</u> Mariusz Fik (fisiu@opensuse.org)</li>\
 | 
				
			||||||
          <li><u>Portuguese:</u> Sérgio Marques smarquespt(Transifex)</li>\
 | 
					          <li><u>Portuguese:</u> Sérgio Marques smarquespt(Transifex)</li>\
 | 
				
			||||||
          <li><u>Portuguese(Brazil):</u> Nick Marinho (nickmarinho@gmail.com)</li>\
 | 
					          <li><u>Portuguese(Brazil):</u> Nick Marinho (nickmarinho@gmail.com)</li>\
 | 
				
			||||||
          <li><u>Romanian:</u> Obada Denis (obadadenis@users.sourceforge.net)</li>\
 | 
					          <li><u>Romanian:</u> Obada Denis (obadadenis@users.sourceforge.net), Adrian Gabor Adriannho(Transifex) and Mihai Coman z0id(Transifex)</li>\
 | 
				
			||||||
          <li><u>Russian:</u> Nick Khazov (m2k3d0n at users.sourceforge.net), Alexey Morsov (samurai@ricom.ru), Nick Tiskov Dayman(daymansmail (at) gmail (dot) com), Dmitry DmitryKX(Transifex) and kraleksandr kraleksandr(Transifex)</li>\
 | 
					          <li><u>Russian:</u> Nick Khazov (m2k3d0n at users.sourceforge.net), Alexey Morsov (samurai@ricom.ru), Nick Tiskov Dayman(daymansmail (at) gmail (dot) com), Dmitry DmitryKX(Transifex) and kraleksandr kraleksandr(Transifex)</li>\
 | 
				
			||||||
          <li><u>Serbian:</u> Anaximandar Milet (anaximandar@operamail.com)</li>\
 | 
					          <li><u>Serbian:</u> Anaximandar Milet (anaximandar@operamail.com)</li>\
 | 
				
			||||||
          <li><u>Slovak:</u>  helix84</li>\
 | 
					          <li><u>Slovak:</u>  helix84</li>\
 | 
				
			||||||
          <li><u>Spanish:</u> Alfredo Monclús (alfrix), Francisco Luque Contreras (frannoe@ya.com) and José Antonio Moray moray33(Transifex)</li>\
 | 
					          <li><u>Spanish:</u> Alfredo Monclús (alfrix), Francisco Luque Contreras (frannoe@ya.com) and José Antonio Moray moray33(Transifex)</li>\
 | 
				
			||||||
          <li><u>Swedish:</u> Daniel Nylander (po@danielnylander.se)</li>\
 | 
					          <li><u>Swedish:</u> Daniel Nylander (po@danielnylander.se) and Emil Hammarberg Ooglogput(Transifex)</li>\
 | 
				
			||||||
          <li><u>Turkish:</u> Hasan YILMAZ (iletisim@hedefturkce.com) and Erdem Bingöl (erdem84@gmail.com)</li>\
 | 
					          <li><u>Turkish:</u> Hasan YILMAZ (iletisim@hedefturkce.com) and Erdem Bingöl (erdem84@gmail.com)</li>\
 | 
				
			||||||
          <li><u>Ukrainian:</u> Oleh Prypin (blaxpirit@gmail.com)</li>\
 | 
					          <li><u>Ukrainian:</u> Oleh Prypin (blaxpirit@gmail.com)</li>\
 | 
				
			||||||
          <li><u>Vietnamese:</u> Anh Phan ppanhh(Transifex)</li></ul>");
 | 
					          <li><u>Vietnamese:</u> Anh Phan ppanhh(Transifex)</li></ul>");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,12 +40,12 @@
 | 
				
			|||||||
#include "iconprovider.h"
 | 
					#include "iconprovider.h"
 | 
				
			||||||
#include "fs_utils.h"
 | 
					#include "fs_utils.h"
 | 
				
			||||||
#include "autoexpandabledialog.h"
 | 
					#include "autoexpandabledialog.h"
 | 
				
			||||||
 | 
					#include "messageboxraised.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <QString>
 | 
					#include <QString>
 | 
				
			||||||
#include <QFile>
 | 
					#include <QFile>
 | 
				
			||||||
#include <QUrl>
 | 
					#include <QUrl>
 | 
				
			||||||
#include <QMenu>
 | 
					#include <QMenu>
 | 
				
			||||||
#include <QMessageBox>
 | 
					 | 
				
			||||||
#include <QTimer>
 | 
					#include <QTimer>
 | 
				
			||||||
#include <QFileDialog>
 | 
					#include <QFileDialog>
 | 
				
			||||||
#include <libtorrent/version.hpp>
 | 
					#include <libtorrent/version.hpp>
 | 
				
			||||||
@@ -81,6 +81,8 @@ AddNewTorrentDialog::AddNewTorrentDialog(QWidget *parent) :
 | 
				
			|||||||
  foreach (const QString& label, customLabels) {
 | 
					  foreach (const QString& label, customLabels) {
 | 
				
			||||||
    ui->label_combo->addItem(label);
 | 
					    ui->label_combo->addItem(label);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  ui->label_combo->model()->sort(0);
 | 
				
			||||||
 | 
					  ui->content_tree->header()->setSortIndicator(0, Qt::AscendingOrder);
 | 
				
			||||||
  loadState();
 | 
					  loadState();
 | 
				
			||||||
  // Signal / slots
 | 
					  // Signal / slots
 | 
				
			||||||
  connect(ui->adv_button, SIGNAL(clicked(bool)), SLOT(showAdvancedSettings(bool)));
 | 
					  connect(ui->adv_button, SIGNAL(clicked(bool)), SLOT(showAdvancedSettings(bool)));
 | 
				
			||||||
@@ -102,9 +104,7 @@ void AddNewTorrentDialog::loadState()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  QIniSettings settings;
 | 
					  QIniSettings settings;
 | 
				
			||||||
  settings.beginGroup(QString::fromUtf8("AddNewTorrentDialog"));
 | 
					  settings.beginGroup(QString::fromUtf8("AddNewTorrentDialog"));
 | 
				
			||||||
  QByteArray state = settings.value("treeHeaderState").toByteArray();
 | 
					  m_headerState = settings.value("treeHeaderState").toByteArray();
 | 
				
			||||||
  if (!state.isEmpty())
 | 
					 | 
				
			||||||
    ui->content_tree->header()->restoreState(state);
 | 
					 | 
				
			||||||
  int width = settings.value("width", -1).toInt();
 | 
					  int width = settings.value("width", -1).toInt();
 | 
				
			||||||
  if (width >= 0) {
 | 
					  if (width >= 0) {
 | 
				
			||||||
    QRect geo = geometry();
 | 
					    QRect geo = geometry();
 | 
				
			||||||
@@ -183,7 +183,7 @@ bool AddNewTorrentDialog::loadTorrent(const QString& torrent_path, const QString
 | 
				
			|||||||
    m_filePath = torrent_path;
 | 
					    m_filePath = torrent_path;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!QFile::exists(m_filePath)) {
 | 
					  if (!QFile::exists(m_filePath)) {
 | 
				
			||||||
    QMessageBox::critical(0, tr("I/O Error"), tr("The torrent file does not exist."));
 | 
					    MessageBoxRaised::critical(0, tr("I/O Error"), tr("The torrent file does not exist."));
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -193,73 +193,18 @@ bool AddNewTorrentDialog::loadTorrent(const QString& torrent_path, const QString
 | 
				
			|||||||
    m_torrentInfo = new torrent_info(m_filePath.toUtf8().data());
 | 
					    m_torrentInfo = new torrent_info(m_filePath.toUtf8().data());
 | 
				
			||||||
    m_hash = misc::toQString(m_torrentInfo->info_hash());
 | 
					    m_hash = misc::toQString(m_torrentInfo->info_hash());
 | 
				
			||||||
  } catch(const std::exception& e) {
 | 
					  } catch(const std::exception& e) {
 | 
				
			||||||
    QMessageBox::critical(0, tr("Invalid torrent"), tr("Failed to load the torrent: %1").arg(e.what()));
 | 
					    MessageBoxRaised::critical(0, tr("Invalid torrent"), tr("Failed to load the torrent: %1").arg(e.what()));
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Prevent showing the dialog if download is already present
 | 
					  // Prevent showing the dialog if download is already present
 | 
				
			||||||
  if (QBtSession::instance()->getTorrentHandle(m_hash).is_valid()) {
 | 
					  if (QBtSession::instance()->getTorrentHandle(m_hash).is_valid()) {
 | 
				
			||||||
    QMessageBox::information(0, tr("Already in download list"), tr("Torrent is already in download list. Merging trackers."), QMessageBox::Ok);
 | 
					    MessageBoxRaised::information(0, tr("Already in download list"), tr("Torrent is already in download list. Merging trackers."), QMessageBox::Ok);
 | 
				
			||||||
    QBtSession::instance()->addTorrent(m_filePath, false, m_url);;
 | 
					    QBtSession::instance()->addTorrent(m_filePath, false, m_url);;
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Set dialog title
 | 
					  setupTreeview();
 | 
				
			||||||
  setWindowTitle(misc::toQStringU(m_torrentInfo->name()));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // Set torrent information
 | 
					 | 
				
			||||||
  QString comment = misc::toQString(m_torrentInfo->comment());
 | 
					 | 
				
			||||||
  ui->comment_lbl->setText(comment.replace('\n', ' '));
 | 
					 | 
				
			||||||
  ui->date_lbl->setText(m_torrentInfo->creation_date() ? misc::toQString(*m_torrentInfo->creation_date()) : tr("Not available"));
 | 
					 | 
				
			||||||
  updateDiskSpaceLabel();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if LIBTORRENT_VERSION_NUM >= 001600
 | 
					 | 
				
			||||||
  file_storage fs = m_torrentInfo->files();
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // Populate m_filesList
 | 
					 | 
				
			||||||
  for (int i = 0; i < m_torrentInfo->num_files(); ++i) {
 | 
					 | 
				
			||||||
#if LIBTORRENT_VERSION_NUM >= 001600
 | 
					 | 
				
			||||||
    m_filesPath << misc::toQStringU(fs.file_path(m_torrentInfo->file_at(i)));
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    m_filesPath << misc::toQStringU(m_torrentInfo->file_at(i).path.string());
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // Prepare content tree
 | 
					 | 
				
			||||||
  if (m_torrentInfo->num_files() > 1) {
 | 
					 | 
				
			||||||
    m_contentModel = new TorrentContentFilterModel(this);
 | 
					 | 
				
			||||||
    connect(m_contentModel->model(), SIGNAL(filteredFilesChanged()), SLOT(updateDiskSpaceLabel()));
 | 
					 | 
				
			||||||
    ui->content_tree->setModel(m_contentModel);
 | 
					 | 
				
			||||||
    ui->content_tree->hideColumn(PROGRESS);
 | 
					 | 
				
			||||||
    m_contentDelegate = new PropListDelegate();
 | 
					 | 
				
			||||||
    ui->content_tree->setItemDelegate(m_contentDelegate);
 | 
					 | 
				
			||||||
    connect(ui->content_tree, SIGNAL(clicked(const QModelIndex&)), ui->content_tree, SLOT(edit(const QModelIndex&)));
 | 
					 | 
				
			||||||
    connect(ui->content_tree, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayContentTreeMenu(const QPoint&)));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // List files in torrent
 | 
					 | 
				
			||||||
    m_contentModel->model()->setupModelData(*m_torrentInfo);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Expand root folder
 | 
					 | 
				
			||||||
    ui->content_tree->setExpanded(m_contentModel->index(0, 0), true);
 | 
					 | 
				
			||||||
    ui->content_tree->header()->setResizeMode(0, QHeaderView::Stretch);
 | 
					 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
    // Update save paths (append file name to them)
 | 
					 | 
				
			||||||
#if LIBTORRENT_VERSION_NUM >= 001600
 | 
					 | 
				
			||||||
    QString single_file_relpath = misc::toQStringU(fs.file_path(m_torrentInfo->file_at(0)));
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    QString single_file_relpath = misc::toQStringU(m_torrentInfo->file_at(0).path.string());
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    for (int i=0; i<ui->save_path_combo->count()-1; ++i) {
 | 
					 | 
				
			||||||
      ui->save_path_combo->setItemText(i, fsutils::toDisplayPath(QDir(ui->save_path_combo->itemText(i)).absoluteFilePath(single_file_relpath)));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  QIniSettings settings;
 | 
					 | 
				
			||||||
  showAdvancedSettings(settings.value("AddNewTorrentDialog/expanded").toBool());
 | 
					 | 
				
			||||||
  // Set dialog position
 | 
					 | 
				
			||||||
  setdialogPosition();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -270,13 +215,13 @@ bool AddNewTorrentDialog::loadMagnet(const QString &magnet_uri)
 | 
				
			|||||||
  m_url = magnet_uri;
 | 
					  m_url = magnet_uri;
 | 
				
			||||||
  m_hash = misc::magnetUriToHash(m_url);
 | 
					  m_hash = misc::magnetUriToHash(m_url);
 | 
				
			||||||
  if (m_hash.isEmpty()) {
 | 
					  if (m_hash.isEmpty()) {
 | 
				
			||||||
    QMessageBox::critical(0, tr("Invalid magnet link"), tr("This magnet link was not recognized"));
 | 
					    MessageBoxRaised::critical(0, tr("Invalid magnet link"), tr("This magnet link was not recognized"));
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Prevent showing the dialog if download is already present
 | 
					  // Prevent showing the dialog if download is already present
 | 
				
			||||||
  if (QBtSession::instance()->getTorrentHandle(m_hash).is_valid()) {
 | 
					  if (QBtSession::instance()->getTorrentHandle(m_hash).is_valid()) {
 | 
				
			||||||
    QMessageBox::information(0, tr("Already in download list"), tr("Magnet link is already in download list. Merging trackers."), QMessageBox::Ok);
 | 
					    MessageBoxRaised::information(0, tr("Already in download list"), tr("Magnet link is already in download list. Merging trackers."), QMessageBox::Ok);
 | 
				
			||||||
    QBtSession::instance()->addMagnetUri(m_url, false);
 | 
					    QBtSession::instance()->addMagnetUri(m_url, false);
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -441,7 +386,7 @@ void AddNewTorrentDialog::renameSelectedFile()
 | 
				
			|||||||
                                                      index.data().toString(), &ok).trimmed();
 | 
					                                                      index.data().toString(), &ok).trimmed();
 | 
				
			||||||
  if (ok && !new_name_last.isEmpty()) {
 | 
					  if (ok && !new_name_last.isEmpty()) {
 | 
				
			||||||
    if (!fsutils::isValidFileSystemName(new_name_last)) {
 | 
					    if (!fsutils::isValidFileSystemName(new_name_last)) {
 | 
				
			||||||
      QMessageBox::warning(this, tr("The file could not be renamed"),
 | 
					      MessageBoxRaised::warning(this, tr("The file could not be renamed"),
 | 
				
			||||||
                           tr("This file name contains forbidden characters, please choose a different one."),
 | 
					                           tr("This file name contains forbidden characters, please choose a different one."),
 | 
				
			||||||
                           QMessageBox::Ok);
 | 
					                           QMessageBox::Ok);
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -467,7 +412,7 @@ void AddNewTorrentDialog::renameSelectedFile()
 | 
				
			|||||||
        if (i == file_index) continue;
 | 
					        if (i == file_index) continue;
 | 
				
			||||||
        if (fsutils::sameFileNames(m_filesPath.at(i), new_name)) {
 | 
					        if (fsutils::sameFileNames(m_filesPath.at(i), new_name)) {
 | 
				
			||||||
          // Display error message
 | 
					          // Display error message
 | 
				
			||||||
          QMessageBox::warning(this, tr("The file could not be renamed"),
 | 
					          MessageBoxRaised::warning(this, tr("The file could not be renamed"),
 | 
				
			||||||
                               tr("This name is already in use in this folder. Please use a different name."),
 | 
					                               tr("This name is already in use in this folder. Please use a different name."),
 | 
				
			||||||
                               QMessageBox::Ok);
 | 
					                               QMessageBox::Ok);
 | 
				
			||||||
          return;
 | 
					          return;
 | 
				
			||||||
@@ -502,7 +447,7 @@ void AddNewTorrentDialog::renameSelectedFile()
 | 
				
			|||||||
#else
 | 
					#else
 | 
				
			||||||
        if (current_name.startsWith(new_path, Qt::CaseInsensitive)) {
 | 
					        if (current_name.startsWith(new_path, Qt::CaseInsensitive)) {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
          QMessageBox::warning(this, tr("The folder could not be renamed"),
 | 
					          MessageBoxRaised::warning(this, tr("The folder could not be renamed"),
 | 
				
			||||||
                               tr("This name is already in use in this folder. Please use a different name."),
 | 
					                               tr("This name is already in use in this folder. Please use a different name."),
 | 
				
			||||||
                               QMessageBox::Ok);
 | 
					                               QMessageBox::Ok);
 | 
				
			||||||
          return;
 | 
					          return;
 | 
				
			||||||
@@ -665,6 +610,23 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) {
 | 
				
			|||||||
    setMetadataProgressIndicator(true, tr("Parsing metadata..."));
 | 
					    setMetadataProgressIndicator(true, tr("Parsing metadata..."));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Update UI
 | 
					    // Update UI
 | 
				
			||||||
 | 
					    setupTreeview();
 | 
				
			||||||
 | 
					    setMetadataProgressIndicator(false, tr("Metadata retrieval complete"));
 | 
				
			||||||
 | 
					  } catch (invalid_handle&) {
 | 
				
			||||||
 | 
					    MessageBoxRaised::critical(0, tr("I/O Error"), ("Unknown error."));
 | 
				
			||||||
 | 
					    setMetadataProgressIndicator(false, tr("Unknown error"));
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void AddNewTorrentDialog::setMetadataProgressIndicator(bool visibleIndicator, const QString &labelText) {
 | 
				
			||||||
 | 
					  // Always show info label when waiting for metadata
 | 
				
			||||||
 | 
					  ui->lblMetaLoading->setVisible(true);
 | 
				
			||||||
 | 
					  ui->lblMetaLoading->setText(labelText);
 | 
				
			||||||
 | 
					  ui->progMetaLoading->setVisible(visibleIndicator);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void AddNewTorrentDialog::setupTreeview() {
 | 
				
			||||||
  // Set dialog title
 | 
					  // Set dialog title
 | 
				
			||||||
  setWindowTitle(misc::toQStringU(m_torrentInfo->name()));
 | 
					  setWindowTitle(misc::toQStringU(m_torrentInfo->name()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -674,13 +636,11 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) {
 | 
				
			|||||||
  ui->date_lbl->setText(m_torrentInfo->creation_date() ? misc::toQString(*m_torrentInfo->creation_date()) : tr("Not available"));
 | 
					  ui->date_lbl->setText(m_torrentInfo->creation_date() ? misc::toQString(*m_torrentInfo->creation_date()) : tr("Not available"));
 | 
				
			||||||
  updateDiskSpaceLabel();
 | 
					  updateDiskSpaceLabel();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if LIBTORRENT_VERSION_NUM >= 001600
 | 
					 | 
				
			||||||
  file_storage fs = m_torrentInfo->files();
 | 
					  file_storage fs = m_torrentInfo->files();
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Populate m_filesList
 | 
					  // Populate m_filesList
 | 
				
			||||||
    for (int i = 0; i < m_torrentInfo->num_files(); ++i) {
 | 
					    for (int i = 0; i < m_torrentInfo->num_files(); ++i) {
 | 
				
			||||||
#if LIBTORRENT_VERSION_NUM >= 001600
 | 
					#if LIBTORRENT_VERSION_NUM >= 1600
 | 
				
			||||||
      m_filesPath << misc::toQStringU(fs.file_path(m_torrentInfo->file_at(i)));
 | 
					      m_filesPath << misc::toQStringU(fs.file_path(m_torrentInfo->file_at(i)));
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
      m_filesPath << misc::toQStringU(m_torrentInfo->file_at(i).path.string());
 | 
					      m_filesPath << misc::toQStringU(m_torrentInfo->file_at(i).path.string());
 | 
				
			||||||
@@ -688,7 +648,7 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Prepare content tree
 | 
					  // Prepare content tree
 | 
				
			||||||
    if (m_torrentInfo->num_files() > 1) {
 | 
					  if (fs.num_files() > 1) {
 | 
				
			||||||
    m_contentModel = new TorrentContentFilterModel(this);
 | 
					    m_contentModel = new TorrentContentFilterModel(this);
 | 
				
			||||||
    connect(m_contentModel->model(), SIGNAL(filteredFilesChanged()), SLOT(updateDiskSpaceLabel()));
 | 
					    connect(m_contentModel->model(), SIGNAL(filteredFilesChanged()), SLOT(updateDiskSpaceLabel()));
 | 
				
			||||||
    ui->content_tree->setModel(m_contentModel);
 | 
					    ui->content_tree->setModel(m_contentModel);
 | 
				
			||||||
@@ -700,13 +660,14 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // List files in torrent
 | 
					    // List files in torrent
 | 
				
			||||||
    m_contentModel->model()->setupModelData(*m_torrentInfo);
 | 
					    m_contentModel->model()->setupModelData(*m_torrentInfo);
 | 
				
			||||||
 | 
					    if (!m_headerState.isEmpty())
 | 
				
			||||||
 | 
					      ui->content_tree->header()->restoreState(m_headerState);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Expand root folder
 | 
					    // Expand root folder
 | 
				
			||||||
    ui->content_tree->setExpanded(m_contentModel->index(0, 0), true);
 | 
					    ui->content_tree->setExpanded(m_contentModel->index(0, 0), true);
 | 
				
			||||||
      ui->content_tree->header()->setResizeMode(0, QHeaderView::Stretch);
 | 
					 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    // Update save paths (append file name to them)
 | 
					    // Update save paths (append file name to them)
 | 
				
			||||||
#if LIBTORRENT_VERSION_NUM >= 001600
 | 
					#if LIBTORRENT_VERSION_NUM >= 1600
 | 
				
			||||||
      QString single_file_relpath = misc::toQStringU(fs.file_path(m_torrentInfo->file_at(0)));
 | 
					      QString single_file_relpath = misc::toQStringU(fs.file_path(m_torrentInfo->file_at(0)));
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
      QString single_file_relpath = misc::toQStringU(m_torrentInfo->file_at(0).path.string());
 | 
					      QString single_file_relpath = misc::toQStringU(m_torrentInfo->file_at(0).path.string());
 | 
				
			||||||
@@ -720,17 +681,4 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) {
 | 
				
			|||||||
  showAdvancedSettings(settings.value("AddNewTorrentDialog/expanded").toBool());
 | 
					  showAdvancedSettings(settings.value("AddNewTorrentDialog/expanded").toBool());
 | 
				
			||||||
  // Set dialog position
 | 
					  // Set dialog position
 | 
				
			||||||
  setdialogPosition();
 | 
					  setdialogPosition();
 | 
				
			||||||
    setMetadataProgressIndicator(false, tr("Metadata retrieval complete"));
 | 
					 | 
				
			||||||
  } catch (invalid_handle&) {
 | 
					 | 
				
			||||||
    QMessageBox::critical(0, tr("I/O Error"), ("Unknown error."));
 | 
					 | 
				
			||||||
    setMetadataProgressIndicator(false, tr("Unknown error"));
 | 
					 | 
				
			||||||
    return;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void AddNewTorrentDialog::setMetadataProgressIndicator(bool visibleIndicator, const QString &labelText) {
 | 
					 | 
				
			||||||
  // Always show info label when waiting for metadata
 | 
					 | 
				
			||||||
  ui->lblMetaLoading->setVisible(true);
 | 
					 | 
				
			||||||
  ui->lblMetaLoading->setText(labelText);
 | 
					 | 
				
			||||||
  ui->progMetaLoading->setVisible(visibleIndicator);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,6 +84,7 @@ private:
 | 
				
			|||||||
  void loadState();
 | 
					  void loadState();
 | 
				
			||||||
  void saveState();
 | 
					  void saveState();
 | 
				
			||||||
  void setMetadataProgressIndicator(bool visibleIndicator, const QString &labelText = QString());
 | 
					  void setMetadataProgressIndicator(bool visibleIndicator, const QString &labelText = QString());
 | 
				
			||||||
 | 
					  void setupTreeview();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
  Ui::AddNewTorrentDialog *ui;
 | 
					  Ui::AddNewTorrentDialog *ui;
 | 
				
			||||||
@@ -98,6 +99,7 @@ private:
 | 
				
			|||||||
  QStringList m_filesPath;
 | 
					  QStringList m_filesPath;
 | 
				
			||||||
  bool m_hasRenamedFile;
 | 
					  bool m_hasRenamedFile;
 | 
				
			||||||
  QShortcut *editHotkey;
 | 
					  QShortcut *editHotkey;
 | 
				
			||||||
 | 
					  QByteArray m_headerState;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // ADDNEWTORRENTDIALOG_H
 | 
					#endif // ADDNEWTORRENTDIALOG_H
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -176,9 +176,6 @@
 | 
				
			|||||||
        <property name="sortingEnabled">
 | 
					        <property name="sortingEnabled">
 | 
				
			||||||
         <bool>true</bool>
 | 
					         <bool>true</bool>
 | 
				
			||||||
        </property>
 | 
					        </property>
 | 
				
			||||||
        <attribute name="headerStretchLastSection">
 | 
					 | 
				
			||||||
         <bool>false</bool>
 | 
					 | 
				
			||||||
        </attribute>
 | 
					 | 
				
			||||||
       </widget>
 | 
					       </widget>
 | 
				
			||||||
      </item>
 | 
					      </item>
 | 
				
			||||||
     </layout>
 | 
					     </layout>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,7 @@
 | 
				
			|||||||
        </sizepolicy>
 | 
					        </sizepolicy>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       <property name="text">
 | 
					       <property name="text">
 | 
				
			||||||
        <string>Are you sure you want to delete the selected torrents from the transfer list?</string>
 | 
					        <string notr="true">deletion message goes here</string>
 | 
				
			||||||
       </property>
 | 
					       </property>
 | 
				
			||||||
       <property name="alignment">
 | 
					       <property name="alignment">
 | 
				
			||||||
        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
 | 
					        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,8 +40,12 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg {
 | 
				
			|||||||
  Q_OBJECT
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
  DeletionConfirmationDlg(QWidget *parent=0): QDialog(parent) {
 | 
					  DeletionConfirmationDlg(QWidget *parent, const int &size, const QString &name): QDialog(parent) {
 | 
				
			||||||
    setupUi(this);
 | 
					    setupUi(this);
 | 
				
			||||||
 | 
					    if (size == 1)
 | 
				
			||||||
 | 
					      label->setText(tr("Are you sure you want to delete \"%1\" from the transfer list?", "Are you sure you want to delete \"ubuntu-linux-iso\" from the transfer list?").arg(name));
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      label->setText(tr("Are you sure you want to delete these %1 torrents from the transfer list?", "Are you sure you want to delete these 5 torrents from the transfer list?").arg(QString::number(size)));
 | 
				
			||||||
    // Icons
 | 
					    // Icons
 | 
				
			||||||
    lbl_warn->setPixmap(IconProvider::instance()->getIcon("dialog-warning").pixmap(lbl_warn->height()));
 | 
					    lbl_warn->setPixmap(IconProvider::instance()->getIcon("dialog-warning").pixmap(lbl_warn->height()));
 | 
				
			||||||
    lbl_warn->setFixedWidth(lbl_warn->height());
 | 
					    lbl_warn->setFixedWidth(lbl_warn->height());
 | 
				
			||||||
@@ -57,10 +61,10 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg {
 | 
				
			|||||||
    return checkPermDelete->isChecked();
 | 
					    return checkPermDelete->isChecked();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static bool askForDeletionConfirmation(bool *delete_local_files) {
 | 
					  static bool askForDeletionConfirmation(bool& delete_local_files, const int& size, const QString& name) {
 | 
				
			||||||
    DeletionConfirmationDlg dlg;
 | 
					    DeletionConfirmationDlg dlg(NULL, size, name);
 | 
				
			||||||
    if (dlg.exec() == QDialog::Accepted) {
 | 
					    if (dlg.exec() == QDialog::Accepted) {
 | 
				
			||||||
      *delete_local_files = dlg.shouldDeleteLocalFiles();
 | 
					      delete_local_files = dlg.shouldDeleteLocalFiles();
 | 
				
			||||||
      return true;
 | 
					      return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -134,8 +134,8 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  // Success
 | 
					  // Success
 | 
				
			||||||
  QTemporaryFile *tmpfile = new QTemporaryFile;
 | 
					  QTemporaryFile *tmpfile = new QTemporaryFile;
 | 
				
			||||||
  tmpfile->setAutoRemove(false);
 | 
					 | 
				
			||||||
  if (tmpfile->open()) {
 | 
					  if (tmpfile->open()) {
 | 
				
			||||||
 | 
					    tmpfile->setAutoRemove(false);
 | 
				
			||||||
    QString filePath = tmpfile->fileName();
 | 
					    QString filePath = tmpfile->fileName();
 | 
				
			||||||
    qDebug("Temporary filename is: %s", qPrintable(filePath));
 | 
					    qDebug("Temporary filename is: %s", qPrintable(filePath));
 | 
				
			||||||
    if (reply->isOpen() || reply->open(QIODevice::ReadOnly)) {
 | 
					    if (reply->isOpen() || reply->open(QIODevice::ReadOnly)) {
 | 
				
			||||||
@@ -153,6 +153,7 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) {
 | 
				
			|||||||
      emit downloadFinished(url, filePath);
 | 
					      emit downloadFinished(url, filePath);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      delete tmpfile;
 | 
					      delete tmpfile;
 | 
				
			||||||
 | 
					      fsutils::forceRemove(filePath);
 | 
				
			||||||
      // Error when reading the request
 | 
					      // Error when reading the request
 | 
				
			||||||
      emit downloadFailure(url, tr("I/O Error"));
 | 
					      emit downloadFailure(url, tr("I/O Error"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -202,16 +203,16 @@ void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal)
 | 
				
			|||||||
  if (!reply) return;
 | 
					  if (!reply) return;
 | 
				
			||||||
  if (bytesTotal > 0) {
 | 
					  if (bytesTotal > 0) {
 | 
				
			||||||
    // Total number of bytes is available
 | 
					    // Total number of bytes is available
 | 
				
			||||||
    if (bytesTotal > 1048576) {
 | 
					    if (bytesTotal > 1048576*10) {
 | 
				
			||||||
      // More than 1MB, this is probably not a torrent file, aborting...
 | 
					      // More than 10MB, this is probably not a torrent file, aborting...
 | 
				
			||||||
      reply->abort();
 | 
					      reply->abort();
 | 
				
			||||||
      reply->deleteLater();
 | 
					      reply->deleteLater();
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      disconnect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64)));
 | 
					      disconnect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64)));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    if (bytesReceived  > 1048576) {
 | 
					    if (bytesReceived  > 1048576*10) {
 | 
				
			||||||
      // More than 1MB, this is probably not a torrent file, aborting...
 | 
					      // More than 10MB, this is probably not a torrent file, aborting...
 | 
				
			||||||
      reply->abort();
 | 
					      reply->abort();
 | 
				
			||||||
      reply->deleteLater();
 | 
					      reply->deleteLater();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,6 +41,7 @@ class HeadlessLoader: public QObject {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  HeadlessLoader(const QStringList &torrentCmdLine) {
 | 
					  HeadlessLoader(const QStringList &torrentCmdLine) {
 | 
				
			||||||
 | 
					    connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(shutdownCleanUp()), Qt::DirectConnection);
 | 
				
			||||||
    Preferences pref;
 | 
					    Preferences pref;
 | 
				
			||||||
    // Enable Web UI
 | 
					    // Enable Web UI
 | 
				
			||||||
    pref.setWebUiEnabled(true);
 | 
					    pref.setWebUiEnabled(true);
 | 
				
			||||||
@@ -61,11 +62,12 @@ public:
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ~HeadlessLoader() {
 | 
					public slots:
 | 
				
			||||||
 | 
					  void shutdownCleanUp() {
 | 
				
			||||||
 | 
					    Preferences().sync();
 | 
				
			||||||
    QBtSession::drop();
 | 
					    QBtSession::drop();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public slots:
 | 
					 | 
				
			||||||
  // Call this function to exit qBittorrent headless loader
 | 
					  // Call this function to exit qBittorrent headless loader
 | 
				
			||||||
  // and return to prompt (object will be deleted by main)
 | 
					  // and return to prompt (object will be deleted by main)
 | 
				
			||||||
  void exit() {
 | 
					  void exit() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -314,6 +314,7 @@
 | 
				
			|||||||
  <file>Icons/oxygen/view-filter.png</file>
 | 
					  <file>Icons/oxygen/view-filter.png</file>
 | 
				
			||||||
  <file>Icons/oxygen/view-preview.png</file>
 | 
					  <file>Icons/oxygen/view-preview.png</file>
 | 
				
			||||||
  <file>Icons/oxygen/view-refresh.png</file>
 | 
					  <file>Icons/oxygen/view-refresh.png</file>
 | 
				
			||||||
 | 
					  <file>Icons/oxygen/view-statistics.png</file>
 | 
				
			||||||
  <file>Icons/oxygen/wallet-open.png</file>
 | 
					  <file>Icons/oxygen/wallet-open.png</file>
 | 
				
			||||||
  <file>Icons/oxygen/webui.png</file>
 | 
					  <file>Icons/oxygen/webui.png</file>
 | 
				
			||||||
  <file>Icons/skin/arrow-right.gif</file>
 | 
					  <file>Icons/skin/arrow-right.gif</file>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,8 @@
 | 
				
			|||||||
  <file>lang/qbittorrent_de.qm</file>
 | 
					  <file>lang/qbittorrent_de.qm</file>
 | 
				
			||||||
  <file>lang/qbittorrent_el.qm</file>
 | 
					  <file>lang/qbittorrent_el.qm</file>
 | 
				
			||||||
  <file>lang/qbittorrent_en.qm</file>
 | 
					  <file>lang/qbittorrent_en.qm</file>
 | 
				
			||||||
 | 
					  <file>lang/qbittorrent_en_AU.qm</file>
 | 
				
			||||||
 | 
					  <file>lang/qbittorrent_en_GB.qm</file>
 | 
				
			||||||
  <file>lang/qbittorrent_es.qm</file>
 | 
					  <file>lang/qbittorrent_es.qm</file>
 | 
				
			||||||
  <file>lang/qbittorrent_eu.qm</file>
 | 
					  <file>lang/qbittorrent_eu.qm</file>
 | 
				
			||||||
  <file>lang/qbittorrent_fi.qm</file>
 | 
					  <file>lang/qbittorrent_fi.qm</file>
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										42
									
								
								src/lang/TRANSLATION_INSTRUCTIONS
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					For future maintainers on how to update translations from Transifex.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Project page: https://www.transifex.com/projects/p/qbittorrent/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Most of the options are setup in the .tx/config file. You will need to have the Transifex client app in your path.
 | 
				
			||||||
 | 
					The examples use the tx app on Windows. Other OSs should be similar.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					===Updating the translations===
 | 
				
			||||||
 | 
					1. In the root folder of the project just run "tx pull"
 | 
				
			||||||
 | 
					2. Commit to git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					===Pulling new translation files===
 | 
				
			||||||
 | 
					1. In the root folder of the project just run "tx pull -a"
 | 
				
			||||||
 | 
					2. Commit to git each translation file separately with its own message.
 | 
				
			||||||
 | 
					3. After you commit all new files expose them in app. Edit:
 | 
				
			||||||
 | 
					  a. lang.qrc
 | 
				
			||||||
 | 
					  b. options_imp.cpp: options_imp::languageToLocalizedString()
 | 
				
			||||||
 | 
					  c. src.pro: The TRANSLATIONS var
 | 
				
			||||||
 | 
					  d. preferences_content.html: search for: <select id="locale_select">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note: This will also pull updated translations if you haven't already 'tx pull'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					===Updating the qBittorrent.desktop file===
 | 
				
			||||||
 | 
					1. In the root folder of the project just run "tx pull -s -r qbittorrent.qbittorrentdesktop_master"
 | 
				
			||||||
 | 
					2. Commit to git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It will pull the source file (en). However, in this case .desktop files contain all other translations
 | 
				
			||||||
 | 
					when you pull the source file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					===When making new branch===
 | 
				
			||||||
 | 
					1. Switch to new branch
 | 
				
			||||||
 | 
					2. Edit the .tx.config file. You should change the resource for the qbt translations from 'qbittorrent.qbittorrent_master'
 | 
				
			||||||
 | 
					   to eg 'qbittorrent.qbittorrent_v3_1_x'. It follows this spec: <project>.<resource_slug>_<branchname>'
 | 
				
			||||||
 | 
					3. Commit to git
 | 
				
			||||||
 | 
					4. Use this command to create the new resource on the server and push the translations files "tx push -s -t"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					===Updating the source file==
 | 
				
			||||||
 | 
					When you run lupdate Transifex needs to know that the source is updated. When creating a new resource on transifex
 | 
				
			||||||
 | 
					you should go to the website, select the resource and hit "edit resource". From there you should update the
 | 
				
			||||||
 | 
					"Source file URL". It should point to the exact file in the github repository(eg src/lang/qbittorrent_en.ts). Be sure to copy
 | 
				
			||||||
 | 
					the 'raw' link presented by github and not the regular one. This will make Transifex fetch automatically the source file
 | 
				
			||||||
 | 
					from the repo(maybe once a day). If you want to instantly update the resouce then on the correct branch run "tx push -s"
 | 
				
			||||||