Compare commits
	
		
			184 Commits
		
	
	
		
			release-4.
			...
			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: | ||||
|   - 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: | ||||
|   - qt-qconf | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| [main] | ||||
| host = https://www.transifex.com | ||||
|  | ||||
| [qbittorrent.qbittorrent_ents] | ||||
| [qbittorrent.qbittorrent_v3_1_x] | ||||
| file_filter = src/lang/qbittorrent_<lang>.ts | ||||
| source_file = src/lang/qbittorrent_en.ts | ||||
| source_lang = en | ||||
| @@ -10,7 +10,7 @@ minimum_perc = 23 | ||||
| mode = developer | ||||
|  | ||||
|  | ||||
| [qbittorrent.qbittorrentdesktop] | ||||
| [qbittorrent.qbittorrentdesktop_master] | ||||
| source_file = src/Icons/qBittorrent.desktop | ||||
| source_lang = en | ||||
| type = DESKTOP | ||||
|   | ||||
							
								
								
									
										12
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						| @@ -81,7 +81,7 @@ Translations authors: | ||||
| * files: src/lang/*.ts | ||||
| * file: src/Icons/qBittorrent.desktop | ||||
|   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) | ||||
|   - Basque: Xabier Aramendi (azpidatziak@gmail.com) | ||||
|   - Belarusian: Mihas Varantsou (meequz@gmail.com) | ||||
| @@ -90,11 +90,13 @@ Translations authors: | ||||
|   - Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com) | ||||
|   - Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com) and 冥王歐西里斯 s8321414(Transifex) | ||||
|   - 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) | ||||
|   - Dutch: Pieter Heyvaert (pieter_heyvaert@hotmail.com) | ||||
|   - English: Christophe Dumez (chris@qbittorrent.org) | ||||
|   - Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net) | ||||
|   - English(Australia): Robert Readman readmanr(Transifex) | ||||
|   - English(United Kingdom): Robert Readman readmanr(Transifex) | ||||
|   - Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net), Pekka Niemi (pekka.niemi@iki.fi) and Jiri Grönroos artnay(Transifex) | ||||
|   - French: Christophe Dumez (chris@qbittorrent.org) | ||||
|   - Galician: Marcos Lans (marcoslansgarza@gmail.com) and antiparvos(Transifex) | ||||
|   - Georgian: Beqa Arabuli (arabulibeqa@yahoo.com) | ||||
| @@ -110,12 +112,12 @@ Translations authors: | ||||
|   - Polish: Mariusz Fik (fisiu@opensuse.org) | ||||
|   - Portuguese: Sérgio Marques smarquespt(Transifex) | ||||
|   - 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) | ||||
|   - Serbian: Anaximandar Milet (anaximandar at operamail.com) | ||||
|   - Slovak:  helix84 | ||||
|   - 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) | ||||
|   - Ukrainian: Oleh Prypin (blaxpirit@gmail.com) and zubr139(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 | ||||
|     - FEATURE: Add command line option to daemonize qbittorrent-nox (ngaro) | ||||
|     - FEATURE: Add "Shutdown qBittorrent" button to Web UI (ngaro) | ||||
|   | ||||
							
								
								
									
										2
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -511,7 +511,7 @@ public: | ||||
|     QStringList libDirs; | ||||
|     if (!s.isEmpty()) | ||||
|       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) { | ||||
|       bool found = false; | ||||
|   | ||||
| @@ -75,7 +75,7 @@ public: | ||||
|     QStringList libDirs; | ||||
|     if (!s.isEmpty()) | ||||
|       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) { | ||||
|       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 | ||||
| Terminal=false | ||||
| Type=Application | ||||
| StartupNotify=false | ||||
| StartupWMClass=qbittorrent | ||||
|  | ||||
|  | ||||
|  | ||||
| # Translations | ||||
|  | ||||
|  | ||||
| # Translations | ||||
| GenericName[ar]=العميل BitTorrent | ||||
| Comment[be]=Сцягванне і раздача файлаў праз пратакол BitTorrent | ||||
| @@ -18,12 +23,19 @@ GenericName[be]=BitTorrent-кліент | ||||
| Name[be]=qBittorrent | ||||
| Icon[be]=qbittorrent | ||||
| GenericName[bg]=Торент клиент | ||||
| Comment[cs]=Stahování a sdílení souborů přes síť BitTorrent | ||||
| GenericName[cs]=BitTorrent klient | ||||
| Name[cs]=qBittorrent | ||||
| Icon[cs]=qbittorrent | ||||
| GenericName[de]=BitTorren Client | ||||
| Comment[el]=Λήψη και διαμοιρασμός αρχείων μέσω BitTorrent | ||||
| GenericName[el]=BitTorrent πελάτης | ||||
| Name[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 | ||||
| GenericName[es]=Cliente BitTorrent | ||||
| Name[es]=qBittorrent | ||||
| @@ -32,7 +44,10 @@ Comment[eu]=Jeitsi eta elkarbanatu agiriak BitTorrent-en | ||||
| GenericName[eu]=BitTorrent bezeroa | ||||
| Name[eu]=qBittorrent | ||||
| Icon[eu]=qbittorrent | ||||
| Comment[fi]=Lataa ja jaa tiedostoja BitTorrentia käyttäen | ||||
| GenericName[fi]=BitTorrent-ohjelma | ||||
| Name[fi]=qBittorrent | ||||
| Icon[fi]=qbittorrent | ||||
| Comment[fr]=Télécharger et partager des fichiers avec BitTorrent | ||||
| GenericName[fr]=Client 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 | ||||
| Name[pt_BR]=qBittorrent | ||||
| Icon[pt_BR]=qbittorrent | ||||
| Comment[ro]=Descărcați  și partajați fișiere prin BitTorrent | ||||
| GenericName[ro]=Client BitTorrent | ||||
| Name[ro]=qBittorrent | ||||
| Icon[ro]=qbittorrent | ||||
| Comment[ru]=Скачивайте и делитесь файлами с помощью BitTorrent | ||||
| GenericName[ru]=клиент BitTorrent | ||||
| Name[ru]=qBittorrent | ||||
| Icon[ru]=qbittorrent | ||||
| GenericName[sk]=Klient siete BitTorrent | ||||
| GenericName[sr]=BitTorrent-клијент | ||||
| Comment[sv]=Hämta och dela filer över BitTorrent | ||||
| GenericName[sv]=BitTorrent-klient | ||||
| Name[sv]=qBittorrent | ||||
| Icon[sv]=qbittorrent | ||||
| GenericName[tr]=BitTorrent istemcisi | ||||
| Comment[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 | ||||
| GenericName[vi]=Máy trạm dạng BitTorrent | ||||
| Name[vi]=qBittorrent | ||||
| @@ -91,3 +115,7 @@ Comment[zh_TW]=經由 BitTorrent 下載並分享檔案 | ||||
| GenericName[zh_TW]=BitTorrent 客戶端 | ||||
| Name[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); | ||||
|       // About | ||||
|       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.") + | ||||
|           QString::fromUtf8(" <br /><br />") + | ||||
|           trUtf8("Copyright ©2006-2013 The qBittorrent project") + | ||||
| @@ -80,7 +80,7 @@ class about : public QDialog, private Ui::AboutDlg{ | ||||
|       te_thanks->setHtml(thanks_txt); | ||||
|       // Translation | ||||
|       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>Basque:</u> Xabier Aramendi (azpidatziak@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 (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>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>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>Georgian:</u> Beqa Arabuli (arabulibeqa@yahoo.com)</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>Portuguese:</u> Sérgio Marques smarquespt(Transifex)</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>Serbian:</u> Anaximandar Milet (anaximandar@operamail.com)</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>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>Ukrainian:</u> Oleh Prypin (blaxpirit@gmail.com)</li>\ | ||||
|           <li><u>Vietnamese:</u> Anh Phan ppanhh(Transifex)</li></ul>"); | ||||
|   | ||||
| @@ -40,12 +40,12 @@ | ||||
| #include "iconprovider.h" | ||||
| #include "fs_utils.h" | ||||
| #include "autoexpandabledialog.h" | ||||
| #include "messageboxraised.h" | ||||
|  | ||||
| #include <QString> | ||||
| #include <QFile> | ||||
| #include <QUrl> | ||||
| #include <QMenu> | ||||
| #include <QMessageBox> | ||||
| #include <QTimer> | ||||
| #include <QFileDialog> | ||||
| #include <libtorrent/version.hpp> | ||||
| @@ -81,6 +81,8 @@ AddNewTorrentDialog::AddNewTorrentDialog(QWidget *parent) : | ||||
|   foreach (const QString& label, customLabels) { | ||||
|     ui->label_combo->addItem(label); | ||||
|   } | ||||
|   ui->label_combo->model()->sort(0); | ||||
|   ui->content_tree->header()->setSortIndicator(0, Qt::AscendingOrder); | ||||
|   loadState(); | ||||
|   // Signal / slots | ||||
|   connect(ui->adv_button, SIGNAL(clicked(bool)), SLOT(showAdvancedSettings(bool))); | ||||
| @@ -102,9 +104,7 @@ void AddNewTorrentDialog::loadState() | ||||
| { | ||||
|   QIniSettings settings; | ||||
|   settings.beginGroup(QString::fromUtf8("AddNewTorrentDialog")); | ||||
|   QByteArray state = settings.value("treeHeaderState").toByteArray(); | ||||
|   if (!state.isEmpty()) | ||||
|     ui->content_tree->header()->restoreState(state); | ||||
|   m_headerState = settings.value("treeHeaderState").toByteArray(); | ||||
|   int width = settings.value("width", -1).toInt(); | ||||
|   if (width >= 0) { | ||||
|     QRect geo = geometry(); | ||||
| @@ -183,7 +183,7 @@ bool AddNewTorrentDialog::loadTorrent(const QString& torrent_path, const QString | ||||
|     m_filePath = torrent_path; | ||||
|  | ||||
|   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; | ||||
|   } | ||||
|  | ||||
| @@ -193,73 +193,18 @@ bool AddNewTorrentDialog::loadTorrent(const QString& torrent_path, const QString | ||||
|     m_torrentInfo = new torrent_info(m_filePath.toUtf8().data()); | ||||
|     m_hash = misc::toQString(m_torrentInfo->info_hash()); | ||||
|   } 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; | ||||
|   } | ||||
|  | ||||
|   // Prevent showing the dialog if download is already present | ||||
|   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);; | ||||
|     return false; | ||||
|   } | ||||
|  | ||||
|   // Set dialog title | ||||
|   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(); | ||||
|  | ||||
|   setupTreeview(); | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| @@ -270,13 +215,13 @@ bool AddNewTorrentDialog::loadMagnet(const QString &magnet_uri) | ||||
|   m_url = magnet_uri; | ||||
|   m_hash = misc::magnetUriToHash(m_url); | ||||
|   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; | ||||
|   } | ||||
|  | ||||
|   // Prevent showing the dialog if download is already present | ||||
|   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); | ||||
|     return false; | ||||
|   } | ||||
| @@ -441,7 +386,7 @@ void AddNewTorrentDialog::renameSelectedFile() | ||||
|                                                       index.data().toString(), &ok).trimmed(); | ||||
|   if (ok && !new_name_last.isEmpty()) { | ||||
|     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."), | ||||
|                            QMessageBox::Ok); | ||||
|       return; | ||||
| @@ -467,7 +412,7 @@ void AddNewTorrentDialog::renameSelectedFile() | ||||
|         if (i == file_index) continue; | ||||
|         if (fsutils::sameFileNames(m_filesPath.at(i), new_name)) { | ||||
|           // 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."), | ||||
|                                QMessageBox::Ok); | ||||
|           return; | ||||
| @@ -502,7 +447,7 @@ void AddNewTorrentDialog::renameSelectedFile() | ||||
| #else | ||||
|         if (current_name.startsWith(new_path, Qt::CaseInsensitive)) { | ||||
| #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."), | ||||
|                                QMessageBox::Ok); | ||||
|           return; | ||||
| @@ -665,6 +610,23 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) { | ||||
|     setMetadataProgressIndicator(true, tr("Parsing metadata...")); | ||||
|  | ||||
|     // 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 | ||||
|   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")); | ||||
|   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 | ||||
| #if LIBTORRENT_VERSION_NUM >= 1600 | ||||
|       m_filesPath << misc::toQStringU(fs.file_path(m_torrentInfo->file_at(i))); | ||||
| #else | ||||
|       m_filesPath << misc::toQStringU(m_torrentInfo->file_at(i).path.string()); | ||||
| @@ -688,7 +648,7 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) { | ||||
|   } | ||||
|  | ||||
|   // Prepare content tree | ||||
|     if (m_torrentInfo->num_files() > 1) { | ||||
|   if (fs.num_files() > 1) { | ||||
|     m_contentModel = new TorrentContentFilterModel(this); | ||||
|     connect(m_contentModel->model(), SIGNAL(filteredFilesChanged()), SLOT(updateDiskSpaceLabel())); | ||||
|     ui->content_tree->setModel(m_contentModel); | ||||
| @@ -700,13 +660,14 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) { | ||||
|  | ||||
|     // List files in torrent | ||||
|     m_contentModel->model()->setupModelData(*m_torrentInfo); | ||||
|     if (!m_headerState.isEmpty()) | ||||
|       ui->content_tree->header()->restoreState(m_headerState); | ||||
|  | ||||
|     // 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 | ||||
| #if LIBTORRENT_VERSION_NUM >= 1600 | ||||
|       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()); | ||||
| @@ -720,17 +681,4 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) { | ||||
|   showAdvancedSettings(settings.value("AddNewTorrentDialog/expanded").toBool()); | ||||
|   // Set dialog position | ||||
|   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 saveState(); | ||||
|   void setMetadataProgressIndicator(bool visibleIndicator, const QString &labelText = QString()); | ||||
|   void setupTreeview(); | ||||
|  | ||||
| private: | ||||
|   Ui::AddNewTorrentDialog *ui; | ||||
| @@ -98,6 +99,7 @@ private: | ||||
|   QStringList m_filesPath; | ||||
|   bool m_hasRenamedFile; | ||||
|   QShortcut *editHotkey; | ||||
|   QByteArray m_headerState; | ||||
| }; | ||||
|  | ||||
| #endif // ADDNEWTORRENTDIALOG_H | ||||
|   | ||||
| @@ -176,9 +176,6 @@ | ||||
|         <property name="sortingEnabled"> | ||||
|          <bool>true</bool> | ||||
|         </property> | ||||
|         <attribute name="headerStretchLastSection"> | ||||
|          <bool>false</bool> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|       </item> | ||||
|      </layout> | ||||
|   | ||||
| @@ -44,7 +44,7 @@ | ||||
|         </sizepolicy> | ||||
|        </property> | ||||
|        <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 name="alignment"> | ||||
|         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> | ||||
|   | ||||
| @@ -40,8 +40,12 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg { | ||||
|   Q_OBJECT | ||||
|  | ||||
|   public: | ||||
|   DeletionConfirmationDlg(QWidget *parent=0): QDialog(parent) { | ||||
|   DeletionConfirmationDlg(QWidget *parent, const int &size, const QString &name): QDialog(parent) { | ||||
|     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 | ||||
|     lbl_warn->setPixmap(IconProvider::instance()->getIcon("dialog-warning").pixmap(lbl_warn->height())); | ||||
|     lbl_warn->setFixedWidth(lbl_warn->height()); | ||||
| @@ -57,10 +61,10 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg { | ||||
|     return checkPermDelete->isChecked(); | ||||
|   } | ||||
|  | ||||
|   static bool askForDeletionConfirmation(bool *delete_local_files) { | ||||
|     DeletionConfirmationDlg dlg; | ||||
|   static bool askForDeletionConfirmation(bool& delete_local_files, const int& size, const QString& name) { | ||||
|     DeletionConfirmationDlg dlg(NULL, size, name); | ||||
|     if (dlg.exec() == QDialog::Accepted) { | ||||
|       *delete_local_files = dlg.shouldDeleteLocalFiles(); | ||||
|       delete_local_files = dlg.shouldDeleteLocalFiles(); | ||||
|       return true; | ||||
|     } | ||||
|     return false; | ||||
|   | ||||
| @@ -134,8 +134,8 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
|   } | ||||
|   // Success | ||||
|   QTemporaryFile *tmpfile = new QTemporaryFile; | ||||
|   tmpfile->setAutoRemove(false); | ||||
|   if (tmpfile->open()) { | ||||
|     tmpfile->setAutoRemove(false); | ||||
|     QString filePath = tmpfile->fileName(); | ||||
|     qDebug("Temporary filename is: %s", qPrintable(filePath)); | ||||
|     if (reply->isOpen() || reply->open(QIODevice::ReadOnly)) { | ||||
| @@ -153,6 +153,7 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
|       emit downloadFinished(url, filePath); | ||||
|     } else { | ||||
|       delete tmpfile; | ||||
|       fsutils::forceRemove(filePath); | ||||
|       // Error when reading the request | ||||
|       emit downloadFailure(url, tr("I/O Error")); | ||||
|     } | ||||
| @@ -202,16 +203,16 @@ void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) | ||||
|   if (!reply) return; | ||||
|   if (bytesTotal > 0) { | ||||
|     // Total number of bytes is available | ||||
|     if (bytesTotal > 1048576) { | ||||
|       // More than 1MB, this is probably not a torrent file, aborting... | ||||
|     if (bytesTotal > 1048576*10) { | ||||
|       // More than 10MB, this is probably not a torrent file, aborting... | ||||
|       reply->abort(); | ||||
|       reply->deleteLater(); | ||||
|     } else { | ||||
|       disconnect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64))); | ||||
|     } | ||||
|   } else { | ||||
|     if (bytesReceived  > 1048576) { | ||||
|       // More than 1MB, this is probably not a torrent file, aborting... | ||||
|     if (bytesReceived  > 1048576*10) { | ||||
|       // More than 10MB, this is probably not a torrent file, aborting... | ||||
|       reply->abort(); | ||||
|       reply->deleteLater(); | ||||
|     } | ||||
|   | ||||
| @@ -41,6 +41,7 @@ class HeadlessLoader: public QObject { | ||||
|  | ||||
| public: | ||||
|   HeadlessLoader(const QStringList &torrentCmdLine) { | ||||
|     connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(shutdownCleanUp()), Qt::DirectConnection); | ||||
|     Preferences pref; | ||||
|     // Enable Web UI | ||||
|     pref.setWebUiEnabled(true); | ||||
| @@ -61,11 +62,12 @@ public: | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   ~HeadlessLoader() { | ||||
| public slots: | ||||
|   void shutdownCleanUp() { | ||||
|     Preferences().sync(); | ||||
|     QBtSession::drop(); | ||||
|   } | ||||
|  | ||||
| public slots: | ||||
|   // Call this function to exit qBittorrent headless loader | ||||
|   // and return to prompt (object will be deleted by main) | ||||
|   void exit() { | ||||
|   | ||||
| @@ -314,6 +314,7 @@ | ||||
|   <file>Icons/oxygen/view-filter.png</file> | ||||
|   <file>Icons/oxygen/view-preview.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/webui.png</file> | ||||
|   <file>Icons/skin/arrow-right.gif</file> | ||||
|   | ||||
| @@ -9,6 +9,8 @@ | ||||
|   <file>lang/qbittorrent_de.qm</file> | ||||
|   <file>lang/qbittorrent_el.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_eu.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" | ||||