Compare commits
	
		
			113 Commits
		
	
	
		
			release-2.
			...
			release-2.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 3d9a128283 | ||
|   | 39867f4681 | ||
|   | 30659a353d | ||
|   | d4b5f68295 | ||
|   | 01725b1b55 | ||
|   | 64654705ca | ||
|   | 049b08999a | ||
|   | 0150a05c68 | ||
|   | 8df71e6c44 | ||
|   | cc53b5bb15 | ||
|   | e66a956596 | ||
|   | 799a6f0d85 | ||
|   | 5d4a660631 | ||
|   | a721fd389b | ||
|   | 5923be57b4 | ||
|   | 1a9bd1b171 | ||
|   | 4322d38b87 | ||
|   | f16a7e0088 | ||
|   | 9a24243359 | ||
|   | b5e2058b44 | ||
|   | ddc803a250 | ||
|   | 1fd63f0665 | ||
|   | 2b1399303e | ||
|   | 82e7a2d724 | ||
|   | 0dc8773595 | ||
|   | 1d358dc9a7 | ||
|   | 1fc0310803 | ||
|   | 3b35050736 | ||
|   | adfdb78821 | ||
|   | c3e79b843b | ||
|   | ee83c5490e | ||
|   | 9ccf603c0b | ||
|   | ae8d92f7d0 | ||
|   | 095c8654e8 | ||
|   | fae47c8494 | ||
|   | 65efd657a0 | ||
|   | 552bc3c689 | ||
|   | 8d563f9eb6 | ||
|   | 54cd79201f | ||
|   | 9c633b0975 | ||
|   | 67db694494 | ||
|   | a42d4afeb7 | ||
|   | a8a42fb8f3 | ||
|   | 2b9692ddde | ||
|   | 4b3c04439e | ||
|   | f0a2efd481 | ||
|   | 2a44ec9b91 | ||
|   | 895d5151e1 | ||
|   | 233d6bbb8d | ||
|   | 66ee39df9a | ||
|   | 35e36036be | ||
|   | 1b0de21b52 | ||
|   | 536f275ca3 | ||
|   | 3238336e6e | ||
|   | bd8c03ecd8 | ||
|   | 32ed944ac8 | ||
|   | 72fbf11f70 | ||
|   | 0dc4b27cb6 | ||
|   | a5aa1a5cab | ||
|   | 2dbf418f5a | ||
|   | 04f6d96575 | ||
|   | 25eb43d3bb | ||
|   | cc785c4eea | ||
|   | a589cb7fdc | ||
|   | 4704b50379 | ||
|   | f43de35c33 | ||
|   | ec61870c9e | ||
|   | 746ffaf420 | ||
|   | c60545977c | ||
|   | 10020ed520 | ||
|   | 0aae5f947d | ||
|   | 11b5965b31 | ||
|   | 35b2377e68 | ||
|   | b0ab072aba | ||
|   | 4552df5ec2 | ||
|   | c19db4fa04 | ||
|   | 74e2339bc8 | ||
|   | 991c308423 | ||
|   | 1867643288 | ||
|   | 50023bd968 | ||
|   | 30c5bf3fd6 | ||
|   | 4e2d9564d1 | ||
|   | 600186a6e9 | ||
|   | ca0e605276 | ||
|   | 201aaae897 | ||
|   | 629dc15bef | ||
|   | 35541e14aa | ||
|   | cdede2d3db | ||
|   | 1f2e34b828 | ||
|   | d5aaf975dd | ||
|   | 4ac59dbaba | ||
|   | 67802b16ab | ||
|   | 41883c99c5 | ||
|   | d663c7bd3a | ||
|   | a6d1090515 | ||
|   | 7844ce287d | ||
|   | c6ce0d35b2 | ||
|   | eec56074fc | ||
|   | 7c180dc57a | ||
|   | 043b9f2981 | ||
|   | 229559ef67 | ||
|   | 5e4b815d0f | ||
|   | c98ab55e11 | ||
|   | 632c2c5e4a | ||
|   | bbd9764f9c | ||
|   | 7437bd4265 | ||
|   | 1299e75934 | ||
|   | 514f82a3c9 | ||
|   | 51a69dc36a | ||
|   | 737fee79ed | ||
|   | e5e4bb1111 | ||
|   | 75111cdd8a | ||
|   | f5f915eb5d | 
							
								
								
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,14 +0,0 @@ | ||||
| src/geoip/GeoIP.dat | ||||
| src/qbittorrent | ||||
| qbittorrent.pro.user | ||||
| conf.pri | ||||
| Makefile | ||||
| *.pyc | ||||
| *.log | ||||
| # Compiled object files | ||||
| *.o | ||||
| # Generated MOC, resource and UI files | ||||
| moc_*.cpp | ||||
| qrc_*.cpp | ||||
| ui_*.h | ||||
| *.moc | ||||
							
								
								
									
										9
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						| @@ -50,10 +50,6 @@ Images Authors: | ||||
|   copyright: Greg Houston <gregory.houston@gmail.com> | ||||
|   license: MIT | ||||
|  | ||||
| * file: src/Icons/skin/qbittorrent_mono* | ||||
|   copyright: Daniel Eguren <deguren@gmail.com> | ||||
|   license: LGPL | ||||
|  | ||||
| * file: src/search_engine/engines/btjunkie.png | ||||
|   copyright: Downloaded from btjunkie.org | ||||
|  | ||||
| @@ -74,8 +70,6 @@ Translations authors: | ||||
|   copyright: | ||||
|   - Arabic: SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com) | ||||
|   - Armenian: Hrant Ohanyan (hrantohanyan@mail.am) | ||||
|   - Basque: Xabier Aramendi (azpidatziak@gmail.com) | ||||
|   - Belarusian: Mihas Varantsou (meequz@gmail.com) | ||||
|   - Brazilian: Nick Marinho (nickmarinho@gmail.com) | ||||
|   - Bulgarian: Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net) | ||||
|   - Catalan: Francisco Luque Contreras (frannoe@ya.com) | ||||
| @@ -89,12 +83,11 @@ Translations authors: | ||||
|   - Finnish: Niklas Laxström (nikerabbit@users.sourceforge.net) | ||||
|   - French: Christophe Dumez (chris@qbittorrent.org) | ||||
|   - Galician: Marcos Lans (marcoslansgarza@gmail.com) | ||||
|   - Georgian: Beqa Arabuli (arabulibeqa@yahoo.com) | ||||
|   - German: Niels Hoffmann (zentralmaschine@users.sourceforge.net) | ||||
|   - Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net) and Stephanos Antaris (santaris@csd.auth.gr) | ||||
|   - Hungarian: Majoros Péter (majoros.j.p@t-online.hu) | ||||
|   - Italian: Matteo Sechi (bu17714@gmail.com) | ||||
|   - Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com) | ||||
|   - Japanese: Nardog (alphisation@gmail.com) | ||||
|   - Korean: Jin Woo Sin (jin828sin@users.sourceforge.net) | ||||
|   - Lithuanian: Naglis Jonaitis (njonaitis@gmail.com) | ||||
|   - Norwegian: Tomaso | ||||
|   | ||||
							
								
								
									
										157
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						| @@ -1,105 +1,70 @@ | ||||
| * Sat Mar 17 2012 - Christophe Dumez <chris@qbittorrent.org> - v2.9.6 | ||||
|     - BUGFIX: Fix download first/last pieces state reporting | ||||
|     - BUGFIX: Fix name of progress column in torrent content panel | ||||
|     - BUGFIX: Disable system tray icon on Mac OS X | ||||
|     - BUGFIX: RSS downloader should not ignore "Do not start automatically" rule (closes #946910) | ||||
|     - BUGFIX: Fix DHT port setting in Web UI (Closes #952182) | ||||
|     - BUGFIX: Fix possible Web UI authentication problem when using SSL (closes #941343) | ||||
|     - BUGFIX: Fix possible issues with folder removal when removing a torrent | ||||
|     - I18N: Add Basque translation | ||||
| * Sat Feb 26 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.7 | ||||
|   - BUGFIX: Encoding fixes (Windows) | ||||
|   - BUGFIX: Fix "append label to save path" (Windows) | ||||
|   - BUGFIX: Disable OS cache for aligned files to reduce memory consumption | ||||
|   - BUGFIX: Fix torrent upload from Web UI (Windows) | ||||
|   - BUGFIX: Fix cursor problem in torrent addition dialog | ||||
|   - BUGFIX: Fix crash when additing an empty tracker URL | ||||
|   - BUGFIX: Share ratio can now go over 100 | ||||
|   - BUGFIX: Fix compilation with boost >= v1.46 | ||||
|  | ||||
| * Sat Feb 18 2012 - Christophe Dumez <chris@qbittorrent.org> - v2.9.5 | ||||
|     - BUGFIX: Fix crash when disabling then reenabling RSS | ||||
|     - BUGFIX: Fix duplicate torrent detection when adding a magnet link | ||||
|     - BUGFIX: Fix import of new trackers when adding a torrent with same hash (Closes #747000) | ||||
|     - BUGFIX: Fix possible redownload of torrents marked as read (Closes #927495) | ||||
|     - BUGFIX: Properly remove RSS feed settings/history upon feed removal | ||||
| * Tue Feb 8 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.6  | ||||
|   - FEATURE: IP address reported to trackers is now customizable | ||||
|   - BUGFIX: Use slashes instead of antislashes in URLs (Windows) | ||||
|   - BUGFIX: Fix articles read state reset problem in RSS | ||||
|   - BUGFIX: Fix possible path encoding issues on Windows | ||||
|   - BUGFIX: Fix downloads from URLs on Windows | ||||
|   - I18N: Added Lithuanian translation | ||||
|   - COSMETIC: Improve main window layout | ||||
|   - COSMETIC: Improve properties buttons style | ||||
|   - COSMETIC: Display pieces being downloaded in green instead of yellow | ||||
|   - COSMETIC: Improve piece availability bar appearance | ||||
|  | ||||
| * Sat Feb 18 2012 - Christophe Dumez <chris@qbittorrent.org> - v2.9.4 | ||||
|     - BUGFIX: qBittorrent does not handle redirection to relative URLs correctly (Closes #919905) | ||||
|     - BUGFIX: Cmd+M minimizes main window on Mac OS X (Closes #928216) | ||||
|     - BUGFIX: Cmd+Del removes torrents on Mac OS X (Closes #928852) | ||||
|     - BUGFIX: Fix potential bug when moving single file torrents to tmp folder (closes #932861) | ||||
|     - BUGFIX: Fix torrent import dialog layout (Closes #930932) | ||||
|     - BUGFIX: Prevent log window buffer from filling up (Closes #929673) | ||||
|     - I18N: Add Belarusian translation | ||||
| * Thu Feb 3 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.5 | ||||
|    - BUGFIX: Make sure the progress is not 100% unless the file is complete | ||||
|    - BUGFIX: Fix memory leak in HTTP torrent downloader | ||||
|    - BUGFIX: Use native file dialogs (by Vladimir Golovnev) | ||||
|    - BUGFIX: Fix encoding problem in torrent moving code (by Vladimir Golovnev) | ||||
|    - BUGFIX: Performance improvement on ARM | ||||
|    - BUGFIX: RSS code rewrite (more cpu/memory efficient) | ||||
|    - I18N: Updated Norwegian translation (Tomaso) | ||||
|  | ||||
| * Thu Dec 29 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.3 | ||||
|     - BUGFIX: Fix btdigg plugin (Python3 support + torrent name in magnet links) | ||||
|     - BUGFIX: Fix banning of IPv6 peers (Closes #885021) | ||||
|     - BUGFIX: Fix torrent addition dialog layout problem (Closes #84650522) | ||||
|     - BUGFIX: Do not report any progress for disabled files (Closes #56731485) | ||||
|     - BUGFIX: Make torrent sorting case insensitive (Closes #857154) | ||||
|     - BUGFIX: Improve Web UI usability of small devices | ||||
|     - BUGFIX: Program updater: More reliable version detection / comparison | ||||
|     - I18N: Add Georgian translation | ||||
| * Sun Jan 23 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.4 | ||||
|    - BUGFIX: Added unicode support to email notification | ||||
|    - BUGFIX: Improved compatibility with various SMTP servers | ||||
|    - BUGFIX: Fix Labeling in RSS downloader | ||||
|    - BUGFIX: Avoid main window flashing on startup (closes #703984) | ||||
|    - BUGFIX: Improved hostname resolution code | ||||
|    - BUGFIX: Dropped dependency on libboost-thread | ||||
|    - BUGFIX: Display legal notice on screen center | ||||
|    - BUGFIX: Fix renaming of single-file torrents (by Vladimir Golovnev) | ||||
|    - I18N: More dialog buttons are now translated (by Vladimir Golovnev) | ||||
|    - I18N: Fix translation of size units (by Vladimir Golovnev) | ||||
|  | ||||
| * Sat Oct 29 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.2 | ||||
|     - BUGFIX: Fix mimimum dimensions for torrent addition dialog | ||||
|     - BUGFIX: Remove dependency on boost-datetime | ||||
|     - BUGFIX: Remove dependency on boost-filesystem (libtorrent v0.16.x) | ||||
| * Sat Jan 15 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.3 | ||||
|    - BUGFIX: Fix possible crashes in full allocation mode | ||||
|    - BUGFIX: Fix icon size issues (Linux, icon theme) | ||||
|    - BUGFIX: Fixed file priority context menu | ||||
|    - BUGFIX: Remove dbus dependency in nox mode | ||||
|    - BUGFIX: Fix compilation on FreeBSD | ||||
|    - I18N: Improve Web UI translation | ||||
|    - I18N: Updated Polish translation | ||||
|  | ||||
| * Sun Oct 23 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.1 | ||||
|     - BUGFIX: Add support for speed limits scheduling (Web UI) | ||||
|     - BUGFIX: Fix ratio calculation for purely seeded torrents | ||||
|     - I18N: Update Russian translation | ||||
|     - COSMETIC: Torrent addition dialog layout fixes | ||||
| * Wed Jan 12 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.2 | ||||
|     - BUGFIX: Do not report PeX as being disabled when DHT is | ||||
|     - BUGFIX: Fix possible crash on adding magnet links | ||||
|     - BUGFIX: Fix torrent import (was not working) | ||||
|     - I18N: Updated Greek, Croatian, Russian, Unkrainian and Bulgarian translations | ||||
|     - I18N: Added Armenian translation (New) | ||||
|     - I18N: Remove country flags from program preferences (language selection) | ||||
|     - I18N: Translate locale names (language selection) | ||||
|  | ||||
| * Sat Oct 08 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.9.0 | ||||
|     - FEATURE: Add file association settings to program preferences (Windows) | ||||
|     - FEATURE: Add setting to ignore slow torrents in queueing system | ||||
|     - FEATURE: Add advanced setting to announce to all trackers | ||||
|     - FEATURE: Add support for anonymous mode (libtorrent >= v0.16) | ||||
|     - FEATURE: Add quick "set as default save path" checkbox to torrent addition dialog (sledgehammer999) | ||||
|     - BUGFIX: Add tray menu entry for toggling window visibility | ||||
|     - BUGFIX: Fix execution log lines selection and copying | ||||
|     - BUGFIX: Reduce CPU usage when running Web UI | ||||
|     - BUGFIX: Save RSS items to disk regularly for safety | ||||
|     - BUGFIX: Fix ratio calculation (use all_time_download) | ||||
|     - BUGFIX: Fix torrent upload issues (Web UI) | ||||
|     - BUGFIX: Fix some IE incompatibilities (Web UI) | ||||
|     - COSMETIC: Display speed at the beginning of the Window title | ||||
|     - COSMETIC: Several cosmetic fixes to the Web UI | ||||
|     - COSMETIC: Make top toolbar follow system style | ||||
|     - OTHER: Display libraries versions in about dialog (sledgehammer999) | ||||
|     - OTHER: Display qBittorrent version in Web UI about dialog | ||||
|  | ||||
| * Thu Jun 02 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.8.0 | ||||
|     - FEATURE: Added full libtorrent v0.16 support (uTP, ...) | ||||
|     - FEATURE: Proxy can be disabled for peer connections | ||||
|     - FEATURE: Added support for secure SMTP connection (SSL) | ||||
|     - FEATURE: Added support for SMTP authentication | ||||
|     - FEATURE: Added UPnP/NAT-PMP port forward for the Web UI port | ||||
|     - FEATURE: qBittorrent can update dynamic DNS services (DynDNS, no-ip) | ||||
|     - FEATURE: Display peer connection type in peer list (BT, uTP, Web) | ||||
|     - FEATURE: Added full regex support to RSS downloader | ||||
|     - FEATURE: Added regex help and validation in RSS downloader | ||||
|     - FEATURE: Added HTTPS support to Web UI (Ishan Arora) | ||||
|     - BUGFIX: Change systray icon on the fly (no restart needed) | ||||
|     - BUGFIX: Remember peer-level rate limits (requires libtorrent v0.16) | ||||
|     - BUGFIX: Stop annoncing to trackers an all tiers (more respectful) | ||||
|     - BUGFIX: Stop sharing private trackers with other peers | ||||
|     - BUGFIX: Tracker exchange extension can be disabled | ||||
|     - BUGFIX: Cleaner program exit on system log out | ||||
|     - BUGFIX: Fix possible magnet link parsing problems | ||||
|     - BUGFIX: Fix possible RSS URL parsing problems | ||||
|     - COSMETIC: Added monochrome icon for light themes  | ||||
|  | ||||
| * Sun Mar 20 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.7.0 | ||||
|     - FEATURE: Added search field for torrent content | ||||
|     - FEATURE: Added auto-shutdown confirmation dialog | ||||
|     - FEATURE: Added option to skip torrent deletion confirmation (Ville Kiiskinen) | ||||
|     - FEATURE: IP address reported to trackers is now customizable | ||||
|     - FEATURE: Inhibit system sleep when torrents are active (Vladimir Golovnev) | ||||
|     - FEATURE: Added option to bypass Web UI authentication for localhost | ||||
|     - FEATURE: Added option to disable program exit confirmation | ||||
|     - FEATURE: Added per-torrent ratio limiting (Christian Kandeler) | ||||
|     - FEATURE: Torrent content list is now sortable | ||||
|     - BUGFIX: Fix compilation with namespaced Qt (Christian Kandeler) | ||||
|     - BUGFIX: Added length restriction on UI lock password | ||||
|     - COSMETIC: Added monochrome tray icon | ||||
|     - COSMETIC: Improved status bar's style | ||||
|     - OTHER: Make QtDBus dependency optional (X11) | ||||
| * Mon Jan 10 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.1 | ||||
|     - BUGFIX: Really disable torrent addition dialog by default | ||||
|     - BUGFIX: Fix some missing icons in the Web UI | ||||
|     - BUGFIX: Fix magnet torrent name update problem | ||||
|     - COSMETIC: Use 24px size for toolbar icons and reduce spacing | ||||
|     - COSMETIC: Move transfer list filter on the right side of the toolbar | ||||
|  | ||||
| * Sun Jan 9 2011 - Christophe Dumez <chris@qbittorrent.org> - v2.6.0 | ||||
|     - FEATURE: Use system icons (Linux, Qt >= 4.6) | ||||
|   | ||||
							
								
								
									
										14
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						| @@ -10,23 +10,25 @@ qBittorrent - A BitTorrent client in C++ / Qt4 | ||||
|   will install and execute qBittorrent hopefully without any problems. | ||||
|  | ||||
|   Dependencies: | ||||
|     - Qt >= 4.5.0 (libqtgui, libqtcore, libqtnetwork, libqtxml, libqtdbus/optional) | ||||
|     - Qt >= 4.5.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) | ||||
|  | ||||
|     - pkg-config executable | ||||
|  | ||||
|     - libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, compatible with v0.15.x/v0.16.x) | ||||
|     - libtorrent-rasterbar by Arvid Norberg (>= 0.14.4 REQUIRED, compatible with v0.15.x) | ||||
|         -> http://www.libtorrent.net | ||||
|         Be careful: another library (the one used by rTorrent) uses a similar name. | ||||
|  | ||||
|     - libboost 1.34.x (libboost-filesystem°) + libasio | ||||
|     - libboost 1.34.x (libboost-filesystem, libboost-date-time) + libasio | ||||
|       or | ||||
|     - libboost >= 1.35.x (libboost-system, libboost-filesystem°) | ||||
|        | ||||
|     °libboost-filesystem is not needed if libtorrent-rasterbar >= v0.16.x is used | ||||
|     - libboost >= 1.35.x (libboost-system, libboost-filesystem, libboost-date-time) | ||||
|  | ||||
|     - 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 | ||||
|   | ||||
							
								
								
									
										18
									
								
								macxconf.pri
									
									
									
									
									
								
							
							
						
						| @@ -2,22 +2,8 @@ PREFIX = /usr/local | ||||
| BINDIR = /usr/local/bin | ||||
| DATADIR = /usr/local/share | ||||
|  | ||||
| # Use pkg-config to get all necessary libtorrent DEFINES | ||||
| CONFIG += link_pkgconfig | ||||
| PKGCONFIG += libtorrent-rasterbar | ||||
|  | ||||
| # Special include/libs paths (macports) | ||||
| INCLUDEPATH += /usr/include/openssl /usr/include /opt/local/include/boost /opt/local/include | ||||
| LIBS += -L/opt/local/lib | ||||
|  | ||||
| # OpenSSL lib | ||||
| LIBS += -lssl -lcrypto | ||||
| # Boost system lib | ||||
| LIBS += -lboost_system-mt | ||||
| # Boost filesystem lib (Not needed for libtorrent >= 0.16.0) | ||||
| LIBS += -lboost_filesystem-mt | ||||
| # Carbon | ||||
| LIBS += -framework Carbon -framework IOKit | ||||
| INCLUDEPATH += /usr/local/include/libtorrent /usr/include/openssl /usr/include /opt/local/include/boost /opt/local/include | ||||
| LIBS += -ltorrent-rasterbar -lcrypto -L/opt/local/lib -lboost_system-mt -lboost_filesystem-mt -lboost_thread-mt -framework Cocoa -framework Carbon | ||||
|  | ||||
| document_icon.path = Contents/Resources | ||||
| document_icon.files = Icons/qBitTorrentDocument.icns | ||||
|   | ||||
| @@ -11,8 +11,5 @@ LIBS += -ltorrent-rasterbar \ | ||||
|  | ||||
| RC_FILE = qbittorrent_os2.rc | ||||
|  | ||||
| # LIBTORRENT DEFINES | ||||
| DEFINES += WITH_SHIPPED_GEOIP_H | ||||
|  | ||||
| DEFINES += WITH_GEOIP_EMBEDDED | ||||
| message("On eCS(OS/2), GeoIP database must be embedded.") | ||||
|   | ||||
| @@ -2,15 +2,3 @@ TEMPLATE = subdirs | ||||
|  | ||||
| SUBDIRS += src | ||||
|  | ||||
| include(version.pri) | ||||
|  | ||||
| # Dist | ||||
| dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/ && | ||||
| dist.commands += git clone . ../$${PROJECT_NAME}-$${PROJECT_VERSION} && | ||||
| dist.commands += rm -fR ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.git && | ||||
| dist.commands += rm -f ../$${PROJECT_NAME}-$${PROJECT_VERSION}/.gitignore && | ||||
| dist.commands += cd .. && | ||||
| dist.commands += tar czf $${PROJECT_NAME}-$${PROJECT_VERSION}.tar.gz $${PROJECT_NAME}-$${PROJECT_VERSION} && | ||||
| dist.commands += rm -fR $${PROJECT_NAME}-$${PROJECT_VERSION} | ||||
|  | ||||
| QMAKE_EXTRA_TARGETS += dist | ||||
|   | ||||
| @@ -6,8 +6,6 @@ | ||||
|   <dep type='qt4'> | ||||
|     <required/> | ||||
|   </dep> | ||||
|   <dep type='qt-dbus'> | ||||
|   </dep> | ||||
|   <dep type='pkg-config'> | ||||
|     <required/> | ||||
|   </dep> | ||||
| @@ -17,6 +15,8 @@ | ||||
|   <dep type='libboost'> | ||||
|     <required/> | ||||
|   </dep> | ||||
|   <dep type='libnotify'> | ||||
|   </dep> | ||||
|   <dep type='geoip-database'> | ||||
|   </dep> | ||||
|   <dep type='qtsingleapplication'> | ||||
|   | ||||
							
								
								
									
										117
									
								
								qcm/libboost.qcm
									
									
									
									
									
								
							
							
						
						| @@ -6,15 +6,12 @@ arg: with-libboost-lib=[path], Path to libboost library files | ||||
| -----END QCMOD----- | ||||
| */ | ||||
| #include <boost/version.hpp> | ||||
| #include <libtorrent/version.hpp> | ||||
|  | ||||
| class qc_libboost : public ConfObj | ||||
| { | ||||
| public: | ||||
|   qc_libboost(Conf *c) : ConfObj(c) {} | ||||
|   QString name() const { return "libboost"; } | ||||
|   QString shortname() const { return "libboost"; } | ||||
|  | ||||
| 	qc_libboost(Conf *c) : ConfObj(c) {} | ||||
| 	QString name() const { return "libboost"; } | ||||
| 	QString shortname() const { return "libboost"; } | ||||
|   QString findBoostLib(QString path, QString lib) const { | ||||
|     QString name; | ||||
|     QDir libDir(path); | ||||
| @@ -38,60 +35,78 @@ public: | ||||
|     } | ||||
|     return name; | ||||
|   } | ||||
|  | ||||
|   bool exec(){ | ||||
|     QStringList sl; | ||||
|     QString s = conf->getenv("QC_WITH_LIBBOOST_INC"); | ||||
|     if (!s.isEmpty()) | ||||
|       sl << s; | ||||
|     sl << "/usr/include"; | ||||
|     sl << "/usr/local/include"; | ||||
|     bool found = false; | ||||
|     foreach (s, sl) { | ||||
|       if (conf->checkHeader(s, "boost/format.hpp") | ||||
| #if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16 | ||||
|           && conf->checkHeader(s, "boost/filesystem/path.hpp") | ||||
| #endif | ||||
|          ) { | ||||
|         found = true; | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|     if (!found) | ||||
|       return false; | ||||
|  | ||||
|     conf->addIncludePath(s); | ||||
|  | ||||
|     // Find library | ||||
|     s = conf->getenv("QC_WITH_LIBBOOST_LIB"); | ||||
| 	bool exec(){ | ||||
|         	QString s; | ||||
| 		s = conf->getenv("QC_WITH_LIBBOOST_INC"); | ||||
| 		if(!s.isEmpty()) { | ||||
| 			if(!conf->checkHeader(s, "boost/format.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 			if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 			if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 		}else{ | ||||
| 			QStringList sl; | ||||
| 			sl << "/usr/include"; | ||||
| 			sl << "/usr/local/include"; | ||||
| 			bool found = false; | ||||
| 			foreach(s, sl){ | ||||
| 				if(conf->checkHeader(s, "boost/format.hpp")){ | ||||
| 					found = true; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			if(!found) { | ||||
| 				return false; | ||||
|           		} | ||||
| 			if(!conf->checkHeader(s, "boost/date_time/posix_time/posix_time.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 			if(!conf->checkHeader(s, "boost/filesystem/path.hpp")) { | ||||
| 				return false; | ||||
|       			} | ||||
| 		} | ||||
| 		conf->addIncludePath(s); | ||||
| 		// Find library | ||||
| 		s = conf->getenv("QC_WITH_LIBBOOST_LIB"); | ||||
|     QStringList required_libs; | ||||
| #if BOOST_VERSION >= 103500 | ||||
|       required_libs << "system";  | ||||
| #endif | ||||
| #if LIBTORRENT_VERSION_MAJOR == 0 && LIBTORRENT_VERSION_MINOR < 16 | ||||
|     required_libs << "filesystem" ; | ||||
| #endif | ||||
|     required_libs << "thread"; | ||||
|     if(conf->getenv("QC_DISABLE_GUI").isEmpty()) { | ||||
|       // Not required by nox | ||||
|       required_libs << "filesystem" ; | ||||
|     } | ||||
|     QStringList libDirs; | ||||
|     if (!s.isEmpty()) | ||||
|       libDirs << s; | ||||
|     libDirs << "/usr/lib/" << "/usr/lib64/" << "/usr/local/lib/" << "/usr/local/lib64/"; | ||||
|  | ||||
|     foreach(const QString& lib, required_libs) { | ||||
|       bool found = false; | ||||
|       foreach(const QString& libDir, libDirs) { | ||||
|         QString detected_name = findBoostLib(libDir, lib); | ||||
|         if(!detected_name.isEmpty()) { | ||||
|       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); | ||||
|           found = true; | ||||
|           break; | ||||
|         } | ||||
|       } 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; | ||||
|         } | ||||
|       } | ||||
|       if(!found) { | ||||
|         printf("Could not find boost %s library!\n", qPrintable(lib)); | ||||
|         return false; | ||||
|       } | ||||
|     } | ||||
|     return true; | ||||
|   } | ||||
| 		return true; | ||||
| 	} | ||||
| }; | ||||
|   | ||||
| @@ -19,6 +19,9 @@ public: | ||||
| 			return false; | ||||
| 		for(int n = 0; n < incs.count(); ++n) | ||||
| 			conf->addIncludePath(incs[n]); | ||||
| 		if(conf->getenv("QC_DISABLE_GUI").isEmpty()) { | ||||
|   		  conf->addLib("-lcrypto"); | ||||
|                 } | ||||
| 		return true; | ||||
| 	} | ||||
| }; | ||||
|   | ||||
| @@ -1,31 +0,0 @@ | ||||
| /* | ||||
| -----BEGIN QCMOD----- | ||||
| name: qt-dbus | ||||
| -----END QCMOD----- | ||||
| */ | ||||
| // see  Conf::findPkgConfig | ||||
| class qc_qt_dbus : public ConfObj | ||||
| { | ||||
| public: | ||||
| 	qc_qt_dbus(Conf *c) : ConfObj(c) {} | ||||
| 	QString name() const { return "QtDBus >= 4.5"; } | ||||
| 	QString shortname() const { return "qt-dbus"; } | ||||
|         QString checkString() const { | ||||
|                 if(!conf->getenv("QC_DISABLE_qt_dbus").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) | ||||
|                         return ""; | ||||
|                 return ConfObj::checkString(); | ||||
|         } | ||||
| 	bool exec(){ | ||||
|                 if(!conf->getenv("QC_DISABLE_qt_dbus").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) | ||||
|                   return false; | ||||
| 		QStringList incs; | ||||
| 		QString req_ver = "4.5.0"; | ||||
| 		QString version, libs, other; | ||||
| 		VersionMode mode = VersionMin; | ||||
| 		if(conf->findPkgConfig("QtDBus", mode, req_ver, &version, &incs, &libs, &other)) { | ||||
|                         conf->addExtra("CONFIG += dbus"); | ||||
| 			return true; | ||||
|                 } | ||||
| 		return false; | ||||
| 	} | ||||
| }; | ||||
| @@ -1,31 +0,0 @@ | ||||
| /* | ||||
| -----BEGIN QCMOD----- | ||||
| name: qt-svg | ||||
| -----END QCMOD----- | ||||
| */ | ||||
| // see  Conf::findPkgConfig | ||||
| class qc_qt_svg : public ConfObj | ||||
| { | ||||
| public: | ||||
| 	qc_qt_svg(Conf *c) : ConfObj(c) {} | ||||
| 	QString name() const { return "QtSvg >= 4.5"; } | ||||
| 	QString shortname() const { return "qt-svg"; } | ||||
|         QString checkString() const { | ||||
|                 if(!conf->getenv("QC_DISABLE_qt_svg").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) | ||||
|                         return ""; | ||||
|                 return ConfObj::checkString(); | ||||
|         } | ||||
| 	bool exec(){ | ||||
|                 if(!conf->getenv("QC_DISABLE_qt_svg").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) | ||||
|                   return false; | ||||
| 		QStringList incs; | ||||
| 		QString req_ver = "4.5.0"; | ||||
| 		QString version, libs, other; | ||||
| 		VersionMode mode = VersionMin; | ||||
| 		if(conf->findPkgConfig("QtSvg", mode, req_ver, &version, &incs, &libs, &other)) { | ||||
|                         conf->addExtra("CONFIG += svg"); | ||||
| 			return true; | ||||
|                 } | ||||
| 		return false; | ||||
| 	} | ||||
| }; | ||||
| @@ -19,11 +19,7 @@ public: | ||||
| 		} | ||||
|                 // Debug mode | ||||
|                 if(!conf->getenv("QC_ENABLE_DEBUG").isEmpty()) { | ||||
|                   conf->addExtra("CONFIG -= release"); | ||||
|                   conf->addExtra("CONFIG += debug"); | ||||
|                 } else { | ||||
|                   conf->addExtra("CONFIG -= debug"); | ||||
|                   conf->addExtra("CONFIG += release"); | ||||
|                 } | ||||
|                 #ifdef Q_OS_FREEBSD | ||||
|                   conf->addLib("-lexecinfo"); | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								src/Icons/downarrow.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 722 B | 
| Before Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 651 B | 
| @@ -1,6 +1,7 @@ | ||||
| [Desktop Entry] | ||||
| Categories=Network;FileTransfer;P2P;Qt; | ||||
| Exec=qbittorrent %U | ||||
| Categories=Qt;Network;P2P; | ||||
| Comment=V2.6.7 | ||||
| Exec=qbittorrent %f | ||||
| GenericName=BitTorrent client | ||||
| GenericName[ar]=العميل BitTorrent | ||||
| GenericName[bg]=Торент клиент | ||||
| @@ -29,11 +30,8 @@ GenericName[tr]=BitTorrent istemcisi | ||||
| GenericName[uk]=BitTorrent-клієнт | ||||
| GenericName[zh]=BitTorrent之用户 | ||||
| GenericName[zh_TW]=BitTorrent客戶端 | ||||
| Comment=Download and share files over BitTorrent | ||||
| Comment[fr]=Télécharger et partager des fichiers avec BitTorrent | ||||
| Comment[pl]=Dzielenie się plikami przez BitTorrent | ||||
| Icon=qbittorrent | ||||
| MimeType=application/x-bittorrent;x-scheme-handler/magnet; | ||||
| MimeType=application/x-bittorrent; | ||||
| Name=qBittorrent | ||||
| Name[ko]=큐비토런트 | ||||
| Terminal=false | ||||
|   | ||||
| Before Width: | Height: | Size: 4.8 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 483 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Icons/uparrow.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 787 B | 
| @@ -47,7 +47,7 @@ | ||||
| 	<key>CFBundlePackageType</key> | ||||
| 	<string>APPL</string> | ||||
| 	<key>CFBundleGetInfoString</key> | ||||
| 	<string>2.9.6</string> | ||||
| 	<string>2.6.7</string> | ||||
| 	<key>CFBundleSignature</key> | ||||
| 	<string>????</string> | ||||
| 	<key>CFBundleExecutable</key> | ||||
|   | ||||
							
								
								
									
										126
									
								
								src/about.ui
									
									
									
									
									
								
							
							
						
						| @@ -33,9 +33,6 @@ | ||||
|  | ||||
| #include "ui_about.h" | ||||
| #include <QFile> | ||||
| #include <QtGlobal> | ||||
| #include <libtorrent/version.hpp> | ||||
| #include <boost/version.hpp> | ||||
|  | ||||
| class about : public QDialog, private Ui::AboutDlg{ | ||||
|   Q_OBJECT | ||||
| @@ -64,8 +61,6 @@ class about : public QDialog, private Ui::AboutDlg{ | ||||
|       QString trans_txt = "<p>"+tr("I would like to thank the following people who volunteered to translate qBittorrent:")+"</p>"; | ||||
|       trans_txt += QString::fromUtf8("<ul><li><u>Arabic:</u> SDERAWI (abz8868@msn.com) and sn51234 (nesseyan@gmail.com)</li>\ | ||||
|           <li><u>Armenian:</u> Hrant Ohanyan (hrantohanyan@mail.am)</li>\ | ||||
|           <li><u>Basque:</u> Xabier Aramendi (azpidatziak@gmail.com)</li>\ | ||||
|           <li><u>Belarusian:</u> Mihas Varantsou (meequz@gmail.com)</li>\ | ||||
|           <li><u>Brazilian:</u> Nick Marinho (nickmarinho@gmail.com)</li>\ | ||||
|           <li><u>Bulgarian:</u> Tsvetan & Boyko Bankoff (emerge_life@users.sourceforge.net)</li>\ | ||||
|           <li><u>Catalan:</u> Francisco Luque Contreras (frannoe@ya.com)</li>\ | ||||
| @@ -77,12 +72,11 @@ class about : public QDialog, private Ui::AboutDlg{ | ||||
|           <li><u>Dutch:</u> Pieter Heyvaert (pieter_heyvaert@hotmail.com)</li>\ | ||||
|           <li><u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net) and Pekka Niemi (pekka.niemi@iki.fi)</li>\ | ||||
|           <li><u>Galician:</u> Marcos Lans (marcoslansgarza@gmail.com)</li>\ | ||||
|           <li><u>Georgian:</u> Beqa Arabuli (arabulibeqa@yahoo.com)</li>\ | ||||
|           <li><u>German:</u> Niels Hoffmann (zentralmaschine@users.sourceforge.net)</li>\ | ||||
|           <li><u>Greek:</u> Tsvetan Bankov (emerge_life@users.sourceforge.net)</li>\ | ||||
|           <li><u>Hungarian:</u> Majoros Péter (majoros.peterj@gmail.com)</li>\ | ||||
|           <li><u>Italian:</u> Matteo Sechi (bu17714@gmail.com)</li>\ | ||||
|           <li><u>Japanese:</u> Masato Hashimoto (cabezon.hashimoto@gmail.com)</li>\ | ||||
|           <li><u>Japanese:</u> Nardog (alphisation@gmail.com)</li>\ | ||||
|           <li><u>Korean:</u> Jin Woo Sin (jin828sin@users.sourceforge.net)</li>\ | ||||
|           <li><u>Lithuanian:</u> Naglis Jonaitis (njonaitis@gmail.com)</li>\ | ||||
|           <li><u>Norwegian:</u> Tomaso</li>\ | ||||
| @@ -105,10 +99,6 @@ class about : public QDialog, private Ui::AboutDlg{ | ||||
|         te_license->setHtml(licensefile.readAll()); | ||||
|         licensefile.close(); | ||||
|       } | ||||
|       // Libraries | ||||
|       label_11->setText(QT_VERSION_STR); | ||||
|       label_12->setText(LIBTORRENT_VERSION); | ||||
|       label_13->setText(QString::number(BOOST_VERSION / 100000) + "." + QString::number((BOOST_VERSION / 100) % 1000) + "." + QString::number(BOOST_VERSION % 100)); | ||||
|       show(); | ||||
|     } | ||||
| }; | ||||
|   | ||||
| @@ -1,81 +0,0 @@ | ||||
| /* | ||||
|  * Bittorrent Client using Qt4 and libtorrent. | ||||
|  * Copyright (C) 2011  Christophe Dumez | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License | ||||
|  * as published by the Free Software Foundation; either version 2 | ||||
|  * of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||
|  * | ||||
|  * In addition, as a special exception, the copyright holders give permission to | ||||
|  * link this program with the OpenSSL project's "OpenSSL" library (or with | ||||
|  * modified versions of it that use the same license as the "OpenSSL" library), | ||||
|  * and distribute the linked executables. You must obey the GNU General Public | ||||
|  * License in all respects for all of the code used other than "OpenSSL".  If you | ||||
|  * modify file(s), you may extend this exception to your version of the file(s), | ||||
|  * but you are not obligated to do so. If you do not wish to do so, delete this | ||||
|  * exception statement from your version. | ||||
|  * | ||||
|  * Contact : chris@qbittorrent.org | ||||
|  */ | ||||
|  | ||||
| #ifndef DNSUPDATER_H | ||||
| #define DNSUPDATER_H | ||||
|  | ||||
| #include <QObject> | ||||
| #include <QHostAddress> | ||||
| #include <QNetworkReply> | ||||
| #include <QDateTime> | ||||
| #include <QTimer> | ||||
| #include "preferences.h" | ||||
|  | ||||
| /*! | ||||
|  * Based on http://www.dyndns.com/developers/specs/ | ||||
|  */ | ||||
| class DNSUpdater : public QObject | ||||
| { | ||||
|   Q_OBJECT | ||||
| public: | ||||
|   explicit DNSUpdater(QObject *parent = 0); | ||||
|   ~DNSUpdater(); | ||||
|   static QUrl getRegistrationUrl(int service); | ||||
|  | ||||
| public slots: | ||||
|   void updateCredentials(); | ||||
|  | ||||
| private slots: | ||||
|   void checkPublicIP(); | ||||
|   void ipRequestFinished(QNetworkReply* reply); | ||||
|   void updateDNSService(); | ||||
|   void ipUpdateFinished(QNetworkReply* reply); | ||||
|  | ||||
| private: | ||||
|   QUrl getUpdateUrl() const; | ||||
|   void processIPUpdateReply(const QString &reply); | ||||
|  | ||||
| private: | ||||
|   QHostAddress m_lastIP; | ||||
|   QDateTime m_lastIPCheckTime; | ||||
|   QTimer m_ipCheckTimer; | ||||
|   int m_state; | ||||
|   // Service creds | ||||
|   DNS::Service m_service; | ||||
|   QString m_domain; | ||||
|   QString m_username; | ||||
|   QString m_password; | ||||
|  | ||||
| private: | ||||
|   static const int IP_CHECK_INTERVAL_MS = 1800000; // 30 min | ||||
|   enum State { OK, INVALID_CREDS, FATAL }; | ||||
| }; | ||||
|  | ||||
| #endif // DNSUPDATER_H | ||||
| @@ -44,14 +44,14 @@ | ||||
|  | ||||
| /** Download Thread **/ | ||||
|  | ||||
| DownloadThread::DownloadThread(QObject* parent) : QObject(parent) { | ||||
| downloadThread::downloadThread(QObject* parent) : QObject(parent) { | ||||
|   connect(&m_networkManager, SIGNAL(finished (QNetworkReply*)), this, SLOT(processDlFinished(QNetworkReply*))); | ||||
| #ifndef QT_NO_OPENSSL | ||||
|   connect(&m_networkManager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)), this, SLOT(ignoreSslErrors(QNetworkReply*,QList<QSslError>))); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
| void downloadThread::processDlFinished(QNetworkReply* reply) { | ||||
|   QString url = reply->url().toString(); | ||||
|   qDebug("Download finished: %s", qPrintable(url)); | ||||
|   // Check if the request was successful | ||||
| @@ -66,14 +66,9 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
|   const QVariant redirection = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); | ||||
|   if(redirection.isValid()) { | ||||
|     // We should redirect | ||||
|     QUrl newUrl = redirection.toUrl(); | ||||
|     // Resolve relative urls | ||||
|     if (newUrl.isRelative()) | ||||
|         newUrl = reply->url().resolved(newUrl); | ||||
|     const QString newUrlString = newUrl.toString(); | ||||
|     qDebug("Redirecting from %s to %s", qPrintable(url), qPrintable(newUrlString)); | ||||
|     m_redirectMapping.insert(newUrlString, url); | ||||
|     downloadUrl(newUrlString); | ||||
|     qDebug("Redirecting from %s to %s", qPrintable(url), qPrintable(redirection.toUrl().toString())); | ||||
|     m_redirectMapping.insert(redirection.toUrl().toString(), url); | ||||
|     downloadUrl(redirection.toUrl().toString()); | ||||
|     reply->deleteLater(); | ||||
|     return; | ||||
|   } | ||||
| @@ -91,8 +86,9 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
|       // TODO: Support GZIP compression | ||||
|       tmpfile->write(reply->readAll()); | ||||
|       tmpfile->close(); | ||||
|       // XXX: tmpfile needs to be deleted on Windows before using the file | ||||
|       // or it will complain that the file is used by another process. | ||||
|       // XXX: For some reason, tmpfile has to be destroyed before | ||||
|       // the signal is sent or the file stays locked on Windows | ||||
|       // for some reason. | ||||
|       delete tmpfile; | ||||
|       // Send finished signal | ||||
|       emit downloadFinished(url, filePath); | ||||
| @@ -110,7 +106,7 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) { | ||||
| } | ||||
|  | ||||
| #ifndef DISABLE_GUI | ||||
| void DownloadThread::loadCookies(const QString &host_name, QString url) { | ||||
| void downloadThread::loadCookies(const QString &host_name, QString url) { | ||||
|   const QList<QByteArray> raw_cookies = RssSettings().getHostNameCookies(host_name); | ||||
|   QNetworkCookieJar *cookie_jar = m_networkManager.cookieJar(); | ||||
|   QList<QNetworkCookie> cookies; | ||||
| @@ -127,13 +123,13 @@ void DownloadThread::loadCookies(const QString &host_name, QString url) { | ||||
| } | ||||
| #endif | ||||
|  | ||||
| void DownloadThread::downloadTorrentUrl(const QString &url) { | ||||
| void downloadThread::downloadTorrentUrl(const QString &url) { | ||||
|   // Process request | ||||
|   QNetworkReply *reply = downloadUrl(url); | ||||
|   connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(checkDownloadSize(qint64,qint64))); | ||||
| } | ||||
|  | ||||
| QNetworkReply* DownloadThread::downloadUrl(const QString &url){ | ||||
| QNetworkReply* downloadThread::downloadUrl(const QString &url){ | ||||
|   // Update proxy settings | ||||
|   applyProxySettings(); | ||||
| #ifndef DISABLE_GUI | ||||
| @@ -158,7 +154,7 @@ QNetworkReply* DownloadThread::downloadUrl(const QString &url){ | ||||
|   return m_networkManager.get(request); | ||||
| } | ||||
|  | ||||
| void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) { | ||||
| void downloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) { | ||||
|   QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); | ||||
|   if(!reply) return; | ||||
|   if(bytesTotal > 0) { | ||||
| @@ -179,7 +175,7 @@ void DownloadThread::checkDownloadSize(qint64 bytesReceived, qint64 bytesTotal) | ||||
|   } | ||||
| } | ||||
|  | ||||
| void DownloadThread::applyProxySettings() { | ||||
| void downloadThread::applyProxySettings() { | ||||
|   QNetworkProxy proxy; | ||||
|   const Preferences pref; | ||||
|   if(pref.isProxyEnabled()) { | ||||
| @@ -207,7 +203,7 @@ void DownloadThread::applyProxySettings() { | ||||
|   m_networkManager.setProxy(proxy); | ||||
| } | ||||
|  | ||||
| QString DownloadThread::errorCodeToString(QNetworkReply::NetworkError status) { | ||||
| QString downloadThread::errorCodeToString(QNetworkReply::NetworkError status) { | ||||
|   switch(status){ | ||||
|   case QNetworkReply::HostNotFoundError: | ||||
|     return tr("The remote host name was not found (invalid hostname)"); | ||||
| @@ -257,7 +253,7 @@ QString DownloadThread::errorCodeToString(QNetworkReply::NetworkError status) { | ||||
| } | ||||
|  | ||||
| #ifndef QT_NO_OPENSSL | ||||
| void DownloadThread::ignoreSslErrors(QNetworkReply* reply, const QList<QSslError> &errors) { | ||||
| void downloadThread::ignoreSslErrors(QNetworkReply* reply, const QList<QSslError> &errors) { | ||||
|   Q_UNUSED(errors) | ||||
|   // Ignore all SSL errors | ||||
|   reply->ignoreSslErrors(); | ||||
|   | ||||
| @@ -36,15 +36,13 @@ | ||||
| #include <QHash> | ||||
| #include <QSslError> | ||||
|  | ||||
| QT_BEGIN_NAMESPACE | ||||
| class QNetworkAccessManager; | ||||
| QT_END_NAMESPACE | ||||
|  | ||||
| class DownloadThread : public QObject { | ||||
| class downloadThread : public QObject { | ||||
|   Q_OBJECT | ||||
|  | ||||
| public: | ||||
|   DownloadThread(QObject* parent = 0); | ||||
|   downloadThread(QObject* parent = 0); | ||||
|   QNetworkReply* downloadUrl(const QString &url); | ||||
|   void downloadTorrentUrl(const QString &url); | ||||
|   //void setProxy(QString IP, int port, QString username, QString password); | ||||
|   | ||||
| @@ -1,77 +1,32 @@ | ||||
| /* | ||||
|  * Bittorrent Client using Qt4 and libtorrent. | ||||
|  * Copyright (C) 2011  Christophe Dumez | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License | ||||
|  * as published by the Free Software Foundation; either version 2 | ||||
|  * of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||
|  * | ||||
|  * In addition, as a special exception, the copyright holders give permission to | ||||
|  * link this program with the OpenSSL project's "OpenSSL" library (or with | ||||
|  * modified versions of it that use the same license as the "OpenSSL" library), | ||||
|  * and distribute the linked executables. You must obey the GNU General Public | ||||
|  * License in all respects for all of the code used other than "OpenSSL".  If you | ||||
|  * modify file(s), you may extend this exception to your version of the file(s), | ||||
|  * but you are not obligated to do so. If you do not wish to do so, delete this | ||||
|  * exception statement from your version. | ||||
|  * | ||||
|  * Contact : chris@qbittorrent.org | ||||
|  */ | ||||
|  | ||||
| #include <QListWidgetItem> | ||||
| #include <QLabel> | ||||
| #include "executionlog.h" | ||||
| #include "ui_executionlog.h" | ||||
| #include "qbtsession.h" | ||||
| #include "iconprovider.h" | ||||
| #include "loglistwidget.h" | ||||
|  | ||||
| ExecutionLog::ExecutionLog(QWidget *parent) : | ||||
|   QWidget(parent), | ||||
|   ui(new Ui::ExecutionLog), | ||||
|   m_logList(new LogListWidget(MAX_LOG_MESSAGES)), | ||||
|   m_banList(new LogListWidget(MAX_LOG_MESSAGES)) | ||||
|     QWidget(parent), | ||||
|     ui(new Ui::ExecutionLog) | ||||
| { | ||||
|     ui->setupUi(this); | ||||
|  | ||||
|     ui->tabConsole->setTabIcon(0, IconProvider::instance()->getIcon("view-calendar-journal")); | ||||
|     ui->tabConsole->setTabIcon(1, IconProvider::instance()->getIcon("view-filter")); | ||||
|     ui->tabGeneral->layout()->addWidget(m_logList); | ||||
|     ui->tabBan->layout()->addWidget(m_banList); | ||||
|  | ||||
|     const QStringList log_msgs = QBtSession::instance()->getConsoleMessages(); | ||||
|     foreach(const QString& msg, log_msgs) | ||||
|       addLogMessage(msg); | ||||
|     const QStringList ban_msgs = QBtSession::instance()->getPeerBanMessages(); | ||||
|     foreach(const QString& msg, ban_msgs) | ||||
|       addBanMessage(msg); | ||||
|     ui->textConsole->setHtml(QBtSession::instance()->getConsoleMessages().join("<br>")); | ||||
|     connect(QBtSession::instance(), SIGNAL(newConsoleMessage(QString)), SLOT(addLogMessage(QString))); | ||||
|     ui->textBannedPeers->setHtml(QBtSession::instance()->getPeerBanMessages().join("<br>")); | ||||
|     connect(QBtSession::instance(), SIGNAL(newBanMessage(QString)), SLOT(addBanMessage(QString))); | ||||
| } | ||||
|  | ||||
| ExecutionLog::~ExecutionLog() | ||||
| { | ||||
|   delete m_logList; | ||||
|   delete m_banList; | ||||
|   delete ui; | ||||
| } | ||||
|  | ||||
| void ExecutionLog::addLogMessage(const QString &msg) | ||||
| { | ||||
|   m_logList->appendLine(msg); | ||||
|    ui->textConsole->setHtml(msg+ui->textConsole->toHtml()); | ||||
| } | ||||
|  | ||||
| void ExecutionLog::addBanMessage(const QString &msg) | ||||
| { | ||||
|   m_banList->appendLine(msg); | ||||
|    ui->textBannedPeers->setHtml(msg+ui->textBannedPeers->toHtml()); | ||||
| } | ||||
|   | ||||