Compare commits
	
		
			46 Commits
		
	
	
		
			release-2.
			...
			release-1.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | d5b790d240 | ||
|   | 940a8b28e4 | ||
|   | 9ee9c7d362 | ||
|   | 2899494ef3 | ||
|   | 624e2b287a | ||
|   | 681d538163 | ||
|   | 60f1a1989c | ||
|   | 050dc9de44 | ||
|   | d80f94643f | ||
|   | 1b4bb7655f | ||
|   | e8ffaa2f87 | ||
|   | a89188acc3 | ||
|   | 993002a151 | ||
|   | 8bcaf55439 | ||
|   | 48aac758c9 | ||
|   | 4ba2c3d385 | ||
|   | d96e21c07f | ||
|   | 1204cebaa1 | ||
|   | 1695e85bdf | ||
|   | 33305cca9f | ||
|   | 04b683c38c | ||
|   | d55cd9aec8 | ||
|   | 0b5652bd72 | ||
|   | 878787e965 | ||
|   | 3536577af6 | ||
|   | 9f2d9e4d3f | ||
|   | efe0dbabaa | ||
|   | b1d8fb0f11 | ||
|   | 78fc5d4865 | ||
|   | 19996736d6 | ||
|   | 6f9d22af03 | ||
|   | 6b6d05a380 | ||
|   | df92e3e5e9 | ||
|   | 26b6c26ea8 | ||
|   | 1b6183bfa3 | ||
|   | 7edbaa3847 | ||
|   | 2ee152a374 | ||
|   | bc8ac43a54 | ||
|   | 5f48a51070 | ||
|   | c3a6b24ed1 | ||
|   | c3b22c9a01 | ||
|   | 5d09ace7eb | ||
|   | fe37724338 | ||
|   | 8aaacbe38d | ||
|   | edc625c9c9 | ||
|   | 6ae21c2919 | 
							
								
								
									
										2
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						| @@ -1,5 +1,5 @@ | |||||||
| Author: | Author: | ||||||
| * Christophe Dumez <chris@qbittorrent.org> | * Christophe Dumez <chris@qbittorrent.org> | ||||||
|  |  | ||||||
| Other developers: | Contributors: | ||||||
| * Arnaud Demaizière <arnaud@qbittorrent.org> | * Arnaud Demaizière <arnaud@qbittorrent.org> | ||||||
|   | |||||||
							
								
								
									
										24
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						| @@ -5,6 +5,8 @@ | |||||||
|     - FEATURE: Bittorrent FAST extension support |     - FEATURE: Bittorrent FAST extension support | ||||||
|     - FEATURE: Added RSS support |     - FEATURE: Added RSS support | ||||||
|     - FEATURE: Support files prioritizing in a torrent |     - FEATURE: Support files prioritizing in a torrent | ||||||
|  |     - FEATURE: Brand new search engine plugins system | ||||||
|  |     - FEATURE: Filtered files don't appear on hard disk anymore | ||||||
|     - FEATURE: Finished torrents are now moved to another tab for seeding |     - FEATURE: Finished torrents are now moved to another tab for seeding | ||||||
|     - FEATURE: Display more infos about the torrent in its properties |     - FEATURE: Display more infos about the torrent in its properties | ||||||
|     - FEATURE: Allow the user to edit torrents' trackers |     - FEATURE: Allow the user to edit torrents' trackers | ||||||
| @@ -30,11 +32,22 @@ | |||||||
|     - FEATURE: User is now warned when fast resume data was rejected |     - FEATURE: User is now warned when fast resume data was rejected | ||||||
|     - FEATURE: Url seeds are now displayed in torrent properties and are editable |     - FEATURE: Url seeds are now displayed in torrent properties and are editable | ||||||
|     - FEATURE: Allow to drag 'n drop urls on the main window |     - FEATURE: Allow to drag 'n drop urls on the main window | ||||||
|  |     - FEATURE: Improved search engine (multipage support in all plugins) | ||||||
|  |     - FEATURE: Added BTJunkie search engine plugin | ||||||
|  |     - FEATURE: Added an option to force full disk allocation for all torrents | ||||||
|  |     - FEATURE: Added an option to add torrents in paused state | ||||||
|  |     - FEATURE: Added an option to set the max number of connections per torrent | ||||||
|  |     - FEATURE: Added an option to set the max number of uploads per torrent | ||||||
|  |     - FEATURE: Added an option to automatically delete torrents when they reach a given ratio (>= 1.0) | ||||||
|  |     - FEATURE: Added an option to display current transfer speeds in title bar | ||||||
|  |     - FEATURE: Torrent content is now displayed as a tree | ||||||
|  |     - FEATURE: Better media file preview (player detected automatically) | ||||||
|  |     - FEATURE: Greatly improved ETA calculation algorithm (use GASA) | ||||||
|     - I18N: Added Hungarian translation |     - I18N: Added Hungarian translation | ||||||
|     - I18N: Added Brazilian translation |     - I18N: Added Brazilian translation | ||||||
|     - BUGFIX: Progress of paused torrents is now correct on restart |     - BUGFIX: Progress of paused torrents is now correct on restart | ||||||
|  |     - BUGFIX: clear the results of a search stops searching | ||||||
|     - BUGFIX: Progress column gets sorted on restart it is was during last execution |     - BUGFIX: Progress column gets sorted on restart it is was during last execution | ||||||
|     - BUGFIX: Made ETA more reliable using stats instead of instant values |  | ||||||
|     - BUGFIX: Remove torrent from hard drive used to delete parent folder if empty |     - BUGFIX: Remove torrent from hard drive used to delete parent folder if empty | ||||||
|     - BUGFIX: Fixed a crash when filtering all the files in a torrent |     - BUGFIX: Fixed a crash when filtering all the files in a torrent | ||||||
|     - BUGFIX: Reload torrent only when necessary (properties) |     - BUGFIX: Reload torrent only when necessary (properties) | ||||||
| @@ -52,11 +65,18 @@ | |||||||
|     - BUGFIX: Made torrent deletion from hard-drive safer |     - BUGFIX: Made torrent deletion from hard-drive safer | ||||||
|     - BUGFIX: Prevent downloadFromUrl flooding |     - BUGFIX: Prevent downloadFromUrl flooding | ||||||
|     - BUGFIX: ETA was wrong for torrents with filtered files |     - BUGFIX: ETA was wrong for torrents with filtered files | ||||||
|  |     - BUGFIX: Fixed drag'n drop on non-KDE systems | ||||||
|  |     - BUGFIX: Removed build dependency on Python | ||||||
|  |     - BUGFIX: Catching DHT exception in case there is a problem | ||||||
|  |     - BUGFIX: Remember properties window size and position | ||||||
|  |     - BUGFIX: Improved proxy support in search engine (HTTP only) | ||||||
|     - COSMETIC: Redesigned torrent properties a little |     - COSMETIC: Redesigned torrent properties a little | ||||||
|     - COSMETIC: Redesigned options a little |     - COSMETIC: Totally redesigned program preferences | ||||||
|     - COSMETIC: Display more logs messages concerning features |     - COSMETIC: Display more logs messages concerning features | ||||||
|     - COSMETIC: Improved lists renderers |     - COSMETIC: Improved lists renderers | ||||||
|     - COSMETIC: Use a different icon for torrents being checked and for connecting ones |     - COSMETIC: Use a different icon for torrents being checked and for connecting ones | ||||||
|  |     - COSMETIC: Improved some icons | ||||||
|  |     - COSMETIC: Improved systray tooltip style | ||||||
|  |  | ||||||
| * Mon May 07 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.3 | * Mon May 07 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.3 | ||||||
|     - BUGFIX: Fixed pause toggle on double-click in download list |     - BUGFIX: Fixed pause toggle on double-click in download list | ||||||
|   | |||||||
							
								
								
									
										23
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						| @@ -1,4 +1,4 @@ | |||||||
| qBittorrent - A BitTorrent client in C++ / Qt4.2 | qBittorrent - A BitTorrent client in C++ / Qt4 | ||||||
| ------------------------------------------ | ------------------------------------------ | ||||||
|  |  | ||||||
| *** Necessary if qt3 is default on your system *** | *** Necessary if qt3 is default on your system *** | ||||||
| @@ -14,25 +14,30 @@ qbittorrent | |||||||
| will install and execute qBittorrent hopefully without any problems. | will install and execute qBittorrent hopefully without any problems. | ||||||
|  |  | ||||||
| Dependencies: | Dependencies: | ||||||
| - Qt >= 4.2 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) | - Qt >= 4.3.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) | ||||||
|  |  | ||||||
| - libtorrent by Arvid Norberg (>= v0.13 REQUIRED) | - rblibtorrent by Arvid Norberg (>= v0.13 REQUIRED) | ||||||
|  |     -> http://www.qbittorrent.org/download.php (advised) | ||||||
|     -> http://www.libtorrent.net |     -> http://www.libtorrent.net | ||||||
|     Be carefull: another library (the one used by rtorrent) use the same name. |     Be careful: another library (the one used by rTorrent) use the same name. | ||||||
|     These are TWO different libraries and qBittorrent will only work with the one provided |     These are TWO different libraries and qBittorrent will only work with the one provided | ||||||
|     on sourceforge (created by Arvid Norberg). The two libraries conflicts with each other. |     on sourceforge (created by Arvid Norberg). The two libraries conflicts with each other. | ||||||
|  |  | ||||||
| - libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization | - libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization | ||||||
|  |  | ||||||
| - libcommoncpp2 | - libcurl | ||||||
|  |  | ||||||
| - python >= 2.3 (previous might work - not tested): needed by search engine. | - python >= 2.3 (needed by search engine) | ||||||
|  |  | ||||||
| - libmagick++ (advised, not required) | - libmagick++ (advised, not required) | ||||||
|  |   * Needed for favicons support (RSS / Search plugins) | ||||||
|  |  | ||||||
| NOTE FOR GNOME USERS: | - libzzip (advised, not required) | ||||||
| - qt4-qtconfig package is advised when using Plastique style (default) |   * Needed for zip support (Search plugins) | ||||||
|   or just change qBittorrent style to Cleanlooks (GNOME like) |  | ||||||
|  | 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. | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								README
									
									
									
									
									
								
							
							
						
						| @@ -3,30 +3,30 @@ qBittorrent - A BitTorrent client in Qt4 | |||||||
