1
mirror of https://github.com/qbittorrent/qBittorrent synced 2025-10-09 18:32:15 +02:00

Compare commits

...

283 Commits

Author SHA1 Message Date
Christophe Dumez
89c9a646ad Tagged v2.1.4 bugfix release 2010-02-08 19:30:01 +00:00
Christophe Dumez
1ee45151a1 - Bump to v2.1.4 2010-02-08 19:10:13 +00:00
Christophe Dumez
772f05c5d4 - Updated language files 2010-02-08 19:06:45 +00:00
Christophe Dumez
de9e215404 BUGFIX: Fix file prioritizing in a torrent 2010-02-08 18:52:43 +00:00
Christophe Dumez
eeabf85e3b BUGFIX: Fix possible crash when changing torrents label 2010-02-07 18:39:37 +00:00
Christophe Dumez
6b99c84fe3 BUGFIX: Fix possible crash when deleting a torrent 2010-02-06 21:34:26 +00:00
Christophe Dumez
7d42969505 Fix font size of two torrent addition dialog buttons (Patch by Mariusz Fik) 2010-02-05 19:11:44 +00:00
Christophe Dumez
90351c4a57 BUGFIX: Usage display was improved and localized (--help) 2010-02-05 19:06:46 +00:00
Christophe Dumez
492b9dc88f BUGFIX: Make sure seeding torrents display a progress of 100% 2010-02-04 20:32:42 +00:00
Christophe Dumez
c9a8c1d053 - Fixes to German translation 2010-02-03 07:59:45 +00:00
Christophe Dumez
c8fdf8dc10 - Updated Ukranian translation 2010-02-02 20:25:09 +00:00
Christophe Dumez
119f83fbf0 - Bump to v2.1.3 2010-01-31 19:30:13 +00:00
Christophe Dumez
e8db20a558 BUGFIX: Clear torrent error state when resuming it 2010-01-31 19:07:17 +00:00
Christophe Dumez
508a811a8a BUGFIX: Fix Scan directory preferences in Web UI 2010-01-31 13:50:18 +00:00
Christophe Dumez
296267ec20 BUGFIX: Fix crash when double-clicking on a torrent that has no metadata to open
its save path
2010-01-31 13:14:22 +00:00
Christophe Dumez
39d4af1d6e - Updated Ukrainian translation (BlaXpirit) 2010-01-30 18:53:25 +00:00
Christophe Dumez
2e8f50b709 Fix compilation error when geoip database is embedded 2010-01-29 19:05:12 +00:00
Christophe Dumez
fdccf9cc1c Added support for HTTP redirection in downlaod threadOF 2010-01-29 18:42:20 +00:00
Christophe Dumez
31819e148f BUGFIX: Make sure bandwidth limiting dialogs are centered on screen 2010-01-27 20:37:35 +00:00
Christophe Dumez
5371fb15f8 BUGFIX: Fix "Append .!qB extension to complete files" (libtorrent v0.15) 2010-01-26 08:08:26 +00:00
Christophe Dumez
f845acb207 Optimized transfer list repainting
Improved user friendliness of data units
2010-01-24 18:11:56 +00:00
Christophe Dumez
f42eec5ad9 - Not calling repaint() manually. 2010-01-24 17:17:12 +00:00
Christophe Dumez
ec1a06d7c8 BUGFIX: Fix race condition in RSS that could cause a crash on startup 2010-01-24 16:50:48 +00:00
Christophe Dumez
e9b6a726e3 - Bump to v2.1.2 2010-01-24 16:21:55 +00:00
Christophe Dumez
a3f54fc3b9 - Added back file prioritizing 2010-01-24 16:10:39 +00:00
Christophe Dumez
10f58b4eed Nox compilation fix 2010-01-24 12:09:03 +00:00
Christophe Dumez
52fef5ac38 - Delete tree item ourself aven if Qt is supposed to delete it (just to be on the safe side) 2010-01-24 11:15:20 +00:00
Christophe Dumez
4d0cdea1c9 Make sure invalid torrent are removed from the transfer list 2010-01-23 19:17:31 +00:00
Christophe Dumez
86ca755dfe BUGFIX: Fix issue causing torrents not to be displayed in the list 2010-01-23 19:04:44 +00:00
Christophe Dumez
659664509a Improved RSS articles publication date handling 2010-01-23 16:18:39 +00:00
Christophe Dumez
412f947db5 "Open destination folder" now opens torrent root folder (if it contains one) instead of the parent folder 2010-01-23 09:57:10 +00:00
Christophe Dumez
ad47565b93 COSMETIC: Improved transfer speed display in peers list 2010-01-22 00:03:27 +00:00
Christophe Dumez
89175ea827 Make sure torrent deletion dialog is now centered on screen 2010-01-21 22:28:52 +00:00
Christophe Dumez
8dc34463e3 Improved previous patch: Force recheck only if we detected that renaming overwrited an existing file 2010-01-21 21:18:46 +00:00
Christophe Dumez
cab38857d1 BUGFIX: Force a recheck after renaming files to avoid overwriting 2010-01-21 20:39:43 +00:00
Christophe Dumez
14db21c241 BUGFIX: Fix overwrite check when renaming a folder in a torrent 2010-01-21 18:39:12 +00:00
Christophe Dumez
975ab9ad64 - Updated v2.1.1 release date 2010-01-20 19:10:52 +00:00
Christophe Dumez
b810278452 - Updated Polish translation 2010-01-20 19:10:10 +00:00
Christophe Dumez
86ac0a430e "Add in pause" setting is no longer ignored if torrent is loaded from a watched directory 2010-01-20 18:55:33 +00:00
Christophe Dumez
78a0f34645 BUGFIX: Fix "open torrent destination" feature when path contains spaces 2010-01-20 18:43:45 +00:00
Christophe Dumez
3ae09658c9 - Updated Russian translation 2010-01-20 18:38:22 +00:00
Christophe Dumez
7d9caad31e Paused torrents can now be rechecked 2010-01-20 18:06:56 +00:00
Christophe Dumez
c9c627dec2 Updated Hungarian translation 2010-01-20 16:03:26 +00:00
Christophe Dumez
5b104cdd9b BUGFIX: Can listen on ports < 1024 (must be root) 2010-01-20 10:00:08 +00:00
Christophe Dumez
8f667dce5c - Bump to v2.1.1 2010-01-20 09:45:47 +00:00
Christophe Dumez
89412e5050 - Updated Simplified Chinese translation (Legal notice was missing) 2010-01-20 09:42:19 +00:00
Christophe Dumez
63c121ecc7 - Fix typo in legal notice (startup) 2010-01-20 09:27:18 +00:00
Christophe Dumez
33b60779d6 BUGFIX: Fix renaming of files with unicode characters in their name 2010-01-20 08:48:11 +00:00
Christophe Dumez
26b2367833 Add in pause settings can be ignored from torrent addition dialog 2010-01-20 08:37:53 +00:00
Christophe Dumez
9b40a036a7 BUGFIX: Torrent added from magnet links were not remembered on restart 2010-01-19 23:48:04 +00:00
Christophe Dumez
d4cc0e9e4a Improved configure file output 2010-01-19 23:14:59 +00:00
Christophe Dumez
ca802a6233 BUGFIX: Configure file now checks for pkg-config executable which is required 2010-01-19 23:00:29 +00:00
Christophe Dumez
35394c4966 BUGFIX: Nox version no longer requires libQtXml 2010-01-19 22:55:15 +00:00
Christophe Dumez
077dd11af6 - Fix renaming of folders in a torrent (could rename children sometimes) 2010-01-19 22:43:59 +00:00
Christophe Dumez
a5c9c8d670 BUGFIX: Save torrent metadata so that it does not have to be re-downloaded on restart (Magnet links) 2010-01-19 21:54:17 +00:00
Christophe Dumez
1ef0bcbc06 - Removed useless include in project file 2010-01-19 00:19:40 +00:00
Christophe Dumez
e15eab9b6a - Fix compilation with Qt4.4 2010-01-18 22:10:38 +00:00
Christophe Dumez
8f1c56babd branched v2.1.x series 2010-01-18 19:03:29 +00:00
Christophe Dumez
aaeb6b90ed Updated Greek and Bulgarian translations 2010-01-18 18:33:54 +00:00
Christophe Dumez
d124ada755 - Make sure status bar is rendered properly when the font size is higher than default 2010-01-18 18:24:43 +00:00
Christophe Dumez
31105aefe4 - Updated configure file (libtorrent >= 0.14.4 is required) 2010-01-18 17:10:25 +00:00
Christophe Dumez
44c258796e - Bump to final, updated changelog (Release is nearing) 2010-01-18 17:06:42 +00:00
Christophe Dumez
26100120a9 Updated Portuguese and Brazilian translations 2010-01-17 23:18:41 +00:00
Christophe Dumez
0db8ce891b Updated czech translation 2010-01-17 23:09:44 +00:00
Christophe Dumez
979aba5685 Updated Serbian translation 2010-01-17 21:31:17 +00:00
Christophe Dumez
396da6bd94 - Fix to make sure that the filters list height is always sufficient to display all the filters (without the need for a scrollbar) 2010-01-17 21:27:08 +00:00
Christophe Dumez
1b0d86220f - Increased number of failed authentication attempts to 5 in Web UI 2010-01-17 09:09:57 +00:00
Christophe Dumez
957d2c0d1a Updated Korean translation 2010-01-17 02:15:17 +00:00
Christophe Dumez
455657912a Updated Simplified Chinese translation 2010-01-17 02:02:55 +00:00
Christophe Dumez
e3da1902df French translation fix 2010-01-17 01:27:20 +00:00
Christophe Dumez
d0f8e9208f - Fixed year in man pages 2010-01-16 16:34:37 +00:00
Christophe Dumez
de50346428 HTTP proxy support for peer communication 2010-01-15 16:41:39 +00:00
Christophe Dumez
c7ca51f950 Use HTTP digest mode for Web UI authentication (instead of Basic) 2010-01-15 14:20:20 +00:00
Christophe Dumez
4522174555 Updated spanish and catalan translations 2010-01-15 07:32:33 +00:00
Christophe Dumez
126230ad08 BUGFIX: Properly display torrents with one file in subfolder(s) 2010-01-14 22:53:59 +00:00
Christophe Dumez
6aa1f4156a - bump to rc7 2010-01-14 22:08:06 +00:00
Christophe Dumez
2726faa090 - Updated french translation 2010-01-14 20:49:01 +00:00
Christophe Dumez
230b84032d - Updated Changelog 2010-01-14 20:41:58 +00:00
Christophe Dumez
9c4c5e2d1a - Protect Web UI authentication against brute forcing (IP are banned after 3 failed attempts) 2010-01-14 20:40:06 +00:00
Christophe Dumez
2bf8e2d2d7 - file priority can be set for finished torrents that have filtered files 2010-01-14 20:01:30 +00:00
Christophe Dumez
9bb05c8dea - Patch by Mariusz Fik to fix font inconsistancy in program preferences 2010-01-14 15:38:07 +00:00
Christophe Dumez
2707aa2818 - Display favicon in Web UI 2010-01-14 12:37:19 +00:00
Christophe Dumez
93c644da88 - Make sure no scroll bar is displayed in filters list 2010-01-14 12:22:52 +00:00
Christophe Dumez
4a114c0fdc - Updated spanish and Catalan translations 2010-01-14 12:17:47 +00:00
Christophe Dumez
f95108155d - Maximum value for rate limiting in peer list is now taken from program preferences 2010-01-13 21:23:02 +00:00
Christophe Dumez
75f75854c2 - Use automatic width for context menu in Web UI 2010-01-13 19:28:38 +00:00
Christophe Dumez
e20c3cd0b6 Updated Polish translation 2010-01-13 18:58:59 +00:00
Christophe Dumez
2273ea4099 - Use Alternating row colors in {Peers, trackers, Files} lists too (if enabled) 2010-01-12 23:16:18 +00:00
Christophe Dumez
b115b0c6a3 Updated German translation 2010-01-12 21:16:00 +00:00
Christophe Dumez
9d79a51f18 - Fix compilation error with libtorrent v0.14.3 2010-01-12 08:23:18 +00:00
Christophe Dumez
db9005158e - Updated Korean translation 2010-01-12 08:22:12 +00:00
Christophe Dumez
4491999a8c - qBittorrent requires libtorrent-rasterbar >= 0.14.4 2010-01-11 22:09:56 +00:00
Christophe Dumez
113a502a7e - Bump to rc6 2010-01-11 20:23:28 +00:00
Christophe Dumez
7ad39003f4 - Fix error in torrent addition dialog when the label name is left empty 2010-01-11 20:09:32 +00:00
Christophe Dumez
4b43871708 - Bump to v2.1.0rc5
- Disabled debug mode
2010-01-11 14:53:56 +00:00
Christophe Dumez
aa8f7552a2 - RSS filters are now alphabetically sorted
- Fix crash when renaming currently displayed RSS filter
- Remove overwriting confirmation when exporting RSS filters since Qt takes care of it
2010-01-11 14:39:58 +00:00
Christophe Dumez
19d94b53d2 Updated Swedish translation 2010-01-11 07:59:56 +00:00
Christophe Dumez
ca98a261e6 Updated Serbian translation 2010-01-10 18:53:19 +00:00
Christophe Dumez
535ec2ced6 Updated Romania and traditiona chinese translations 2010-01-10 16:15:44 +00:00
Christophe Dumez
a300c236ba - Code cleanup 2010-01-09 23:33:45 +00:00
Christophe Dumez
b16c26b24c - Label list is now alphabetically sorted 2010-01-09 23:24:50 +00:00
Christophe Dumez
1b1dde3fc8 - Fix '!' support in label names 2010-01-09 22:09:20 +00:00
Christophe Dumez
bd5880843f - flush cache before file preview (libtorrent >= 0.15 only) 2010-01-09 21:39:17 +00:00
Christophe Dumez
abf35a31f3 Updated Finnish translation 2010-01-09 21:06:50 +00:00
Christophe Dumez
015638035a Updated Spanish and Catalan translation 2010-01-09 20:08:47 +00:00
Christophe Dumez
8e27fe83f1 Updated greek translation 2010-01-09 19:02:40 +00:00
Christophe Dumez
ce4b105065 Updated slovak translation 2010-01-09 17:53:54 +00:00
Christophe Dumez
37a7b79a6f - Translated legal notice into French 2010-01-09 15:32:58 +00:00
Christophe Dumez
ef19e8aeef - Added legal notice dialog on startup. The user must agree for the program to start. 2010-01-09 15:26:20 +00:00
Christophe Dumez
f6886b4749 - Compilation fix for Qt 4.4 2010-01-09 14:19:43 +00:00
Christophe Dumez
8306959cb4 - Make sure the application is not built against QtGui when the GUI is disabled 2010-01-09 13:55:24 +00:00
Christophe Dumez
d1918ee206 Updated Serbian translation 2010-01-09 09:33:01 +00:00
Christophe Dumez
b2b76f9e35 Updated Traditional Chinese translation 2010-01-09 08:53:59 +00:00
Christophe Dumez
a07fb264e8 Updated German translation 2010-01-08 22:51:14 +00:00
Christophe Dumez
881f2d04d2 - Updated french translation 2010-01-08 20:45:09 +00:00
Christophe Dumez
e1b629df88 - Bump to rc4
- Clean up project file
2010-01-08 20:33:54 +00:00
Christophe Dumez
eab6a194e1 - Updated AUTHORS file 2010-01-08 20:17:12 +00:00
Christophe Dumez
3733bc9148 FEATURE: Search engine can now use a SOCKS5 proxy
BUGFIX: Search engine loads new proxy settings without program restart
Fix a bug in HTTP communication proxy settings
2010-01-08 20:15:08 +00:00
Christophe Dumez
ae5746a636 - Updated Changelog 2010-01-07 21:12:11 +00:00
Christophe Dumez
cb509cebb3 - Updated search resource file 2010-01-07 21:11:07 +00:00
Christophe Dumez
511c4474c7 - Promoted torrentdownloads.net and vertor.com search plugins from unofficial plugins to official (in qBittorrent v2.1.0) 2010-01-07 21:08:58 +00:00
Christophe Dumez
d063aea977 - Double-clicking on folders in torrent content opens it in a file explorer 2010-01-07 20:48:52 +00:00
Christophe Dumez
447efc52d8 - Added SOCKS5 proxy for http connections to Web UI too 2010-01-07 20:40:39 +00:00
Christophe Dumez
296acf820c Fix to proxy settings
Added back SOCKS5 proxy support for HTTP communications
2010-01-07 20:35:12 +00:00
Christophe Dumez
6ae49acb69 - qbittorrent-nox no longer installs a desktop files, nor qbittorrent icons 2010-01-07 20:02:25 +00:00
Christophe Dumez
af1b06c5be - Fix several bugs in RSS plugin
* RSS downloader takes into consideration maximum number of articles per feed
  * Fix possible issue with RSS folder deletion
  * Clear persistant data whenever a RSS feed is deleted
