Compare commits
	
		
			28 Commits
		
	
	
		
			release-2.
			...
			release-1.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 63e5a761ae | ||
|   | c2f22d292a | ||
|   | 9778112b3b | ||
|   | 1708361bd5 | ||
|   | cc04f7eec2 | ||
|   | 395805f9e8 | ||
|   | ba5daee92f | ||
|   | bfef2b5cc0 | ||
|   | af2431afbd | ||
|   | 7a1b92e467 | ||
|   | dc399e9ed9 | ||
|   | dad79d2cc8 | ||
|   | b5d30d5154 | ||
|   | 72df85749b | ||
|   | 6c84288b09 | ||
|   | 78239d6956 | ||
|   | 41be514dcf | ||
|   | 855b539843 | ||
|   | 2e72ab4973 | ||
|   | ae2ad8e747 | ||
|   | 42fa5ef8f3 | ||
|   | 9395f7316d | ||
|   | fa1c4050ed | ||
|   | 565b98a94a | ||
|   | f58efdfefc | ||
|   | a806c27f70 | ||
|   | a8f82d9e12 | ||
|   | fe6054307e | 
							
								
								
									
										31
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						| @@ -2,45 +2,28 @@ Author: | |||||||
| * Christophe Dumez <chris@qbittorrent.org> | * Christophe Dumez <chris@qbittorrent.org> | ||||||
|  |  | ||||||
| Contributors: | Contributors: | ||||||
| * Stefanos Antaris <santaris@csd.auth.gr> |  | ||||||
| * Ishan Arora <ishan@qbittorrent.org> |  | ||||||
| * Arnaud Demaizière <arnaud@qbittorrent.org> | * Arnaud Demaizière <arnaud@qbittorrent.org> | ||||||
|  | * Ishan Arora <ishan@qbittorrent.org> | ||||||
| * Grigis Gaëtan <cipher16@gmail.com> | * Grigis Gaëtan <cipher16@gmail.com> | ||||||
|  |  | ||||||
| Code from other projects: |  | ||||||
| * files src/ico.cpp src/ico.h |  | ||||||
|   copyright: Malte Starostik <malte@kde.org> |  | ||||||
|   license: LGPL |  | ||||||
|  |  | ||||||
| GeoIP database author: |  | ||||||
| * files: src/geoip/GeoIP.dat |  | ||||||
|   copyright: MaxMind, Inc (http://maxmind.com/) |  | ||||||
|   license: Open Data License (see src/geoip/LICENSE.txt) |  | ||||||
|  |  | ||||||
| Images Authors: | Images Authors: | ||||||
| * files: src/Icons/*.png | * files: src/Icons/*.png | ||||||
|   copyright: Gnome Icon Theme |   copyright: Gnome Icon Theme | ||||||
|   license: GPLv2 |   license: GPLv2 | ||||||
|   url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme |   url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme | ||||||
|  |  | ||||||
| * files: src/oxygen/*.png |  | ||||||
|   copyright: Oxygen Icon Theme (KDE) |  | ||||||
|   license: LGPL |  | ||||||
|   url: http://www.oxygen-icons.org |  | ||||||
|  |  | ||||||
| * files: src/Icons/flags/*.png | * files: src/Icons/flags/*.png | ||||||
|   copyright: Open Clip Art Library |   copyright: Open Clip Art Library | ||||||
|   license: Creative Commons Public Domain Dedication |   license: Creative Commons Public Domain Dedication | ||||||
|   url: http://www.openclipart.org |   url: http://www.openclipart.org | ||||||
|  |  | ||||||
| * files: src/Icons/skin/*.png | * files: src/Icons/skins/*.png | ||||||
|   files: src/menuicons/YYxYY/*.png |  | ||||||
|   copyright: Mateusz Tobola <tobejodok@qbittorrent.org> |   copyright: Mateusz Tobola <tobejodok@qbittorrent.org> | ||||||
|   license: GPLv2 |   license: GPLv2 | ||||||
|  |  | ||||||
| * file: src/Icons/skin/tabs.gif | * files: src/menuicons/YYxYY/*.png | ||||||
|   copyright: Greg Houston <gregory.houston@gmail.com> |   copyright: Mateusz Tobola <tobejodok@qbittorrent.org> | ||||||
|   license: MIT |   license: GPLv2 | ||||||
|  |  | ||||||
| * file: src/search_engine/engines/btjunkie.png | * file: src/search_engine/engines/btjunkie.png | ||||||
|   copyright: Downloaded from btjunkie.org |   copyright: Downloaded from btjunkie.org | ||||||
| @@ -63,9 +46,7 @@ Translations authors: | |||||||
|   - Brazilian: Nick Marinho (nickmarinho@gmail.com) |   - Brazilian: Nick Marinho (nickmarinho@gmail.com) | ||||||
|   - Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net) |   - Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net) | ||||||
|   - Catalan: Gekko Dam Beer (gekko04@users.sourceforge.net) |   - Catalan: Gekko Dam Beer (gekko04@users.sourceforge.net) | ||||||
|   - Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com) |   - Chinese (Simplified): Guo Yue (guoyue0418@hotmail.com) | ||||||
|   - Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com) |  | ||||||
|   - Czech: Jirka Vilim (web@tets.cz) |  | ||||||
|   - Danish: Mathias Nielsen (comoneo@gmail.com) |   - Danish: Mathias Nielsen (comoneo@gmail.com) | ||||||
|   - Dutch: Joost Schipper (heavyjoost@users.sourceforge.net) |   - Dutch: Joost Schipper (heavyjoost@users.sourceforge.net) | ||||||
|   - English: Christophe Dumez (chris@qbittorrent.org) |   - English: Christophe Dumez (chris@qbittorrent.org) | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								COPYING
									
									
									
									
									
								
							
							
						
						| @@ -1,17 +1,3 @@ | |||||||
| qBittorrent is licensed under the GNU General Public License version 2 with the |  | ||||||
| addition of the following special exception: |  | ||||||
|  |  | ||||||
| In addition, as a special exception, the copyright holders give permission to |  | ||||||
| link this program with the OpenSSL project's "OpenSSL" library (or with |  | ||||||
| modified versions of it that use the same license as the "OpenSSL" library), |  | ||||||
| and distribute the linked executables. You must obey the GNU General Public |  | ||||||
| License in all respects for all of the code used other than "OpenSSL".  If you |  | ||||||
| modify file(s), you may extend this exception to your version of the file(s), |  | ||||||
| but you are not obligated to do so. If you do not wish to do so, delete this |  | ||||||
| exception statement from your version. |  | ||||||
|  |  | ||||||
| ---------- |  | ||||||
|  |  | ||||||
| 		    GNU GENERAL PUBLIC LICENSE | 		    GNU GENERAL PUBLIC LICENSE | ||||||
| 		       Version 2, June 1991 | 		       Version 2, June 1991 | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										212
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						| @@ -1,215 +1,3 @@ | |||||||
| * Unknown - Christophe Dumez <chris@qbittorrent.org> - v2.0.0 |  | ||||||
|     - FEATURE: Added program option to disable splash screen |  | ||||||
|     - FEATURE: Dropped dependency on libcurl and libzzip |  | ||||||
|     - FEATURE: Display more information regarding the torrent in its properties |  | ||||||
|     - FEATURE: Various optimizations to save CPU and memory |  | ||||||
|     - FEATURE: Folder scanning now works with CIFS and NFS mounted folders |  | ||||||
|     - FEATURE: Speed up qBittorrent startup |  | ||||||
|     - FEATURE: Display per-torrent peer list |  | ||||||
|     - FEATURE: Make sure torrent files are always sorted by name |  | ||||||
|     - FEATURE: Seeds and Peers columns are now sortable |  | ||||||
|     - FEATURE: Torrents can be rechecked from Web UI (Stephanos Antaris) |  | ||||||
|     - FEATURE: New peers can manually be added to the torrents |  | ||||||
|     - FEATURE: Support per-peer rate limiting |  | ||||||
|     - FEATURE: Support peer manual ban |  | ||||||
|     - FEATURE: Display total amounts transferred in status bar |  | ||||||
|     - FEATURE: Display trackers status as well as error/warning messages |  | ||||||
|     - FEATURE: Display the number of peers returned by each tracker & DHT/PeX/LSD |  | ||||||
|     - FEATURE: Global upload/download speeds can be capped from status bar (µTorrent behavior) |  | ||||||
|     - FEATURE: Added option to download first and last piece of a torrent main file first (for preview) |  | ||||||
|     - FEATURE: Graphically display piece availability in torrent properties |  | ||||||
|     - FEATURE: Dropped Qt 4.3 support (Qt >= 4.4 is now required) |  | ||||||
|     - FEATURE: Display close tab button into the tabs in search engine (Qt >= 4.5 only) |  | ||||||
|     - FEATURE: Show official documentation when pressing F1 key |  | ||||||
|     - FEATURE: Announce to all trackers specified for a torrent (µTorrent behavior) (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Added per-torrent super seeding mode (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Support for storing symbolic links in .torrent files (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Support for uTorrent interpretation of multi-tracker torrents (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Handle torrents with duplicate filenames (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Support for merkle hash tree torrents (.merkle.torrent) (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Metadata download from swarm is now compatible with µtorrent (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Support tracker exchange between peers (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Better http seed support (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Tracker connections are now also subject to IP filtering (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Include DHT traffic in the rate limiter (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Support for bitcomet padding files (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Option to skip file checking and start seeding immediately in torrent addition dialog (Stephanos Antaris) (libtorrent >= v0.15 only) |  | ||||||
|     - WEB UI: Remodeled Web UI to match new qBittorrent UI (Properties and preferences available) |  | ||||||
|     - WEB UI: Added internationalization support |  | ||||||
|     - WEB UI: Reduced computation in Javascript (do this one server side instead) |  | ||||||
|     - WEB UI: Fixed Transfer list flickering |  | ||||||
|     - COSMETIC: Merged download / upload lists |  | ||||||
|     - COSMETIC: Torrents can be filtered based on their status |  | ||||||
|     - COSMETIC: Torrent properties are now displayed in main window |  | ||||||
|     - COSMETIC: Made program preferences scrollable for usability on small screens (e.g. netbooks) |  | ||||||
|     - COSMETIC: Added a "torrent status" column to transfer list |  | ||||||
|     - COSMETIC: Display Seeds and Peers in two separate columns |  | ||||||
|     - COSMETIC: New deletion confirmation dialog (Merged delete/delete permanently actions) |  | ||||||
|     - COSMETIC: Improved status bar layout spacing |  | ||||||
|     - COSMETIC: Display speeds with more user friendly units instead of always using KiB/s |  | ||||||
|     - COSMETIC: New torrent status icons by Mateusz Tolola |  | ||||||
|     - COSMETIC: Make use of libnotify if available for system notifications (Ubuntu, ...) |  | ||||||
|  |  | ||||||
| * Thu Sep 3 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.0 |  | ||||||
|     - FEATURE: Added Magnet URI support |  | ||||||
|     - FEATURE: Search engine supports category-based requests |  | ||||||
|     - FEATURE: Make use of torrent enclosure in RSS feeds for direct download |  | ||||||
|     - FEATURE: Implemented a RSS feed downloader with filter support |  | ||||||
|     - FEATURE: Save old RSS item to hard disk to remember them on start up |  | ||||||
|     - FEATURE: Display free disk space in torrent addition dialog |  | ||||||
|     - FEATURE: In torrent addition from URL, paste clipboard content if it contains an URL |  | ||||||
|     - FEATURE: RSS feeds URLs can now be copied to clipboard |  | ||||||
|     - FEATURE: RSS feeds can now be grouped into folders |  | ||||||
|     - FEATURE: Added "Unread" item to RSS feed list to display all unread news |  | ||||||
|     - FEATURE: If a torrent contains a torrent file, process downloaded torrent file too |  | ||||||
|     - FEATURE: A random listening port can be chosen automatically |  | ||||||
|     - BUGFIX: torrent resume code rewrited |  | ||||||
|     - BUGFIX: Fixed uTorrent spoofing code |  | ||||||
|     - BUGFIX: Greatly improved column sorting code |  | ||||||
|     - BUGFIX: Possibility to create trackerless torrents |  | ||||||
|     - BUGFIX: Better item coloring in torrent content filtering dialog |  | ||||||
|     - COSMETIC: Redesigned search tab to improve usability |  | ||||||
|     - COSMETIC: Redesigned RSS tab to improve usability |  | ||||||
|     - COSMETIC: Improved tracker errors readability |  | ||||||
|  |  | ||||||
| * Sun Aug 21 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.4.1 |  | ||||||
|     - BUGFIX: Fix problems when changing save path (if using temporary download folder) |  | ||||||
|     - BUGFIX: Display real save path instead of the temporary one in torrent properties |  | ||||||
|     - BUGFIX: Catching invalid_handle exception to avoid rare crashes |  | ||||||
|     - BUGFIX: Fixed popup menu position in RSS feeds list |  | ||||||
|     - BUGFIX: Don't save RSS feed state if it could not be updated |  | ||||||
|  |  | ||||||
| * Thu Aug 13 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.4.0 |  | ||||||
|     - FEATURE: Display swarm information in lists |  | ||||||
|     - FEATURE: Allow to define temporary download folder |  | ||||||
|     - FEATURE: Display total amount of uploaded data in finished list |  | ||||||
|     - FEATURE: Resizing a column in a search results tab affects all tabs |  | ||||||
|     - FEATURE: Search results tab columns are now remembered upon startup |  | ||||||
|     - FEATURE: Added right click menu in search engine to clear completion history |  | ||||||
|     - FEATURE: Allow to set a different port for DHT (UDP) than the one used for Bittorrent |  | ||||||
|     - FEATURE: Updated spoofing code to avoid trackers ban |  | ||||||
|     - BUGFIX: Provide more helpful explanation when an I/O error occured |  | ||||||
|     - BUGFIX: Stop enforcing UTF-8 and use system locale instead |  | ||||||
|     - COSMETIC: Redesigned program preferences |  | ||||||
|     - COSMETIC: Updated icons set |  | ||||||
|  |  | ||||||
| * Fri Jul 24 2009 - Christophe DUMEZ <chris@qbittorrent.org> - 1.3.5 |  | ||||||
|     - BUGFIX: Made IP filter parser more robust |  | ||||||
|     - BUGFIX: Fixed torrent creation tool |  | ||||||
|     - BUGFIX: Fixed possible overflow in progress calculation in arborescence.h |  | ||||||
|     - BUGFIX: Save properties window size, position, columns width and restore them |  | ||||||
|     - BUGFIX: Set a minimum default width for NAME column in properties |  | ||||||
|     - BUGFIX: Remember visual indexes of columns in transfer lists |  | ||||||
|  |  | ||||||
| * Sun Jul 12 2009 - Christophe DUMEZ <chris@qbittorrent.org> - v1.3.4 |  | ||||||
|     - BUGFIX: Fixed IP filter file parsing on 64bits |  | ||||||
|     - BUGFIX: Suppressed QLayout: Attempting to add QLayout "" to properties "properties" warning message when opening a properties dialog |  | ||||||
|     - BUGFIX: Fixed a little bug in search engine plugins helper file |  | ||||||
|     - BUGFIX: Fixed compilation problems with Qt 4.3 |  | ||||||
|     - BUGFIX: Percentages no longer disapear with default cleanlooks style |  | ||||||
|     - BUGFIX: Cleanly fixed popup menus position in lists (no more workarounds) |  | ||||||
|     - BUGFIX: Fixed memory leak in search engine |  | ||||||
|     - BUGFIX: Torrents with an infinite ratio are no longer affected by ratio_limit set in program preferences |  | ||||||
|     - BUGFIX: Display a ratio of 0.0 if total_upload and total_download are both 0 |  | ||||||
|     - BUGFIX: Remove last separator in top tool bar |  | ||||||
|     - BUGFIX: Tuned lists properties to make sure display is correct |  | ||||||
|     - COSMETIC: Display date as well as time in log window |  | ||||||
|  |  | ||||||
| * Sun Apr 5 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.3 |  | ||||||
|     - BUGFIX: Fixed Web UI torrent upload form |  | ||||||
|     - BUGFIX: Fixed unicode support in search engine |  | ||||||
|     - BUGFIX: Fixed search engine bug that prevented a torrent from appearing more than once among all tabs |  | ||||||
|     - LICENSE: Added an exception to the license regarding OpenSSL. |  | ||||||
|     - I18N: Updated Finnish translation |  | ||||||
|  |  | ||||||
| * Sat Mar 7 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.2 |  | ||||||
|     - BUGFIX: Fix top toolbar disabling |  | ||||||
|     - BUGFIX: Fix building with Qt 4.5 |  | ||||||
|     - BUGFIX: RSS items read status is now remembered upon restart |  | ||||||
|  |  | ||||||
| * Mon Jan 26 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.1 |  | ||||||
|     - BUGFIX: Torrents paused due to an I/O error were displayed as queued |  | ||||||
|     - BUGFIX: qBittorrent now prints backtrace in terminal when segfaulting |  | ||||||
|     - BUGFIX: Fixed files progress display in torrent properties |  | ||||||
|     - BUGFIX: Improved torrent ratio calculation |  | ||||||
|     - BUGFIX: Fixed possible crash when parsing filter file |  | ||||||
|     - BUGFIX: Made some code optimization |  | ||||||
|     - BUGFIX: Fixed download/upload speed decrease problems |  | ||||||
|     - I18N: Updated Finnish, Bulgarian and Greek translations |  | ||||||
|  |  | ||||||
| * Fri Jan 9 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.0 |  | ||||||
|     - FEATURE: Based on libtorrent-rasterbar v0.14.2 |  | ||||||
|     - FEATURE: Improved ratio calculation system |  | ||||||
|     - FEATURE: Torrent creation code cleanup |  | ||||||
|     - FEATURE: Allow to set maximum number of active seeds (queueing) |  | ||||||
|     - FEATURE: Now seeds priorities are handled automatically by libtorrent-rasterbar (queueing) |  | ||||||
|     - FEATURE: Code cleanup and optimization (save memory and cpu) |  | ||||||
|     - FEATURE: ETA calculation now relies on average speed over all sessions |  | ||||||
|     - FEATURE: Allow to force rechecking torrents |  | ||||||
|     - FEATURE: Added support for 2 new extensions (uTorrent metadata and smart ban plugin) |  | ||||||
|     - FEATURE: Allow to change the save path of torrents after addition |  | ||||||
|     - FEATURE: Got rid of libmagick++ dependency |  | ||||||
|     - FEATURE: Updated Web interface to MochaUI v0.9.5 |  | ||||||
|     - FEATURE: Added notification in WebUI when qBittorrent is not reachable |  | ||||||
|     - FEATURE: Rewrote folder scanning code (Now uses a filesystem watcher) |  | ||||||
|     - FEATURE: Added torrent deletion from hard drive function in Web UI |  | ||||||
|     - FEATURE: Added queueing priority actions in Web UI |  | ||||||
|     - FEATURE: Display progress using progress bars in Web UI |  | ||||||
|     - BUGFIX: Made usage of fastresume data more reliable |  | ||||||
|     - BUGFIX: qBittorrent shutdown is now faster |  | ||||||
|     - BUGFIX: Fixed several memory leaks |  | ||||||
|     - BUGFIX: WebUI is now working with IE7 |  | ||||||
|     - BUGFIX: Fixed spacing problem in toolbar when toggling its visibility |  | ||||||
|     - BUGFIX: Fixed some compilation and Qt4 warnings |  | ||||||
|     - BUGFIX: Do not use an addition dialog for torrents from folder scanning |  | ||||||
|     - BUGFIX: Catch SIGTERM to exit cleanly (e.g. computer shutdown) |  | ||||||
|     - BUGFIX: Improved proxy support code |  | ||||||
|     - BUGFIX: Fixed systray icon tooltip on Windows |  | ||||||
|     - BUGFIX: Proxy settings are now saved even if disabled |  | ||||||
|  |  | ||||||
| * Sun Nov 9 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.2.1 |  | ||||||
|     - BUGFIX: Fixed possible crash when deleting a torrent permanently |  | ||||||
|     - BUGFIX: Queued_for_checking torrents were not displayed as checking in seeding list |  | ||||||
|     - BUGFIX: Speed up startup time when having a lot of torrents |  | ||||||
|  |  | ||||||
| * Wed Oct 29th 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.2.0 |  | ||||||
|     - FEATURE: Torrent queueing system (with priorities) |  | ||||||
|     - FEATURE: The number of DHT nodes is displayed |  | ||||||
|     - FEATURE: RSS can now be disabled from program preferences |  | ||||||
|     - FEATURE: Added collapse/expand all buttons in addition and properties dialogs |  | ||||||
|     - FEATURE: Can have different proxies for Bittorrent and search engine |  | ||||||
|     - FEATURE: Allow multiple item selection in Web UI transfer list |  | ||||||
|     - FEATURE: Moved uploads to a separate list in Web UI |  | ||||||
|     - BUGFIX: Totally rewritten Web UI list refresh system (fixed memory leak) |  | ||||||
|     - BUGFIX: Disable ETA calculation when ETA column is hidden |  | ||||||
|     - BUGFIX: Removed "disconnected" connection state, detection was far from perfect |  | ||||||
|     - BUGFIX: Torrents are no longer starting from scratch when changing default save path (when torrent addition dialog is disabled) |  | ||||||
|     - BUGFIX: Single instance code is now more reliable on Qt >= 4.4 |  | ||||||
|     - COSMETIC: Transfer speed, ratio, connection status and DHT nodes are displayed in status bar     |  | ||||||
|     - COSMETIC: RSS Tab is now hidden as a default |  | ||||||
|     - COSMETIC: Allow to hide or display top toolbar |  | ||||||
|     - COSMETIC: Log is now in a separate dialog |  | ||||||
|  |  | ||||||
| * Sun Sept 14 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.4 |  | ||||||
|     - FEATURE: DHT is no longer used as fallback only |  | ||||||
|     - FEATURE: Ported WebUI to Mootools v1.2 |  | ||||||
|     - BUGFIX: Fixed 'start seeding after torrent creation' feature |  | ||||||
|     - BUGFIX: Fixed compilation with boost v1.36 |  | ||||||
|     - BUGFIX: Some code optimization |  | ||||||
|     - BUGFIX: Fixed memory leak in Web UI |  | ||||||
|     - BUGFIX: Fixed problems with column sorting |  | ||||||
|     - BUGFIX: Improved code for pausing torrents on startup |  | ||||||
|     - BUGFIX: Torrent addition dialog is now disabled for downloads from WebUI |  | ||||||
|     - BUGFIX: Give focus to input field in WebUI download dialog |  | ||||||
|  |  | ||||||
| * Tue Aug 26 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.3 |  | ||||||
|     - BUGFIX: Fixed ratio saving for seeding torrents |  | ||||||
|     - I18N: Added czech and traditional chinese translations |  | ||||||
|  |  | ||||||
| * Sun Aug 17 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.2 |  | ||||||
|     - BUGFIX: Fixed progress calculation |  | ||||||
|     - BUGFIX: Fixed finished torrent detection |  | ||||||
|  |  | ||||||
| * Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.1 | * Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.1 | ||||||
|     - BUGFIX: Fixed bad resource file for icons |     - BUGFIX: Fixed bad resource file for icons | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										26
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						| @@ -1,6 +1,12 @@ | |||||||
| qBittorrent - A BitTorrent client in C++ / Qt4 | qBittorrent - A BitTorrent client in C++ / Qt4 | ||||||
| ------------------------------------------ | ------------------------------------------ | ||||||
|  |  | ||||||
|  | *** Necessary if qt3 is default on your system *** | ||||||
|  | export QTDIR=/usr/include/qt4 | ||||||
|  | export PATH=$QTDIR/bin:$PATH | ||||||
|  | export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib | ||||||
|  | *** End *** | ||||||
|  |  | ||||||
| ./configure | ./configure | ||||||
| make && make install | make && make install | ||||||
| qbittorrent | qbittorrent | ||||||
| @@ -8,20 +14,28 @@ qbittorrent | |||||||
| will install and execute qBittorrent hopefully without any problems. | will install and execute qBittorrent hopefully without any problems. | ||||||
|  |  | ||||||
| Dependencies: | Dependencies: | ||||||
| - Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) | - Qt >= 4.3.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) | ||||||
|  |   Qt >= 4.4.0 is advised | ||||||
|  |  | ||||||
| - libtorrent-rasterbar by Arvid Norberg (>= 0.14.0 REQUIRED, >= v0.15.0 ADVISED) | - libtorrent-rasterbar by Arvid Norberg (>= v0.13.1 REQUIRED) | ||||||
|     -> http://www.qbittorrent.org/download.php (advised) |  | ||||||
|     -> http://www.libtorrent.net |     -> http://www.libtorrent.net | ||||||
|     Be careful: another library (the one used by rTorrent) uses a similar name. |     Be careful: another library (the one used by rTorrent) uses a similar name. | ||||||
|  |  | ||||||
| - libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization | - libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization | ||||||
|  |  | ||||||
|  | - libcurl | ||||||
|  |  | ||||||
| - python >= 2.3 (needed by search engine) | - python >= 2.3 (needed by search engine) | ||||||
|  |  | ||||||
| - libnotify >= 0.4.2, glib-2.0 (optional) | - libmagick++ (advised, not required) | ||||||
|   * Can be used for system notifications to replace standard Qt notifications |   * Needed for favicons support (RSS / Search plugins) | ||||||
|     so that it integrates better into the Desktop |  | ||||||
|  | - libzzip (advised, not required) | ||||||
|  |   * Needed for zip support (Search plugins) | ||||||
|  |  | ||||||
|  | NOTE FOR NON-KDE USERS: | ||||||
|  | - qt4-qtconfig package is advised when using other systems than KDE. | ||||||
|  |   You can also change qBittorrent style to Cleanlooks (GNOME like) | ||||||
|  |  | ||||||
| DOCUMENTATION: | DOCUMENTATION: | ||||||
| Please note that there is a documentation with a "compiling howto" at http://wiki.qbittorrent.org. | Please note that there is a documentation with a "compiling howto" at http://wiki.qbittorrent.org. | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								README
									
									
									
									
									
								
							
							
						
						| @@ -10,9 +10,6 @@ It aims to be a good alternative to all other bittorrent clients | |||||||
| out there. qBittorrent is fast, stable and provides unicode | out there. qBittorrent is fast, stable and provides unicode | ||||||
| support as well as many features. | support as well as many features. | ||||||
|  |  | ||||||
| This product includes GeoLite data created by MaxMind, available from |  | ||||||
| http://maxmind.com/ |  | ||||||
|  |  | ||||||
| Installation: | Installation: | ||||||
| ******************************** | ******************************** | ||||||
| For installation, follow the instructions from INSTALL file, but simple: | For installation, follow the instructions from INSTALL file, but simple: | ||||||
| @@ -26,9 +23,6 @@ will install and execute qBittorrent hopefully without any problem. | |||||||
| For more information please visit: | For more information please visit: | ||||||
| http://www.qbittorrent.org | http://www.qbittorrent.org | ||||||
|  |  | ||||||
| or our wiki here: |  | ||||||
| http://wiki.qbittorrent.org |  | ||||||
|  |  | ||||||
| Please report any bug (or feature request) to: | Please report any bug (or feature request) to: | ||||||
| http://bugs.qbittorrent.org | http://bugs.qbittorrent.org | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								TODO
									
									
									
									
									
								
							
							
						
						| @@ -1,2 +1,22 @@ | |||||||
| See https://blueprints.launchpad.net/qbittorrent/ | See https://blueprints.launchpad.net/qbittorrent/ | ||||||
|  |  | ||||||
|  | Translations updated in v1.1.0: | ||||||
|  | - French | ||||||
|  | - Chinese | ||||||
|  | - Polish | ||||||
|  | - Portuguese | ||||||
|  | - Brazilian | ||||||
|  | - Slovak | ||||||
|  | - Swedish | ||||||
|  | - Romanian | ||||||
|  | - Finnish | ||||||
|  | - Italian | ||||||
|  | - Turkish | ||||||
|  | - Korean | ||||||
|  | - Hungarian | ||||||
|  | - German | ||||||
|  | - Spanish | ||||||
|  | - Russian | ||||||
|  | - Dutch | ||||||
|  | - Bulgarian | ||||||
|  | - Greek | ||||||
|   | |||||||
| @@ -1,19 +1,17 @@ | |||||||
| .\" This manpage has been automatically generated by docbook2man | .\" This manpage has been automatically generated by docbook2man | ||||||
| .\" from a DocBook document.  This tool can be found at: | .\" from a DocBook document.  This tool can be found at: | ||||||
| .\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>. | .\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>. | ||||||
| .TH "QBITTORRENT" "1" "September 30th 2009" "Bittorrent client written in C++ / Qt4" "" | .TH "QBITTORRENT" "1" "September 1st 2007" "Bittorrent client written in C++ / Qt4" "" | ||||||
|  |  | ||||||
| .SH "NAME" | .SH NAME | ||||||
| qBittorrent \- a Bittorrent client written in C++ / Qt4 | qBittorrent \- a Bittorrent client written in C++ / Qt4 | ||||||
|  | .SH SYNOPSIS | ||||||
|  |  | ||||||
| .SH "SYNOPSIS" | \fBqbittorrent\fR [FILE | URL] [FILE | URL...] | ||||||
|  |  | ||||||
| \fBqbittorrent\fR [\-\-no-splash] [TORRENT_FILE | URL]... |  | ||||||
|  |  | ||||||
| \fBqbittorrent\fR \-\-help | \fBqbittorrent\fR \-\-help | ||||||
|  |  | ||||||
| \fBqbittorrent\fR \-\-version | \fBqbittorrent\fR \-\-version | ||||||
|  |  | ||||||
| .PP | .PP | ||||||
| .SH "DESCRIPTION" | .SH "DESCRIPTION" | ||||||
|  |  | ||||||
| @@ -21,21 +19,10 @@ qBittorrent \- a Bittorrent client written in C++ / Qt4 | |||||||
| using the \fBrblibtorrent\fR library by Arvid Norberg. qBittorrent aims | using the \fBrblibtorrent\fR library by Arvid Norberg. qBittorrent aims | ||||||
| to be a good alternative to all other bittorrent clients out there. qBittorrent | to be a good alternative to all other bittorrent clients out there. qBittorrent | ||||||
| is fast, stable, light, it supports unicode and it provides a good integrated search engine. | is fast, stable, light, it supports unicode and it provides a good integrated search engine. | ||||||
| It also comes with UPnP port forwarding / NAT-PMP, encryption (Azureus compatible),  | It also comes with UPnP port forwarding / NAT-PMP, encryption (Azureus compatible), FAST extension (mainline) and PeX support (utorrent compatible). | ||||||
| FAST extension (mainline) and PeX support (utorrent compatible). |  | ||||||
|  |  | ||||||
| .SH "OPTIONS" |  | ||||||
|  |  | ||||||
| \fB--help\fR Prints the command line options. |  | ||||||
|  |  | ||||||
| \fB--version\fR Prints qbittorrent program version number. |  | ||||||
|  |  | ||||||
| \fB--no-splash\fR Disables splash screen on startup. |  | ||||||
|  |  | ||||||
| .SH "BUGS" |  | ||||||
|  |  | ||||||
| If you find a bug, please report it at http://bugs.qbittorrent.org |  | ||||||
|  |  | ||||||
|  | Please report any problem to http://bugs.qbittorrent.org | ||||||
|  | .PP | ||||||
| .SH "AUTHOR" | .SH "AUTHOR" | ||||||
|  |  | ||||||
| Christophe Dumez <chris@qbittorrent.org> | Christophe Dumez <chris@qbittorrent.org> | ||||||
|   | |||||||
| @@ -12,6 +12,9 @@ | |||||||
|   <dep type='libboost'> |   <dep type='libboost'> | ||||||
|     <required/> |     <required/> | ||||||
|   </dep> |   </dep> | ||||||
|   <dep type='libnotify'> |   <dep type='libcurl'> | ||||||
|  |     <required/> | ||||||
|   </dep> |   </dep> | ||||||
|  |   <dep type='libmagick'/> | ||||||
|  |   <dep type='libzzip'/> | ||||||
| </qconf> | </qconf> | ||||||
|   | |||||||
							
								
								
									
										65
									
								
								qcm/libcommoncpp2.qcm
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,65 @@ | |||||||
|  | /* | ||||||
|  | -----BEGIN QCMOD----- | ||||||
|  | name: libcommoncpp2 | ||||||
|  | arg: with-libcommoncpp2-inc=[path], Path to libcommoncpp2 include files | ||||||
|  | arg: with-libcommoncpp2-lib=[path], Path to libcommoncpp2 library files | ||||||
|  | -----END QCMOD----- | ||||||
|  | */ | ||||||
|  | class qc_libcommoncpp2 : public ConfObj | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	qc_libcommoncpp2(Conf *c) : ConfObj(c) {} | ||||||
|  | 	QString name() const { return "GNU Common C++ library (libcommoncpp2)"; } | ||||||
|  | 	QString shortname() const { return "libcommoncpp2"; } | ||||||
|  | 	bool exec(){ | ||||||
|  |     QString s; | ||||||
|  | 		s = conf->getenv("QC_WITH_LIBCOMMONCPP2_INC"); | ||||||
|  | 		if(!s.isEmpty()) { | ||||||
|  | 			if(!conf->checkHeader(s, "cc++/url.h")) { | ||||||
|  | 				return false; | ||||||
|  |     	} | ||||||
|  | 		}else{ | ||||||
|  | 			QStringList sl; | ||||||
|  | 			sl << "/usr/include"; | ||||||
|  | 			sl << "/usr/local/include"; | ||||||
|  | 			bool found = false; | ||||||
|  | 			foreach(s, sl){ | ||||||
|  | 				if(conf->checkHeader(s, "cc++/url.h")){ | ||||||
|  | 					found = true; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if(!found) { | ||||||
|  | 				return false; | ||||||
|  |       } | ||||||
|  | 		} | ||||||
|  | 		conf->addIncludePath(s); | ||||||
|  |  | ||||||
|  | 		s = conf->getenv("QC_WITH_LIBCOMMONCPP2_LIB"); | ||||||
|  | 		if(!s.isEmpty()) { | ||||||
|  | 			if(!QFile::exists(s+QString("/libccext2.so"))) | ||||||
|  | 		    return false; | ||||||
|  | 			if(!QFile::exists(s+QString("/libccgnu2.so"))) | ||||||
|  | 				return false; | ||||||
|  |     	conf->addLib(QString("-L") + s); | ||||||
|  | 		}else{ | ||||||
|  | 			QStringList sl; | ||||||
|  | 			sl << "/usr/lib/"; | ||||||
|  | 			sl << "/usr/lib64/"; | ||||||
|  | 			sl << "/usr/local/lib/"; | ||||||
|  | 			sl << "/usr/local/lib64/"; | ||||||
|  | 			bool found = false; | ||||||
|  | 			foreach(s, sl){ | ||||||
|  | 				if(QFile::exists(s+QString("libccext2.so"))){ | ||||||
|  | 				  if(QFile::exists(s+QString("libccgnu2.so"))){ | ||||||
|  | 						found = true; | ||||||
|  | 						break; | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if(!found) return false; | ||||||
|  | 			conf->addLib(QString("-L") + s); | ||||||
|  | 		} | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | }; | ||||||
							
								
								
									
										61
									
								
								qcm/libcurl.qcm
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,61 @@ | |||||||
|  | /* | ||||||
|  | -----BEGIN QCMOD----- | ||||||
|  | name: libcommoncpp2 | ||||||
|  | arg: with-libcurl-inc=[path], Path to libcurl include files | ||||||
|  | arg: with-libcurl-lib=[path], Path to libcurl library files | ||||||
|  | -----END QCMOD----- | ||||||
|  | */ | ||||||
|  | class qc_libcurl : public ConfObj | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	qc_libcurl(Conf *c) : ConfObj(c) {} | ||||||
|  | 	QString name() const { return "libcurl"; } | ||||||
|  | 	QString shortname() const { return "libcurl"; } | ||||||
|  | 	bool exec(){ | ||||||
|  |     QString s; | ||||||
|  | 		s = conf->getenv("QC_WITH_LIBCURL_INC"); | ||||||
|  | 		if(!s.isEmpty()) { | ||||||
|  | 			if(!conf->checkHeader(s, "curl/curl.h")) { | ||||||
|  | 				return false; | ||||||
|  |     	} | ||||||
|  | 		}else{ | ||||||
|  | 			QStringList sl; | ||||||
|  | 			sl << "/usr/include"; | ||||||
|  | 			sl << "/usr/local/include"; | ||||||
|  | 			bool found = false; | ||||||
|  | 			foreach(s, sl){ | ||||||
|  | 				if(conf->checkHeader(s, "curl/curl.h")){ | ||||||
|  | 					found = true; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if(!found) { | ||||||
|  | 				return false; | ||||||
|  |       } | ||||||
|  | 		} | ||||||
|  | 		conf->addIncludePath(s); | ||||||
|  |  | ||||||
|  | 		s = conf->getenv("QC_WITH_LIBCURL_LIB"); | ||||||
|  | 		if(!s.isEmpty()) { | ||||||
|  | 			if(!QFile::exists(s+QString("/libcurl.so"))) | ||||||
|  | 		          return false; | ||||||
|  |     	conf->addLib(QString("-L") + s); | ||||||
|  | 		}else{ | ||||||
|  | 			QStringList sl; | ||||||
|  | 			sl << "/usr/lib/"; | ||||||
|  | 			sl << "/usr/lib64/"; | ||||||
|  | 			sl << "/usr/local/lib/"; | ||||||
|  | 			sl << "/usr/local/lib64/"; | ||||||
|  | 			bool found = false; | ||||||
|  | 			foreach(s, sl){ | ||||||
|  | 				if(QFile::exists(s+QString("libcurl.so"))){ | ||||||
|  | 					found = true; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if(!found) return false; | ||||||
|  | 			conf->addLib(QString("-L") + s); | ||||||
|  | 		} | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | }; | ||||||
| @@ -64,11 +64,14 @@ public: | |||||||
|                          	return false; |                          	return false; | ||||||
| 		} | 		} | ||||||
| 		conf->addLib(QString("-L") + s); | 		conf->addLib(QString("-L") + s); | ||||||
| 		QString out = ""; | 		QProcess magickConfig; | ||||||
| 		QStringList params; | 		QStringList params; | ||||||
|                 params << "--libs"; | 		params << "--libs"; | ||||||
| 		qconf->doCommand("Magick++-config", params, &out); | 		magickConfig.start("Magick++-config", params, QIODevice::ReadOnly); | ||||||
| 		out = out.replace("\n", ""); | 		magickConfig.waitForStarted(); | ||||||
|  | 		magickConfig.waitForFinished(); | ||||||
|  | 		QByteArray result = magickConfig.readAll(); | ||||||
|  | 		result = result.replace("\n", ""); | ||||||
| 		conf->addLib(result.data()); | 		conf->addLib(result.data()); | ||||||
| 		conf->addDefine("HAVE_MAGICK"); | 		conf->addDefine("HAVE_MAGICK"); | ||||||
| 		return true; | 		return true; | ||||||
|   | |||||||
| @@ -1,41 +0,0 @@ | |||||||
| /* |  | ||||||
| -----BEGIN QCMOD----- |  | ||||||
| name: libnotify |  | ||||||
| -----END QCMOD----- |  | ||||||
| */ |  | ||||||
| // see  Conf::findPkgConfig |  | ||||||
| class qc_libnotify : public ConfObj |  | ||||||
| { |  | ||||||
| public: |  | ||||||
| 	qc_libnotify(Conf *c) : ConfObj(c) {} |  | ||||||
| 	QString name() const { return "libnotify >= 0.4.2 (optional)"; } |  | ||||||
| 	QString shortname() const { return "libnotify"; } |  | ||||||
| 	bool exec(){ |  | ||||||
| 		QStringList incs; |  | ||||||
| 		QString req_ver = "0.4.2"; |  | ||||||
| 		QString version, libs, other; |  | ||||||
| 		VersionMode mode = VersionMin; |  | ||||||
| 		if(conf->findPkgConfig("libnotify", mode, req_ver, &version, &incs, &libs, &other)) { |  | ||||||
| 			conf->addDefine("WITH_LIBNOTIFY"); |  | ||||||
| 			for(int n = 0; n < incs.count(); ++n) |  | ||||||
| 				conf->addIncludePath(incs[n]); |  | ||||||
| 			if(!libs.isEmpty()) |  | ||||||
| 				conf->addLib(libs); |  | ||||||
| 			QStringList incs2; |  | ||||||
| 			QString req_ver2 = "2.0"; |  | ||||||
| 			QString version2, libs2, other2; |  | ||||||
| 			if(conf->findPkgConfig("glib-2.0", mode, req_ver2, &version2, &incs2, &libs2, &other2)) { |  | ||||||
| 				for(int n = 0; n < incs2.count(); ++n) |  | ||||||
| 				conf->addIncludePath(incs2[n]); |  | ||||||
| 				if(!libs2.isEmpty()) |  | ||||||
| 					conf->addLib(libs2); |  | ||||||
| 			} else { |  | ||||||
| 				return false; |  | ||||||
| 			} |  | ||||||
| 		} else { |  | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		return true; |  | ||||||
| 	} |  | ||||||
| }; |  | ||||||
| @@ -1,31 +1,70 @@ | |||||||
| /* | /* | ||||||
| -----BEGIN QCMOD----- | -----BEGIN QCMOD----- | ||||||
| name: libtorrent-rasterbar | name: libtorrent-rasterbar | ||||||
|  | arg: with-libtorrent-inc=[path], Path to libtorrent-rasterbar include files | ||||||
|  | arg: with-libtorrent-lib=[path], Path to libtorrent-rasterbar library files | ||||||
|  | arg: with-libtorrent-static-lib=[path], Path to libtorrent-rasterbar .a file | ||||||
| -----END QCMOD----- | -----END QCMOD----- | ||||||
| */ | */ | ||||||
| // see  Conf::findPkgConfig |  | ||||||
| class qc_libtorrent_rasterbar : public ConfObj | class qc_libtorrent_rasterbar : public ConfObj | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 	qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {} | 	qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {} | ||||||
| 	QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.15.0 advised)"; } | 	QString name() const { return "libtorrent-rasterbar >= 0.13"; } | ||||||
| 	QString shortname() const { return "libtorrent-rasterbar"; } | 	QString shortname() const { return "libtorrent-rasterbar"; } | ||||||
| 	bool exec(){ | 	bool exec(){ | ||||||
| 		QStringList incs; |         	QString s; | ||||||
| 		QString req_ver = "0.14.0"; | 		s = conf->getenv("QC_WITH_LIBTORRENT_INC"); | ||||||
| 		QString adv_ver = "0.15.0"; | 		if(!s.isEmpty()) { | ||||||
| 		QString version, libs, other; | 			if(!conf->checkHeader(s, "libtorrent/lsd.hpp")) { | ||||||
| 		VersionMode mode = VersionMin; | 				return false; | ||||||
| 		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other)) |       			} | ||||||
| 			return false; | 		}else{ | ||||||
| 		for(int n = 0; n < incs.count(); ++n) | 			QStringList sl; | ||||||
| 			conf->addIncludePath(incs[n]); | 			sl << "/usr/include"; | ||||||
| 		if(!libs.isEmpty()) | 			sl << "/usr/local/include"; | ||||||
| 			conf->addLib(libs); | 			bool found = false; | ||||||
| 		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other)) | 			foreach(s, sl){ | ||||||
|                         printf("\nWarning: libtorrent-rasterbar v%s was detected.\nAlthough it will compile and run, you will be missing some features. Please consider updating to v%s.\n", version.toLocal8Bit().data(), adv_ver.toUtf8().data()); | 				if(conf->checkHeader(s, "libtorrent/lsd.hpp")){ | ||||||
| 		else | 					found = true; | ||||||
| 			conf->addDefine("LIBTORRENT_0_15"); | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if(!found) { | ||||||
|  | 				return false; | ||||||
|  |           		} | ||||||
|  | 		} | ||||||
|  | 		conf->addIncludePath(s); | ||||||
|  | 		conf->addIncludePath(s+QDir::separator()+"libtorrent"); | ||||||
|  |  | ||||||
|  | 		s = conf->getenv("QC_WITH_LIBTORRENT_STATIC_LIB"); | ||||||
|  | 		if(!s.isEmpty() && QFile::exists(s) && s.endsWith(".a")){ | ||||||
|  | 			conf->addLib(s); | ||||||
|  | 			return true; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		s = conf->getenv("QC_WITH_LIBTORRENT_LIB"); | ||||||
|  | 		if(!s.isEmpty()) { | ||||||
|  |       			if(!conf->checkLibrary(s, "torrent-rasterbar")) { | ||||||
|  | 			        return false; | ||||||
|  | 			} | ||||||
|  |       			conf->addLib(QString("-L") + s); | ||||||
|  | 		}else{ | ||||||
|  | 			QStringList sl; | ||||||
|  | 			sl << "/usr/lib/"; | ||||||
|  | 			sl << "/usr/lib64/"; | ||||||
|  | 			sl << "/usr/local/lib/"; | ||||||
|  | 			sl << "/usr/local/lib64/"; | ||||||
|  | 			bool found = false; | ||||||
|  | 			foreach(s, sl){ | ||||||
|  | 				if(conf->checkLibrary(s, "torrent-rasterbar")){ | ||||||
|  | 					found = true; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if(!found) return false; | ||||||
|  | 			conf->addLib(QString("-L") + s); | ||||||
|  | 		} | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										71
									
								
								qcm/libzzip.qcm
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,71 @@ | |||||||
|  | /* | ||||||
|  | -----BEGIN QCMOD----- | ||||||
|  | name: libzzip | ||||||
|  | arg: with-libzzip-inc=[path], Path to libzzip++ include files | ||||||
|  | arg: with-libzzip-lib=[path], Path to libzzip++ library files | ||||||
|  | -----END QCMOD----- | ||||||
|  | */ | ||||||
|  | #include <QProcess> | ||||||
|  | class qc_libzzip : public ConfObj | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	qc_libzzip(Conf *c) : ConfObj(c) {} | ||||||
|  | 	QString name() const { return "Zzip library (libzzip)"; } | ||||||
|  | 	QString shortname() const { return "libzzip"; } | ||||||
|  | 	QString checkString() const { | ||||||
|  | 		if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty()) | ||||||
|  | 			return ""; | ||||||
|  | 		return ConfObj::checkString(); | ||||||
|  | 	} | ||||||
|  | 	bool exec(){ | ||||||
|  | 		if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty()) | ||||||
|  | 			return false; | ||||||
|  | 		QString s; | ||||||
|  | 		s = conf->getenv("QC_WITH_LIBZZIP_INC"); | ||||||
|  | 		if(!s.isEmpty()) { | ||||||
|  | 			if(!conf->checkHeader(s, "zzip/zzip.h")) { | ||||||
|  | 				return false; | ||||||
|  |     			} | ||||||
|  | 		}else{ | ||||||
|  | 			QStringList sl; | ||||||
|  | 			sl << "/usr/include"; | ||||||
|  | 			sl << "/usr/local/include"; | ||||||
|  | 			bool found = false; | ||||||
|  | 			foreach(s, sl){ | ||||||
|  | 				if(conf->checkHeader(s, "zzip/zzip.h")){ | ||||||
|  | 					found = true; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if(!found) | ||||||
|  | 				return false; | ||||||
|  | 		} | ||||||
|  | 		conf->addIncludePath(s); | ||||||
|  |  | ||||||
|  | 		s = conf->getenv("QC_WITH_LIBZZIP_LIB"); | ||||||
|  | 		if(!s.isEmpty()) { | ||||||
|  | 			if(!QFile::exists(s+QString("/libzzip.so"))){ | ||||||
|  |                           return false; | ||||||
|  |                         } | ||||||
|  | 		}else{ | ||||||
|  | 			QStringList sl; | ||||||
|  | 			sl << "/usr/lib/"; | ||||||
|  | 			sl << "/usr/lib64/"; | ||||||
|  | 			sl << "/usr/local/lib/"; | ||||||
|  | 			sl << "/usr/local/lib64/"; | ||||||
|  | 			bool found = false; | ||||||
|  | 			foreach(s, sl){ | ||||||
|  | 				if(QFile::exists(s+QString("libzzip.so"))){ | ||||||
|  | 					found = true; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if(!found) | ||||||
|  |                          	return false; | ||||||
|  | 		} | ||||||
|  | 		conf->addLib(QString("-L") + s); | ||||||
|  | 		conf->addLib("-lzzip"); | ||||||
|  | 		conf->addDefine("HAVE_ZZIP"); | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | }; | ||||||
							
								
								
									
										14
									
								
								qcm/qt4.qcm
									
									
									
									
									
								
							
							
						
						| @@ -1,20 +1,20 @@ | |||||||
| /* | /* | ||||||
| -----BEGIN QCMOD----- | -----BEGIN QCMOD----- | ||||||
| name: Qt >= 4.4 | name: Qt >= 4.3 | ||||||
| -----END QCMOD----- | -----END QCMOD----- | ||||||
| */ | */ | ||||||
| class qc_qt4 : public ConfObj | class qc_qt4 : public ConfObj | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 	qc_qt4(Conf *c) : ConfObj(c) {} | 	qc_qt4(Conf *c) : ConfObj(c) {} | ||||||
| 	QString name() const { return "Qt >= 4.4"; } | 	QString name() const { return "Qt >= 4.3"; } | ||||||
| 	QString shortname() const { return "Qt 4.4"; } | 	QString shortname() const { return "Qt 4.3"; } | ||||||
| 	bool exec() | 	bool exec() | ||||||
| 	{ | 	{ | ||||||
| 		if(QT_VERSION >= 0x040500) { | 		if(QT_VERSION >= 0x040400) { | ||||||
|                         conf->addDefine("QT_4_5"); | 			conf->addDefine("QT_4_4"); | ||||||
|                 } | 		} | ||||||
| 		return(QT_VERSION >= 0x040400); | 		return(QT_VERSION >= 0x040300); | ||||||
| 		 | 		 | ||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										103
									
								
								src/DLListDelegate.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,103 @@ | |||||||
|  | /* | ||||||
|  |  * Bittorrent Client using Qt4 and libtorrent. | ||||||
|  |  * Copyright (C) 2006  Christophe Dumez | ||||||
|  |  * | ||||||
|  |  * This program is free software; you can redistribute it and/or | ||||||
|  |  * modify it under the terms of the GNU General Public License | ||||||
|  |  * as published by the Free Software Foundation; either version 2 | ||||||
|  |  * of the License, or (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program; if not, write to the Free Software | ||||||
|  |  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||||
|  |  * | ||||||
|  |  * Contact : chris@qbittorrent.org | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #ifndef DLLISTDELEGATE_H | ||||||
|  | #define DLLISTDELEGATE_H | ||||||
|  |  | ||||||
|  | #include <QItemDelegate> | ||||||
|  | #include <QModelIndex> | ||||||
|  | #include <QPainter> | ||||||
|  | #include <QStyleOptionProgressBarV2> | ||||||
|  | #include <QStyleOptionViewItemV2> | ||||||
|  | #include <QProgressBar> | ||||||
|  | #include <QApplication> | ||||||
|  | #include "misc.h" | ||||||
|  |  | ||||||
|  | // Defines for download list list columns | ||||||
|  | #define NAME 0 | ||||||
|  | #define SIZE 1 | ||||||
|  | #define PROGRESS 2 | ||||||
|  | #define DLSPEED 3 | ||||||
|  | #define UPSPEED 4 | ||||||
|  | #define SEEDSLEECH 5 | ||||||
|  | #define RATIO 6 | ||||||
|  | #define ETA 7 | ||||||
|  | #define HASH 8 | ||||||
|  |  | ||||||
|  | class DLListDelegate: public QItemDelegate { | ||||||
|  |   Q_OBJECT | ||||||
|  |  | ||||||
|  |   public: | ||||||
|  |     DLListDelegate(QObject *parent) : QItemDelegate(parent){} | ||||||
|  |  | ||||||
|  |     ~DLListDelegate(){} | ||||||
|  |  | ||||||
|  |     void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const{ | ||||||
|  |       QStyleOptionViewItemV2 opt = QItemDelegate::setOptions(index, option); | ||||||
|  |       switch(index.column()){ | ||||||
|  |         case SIZE: | ||||||
|  |           QItemDelegate::drawBackground(painter, opt, index); | ||||||
|  |           QItemDelegate::drawDisplay(painter, opt, option.rect, misc::friendlyUnit(index.data().toLongLong())); | ||||||
|  |           break; | ||||||
|  |         case ETA: | ||||||
|  |           QItemDelegate::drawBackground(painter, opt, index); | ||||||
|  |           QItemDelegate::drawDisplay(painter, opt, option.rect, misc::userFriendlyDuration(index.data().toLongLong())); | ||||||
|  |           break; | ||||||
|  |         case UPSPEED: | ||||||
|  |         case DLSPEED:{ | ||||||
|  |           QItemDelegate::drawBackground(painter, opt, index); | ||||||
|  |           double speed = index.data().toDouble(); | ||||||
|  |           QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(speed/1024., 'f', 1))+QString::fromUtf8(" ")+tr("KiB/s")); | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |         case RATIO:{ | ||||||
|  |           QItemDelegate::drawBackground(painter, opt, index); | ||||||
|  |           double ratio = index.data().toDouble(); | ||||||
|  |           QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(ratio, 'f', 1))); | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |         case PROGRESS:{ | ||||||
|  |           QStyleOptionProgressBarV2 newopt; | ||||||
|  |           double progress = index.data().toDouble()*100.; | ||||||
|  |           newopt.rect = opt.rect; | ||||||
|  |           newopt.text = QString(QByteArray::number(progress, 'f', 1))+QString::fromUtf8("%"); | ||||||
|  |           newopt.progress = (int)progress; | ||||||
|  |           newopt.maximum = 100; | ||||||
|  |           newopt.minimum = 0; | ||||||
|  |           newopt.state |= QStyle::State_Enabled; | ||||||
|  |           newopt.textVisible = true; | ||||||
|  |           QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt, | ||||||
|  |           painter); | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |         default: | ||||||
|  |           QItemDelegate::paint(painter, option, index); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const { | ||||||
|  |       // No editor here | ||||||
|  |       return 0; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | #endif | ||||||
							
								
								
									
										81
									
								
								src/FinishedListDelegate.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,81 @@ | |||||||
|  | /* | ||||||
|  |  * Bittorrent Client using Qt4 and libtorrent. | ||||||
|  |  * Copyright (C) 2006  Christophe Dumez | ||||||
|  |  * | ||||||
|  |  * This program is free software; you can redistribute it and/or | ||||||
|  |  * modify it under the terms of the GNU General Public License | ||||||
|  |  * as published by the Free Software Foundation; either version 2 | ||||||
|  |  * of the License, or (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program; if not, write to the Free Software | ||||||
|  |  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||||
|  |  * | ||||||
|  |  * Contact : chris@qbittorrent.org | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #ifndef FINISHEDLISTDELEGATE_H | ||||||
|  | #define FINISHEDLISTDELEGATE_H | ||||||
|  |  | ||||||
|  | #include <QItemDelegate> | ||||||
|  | #include <QModelIndex> | ||||||
|  | #include <QPainter> | ||||||
|  | #include <QStyleOptionProgressBarV2> | ||||||
|  | #include <QStyleOptionViewItemV2> | ||||||
|  | #include <QProgressBar> | ||||||
|  | #include <QApplication> | ||||||
|  | #include "misc.h" | ||||||
|  |  | ||||||
|  | // Defines for download list list columns | ||||||
|  | #define F_NAME 0 | ||||||
|  | #define F_SIZE 1 | ||||||
|  | #define F_UPSPEED 2 | ||||||
|  | #define F_LEECH 3 | ||||||
|  | #define F_RATIO 4 | ||||||
|  | #define F_HASH 5 | ||||||
|  |  | ||||||
|  | class FinishedListDelegate: public QItemDelegate { | ||||||
|  |   Q_OBJECT | ||||||
|  |  | ||||||
|  |   public: | ||||||
|  |     FinishedListDelegate(QObject *parent) : QItemDelegate(parent){} | ||||||
|  |  | ||||||
|  |     ~FinishedListDelegate(){} | ||||||
|  |  | ||||||
|  |     void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const{ | ||||||
|  |       QStyleOptionViewItemV2 opt = QItemDelegate::setOptions(index, option); | ||||||
|  |       switch(index.column()){ | ||||||
|  |         case F_SIZE: | ||||||
|  |           QItemDelegate::drawBackground(painter, opt, index); | ||||||
|  |           QItemDelegate::drawDisplay(painter, opt, option.rect, misc::friendlyUnit(index.data().toLongLong())); | ||||||
|  |           break; | ||||||
|  |         case F_UPSPEED:{ | ||||||
|  |           QItemDelegate::drawBackground(painter, opt, index); | ||||||
|  |           double speed = index.data().toDouble(); | ||||||
|  |           QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(speed/1024., 'f', 1))+QString::fromUtf8(" ")+tr("KiB/s")); | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |         case F_RATIO:{ | ||||||
|  |           QItemDelegate::drawBackground(painter, opt, index); | ||||||
|  |           double ratio = index.data().toDouble(); | ||||||
|  |           QItemDelegate::drawDisplay(painter, opt, opt.rect, QString(QByteArray::number(ratio, 'f', 1))); | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |         default: | ||||||
|  |           QItemDelegate::paint(painter, option, index); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const { | ||||||
|  |       // No editor here | ||||||
|  |       return 0; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | #endif | ||||||
							
								
								
									
										602
									
								
								src/FinishedTorrents.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										92
									
								
								src/FinishedTorrents.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,92 @@ | |||||||
|  | /* | ||||||
|  |  * Bittorrent Client using Qt4 and libtorrent. | ||||||
|  |  * Copyright (C) 2006  Christophe Dumez | ||||||
|  |  * | ||||||
|  |  * This program is free software; you can redistribute it and/or | ||||||
|  |  * modify it under the terms of the GNU General Public License | ||||||
|  |  * as published by the Free Software Foundation; either version 2 | ||||||
|  |  * of the License, or (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program; if not, write to the Free Software | ||||||
|  |  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||||
|  |  * | ||||||
|  |  * Contact : chris@qbittorrent.org | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #ifndef SEEDING_H | ||||||
|  | #define SEEDING_H | ||||||
|  |  | ||||||
|  | #include "ui_seeding.h" | ||||||
|  | #include "qtorrenthandle.h" | ||||||
|  |  | ||||||
|  | class QStandardItemModel; | ||||||
|  | class bittorrent; | ||||||
|  | class FinishedListDelegate; | ||||||
|  |  | ||||||
|  | using namespace libtorrent; | ||||||
|  |  | ||||||
|  | class FinishedTorrents : public QWidget, public Ui::seeding { | ||||||
|  |   Q_OBJECT | ||||||
|  |   private: | ||||||
|  |     QObject *parent; | ||||||
|  |     bittorrent *BTSession; | ||||||
|  |     FinishedListDelegate *finishedListDelegate; | ||||||
|  |     QStandardItemModel *finishedListModel; | ||||||
|  |     unsigned int nbFinished; | ||||||
|  |     void hideOrShowColumn(int index); | ||||||
|  |     bool loadHiddenColumns(); | ||||||
|  |     void saveHiddenColumns(); | ||||||
|  |     QAction* getActionHoSCol(int index); | ||||||
|  |  | ||||||
|  |   public: | ||||||
|  |     FinishedTorrents(QObject *parent, bittorrent *BTSession); | ||||||
|  |     ~FinishedTorrents(); | ||||||
|  |     // Methods | ||||||
|  |     bool loadColWidthFinishedList(); | ||||||
|  |     int getRowFromHash(QString hash) const; | ||||||
|  |     QStringList getSelectedTorrents(bool only_one=false) const; | ||||||
|  |     unsigned int getNbTorrentsInList() const; | ||||||
|  |     QString getHashFromRow(unsigned int row) const; | ||||||
|  |  | ||||||
|  |   protected slots: | ||||||
|  |     void showProperties(const QModelIndex &index); | ||||||
|  |     void displayFinishedListMenu(const QPoint&); | ||||||
|  |     void displayFinishedHoSMenu(const QPoint&); | ||||||
|  |     void setRowColor(int row, QString color); | ||||||
|  |     void saveColWidthFinishedList() const; | ||||||
|  |     void sortFinishedList(int index); | ||||||
|  |     void sortFinishedListFloat(int index, Qt::SortOrder sortOrder); | ||||||
|  |     void sortFinishedListString(int index, Qt::SortOrder sortOrder); | ||||||
|  |     void updateFileSize(QString hash); | ||||||
|  |     void torrentAdded(QString path, QTorrentHandle& h, bool fastResume); | ||||||
|  |     void on_actionSet_upload_limit_triggered(); | ||||||
|  |     void notifyTorrentDoubleClicked(const QModelIndex& index); | ||||||
|  |     void hideOrShowColumnName(); | ||||||
|  |     void hideOrShowColumnSize(); | ||||||
|  |     void hideOrShowColumnUpSpeed(); | ||||||
|  |     void hideOrShowColumnLeechers(); | ||||||
|  |     void hideOrShowColumnRatio(); | ||||||
|  |  | ||||||
|  |   public slots: | ||||||
|  |     void addTorrent(QString hash); | ||||||
|  |     void updateFinishedList(); | ||||||
|  |     void pauseTorrent(QString hash); | ||||||
|  |     void resumeTorrent(QString hash); | ||||||
|  |     void propertiesSelection(); | ||||||
|  |     void deleteTorrent(QString hash); | ||||||
|  |     void showPropertiesFromHash(QString hash); | ||||||
|  |  | ||||||
|  |   signals: | ||||||
|  |     void torrentMovedFromFinishedList(QString); | ||||||
|  |     void torrentDoubleClicked(QString hash, bool finished); | ||||||
|  |     void finishedTorrentsNumberChanged(unsigned int); | ||||||
|  |  | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | #endif | ||||||
							
								
								
									
										1369
									
								
								src/GUI.cpp
									
									
									
									
									
								
							
							
						
						
							
								
								
									
										120
									
								
								src/GUI.h
									
									
									
									
									
								
							
							
						
						| @@ -16,15 +16,6 @@ | |||||||
|  * along with this program; if not, write to the Free Software |  * along with this program; if not, write to the Free Software | ||||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. |  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||||
|  * |  * | ||||||
|  * In addition, as a special exception, the copyright holders give permission to |  | ||||||
|  * link this program with the OpenSSL project's "OpenSSL" library (or with |  | ||||||
|  * modified versions of it that use the same license as the "OpenSSL" library), |  | ||||||
|  * and distribute the linked executables. You must obey the GNU General Public |  | ||||||
|  * License in all respects for all of the code used other than "OpenSSL".  If you |  | ||||||
|  * modify file(s), you may extend this exception to your version of the file(s), |  | ||||||
|  * but you are not obligated to do so. If you do not wish to do so, delete this |  | ||||||
|  * exception statement from your version. |  | ||||||
|  * |  | ||||||
|  * Contact : chris@qbittorrent.org |  * Contact : chris@qbittorrent.org | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| @@ -33,65 +24,77 @@ | |||||||
|  |  | ||||||
| #include <QProcess> | #include <QProcess> | ||||||
| #include <QSystemTrayIcon> | #include <QSystemTrayIcon> | ||||||
| #include <QPointer> |  | ||||||
| #include "ui_mainwindow.h" | #include "ui_MainWindow.h" | ||||||
| #include "qtorrenthandle.h" | #include "qtorrenthandle.h" | ||||||
|  |  | ||||||
| enum TabIndex{TAB_TRANSFER, TAB_SEARCH, TAB_RSS}; | class bittorrent; | ||||||
|  | class createtorrent; | ||||||
| class Bittorrent; |  | ||||||
| class QTimer; | class QTimer; | ||||||
|  | class DownloadingTorrents; | ||||||
|  | class FinishedTorrents; | ||||||
| class downloadFromURL; | class downloadFromURL; | ||||||
| class SearchEngine; | class SearchEngine; | ||||||
| class QLocalServer; | #ifdef QT_4_4 | ||||||
|  |   class QLocalServer; | ||||||
|  |   class QLocalSocket; | ||||||
|  | #else | ||||||
|  |   class QTcpServer; | ||||||
|  |   class QTcpSocket; | ||||||
|  | #endif | ||||||
| class QCloseEvent; | class QCloseEvent; | ||||||
| class RSSImp; | class RSSImp; | ||||||
| class QShortcut; | class QShortcut; | ||||||
| class about; | class about; | ||||||
|  | class previewSelect; | ||||||
| class options_imp; | class options_imp; | ||||||
| class QTabWidget; | class QTabWidget; | ||||||
| class TransferListWidget; | class QLabel; | ||||||
| class TransferListFiltersWidget; | class QModelIndex; | ||||||
| class QSplitter; | class HttpServer; | ||||||
| class PropertiesWidget; |  | ||||||
| class StatusBar; |  | ||||||
|  |  | ||||||
| class GUI : public QMainWindow, private Ui::MainWindow{ | class GUI : public QMainWindow, private Ui::MainWindow{ | ||||||
|   Q_OBJECT |   Q_OBJECT | ||||||
|  |  | ||||||
|   private: |   private: | ||||||
|     // Bittorrent |     // Bittorrent | ||||||
|     Bittorrent *BTSession; |     bittorrent *BTSession; | ||||||
|     QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; // Still needed? |     QTimer *checkConnect; | ||||||
|  |     QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; | ||||||
|     // GUI related |     // GUI related | ||||||
|     QTimer *guiUpdater; |  | ||||||
|     QTabWidget *tabs; |     QTabWidget *tabs; | ||||||
|     StatusBar *status_bar; |     options_imp *options; | ||||||
|     QPointer<options_imp> options; |     QSystemTrayIcon *myTrayIcon; | ||||||
|     QPointer<QSystemTrayIcon> systrayIcon; |     QTimer *systrayCreator; | ||||||
|     QPointer<QTimer> systrayCreator; |  | ||||||
|     QMenu *myTrayIconMenu; |     QMenu *myTrayIconMenu; | ||||||
|     TransferListWidget *transferList; |     DownloadingTorrents *downloadingTorrentTab; | ||||||
|     TransferListFiltersWidget *transferListFilters; |     FinishedTorrents *finishedTorrentTab; | ||||||
|     PropertiesWidget *properties; |     QLabel *connecStatusLblIcon; | ||||||
|  |     bool systrayIntegration; | ||||||
|     bool displaySpeedInTitle; |     bool displaySpeedInTitle; | ||||||
|     bool force_exit; |     bool force_exit; | ||||||
|  |     unsigned int refreshInterval; | ||||||
|  |     QTimer *refresher; | ||||||
|     // Keyboard shortcuts |     // Keyboard shortcuts | ||||||
|     QShortcut *switchSearchShortcut; |     QShortcut *switchSearchShortcut; | ||||||
|     QShortcut *switchSearchShortcut2; |     QShortcut *switchSearchShortcut2; | ||||||
|     QShortcut *switchTransferShortcut; |     QShortcut *switchDownShortcut; | ||||||
|  |     QShortcut *switchUpShortcut; | ||||||
|     QShortcut *switchRSSShortcut; |     QShortcut *switchRSSShortcut; | ||||||
|     // Widgets |  | ||||||
|     QAction *prioSeparator; |  | ||||||
|     QAction *prioSeparator2; |  | ||||||
|     QSplitter *hSplitter; |  | ||||||
|     QSplitter *vSplitter; |  | ||||||
|     // Search |     // Search | ||||||
|     SearchEngine *searchEngine; |     SearchEngine *searchEngine; | ||||||
|     // RSS |     // RSS | ||||||
|     QPointer<RSSImp> rssWidget; |     RSSImp *rssWidget; | ||||||
|  |     // Web UI | ||||||
|  |     HttpServer *httpServer; | ||||||
|     // Misc |     // Misc | ||||||
|  | #ifdef QT_4_4 | ||||||
|     QLocalServer *localServer; |     QLocalServer *localServer; | ||||||
|  |     QLocalSocket *clientConnection; | ||||||
|  | #else | ||||||
|  |     QTcpServer *localServer; | ||||||
|  |     QTcpSocket *clientConnection; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|   protected slots: |   protected slots: | ||||||
|     // GUI related slots |     // GUI related slots | ||||||
| @@ -102,39 +105,58 @@ class GUI : public QMainWindow, private Ui::MainWindow{ | |||||||
|     void on_actionCreate_torrent_triggered(); |     void on_actionCreate_torrent_triggered(); | ||||||
|     void on_actionWebsite_triggered() const; |     void on_actionWebsite_triggered() const; | ||||||
|     void on_actionBugReport_triggered() const; |     void on_actionBugReport_triggered() const; | ||||||
|     void on_actionShow_console_triggered(); |  | ||||||
|     void readParamsOnSocket(); |     void readParamsOnSocket(); | ||||||
|     void acceptConnection(); |     void acceptConnection(); | ||||||
|  |     void togglePausedState(QString hash); | ||||||
|  |     void torrentDoubleClicked(QString hash, bool finished); | ||||||
|  |     void on_actionPreview_file_triggered(); | ||||||
|  |     void previewFile(QString filePath); | ||||||
|     void balloonClicked(); |     void balloonClicked(); | ||||||
|     void writeSettings(); |     void writeSettings(); | ||||||
|     void readSettings(); |     void readSettings(); | ||||||
|     void on_actionExit_triggered(); |     void on_actionExit_triggered(); | ||||||
|     void createTrayIcon(); |     void createTrayIcon(); | ||||||
|     void fullDiskError(QTorrentHandle& h, QString msg) const; |     void updateUnfinishedTorrentNumber(unsigned int nb); | ||||||
|  |     void updateFinishedTorrentNumber(unsigned int nb); | ||||||
|  |     void fullDiskError(QTorrentHandle& h) const; | ||||||
|     void handleDownloadFromUrlFailure(QString, QString) const; |     void handleDownloadFromUrlFailure(QString, QString) const; | ||||||
|     void createSystrayDelayed(); |     void createSystrayDelayed(); | ||||||
|     void tab_changed(int); |  | ||||||
|     // Keyboard shortcuts |     // Keyboard shortcuts | ||||||
|     void createKeyboardShortcuts(); |     void createKeyboardShortcuts(); | ||||||
|     void displayTransferTab() const; |     void displayDownTab() const; | ||||||
|  |     void displayUpTab() const; | ||||||
|     void displaySearchTab() const; |     void displaySearchTab() const; | ||||||
|     void displayRSSTab() const; |     void displayRSSTab() const; | ||||||
|     // Torrent actions |     // Torrent actions | ||||||
|  |     void on_actionTorrent_Properties_triggered(); | ||||||
|  |     void on_actionPause_triggered(); | ||||||
|  |     void on_actionPause_All_triggered(); | ||||||
|  |     void on_actionStart_triggered(); | ||||||
|  |     void on_actionStart_All_triggered(); | ||||||
|  |     void on_actionOpen_triggered(); | ||||||
|  |     void on_actionDelete_Permanently_triggered(); | ||||||
|  |     void on_actionDelete_triggered(); | ||||||
|     void on_actionSet_global_upload_limit_triggered(); |     void on_actionSet_global_upload_limit_triggered(); | ||||||
|     void on_actionSet_global_download_limit_triggered(); |     void on_actionSet_global_download_limit_triggered(); | ||||||
|     void on_actionDocumentation_triggered() const; |     void on_actionDocumentation_triggered() const; | ||||||
|     void on_actionOpen_triggered(); |     void checkConnectionStatus(); | ||||||
|     void updateGUI(); |     void configureSession(bool deleteOptions); | ||||||
|     void loadPreferences(bool configure_session=true); |  | ||||||
|     void processParams(const QStringList& params); |     void processParams(const QStringList& params); | ||||||
|     void addTorrent(QString path); |     void addTorrent(QString path); | ||||||
|     void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker); |     void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker); | ||||||
|  |     void processScannedFiles(const QStringList& params); | ||||||
|     void processDownloadedFiles(QString path, QString url); |     void processDownloadedFiles(QString path, QString url); | ||||||
|     void downloadFromURLList(const QStringList& urls); |     void downloadFromURLList(const QStringList& urls); | ||||||
|  |     void deleteTorrent(QString hash); | ||||||
|  |     void deleteRatioTorrent(QString fileName); | ||||||
|     void finishedTorrent(QTorrentHandle& h) const; |     void finishedTorrent(QTorrentHandle& h) const; | ||||||
|  |     void torrentChecked(QString hash) const; | ||||||
|  |     void updateLists(); | ||||||
|  |     bool initWebUi(QString username, QString password, int port); | ||||||
|  |     void pauseTorrent(QString hash); | ||||||
|     // Options slots |     // Options slots | ||||||
|     void on_actionOptions_triggered(); |     void on_actionOptions_triggered(); | ||||||
|     void optionsSaved(); |     void OptionsSaved(QString info, bool deleteOptions); | ||||||
|     // HTTP slots |     // HTTP slots | ||||||
|     void on_actionDownload_from_URL_triggered(); |     void on_actionDownload_from_URL_triggered(); | ||||||
|  |  | ||||||
| @@ -142,13 +164,13 @@ class GUI : public QMainWindow, private Ui::MainWindow{ | |||||||
|   public slots: |   public slots: | ||||||
|     void trackerAuthenticationRequired(QTorrentHandle& h); |     void trackerAuthenticationRequired(QTorrentHandle& h); | ||||||
|     void setTabText(int index, QString text) const; |     void setTabText(int index, QString text) const; | ||||||
|     void showNotificationBaloon(QString title, QString msg) const; |     void openDestinationFolder() const; | ||||||
|  |     void goBuyPage() const; | ||||||
|  |     void updateRatio(); | ||||||
|  |  | ||||||
|   protected: |   protected: | ||||||
|     void closeEvent(QCloseEvent *); |     void closeEvent(QCloseEvent *); | ||||||
|     void showEvent(QShowEvent *); |     void hideEvent(QHideEvent *); | ||||||
|     bool event(QEvent * event); |  | ||||||
|     void displayRSSTab(bool enable); |  | ||||||
|  |  | ||||||
|   public: |   public: | ||||||
|     // Construct / Destruct |     // Construct / Destruct | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								src/Icons/add_file.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1005 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/add_folder.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/bt_settings.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/button_cancel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/button_ok.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/configure.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/connection.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 820 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/description.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 821 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/download.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.2 KiB | 
| Before Width: | Height: | Size: 575 B After Width: | Height: | Size: 575 B |