|  |  | ||||||
| Description: | Description: | ||||||
| ******************************** | ******************************** | ||||||
| qBittorrent is a bittorrent client programmed in C++ / Qt4 that use | qBittorrent is a bittorrent client programmed in C++ / Qt4 that uses | ||||||
| libtorrent (sometimes called rb_libtorrent) by Arvid Norberg. | libtorrent (sometimes called rblibtorrent) by Arvid Norberg. | ||||||
|  |  | ||||||
| It aims to be a good alternative to all other bittorrent clients | 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. | support as well as many features. | ||||||
|  |  | ||||||
| Installation: | Installation: | ||||||
| ******************************** | ******************************** | ||||||
| For installation follow the instructions from INSTALL file, but simple | For installation, follow the instructions from INSTALL file, but simple: | ||||||
|  |  | ||||||
| ./configure | ./configure | ||||||
| make && make install | make && make install | ||||||
| qbittorrent | qbittorrent | ||||||
|  |  | ||||||
| will install and execute qBittorrent hopefully without any problems. | 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 | ||||||
|  |  | ||||||
| Please report any bug (or feature requests) to: | Please report any bug (or feature request) to: | ||||||
| http://bugs.qbittorrent.org | http://bugs.qbittorrent.org | ||||||
|  |  | ||||||
| You can also meet me on IRC: | You can also meet me (chris-qBT) on IRC: | ||||||
| #qbittorrent on irc.freenode.net | #qbittorrent on irc.freenode.net | ||||||
|  |  | ||||||
| ------------------------------------------ | ------------------------------------------ | ||||||
|   | |||||||
							
								
								
									
										108
									
								
								TODO
									
									
									
									
									
								
							
							
						
						| @@ -1,98 +1,64 @@ | |||||||