2010-01-07 19:51:25 +00:00
Christophe Dumez
4732c8565d - Refresh RSS feed as soon as feed downloader is enabled 2010-01-07 18:42:47 +00:00
Christophe Dumez
52dd1476db - Fix addInPause setting in torrent addition dialog 2010-01-07 18:17:20 +00:00
Christophe Dumez
63170b9214 - Updated spanish and catalan translations 2010-01-07 07:37:51 +00:00
Christophe Dumez
2203b399df Updated Catalan and spanish translations 2010-01-07 07:34:41 +00:00
Christophe Dumez
d80f7a6ef3 - Updated Polish, Finnish, Catalan and spanish translations 2010-01-06 18:04:03 +00:00
Christophe Dumez
88c56d8250 - Added support for magnet links in search engine. Most search Web sites provides magnet links now and in the futures, they may provide only the magnet links. 2010-01-05 22:31:06 +00:00
Christophe Dumez
fca24a8f84 - Bump to rc3 2010-01-05 21:06:20 +00:00
Christophe Dumez
6d140a141a - Updated french translation 2010-01-05 21:05:37 +00:00
Christophe Dumez
a18e325c18 FEATURE: Files contained in a torrent are opened on double click (files panel) 2010-01-05 20:57:33 +00:00
Christophe Dumez
c4d9c51e49 - Never display a horizontal scrollbar in status filters list 2010-01-05 20:31:20 +00:00
Christophe Dumez
27e980de28 - Added buttons to change trackers priority (libtorrent v0.14 only) 2010-01-05 19:59:25 +00:00
Christophe Dumez
3c4906bb4d - Patch in last commit was wrong 2010-01-05 18:48:51 +00:00
Christophe Dumez
da796c80c3 - Forgot to move the torrent data when its label is deleted 2010-01-05 18:11:52 +00:00
Christophe Dumez
7a2af0f506 - Updated spanish and Catalan translation 2010-01-05 17:19:19 +00:00
Christophe Dumez
3e562e7450 - Updated French translation 2010-01-05 12:30:20 +00:00
Christophe Dumez
4fc777268b - Validate new file names to make sure they are allowed by the file system 2010-01-05 12:28:42 +00:00
Christophe Dumez
037e57b687 - Validate label names to make sure there is no character forbidden by the file system 2010-01-05 12:18:17 +00:00
Christophe Dumez
2b289655c1 - Fix torrent deletion confirmation dialog so that the text does not get cut on the right. (Fix by Elrond, Thanks!) 2010-01-04 22:40:20 +00:00
Christophe Dumez
118ea6093d - Rename GUI-less qBittorrent executable to "qbittorrent-nox", with its own man page 2010-01-04 22:29:48 +00:00
Christophe Dumez
cac6f7428c - When incomplete torrents are saved to a different path, check if content is already present at final location
- Automacillay force a data recheck every time a torrent is moved (because libtorrent does not take care of checking if the torrent data exists at the destination location)
2010-01-04 21:16:33 +00:00
Christophe Dumez
ae6acc4ca2 - Fix possible issue with label counts when deleting a torrent 2010-01-04 19:44:03 +00:00
Christophe Dumez
641c6f0132 - Updated slovak translation 2010-01-04 19:34:07 +00:00
Christophe Dumez
56dc8cad71 - Added ASSERT 2010-01-03 21:09:01 +00:00
Christophe Dumez
7cc07d842c - Put back the ASSERT (it should no longer be hit) 2010-01-03 19:03:05 +00:00
Christophe Dumez
baaadf07fa - Do not save currently selected label since we no longer restore it on startup 2010-01-03 18:52:43 +00:00
Christophe Dumez
719b32ba36 - Fix bugs with torrent labeling (Problems when adding a torrent when a filter was selected) 2010-01-03 18:51:24 +00:00
Christophe Dumez
af5c1096b5 - Fix crash on start introduced in last commit 2010-01-03 18:42:16 +00:00
Christophe Dumez
3008222b92 - Make sure QModelIndex is correct before using it 2010-01-03 18:34:37 +00:00
Christophe Dumez
5ef9faacd5 Updated french translation
Bump to rc2
2010-01-03 15:04:04 +00:00
Christophe Dumez
ff65b6ea2f - Adapt torrent addition dialog size when the torrent is a magnet link (since we don't display torrent content) 2010-01-03 14:59:14 +00:00
Christophe Dumez
4c8a087b81 - Fix signal bug introduced in last commit 2010-01-03 14:41:29 +00:00
Christophe Dumez
8f4bf93f02 - Fix defining a new label from torrent addition dialog
- Stop catching SIGABRT, SIGSEGV once one is received to avoid possible infinite loop
2010-01-03 14:38:59 +00:00
Christophe Dumez
824b2f6fff - Update changelog and language files 2010-01-03 14:24:05 +00:00
Christophe Dumez
ba0c7334b7 - Use torrent addition dialog for Magnet URIs too 2010-01-03 14:20:31 +00:00
Christophe Dumez
a1dd724220 - Fix issue with torrent label not being remembered on startup under certain circumstances 2010-01-03 13:15:26 +00:00
Christophe Dumez
a7820e5f08 - Make sure the torrent file is valid before loading it 2010-01-03 13:00:16 +00:00
Christophe Dumez
1a2eee8060 - Fix to spanish and Catalan translations 2010-01-03 12:47:40 +00:00
Christophe Dumez
4a2713a9f0 - Updated program usage translatable strings to make sure translators do not translate program parameters 2010-01-03 09:17:41 +00:00
Christophe Dumez
5ece0b4f70 - Spanish and Catalan translations are now complete 2010-01-03 09:08:07 +00:00
Christophe Dumez
44e8ec2b37 - Removed "Bullet" from translatable strings since it is not displayed 2010-01-03 01:19:37 +00:00
Christophe Dumez
d7e5f4b895 - Update Spanish and Catalan translations 2010-01-03 01:02:04 +00:00
Christophe Dumez
b0c7bdf82b - Made program usage message (help) translatable
- Bump to rc1
2010-01-02 23:40:57 +00:00
Christophe Dumez
a239ac1a52 - Removed debug 2010-01-02 23:12:40 +00:00
Christophe Dumez
99459dc55d - Fixing indentation
- Stop catching SIGINT and SIGTERM once the application has exiting
2010-01-02 23:03:46 +00:00
Christophe Dumez
78ba99778a - Fix crash when deleting a label 2010-01-02 22:53:27 +00:00
Christophe Dumez
96d3df3135 - Updated Changelog and INSTALL file 2010-01-02 22:29:36 +00:00
Christophe Dumez
cbe4bbac6a - Merged headless branch 2010-01-02 22:20:37 +00:00
Christophe Dumez
f502e82ec4 - Fix to Catalan translation 2010-01-02 15:09:35 +00:00
Christophe Dumez
a5d8766a9e Use XDG folders (.cache, .local) instead of .qbittorrent
old .qbittorrent is imported and moved to XDG folder by qBittorrent so that the user does not loose anything
2010-01-02 11:22:44 +00:00
Christophe Dumez
55d8e3d76b Updated Catalan translation 2010-01-02 09:10:51 +00:00
Christophe Dumez
7b7fb4d278 - Updated Spanish and Catalan translations 2010-01-01 20:34:32 +00:00
Christophe Dumez
09c7c50ad3 - qBittorrent can now identify itself as KTorrent too 2010-01-01 20:29:03 +00:00
Christophe Dumez
131250dc03 - Bump to beta4 2010-01-01 13:38:55 +00:00
Christophe Dumez
130187723c - Updated language files and french translation 2010-01-01 13:38:23 +00:00
Christophe Dumez
7bac95c9ad - Torrents can be renamed in transfer list 2010-01-01 13:25:59 +00:00
Christophe Dumez
add2475700 - Files / Folders can also be renamed directly from torrent addition dialog 2010-01-01 10:55:13 +00:00
Christophe Dumez
533e402bca - Updated Spanish translation 2009-12-31 18:23:06 +00:00
Christophe Dumez
b87a23037e - Fix crash in pieces downloaded/availability bars when the torrent has too many pieces 2009-12-31 16:34:56 +00:00
Christophe Dumez
6d88bb5b83 - Made sure the pixmap cannot be drawn with uninitialized data 2009-12-31 15:10:30 +00:00
Christophe Dumez
435801c893 - Added Peer id spoofing settings to Web UI 2009-12-30 17:47:10 +00:00
Christophe Dumez
9d0577fa5c - Display the correct DHT port in the console 2009-12-30 16:47:03 +00:00
Christophe Dumez
f2891dae74 - Another fix for global download rate limiting in Web UI 2009-12-30 16:40:52 +00:00
Christophe Dumez
a43a1f5b67 - Fix global download rate limiting (Web UI) 2009-12-30 16:37:34 +00:00
Christophe Dumez
ee9ca1ece7 - Use global maximum transfer rates as maximum values in per-torrent speed limiting dialogs (Web UI) 2009-12-30 16:32:19 +00:00
Christophe Dumez
8271e20fac - Started work on adding Peer ID spoofing settings for Web UI (incomplete) 2009-12-30 16:21:05 +00:00
Christophe Dumez
132b1f7ffe - Use global maximum transfer rates as maximum values in per-torrent speed limiting dialogs 2009-12-30 16:18:50 +00:00
Christophe Dumez
77b4d97069 - Display current version in fields when the combobox value is changed (Peer ID spoofing) 2009-12-30 15:55:21 +00:00
Christophe Dumez
2168d5a30e - qBittorrent no longer listens on a random port whenever it receives a listen_failed_alert (because it may correspond to another network interface)
- Display a "disconnected" icon in status bar whenever qBittorrent fails to listen on the selected port
2009-12-30 15:52:20 +00:00
Christophe Dumez
7ad90b1b80 - Fix Proxy type rank in enum (to be consistent with older qBittorrent versions)
- Added Proxy settings to Web UI
- Fix tiny bugs in proxy settings
2009-12-30 15:07:51 +00:00
Christophe Dumez
f60ef5dbd5 - Added a button to reset spoofed client version/build to latest
- Fix little bug when loading saved version/build for spoofed client
2009-12-30 13:26:35 +00:00
Christophe Dumez
4dc26d0a77 - FEATURE: qBittorrent can identify itself as uTorrent or Vuze (Any version) 2009-12-30 13:10:06 +00:00
Christophe Dumez
551273b831 - Updated language files 2009-12-30 10:56:08 +00:00
Christophe Dumez
d5a09674ae FEATURE: Better proxy support and preferences remodeling 2009-12-30 10:53:58 +00:00
Christophe Dumez
907e620e9e - Added console message for Web UI (with port)
- Updated language files
2009-12-30 09:49:56 +00:00
Christophe Dumez
f96ec75eec - Improve Web UI settings so that the HTTP server is reconstructed only when necessary 2009-12-30 09:46:06 +00:00
Christophe Dumez
4d00db2b42 - Encode correctly Float Type using QVariant/JSON (introduced in Qt 4.6) 2009-12-29 22:53:00 +00:00
Christophe Dumez
db564b4521 - wildcard matching for "do not match" tokens too 2009-12-29 21:42:31 +00:00
Christophe Dumez
3f2076d195 - Use Wildcard matching instead of full regex one (much simpler and seems to be what the user expects) in RSS feed downloader 2009-12-29 21:40:23 +00:00
Christophe Dumez
ed13c43e93 - Fix several issues with the files properties in Web UI (introduced recently) 2009-12-29 20:26:32 +00:00
Christophe Dumez
b5a9fe71e1 - Fix JSON communication between qBittorrent and Web UI 2009-12-29 20:09:46 +00:00
Christophe Dumez
d0037d90f4 FEATURE: uTorrent compatible tracker list support (use torrentz.com url as a default) 2009-12-29 16:36:36 +00:00
Christophe Dumez
e885ee0d35 - Fix some other DHT port issues 2009-12-29 10:04:41 +00:00
Christophe Dumez
ff5e5d1062 - Fix some other listen port issues 2009-12-29 09:59:32 +00:00
Christophe Dumez
1bfadf5219 - Little piece availability computation optimization 2009-12-28 21:45:34 +00:00
Christophe Dumez
4f9eca78d9 - Fix to port settings 2009-12-28 21:17:15 +00:00
Christophe Dumez
7aa2994078 - Fix possible crash when closing a search tab 2009-12-28 20:52:21 +00:00
Christophe Dumez
1128b3ea83 * Replace priority combo boxes by check boxes in Web UI as in Regular UI
* Prepare http server and preferences classes to add new settings to Web UI
  * Tabified Program preferences in Web UI since there will be a lot of settings soon
  * Started to add new settings to Web UI (PeX, LSD, Encryption, save path, temp path, scan dir, preallocateall, queueing, listen_port, upnp, nat-pmp, language, ip filter) -> Proxy is missing
  * Added a command line parameter to change the web ui port
  * Fix PeerGuardian .p2b binary filter support
2009-12-28 19:39:47 +00:00
Christophe Dumez
9d06947125 - Updated Catalan author name 2009-12-23 20:11:48 +00:00
Christophe Dumez
14cc600a8b - Updated Spanish and Catalan translations 2009-12-23 20:07:34 +00:00
Christophe Dumez
4f3fd86f91 - Bump to v2.1.0beta2 2009-12-23 09:01:06 +00:00
Christophe Dumez
e663717d64 - Update comment 2009-12-22 19:23:34 +00:00
Christophe Dumez
8b5d388e77 - Use the save path set in program preferences as a default in torrent addition dialog 2009-12-22 19:17:27 +00:00
Christophe Dumez
22d781edd5 - Updated Changelog 2009-12-22 17:41:12 +00:00
Christophe Dumez
4252832ba5 - Fix issue with speed limiting (Infinite value was not handled properly)
- Improved bandwith limiting dialog by adding a SpinBox so that the user can input the value manually
2009-12-22 17:39:12 +00:00
Christophe Dumez
fab58296af - Fix exception in tracker list when torrent has no metadata. The exeption was caught anyway but the trackers were not displayed 2009-12-22 15:37:48 +00:00
Christophe Dumez
e142877e10 - Fix little typo 2009-12-22 14:20:16 +00:00
Christophe Dumez
6f6e453ae4 - COSMETIC: Use alternating row colors in transfer list (set in program preferences) 2009-12-22 14:06:36 +00:00
Christophe Dumez
50e620daf2 - Handle paths with (~, ., ..) properly 2009-12-22 10:29:39 +00:00
Christophe Dumez
c334439df6 - Updated spanish translator name 2009-12-21 16:53:18 +00:00
Christophe Dumez
2d9b4f273e - Updated Spanish translation 2009-12-21 16:09:11 +00:00
Christophe Dumez
15c7099e85 - Fix "Browse" button in program preferences for "Temp path" 2009-12-19 20:39:38 +00:00
Christophe Dumez
d2b1f6176f - Fix to Serbian translation 2009-12-19 19:35:08 +00:00
Christophe Dumez
8306d7931b - Updated French translation 2009-12-19 19:14:39 +00:00
Christophe Dumez
b07fbb726e - Bump to beta1 2009-12-19 18:55:55 +00:00
Christophe Dumez
9586f0e61c - Use checkboxes for selective downloading instead of comboboxes 2009-12-19 18:55:04 +00:00
Christophe Dumez
7d66c07cef - Remove old folders after renaming 2009-12-19 16:53:27 +00:00
Christophe Dumez
28ecb2fe1d - Check if Folder name is already in use before renaming
- Made overwrite check case insensitive on Windows
2009-12-19 15:39:39 +00:00
Christophe Dumez
a9cafeaa76 - Torrent folders can also be renamed 2009-12-19 15:31:50 +00:00
Christophe Dumez
5fc69ccb73 - Torrent files can be renamed 2009-12-19 14:59:38 +00:00
Christophe Dumez
bc626e3512 - Updated Serbian translation 2009-12-19 07:48:08 +00:00
Christophe Dumez
98561f9db9 - Fix "Append .!qB extension" for torrents without metadata (Magnet Links) 2009-12-18 20:33:59 +00:00
Christophe Dumez
b56dee2a92 - Minor cosmetic changes to program preferences 2009-12-18 19:56:14 +00:00
Christophe Dumez
885a7f592e - Fix removal of !.qB extension when files get completed 2009-12-18 17:57:47 +00:00
Christophe Dumez
6965448a24 - Little cosmetic change in torrent addition dialog 2009-12-18 17:31:51 +00:00
Christophe Dumez
475d63dad8 - Fix "Append .!qB extension" feature. It appeared only for empty files (instead of incomplete ones) 2009-12-18 17:26:00 +00:00
Christophe Dumez
c87a0bde0b - Do not display .!qB incomplete files extension in files panel 2009-12-18 17:22:53 +00:00
Christophe Dumez
c1bc9886b7 - Fix "Append .!qB extension to incomplete files" feature 2009-12-18 17:18:43 +00:00
Christophe Dumez
88f8437c5a - Fix "Append .!qB extension to incomplete files" feature for torrents added from magnet links 2009-12-18 17:01:47 +00:00
Christophe Dumez
411a1c641d - Fix several bugs in new "Append label to save path" feature 2009-12-18 16:56:57 +00:00
Christophe Dumez
dc0ad73eca - Fix torrent Labeling from torrent addition dialog 2009-12-18 16:36:48 +00:00
Christophe Dumez
04e008afa0 - Fix new settings not being saved 2009-12-18 16:32:26 +00:00
Christophe Dumez
a6207f70d5 - Fix .qbittorrent folder not being created 2009-12-18 15:13:39 +00:00
Christophe Dumez
b8a30be7bc - Read RSS items are now remembered correctly on restart for feeds with no torrents attached 2009-12-18 14:45:07 +00:00
Christophe Dumez
67d60766c1 - Fix Mininova search engine plugin 2009-12-18 14:14:21 +00:00
Christophe Dumez
97c0b28a98 - Fix piratebay search plugin 2009-12-18 13:58:13 +00:00
Christophe Dumez
c61aded388 - Initial implementation of "Append .!qB extension to incomplete files" (untested)
- Update torrent save path when its label is changed and "Append label to save path" setting is set
2009-12-18 13:36:47 +00:00
Christophe Dumez
1fd57b5d63 - FEATURE: Labeled torrent can be downloaded corresponding subfolders 2009-12-17 20:28:30 +00:00
Christophe Dumez
755b8dec30 - Peer Exchange can be disabled from preferences 2009-12-17 18:00:21 +00:00
Christophe Dumez
ecd5c1fcc3 - Updated language files 2009-12-17 17:40:55 +00:00
Christophe Dumez
db5402385a FEATURE: Disk cache size can be set from preferences 2009-12-17 17:37:54 +00:00
Christophe Dumez
09ef3073a1 - Forgot to make "Label" string translatable 2009-12-17 10:01:01 +00:00
Christophe Dumez
6dd3833e0f - Added icons for label actions in context menu 2009-12-17 09:59:43 +00:00
Christophe Dumez
d4762a4d8d - Updated Changelog 2009-12-16 22:20:28 +00:00
Christophe Dumez
38cc55ea09 - Add hover effect of labels/categories to animate drag'n drop 2009-12-16 22:06:24 +00:00
Christophe Dumez
5d60295db3 - Drag'n drop to labels cleanup 2009-12-16 15:06:02 +00:00
Christophe Dumez
18bd3b855c - Added drag'n Drop from torrent list to labels (for torrent labeling)
- Fix label counters update in some cases
2009-12-16 14:55:07 +00:00
Christophe Dumez
868d423c82 - Use folder icon for labels 2009-12-16 13:20:38 +00:00
Christophe Dumez
edb6857de0 - Label counters are now properly updated (and labeling seems to work fine) 2009-12-16 13:09:30 +00:00
Christophe Dumez
ed803fb994 - Initiated work on torrent labeling/categorization (functional but not perfect yet 2009-12-15 19:52:43 +00:00
Christophe Dumez
83d83a364d - Added Frederic Lassabe to AUTHORS file 2009-12-15 13:08:34 +00:00
Christophe Dumez
690bb92154 - Catch CTRL+C and exit cleanly 2009-12-15 13:01:57 +00:00
Christophe Dumez
8e39eef7aa - Display console messages on Terminal
- Program seems to be working
2009-12-15 12:55:46 +00:00
Christophe Dumez
1923a51c59 - Prepare a little headlessloader class 2009-12-15 11:59:48 +00:00
Christophe Dumez
3dc1107b40 - Fix typo in src.pro that broke compilation with GUI enabled 2009-12-15 11:48:57 +00:00
Christophe Dumez
dd22e9009c - Added exit() function to headless loader class so that we have a way to return to prompt 2009-12-15 11:14:03 +00:00
Christophe Dumez
c7ccf39abf - Use QCoreApplication instead of QApplication when GUI is disabled 2009-12-15 11:10:47 +00:00
Christophe Dumez
af166f53d3 - Added headlessloader class to prepare Fred's work 2009-12-15 11:08:22 +00:00
Christophe Dumez
21eb26a374 - Commit changes to helpers.py (add referer to download_file() helper function) 2009-12-15 11:03:04 +00:00
Christophe Dumez
e2aaf5d1de - Edited project file in order not to compile UI classes when DISABLE_GUI is defined
- Added #ifndef directives to main.cpp in order to fix compilation when DISABLE_GUI is defined
2009-12-15 10:56:41 +00:00
Christophe Dumez
0b7ca15c4f - Added --disable-gui flag to configure file (adds DISABLE_GUI define) 2009-12-15 10:36:18 +00:00
Christophe Dumez
07ee2a4aff Branched for work on headless running 2009-12-15 10:23:41 +00:00
Christophe Dumez
141d3b6737 - Fix RSS Feed downloader for RSS with no torrent attachment (but articles link points to the torrent instead) 2009-12-14 18:42:21 +00:00
Christophe Dumez
e2c3e6dbaa - Better checking of based32 encoded Magnet Links to increase robustness 2009-12-13 10:13:41 +00:00
Christophe Dumez
b1126556c0 - Added Hex Magnet link support 2009-12-13 09:50:06 +00:00
Christophe Dumez
69cb8d1398 - Fix possible crash in torrent properties 2009-12-13 00:34:54 +00:00
Christophe Dumez
094d979ce6 - Fix "Object::connect: No such slot TransferListWidget::toggleSelectedTorrentsSuperSeeding()" warning when using libtorrent v0.14 2009-12-12 23:57:31 +00:00
Christophe Dumez
92dd669597 - Updated version number to v2.1.0alpha in trunk (new development focus) 2009-12-12 22:54:47 +00:00
157 changed files with 48333 additions and 19621 deletions

View File

@@ -12,6 +12,10 @@ Code from other projects:
copyright: Malte Starostik <malte@kde.org>
license: LGPL
* files src/search_engine/socks.py
copyright: Dan Haim <negativeiq@users.sourceforge.net>
license: BSD
Images Authors:
* files: src/Icons/*.png
copyright: Gnome Icon Theme
@@ -57,7 +61,7 @@ Translations authors:
copyright:
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
- Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)
- Catalan: Gekko Dam Beer (gekko04@users.sourceforge.net)
- Catalan: Francisco Luque Contreras (frannoe@ya.com)
- Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com)
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com)
- Czech: Jirka Vilim (web@tets.cz)
@@ -79,7 +83,7 @@ Translations authors:
- Russian: Nick Khazov (m2k3d0n at users.sourceforge.net)
- Serbian: Anaximandar Milet (anaximandar at operamail.com)
- Slovak: helix84
- Spanish: Vicente Raul Plata Fonseca (silverxnt@users.sourceforge.net)
- Spanish: Francisco Luque Contreras (frannoe@ya.com)
- Swedish: Daniel Nylander (po@danielnylander.se)
- Turkish: Hasan Yilmaz (iletisim@hedefturkce.com)
- Ukrainian: Andrey Shpachenko (masterfix@users.sourceforge.net)

129
Changelog
View File

@@ -1,3 +1,132 @@
* Mon Feb 8 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.1.4
- BUGFIX: Fix file prioritizing in a torrent
- BUGFIX: Make sure seeding torrents display a progress of 100%
- BUGFIX: Usage display was improved and localized (--help)
- BUGFIX: Fix possible crash when deleting a torrent
- BUGFIX: Fix possible crash when changing torrents label
* Sun Jan 31 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.1.3
- BUGFIX: Fix "Append .!qB extension to complete files" (libtorrent v0.15)
- BUGFIX: Make sure bandwidth limiting dialogs are centered on screen
- BUGFIX: Added support for HTTP redirection
- BUGFIX: Fix compilation error when geoip database is embedded
- BUGFIX: Fix crash when double-clicking on a torrent that has no metadata to open its save path
- BUGFIX: Fix Scan directory preferences in Web UI
- BUGFIX: Clear torrent error state when resuming it
* Sun Jan 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.1.2
- FEATURE: Added back file prioritizing in a torrent
- BUGFIX: Fix issue causing torrents not to be displayed in the list
- BUGFIX: Make sure invalid torrent are removed from the transfer list
- BUGFIX: Fix overwrite check when renaming a folder in a torrent
- BUGFIX: Force a recheck after renaming files to avoid overwriting
- BUGFIX: Improve "Open destination folder" behavior
- BUGFIX: Fix race condition in RSS that could cause a crash on startup
- BUGFIX: Improved user friendlyness of size units
- BUGFIX: Optimized transfer list repainting
- COSMETIC: Improved transfer speed display in peers list
* Wed Jan 20 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.1.1
- BUGFIX: Fix compilation with Qt4.4
- BUGFIX: Save torrent metadata so that it does not have to be re-downloaded on restart (Magnet links)
- BUGFIX: Fix folder renaming in a torrent (would rename children under certain conditions)
- BUGFIX: Nox version no longer requires libQtXml
- BUGFIX: Configure file now checks for pkg-config executable which is required
- BUGFIX: Torrents added from magnet links were not remembered on restart
- BUGFIX: "Add in pause" setting can be ignored from torrent addition dialog
- BUGFIX: Fix renaming of files with unicode characters in their name
- BUGFIX: Fix typo in legal notice (startup)
- BUGFIX: Can listen on ports < 1024 (must be root)
- BUGFIX: Paused torrents can now be rechecked
- BUGFIX: Fix "open torrent destination" feature when path contains spaces
- I18N: Updated translations (Hungarian, Chinese, Russian)
* 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
* Wed Dec 30 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.4
- BUGFIX: Fix PeerGuardian .p2b binary filter support
- BUGFIX: Fix possible crash when closing a search engine tab
- BUGFIX: Make sure service port does not change
- BUGFIX: Fix possible DHT port saving issue
- BUGFIX: Fix communication between qBittorrent and Web UI (Qt 4.6)
- BUGFIX: Use Wildcard matching instead of full regex in RSS feed downloader
- BUGFIX: Fix code for listening on a random port whenever it failed to listen on the one defined
- BUGFIX: Use global maximum transfer rates as maximum values in per-torrent speed limiting dialogs
- BUGFIX: Fix global download rate limiting from Web UI
- COSMETIC: Display a disconnected icon in status bar whenever qBittorrent failed to listen on the port defined
* Wed Dec 23 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.3
- BUGFIX: Minor cosmetic fix to program preferences
- BUGFIX: Fix "Temp path" button in program preferences
- BUGFIX: Handle paths with [~, ., ..] properly
- BUGFIX: Trackers are now displayed for torrents without metadata
- BUGFIX: Fix issue with speed limiting (unlimited was not handled properly)
- BUGFIX: Use the save path set in program preferences as a default in torrent addition dialog
* Fri Dec 18 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.2
- BUGFIX: Fix .qbittorrent folder not being created (critical bug introduced in v2.0.1 that makes qBittorrent unusuable for new users)
- BUGFIX: Fix RSS Feed downloader for some feeds
- BUGFIX: Do not use home folder as a fallback when the save path is not accessible
- BUGFIX: Fix Mininova, ThePirateBay search engine plugins
- BUGFIX: Read RSS articles are remembered on restart for feeds with no torrents attached
* Sun Dec 13 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.1
- BUGFIX: µTorrent user-agent is now spoofed correctly
- BUGFIX: Fix column hiding behavior when queueing system is disabled
- BUGFIX: Fix link to plugins.qbittorrent.org in plugins dialog
- BUGFIX: ~/qBT_dir is created only when it is actually used
- BUGFIX: Fix possible missing slot message (toggleSelectedTorrentsSuperSeeding)
- BUGFIX: Fix possible crash in torrent properties (files)
- BUGFIX: Added Hex Magnet Links support (Thanks Haypo)
* Thu Dec 10 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.0
- FEATURE: Added program option to disable splash screen
- FEATURE: Dropped dependency on libcurl and libzzip

61
INSTALL
View File

@@ -1,32 +1,55 @@
qBittorrent - A BitTorrent client in C++ / Qt4
------------------------------------------
./configure
make && make install
qbittorrent
1) Compile and install qBittorrent with Qt4 Graphical Interface
will install and execute qBittorrent hopefully without any problems.
$ ./configure
$ make && make install
$ qbittorrent
Dependencies:
- Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
will install and execute qBittorrent hopefully without any problems.
- libtorrent-rasterbar by Arvid Norberg (>= 0.14.0 REQUIRED, >= v0.15.0 ADVISED)
-> http://www.qbittorrent.org/download.php (advised)
-> http://www.libtorrent.net
Be careful: another library (the one used by rTorrent) uses a similar name.
Dependencies:
- Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
- libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization
- pkg-config executable
- python >= 2.3 (needed by search engine)
* Run time only dependency
- 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.
- 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
- libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization
- 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:
Please note that there is a documentation with a "compiling howto" at http://wiki.qbittorrent.org.

55
configure vendored
View File

@@ -18,6 +18,8 @@ Main options:
--help This help text.
Dependency options:
--disable-gui Disable qBittorrent Graphical user
interface for headless running
--with-libboost-inc=[path] Path to libboost include files
--disable-libnotify Disable use of libnotify
--disable-geoip-database Disable use of geoip-database
@@ -140,6 +142,11 @@ while [ $# -gt 0 ]; do
shift
;;
--disable-gui)
QC_DISABLE_GUI="Y"
shift
;;
--with-libboost-inc=*)
QC_WITH_LIBBOOST_INC=$optarg
shift
@@ -181,6 +188,7 @@ echo PREFIX=$PREFIX
echo BINDIR=$BINDIR
echo DATADIR=$DATADIR
echo EX_QTDIR=$EX_QTDIR
echo QC_DISABLE_GUI=$QC_DISABLE_GUI
echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC
echo QC_DISABLE_libnotify=$QC_DISABLE_libnotify
echo QC_DISABLE_geoip_database=$QC_DISABLE_geoip_database
@@ -290,6 +298,7 @@ cat >$1/modules.cpp <<EOT
/*
-----BEGIN QCMOD-----
name: Qt >= 4.4
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
-----END QCMOD-----
*/
class qc_qt4 : public ConfObj
@@ -300,6 +309,9 @@ public:
QString shortname() const { return "Qt 4.4"; }
bool exec()
{
if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) {
conf->addDefine("DISABLE_GUI");
}
if(QT_VERSION >= 0x040500) {
conf->addDefine("QT_4_5");
}
@@ -307,6 +319,23 @@ public:
}
};
#line 1 "pkg-config.qcm"
/*
-----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();
}
};
#line 1 "libtorrent-rasterbar.qcm"
/*
-----BEGIN QCMOD-----
@@ -318,11 +347,11 @@ class qc_libtorrent_rasterbar : public ConfObj
{
public:
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.15.0 advised)"; }
QString name() const { return "libtorrent-rasterbar >= 0.14.4"; }
QString shortname() const { return "libtorrent-rasterbar"; }
bool exec(){
QStringList incs;
QString req_ver = "0.14.0";
QString req_ver = "0.14.4";
QString adv_ver = "0.15.0";
QString version, libs, other;
VersionMode mode = VersionMin;
@@ -333,7 +362,7 @@ public:
if(!libs.isEmpty())
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());
printf("\nWarning: libtorrent-rasterbar v%s was detected. Some feature will be disabled because they require v%s.\n", version.toLocal8Bit().data(), adv_ver.toUtf8().data());
else
conf->addDefine("LIBTORRENT_0_15");
return true;
@@ -409,7 +438,15 @@ public:
qc_libnotify(Conf *c) : ConfObj(c) {}
QString name() const { return "libnotify >= 0.4.2 (optional)"; }
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(){
if(!conf->getenv("QC_DISABLE_libnotify").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) {
return false;
}
QStringList incs;
QString req_ver = "0.4.2";
QString version, libs, other;
@@ -452,7 +489,15 @@ public:
qc_geoip_database(Conf *c) : ConfObj(c) {}
QString name() const { return "GeoIP Database (optional)"; }
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() {
if(!conf->getenv("QC_DISABLE_geoip_database").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) {
return false;
}
#ifdef Q_WS_X11
if(!conf->getenv("QC_WITH_GEOIP_DATABASE_EMBEDDED").isEmpty()) {
#endif
@@ -474,6 +519,9 @@ cat >$1/modules_new.cpp <<EOT
o = new qc_qt4(conf);
o->required = true;
o->disabled = false;
o = new qc_pkg_config(conf);
o->required = true;
o->disabled = false;
o = new qc_libtorrent_rasterbar(conf);
o->required = true;
o->disabled = false;
@@ -1431,6 +1479,7 @@ export PREFIX
export BINDIR
export DATADIR
export EX_QTDIR
export QC_DISABLE_GUI
export QC_WITH_LIBBOOST_INC
export QC_DISABLE_libnotify
export QC_DISABLE_geoip_database

44
doc/qbittorrent-nox.1 Normal file
View File

@@ -0,0 +1,44 @@
.\" 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>

View File

@@ -1,14 +1,14 @@
.\" 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" "1" "September 30th 2009" "Bittorrent client written in C++ / Qt4" ""
.TH "QBITTORRENT" "1" "January 16th 2010" "Bittorrent client written in C++ / Qt4" ""
.SH "NAME"
qBittorrent \- a Bittorrent client written in C++ / Qt4
.SH "SYNOPSIS"
\fBqbittorrent\fR [\-\-no-splash] [TORRENT_FILE | URL]...
\fBqbittorrent\fR [\-\-no-splash] [\-\-webui-port=x] [TORRENT_FILE | URL]...
\fBqbittorrent\fR \-\-help
@@ -18,10 +18,9 @@ qBittorrent \- a Bittorrent client written in C++ / Qt4
.SH "DESCRIPTION"
\fBqBittorrent\fR is an advanced Bittorrent client written in C++ / Qt4,
using the \fBrblibtorrent\fR library by Arvid Norberg. qBittorrent aims
to be a good alternative to all other bittorrent clients out there. qBittorrent
using the \fBlibtorrent-rasterbar\fR library by Arvid Norberg. qBittorrent is similar to uTorrent. qBittorrent
is fast, stable, light, it supports unicode and it provides a good integrated search engine.
It also comes with UPnP port forwarding / NAT-PMP, encryption (Azureus compatible),
It also comes with UPnP port forwarding / NAT-PMP, encryption (Vuze compatible),
FAST extension (mainline) and PeX support (utorrent compatible).
.SH "OPTIONS"
@@ -32,6 +31,8 @@ FAST extension (mainline) and PeX support (utorrent compatible).
\fB--no-splash\fR Disables splash screen on startup.
\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

View File

@@ -1,6 +1,4 @@
TEMPLATE = subdirs
include(conf.pri)
SUBDIRS += src

View File

@@ -6,6 +6,9 @@
<dep type='qt4'>
<required/>
</dep>
<dep type='pkg-config'>
<required/>
</dep>
<dep type='libtorrent-rasterbar'>
<required/>
</dep>

View File

@@ -11,7 +11,15 @@ public:
qc_geoip_database(Conf *c) : ConfObj(c) {}
QString name() const { return "GeoIP Database (optional)"; }
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() {
if(!conf->getenv("QC_DISABLE_geoip_database").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) {
return false;
}
#ifdef Q_WS_X11
if(!conf->getenv("QC_WITH_GEOIP_DATABASE_EMBEDDED").isEmpty()) {
#endif

View File

@@ -10,7 +10,15 @@ public:
qc_libnotify(Conf *c) : ConfObj(c) {}
QString name() const { return "libnotify >= 0.4.2 (optional)"; }
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(){
if(!conf->getenv("QC_DISABLE_libnotify").isEmpty() || !conf->getenv("QC_DISABLE_GUI").isEmpty()) {
return false;
}
QStringList incs;
QString req_ver = "0.4.2";
QString version, libs, other;

View File

@@ -8,11 +8,11 @@ class qc_libtorrent_rasterbar : public ConfObj
{
public:
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.15.0 advised)"; }
QString name() const { return "libtorrent-rasterbar >= 0.14.4"; }
QString shortname() const { return "libtorrent-rasterbar"; }
bool exec(){
QStringList incs;
QString req_ver = "0.14.0";
QString req_ver = "0.14.4";
QString adv_ver = "0.15.0";
QString version, libs, other;
VersionMode mode = VersionMin;
@@ -23,7 +23,7 @@ public:
if(!libs.isEmpty())
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());
printf("\nWarning: libtorrent-rasterbar v%s was detected. Some feature will be disabled because they require v%s.\n", version.toLocal8Bit().data(), adv_ver.toUtf8().data());
else
conf->addDefine("LIBTORRENT_0_15");
return true;

16
qcm/pkg-config.qcm Normal file
View File

@@ -0,0 +1,16 @@
/*
-----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();
}
};

View File

@@ -1,6 +1,7 @@
/*
-----BEGIN QCMOD-----
name: Qt >= 4.4
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
-----END QCMOD-----
*/
class qc_qt4 : public ConfObj
@@ -11,6 +12,9 @@ public:
QString shortname() const { return "Qt 4.4"; }
bool exec()
{
if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) {
conf->addDefine("DISABLE_GUI");
}
if(QT_VERSION >= 0x040500) {
conf->addDefine("QT_4_5");
}

View File

@@ -35,7 +35,6 @@
#include <QFileDialog>
#include <QMessageBox>
#include <QDesktopWidget>
#include <QTimer>
#include <QDesktopServices>
#include <QStatusBar>
@@ -60,6 +59,8 @@
#include "speedlimitdlg.h"
#include "preferences.h"
#include "console_imp.h"
#include "trackerlist.h"
#include "peerlistwidget.h"
#include "torrentpersistentdata.h"
#include "transferlistfilterswidget.h"
#include "propertieswidget.h"
@@ -78,6 +79,7 @@ using namespace libtorrent;
// Constructor
GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), displaySpeedInTitle(false), force_exit(false) {
setupUi(this);
setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent v0.x").arg(QString::fromUtf8(VERSION)));
// Setting icons
this->setWindowIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent32.png")));
@@ -185,6 +187,15 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
readSettings();
properties->readSettings();
// Limit status filters list height
int cur_height = 80;
do {
transferListFilters->getStatusFilters()->setFixedHeight(cur_height);
cur_height += 10;
transferListFilters->getStatusFilters()->scrollToBottom();
}while(transferListFilters->getStatusFilters()->verticalScrollBar()->sliderPosition() > 0);
transferListFilters->getStatusFilters()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
if(Preferences::startMinimized()) {
setWindowState(Qt::WindowMinimized);
}
@@ -344,7 +355,7 @@ void GUI::readSettings() {
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
settings.beginGroup(QString::fromUtf8("MainWindow"));
resize(settings.value(QString::fromUtf8("size"), size()).toSize());
move(settings.value(QString::fromUtf8("pos"), screenCenter()).toPoint());
move(settings.value(QString::fromUtf8("pos"), misc::screenCenter(this)).toPoint());
QStringList sizes_str = settings.value("vSplitterSizes", QStringList()).toStringList();
// Splitter size
QList<int> sizes;
@@ -463,22 +474,6 @@ void GUI::toggleVisibility(QSystemTrayIcon::ActivationReason e) {
}
}
// Center window
QPoint GUI::screenCenter() const{
int scrn = 0;
QWidget *w = this->topLevelWidget();
if(w)
scrn = QApplication::desktop()->screenNumber(w);
else if(QApplication::desktop()->isVirtualDesktop())
scrn = QApplication::desktop()->screenNumber(QCursor::pos());
else
scrn = QApplication::desktop()->screenNumber(this);
QRect desk(QApplication::desktop()->availableGeometry(scrn));
return QPoint((desk.width() - this->frameGeometry().width()) / 2, (desk.height() - this->frameGeometry().height()) / 2);
}
// Display About Dialog
void GUI::on_actionAbout_triggered() {
//About dialog
@@ -650,8 +645,12 @@ void GUI::processParams(const QStringList& params) {
BTSession->downloadFromUrl(param);
}else{
if(param.startsWith("magnet:", Qt::CaseInsensitive)) {
// FIXME: Possibily skipped torrent addition dialog
BTSession->addMagnetUri(param);
if(useTorrentAdditionDialog) {
torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession);
dialog->showLoadMagnetURI(param);
} else {
BTSession->addMagnetUri(param);
}
} else {
if(useTorrentAdditionDialog) {
torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession);
@@ -724,7 +723,10 @@ void GUI::loadPreferences(bool configure_session) {
}
unsigned int new_refreshInterval = Preferences::getRefreshInterval();
transferList->setRefreshInterval(new_refreshInterval);
transferList->setAlternatingRowColors(Preferences::useAlternatingRowColors());
properties->getFilesList()->setAlternatingRowColors(Preferences::useAlternatingRowColors());
properties->getTrackerList()->setAlternatingRowColors(Preferences::useAlternatingRowColors());
properties->getPeerList()->setAlternatingRowColors(Preferences::useAlternatingRowColors());
// Queueing System
if(Preferences::isQueueingSystemEnabled()) {
if(!configure_session || !BTSession->isQueueingEnabled()) {
@@ -832,9 +834,16 @@ void GUI::showNotificationBaloon(QString title, QString msg) const {
*****************************************************/
void GUI::downloadFromURLList(const QStringList& url_list) {
QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent"));
bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool();
foreach(const QString url, url_list) {
if(url.startsWith("magnet:", Qt::CaseInsensitive)) {
BTSession->addMagnetUri(url);
if(useTorrentAdditionDialog) {
torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession);
dialog->showLoadMagnetURI(url);
} else {
BTSession->addMagnetUri(url);
}
} else {
BTSession->downloadFromUrl(url);
}

186
src/GUI.h
View File

@@ -59,104 +59,104 @@ class StatusBar;
class GUI : public QMainWindow, private Ui::MainWindow{
Q_OBJECT
private:
// Bittorrent
Bittorrent *BTSession;
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; // Still needed?
// GUI related
QTimer *guiUpdater;
QTabWidget *tabs;
StatusBar *status_bar;
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;
private:
// Bittorrent
Bittorrent *BTSession;
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; // Still needed?
// GUI related
QTimer *guiUpdater;
QTabWidget *tabs;
StatusBar *status_bar;
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;
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 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 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 finishedTorrent(QTorrentHandle& h) const;
// Options slots
void on_actionOptions_triggered();
void optionsSaved();
// HTTP slots
void on_actionDownload_from_URL_triggered();
public slots:
void trackerAuthenticationRequired(QTorrentHandle& h);
void setTabText(int index, QString text) const;
void showNotificationBaloon(QString title, QString msg) const;
public slots:
void trackerAuthenticationRequired(QTorrentHandle& h);
void setTabText(int index, QString text) const;
void showNotificationBaloon(QString title, QString msg) const;
void downloadFromURLList(const QStringList& urls);
protected:
void closeEvent(QCloseEvent *);
void showEvent(QShowEvent *);
bool event(QEvent * event);
void displayRSSTab(bool enable);
protected:
void closeEvent(QCloseEvent *);
void showEvent(QShowEvent *);
bool event(QEvent * event);
void displayRSSTab(bool enable);
public:
// Construct / Destruct
GUI(QWidget *parent=0, QStringList torrentCmdLine=QStringList());
~GUI();
// Methods
int getCurrentTabIndex() const;
QPoint screenCenter() const;
public:
// Construct / Destruct
GUI(QWidget *parent=0, QStringList torrentCmdLine=QStringList());
~GUI();
// Methods
int getCurrentTabIndex() const;
TransferListWidget* getTransferList() const { return transferList; }
};
#endif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 743 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

View File

@@ -1,6 +1,6 @@
[Desktop Entry]
Categories=Qt;Network;P2P;
Comment=V2.0.0
Comment=V2.1.4
Exec=qbittorrent %f
GenericName=Bittorrent client
GenericName[bg]=Торент клиент

BIN
src/Icons/skin/disconnected.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View File

@@ -64,7 +64,7 @@ class about : public QDialog, private Ui::AboutDlg{
te_translation->append(QString::fromUtf8(
"<i>- <u>Brazilian:</u> Nick Marinho (nickmarinho@gmail.com)<br>\
- <u>Bulgarian:</u> Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)<br>\
- <u>Catalan:</u> Gekko Dam Beer (gekko04@users.sourceforge.net)<br>\
- <u>Catalan:</u> Francisco Luque Contreras (frannoe@ya.com)<br>\
- <u>Chinese (Simplified):</u> Guo Yue (yue.guo0418@gmail.com)<br>\
- <u>Chinese (Traditional):</u> Yi-Shun Wang (dnextstep@gmail.com)<br>\
- <u>Czech:</u> Jirka Vilim (web@tets.cz)<br>\
@@ -84,7 +84,7 @@ class about : public QDialog, private Ui::AboutDlg{
- <u>Russian:</u> Nick Khazov (m2k3d0n@users.sourceforge.net) and Alexey Morsov (samurai@ricom.ru)<br>\
- <u>Serbian:</u> Anaximandar Milet (anaximandar@operamail.com)<br>\
- <u>Slovak:</u> helix84<br>\
- <u>Spanish:</u> Vicente Raul Plata Fonseca (silverxnt@users.sourceforge.net) and Gabriel de Oliveira (deadloop@hotmail.com)<br>\
- <u>Spanish:</u> Francisco Luque Contreras (frannoe@ya.com)<br>\
- <u>Swedish:</u> Daniel Nylander (po@danielnylander.se)<br>\
- <u>Turkish:</u> Hasan YILMAZ (iletisim@hedefturkce.com) and Erdem Bingöl (erdem84@gmail.com)<br>\
- <u>Ukrainian:</u> Andrey Shpachenko (masterfix@users.sourceforge.net)<br><br>"));

File diff suppressed because it is too large Load Diff

View File

@@ -34,8 +34,12 @@
#include <QMap>
#include <QUrl>
#include <QStringList>
#ifdef DISABLE_GUI
#include <QCoreApplication>
#else
#include <QApplication>
#include <QPalette>
#endif
#include <QPointer>
#include <libtorrent/session.hpp>
@@ -90,6 +94,7 @@ private:
QPointer<QTimer> timerAlerts;
QMap<QUrl, QString> savepath_fromurl;
QHash<QString, QHash<QString, TrackerInfos> > trackersInfos;
QStringList torrentsToPausedAfterChecking;
// Ratio
QPointer<QTimer> BigRatioTimer;
// HTTP
@@ -107,12 +112,20 @@ private:
bool NATPMPEnabled;
bool LSDEnabled;
bool DHTEnabled;
int current_dht_port;
bool PeXEnabled;
bool queueingEnabled;
bool appendLabelToSavePath;
#ifdef LIBTORRENT_0_15
bool appendqBExtension;
#endif
QString defaultSavePath;
QString defaultTempPath;
// GeoIP
#ifndef DISABLE_GUI
bool resolve_countries;
bool geoipDBLoaded;
#endif
// ETA Computation
QPointer<QTimer> timerETA;
QHash<QString, QList<int> > ETA_samples;
@@ -168,6 +181,7 @@ public slots:
void deleteTorrent(QString hash, bool delete_local_files = false);
void startUpTorrents();
session_proxy asyncDeletion();
void recheckTorrent(QString hash);
/* Needed by Web UI */
void pauseAllTorrents();
void pauseTorrent(QString hash);
@@ -194,10 +208,18 @@ public slots:
void setGlobalRatio(float ratio);
void setDeleteRatio(float ratio);
void setDHTPort(int dht_port);
void setProxySettings(proxy_settings proxySettings, bool trackers=true, bool peers=true, bool web_seeds=true, bool dht=true);
void setPeerProxySettings(proxy_settings proxySettings);
void setHTTPProxySettings(proxy_settings proxySettings);
void setSessionSettings(session_settings sessionSettings);
void startTorrentsInPause(bool b);
void setDefaultTempPath(QString temppath);
void setAppendLabelToSavePath(bool append);
void appendLabelToTorrentSavePath(QTorrentHandle h);
void changeLabelInTorrentSavePath(QTorrentHandle h, QString old_label, QString new_label);
#ifdef LIBTORRENT_0_15
void appendqBextensionToTorrent(QTorrentHandle h, bool append);
void setAppendqBExtension(bool append);
#endif
void applyEncryptionSettings(pe_settings se);
void setDownloadLimit(QString hash, long val);
void setUploadLimit(QString hash, long val);
@@ -205,7 +227,11 @@ public slots:
void enableNATPMP(bool b);
void enableLSD(bool b);
bool enableDHT(bool b);
#ifdef DISABLE_GUI
void addConsoleMessage(QString msg, QString color=QString::null);
#else
void addConsoleMessage(QString msg, QColor color=QApplication::palette().color(QPalette::WindowText));
#endif
void addPeerBanMessage(QString msg, bool from_ipfilter);
void processDownloadedFile(QString, QString);
void addMagnetSkipAddDlg(QString uri);
@@ -233,6 +259,8 @@ signals:
void downloadFromUrlFailure(QString url, QString reason);
void torrentFinishedChecking(QTorrentHandle& h);
void metadataReceived(QTorrentHandle &h);
void savePathChanged(QTorrentHandle &h);
void newConsoleMessage(QString msg);
};
#endif

View File

@@ -33,6 +33,7 @@
#include <QDialog>
#include "ui_confirmdeletiondlg.h"
#include "misc.h"
class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg {
Q_OBJECT
@@ -40,6 +41,7 @@ class DeletionConfirmationDlg : public QDialog, private Ui::confirmDeletionDlg {
public:
DeletionConfirmationDlg(QWidget *parent=0): QDialog(parent) {
setupUi(this);
move(misc::screenCenter(this));
}
bool shouldDeleteLocalFiles() const {

View File

@@ -36,6 +36,7 @@
#include <QList>
#include <QPixmap>
#include <libtorrent/bitfield.hpp>
#include <math.h>
using namespace libtorrent;
#define BAR_HEIGHT 18
@@ -55,19 +56,46 @@ public:
void setProgress(bitfield pieces) {
if(pieces.empty()) {
// Empty bar
pixmap = QPixmap(1, 1);
QPainter painter(&pixmap);
painter.setPen(Qt::white);
painter.drawPoint(0,0);
QPixmap pix = QPixmap(1, 1);
pix.fill();
pixmap = pix;
} else {
pixmap = QPixmap(pieces.size(), 1);
QPainter painter(&pixmap);
for(uint i=0; i<pieces.size(); ++i) {
if(pieces[i])
painter.setPen(Qt::blue);
else
painter.setPen(Qt::white);
painter.drawPoint(i,0);
int nb_pieces = pieces.size();
// Reduce the number of pieces before creating the pixmap
// otherwise it can crash when there are too many pieces
if(nb_pieces > width()) {
int ratio = floor(nb_pieces/(double)width());
QVector<bool> scaled_pieces;
for(int i=0; i<nb_pieces; i+= ratio) {
bool have = true;
for(int j=i; j<qMin(i+ratio, nb_pieces); ++j) {
if(!pieces[i]) { have = false; break; }
}
scaled_pieces << have;
}
QPixmap pix = QPixmap(scaled_pieces.size(), 1);
pix.fill();
QPainter painter(&pix);
for(int i=0; i<scaled_pieces.size(); ++i) {
if(scaled_pieces[i])
painter.setPen(Qt::blue);
else
painter.setPen(Qt::white);
painter.drawPoint(i,0);
}
pixmap = pix;
} else {
QPixmap pix = QPixmap(pieces.size(), 1);
pix.fill();
QPainter painter(&pix);
for(uint i=0; i<pieces.size(); ++i) {
if(pieces[i])
painter.setPen(Qt::blue);
else
painter.setPen(Qt::white);
painter.drawPoint(i,0);
}
pixmap = pix;
}
}
update();

View File

@@ -35,6 +35,8 @@
#include <QNetworkRequest>
#include <QNetworkProxy>
enum ProxyType {HTTP=1, SOCKS5=2, HTTP_PW=3, SOCKS5_PW=4, SOCKS4=5};
/** Download Thread **/
downloadThread::downloadThread(QObject* parent) : QObject(parent) {
@@ -54,6 +56,18 @@ void downloadThread::processDlFinished(QNetworkReply* reply) {
// Failure
emit downloadFailure(url, errorCodeToString(reply->error()));
} else {
QVariant redirection = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if(redirection.isValid()) {
// We should redirect
qDebug("Redirecting from %s to %s", url.toLocal8Bit().data(), redirection.toUrl().toString().toLocal8Bit().data());
redirect_mapping.insert(redirection.toUrl().toString(), url);
downloadUrl(redirection.toUrl().toString());
return;
}
// Checking if it was redirecting, restoring initial URL
if(redirect_mapping.contains(url)) {
url = redirect_mapping.take(url);
}
// Success
QString filePath;
QTemporaryFile tmpfile;
@@ -105,7 +119,7 @@ void downloadThread::applyProxySettings() {
qDebug("Using proxy: %s", (IP+QString(":")+port).toLocal8Bit().data());
proxy.setPort(port.toUShort());
// Default proxy type is HTTP, we must change if it is SOCKS5
if(intValue%2==0) {
if(intValue == SOCKS5 || intValue == SOCKS5_PW) {
qDebug("Proxy is SOCKS5, not HTTP");
proxy.setType(QNetworkProxy::Socks5Proxy);
} else {

View File

@@ -33,6 +33,7 @@
#include <QNetworkReply>
#include <QObject>
#include <QHash>
class QNetworkAccessManager;
@@ -41,6 +42,7 @@ class downloadThread : public QObject {
private:
QNetworkAccessManager *networkManager;
QHash<QString, QString> redirect_mapping;
signals:
void downloadFinished(QString url, QString file_path);

View File

@@ -170,7 +170,7 @@ void engineSelectDlg::on_actionUninstall_triggered() {
}else {
// Proceed with uninstall
// remove it from hard drive
QDir enginesFolder(misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines");
QDir enginesFolder(misc::searchEngineLocation()+QDir::separator()+"engines");
QStringList filters;
filters << id+".*";
QStringList files = enginesFolder.entryList(filters, QDir::Files, QDir::Unsorted);
@@ -245,7 +245,7 @@ QTreeWidgetItem* engineSelectDlg::findItemWithID(QString id){
}
bool engineSelectDlg::isUpdateNeeded(QString plugin_name, float new_version) const {
float old_version = SearchEngine::getPluginVersion(misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py");
float old_version = SearchEngine::getPluginVersion(misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py");
qDebug("IsUpdate needed? tobeinstalled: %.2f, alreadyinstalled: %.2f", new_version, old_version);
return (new_version > old_version);
}
@@ -260,7 +260,7 @@ void engineSelectDlg::installPlugin(QString path, QString plugin_name) {
return;
}
// Process with install
QString dest_path = misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py";
QString dest_path = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py";
bool update = false;
if(QFile::exists(dest_path)) {
// Backup in case install fails
@@ -324,12 +324,12 @@ void engineSelectDlg::addNewEngine(QString engine_name) {
setRowColor(pluginsTree->indexOfTopLevelItem(item), "red");
}
// Handle icon
QString iconPath = misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+engine->getName()+".png";
QString iconPath = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+engine->getName()+".png";
if(QFile::exists(iconPath)) {
// Good, we already have the icon
item->setData(ENGINE_NAME, Qt::DecorationRole, QVariant(QIcon(iconPath)));
} else {
iconPath = misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+engine->getName()+".ico";
iconPath = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+engine->getName()+".ico";
if(QFile::exists(iconPath)) { // ICO support
item->setData(ENGINE_NAME, Qt::DecorationRole, QVariant(QIcon(iconPath)));
} else {
@@ -427,9 +427,9 @@ void engineSelectDlg::processDownloadedFile(QString url, QString filePath) {
QFile icon(filePath);
icon.open(QIODevice::ReadOnly);
if(ICOHandler::canRead(&icon))
iconPath = misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+id+".ico";
iconPath = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+id+".ico";
else
iconPath = misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+id+".png";
iconPath = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+id+".png";
QFile::copy(filePath, iconPath);
item->setData(ENGINE_NAME, Qt::DecorationRole, QVariant(QIcon(iconPath)));
}

View File

@@ -33,12 +33,12 @@
#include "bittorrent.h"
#include "misc.h"
#include "preferences.h"
#include "proplistdelegate.h"
//#include "proplistdelegate.h"
#include "torrentpersistentdata.h"
#include <QDebug>
EventManager::EventManager(QObject *parent, Bittorrent *BTSession)
: QObject(parent), BTSession(BTSession)
: QObject(parent), BTSession(BTSession)
{
}
@@ -103,13 +103,9 @@ QList<QVariantMap> EventManager::getPropFilesInfo(QString hash) const {
int i=0;
for(fi=t.begin_files(); fi != t.end_files(); fi++) {
QVariantMap file;
if(h.num_files() == 1) {
file["name"] = h.name();
} else {
QString path = QDir::cleanPath(misc::toQString(fi->path.string()));
QString name = path.split('/').last();
file["name"] = name;
}
QString path = QDir::cleanPath(misc::toQString(fi->path.string()));
QString name = path.split('/').last();
file["name"] = name;
file["size"] = misc::friendlyUnit((double)fi->size);
if(fi->size > 0)
file["progress"] = fp[i]/(double)fi->size;
@@ -122,14 +118,162 @@ QList<QVariantMap> EventManager::getPropFilesInfo(QString hash) const {
return files;
}
void EventManager::setGlobalPreferences(QVariantMap m) const {
// UI
if(m.contains("locale"))
Preferences::setLocale(m["locale"].toString());
// Downloads
if(m.contains("save_path"))
Preferences::setSavePath(m["save_path"].toString());
if(m.contains("temp_path_enabled"))
Preferences::setTempPathEnabled(m["temp_path_enabled"].toBool());
if(m.contains("temp_path"))
Preferences::setTempPath(m["temp_path"].toString());
if(m.contains("scan_dir"))
Preferences::setScanDir(m["scan_dir"].toString());
if(m.contains("preallocate_all"))
Preferences::preAllocateAllFiles(m["preallocate_all"].toBool());
if(m.contains("queueing_enabled"))
Preferences::setQueueingSystemEnabled(m["queueing_enabled"].toBool());
if(m.contains("max_active_downloads"))
Preferences::setMaxActiveDownloads(m["max_active_downloads"].toInt());
if(m.contains("max_active_torrents"))
Preferences::setMaxActiveTorrents(m["max_active_torrents"].toInt());
if(m.contains("max_active_uploads"))
Preferences::setMaxActiveUploads(m["max_active_uploads"].toInt());
#ifdef LIBTORRENT_0_15
if(m.contains("incomplete_files_ext"))
Preferences::useIncompleteFilesExtension(m["incomplete_files_ext"].toBool());
#endif
// Connection
if(m.contains("listen_port"))
Preferences::setSessionPort(m["listen_port"].toInt());
if(m.contains("upnp"))
Preferences::setUPnPEnabled(m["upnp"].toBool());
if(m.contains("natpmp"))
Preferences::setNATPMPEnabled(m["natpmp"].toBool());
if(m.contains("dl_limit"))
Preferences::setGlobalDownloadLimit(m["dl_limit"].toInt());
if(m.contains("up_limit"))
Preferences::setGlobalUploadLimit(m["up_limit"].toInt());
if(m.contains("max_connec"))
Preferences::setMaxConnecs(m["max_connec"].toInt());
if(m.contains("max_connec_per_torrent"))
Preferences::setMaxConnecsPerTorrent(m["max_connec_per_torrent"].toInt());
if(m.contains("max_uploads_per_torrent"))
Preferences::setMaxUploadsPerTorrent(m["max_uploads_per_torrent"].toInt());
// Bittorrent
if(m.contains("dht"))
Preferences::setDHTEnabled(m["dht"].toBool());
if(m.contains("pex"))
Preferences::setPeXEnabled(m["pex"].toBool());
qDebug("Pex support: %d", (int)m["pex"].toBool());
if(m.contains("lsd"))
Preferences::setLSDEnabled(m["lsd"].toBool());
if(m.contains("encryption"))
Preferences::setEncryptionSetting(m["encryption"].toInt());
if(m.contains("peer_id"))
Preferences::setPeerID(m["peer_id"].toString());
if(m.contains("peer_version"))
Preferences::setClientVersion(m["peer_version"].toString());
if(m.contains("peer_build"))
Preferences::setClientBuild(m["peer_build"].toString());
// Proxy
if(m.contains("proxy_type"))
Preferences::setPeerProxyType(m["proxy_type"].toInt());
if(m.contains("proxy_ip"))
Preferences::setPeerProxyIp(m["proxy_ip"].toString());
if(m.contains("proxy_port"))
Preferences::setPeerProxyPort(m["proxy_port"].toUInt());
if(m.contains("proxy_auth_enabled"))
Preferences::setPeerProxyAuthEnabled(m["proxy_auth_enabled"].toBool());
if(m.contains("proxy_username"))
Preferences::setPeerProxyUsername(m["proxy_username"].toString());
if(m.contains("proxy_password"))
Preferences::setPeerProxyPassword(m["proxy_password"].toString());
if(m.contains("http_proxy_type"))
Preferences::setHTTPProxyType(m["http_proxy_type"].toInt());
if(m.contains("http_proxy_ip"))
Preferences::setHTTPProxyIp(m["http_proxy_ip"].toString());
if(m.contains("http_proxy_port"))
Preferences::setHTTPProxyPort(m["http_proxy_port"].toUInt());
if(m.contains("http_proxy_auth_enabled"))
Preferences::setHTTPProxyAuthEnabled(m["http_proxy_auth_enabled"].toBool());
if(m.contains("http_proxy_username"))
Preferences::setHTTPProxyUsername(m["http_proxy_username"].toString());
if(m.contains("http_proxy_password"))
Preferences::setHTTPProxyPassword(m["http_proxy_password"].toString());
// IP Filter
if(m.contains("ip_filter_enabled"))
Preferences::setFilteringEnabled(m["ip_filter_enabled"].toBool());
if(m.contains("ip_filter_path"))
Preferences::setFilter(m["ip_filter_path"].toString());
// Web UI
if(m.contains("web_ui_port"))
Preferences::setWebUiPort(m["web_ui_port"].toUInt());
if(m.contains("web_ui_username"))
Preferences::setWebUiUsername(m["web_ui_username"].toString());
if(m.contains("web_ui_password"))
Preferences::setWebUiPassword(m["web_ui_password"].toString());
// Reload preferences
BTSession->configureSession();
}
QVariantMap EventManager::getGlobalPreferences() const {
QVariantMap data;
// UI
data["locale"] = Preferences::getLocale();
// Downloads
data["save_path"] = Preferences::getSavePath();
data["temp_path_enabled"] = Preferences::isTempPathEnabled();
data["temp_path"] = Preferences::getTempPath();
data["scan_dir_enabled"] = Preferences::isDirScanEnabled();
data["scan_dir"] = Preferences::getScanDir();
data["preallocate_all"] = Preferences::preAllocateAllFiles();
data["queueing_enabled"] = Preferences::isQueueingSystemEnabled();
data["max_active_downloads"] = Preferences::getMaxActiveDownloads();
data["max_active_torrents"] = Preferences::getMaxActiveTorrents();
data["max_active_uploads"] = Preferences::getMaxActiveUploads();
#ifdef LIBTORRENT_0_15
data["incomplete_files_ext"] = Preferences::useIncompleteFilesExtension();
#endif
// Connection
data["listen_port"] = Preferences::getSessionPort();
data["upnp"] = Preferences::isUPnPEnabled();
data["natpmp"] = Preferences::isNATPMPEnabled();
data["dl_limit"] = Preferences::getGlobalDownloadLimit();
data["up_limit"] = Preferences::getGlobalUploadLimit();
data["dht"] = Preferences::isDHTEnabled();
data["max_connec"] = Preferences::getMaxConnecs();
data["max_connec_per_torrent"] = Preferences::getMaxConnecsPerTorrent();
data["max_uploads_per_torrent"] = Preferences::getMaxUploadsPerTorrent();
// Bittorrent
data["dht"] = Preferences::isDHTEnabled();
data["pex"] = Preferences::isPeXEnabled();
data["lsd"] = Preferences::isLSDEnabled();
data["encryption"] = Preferences::getEncryptionSetting();
data["peer_id"] = Preferences::getPeerID();
data["peer_version"] = Preferences::getClientVersion();
data["peer_build"] = Preferences::getClientBuild();
// Proxy
data["proxy_type"] = Preferences::getPeerProxyType();
data["proxy_ip"] = Preferences::getPeerProxyIp();
data["proxy_port"] = Preferences::getPeerProxyPort();
data["proxy_auth_enabled"] = Preferences::isPeerProxyAuthEnabled();
data["proxy_username"] = Preferences::getPeerProxyUsername();
data["proxy_password"] = Preferences::getPeerProxyPassword();
data["http_proxy_type"] = Preferences::getHTTPProxyType();
data["http_proxy_ip"] = Preferences::getHTTPProxyIp();
data["http_proxy_port"] = Preferences::getHTTPProxyPort();
data["http_proxy_auth_enabled"] = Preferences::isHTTPProxyAuthEnabled();
data["http_proxy_username"] = Preferences::getHTTPProxyUsername();
data["http_proxy_password"] = Preferences::getHTTPProxyPassword();
// IP Filter
data["ip_filter_enabled"] = Preferences::isFilteringEnabled();
data["ip_filter_path"] = Preferences::getFilter();
// Web UI
data["web_ui_port"] = Preferences::getWebUiPort();
data["web_ui_username"] = Preferences::getWebUiUsername();
data["web_ui_password"] = Preferences::getWebUiPassword();
return data;
}
@@ -162,10 +306,10 @@ QVariantMap EventManager::getPropGeneralInfo(QString hash) const {
data["nb_connections"] = QString::number(h.num_connections())+" ("+tr("%1 max", "e.g. 10 max").arg(QString::number(h.connections_limit()))+")";
// Update ratio info
double ratio = BTSession->getRealRatio(h.hash());
if(ratio > 100.)
data["share_ratio"] = QString::fromUtf8("∞");
else
data["share_ratio"] = QString(QByteArray::number(ratio, 'f', 1));
if(ratio > 100.)
data["share_ratio"] = QString::fromUtf8("∞");
else
data["share_ratio"] = QString(QByteArray::number(ratio, 'f', 1));
}
return data;
}
@@ -233,7 +377,7 @@ void EventManager::modifiedTorrent(QTorrentHandle h)
}
event["name"] = QVariant(h.name());
event["size"] = QVariant(misc::friendlyUnit(h.actual_size()));
event["progress"] = QVariant(h.progress());
event["progress"] = QVariant((double)h.progress());
event["dlspeed"] = QVariant(tr("%1/s", "e.g. 120 KiB/s").arg(misc::friendlyUnit(h.download_payload_rate())));
if(BTSession->isQueueingEnabled()) {
if(h.queue_position() >= 0)

Some files were not shown because too many files have changed in this diff Show More