Compare commits
	
		
			57 Commits
		
	
	
		
			release-2.
			...
			release-2.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 014b86290b | ||
|   | 9836d4ec07 | ||
|   | b5b14d4d43 | ||
|   | dff1666b6c | ||
|   | e6966bec31 | ||
|   | e92f6a3d96 | ||
|   | f70aab3877 | ||
|   | ec44efb261 | ||
|   | d227ed8b59 | ||
|   | 395c2c862a | ||
|   | e7eb61c0c3 | ||
|   | 7cd2ec57d3 | ||
|   | 4941f24fff | ||
|   | 94cb5fe0b6 | ||
|   | 4828ffa280 | ||
|   | 622d9701cb | ||
|   | 93c4b521bb | ||
|   | 9c7374e4a1 | ||
|   | 1d58e7fd7f | ||
|   | ed9c68eea0 | ||
|   | 1b8a87c54d | ||
|   | a33b978564 | ||
|   | f9cf937e20 | ||
|   | 7109685913 | ||
|   | bd222ac8bd | ||
|   | b675f4ac58 | ||
|   | 9989ec79c9 | ||
|   | 20167c2276 | ||
|   | e26a1d5342 | ||
|   | 3734e11879 | ||
|   | 4632c6fda9 | ||
|   | 62ff08b6b5 | ||
|   | f50b62624a | ||
|   | d380eb9958 | ||
|   | a71bdde022 | ||
|   | e8e6894b5c | ||
|   | d92f69fa0f | ||
|   | 77d7a1ec49 | ||
|   | d5c174a6f8 | ||
|   | 173999e504 | ||
|   | 1ed928bc39 | ||
|   | b85d51ba79 | ||
|   | 779b53722b | ||
|   | 76780c4c46 | ||
|   | da74f24a71 | ||
|   | 01c56865db | ||
|   | b541c9fa4c | ||
|   | aac0fbcbe4 | ||
|   | b315551edd | ||
|   | 58a885cb87 | ||
|   | d19282285c | ||
|   | e0d8ca39a5 | ||
|   | ec3169c9b0 | ||
|   | 7bfd7e9cda | ||
|   | 459bb8c51d | ||
|   | 9159a9f25d | ||
|   | 8ea8f8a9f7 | 
							
								
								
									
										18
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						| @@ -3,27 +3,15 @@ Author: | |||||||
|  |  | ||||||
| Contributors: | Contributors: | ||||||
| * Stefanos Antaris <santaris@csd.auth.gr> | * Stefanos Antaris <santaris@csd.auth.gr> | ||||||
| * Mohammad Dib <mdib@qbittorrent.org> |  | ||||||
| * Mirco Chinelli <infinity89@fastwebmail.it> |  | ||||||
| * Ishan Arora <ishan@qbittorrent.org> | * Ishan Arora <ishan@qbittorrent.org> | ||||||
| * Arnaud Demaizière <arnaud@qbittorrent.org> | * Arnaud Demaizière <arnaud@qbittorrent.org> | ||||||
| * Grigis Gaëtan <cipher16@gmail.com> | * Grigis Gaëtan <cipher16@gmail.com> | ||||||
| * Christian Kandeler <zambesi@users.sourceforge.net> |  | ||||||
| * Silvan Scherrer <silvan.scherrer@aroa.ch> |  | ||||||
|  |  | ||||||
| Code from other projects: | Code from other projects: | ||||||
| * files src/qtsingleapp/* src/lineedit/* |  | ||||||
|   copyright: Nokia Corporation |  | ||||||
|   license: LGPL |  | ||||||
|  |  | ||||||
| * files src/ico.cpp src/ico.h | * files src/ico.cpp src/ico.h | ||||||
|   copyright: Malte Starostik <malte@kde.org> |   copyright: Malte Starostik <malte@kde.org> | ||||||
|   license: LGPL |   license: LGPL | ||||||
|  |  | ||||||
| * files src/search_engine/socks.py |  | ||||||
|   copyright: Dan Haim <negativeiq@users.sourceforge.net> |  | ||||||
|   license: BSD |  | ||||||
|  |  | ||||||
| Images Authors: | Images Authors: | ||||||
| * files: src/Icons/*.png | * files: src/Icons/*.png | ||||||
|   copyright: Gnome Icon Theme |   copyright: Gnome Icon Theme | ||||||
| @@ -67,13 +55,11 @@ Images Authors: | |||||||
| Translations authors: | Translations authors: | ||||||
| * files: src/lang/*.ts | * files: src/lang/*.ts | ||||||
|   copyright: |   copyright: | ||||||
|   - Arabic: SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com) |  | ||||||
|   - Brazilian: Nick Marinho (nickmarinho@gmail.com) |   - Brazilian: Nick Marinho (nickmarinho@gmail.com) | ||||||
|   - Bulgarian: Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net) |   - Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net) | ||||||
|   - Catalan: Francisco Luque Contreras (frannoe@ya.com) |   - Catalan: Francisco Luque Contreras (frannoe@ya.com) | ||||||
|   - Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com) |   - Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com) | ||||||
|   - Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com) |   - Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com) | ||||||
|   - Croatian: Oliver Mucafir (oliver.untwist@gmail.com) |  | ||||||
|   - Czech: Jirka Vilim (web@tets.cz) |   - 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) | ||||||
| @@ -96,5 +82,5 @@ Translations authors: | |||||||
|   - Spanish: Francisco Luque Contreras (frannoe@ya.com) |   - Spanish: Francisco Luque Contreras (frannoe@ya.com) | ||||||
|   - Swedish: Daniel Nylander (po@danielnylander.se) |   - Swedish: Daniel Nylander (po@danielnylander.se) | ||||||
|   - Turkish: Hasan Yilmaz (iletisim@hedefturkce.com) |   - Turkish: Hasan Yilmaz (iletisim@hedefturkce.com) | ||||||
|   - Ukrainian: Andrey Shpachenko (masterfix@users.sourceforge.net) and Oleh Prypin (blaxpirit@gmail.com) |   - Ukrainian: Andrey Shpachenko (masterfix@users.sourceforge.net) | ||||||
|   license: GPLv2 |   license: GPLv2 | ||||||
|   | |||||||
							
								
								
									
										140
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						| @@ -1,142 +1,4 @@ | |||||||
| * Fri Oct 1 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.4 | * Web Dec 31 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.5 | ||||||
|     - BUGFIX: Clean program exit on system shutdown/logout |  | ||||||
|     - BUGFIX: Fix possible search engine plugin update |  | ||||||
|  |  | ||||||
| * Tue Sep 28 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.3 |  | ||||||
|     - BUGFIX: Fix encoding issue in command line parameters processing |  | ||||||
|     - BUGFIX: Fix possible crash when changing the save path in addition dialog |  | ||||||
|     - BUGFIX: Fix wrong mapping to source model |  | ||||||
|  |  | ||||||
| * Sun Sep 26 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.2 |  | ||||||
|     - BUGFIX: Fix display of torrent content in addition dialog |  | ||||||
|     - BUGFIX: Really fix manual editing of save path in torrent addition dialog |  | ||||||
|  |  | ||||||
| * Sun Sep 26 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.1 |  | ||||||
|     - I18N: Updated Arabic translation |  | ||||||
|     - I18N: Fixes to German translation |  | ||||||
|     - BUGFIX: Save path can now be edited in torrent addition dialog |  | ||||||
|     - BUGFIX: Fix save path encoding on non-utf8 systems |  | ||||||
|     - BUGFIX: Fix saving to drive root on Windows |  | ||||||
|     - BUGFIX: OGV can now be previewed |  | ||||||
|     - BUGFIX: Maximum download limit is now 10MB/s |  | ||||||
|     - BUGFIX: Fix 'download in scan dir' persistence |  | ||||||
|     - BUGFIX: Add .torrent extension only when missing (torrent creator) |  | ||||||
|     - BUGFIX: Fix possible issue with temporary download path persistence |  | ||||||
|     - BUGFIX: Added support for | (OR) operator in RSS feed downloader |  | ||||||
|     - BUGFIX: Fix Web UI for spanish users |  | ||||||
|     - BUGFIX: Fix locale switching from Web UI |  | ||||||
|     - BUGFIX: Use AND operator for torrentdownloads.net searches |  | ||||||
|     - BUGFIX: Limit torrent addition dialog width to fit the screen |  | ||||||
|     - COSMETIC: Fix progress bars style on Windows |  | ||||||
|  |  | ||||||
| * Tue Aug 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.0 |  | ||||||
|     - FEATURE: Added actions to "Move to top/bottom" of priority queue |  | ||||||
|     - FEATURE: Auto-Shutdown on downloads completion |  | ||||||
|     - FEATURE: Email notification on download completion |  | ||||||
|     - FEATURE: Added button to password-lock the UI |  | ||||||
|     - FEATURE: Added label-level Pause/Resume/Delete actions |  | ||||||
|     - FEATURE: Torrents can now be filtered by name |  | ||||||
|     - FEATURE: Run external program on torrent completion |  | ||||||
|     - FEATURE: Detect executable updates in order to advise the user to restart |  | ||||||
|  |  | ||||||
| * Tue Jul 27 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.3.0 |  | ||||||
|     - FEATURE: Simplified torrent root folder renaming/truncating (< v2.3.0 is no longer forward compatible) |  | ||||||
|     - FEATURE: Remember previous save paths in torrent addition dialog |  | ||||||
|     - FEATURE: Max number of half-open connections can now be edited |  | ||||||
|     - FEATURE: Added support for strict super seeding |  | ||||||
|     - FEATURE: The user can force listening on a particular network interface |  | ||||||
|     - FEATURE: Added cookie support for RSS feeds |  | ||||||
|     - FEATURE: User can force tracker reannounce |  | ||||||
|     - FEATURE: Added "No action" setting for double-click action |  | ||||||
|     - FEATURE: Several torrents can be moved at once |  | ||||||
|     - FEATURE: Added error state for torrents (error is displayed in a tooltip) |  | ||||||
|     - FEATURE: Added filter for paused/error torrents |  | ||||||
|     - FEATURE: Add Check/Uncheck all feature in Web UI |  | ||||||
|     - FEATURE: Search engine can now be disabled |  | ||||||
|     - FEATURE: Torrents can be automatically paused once they reach a given ratio |  | ||||||
|     - FEATURE: Several files can now be disabled at once |  | ||||||
|     - FEATURE: Added "Select All/None" buttons to files list |  | ||||||
|     - FEATURE: Added support for BitComet links (bc://bt/...) |  | ||||||
|     - BUGFIX: Hide seeding torrents files priorities in Web UI |  | ||||||
|     - BUGFIX: The user can disable permanently recursive torrent download |  | ||||||
|     - BUGFIX: Peer Exchange status is now correctly reported |  | ||||||
|     - BUGFIX: Use an INI file instead of the registry on Windows (More reliable) |  | ||||||
|     - BUGFIX: Removed client spoofing feature to avoid tracker blacklisting |  | ||||||
|     - COSMETIC: Display peers country name in tooltip |  | ||||||
|     - COSMETIC: Display number of torrents in transfers tab label |  | ||||||
|     - COSMETIC: Simplified program preferences |  | ||||||
|     - COSMETIC: Fix naming of actions opening new dialogs (use Name...) |  | ||||||
|  |  | ||||||
| * Sun Mar 14 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.2.0 |  | ||||||
|     - FEATURE: User can set alternative speed limits for fast toggling |  | ||||||
|     - FEATURE: Bandwidth scheduler (automatically use alternative speed limits for a given period) |  | ||||||
|     - FEATURE: Added "Added/Completed On" columns to transfer list |  | ||||||
|     - FEATURE: Added "Upload/Download limit" columns to transfer list |  | ||||||
|     - FEATURE: Torrent files can be exported to a given directory |  | ||||||
|     - FEATURE: Outgoing ports range can be customized (for QoS) |  | ||||||
|     - FEATURE: User can choose to apply transfer limits on LAN too |  | ||||||
|     - FEATURE: User can choose to include the protocol overhead in transfer limits |  | ||||||
|     - FEATURE: Torrents can be automatically rechecked on completion |  | ||||||
|     - FEATURE: If 2 torrents have the same hash, add new trackers/URL seeds to the existing torrent |  | ||||||
|     - FEATURE: Trackers can be added from Web UI |  | ||||||
|     - FEATURE: Global transfer information are displayed in the new Web UI status bar |  | ||||||
|     - FEATURE: Allow to change the priority of several files at once |  | ||||||
|     - FEATURE: Support for multiple scan folders (Patch by Christian Kandeler) |  | ||||||
|     - BUGFIX: Only one log window can be opened at a time |  | ||||||
|     - BUGFIX: Optimized RSS module memory usage |  | ||||||
|     - BUGFIX: Consider HTTP downloads >1MB as invalid .torrent files and abort |  | ||||||
|     - BUGFIX: Fix Web UI authentication with some browsers |  | ||||||
|     - BUGFIX: Set Web UI ban period to 1 hour |  | ||||||
|     - COSMETIC: Improved style management |  | ||||||
|  |  | ||||||
| * Mon Jan 18 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.1.0 |  | ||||||
|     - FEATURE: Graphical User Interface can be disabled at compilation time (headless running) |  | ||||||
|     - FEATURE: Torrents can be labeled/categorized |  | ||||||
|     - FEATURE: Labeled torrent can be downloaded corresponding subfolders |  | ||||||
|     - FEATURE: Disk cache size can be set from preferences |  | ||||||
|     - FEATURE: Peer Exchange (PeX) can be disabled from preferences |  | ||||||
|     - FEATURE: Append !.qB extension to incomplete files option (libtorrent >= v0.15 only) |  | ||||||
|     - FEATURE: Torrent files/folders can be renamed (torrent addition dialog or files properties) |  | ||||||
|     - FEATURE: uTorrent compatible tracker list support (use torrentz.com url as a default) |  | ||||||
|     - FEATURE: Better proxy support and preferences remodeling |  | ||||||
|     - FEATURE: qBittorrent can identify itself as uTorrent, Vuze or KTorrent (Any stable version) |  | ||||||
|     - FEATURE: Torrents can be renamed in transfer list |  | ||||||
|     - FEATURE: Display torrent addition dialog for magnet links too |  | ||||||
|     - FEATURE: Files contained in a torrent are opened on double click (files panel) |  | ||||||
|     - FEATURE: Added support for magnet links in search engine |  | ||||||
|     - FEATURE: Added vertor.com and torrentdownloads.net search plugins |  | ||||||
|     - FEATURE: Search engine can now use a SOCKS5 proxy |  | ||||||
|     - FEATURE: HTTP proxy support for peer communication |  | ||||||
|     - BUGFIX: Search engine loads new proxy settings without program restart |  | ||||||
|     - BUGFIX: Use XDG folders (.cache, .local) instead of .qbittorrent |  | ||||||
|     - BUGFIX: Added legal notice on startup that the user must accept |  | ||||||
|     - BUGFIX: Protect Web UI authentication against brute forcing |  | ||||||
|     - BUGFIX: Use HTTP digest mode for Web UI authentication (instead of Basic) |  | ||||||
|     - BUGFIX: Properly display torrents with one file in subfolder(s) |  | ||||||
|     - BUGFIX: Display Web UI favicon |  | ||||||
|     - BUGFIX: File priority can be set for finished torrents that have filtered files |  | ||||||
|     - COSMETIC: Use checkboxes to filter torrent content instead of comboboxes |  | ||||||
|     - COSMETIC: Use alternating row colors in transfer list (set in program preferences) |  | ||||||
|     - COSMETIC: Added a spin box to speed limiting dialog for manual input |  | ||||||
|  |  | ||||||
| * Mon Jan 11 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.0.7 |  | ||||||
|     - BUGFIX: Fix 'Add in pause' setting in torrent addition dialog |  | ||||||
|     - BUGFIX: Update RSS feed as soon as feed downloader is enabled |  | ||||||
|     - BUGFIX: RSS Feed downloader ignores articles above maximum number of articles |  | ||||||
|     - BUGFIX: Fix possible bug when deleting a RSS folder |  | ||||||
|     - BUGFIX: Remove persistant data when a RSS feed is deleted |  | ||||||
|     - BUGFIX: RSS filters are now alphabetically sorted |  | ||||||
|     - BUGFIX: Fix crash when renaming currently displayed RSS filter |  | ||||||
|     - BUGFIX: Remove overwriting confirmation when exporting RSS filters since Qt takes care of it |  | ||||||
|  |  | ||||||
| * Tue Jan 5 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.0.6 |  | ||||||
|     - BUGFIX: Fix detection of invalid torrent files |  | ||||||
|     - BUGFIX: Stop catching signals once one has been caught to avoid possible infinite loop |  | ||||||
|     - BUGFIX: Force data recheck whenever a torrent is moved |  | ||||||
|     - BUGFIX: Detect existing torrent data even if incomplete torrents are saved to a different folder |  | ||||||
|     - COSMETIC: Improve torrent deletion confirmation dialog so that the text that not get truncated |  | ||||||
|  |  | ||||||
| * Thu Dec 31 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.5 |  | ||||||
|     - BUGFIX: Fix crash with downloaded/availability bars when the torrent has too many pieces |     - BUGFIX: Fix crash with downloaded/availability bars when the torrent has too many pieces | ||||||
|  |  | ||||||
| * Wed Dec 30 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.4 | * Wed Dec 30 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.4 | ||||||
|   | |||||||
							
								
								
									
										63
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						| @@ -1,57 +1,32 @@ | |||||||
| qBittorrent - A BitTorrent client in C++ / Qt4 | qBittorrent - A BitTorrent client in C++ / Qt4 | ||||||
| ------------------------------------------ | ------------------------------------------ | ||||||
|  |  | ||||||
| 1) Compile and install qBittorrent with Qt4 Graphical Interface | ./configure | ||||||
|  | make && make install | ||||||
|  | qbittorrent | ||||||
|  |  | ||||||
|   $ ./configure | will install and execute qBittorrent hopefully without any problems. | ||||||
|   $ make && make install |  | ||||||
|   $ qbittorrent |  | ||||||
|  |  | ||||||
|   will install and execute qBittorrent hopefully without any problems. | Dependencies: | ||||||
|  | - Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) | ||||||
|  |  | ||||||
|   Dependencies: | - libtorrent-rasterbar by Arvid Norberg (>= 0.14.0 REQUIRED, >= v0.15.0 ADVISED) | ||||||
|     - Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) |     -> http://www.qbittorrent.org/download.php (advised) | ||||||
|  |     -> http://www.libtorrent.net | ||||||
|  |     Be careful: another library (the one used by rTorrent) uses a similar name. | ||||||
|  |  | ||||||
|     - pkg-config executable | - libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization | ||||||
|  |  | ||||||
|     - libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, compatible with v0.15.x) | - python >= 2.3 (needed by search engine) | ||||||
|         -> http://www.libtorrent.net |   * Run time only dependency | ||||||
|         Be careful: another library (the one used by rTorrent) uses a similar name. |  | ||||||
|  |  | ||||||
|     - libboost 1.34.x (libboost-filesystem, libboost-thread, libboost-date-time) + libasio | - libnotify >= 0.4.2, glib-2.0 (optional) | ||||||
|       or |   * Can be used for system notifications to replace standard Qt notifications | ||||||
|     - libboost >= 1.35.x (libboost-system, libboost-filesystem, libboost-thread, libboost-date-time) |     so that it integrates better into the Desktop | ||||||
|  |  | ||||||
|     - python >= 2.3 (needed by search engine) |  | ||||||
|         * Run time only dependency |  | ||||||
|  |  | ||||||
|     - libnotify >= 0.4.2, glib-2.0 (optional) |  | ||||||
|         * Can be used for system notifications to replace standard Qt notifications |  | ||||||
|           so that it integrates better into the Desktop |  | ||||||
|  |  | ||||||
|     - geoip-database (optional) |  | ||||||
|         * If qBittorrent cannot find this database, it will try to resolve countries using the Internet but it will be a lot slower. |  | ||||||
|         * Run time only dependency |  | ||||||
|  |  | ||||||
| 2) Compile and install qBittorrent without Qt4 Graphical interface |  | ||||||
|  |  | ||||||
|   $ ./configure --disable-gui |  | ||||||
|   $ make && make install |  | ||||||
|   $ qbittorrent |  | ||||||
|  |  | ||||||
|   will install and execute qBittorrent hopefully without any problems. |  | ||||||
|  |  | ||||||
|   Dependencies: |  | ||||||
|     - Qt >= 4.4.0 (libqt-devel, libqtcore, libqtnetwork) |  | ||||||
|  |  | ||||||
|     - pkg-config executable |  | ||||||
|  |  | ||||||
|     - libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, >= v0.15.0 ADVISED) |  | ||||||
|         -> http://www.libtorrent.net |  | ||||||
|         Be careful: another library (the one used by rTorrent) uses a similar name. |  | ||||||
|  |  | ||||||
|     - libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization |  | ||||||
|  |  | ||||||
|  | - geoip-database (optional) | ||||||
|  |   * If qBittorrent cannot find this database, it will try to resolve countries using the Internet but it will be a lot slower. | ||||||
|  |   * Run time only dependency | ||||||
|  |  | ||||||
| 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. | ||||||
|   | |||||||
							
								
								
									
										62
									
								
								README.os2
									
									
									
									
									
								
							
							
						
						| @@ -1,62 +0,0 @@ | |||||||
| qBittorrent - A BitTorrent client in Qt4 |  | ||||||
| ------------------------------------------ |  | ||||||
|  |  | ||||||
| This is the eComStation (OS/2) qBittorrent part of the readme. See also README for more general information. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Building qBittorrent |  | ||||||
| ******************** |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Requirements |  | ||||||
| ============ |  | ||||||
|  |  | ||||||
| - gcc based build env (recommended gcc v4.4.2 or greater) |  | ||||||
|    |  | ||||||
| - Qt4 for eCS (OS/2) dev package (see http://svn.netlabs.org/qt4 for more information) |  | ||||||
|  |  | ||||||
| - libtorrent-rasterbar for eCS (OS/2) port (see http://svn.netlabs.org/ports for more information) |  | ||||||
|  |  | ||||||
| - boost for eCS (OS/2) port (see http://svn.netlabs.org/ports for more information) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| How to build |  | ||||||
| ============ |  | ||||||
|  |  | ||||||
| First you need to create the conf.pri file in the same dir as this readme.os2 is. |  | ||||||
| the conf.pri file has the following content: |  | ||||||
|  |  | ||||||
| ##### conf.pri content beginn ##### |  | ||||||
| PREFIX = . |  | ||||||
| BINDIR = ./bin |  | ||||||
| INCDIR = ./include |  | ||||||
| LIBDIR = ./lib |  | ||||||
| DATADIR = ./share |  | ||||||
|  |  | ||||||
| CONFIG += staticlib |  | ||||||
| INCLUDEPATH += x:/trees/libtorrent/trunk/include |  | ||||||
| LIBS += -Lx:/trees/libtorrent/trunk/src/.libs \ |  | ||||||
|         -Lx:/trees/boost/trunk/stage/lib \ |  | ||||||
|         -Lx:/trees/openssl \ |  | ||||||
| 	-Lx:/extras/lib |  | ||||||
| ##### conf.pri content end ##### |  | ||||||
|  |  | ||||||
| Of course all the above path references have to be adjusted to your build env. |  | ||||||
|  |  | ||||||
| It should now be easy to build qBittorrent: |  | ||||||
|  |  | ||||||
| Simply type: |  | ||||||
| $ qmake |  | ||||||
|  |  | ||||||
| Followed by: |  | ||||||
| $ make |  | ||||||
|  |  | ||||||
| If all works fine you should get a working qbittorrent executable. |  | ||||||
|  |  | ||||||
| If you have any question regarding the eCS (OS/2) port of qBittorrent you can meet me (_diver) on IRC: |  | ||||||
| #netlabs on irc.freenode.net |  | ||||||
|  |  | ||||||
| ------------------------------------------ |  | ||||||
| Silvan Scherrer <silvan.scherrer@aroa.ch> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1,44 +0,0 @@ | |||||||
| .\" This manpage has been automatically generated by docbook2man |  | ||||||
| .\" from a DocBook document.  This tool can be found at: |  | ||||||
| .\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>. |  | ||||||
| .TH "QBITTORRENT\-NOX" "1" "January 16th 2010" "Command line Bittorrent client written in C++ / Qt4" "" |  | ||||||
|  |  | ||||||
| .SH "NAME" |  | ||||||
| qBittorrent\-nox \- a command line Bittorrent client written in C++ / Qt4 |  | ||||||
|  |  | ||||||
| .SH "SYNOPSIS" |  | ||||||
|  |  | ||||||
| \fBqbittorrent\-nox\fR [\-\-webui-port=x] [TORRENT_FILE | URL]... |  | ||||||
|  |  | ||||||
| \fBqbittorrent\-nox\fR \-\-help |  | ||||||
|  |  | ||||||
| \fBqbittorrent\-nox\fR \-\-version |  | ||||||
|  |  | ||||||
| .PP |  | ||||||
| .SH "DESCRIPTION" |  | ||||||
|  |  | ||||||
| \fBqBittorrent-nox\fR is an advanced command-line Bittorrent client written in C++ / Qt4, |  | ||||||
| using the \fBlibtorrent-rasterbar\fR library by Arvid Norberg. qBittorrent\-nox aims |  | ||||||
| to be a good alternative to other command line bittorrent clients and provides features similar to popular graphical clients. |  | ||||||
|  |  | ||||||
| qBittorrent\-nox is fast, stable, light and it supports unicode.  |  | ||||||
| It also comes with UPnP port forwarding / NAT-PMP, encryption (Vuze compatible),  |  | ||||||
| FAST extension (mainline) and PeX support (utorrent compatible). |  | ||||||
|  |  | ||||||
| qBittorrent\-nox is meant to be controlled via its feature-rich Web UI which is accessible as a default on http://localhost:8080. The Web UI access is secured and the default account user name is "admin" with "adminadmin" as a password. |  | ||||||
|  |  | ||||||
| .SH "OPTIONS" |  | ||||||
|  |  | ||||||
| \fB--help\fR Prints the command line options. |  | ||||||
|  |  | ||||||
| \fB--version\fR Prints qbittorrent program version number. |  | ||||||
|  |  | ||||||
| \fB--webui-port=x\fR Changes Web UI port to x (default: 8080). |  | ||||||
|  |  | ||||||
| .SH "BUGS" |  | ||||||
|  |  | ||||||
| If you find a bug, please report it at http://bugs.qbittorrent.org |  | ||||||
|  |  | ||||||
| .SH "AUTHOR" |  | ||||||
|  |  | ||||||
| Christophe Dumez <chris@qbittorrent.org> |  | ||||||
| @@ -1,14 +1,14 @@ | |||||||
| .\" 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" "January 16th 2010" "Bittorrent client written in C++ / Qt4" "" | .TH "QBITTORRENT" "1" "September 30th 2009" "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 [\-\-no-splash] [\-\-webui-port=x] [TORRENT_FILE | URL]... | \fBqbittorrent\fR [\-\-no-splash] [TORRENT_FILE | URL]... | ||||||
|  |  | ||||||
| \fBqbittorrent\fR \-\-help | \fBqbittorrent\fR \-\-help | ||||||
|  |  | ||||||
| @@ -18,9 +18,10 @@ qBittorrent \- a Bittorrent client written in C++ / Qt4 | |||||||
| .SH "DESCRIPTION" | .SH "DESCRIPTION" | ||||||
|  |  | ||||||
| \fBqBittorrent\fR is an advanced Bittorrent client written in C++ / Qt4, | \fBqBittorrent\fR is an advanced Bittorrent client written in C++ / Qt4, | ||||||
| using the \fBlibtorrent-rasterbar\fR library by Arvid Norberg. qBittorrent is similar to uTorrent. qBittorrent | using the \fBrblibtorrent\fR library by Arvid Norberg. qBittorrent aims | ||||||
|  | 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 (Vuze 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" | .SH "OPTIONS" | ||||||
| @@ -31,8 +32,6 @@ FAST extension (mainline) and PeX support (utorrent compatible). | |||||||
|  |  | ||||||
| \fB--no-splash\fR Disables splash screen on startup. | \fB--no-splash\fR Disables splash screen on startup. | ||||||
|  |  | ||||||
| \fB--webui-port=x\fR Changes Web UI port to x (default: 8080). |  | ||||||
|  |  | ||||||
| .SH "BUGS" | .SH "BUGS" | ||||||
|  |  | ||||||
| If you find a bug, please report it at http://bugs.qbittorrent.org | If you find a bug, please report it at http://bugs.qbittorrent.org | ||||||
|   | |||||||
| @@ -1,4 +1,6 @@ | |||||||
| TEMPLATE = subdirs | TEMPLATE = subdirs | ||||||
|  |  | ||||||
|  | include(conf.pri) | ||||||
|  |  | ||||||
| SUBDIRS += src | SUBDIRS += src | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,9 +6,6 @@ | |||||||
|   <dep type='qt4'> |   <dep type='qt4'> | ||||||
|     <required/> |     <required/> | ||||||
|   </dep> |   </dep> | ||||||
|   <dep type='pkg-config'> |  | ||||||
|     <required/> |  | ||||||
|   </dep> |  | ||||||
|   <dep type='libtorrent-rasterbar'> |   <dep type='libtorrent-rasterbar'> | ||||||
|     <required/> |     <required/> | ||||||
|   </dep> |   </dep> | ||||||
| @@ -19,6 +16,4 @@ | |||||||
|   </dep> |   </dep> | ||||||
|   <dep type='geoip-database'> |   <dep type='geoip-database'> | ||||||
|   </dep> |   </dep> | ||||||
|   <dep type='qtsingleapplication'> |  | ||||||
|   </dep> |  | ||||||
| </qconf> | </qconf> | ||||||
|   | |||||||
| @@ -11,15 +11,7 @@ public: | |||||||
| 	qc_geoip_database(Conf *c) : ConfObj(c) {} | 	qc_geoip_database(Conf *c) : ConfObj(c) {} | ||||||
| 	QString name() const { return "GeoIP Database (optional)"; } | 	QString name() const { return "GeoIP Database (optional)"; } | ||||||
| 	QString shortname() const { return "GeoIP Database"; } | 	QString shortname() const { return "GeoIP Database"; } | ||||||
|         QString checkString() const { |  | ||||||
|                 if(!conf->getenv("QC_DISABLE_geoip_database").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) |  | ||||||
|                         return ""; |  | ||||||
|                 return ConfObj::checkString(); |  | ||||||
|         } |  | ||||||
| 	bool exec() { | 	bool exec() { | ||||||
| 	if(!conf->getenv("QC_DISABLE_geoip_database").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) { |  | ||||||
| 		return false; |  | ||||||
| 	} |  | ||||||
| #ifdef Q_WS_X11 | #ifdef Q_WS_X11 | ||||||
| 		if(!conf->getenv("QC_WITH_GEOIP_DATABASE_EMBEDDED").isEmpty()) { | 		if(!conf->getenv("QC_WITH_GEOIP_DATABASE_EMBEDDED").isEmpty()) { | ||||||
| #endif | #endif | ||||||
|   | |||||||
| @@ -2,39 +2,14 @@ | |||||||
| -----BEGIN QCMOD----- | -----BEGIN QCMOD----- | ||||||
| name: libboost | name: libboost | ||||||
| arg: with-libboost-inc=[path], Path to libboost include files | arg: with-libboost-inc=[path], Path to libboost include files | ||||||
| arg: with-libboost-lib=[path], Path to libboost library files |  | ||||||
| -----END QCMOD----- | -----END QCMOD----- | ||||||
| */ | */ | ||||||
| #include <boost/version.hpp> |  | ||||||
| class qc_libboost : public ConfObj | class qc_libboost : public ConfObj | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 	qc_libboost(Conf *c) : ConfObj(c) {} | 	qc_libboost(Conf *c) : ConfObj(c) {} | ||||||
| 	QString name() const { return "libboost"; } | 	QString name() const { return "libboost"; } | ||||||
| 	QString shortname() const { return "libboost"; } | 	QString shortname() const { return "libboost"; } | ||||||
|   QString findBoostLib(QString path, QString lib) const { |  | ||||||
|     QString name; |  | ||||||
|     QDir libDir(path); |  | ||||||
|     QStringList filters; |  | ||||||
|     filters << "libboost_"+lib+"*-mt*.so"; |  | ||||||
|     QStringList result = libDir.entryList(filters, QDir::Files); |  | ||||||
|     if(!result.empty()) { |  | ||||||
|       name = result.first().mid(3); |  | ||||||
|       // Remove .so |  | ||||||
|       name.chop(3); |  | ||||||
|     } else { |  | ||||||
|       // Fall back to non -mt boost lib |  | ||||||
|       filters.clear(); |  | ||||||
|       filters << "libboost_"+lib+"*.so"; |  | ||||||
|       result = libDir.entryList(filters, QDir::Files); |  | ||||||
|       if(!result.empty()) { |  | ||||||
|         name = result.first().mid(3); |  | ||||||
|         // Remove .so |  | ||||||
|         name.chop(3); |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     return name; |  | ||||||
|   } |  | ||||||
| 	bool exec(){ | 	bool exec(){ | ||||||
|         	QString s; |         	QString s; | ||||||
| 		s = conf->getenv("QC_WITH_LIBBOOST_INC"); | 		s = conf->getenv("QC_WITH_LIBBOOST_INC"); | ||||||
| @@ -76,43 +51,6 @@ public: | |||||||
|       			} |       			} | ||||||
| 		} | 		} | ||||||
| 		conf->addIncludePath(s); | 		conf->addIncludePath(s); | ||||||
| 		// Find library |  | ||||||
| 		s = conf->getenv("QC_WITH_LIBBOOST_LIB"); |  | ||||||
|     QStringList required_libs; |  | ||||||
| #if BOOST_VERSION >= 103500 |  | ||||||
|       required_libs << "system";  |  | ||||||
| #endif |  | ||||||
|     if(conf->getenv("QC_DISABLE_GUI").isEmpty()) { |  | ||||||
|       // Not required by nox |  | ||||||
|       required_libs << "filesystem" << "thread"; |  | ||||||
|     } |  | ||||||
|     QStringList libDirs; |  | ||||||
|     libDirs << "/usr/lib/" << "/usr/lib64/" << "/usr/local/lib/" << "/usr/local/lib64/"; |  | ||||||
|     foreach(const QString& lib, required_libs) { |  | ||||||
|       if(!s.isEmpty()) { |  | ||||||
|         QString detected_name = findBoostLib(s, lib); |  | ||||||
|         if(detected_name.isEmpty()) { |  | ||||||
|           printf("Could not find boost %s library!\n", qPrintable(lib)); |  | ||||||
|           return false; |  | ||||||
|         } else { |  | ||||||
|           conf->addLib("-l"+detected_name); |  | ||||||
|         } |  | ||||||
|       } else { |  | ||||||
|         bool found = false; |  | ||||||
|         foreach(const QString& libDir, libDirs) { |  | ||||||
|           QString detected_name = findBoostLib(libDir, lib); |  | ||||||
|           if(!detected_name.isEmpty()) { |  | ||||||
|             conf->addLib("-l"+detected_name); |  | ||||||
|             found = true; |  | ||||||
|             break; |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|         if(!found) { |  | ||||||
|           printf("Could not find boost %s library!\n", qPrintable(lib)); |  | ||||||
|           return false; |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -10,15 +10,7 @@ public: | |||||||
| 	qc_libnotify(Conf *c) : ConfObj(c) {} | 	qc_libnotify(Conf *c) : ConfObj(c) {} | ||||||
| 	QString name() const { return "libnotify >= 0.4.2 (optional)"; } | 	QString name() const { return "libnotify >= 0.4.2 (optional)"; } | ||||||
| 	QString shortname() const { return "libnotify"; } | 	QString shortname() const { return "libnotify"; } | ||||||
|         QString checkString() const { |  | ||||||
|                 if(!conf->getenv("QC_DISABLE_libnotify").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) |  | ||||||
|                         return ""; |  | ||||||
|                 return ConfObj::checkString(); |  | ||||||
|         } |  | ||||||
| 	bool exec(){ | 	bool exec(){ | ||||||
| 		if(!conf->getenv("QC_DISABLE_libnotify").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) { |  | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
| 		QStringList incs; | 		QStringList incs; | ||||||
| 		QString req_ver = "0.4.2"; | 		QString req_ver = "0.4.2"; | ||||||
| 		QString version, libs, other; | 		QString version, libs, other; | ||||||
| @@ -40,17 +32,6 @@ public: | |||||||
| 			} else { | 			} else { | ||||||
| 				return false; | 				return false; | ||||||
| 			} | 			} | ||||||
| 			QStringList incs3; |  | ||||||
|                         QString req_ver3 = "2.0"; |  | ||||||
|                         QString version3, libs3, other3; |  | ||||||
| 			if(conf->findPkgConfig("gtk+-2.0", mode, req_ver3, &version3, &incs3, &libs3, &other3)) { |  | ||||||
|                                 for(int n = 0; n < incs3.count(); ++n) |  | ||||||
|                                 conf->addIncludePath(incs3[n]); |  | ||||||
|                                 if(!libs3.isEmpty()) |  | ||||||
|                                         conf->addLib(libs3); |  | ||||||
|                         } else { |  | ||||||
|                                 return false; |  | ||||||
|                         } |  | ||||||
| 		} else { | 		} else { | ||||||
| 			return false; | 			return false; | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -8,20 +8,24 @@ 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.4"; } | 	QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.15.0 advised)"; } | ||||||
| 	QString shortname() const { return "libtorrent-rasterbar"; } | 	QString shortname() const { return "libtorrent-rasterbar"; } | ||||||
| 	bool exec(){ | 	bool exec(){ | ||||||
| 		QStringList incs; | 		QStringList incs; | ||||||
| 		QString req_ver = "0.14.4"; | 		QString req_ver = "0.14.0"; | ||||||
|  | 		QString adv_ver = "0.15.0"; | ||||||
| 		QString version, libs, other; | 		QString version, libs, other; | ||||||
| 		VersionMode mode = VersionMin; | 		VersionMode mode = VersionMin; | ||||||
| 		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other)) | 		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other)) | ||||||
| 			return false; | 			return false; | ||||||
| 		for(int n = 0; n < incs.count(); ++n) | 		for(int n = 0; n < incs.count(); ++n) | ||||||
| 			conf->addIncludePath(incs[n]); | 			conf->addIncludePath(incs[n]); | ||||||
| 		if(conf->getenv("QC_DISABLE_GUI").isEmpty()) { | 		if(!libs.isEmpty()) | ||||||
|   		  conf->addLib("-lcrypto"); | 			conf->addLib(libs); | ||||||
|                 } | 		if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other)) | ||||||
|  |                         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()); | ||||||
|  | 		else | ||||||
|  | 			conf->addDefine("LIBTORRENT_0_15"); | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -1,16 +0,0 @@ | |||||||
| /* |  | ||||||
| -----BEGIN QCMOD----- |  | ||||||
| name: pkg-config |  | ||||||
| -----END QCMOD----- |  | ||||||
| */ |  | ||||||
| #include <QProcess> |  | ||||||
| class qc_pkg_config : public ConfObj |  | ||||||
| { |  | ||||||
| public: |  | ||||||
| 	qc_pkg_config(Conf *c) : ConfObj(c) {} |  | ||||||
| 	QString name() const { return "pkg-config executable"; } |  | ||||||
| 	QString shortname() const { return "pkg-config"; } |  | ||||||
| 	bool exec(){ |  | ||||||
| 		return !conf->findProgram("pkg-config").isEmpty(); |  | ||||||
| 	} |  | ||||||
| }; |  | ||||||
| @@ -1,7 +1,6 @@ | |||||||
| /* | /* | ||||||
| -----BEGIN QCMOD----- | -----BEGIN QCMOD----- | ||||||
| name: Qt >= 4.4 | name: Qt >= 4.4 | ||||||
| arg: disable-gui, Disable qBittorrent Graphical user interface for headless running |  | ||||||
| -----END QCMOD----- | -----END QCMOD----- | ||||||
| */ | */ | ||||||
| class qc_qt4 : public ConfObj | class qc_qt4 : public ConfObj | ||||||
| @@ -12,9 +11,10 @@ public: | |||||||
| 	QString shortname() const { return "Qt 4.4"; } | 	QString shortname() const { return "Qt 4.4"; } | ||||||
| 	bool exec() | 	bool exec() | ||||||
| 	{ | 	{ | ||||||
| 		if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) { | 		if(QT_VERSION >= 0x040500) { | ||||||
| 			conf->addDefine("DISABLE_GUI"); |                         conf->addDefine("QT_4_5"); | ||||||
| 		}	 |                 } | ||||||
| 		return(QT_VERSION >= 0x040400); | 		return(QT_VERSION >= 0x040400); | ||||||
|  | 		 | ||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										671
									
								
								src/GUI.cpp
									
									
									
									
									
								
							
							
						
						
							
								
								
									
										218
									
								
								src/GUI.h
									
									
									
									
									
								
							
							
						
						| @@ -37,10 +37,13 @@ | |||||||
| #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 Bittorrent; | ||||||
| class QTimer; | class QTimer; | ||||||
| class downloadFromURL; | class downloadFromURL; | ||||||
| class SearchEngine; | class SearchEngine; | ||||||
|  | class QLocalServer; | ||||||
| class QCloseEvent; | class QCloseEvent; | ||||||
| class RSSImp; | class RSSImp; | ||||||
| class QShortcut; | class QShortcut; | ||||||
| @@ -52,137 +55,108 @@ class TransferListFiltersWidget; | |||||||
| class QSplitter; | class QSplitter; | ||||||
| class PropertiesWidget; | class PropertiesWidget; | ||||||
| class StatusBar; | class StatusBar; | ||||||
| class consoleDlg; |  | ||||||
| class about; |  | ||||||
| class createtorrent; |  | ||||||
| class downloadFromURL; |  | ||||||
| class HidableTabWidget; |  | ||||||
| class LineEdit; |  | ||||||
| class QFileSystemWatcher; |  | ||||||
|  |  | ||||||
| class GUI : public QMainWindow, private Ui::MainWindow{ | class GUI : public QMainWindow, private Ui::MainWindow{ | ||||||
|   Q_OBJECT |   Q_OBJECT | ||||||
|  |  | ||||||
| public: |   private: | ||||||
|   // Construct / Destruct |     // Bittorrent | ||||||
|   GUI(QWidget *parent=0, QStringList torrentCmdLine=QStringList()); |     Bittorrent *BTSession; | ||||||
|   ~GUI(); |     QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; // Still needed? | ||||||
|   // Methods |     // GUI related | ||||||
|   QWidget* getCurrentTabWidget() const; |     QTimer *guiUpdater; | ||||||
|   TransferListWidget* getTransferList() const { return transferList; } |     QTabWidget *tabs; | ||||||
|   QMenu* getTrayIconMenu(); |     StatusBar *status_bar; | ||||||
|   PropertiesWidget *getProperties() const { return properties; } |     QPointer<options_imp> options; | ||||||
|  |     QPointer<QSystemTrayIcon> systrayIcon; | ||||||
|  |     QPointer<QTimer> systrayCreator; | ||||||
|  |     QMenu *myTrayIconMenu; | ||||||
|  |     TransferListWidget *transferList; | ||||||
|  |     TransferListFiltersWidget *transferListFilters; | ||||||
|  |     PropertiesWidget *properties; | ||||||
|  |     bool displaySpeedInTitle; | ||||||
|  |     bool force_exit; | ||||||
|  |     // Keyboard shortcuts | ||||||
|  |     QShortcut *switchSearchShortcut; | ||||||
|  |     QShortcut *switchSearchShortcut2; | ||||||
|  |     QShortcut *switchTransferShortcut; | ||||||
|  |     QShortcut *switchRSSShortcut; | ||||||
|  |     // Widgets | ||||||
|  |     QAction *prioSeparator; | ||||||
|  |     QAction *prioSeparator2; | ||||||
|  |     QSplitter *hSplitter; | ||||||
|  |     QSplitter *vSplitter; | ||||||
|  |     // Search | ||||||
|  |     SearchEngine *searchEngine; | ||||||
|  |     // RSS | ||||||
|  |     QPointer<RSSImp> rssWidget; | ||||||
|  |     // Misc | ||||||
|  |     QLocalServer *localServer; | ||||||
|  |  | ||||||
| public slots: |   protected slots: | ||||||
|   void trackerAuthenticationRequired(QTorrentHandle& h); |     // GUI related slots | ||||||
|   void setTabText(int index, QString text) const; |     void dropEvent(QDropEvent *event); | ||||||
|   void showNotificationBaloon(QString title, QString msg) const; |     void dragEnterEvent(QDragEnterEvent *event); | ||||||
|   void downloadFromURLList(const QStringList& urls); |     void toggleVisibility(QSystemTrayIcon::ActivationReason e); | ||||||
|   void updateAltSpeedsBtn(bool alternative); |     void on_actionAbout_triggered(); | ||||||
|   void updateNbTorrents(unsigned int nb_downloading, unsigned int nb_seeding, unsigned int nb_active, unsigned int nb_inactive, unsigned int nb_paused); |     void on_actionCreate_torrent_triggered(); | ||||||
|   void deleteBTSession(); |     void on_actionWebsite_triggered() const; | ||||||
|  |     void on_actionBugReport_triggered() const; | ||||||
|  |     void on_actionShow_console_triggered(); | ||||||
|  |     void readParamsOnSocket(); | ||||||
|  |     void acceptConnection(); | ||||||
|  |     void balloonClicked(); | ||||||
|  |     void writeSettings(); | ||||||
|  |     void readSettings(); | ||||||
|  |     void on_actionExit_triggered(); | ||||||
|  |     void createTrayIcon(); | ||||||
|  |     void fullDiskError(QTorrentHandle& h, QString msg) const; | ||||||
|  |     void handleDownloadFromUrlFailure(QString, QString) const; | ||||||
|  |     void createSystrayDelayed(); | ||||||
|  |     void tab_changed(int); | ||||||
|  |     // Keyboard shortcuts | ||||||
|  |     void createKeyboardShortcuts(); | ||||||
|  |     void displayTransferTab() const; | ||||||
|  |     void displaySearchTab() const; | ||||||
|  |     void displayRSSTab() const; | ||||||
|  |     // Torrent actions | ||||||
|  |     void on_actionSet_global_upload_limit_triggered(); | ||||||
|  |     void on_actionSet_global_download_limit_triggered(); | ||||||
|  |     void on_actionDocumentation_triggered() const; | ||||||
|  |     void on_actionOpen_triggered(); | ||||||
|  |     void updateGUI(); | ||||||
|  |     void loadPreferences(bool configure_session=true); | ||||||
|  |     void processParams(const QStringList& params); | ||||||
|  |     void addTorrent(QString path); | ||||||
|  |     void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker); | ||||||
|  |     void processDownloadedFiles(QString path, QString url); | ||||||
|  |     void downloadFromURLList(const QStringList& urls); | ||||||
|  |     void finishedTorrent(QTorrentHandle& h) const; | ||||||
|  |     // Options slots | ||||||
|  |     void on_actionOptions_triggered(); | ||||||
|  |     void optionsSaved(); | ||||||
|  |     // HTTP slots | ||||||
|  |     void on_actionDownload_from_URL_triggered(); | ||||||
|  |  | ||||||
| protected slots: |  | ||||||
|   // GUI related slots |  | ||||||
|   void dropEvent(QDropEvent *event); |  | ||||||
|   void dragEnterEvent(QDragEnterEvent *event); |  | ||||||
|   void toggleVisibility(QSystemTrayIcon::ActivationReason e); |  | ||||||
|   void on_actionAbout_triggered(); |  | ||||||
|   void on_actionCreate_torrent_triggered(); |  | ||||||
|   void on_actionWebsite_triggered() const; |  | ||||||
|   void on_actionBugReport_triggered() const; |  | ||||||
|   void on_actionShow_console_triggered(); |  | ||||||
|   void balloonClicked(); |  | ||||||
|   void writeSettings(); |  | ||||||
|   void readSettings(); |  | ||||||
|   void on_actionExit_triggered(); |  | ||||||
|   void createTrayIcon(); |  | ||||||
|   void fullDiskError(QTorrentHandle& h, QString msg) const; |  | ||||||
|   void handleDownloadFromUrlFailure(QString, QString) const; |  | ||||||
|   void createSystrayDelayed(); |  | ||||||
|   void tab_changed(int); |  | ||||||
|   void on_actionLock_qBittorrent_triggered(); |  | ||||||
|   void defineUILockPassword(); |  | ||||||
|   bool unlockUI(); |  | ||||||
|   void notifyOfUpdate(QString); |  | ||||||
|   // Keyboard shortcuts |  | ||||||
|   void createKeyboardShortcuts(); |  | ||||||
|   void displayTransferTab() const; |  | ||||||
|   void displaySearchTab() const; |  | ||||||
|   void displayRSSTab() const; |  | ||||||
|   // Torrent actions |  | ||||||
|   void on_actionSet_global_upload_limit_triggered(); |  | ||||||
|   void on_actionSet_global_download_limit_triggered(); |  | ||||||
|   void on_actionDocumentation_triggered() const; |  | ||||||
|   void on_actionOpen_triggered(); |  | ||||||
|   void updateGUI(); |  | ||||||
|   void loadPreferences(bool configure_session=true); |  | ||||||
|   void processParams(const QString& params); |  | ||||||
|   void processParams(const QStringList& params); |  | ||||||
|   void addTorrent(QString path); |  | ||||||
|   void addUnauthenticatedTracker(const QPair<QTorrentHandle,QString> &tracker); |  | ||||||
|   void processDownloadedFiles(QString path, QString url); |  | ||||||
|   void finishedTorrent(QTorrentHandle& h) const; |  | ||||||
|   void askRecursiveTorrentDownloadConfirmation(QTorrentHandle &h); |  | ||||||
|   // Options slots |  | ||||||
|   void on_actionOptions_triggered(); |  | ||||||
|   void optionsSaved(); |  | ||||||
|   // HTTP slots |  | ||||||
|   void on_actionDownload_from_URL_triggered(); |  | ||||||
|  |  | ||||||
| protected: |   public slots: | ||||||
|   void closeEvent(QCloseEvent *); |     void trackerAuthenticationRequired(QTorrentHandle& h); | ||||||
|   void showEvent(QShowEvent *); |     void setTabText(int index, QString text) const; | ||||||
|   bool event(QEvent * event); |     void showNotificationBaloon(QString title, QString msg) const; | ||||||
|   void displayRSSTab(bool enable); |  | ||||||
|   void displaySearchTab(bool enable); |  | ||||||
|  |  | ||||||
| private: |   protected: | ||||||
|   QFileSystemWatcher *executable_watcher; |     void closeEvent(QCloseEvent *); | ||||||
|   // Bittorrent |     void showEvent(QShowEvent *); | ||||||
|   Bittorrent *BTSession; |     bool event(QEvent * event); | ||||||
|   QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; // Still needed? |     void displayRSSTab(bool enable); | ||||||
|   // GUI related |  | ||||||
|   QTimer *guiUpdater; |  | ||||||
|   HidableTabWidget *tabs; |  | ||||||
|   StatusBar *status_bar; |  | ||||||
|   QPointer<options_imp> options; |  | ||||||
|   QPointer<consoleDlg> console; |  | ||||||
|   QPointer<about> aboutDlg; |  | ||||||
|   QPointer<createtorrent> createTorrentDlg; |  | ||||||
|   QPointer<downloadFromURL> downloadFromURLDialog; |  | ||||||
|   QPointer<QSystemTrayIcon> systrayIcon; |  | ||||||
|   QPointer<QTimer> systrayCreator; |  | ||||||
|   QPointer<QMenu> myTrayIconMenu; |  | ||||||
|   TransferListWidget *transferList; |  | ||||||
|   TransferListFiltersWidget *transferListFilters; |  | ||||||
|   PropertiesWidget *properties; |  | ||||||
|   bool displaySpeedInTitle; |  | ||||||
|   bool force_exit; |  | ||||||
|   bool ui_locked; |  | ||||||
|   LineEdit *search_filter; |  | ||||||
|   // Keyboard shortcuts |  | ||||||
|   QShortcut *switchSearchShortcut; |  | ||||||
|   QShortcut *switchSearchShortcut2; |  | ||||||
|   QShortcut *switchTransferShortcut; |  | ||||||
|   QShortcut *switchRSSShortcut; |  | ||||||
|   // Widgets |  | ||||||
|   QAction *prioSeparator; |  | ||||||
|   QAction *prioSeparator2; |  | ||||||
|   QSplitter *hSplitter; |  | ||||||
|   QSplitter *vSplitter; |  | ||||||
|   QMenu *lockMenu; |  | ||||||
|   // Search |  | ||||||
|   QPointer<SearchEngine> searchEngine; |  | ||||||
|   // RSS |  | ||||||
|   QPointer<RSSImp> rssWidget; |  | ||||||
|  |  | ||||||
| private slots: |   public: | ||||||
|     void on_actionSearch_engine_triggered(); |     // Construct / Destruct | ||||||
|     void on_actionRSS_Reader_triggered(); |     GUI(QWidget *parent=0, QStringList torrentCmdLine=QStringList()); | ||||||
|     void on_actionSpeed_in_title_bar_triggered(); |     ~GUI(); | ||||||
|     void on_actionTop_tool_bar_triggered(); |     // Methods | ||||||
|     void on_actionShutdown_when_downloads_complete_triggered(); |     int getCurrentTabIndex() const; | ||||||
|  |     QPoint screenCenter() const; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|   | |||||||
| Before Width: | Height: | Size: 322 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/L.gif
									
									
									
									
									
								
							
							
						
						| Before Width: | Height: | Size: 66 B | 
| Before Width: | Height: | Size: 546 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/locale.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
| Before Width: | Height: | Size: 7.0 KiB | 
| Before Width: | Height: | Size: 2.3 KiB | 
| Before Width: | Height: | Size: 1.0 KiB | 
| Before Width: | Height: | Size: 1.0 KiB | 
| Before Width: | Height: | Size: 409 B | 
| Before Width: | Height: | Size: 1.8 KiB | 
| Before Width: | Height: | Size: 1.0 KiB | 
| Before Width: | Height: | Size: 892 B | 
| Before Width: | Height: | Size: 996 B | 
| Before Width: | Height: | Size: 929 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/oxygen/mail-queue.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 860 B |