| // Easy | // Easy | ||||||
| - Translations into as many languages as possible | - Translations into as many languages as possible | ||||||
| - Improve man page |  | ||||||
| - Use Launchpad/Rosetta for translations once it supports TS files | - Use Launchpad/Rosetta for translations once it supports TS files | ||||||
|  |  | ||||||
| // Intermediate | // Intermediate | ||||||
| - Port on MacOS, Windows (and create an installer for Windows) - Progressing slowly | - Port on MacOS, Windows (and create an installer for Windows) - Slow progress | ||||||
| - Add some transparency (menus,...), improve look | - Add some transparency (menus,...), improve look / usabilty | ||||||
|  | - Skins support? (contact Mateusz) | ||||||
|  |  | ||||||
| // Harder | // Harder | ||||||
| - Display a progress bar that really displays the pieces we have (like in eMule) | - Torrent scheduler ala µtorrent/Bitcomet | ||||||
|  |  | ||||||
| // Waiting for libtorrent | // Waiting for libtorrent | ||||||
| - File selection in a torrent in compact mode | - Allow to prioritize torrents (may code this in qBittorrent?) | ||||||
| - Allow to prioritize torrents |  | ||||||
|  |  | ||||||
| // Unsure | // Unsure | ||||||
|  | - Display the peers we are connected to for each torrent with infos (like flag, dl/up speeds, ...) | ||||||
| - Azureus spoofing to prevent ban from trackers? | - Azureus spoofing to prevent ban from trackers? | ||||||
| - Option to shutdown computer when downloads are finished | - Option to shutdown computer when downloads are finished | ||||||
| - Add a torrent scheduler | - NAT checker/Tester | ||||||
|  | - Display hard drive space left? | ||||||
| - Make use of dbus on Linux for the single instance instead of socket communication? | - Make use of dbus on Linux for the single instance instead of socket communication? | ||||||
|   (http://techbase.kde.org/Development/Tutorials/D-Bus/Accessing_Interfaces) |   (http://techbase.kde.org/Development/Tutorials/D-Bus/Accessing_Interfaces) | ||||||
| - search engines customizing | - When favicon can't be downloaded, try to parse the webpage for: | ||||||
|  |   <link rel="icon" href="http://example.com/favicon.ico" type="image/vnd.microsoft.icon"> | ||||||
|  |     * Be carefull, the link can be relative | ||||||
|  |  | ||||||
| // in v1.2.0 | // in v1.2.0 | ||||||
| - Allow user to organize the downloads into categories/folders | - Allow user to organize the downloads into categories/folders? | ||||||
|  |  | ||||||
| // in v1.1.0 | // in v1.1.0 | ||||||
| - Tabs support in search | - Tabs support in search | ||||||
| - Allow to hide columns? | - Allow to hide columns? | ||||||
| - Allow to scan multiple directories? (useful?) | - Allow to scan multiple directories? (useful?) | ||||||
| - Web interface (turbogears? php?) | - Web interface (turbogears? php? python?) | ||||||
|  |   * Webserver? Try to write a webserver as a plugin for qBittorrent in Python | ||||||
|  |     * http://fragments.turtlemeat.com/pythonwebserver.php | ||||||
| - improve and test tracker authentication code (remember login/pass) (need a tracker to test this) | - improve and test tracker authentication code (remember login/pass) (need a tracker to test this) | ||||||
| - support zipped torrents? (useful?) | - support zipped torrents? (useful?) | ||||||
| - Add option for RSS customization (refresh interval, max news per RSS...) |  | ||||||
| - Allow to disable UPnP/NAT-PMP/LSD in options? |  | ||||||
| - Allow to automatically delete torrents when they reach a given ratio (in options) : easy |  | ||||||
| - Allow to limit the number of downloading torrents simultaneously (other are paused until a download finishes) | - Allow to limit the number of downloading torrents simultaneously (other are paused until a download finishes) | ||||||
| - Add "Mark all as read" feature for RSS | - Improve search plugin install (choose in a list taken from plugins.qbittorrent.org) | ||||||
| - Allow to customize lists refreshing interval (in options) | - Display the number of DHT node if possible | ||||||
| - Use search engines as plugins (split them, load them dynamically) to allow the user to add some | - When adding a duplicate torrent, check if the trackers are different from the existing one and ask the user if he wants to add them | ||||||
|  | - Display in torrent addition dialog: | ||||||
|  |    * free disk space on selected drive | ||||||
|  |    * free disk space after torrent download (and/or torrent size) | ||||||
|  | - Start minimized option in program preferences | ||||||
|  | - In finished list, replace "Seeds/Leechs" column by "Leechers" because Seeds are always 0. | ||||||
|  | - Allow to change action on double-click | ||||||
|  |   -> in download list | ||||||
|  |   -> in seeding list | ||||||
|  |  | ||||||
| // in v1.0.0 (partial) - WIP | TODO: | ||||||
| - Check storage st creation + hasher in torrent creation | - Check search engine cpu usage | ||||||
| - Fix all (or almost all) opened bugs in bug tracker |  | ||||||
| - update sorting when a new torrent is added? |  | ||||||
| - Keep documention up to date |  | ||||||
| - Windows port (Chris - Peerkoel) |  | ||||||
| - write patches libtorrent for file_priority(int index), actual_size() ? |  | ||||||
| - valgrind --tool=memcheck --leak-check=full src/qbittorrent (Looks ok) |  | ||||||
| - 128m  29m  16m S  4.8  2.9   0:02.28 qbittorrent |  | ||||||
| * beta 6 |  | ||||||
|   - Translations update (IN PROGRESS) |  | ||||||
|   - Wait for some bug fixes in libtorrent : |  | ||||||
|     - Number of seeds non null for finished torrent (Ticket #122) |  | ||||||
|  |  | ||||||
| LANGUAGES UPDATED: | rc9->rc10 changelog: | ||||||
| - French *BETA3* | - FEATURE: Greatly improved ETA calculation algorithm (use GASA) | ||||||
| - English *BETA3* | - BUGFIX: Fixed proxy host max length in preferences | ||||||
| - Japanese *BETA3* | - BUGFIX: Added a 3 minutes search engine timeout | ||||||
| - Swedish *BETA3* | - BUGFIX: Limit search engine plugins to 10 result pages | ||||||
| - Slovak *BETA3* | - BUGFIX: Fixed nbResults != 0 when clearing results while a search is running | ||||||
| - Ukrainian *BETA3* | - BUGFIX: Fixed possible problem when closing to systray and cancelling app exit | ||||||
| - Chinese (simplified) *BETA4* | - BUGFIX: Fixed preview when path contains spaces | ||||||
| - Hungarian *BETA4* | - COSMETIC: Use more skin colors instead of hard coded ones | ||||||
| - Italian *BETA5* |  | ||||||
| - Polish *BETA5* |  | ||||||
| - Portuguese *BETA5* |  | ||||||
| - Brazilian *BETA5* |  | ||||||
| - Spanish *BETA5* |  | ||||||
| - German *BETA5* |  | ||||||
| - Russian *BETA5* |  | ||||||
| - Korean *BETA5* |  | ||||||
| - Greek *BETA6* |  | ||||||
| - Dutch *BETA6* |  | ||||||
| - Romanian *BETA6* |  | ||||||
|  |  | ||||||
| beta5->beta6 changelog: |  | ||||||
| - FEATURE: Split download tab from GUI class and cleaned up code |  | ||||||
| - FEATURE: A lot of code optimization (CPU & memory usage) |  | ||||||
| - FEATURE: Added support for .ico format (useful for RSS favicons) |  | ||||||
| - FEATURE: Replaced Meganova search engine by TorrentReactor |  | ||||||
| - I18N: Updated Greek, Dutch and Romanian translation |  | ||||||
| - I18N: Removed no longer maintained Traditional chinese translation |  | ||||||
| - BUGFIX: Made torrent deletion from hard-drive safer |  | ||||||
| - BUGFIX: Fixed a bug when switching from finished to downloading list |  | ||||||
| - BUGFIX: Showing checking progress for paused torrents too |  | ||||||
| - BUGFIX: Fixed progress column sorting on startup |  | ||||||
| - BUGFIX: Prevent downloadFromUrl flooding |  | ||||||
| - BUGFIX: Fixed pause state toggle for paused and checking torrents |  | ||||||
| - BUGFIX: Made finished list context menu more similar to the download list one |  | ||||||
| - BUGFIX: Fixed Pause/Start action in lists context menus |  | ||||||
| - BUGFIX: Improved ETA calculation |  | ||||||
| - BUGFIX: ETA was wrong for torrents with filtered files |  | ||||||
| - BUGFIX: Display the torrent that are being checked as 'checking' in seeding list |  | ||||||
| - BUGFIX: Fixed file preview and improved previewable files detection |  | ||||||
| - BUGFIX: Do not store and calculate ETA values for finished/paused torrents |  | ||||||
| - BUGFIX: Fixed memory leak in GUI |  | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
|  <profile>qbittorrent.pro</profile> |  <profile>qbittorrent.pro</profile> | ||||||
|  <moddir>qcm</moddir> |  <moddir>qcm</moddir> | ||||||
|  <datadir/> |  <datadir/> | ||||||
|   <dep type='qt42'> |   <dep type='qt4'> | ||||||
|     <required/> |     <required/> | ||||||
|   </dep> |   </dep> | ||||||
|   <dep type='libtorrent'> |   <dep type='libtorrent'> | ||||||
| @@ -12,11 +12,9 @@ | |||||||
|   <dep type='libboost'> |   <dep type='libboost'> | ||||||
|     <required/> |     <required/> | ||||||
|   </dep> |   </dep> | ||||||
|   <dep type='libcommoncpp2'> |   <dep type='libcurl'> | ||||||
|     <required/> |     <required/> | ||||||
|   </dep> |   </dep> | ||||||
|   <dep type='libmagick'/> |   <dep type='libmagick'/> | ||||||
|   <dep type='python'> |   <dep type='libzzip'/> | ||||||
|     <required/> |  | ||||||
|   </dep> |  | ||||||
| </qconf> | </qconf> | ||||||
|   | |||||||
| @@ -37,15 +37,17 @@ public: | |||||||
|  |  | ||||||
| 		s = conf->getenv("QC_WITH_LIBCOMMONCPP2_LIB"); | 		s = conf->getenv("QC_WITH_LIBCOMMONCPP2_LIB"); | ||||||
| 		if(!s.isEmpty()) { | 		if(!s.isEmpty()) { | ||||||
| 			if(!QFile::exists(s+QString("libccext2.so"))) | 			if(!QFile::exists(s+QString("/libccext2.so"))) | ||||||
| 		    return false; | 		    return false; | ||||||
| 			if(!QFile::exists(s+QString("libccgnu2.so"))) | 			if(!QFile::exists(s+QString("/libccgnu2.so"))) | ||||||
| 				return false; | 				return false; | ||||||
|     	conf->addLib(QString("-L") + s); |     	conf->addLib(QString("-L") + s); | ||||||
| 		}else{ | 		}else{ | ||||||
| 			QStringList sl; | 			QStringList sl; | ||||||
| 			sl << "/usr/lib/"; | 			sl << "/usr/lib/"; | ||||||
|  | 			sl << "/usr/lib64/"; | ||||||
| 			sl << "/usr/local/lib/"; | 			sl << "/usr/local/lib/"; | ||||||
|  | 			sl << "/usr/local/lib64/"; | ||||||
| 			bool found = false; | 			bool found = false; | ||||||
| 			foreach(s, sl){ | 			foreach(s, sl){ | ||||||
| 				if(QFile::exists(s+QString("libccext2.so"))){ | 				if(QFile::exists(s+QString("libccext2.so"))){ | ||||||
| @@ -57,16 +59,6 @@ public: | |||||||
| 			} | 			} | ||||||
| 			if(!found) return false; | 			if(!found) return false; | ||||||
| 			conf->addLib(QString("-L") + s); | 			conf->addLib(QString("-L") + s); | ||||||
| 		} |  | ||||||
| 		// BUGFIX for Fedora (doesn't support pkg-config?) |  | ||||||
|     QFile issue_file("/etc/issue"); |  | ||||||
|     if(issue_file.open(QIODevice::ReadOnly | QIODevice::Text)){ |  | ||||||
|       QString content = issue_file.readAll(); |  | ||||||
|       issue_file.close(); |  | ||||||
|       if(content.indexOf("Fedora") != -1){ |  | ||||||
|         qWarning("Fedora detected. WORKAROUND for Fedora pkg-config problem enabled"); |  | ||||||
|         conf->addLib("-pthread -lccext2 -lz -lccgnu2 -ldl -lrt"); |  | ||||||
|       } |  | ||||||
| 		} | 		} | ||||||
| 		return true; | 		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; | ||||||
|  | 	} | ||||||
|  | }; | ||||||
| @@ -44,13 +44,15 @@ public: | |||||||
|  |  | ||||||
| 		s = conf->getenv("QC_WITH_LIBMAGICK_LIB"); | 		s = conf->getenv("QC_WITH_LIBMAGICK_LIB"); | ||||||
| 		if(!s.isEmpty()) { | 		if(!s.isEmpty()) { | ||||||
| 			if(!QFile::exists(s+QString("libMagick++.so"))){ | 			if(!QFile::exists(s+QString("/libMagick++.so"))){ | ||||||
|                           return false; |                           return false; | ||||||
|                         } |                         } | ||||||
| 		}else{ | 		}else{ | ||||||
| 			QStringList sl; | 			QStringList sl; | ||||||
| 			sl << "/usr/lib/"; | 			sl << "/usr/lib/"; | ||||||
|  | 			sl << "/usr/lib64/"; | ||||||
| 			sl << "/usr/local/lib/"; | 			sl << "/usr/local/lib/"; | ||||||
|  | 			sl << "/usr/local/lib64/"; | ||||||
| 			bool found = false; | 			bool found = false; | ||||||
| 			foreach(s, sl){ | 			foreach(s, sl){ | ||||||
| 				if(QFile::exists(s+QString("libMagick++.so"))){ | 				if(QFile::exists(s+QString("libMagick++.so"))){ | ||||||
| @@ -69,6 +71,7 @@ public: | |||||||
| 		magickConfig.waitForStarted(); | 		magickConfig.waitForStarted(); | ||||||
| 		magickConfig.waitForFinished(); | 		magickConfig.waitForFinished(); | ||||||
| 		QByteArray result = magickConfig.readAll(); | 		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; | ||||||
|   | |||||||
| @@ -52,7 +52,9 @@ public: | |||||||
| 		}else{ | 		}else{ | ||||||
| 			QStringList sl; | 			QStringList sl; | ||||||
| 			sl << "/usr/lib/"; | 			sl << "/usr/lib/"; | ||||||
|  | 			sl << "/usr/lib64/"; | ||||||
| 			sl << "/usr/local/lib/"; | 			sl << "/usr/local/lib/"; | ||||||
|  | 			sl << "/usr/local/lib64/"; | ||||||
| 			bool found = false; | 			bool found = false; | ||||||
| 			foreach(s, sl){ | 			foreach(s, sl){ | ||||||
| 				if(conf->checkLibrary(s, "torrent")){ | 				if(conf->checkLibrary(s, "torrent")){ | ||||||
| @@ -63,16 +65,6 @@ public: | |||||||
| 			if(!found) return false; | 			if(!found) return false; | ||||||
| 			conf->addLib(QString("-L") + s); | 			conf->addLib(QString("-L") + s); | ||||||
| 		} | 		} | ||||||
| 		// BUGFIX for Fedora (doesn't support pkg-config?) |  | ||||||
| 		QFile issue_file("/etc/issue"); |  | ||||||
| 		if(issue_file.open(QIODevice::ReadOnly | QIODevice::Text)){ |  | ||||||
| 			QString content = issue_file.readAll(); |  | ||||||
| 			issue_file.close(); |  | ||||||
| 			if(content.indexOf("Fedora") != -1){ |  | ||||||
| 				qWarning("Fedora detected. WORKAROUND for Fedora pkg-config problem enabled"); |  | ||||||
| 				conf->addLib("-lssl -lcrypto -lboost_date_time -lboost_filesystem -lboost_thread -lz -ltorrent"); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		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; | ||||||
|  | 	} | ||||||
|  | }; | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| /* |  | ||||||
| -----BEGIN QCMOD----- |  | ||||||
| name: python |  | ||||||
| -----END QCMOD----- |  | ||||||
| */ |  | ||||||
| class qc_python : public ConfObj |  | ||||||
| { |  | ||||||
| public: |  | ||||||
| 	qc_python(Conf *c) : ConfObj(c) {} |  | ||||||
| 	QString name() const { return "python >= 2.3"; } |  | ||||||
| 	QString shortname() const { return "python"; } |  | ||||||
| 	bool exec(){ |  | ||||||
|           int r = conf->doCommand("python testpython.py"); |  | ||||||
| 	  if(r == 0) |  | ||||||
| 	    return true; |  | ||||||
| 	  else |  | ||||||
| 	    return false; |  | ||||||
| 	} |  | ||||||
| }; |  | ||||||
							
								
								
									
										16
									
								
								qcm/qt4.qcm
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,16 @@ | |||||||
|  | /* | ||||||
|  | -----BEGIN QCMOD----- | ||||||
|  | name: Qt >= 4.3 | ||||||
|  | -----END QCMOD----- | ||||||
|  | */ | ||||||
|  | class qc_qt4 : public ConfObj | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	qc_qt4(Conf *c) : ConfObj(c) {} | ||||||
|  | 	QString name() const { return "Qt >= 4.3"; } | ||||||
|  | 	QString shortname() const { return "Qt 4.3"; } | ||||||
|  | 	bool exec() | ||||||
|  | 	{ | ||||||
|  | 		return(QT_VERSION >= 0x040300); | ||||||
|  | 	} | ||||||
|  | }; | ||||||
							
								
								
									
										16
									
								
								qcm/qt42.qcm
									
									
									
									
									
								
							
							
						
						| @@ -1,16 +0,0 @@ | |||||||
| /* |  | ||||||
| -----BEGIN QCMOD----- |  | ||||||
| name: Qt >= 4.2 |  | ||||||
| -----END QCMOD----- |  | ||||||
| */ |  | ||||||
| class qc_qt42 : public ConfObj |  | ||||||
| { |  | ||||||
| public: |  | ||||||
| 	qc_qt42(Conf *c) : ConfObj(c) {} |  | ||||||
| 	QString name() const { return "Qt >= 4.2"; } |  | ||||||
| 	QString shortname() const { return "qt42"; } |  | ||||||
| 	bool exec() |  | ||||||
| 	{ |  | ||||||
| 		return(QT_VERSION >= 0x040200); |  | ||||||
| 	} |  | ||||||
| }; |  | ||||||
| @@ -83,11 +83,9 @@ class DLListDelegate: public QItemDelegate { | |||||||
|           newopt.maximum = 100; |           newopt.maximum = 100; | ||||||
|           newopt.minimum = 0; |           newopt.minimum = 0; | ||||||
|           newopt.state |= QStyle::State_Enabled; |           newopt.state |= QStyle::State_Enabled; | ||||||
|           newopt.textVisible = false; |           newopt.textVisible = true; | ||||||
|           QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt, |           QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt, | ||||||
|           painter); |           painter); | ||||||
|           painter->setPen(QColor("Black")); |  | ||||||
|           painter->drawText(opt.rect, Qt::AlignCenter, newopt.text); |  | ||||||
|           break; |           break; | ||||||
|         } |         } | ||||||
|         default: |         default: | ||||||
|   | |||||||
| @@ -76,11 +76,9 @@ class FinishedListDelegate: public QItemDelegate { | |||||||
|           newopt.maximum = 100; |           newopt.maximum = 100; | ||||||
|           newopt.minimum = 0; |           newopt.minimum = 0; | ||||||
|           newopt.state |= QStyle::State_Enabled; |           newopt.state |= QStyle::State_Enabled; | ||||||
|           newopt.textVisible = false; |           newopt.textVisible = true; | ||||||
|           QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt, |           QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt, | ||||||
|           painter); |           painter); | ||||||
|           painter->setPen(QColor("Black")); |  | ||||||
|           painter->drawText(opt.rect, Qt::AlignCenter, newopt.text); |  | ||||||
|           break; |           break; | ||||||
|         } |         } | ||||||
|         default: |         default: | ||||||
|   | |||||||
| @@ -122,7 +122,8 @@ void FinishedTorrents::torrentAdded(QString, QTorrentHandle& h, bool) { | |||||||
|  |  | ||||||
| // Set the color of a row in data model | // Set the color of a row in data model | ||||||
| void FinishedTorrents::setRowColor(int row, QString color){ | void FinishedTorrents::setRowColor(int row, QString color){ | ||||||
|   for(int i=0; i<finishedListModel->columnCount(); ++i){ |   unsigned int nbColumns = finishedListModel->columnCount()-1; | ||||||
|  |   for(unsigned int i=0; i<nbColumns; ++i){ | ||||||
|     finishedListModel->setData(finishedListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole); |     finishedListModel->setData(finishedListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @@ -209,6 +210,10 @@ void FinishedTorrents::updateFinishedList(){ | |||||||
|     } |     } | ||||||
|     Q_ASSERT(row != -1); |     Q_ASSERT(row != -1); | ||||||
|     if(h.is_paused()) continue; |     if(h.is_paused()) continue; | ||||||
|  |     if(BTSession->getTorrentsToPauseAfterChecking().indexOf(hash) != -1) { | ||||||
|  |       finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress())); | ||||||
|  |       continue; | ||||||
|  |     } | ||||||
|     if(h.state() == torrent_status::downloading || (h.state() != torrent_status::checking_files && h.state() != torrent_status::queued_for_checking && h.progress() < 1.)) { |     if(h.state() == torrent_status::downloading || (h.state() != torrent_status::checking_files && h.state() != torrent_status::queued_for_checking && h.progress() < 1.)) { | ||||||
|       // What are you doing here? go back to download tab! |       // What are you doing here? go back to download tab! | ||||||
|       qDebug("Info: a torrent was moved from finished to download tab"); |       qDebug("Info: a torrent was moved from finished to download tab"); | ||||||
| @@ -218,10 +223,8 @@ void FinishedTorrents::updateFinishedList(){ | |||||||
|       continue; |       continue; | ||||||
|     } |     } | ||||||
|     if(h.state() == torrent_status::checking_files){ |     if(h.state() == torrent_status::checking_files){ | ||||||
|       if(BTSession->getTorrentsToPauseAfterChecking().indexOf(hash) == -1) { |  | ||||||
|       finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/time.png"))), Qt::DecorationRole); |       finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/time.png"))), Qt::DecorationRole); | ||||||
|       setRowColor(row, QString::fromUtf8("grey")); |       setRowColor(row, QString::fromUtf8("grey")); | ||||||
|       } |  | ||||||
|       finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress())); |       finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress())); | ||||||
|       continue; |       continue; | ||||||
|     } |     } | ||||||
| @@ -310,8 +313,6 @@ void FinishedTorrents::displayFinishedListMenu(const QPoint& pos){ | |||||||
|   QModelIndex index; |   QModelIndex index; | ||||||
|   // Enable/disable pause/start action given the DL state |   // Enable/disable pause/start action given the DL state | ||||||
|   QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes(); |   QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes(); | ||||||
|   QSettings settings("qBittorrent", "qBittorrent"); |  | ||||||
|   QString previewProgram = settings.value("Options/Misc/PreviewProgram", QString()).toString(); |  | ||||||
|   bool has_pause = false, has_start = false, has_preview = false; |   bool has_pause = false, has_start = false, has_preview = false; | ||||||
|   foreach(index, selectedIndexes) { |   foreach(index, selectedIndexes) { | ||||||
|     if(index.column() == F_NAME) { |     if(index.column() == F_NAME) { | ||||||
| @@ -331,7 +332,7 @@ void FinishedTorrents::displayFinishedListMenu(const QPoint& pos){ | |||||||
|           has_pause = true; |           has_pause = true; | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       if(!previewProgram.isEmpty() && BTSession->isFilePreviewPossible(hash) && !has_preview) { |       if(BTSession->isFilePreviewPossible(hash) && !has_preview) { | ||||||
|          myFinishedListMenu.addAction(actionPreview_file); |          myFinishedListMenu.addAction(actionPreview_file); | ||||||
|          has_preview = true; |          has_preview = true; | ||||||
|       } |       } | ||||||
|   | |||||||
							
								
								
									
										403
									
								
								src/GUI.cpp
									
									
									
									
									
								
							
							
						
						| @@ -64,7 +64,9 @@ class GUI : public QMainWindow, private Ui::MainWindow{ | |||||||
|     FinishedTorrents *finishedTorrentTab; |     FinishedTorrents *finishedTorrentTab; | ||||||
|     QLabel *connecStatusLblIcon; |     QLabel *connecStatusLblIcon; | ||||||
|     bool systrayIntegration; |     bool systrayIntegration; | ||||||
|  |     bool displaySpeedInTitle; | ||||||
|     bool force_exit; |     bool force_exit; | ||||||
|  |     unsigned int refreshInterval; | ||||||
|     QTimer *refresher; |     QTimer *refresher; | ||||||
|     // Keyboard shortcuts |     // Keyboard shortcuts | ||||||
|     QShortcut *switchSearchShortcut; |     QShortcut *switchSearchShortcut; | ||||||
| @@ -72,8 +74,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{ | |||||||
|     QShortcut *switchDownShortcut; |     QShortcut *switchDownShortcut; | ||||||
|     QShortcut *switchUpShortcut; |     QShortcut *switchUpShortcut; | ||||||
|     QShortcut *switchRSSShortcut; |     QShortcut *switchRSSShortcut; | ||||||
|     // Preview |  | ||||||
|     QProcess *previewProcess; |  | ||||||
|     // Search |     // Search | ||||||
|     SearchEngine *searchEngine; |     SearchEngine *searchEngine; | ||||||
|     // RSS |     // RSS | ||||||
| @@ -96,7 +96,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{ | |||||||
|     void togglePausedState(QString hash); |     void togglePausedState(QString hash); | ||||||
|     void on_actionPreview_file_triggered(); |     void on_actionPreview_file_triggered(); | ||||||
|     void previewFile(QString filePath); |     void previewFile(QString filePath); | ||||||
|     void cleanTempPreviewFile(int, QProcess::ExitStatus) const; |  | ||||||
|     void balloonClicked(); |     void balloonClicked(); | ||||||
|     void writeSettings(); |     void writeSettings(); | ||||||
|     void readSettings(); |     void readSettings(); | ||||||
| @@ -127,10 +126,12 @@ class GUI : public QMainWindow, private Ui::MainWindow{ | |||||||
|     void checkConnectionStatus(); |     void checkConnectionStatus(); | ||||||
|     void configureSession(bool deleteOptions); |     void configureSession(bool deleteOptions); | ||||||
|     void processParams(const QStringList& params); |     void processParams(const QStringList& params); | ||||||
|  |     void addTorrent(QString path); | ||||||
|     void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker); |     void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker); | ||||||
|     void processScannedFiles(const QStringList& params); |     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, QString fileName, bool finished); | ||||||
|     void finishedTorrent(QTorrentHandle& h) const; |     void finishedTorrent(QTorrentHandle& h) const; | ||||||
|     void torrentChecked(QString hash) const; |     void torrentChecked(QString hash) const; | ||||||
|     void updateLists(); |     void updateLists(); | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								src/Icons/bt_settings.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/configure.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 KiB | 
| Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 820 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/download.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/edit_clear.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 575 B | 
| Before Width: | Height: | Size: 1.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/file.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 704 B | 
| Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 998 B | 
| Before Width: | Height: | Size: 558 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/folder.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 449 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/gear.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB |