1
mirror of https://github.com/qbittorrent/qBittorrent synced 2025-10-14 11:52:15 +02:00

Compare commits

..

274 Commits

Author SHA1 Message Date
Christophe Dumez
0b0d473a53 tagged v1.3.0 release 2009-01-14 12:37:31 +00:00
Christophe Dumez
f9f912906e - Fix version in qBittorrent.desktop 2009-01-11 10:19:02 +00:00
Christophe Dumez
7b4eee7a7d - Updated Changelog 2009-01-09 18:18:57 +00:00
Christophe Dumez
e799ac57ed - Updated TODO 2009-01-09 18:11:40 +00:00
Christophe Dumez
30c93b9a4a - v1.3.0final 2009-01-09 18:09:41 +00:00
Christophe Dumez
03dc617874 - Updated some translations 2009-01-06 20:38:52 +00:00
Christophe Dumez
bc29577a7b - Added some debug for proxy settings 2009-01-05 23:16:34 +00:00
Christophe Dumez
5509e94778 - Fixed pausing of queued torrents 2009-01-05 22:16:08 +00:00
Christophe Dumez
89330e11de - Priorities are now remembered across restart (bugfix) 2009-01-05 21:19:55 +00:00
Christophe Dumez
c016c4bf66 - Improved DHT code
- Remove outdated comment
2009-01-05 20:41:35 +00:00
Christophe Dumez
3f1081b621 BUGFIX: Proxy settings are now saved even if disabled 2009-01-05 11:42:37 +00:00
Christophe Dumez
e3ae03c8a8 - Ok, HTTP proxy code is working now 2009-01-05 11:20:32 +00:00
Christophe Dumez
fbe292d06e - Fixed another error in HTTP proxy code 2009-01-05 11:13:05 +00:00
Christophe Dumez
1d294e43f1 - Improve src/src.pro for windows 2009-01-04 19:48:16 +00:00
Christophe Dumez
d883ef27be - Use rootDir as default dir on Windows instead of homeDir 2009-01-04 19:37:55 +00:00
Christophe Dumez
be934837e5 - Fixed possible issue in tracker addition 2009-01-04 17:13:47 +00:00
Christophe Dumez
956f97f6d6 - Fixed systray icon tooltip on Windows 2009-01-04 17:08:52 +00:00
Christophe Dumez
de38ca3e23 - Updated Changelog 2009-01-04 15:45:44 +00:00
Christophe Dumez
1efaea46e3 - Made sure that old fastresume is overwritten when saving new one 2009-01-04 15:37:13 +00:00
Christophe Dumez
2694a0947f - Fixed possible crash when pausing a torrent 2009-01-04 12:44:55 +00:00
Christophe Dumez
f61d9d23f5 - Again 2009-01-04 11:33:18 +00:00
Christophe Dumez
60dda258b3 - typo in src.pro 2009-01-04 11:32:31 +00:00
Christophe Dumez
c79a4a746f - Attempt to fix linking on windows 2009-01-04 09:19:20 +00:00
Christophe Dumez
942b579d8e - Removed dependency on qdbus since we are not using it any longer 2009-01-04 00:05:08 +00:00
Christophe Dumez
93bc6dca95 - A lot of improvement in proxy code 2009-01-03 22:49:21 +00:00
Christophe Dumez
f36052351c - Added debug for proxy code 2009-01-03 22:33:05 +00:00
Christophe Dumez
d40c646561 - Removed useless check in proxy code 2009-01-03 22:26:45 +00:00
Christophe Dumez
9412ced722 - Important HTTP proxy fix 2009-01-03 22:24:56 +00:00
Christophe Dumez
7037b53ff8 - Another HTTP proxy fix 2009-01-03 22:20:57 +00:00
Christophe Dumez
adc72fb9a6 - Bump to rc6 2009-01-03 20:50:48 +00:00
Christophe Dumez
f0ca99ed6c - Fixed default state for UPnP/nat-pmp/lsd (DHT was fixed in previous commit already) 2009-01-03 20:45:07 +00:00
Christophe Dumez
e443aa75b7 - Quick fix for #313549 2009-01-03 20:33:38 +00:00
Christophe Dumez
282d0a4af6 - Save fastresume fata when pausing torrents to speed up qBittorrent shutdown 2009-01-03 20:06:46 +00:00
Christophe Dumez
25adf6b061 - Added a workaround fix for a bug in libtorrent regarding set_priority_up() function 2009-01-03 19:47:03 +00:00
Christophe Dumez
88f0ffe86d - Fixed column sorting restoring on startup 2009-01-03 19:34:09 +00:00
Christophe Dumez
c786c42bb1 - Fix for HTTP Proxy settings 2009-01-03 19:23:33 +00:00
Christophe Dumez
36bc2e96ba - Bump to rc5 2008-12-30 11:52:46 +00:00
Christophe Dumez
f9bf485ed7 - Forgot to consider allocating state in WebUI 2008-12-30 11:52:22 +00:00
Christophe Dumez
c18103539c - Display progress using progress bars in Web UI 2008-12-30 11:23:18 +00:00
Christophe Dumez
727f59f73f - Fix compilation warning 2008-12-30 09:02:06 +00:00
Christophe Dumez
5d2d1dfa94 - Compilation fix for MinGW 2008-12-30 08:57:23 +00:00
Christophe Dumez
cf694d14f3 - Updated Korean translation 2008-12-30 08:48:29 +00:00
Christophe Dumez
ec24fe2f49 - No longer force plastiqueStyle as a default (closes #312333) 2008-12-30 02:17:46 +00:00
Christophe Dumez
a0b4e54410 - Got rid of .paused files, useless with new libtorrent 2008-12-30 00:34:41 +00:00
Christophe Dumez
c97bce4d61 - Removed workaround for getting progress of paused torrents, apparently it works 2008-12-30 00:11:20 +00:00
Christophe Dumez
afbfe1a96d - Hide priority column in Web UI when queueing is disabled 2008-12-29 23:04:45 +00:00
Christophe Dumez
2651ec5f0b - Forgot to hide decrease Priority button when disabling queueing 2008-12-29 23:00:13 +00:00
Christophe Dumez
330905da5e - Added priority actions in Web UI 2008-12-29 22:46:18 +00:00
Christophe Dumez
4c6359276c - Fixed progress display of uncheck torrents 2008-12-29 22:09:39 +00:00
Christophe Dumez
ff1fc527e0 - Made some text bigger in options 2008-12-29 21:47:22 +00:00
Christophe Dumez
d79cb6b66e - French translation fix 2008-12-29 21:46:29 +00:00
Christophe Dumez
0ac2554060 - qBittorrent shutdown is now way faster 2008-12-29 21:22:26 +00:00
Christophe Dumez
1d31e049a4 - Fixed possible deadlock when saving fastresume data 2008-12-29 21:10:31 +00:00
Christophe Dumez
d5a4794610 - Fixed priority display for paused torrents 2008-12-29 20:06:08 +00:00
Christophe Dumez
29886acc01 - Putting back priority buttons in toolBar 2008-12-29 20:01:03 +00:00
Christophe Dumez
f1ed7f06b9 - Removed a function that is no longer used 2008-12-29 18:40:10 +00:00
Christophe Dumez
a848538d66 - Pause / resume in Web UI now updates the GUI
- Code cleanup
2008-12-29 18:36:54 +00:00
Christophe Dumez
b58046b1fc - Use QPlastiqueStyle as a default 2008-12-29 11:31:57 +00:00
Christophe Dumez
fe95e90e05 - Updated Changelog 2008-12-28 21:16:17 +00:00
Christophe Dumez
1544300616 - Allow to delete permanently from WebUI 2008-12-28 21:12:49 +00:00
Christophe Dumez
028041f874 - Updated Czech translation 2008-12-28 09:58:15 +00:00
Christophe Dumez
81f2d7ee4a - Cleaned up src.pro
- Removed some debug
2008-12-28 01:17:57 +00:00
Christophe Dumez
66874fbd2f - This is not needed because a showEvent is raised anyway 2008-12-27 22:40:23 +00:00
Christophe Dumez
f47b3be0be - Removed -O0 compil flag 2008-12-27 22:35:45 +00:00
Christophe Dumez
87eee7029d - Force lists refresh before initially displaying the window to avoid lag
- Removed session tweaking on exit since it does not have any effect
2008-12-27 22:29:37 +00:00
Christophe Dumez
713c80451e - Bump to rc3 2008-12-27 21:34:28 +00:00
Christophe Dumez
60889cac79 - Catch exceptions on torrent aditions to avoid crashing because of a bad torrent (that is correctly loaded by torrent_info for some reason) 2008-12-27 21:25:58 +00:00
Christophe Dumez
d398679c7e - Forgot to add this line back 2008-12-27 20:58:30 +00:00
Christophe Dumez
2e5330e54b - Removed code that is no longer needed 2008-12-27 20:35:25 +00:00
Christophe Dumez
1499138b9b - Fix to avoid crash when loading a path that does not exist 2008-12-27 20:30:19 +00:00
Christophe Dumez
2433a87445 - Bump to rc2 2008-12-27 17:55:46 +00:00
Christophe Dumez
d0de11909f - Translations fix due to latest change 2008-12-27 17:55:07 +00:00
Christophe Dumez
3f5340523f - Fix for queueing system 2008-12-27 17:44:33 +00:00
Christophe Dumez
cc5015773b - Should fix queueing system 2008-12-27 17:23:49 +00:00
Christophe Dumez
cd260198f9 - Fixed remembering of paused torrents cleanly 2008-12-27 17:05:26 +00:00
Christophe Dumez
71e3061c18 - Remember paused torrents on startup 2008-12-27 13:04:06 +00:00
Christophe Dumez
6369401150 - Fixed assert hit in new FSWatcher code 2008-12-27 12:12:13 +00:00
Christophe Dumez
fa05441e74 - A little list refresh optimizing 2008-12-27 10:29:44 +00:00
Christophe Dumez
81aac9ebcc - Fixed pause/resume actions in Web UI 2008-12-27 10:14:16 +00:00
Christophe Dumez
7a1af536b6 - Fixed start action 2008-12-27 10:07:03 +00:00
Christophe Dumez
45efcfce13 - Save session data and fast resume data sooner on exit (in case) 2008-12-27 10:02:42 +00:00
Christophe Dumez
cddc3a0a43 - Remove useless signals 2008-12-27 09:47:31 +00:00
Christophe Dumez
c38a8a2bec - Removed code that is no longer needed 2008-12-27 09:40:21 +00:00
Christophe Dumez
1225d16413 - Removed code that is no longer needed 2008-12-27 09:21:09 +00:00
Christophe Dumez
384f3b23ee - Made seed detection a bit safer (do not use progress) 2008-12-27 09:10:07 +00:00
Christophe Dumez
a3cfa6bba1 - Fixed torrents moving back from finished list to download list (without recheck) 2008-12-26 22:30:23 +00:00
Christophe Dumez
51638eddcc - Some more signal/slot fixing 2008-12-26 22:17:02 +00:00
Christophe Dumez
41c6a847b9 - some more signal / slot fixing 2008-12-26 22:11:40 +00:00
Christophe Dumez
d57062a45a - Fixed broken action "start All / Pause all" due to latest code changes 2008-12-26 22:02:01 +00:00
Christophe Dumez
32f478a8c2 - Removed some useless code due to latest changes 2008-12-26 21:59:54 +00:00
Christophe Dumez
61dae1444b - Code optimization for torrent moving back to download list detection 2008-12-26 21:49:13 +00:00
Christophe Dumez
8ed40cc856 - Do not refresh lists when window is not visible (save cpu)
- Force list refresh on show Event to avoid lag before next UpdateList() timer call
2008-12-26 21:41:09 +00:00
Christophe Dumez
941b8c8d2a - Fixed torrent completed message (was not displayed due to last commit) 2008-12-26 21:26:06 +00:00
Christophe Dumez
4f2a2dfab9 - Huge code refactoring (qBittorrent no longer store torrents and access them using libtorrent API) 2008-12-26 21:18:33 +00:00
Christophe Dumez
4a6ab376af - Workaround for is_seed bug: http://code.rasterbar.com/libtorrent/ticket/402 2008-12-26 19:14:19 +00:00
Christophe Dumez
1e37858cc4 - Reset torrent display once it is queued 2008-12-26 18:57:16 +00:00
Christophe Dumez
668268b6b5 - A little downloadThread aborting improvement 2008-12-26 16:43:55 +00:00
Christophe Dumez
cfcd9b7eaf - Fixed memory leak introduced in last commit 2008-12-26 16:27:52 +00:00
Christophe Dumez
6a3dddd0cc Catch SIGTERM to exit cleanly (e.g. computer shutdown) 2008-12-26 16:23:53 +00:00
Christophe Dumez
dfb2046f82 - Fixed icon for seeding torrents (paused or queued) in Web UI 2008-12-26 15:48:07 +00:00
Christophe Dumez
3ae55b6a6f - Fixed typo 2008-12-26 13:49:45 +00:00
Christophe Dumez
7e53d23e33 - Added some debug output on exit 2008-12-26 13:44:39 +00:00
Christophe Dumez
ce2294ee96 - Made session deletion a bit faster
- Fixed possible memory leak when folder scanning is enabled
2008-12-26 13:39:11 +00:00
Christophe Dumez
14646d0f9e Rewrote folder scanning code (Now uses a filesystem watcher) 2008-12-26 13:17:08 +00:00
Christophe Dumez
717a4b00e1 - Fixed piratebay plugin 2008-12-25 19:12:36 +00:00
Christophe Dumez
fca3b66a25 - Rewrote isohunt plugin which was broken 2008-12-25 18:56:04 +00:00
Christophe Dumez
1a861ef240 - Fixed BTJunkie plugin 2008-12-25 17:40:37 +00:00
Christophe Dumez
1590d9a98f - Updated Changelog 2008-12-25 16:22:46 +00:00
Christophe Dumez
112bcd7255 - Add notification in WebUI when qBittorrent is unreachable 2008-12-25 16:20:30 +00:00
Christophe Dumez
af29228cc9 - Updated Chinese (simplified) translation 2008-12-25 16:06:34 +00:00
Christophe Dumez
b8c79e0b5f - Simplified and optimized json code 2008-12-25 14:33:37 +00:00
Christophe Dumez
0d078f660a - fixed seed detection in eventmanager + code is simpler 2008-12-25 13:48:23 +00:00
Christophe Dumez
e7f89f256a - Updated slovak translation 2008-12-24 16:26:45 +00:00
Christophe Dumez
cb693a0795 - Removed outdated comment 2008-12-24 15:06:58 +00:00
Christophe Dumez
7b57345c4f - Fixed stylesheet warning in console on startup 2008-12-24 15:05:45 +00:00
Christophe Dumez
90879386d5 - Fixed Qt4 warning when deleting options 2008-12-24 14:53:40 +00:00
Christophe Dumez
3678aa4d23 - bump to rc1
- Updated TODO
- Fix for toolBar spacing
- A little code cleanup
2008-12-24 14:41:16 +00:00
Christophe Dumez
e497789ec7 - WebUI is now working for IE7 2008-12-24 11:28:02 +00:00
Christophe Dumez
2134d404a5 - Updated version to v1.3 (WebUI) 2008-12-24 10:05:09 +00:00
Christophe Dumez
e0707f6907 - Simplified page structure 2008-12-24 09:59:06 +00:00
Christophe Dumez
816f35cbab - Ported WebUI to MochaUI 0.9.5 2008-12-23 23:47:30 +00:00
Christophe Dumez
a73d3132df - Removed some useless debug
- Increased httpserver update interval
2008-12-23 16:50:46 +00:00
Christophe Dumez
368c122dce - Queueing system fix 2008-12-23 16:27:47 +00:00
Christophe Dumez
c41d17043c - Fixed another memory leak in torrent addition dialog 2008-12-23 15:51:32 +00:00
Christophe Dumez
3c17a1410b - Fixed memory leak in torrent addition dialog 2008-12-23 15:07:29 +00:00
Christophe Dumez
078110851d - Oops typo 2008-12-23 14:58:38 +00:00
Christophe Dumez
70725bdfe2 - Fixed memory leak in RSS parser 2008-12-23 14:56:17 +00:00
Christophe Dumez
3c0a610a34 - Fixed includes 2008-12-23 14:41:14 +00:00
Christophe Dumez
d5b74eecd0 - Updated french translation 2008-12-23 13:51:08 +00:00
Christophe Dumez
1faf183c73 - Updated some translations 2008-12-23 12:59:47 +00:00
Christophe Dumez
a1773a7cfd - Updated language files 2008-12-20 19:41:08 +00:00
Christophe Dumez
1af3515b00 - Updated splashscreen
- bump to beta
2008-12-15 19:28:09 +00:00
Christophe Dumez
70e2a5d3b3 - Fixed compilation warning in main.cpp
- Removed use of Qt3 backport headers in ico.cpp
2008-12-15 19:24:10 +00:00
Christophe Dumez
78409570a9 - Fixed crash when dht_state is missing 2008-12-15 17:28:05 +00:00
Christophe Dumez
5133931302 - Another patch by Attila to fix mingw32 compilation 2008-12-12 09:20:47 +00:00
Christophe Dumez
8326cebf5c - Fix for compiling with mingw32 (By Attila Olah) 2008-12-11 20:49:21 +00:00
Christophe Dumez
ab46f11af2 - Added name name of new turkish translator to about dialog 2008-11-28 14:30:07 +00:00
Christophe Dumez
91acb1a6ec Updated turkish translation 2008-11-28 14:27:56 +00:00
Christophe Dumez
c721fad54b - Fixed ratio column sorting 2008-11-22 14:05:22 +00:00
Christophe Dumez
2aea2a0032 - got rid of libMagick++ dependency 2008-11-04 22:39:43 +00:00
Christophe Dumez
3164337c3c - Some more cleanup 2008-11-04 19:14:51 +00:00
Christophe Dumez
b984c309ff - removed no longer needed pointer
- made use of QPointer instead of c++ pointer
2008-11-04 19:01:51 +00:00
Christophe Dumez
cfbd06225b - Removed priority buttons from toolBar since it only affects download list now 2008-11-02 20:42:02 +00:00
Christophe Dumez
b0a0abd764 Allow to change the save path of torrents after addition 2008-11-02 19:55:55 +00:00
Christophe Dumez
9618056b4e - Added support for 2 new extensions (uTorrent metadata and smart ban plugin)
- Removed option to disable uTorrent Peer eXchange (PeX) -> always ON
2008-11-02 19:22:10 +00:00
Christophe Dumez
8b40e43432 should speed up startup 2008-11-02 18:19:14 +00:00
Christophe Dumez
01bc15d3f4 - Allow to force rechecking torrents 2008-11-02 13:53:45 +00:00
Christophe Dumez
3282e1bcc9 - Save and load session state to remember it over different sessions 2008-11-02 13:19:27 +00:00
Christophe Dumez
e5b6a5605a - ETA calculation now relies on average speed over all sessions
- New ETA calculation system saves memory
- Updated Changelog
2008-11-02 13:07:38 +00:00
Christophe Dumez
9b67807926 - Queueing system should work fine now (port is complete, needs testing) 2008-11-02 11:43:20 +00:00
Christophe Dumez
f3729fbae6 - Use libtorrent queueing system (probably buggy and queueing currently does not work for seeds) 2008-11-02 10:47:59 +00:00
Christophe Dumez
0538c9c3e8 - Removed some debug 2008-11-02 09:30:35 +00:00
Christophe Dumez
53a0e85b8d - Do not save fastresume data for checking torrents 2008-11-02 00:04:38 +00:00
Christophe Dumez
453dd93abf - Should fix fastresume data code 2008-11-01 23:58:53 +00:00
Christophe Dumez
669cc2395a - Updated changelog 2008-11-01 22:09:09 +00:00
Christophe Dumez
82706141cf Ratio calculation improvement: make usage of new all_time_upload and all_time_download variables in torrent_status. 2008-11-01 22:07:14 +00:00
Christophe Dumez
c536f24d55 - Changed default icon from connecting to stalled since connecting state no longer exists 2008-11-01 21:45:30 +00:00
Christophe Dumez
764b4e72ca - rough port to libtorrent v0.14.0. This is probably buggy but it compiles without warnings 2008-11-01 21:42:56 +00:00
Christophe Dumez
19dd21062b - trunk will now be of v1.3.0 2008-11-01 12:50:07 +00:00
Christophe Dumez
2d24b468b6 Fixed possible crash when deleting a torrent permanently 2008-11-01 12:33:52 +00:00
Christophe Dumez
2dc75cb98d - Updated release date 2008-10-29 20:02:02 +00:00
Christophe Dumez
5e3be25916 - Single instance code is now more reliable on Qt >= 4.4 (closes #286968) 2008-10-29 19:58:44 +00:00
Christophe Dumez
49e8bad7cc - Removed rc from version 2008-10-28 21:39:12 +00:00
Christophe Dumez
796aea19e6 - Webui: refresh download list every 2 seconds to save cpu 2008-10-28 21:37:19 +00:00
Christophe Dumez
dd35f1723b - Updated mootools to v1.2.1 2008-10-28 21:20:08 +00:00
Christophe Dumez
0177e1fee4 - Attempt to fix icon flickering in webui 2008-10-28 21:17:17 +00:00
Christophe Dumez
949eb2b5f5 - WebUI: Uploads should always use seeding icon (not connecting for example) 2008-10-27 20:15:17 +00:00
Christophe Dumez
2d59fe37bf fixed translations 2008-10-17 05:57:03 +00:00
Christophe Dumez
b6f81c199e - fixed italian translation 2008-10-17 05:48:18 +00:00
Christophe Dumez
c2964dc340 - Updated AUTHORS file (from Cristian Greco@Debian) 2008-10-13 07:04:20 +00:00
Christophe Dumez
8aebb93424 - Updated bulgarian and greek translations 2008-10-07 18:32:27 +00:00
Christophe Dumez
96c38f7be4 - Updated Russian translation
- Progress column is now correctly sorted on startup (closes #133925 again)
2008-10-06 18:34:47 +00:00
Christophe Dumez
cf2abe45de - AddinPause feature no longer applies to resumed torrents on startup
(closes #278827)
2008-10-06 12:21:34 +00:00
Christophe Dumez
88ac8adb30 - Bump to rc4
- Disabled debug output
- Updated Chinese traditional translation
2008-10-05 11:34:52 +00:00
Christophe Dumez
b331478179 - Fix "go back to download list dialog" when seeding torrent has filtered files (closes #278508) 2008-10-05 11:10:57 +00:00
Christophe Dumez
bfaa82ccba - Not deleting files on hard drive when user is answering no the the 'move to download list' dialog 2008-10-05 11:05:27 +00:00
Christophe Dumez
77f407724d - German was not updated yet 2008-10-05 09:29:27 +00:00
Christophe Dumez
2f5c2e6404 - Updated Korean, Swedish, Romanian 2008-10-05 09:28:43 +00:00
Christophe Dumez
fbb2cdd1a9 - Updated dutch translation 2008-10-04 21:16:34 +00:00
Christophe Dumez
63a4e06556 - Attempt to fix single instance code on Qt 4.4 2008-10-04 19:36:27 +00:00
Christophe Dumez
3d934b4a9c - bump to rc3 2008-10-04 15:23:31 +00:00
Christophe Dumez
697c275d83 - Fixed torrent queueing system (finally) 2008-10-04 15:21:52 +00:00
Christophe Dumez
25b9601613 - Should fix save path problems 2008-10-04 14:14:07 +00:00
Christophe Dumez
276dfd9df6 BUGFIX: Torrents are no longer starting from scratch when changing default save path (when torrent addition dialog is disabled) 2008-10-04 14:01:55 +00:00
Christophe Dumez
19f05f0a97 - Updated italian translation 2008-10-03 18:37:11 +00:00
Christophe Dumez
293aaefefe - updated hungarian translation 2008-10-02 14:15:40 +00:00
Christophe Dumez
57cdf4ebd1 - Updated german translation 2008-10-01 20:32:04 +00:00
Christophe Dumez
c4a0c8f100 - Should fix bug #276196 2008-10-01 19:17:07 +00:00
Christophe Dumez
306991e776 - More debug 2008-10-01 19:05:17 +00:00
Christophe Dumez
de2384e4a7 - Added some debug 2008-10-01 19:00:59 +00:00
Christophe Dumez
236dbcfb4a - attempt to fix #276196 2008-10-01 07:02:49 +00:00
Christophe Dumez
a1b133d883 - Fixed progress for unchecked paused torrents 2008-09-30 18:37:05 +00:00
Christophe Dumez
4f8825e371 - Fixed priority column sorting (closes #276190) 2008-09-30 06:14:37 +00:00
Christophe Dumez
1aa0936c91 - Updated slovak translation
- french translation fix
2008-09-30 06:09:50 +00:00
Christophe Dumez
d5e22c523e - Fixed typographic error 2008-09-29 20:28:55 +00:00
Christophe Dumez
6618e61a42 - Added Expand/Collapse all buttons to properties dialog 2008-09-29 18:42:45 +00:00
Christophe Dumez
26283ec228 - Updated swedish translation 2008-09-28 18:53:33 +00:00
Christophe Dumez
ed12f5c77e - bump to rc2 2008-09-28 18:02:31 +00:00
Christophe Dumez
8e074a571a - Fixed queueing priorities loading on startup 2008-09-28 17:58:12 +00:00
Christophe Dumez
e2c7c973fd - Improved multiple selection style by blocking browser event 2008-09-28 16:39:39 +00:00
Christophe Dumez
eec04761ef - Block browser event for CTRL+A so that it does not select text (unwanted) : Web Ui 2008-09-28 16:25:51 +00:00
Christophe Dumez
f73256e0ea - Fixed shift selection from bottom to top (Web UI)
- Fixed bug where current selection was not cleared correctly (Web Ui)
- Allow to select all torrents using CRTL+A (Web Ui)
2008-09-28 16:23:08 +00:00
Christophe Dumez
fec1de6383 - Updated finish translation 2008-09-28 16:00:51 +00:00
Christophe Dumez
db35a7efb8 - Updated chinese translations 2008-09-28 15:43:14 +00:00
Christophe Dumez
36eae88a5a - bump to rc1 2008-09-28 11:58:09 +00:00
Christophe Dumez
c01fd75c92 - Updated french translation
- Updated copyright
2008-09-28 11:57:09 +00:00
Christophe Dumez
103f2d0720 - Updated translation files 2008-09-28 11:42:32 +00:00
Christophe Dumez
037c46b587 - bump to beta8 2008-09-28 11:33:21 +00:00
Christophe Dumez
0879f2c0ca - Totally rewritten Web UI list refresh system (fixed memory leak) 2008-09-28 11:30:24 +00:00
Christophe Dumez
a65cd5c39c - some more Web Ui fixes 2008-09-28 10:07:00 +00:00
Christophe Dumez
d219e7afeb - Added some licensing 2008-09-27 21:01:24 +00:00
Christophe Dumez
892bb4c432 - Improved tab look 2008-09-27 20:56:41 +00:00
Christophe Dumez
45b9c6335c - removed useless debug 2008-09-27 20:32:59 +00:00
Christophe Dumez
78e643039c - Fixed torrent exchange from one list to another in Web Ui 2008-09-27 20:31:50 +00:00
Christophe Dumez
04e993c674 - Fixed pause/resume/delete actions on seeding list (Web UI) 2008-09-27 20:10:10 +00:00
Christophe Dumez
c3132fc1b0 - Updated changelog 2008-09-27 19:56:57 +00:00
Christophe Dumez
b1c73cb401 - Split download and upload lists in Web UI 2008-09-27 19:55:56 +00:00
Christophe Dumez
ac6eb8c6bc - fixed pause/resume (broken by multiple selection commit) 2008-09-27 19:28:09 +00:00
Christophe Dumez
8a64412cb5 - Allow the user to use SHIFT key to extend selection in Web UI transfer list 2008-09-27 10:18:27 +00:00
Christophe Dumez
56885cc914 - Allow the user to use CTRL key to select multiple item in Web UI transfer list 2008-09-27 10:08:07 +00:00
Christophe Dumez
cdd1f9b86c - Fixed assert HIT in eventmanager due to queueing system 2008-09-27 09:58:28 +00:00
Christophe Dumez
139360cf76 - Can have different proxy settings for bittorrent and search engine (closes #274791) 2008-09-27 09:12:41 +00:00
Christophe Dumez
2931d51add - Fixed RSS list saving (closes #272651) 2008-09-21 08:35:38 +00:00
Christophe Dumez
aa0bec41b4 - bug fix for preferences saving (introduced recently) 2008-09-21 08:17:29 +00:00
Christophe Dumez
b32b42b53e - Added Collapse/Expand all buttons to torrent addition dialog (closes #272654) 2008-09-21 08:13:23 +00:00
Christophe Dumez
06c4c717bd - bump to beta7 2008-09-17 19:17:55 +00:00
Christophe Dumez
a3ed44baec - Fixed bad check for finished torrents (introduced in beta6) 2008-09-17 19:15:21 +00:00
Christophe Dumez
0cbb4a7074 - Updated polish translation 2008-09-15 17:53:17 +00:00
Ishan Arora
af2e487ef5 Added few debug statements to EventManager timer loop 2008-09-15 05:27:56 +00:00
Christophe Dumez
28fdfdfef1 - bump to beta6 2008-09-14 10:24:52 +00:00
Christophe Dumez
c95cca6436 - Updated changelogs 2008-09-14 10:23:59 +00:00
Christophe Dumez
86024c6c74 - merge from stable branches (WebUI fixes) 2008-09-14 10:14:54 +00:00
Christophe Dumez
75290cf715 - Cleaning memory for Web UI to avoid problems when running for a long time 2008-09-13 20:33:07 +00:00
Christophe Dumez
321b76a72a - fixed sorting in finished list 2008-09-13 19:57:54 +00:00
Christophe Dumez
95ecaec11e - Sync with stable branch (lot of bug fixing) 2008-09-13 18:53:58 +00:00
Christophe Dumez
0e7c16901c fixed a bug in last commit 2008-09-13 13:41:11 +00:00
Christophe Dumez
43dcbf776b Use QPointer when interesting 2008-09-13 07:33:41 +00:00
Christophe Dumez
e21c28e9d2 Fixed memory leak in HTTP server 2008-09-12 19:58:57 +00:00
Christophe Dumez
918c1507d3 - Web UI optimization 2008-09-12 19:56:32 +00:00
Christophe Dumez
a189e4403d - Fixed a string 2008-09-07 12:18:52 +00:00
Christophe Dumez
563291a2e8 - Updated language files 2008-09-07 12:12:16 +00:00
Christophe Dumez
9156c9ac8f - Logs are now in a separate dialog 2008-09-07 12:09:41 +00:00
Christophe Dumez
f0049f1dae - Removed logging panel for now. It will be replaced by a seperate dialog in order to simplify the default UI. 2008-09-07 11:31:29 +00:00
Christophe Dumez
a622152747 - Make use of h.is_seed() instead of h.progress() == 1. 2008-09-03 18:19:17 +00:00
Christophe Dumez
8440e9982f - Display top toolBar as a default 2008-09-03 17:52:40 +00:00
Christophe Dumez
602d73fa82 fix typo in german translation 2008-09-02 19:03:31 +00:00
Christophe Dumez
c32ebb8d9f - Another fix for boost v1.36 2008-08-31 12:35:25 +00:00
Christophe Dumez
deeead4008 - Compilation fix for boost v1.36
- Fixed 'start seeding after torrent creation' feature
2008-08-31 12:21:41 +00:00
Christophe Dumez
937a491409 Updated copyright info 2008-08-27 00:59:58 +00:00
Christophe Dumez
79d5ae18a6 - beta5 release 2008-08-26 07:22:03 +00:00
Christophe Dumez
5cce0c53bf - Fixed a comment
- Added chinese traditional translation to stable branch
- bump to v1.1.3 in stable branch (updated splash screen)
- Updated changelogs
2008-08-26 07:14:38 +00:00
Christophe Dumez
681b8c14ad - Fixed ratio saving for seeding torrents 2008-08-26 06:39:57 +00:00
Christophe Dumez
443567486e - Updated traditional chinese translator's mail 2008-08-25 11:24:02 +00:00
Christophe Dumez
c10ebc3086 - Added traditional Chinese locale 2008-08-25 10:54:14 +00:00
Christophe Dumez
42a2acefd3 - Fixed possible multiple rss tabs bug 2008-08-20 12:15:50 +00:00
Christophe Dumez
c781545609 - max compilation fix 2008-08-19 13:46:13 +00:00
Christophe Dumez
ba06affec7 - Fixed priority column sorting 2008-08-19 12:17:05 +00:00
Christophe Dumez
6140d69fcb - bump to beta4 2008-08-19 00:29:30 +00:00
Christophe Dumez
71a81fd1b7 - Queueing system fixes 2008-08-19 00:28:44 +00:00
Christophe Dumez
4e05b62bbe - Priority column fixes 2008-08-19 00:10:56 +00:00
Christophe Dumez
9d366c8c7d - Updated czech translation 2008-08-18 23:46:50 +00:00
Christophe Dumez
940744b0bf - Added czech flag 2008-08-18 10:52:51 +00:00
Christophe Dumez
6c2518a704 - forgot to commit those files 2008-08-18 10:47:43 +00:00
Christophe Dumez
ef51fabf63 - Added czech translation 2008-08-18 10:38:40 +00:00
Christophe Dumez
1aedd97d4d - Progress calculation patch 2008-08-17 03:47:52 +00:00
Christophe Dumez
ff26ea94f5 - Queued torrents are now identified in Web UI
- Improved transfer list update for queued torrents
- Allow to show/hide top toolbar
- top toolbar is now hidden as a default
- Connection status is now displayed in status bar (bottom)
- Removed "Disconnected" connection status (bad detection)
- Added increase/decrease priority actions to Edit menu
- Added keyboard shortcuts for increase/decrease priority actions
2008-08-08 13:17:26 +00:00
Christophe Dumez
c7a289d183 - Updated french translation 2008-08-02 19:58:19 +00:00
Christophe Dumez
2a70c8f4d8 - Bump to beta2 2008-08-02 19:51:24 +00:00
Christophe Dumez
e27b08d970 - Update queue when pausing a torrent 2008-08-02 19:49:37 +00:00
Christophe Dumez
48ec57604f - A queueing system ASSERT hit fix 2008-08-02 19:46:02 +00:00
Christophe Dumez
db1bbea26a - Updated Russian translation 2008-08-02 18:20:14 +00:00
Christophe Dumez
7bbb2f542b - Slightly improved minimize to systray code (but still experiencing the virtual desktop switching bug) 2008-08-01 20:03:16 +00:00
Christophe Dumez
5563e24781 - Updated resource files 2008-08-01 17:15:03 +00:00
Christophe Dumez
f131f6210f - Updated Changelog 2008-08-01 15:17:22 +00:00
149 changed files with 36293 additions and 20642 deletions

18
AUTHORS
View File

@@ -6,6 +6,11 @@ Contributors:
* Ishan Arora <ishan@qbittorrent.org>
* Grigis Gaëtan <cipher16@gmail.com>
Code from other projects:
* files src/ico.cpp src/ico.h
copyright: Malte Starostik <malte@kde.org>
license: LGPL
Images Authors:
* files: src/Icons/*.png
copyright: Gnome Icon Theme
@@ -17,13 +22,14 @@ Images Authors:
license: Creative Commons Public Domain Dedication
url: http://www.openclipart.org
* files: src/Icons/skins/*.png
* files: src/Icons/skin/*.png
files: src/menuicons/YYxYY/*.png
copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
license: GPLv2
* files: src/menuicons/YYxYY/*.png
copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
license: GPLv2
* file: src/Icons/skin/tabs.gif
copyright: Greg Houston <gregory.houston@gmail.com>
license: MIT
* file: src/search_engine/engines/btjunkie.png
copyright: Downloaded from btjunkie.org
@@ -46,7 +52,9 @@ Translations authors:
- Brazilian: Nick Marinho (nickmarinho@gmail.com)
- Bulgarian: Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)
- Catalan: Gekko Dam Beer (gekko04@users.sourceforge.net)
- Chinese (Simplified): Guo Yue (guoyue0418@hotmail.com)
- Chinese (Simplified): Guo Yue (yue.guo0418@gmail.com)
- Chinese (Traditional): Yi-Shun Wang (dnextstep@gmail.com)
- Czech: Jirka Vilim (web@tets.cz)
- Danish: Mathias Nielsen (comoneo@gmail.com)
- Dutch: Joost Schipper (heavyjoost@users.sourceforge.net)
- English: Christophe Dumez (chris@qbittorrent.org)

View File

@@ -1,11 +1,78 @@
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.2.0
* Fri Jan 9 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.0
- FEATURE: Based on libtorrent-rasterbar v0.14.2
- FEATURE: Improved ratio calculation system
- FEATURE: Torrent creation code cleanup
- FEATURE: Allow to set maximum number of active seeds (queueing)
- FEATURE: Now seeds priorities are handled automatically by libtorrent-rasterbar (queueing)
- FEATURE: Code cleanup and optimization (save memory and cpu)
- FEATURE: ETA calculation now relies on average speed over all sessions
- FEATURE: Allow to force rechecking torrents
- FEATURE: Added support for 2 new extensions (uTorrent metadata and smart ban plugin)
- FEATURE: Allow to change the save path of torrents after addition
- FEATURE: Got rid of libmagick++ dependency
- FEATURE: Updated Web interface to MochaUI v0.9.5
- FEATURE: Added notification in WebUI when qBittorrent is not reachable
- FEATURE: Rewrote folder scanning code (Now uses a filesystem watcher)
- FEATURE: Added torrent deletion from hard drive function in Web UI
- FEATURE: Added queueing priority actions in Web UI
- FEATURE: Display progress using progress bars in Web UI
- BUGFIX: Made usage of fastresume data more reliable
- BUGFIX: qBittorrent shutdown is now faster
- BUGFIX: Fixed several memory leaks
- BUGFIX: WebUI is now working with IE7
- BUGFIX: Fixed spacing problem in toolbar when toggling its visibility
- BUGFIX: Fixed some compilation and Qt4 warnings
- BUGFIX: Do not use an addition dialog for torrents from folder scanning
- BUGFIX: Catch SIGTERM to exit cleanly (e.g. computer shutdown)
- BUGFIX: Improved proxy support code
- BUGFIX: Fixed systray icon tooltip on Windows
- BUGFIX: Proxy settings are now saved even if disabled
* Sun Nov 9 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.2.1
- BUGFIX: Fixed possible crash when deleting a torrent permanently
- BUGFIX: Queued_for_checking torrents were not displayed as checking in seeding list
- BUGFIX: Speed up startup time when having a lot of torrents
* Wed Oct 29th 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.2.0
- FEATURE: Torrent queueing system (with priorities)
- FEATURE: DHT is always ON (no longer used as fallback)
- FEATURE: The number of DHT nodes is displayed
- FEATURE: RSS can now be disabled from program preferences
- FEATURE: Added collapse/expand all buttons in addition and properties dialogs
- FEATURE: Can have different proxies for Bittorrent and search engine
- FEATURE: Allow multiple item selection in Web UI transfer list
- FEATURE: Moved uploads to a separate list in Web UI
- BUGFIX: Totally rewritten Web UI list refresh system (fixed memory leak)
- BUGFIX: Disable ETA calculation when ETA column is hidden
- COSMETIC: Transfer speed, ratio and DHT nodes are displayed in status bar
- BUGFIX: Removed "disconnected" connection state, detection was far from perfect
- BUGFIX: Torrents are no longer starting from scratch when changing default save path (when torrent addition dialog is disabled)
- BUGFIX: Single instance code is now more reliable on Qt >= 4.4
- COSMETIC: Transfer speed, ratio, connection status and DHT nodes are displayed in status bar
- COSMETIC: RSS Tab is now hidden as a default
- COSMETIC: Allow to hide or display top toolbar
- COSMETIC: Log is now in a separate dialog
* Sun Sept 14 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.4
- FEATURE: DHT is no longer used as fallback only
- FEATURE: Ported WebUI to Mootools v1.2
- BUGFIX: Fixed 'start seeding after torrent creation' feature
- BUGFIX: Fixed compilation with boost v1.36
- BUGFIX: Some code optimization
- BUGFIX: Fixed memory leak in Web UI
- BUGFIX: Fixed problems with column sorting
- BUGFIX: Improved code for pausing torrents on startup
- BUGFIX: Torrent addition dialog is now disabled for downloads from WebUI
- BUGFIX: Give focus to input field in WebUI download dialog
* Tue Aug 26 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.3
- BUGFIX: Fixed ratio saving for seeding torrents
- I18N: Added czech and traditional chinese translations
* Sun Aug 17 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.2
- BUGFIX: Fixed progress calculation
- BUGFIX: Fixed finished torrent detection
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.1
- BUGFIX: Fixed bad resource file for icons
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
- FEATURE: Web interface to control qbittorrent (Ishan Arora)

View File

@@ -17,7 +17,7 @@ Dependencies:
- Qt >= 4.3.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
Qt >= 4.4.0 is advised
- libtorrent-rasterbar by Arvid Norberg (>= v0.13.1 REQUIRED)
- libtorrent-rasterbar by Arvid Norberg (>= v0.14.0 REQUIRED)
-> http://www.qbittorrent.org/download.php (advised)
-> http://www.libtorrent.net
Be careful: another library (the one used by rTorrent) uses a similar name.

56
TODO
View File

@@ -1,46 +1,18 @@
// Easy
- Translations into as many languages as possible
- Use Launchpad/Rosetta for translations once it supports TS files
See https://blueprints.launchpad.net/qbittorrent/
// Intermediate
- Port on MacOS, Windows (and create an installer for Windows) - Slow progress
- Add some transparency (menus,...), improve look / usabilty
- Skins support? (contact Mateusz)
// Harder
- Torrent scheduler ala µtorrent/Bitcomet
// Waiting for libtorrent
- Allow to prioritize torrents (may code this in qBittorrent?)
// Unsure
- Display the peers we are connected to for each torrent with infos (like flag, dl/up speeds, ...)
- Azureus spoofing to prevent ban from trackers?
- Option to shutdown computer when downloads are finished
- NAT checker/Tester
- Display hard drive space left?
- Make use of dbus on Linux for the single instance instead of socket communication?
(http://techbase.kde.org/Development/Tutorials/D-Bus/Accessing_Interfaces)
- When favicon can't be downloaded, try to parse the webpage for:
<link rel="icon" href="http://example.com/favicon.ico" type="image/vnd.microsoft.icon">
* Be careful, the link can be relative
- Improve search plugin install (choose in a list taken from plugins.qbittorrent.org)
- support zipped torrents? (useful?)
- Allow to limit the number of downloading torrents simultaneously (other are paused until a download finishes)
// in v1.2.0
- Allow user to organize the downloads into categories/folders?
// in v1.1.0
- Stop calculating ETAs when ETA column is hidden
-> See https://blueprints.launchpad.net/qbittorrent
Translations updated:
// translations done in v1.3.0
- Romanian
- Russian
- Hungarian
- German
- Chinese (traditional)
- Chinese (simplified)
- Italian
- Swedish
- Turkish
- French
- Chinese
- Polish
- Slovak
- Czech
- Korean
- Portuguese
- Brazilian
- Slovak
- Swedish
- Romanian

113
configure vendored
View File

@@ -26,9 +26,6 @@ Dependency options:
--with-libboost-inc=[path] Path to libboost include files
--with-libcurl-inc=[path] Path to libcurl include files
--with-libcurl-lib=[path] Path to libcurl library files
--disable-libmagick Disable use of libmagick
--with-libmagick-inc=[path] Path to libmagick++ include files
--with-libmagick-lib=[path] Path to libmagick++ library files
--disable-libzzip Disable use of libzzip
--with-libzzip-inc=[path] Path to libzzip++ include files
--with-libzzip-lib=[path] Path to libzzip++ library files
@@ -178,21 +175,6 @@ while [ $# -gt 0 ]; do
shift
;;
--disable-libmagick)
QC_DISABLE_libmagick="Y"
shift
;;
--with-libmagick-inc=*)
QC_WITH_LIBMAGICK_INC=$optarg
shift
;;
--with-libmagick-lib=*)
QC_WITH_LIBMAGICK_LIB=$optarg
shift
;;
--disable-libzzip)
QC_DISABLE_libzzip="Y"
shift
@@ -235,9 +217,6 @@ echo QC_WITH_LIBTORRENT_STATIC_LIB=$QC_WITH_LIBTORRENT_STATIC_LIB
echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC
echo QC_WITH_LIBCURL_INC=$QC_WITH_LIBCURL_INC
echo QC_WITH_LIBCURL_LIB=$QC_WITH_LIBCURL_LIB
echo QC_DISABLE_libmagick=$QC_DISABLE_libmagick
echo QC_WITH_LIBMAGICK_INC=$QC_WITH_LIBMAGICK_INC
echo QC_WITH_LIBMAGICK_LIB=$QC_WITH_LIBMAGICK_LIB
echo QC_DISABLE_libzzip=$QC_DISABLE_libzzip
echo QC_WITH_LIBZZIP_INC=$QC_WITH_LIBZZIP_INC
echo QC_WITH_LIBZZIP_LIB=$QC_WITH_LIBZZIP_LIB
@@ -376,13 +355,13 @@ class qc_libtorrent_rasterbar : public ConfObj
{
public:
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
QString name() const { return "libtorrent-rasterbar >= 0.13"; }
QString name() const { return "libtorrent-rasterbar >= 0.14"; }
QString shortname() const { return "libtorrent-rasterbar"; }
bool exec(){
QString s;
s = conf->getenv("QC_WITH_LIBTORRENT_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "libtorrent/lsd.hpp")) {
if(!conf->checkHeader(s, "libtorrent/magnet_uri.hpp")) {
return false;
}
}else{
@@ -391,7 +370,7 @@ public:
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "libtorrent/lsd.hpp")){
if(conf->checkHeader(s, "libtorrent/magnet_uri.hpp")){
found = true;
break;
}
@@ -553,86 +532,6 @@ public:
return true;
}
};
#line 1 "libmagick.qcm"
/*
-----BEGIN QCMOD-----
name: libmagick
arg: with-libmagick-inc=[path], Path to libmagick++ include files
arg: with-libmagick-lib=[path], Path to libmagick++ library files
-----END QCMOD-----
*/
#include <QProcess>
class qc_libmagick : public ConfObj
{
public:
qc_libmagick(Conf *c) : ConfObj(c) {}
QString name() const { return "ImageMagick library (libmagick++)"; }
QString shortname() const { return "libmagick++"; }
QString checkString() const {
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
return "";
return ConfObj::checkString();
}
bool exec(){
if(!conf->getenv("QC_DISABLE_libmagick").isEmpty())
return false;
QString s;
s = conf->getenv("QC_WITH_LIBMAGICK_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "Magick++.h")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "Magick++.h")){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBMAGICK_LIB");
if(!s.isEmpty()) {
if(!conf->checkLibrary(s, "Magick++")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/lib/";
sl << "/usr/lib64/";
sl << "/usr/local/lib/";
sl << "/usr/local/lib64/";
bool found = false;
foreach(s, sl){
if(conf->checkLibrary(s, "Magick++")) {
found = true;
break;
}
}
if(!found)
return false;
}
conf->addLib(QString("-L") + s);
QProcess magickConfig;
QStringList params;
params << "--libs";
magickConfig.start("Magick++-config", params, QIODevice::ReadOnly);
magickConfig.waitForStarted();
magickConfig.waitForFinished();
QByteArray result = magickConfig.readAll();
result = result.replace("\n", "");
conf->addLib(result.data());
conf->addDefine("HAVE_MAGICK");
return true;
}
};
#line 1 "libzzip.qcm"
/*
-----BEGIN QCMOD-----
@@ -720,9 +619,6 @@ cat >$1/modules_new.cpp <<EOT
o = new qc_libcurl(conf);
o->required = true;
o->disabled = false;
o = new qc_libmagick(conf);
o->required = false;
o->disabled = false;
o = new qc_libzzip(conf);
o->required = false;
o->disabled = false;
@@ -1677,9 +1573,6 @@ export QC_WITH_LIBTORRENT_STATIC_LIB
export QC_WITH_LIBBOOST_INC
export QC_WITH_LIBCURL_INC
export QC_WITH_LIBCURL_LIB
export QC_DISABLE_libmagick
export QC_WITH_LIBMAGICK_INC
export QC_WITH_LIBMAGICK_LIB
export QC_DISABLE_libzzip
export QC_WITH_LIBZZIP_INC
export QC_WITH_LIBZZIP_LIB

View File

@@ -15,6 +15,5 @@
<dep type='libcurl'>
<required/>
</dep>
<dep type='libmagick'/>
<dep type='libzzip'/>
</qconf>

View File

@@ -10,13 +10,13 @@ class qc_libtorrent_rasterbar : public ConfObj
{
public:
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
QString name() const { return "libtorrent-rasterbar >= 0.13"; }
QString name() const { return "libtorrent-rasterbar >= 0.14"; }
QString shortname() const { return "libtorrent-rasterbar"; }
bool exec(){
QString s;
s = conf->getenv("QC_WITH_LIBTORRENT_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "libtorrent/lsd.hpp")) {
if(!conf->checkHeader(s, "libtorrent/magnet_uri.hpp")) {
return false;
}
}else{
@@ -25,7 +25,7 @@ public:
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "libtorrent/lsd.hpp")){
if(conf->checkHeader(s, "libtorrent/magnet_uri.hpp")){
found = true;
break;
}

View File

@@ -37,8 +37,7 @@
#define F_UPSPEED 2
#define F_LEECH 3
#define F_RATIO 4
#define F_PRIORITY 5
#define F_HASH 6
#define F_HASH 5
class FinishedListDelegate: public QItemDelegate {
Q_OBJECT

File diff suppressed because it is too large Load Diff

View File

@@ -60,11 +60,11 @@ class FinishedTorrents : public QWidget, public Ui::seeding {
void displayFinishedHoSMenu(const QPoint&);
void setRowColor(int row, QString color);
void saveColWidthFinishedList() const;
void sortFinishedList(int index);
void toggleFinishedListSortOrder(int index);
void sortFinishedList(int index=-1, Qt::SortOrder sortOrder=Qt::AscendingOrder);
void sortFinishedListFloat(int index, Qt::SortOrder sortOrder);
void sortFinishedListString(int index, Qt::SortOrder sortOrder);
void updateFileSize(QString hash);
void torrentAdded(QString path, QTorrentHandle& h, bool fastResume);
void on_actionSet_upload_limit_triggered();
void notifyTorrentDoubleClicked(const QModelIndex& index);
void hideOrShowColumnName();
@@ -72,17 +72,16 @@ class FinishedTorrents : public QWidget, public Ui::seeding {
void hideOrShowColumnUpSpeed();
void hideOrShowColumnLeechers();
void hideOrShowColumnRatio();
void hideOrShowColumnPriority();
void forceRecheck();
public slots:
void addTorrent(QString hash);
void updateFinishedList();
void updateTorrent(QTorrentHandle h);
void pauseTorrent(QString hash);
void resumeTorrent(QString hash);
void propertiesSelection();
void deleteTorrent(QString hash);
void showPropertiesFromHash(QString hash);
void hidePriorityColumn(bool hide);
void loadLastSortedColumn();
signals:
void torrentMovedFromFinishedList(QString);

File diff suppressed because it is too large Load Diff

View File

@@ -24,7 +24,7 @@
#include <QProcess>
#include <QSystemTrayIcon>
#include <QPointer>
#include "ui_MainWindow.h"
#include "qtorrenthandle.h"
@@ -64,9 +64,9 @@ class GUI : public QMainWindow, private Ui::MainWindow{
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers;
// GUI related
QTabWidget *tabs;
options_imp *options;
QPointer<options_imp> options;
QSystemTrayIcon *myTrayIcon;
QTimer *systrayCreator;
QPointer<QTimer> systrayCreator;
QMenu *myTrayIconMenu;
DownloadingTorrents *downloadingTorrentTab;
FinishedTorrents *finishedTorrentTab;
@@ -83,6 +83,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
QFrame *statusSep1;
QFrame *statusSep2;
QFrame *statusSep3;
QFrame *statusSep4;
// Keyboard shortcuts
QShortcut *switchSearchShortcut;
QShortcut *switchSearchShortcut2;
@@ -90,12 +91,13 @@ class GUI : public QMainWindow, private Ui::MainWindow{
QShortcut *switchUpShortcut;
QShortcut *switchRSSShortcut;
QAction *prioSeparator;
QAction *prioSeparator2;
// Search
SearchEngine *searchEngine;
// RSS
RSSImp *rssWidget;
// Web UI
HttpServer *httpServer;
QPointer<HttpServer> httpServer;
// Misc
#ifdef QT_4_4
QLocalServer *localServer;
@@ -114,6 +116,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
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 togglePausedState(QString hash);
@@ -125,8 +128,6 @@ class GUI : public QMainWindow, private Ui::MainWindow{
void readSettings();
void on_actionExit_triggered();
void createTrayIcon();
void updateUnfinishedTorrentNumberCalc();
void updateFinishedTorrentNumberCalc();
void updateUnfinishedTorrentNumber(unsigned int nb);
void updateFinishedTorrentNumber(unsigned int nb);
void fullDiskError(QTorrentHandle& h) const;
@@ -155,21 +156,21 @@ class GUI : public QMainWindow, private Ui::MainWindow{
void processParams(const QStringList& params);
void addTorrent(QString path);
void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker);
void processScannedFiles(const QStringList& params);
void processDownloadedFiles(QString path, QString url);
void downloadFromURLList(const QStringList& urls);
void deleteTorrent(QString hash);
void deleteRatioTorrent(QString fileName);
void finishedTorrent(QTorrentHandle& h) const;
void torrentChecked(QString hash) const;
void updateLists();
void addedTorrent(QTorrentHandle& h) const;
void checkedTorrent(QTorrentHandle& h) const;
void pausedTorrent(QTorrentHandle& h) const;
void resumedTorrent(QTorrentHandle& h) const;
void updateLists(bool force=false);
bool initWebUi(QString username, QString password, int port);
void pauseTorrent(QString hash);
void on_actionIncreasePriority_triggered();
void on_actionDecreasePriority_triggered();
// Options slots
void on_actionOptions_triggered();
void OptionsSaved(QString info, bool deleteOptions);
void OptionsSaved(bool deleteOptions);
// HTTP slots
void on_actionDownload_from_URL_triggered();
@@ -183,7 +184,8 @@ class GUI : public QMainWindow, private Ui::MainWindow{
protected:
void closeEvent(QCloseEvent *);
void hideEvent(QHideEvent *);
void showEvent(QShowEvent *);
bool event(QEvent * event);
void displayRSSTab(bool enable);
public:

BIN
src/Icons/flags/czech.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

BIN
src/Icons/flags/taiwan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/Icons/skin/tabs.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -41,6 +41,8 @@
<addaction name="separator" />
<addaction name="actionDelete" />
<addaction name="actionDelete_Permanently" />
<addaction name="actionDecreasePriority" />
<addaction name="actionIncreasePriority" />
</widget>
<widget class="QMenu" name="menu_Help" >
<property name="title" >
@@ -56,6 +58,7 @@
<string>Options</string>
</property>
<addaction name="actionOptions" />
<addaction name="actionShow_console" />
</widget>
<widget class="QMenu" name="menu_File" >
<property name="title" >
@@ -253,6 +256,14 @@
<bool>false</bool>
</property>
</action>
<action name="actionShow_console" >
<property name="icon" >
<iconset resource="icons.qrc" >:/Icons/log.png</iconset>
</property>
<property name="text" >
<string>Console</string>
</property>
</action>
</widget>
<resources>
<include location="icons.qrc" />

View File

@@ -57,6 +57,8 @@ class about : public QDialog, private Ui::AboutDlg{
- <u>Bulgarian:</u> Tsvetan & Boiko Bankov (emerge_life@users.sourceforge.net)<br>\
- <u>Catalan:</u> Gekko Dam Beer (gekko04@users.sourceforge.net)<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>\
- <u>Danish:</u> Mathias Nielsen (comoneo@gmail.com)<br>\
- <u>Dutch:</u> Joost Schipper (heavyjoost@users.sourceforge.net) and Peter Koeleman (peter@peerweb.nl)<br>\
- <u>Finnish:</u> Niklas Laxström (nikerabbit@users.sourceforge.net)<br>\
@@ -74,7 +76,7 @@ class about : public QDialog, private Ui::AboutDlg{
- <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>Swedish:</u> Daniel Nylander (po@danielnylander.se)<br>\
- <u>Turkish:</u> Erdem Bingöl (erdem84@gmail.com)<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>"));
te_translation->append(tr("Please contact me if you would like to translate qBittorrent into your own language."));
te_translation->scrollToAnchor(QString::fromUtf8("top"));

View File

@@ -13,21 +13,6 @@
<string>Torrent addition dialog</string>
</property>
<layout class="QVBoxLayout" >
<property name="spacing" >
<number>6</number>
</property>
<property name="leftMargin" >
<number>9</number>
</property>
<property name="topMargin" >
<number>9</number>
</property>
<property name="rightMargin" >
<number>9</number>
</property>
<property name="bottomMargin" >
<number>9</number>
</property>
<item>
<widget class="QLabel" name="fileNameLbl" >
<property name="text" >
@@ -110,6 +95,50 @@
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" >
<item>
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" >
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="collapseAllButton" >
<property name="text" >
<string>Collapse all</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="expandAllButton" >
<property name="text" >
<string>Expand all</string>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" >
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="checkIncrementalDL" >
<property name="text" >

View File

@@ -172,27 +172,27 @@ class arborescence {
torrent_file *root;
public:
arborescence(torrent_info t) {
torrent_info::file_iterator fi = t.begin_files();
if(t.num_files() > 1) {
root = new torrent_file(0, misc::toQString(t.name()), true);
arborescence(boost::intrusive_ptr<torrent_info> t) {
torrent_info::file_iterator fi = t->begin_files();
if(t->num_files() > 1) {
root = new torrent_file(0, misc::toQString(t->name()), true);
} else {
// XXX: Will crash if there is no file in torrent
root = new torrent_file(0, misc::toQString(t.name()), false, fi->size, 0);
root = new torrent_file(0, misc::toQString(t->name()), false, fi->size, 0);
return;
}
int i = 0;
while(fi != t.end_files()) {
while(fi != t->end_files()) {
QString path = QDir::cleanPath(misc::toQString(fi->path.string()));
addFile(path, fi->size, i);
fi++;
++i;
}
qDebug("real size: %ld, tree size: %ld", (long)t.total_size(), (long)root->getSize());
Q_ASSERT(root->getSize() == t.total_size());
qDebug("real size: %ld, tree size: %ld", (long)t->total_size(), (long)root->getSize());
Q_ASSERT(root->getSize() == t->total_size());
}
arborescence(torrent_info t, std::vector<float> fp, int *prioritiesTab) {
arborescence(torrent_info const& t, std::vector<size_type> fp, int *prioritiesTab) {
torrent_info::file_iterator fi = t.begin_files();
if(t.num_files() > 1) {
qDebug("More than one file in the torrent, setting a folder as root");
@@ -200,13 +200,13 @@ class arborescence {
} else {
// XXX: Will crash if there is no file in torrent
qDebug("one file in the torrent, setting it as root with index 0");
root = new torrent_file(0, misc::toQString(t.name()), false, fi->size, 0, fp[0], prioritiesTab[0]);
root = new torrent_file(0, misc::toQString(t.name()), false, fi->size, 0, fp[0]/t.file_at(0).size, prioritiesTab[0]);
return;
}
int i = 0;
while(fi != t.end_files()) {
QString path = QDir::cleanPath(misc::toQString(fi->path.string()));
addFile(path, fi->size, i, fp[i], prioritiesTab[i]);
addFile(path, fi->size, i, fp[i]/t.file_at(i).size, prioritiesTab[i]);
fi++;
++i;
}

File diff suppressed because it is too large Load Diff

View File

@@ -22,10 +22,10 @@
#define __BITTORRENT_H__
#include <QHash>
#include <QList>
#include <QPair>
#include <QStringList>
#include <QDateTime>
#include <QApplication>
#include <QPalette>
#include <QPointer>
#include <libtorrent/session.hpp>
#include <libtorrent/ip_filter.hpp>
@@ -34,31 +34,26 @@
using namespace libtorrent;
class downloadThread;
class deleteThread;
class QTimer;
class QFileSystemWatcher;
class QMutex;
class FilterParserThread;
class bittorrent : public QObject{
class bittorrent : public QObject {
Q_OBJECT
private:
session *s;
QString scan_dir;
QTimer *timerScan;
QTimer *timerAlerts;
QTimer *fastResumeSaver;
QTimer *BigRatioTimer;
QPointer<QFileSystemWatcher> FSWatcher;
QMutex* FSMutex;
QPointer<QTimer> timerAlerts;
QPointer<QTimer> BigRatioTimer;
bool DHTEnabled;
downloadThread *downloader;
QPointer<downloadThread> downloader;
QString defaultSavePath;
QStringList torrentsToPauseAfterChecking;
QHash<QString, QDateTime> TorrentsStartTime;
QHash<QString, size_type> TorrentsStartData;
QHash<QString, QPair<size_type,size_type> > ratioData;
QHash<QString, QHash<QString, QString> > trackersErrors;
deleteThread *deleter;
QStringList finishedTorrents;
QStringList unfinishedTorrents;
QStringList consoleMessages;
QStringList peerBanMessages;
bool preAllocateAll;
bool addInPause;
int maxConnecsPerTorrent;
@@ -67,18 +62,10 @@ class bittorrent : public QObject{
bool UPnPEnabled;
bool NATPMPEnabled;
bool LSDEnabled;
FilterParserThread *filterParser;
QPointer<FilterParserThread> filterParser;
QString filterPath;
int folderScanInterval; // in seconds
bool queueingEnabled;
int maxActiveDownloads;
int maxActiveTorrents;
int currentActiveDownloads;
QStringList *downloadQueue;
QStringList *queuedDownloads;
QStringList *uploadQueue;
QStringList *queuedUploads;
bool calculateETA;
QStringList url_skippingDlg;
protected:
QString getSavePath(QString hash);
@@ -88,21 +75,16 @@ class bittorrent : public QObject{
bittorrent();
~bittorrent();
QTorrentHandle getTorrentHandle(QString hash) const;
bool isPaused(QString hash) const;
std::vector<torrent_handle> getTorrents() const;
bool isFilePreviewPossible(QString fileHash) const;
bool isDHTEnabled() const;
float getPayloadDownloadRate() const;
float getPayloadUploadRate() const;
session_status getSessionStatus() const;
int getListenPort() const;
QStringList getTorrentsToPauseAfterChecking() const;
qlonglong getETA(QString hash) const;
float getRealRatio(QString hash) const;
session* getSession() const;
QHash<QString, QString> getTrackersErrors(QString hash) const;
QStringList getFinishedTorrents() const;
QStringList getUnfinishedTorrents() const;
bool isFinished(QString hash) const;
bool has_filtered_files(QString hash) const;
unsigned int getFinishedPausedTorrentsNb() const;
unsigned int getUnfinishedPausedTorrentsNb() const;
@@ -111,43 +93,41 @@ class bittorrent : public QObject{
int getUpTorrentPriority(QString hash) const;
int getMaximumActiveDownloads() const;
int getMaximumActiveTorrents() const;
bool isDownloadQueued(QString hash) const;
bool isUploadQueued(QString hash) const;
int loadTorrentPriority(QString hash);
QStringList getConsoleMessages() const;
QStringList getPeerBanMessages() const;
qlonglong getETA(QString hash) const;
public slots:
void addTorrent(QString path, bool fromScanDir = false, QString from_url = QString(), bool resumed = false);
QTorrentHandle addTorrent(QString path, bool fromScanDir = false, QString from_url = QString(), bool resumed = false);
void loadSessionState();
void saveSessionState();
void downloadFromUrl(QString url);
void downloadFromURLList(const QStringList& url_list);
void deleteTorrent(QString hash, bool permanent = false);
bool pauseTorrent(QString hash);
bool resumeTorrent(QString hash);
/* Needed by Web UI */
void pauseAllTorrents();
void resumeAllTorrents();
void pauseTorrent(QString hash);
void resumeTorrent(QString hash);
/* End Web UI */
void saveDHTEntry();
void preAllocateAllFiles(bool b);
void saveFastResumeAndRatioData();
void saveFastResumeAndRatioData(QString hash);
void saveFastResumeData();
void enableDirectoryScanning(QString scan_dir);
void disableDirectoryScanning();
void enablePeerExchange();
void enableIPFilter(QString filter);
void disableIPFilter();
void setQueueingEnabled(bool enable);
void resumeUnfinishedTorrents();
void saveTorrentPriority(QString hash, int prio);
void saveTorrentSpeedLimits(QString hash);
void loadTorrentSpeedLimits(QString hash);
void saveDownloadUploadForTorrent(QString hash);
void loadDownloadUploadForTorrent(QString hash);
void handleDownloadFailure(QString url, QString reason);
void loadWebSeeds(QString fileHash);
void updateDownloadQueue();
void updateUploadQueue();
void increaseDlTorrentPriority(QString hash);
void decreaseDlTorrentPriority(QString hash);
void increaseUpTorrentPriority(QString hash);
void decreaseUpTorrentPriority(QString hash);
void saveTorrentPriority(QString hash, int prio);
void downloadUrlAndSkipDialog(QString);
// Session configuration - Setters
void setListeningPortsRange(std::pair<unsigned short, unsigned short> ports);
void setMaxConnections(int maxConnec);
@@ -166,20 +146,15 @@ class bittorrent : public QObject{
void loadFilesPriorities(QTorrentHandle& h);
void setDownloadLimit(QString hash, long val);
void setUploadLimit(QString hash, long val);
void setUnfinishedTorrent(QString hash);
void setFinishedTorrent(QString hash);
void enableUPnP(bool b);
void enableNATPMP(bool b);
void enableLSD(bool b);
bool enableDHT(bool b);
void reloadTorrent(const QTorrentHandle &h, bool full_alloc);
void setTimerScanInterval(int secs);
void setMaxActiveDownloads(int val);
void setMaxActiveTorrents(int val);
void setETACalculation(bool enable);
void addConsoleMessage(QString msg, QColor color=QApplication::palette().color(QPalette::WindowText));
void addPeerBanMessage(QString msg, bool from_ipfilter);
protected slots:
void scanDirectory();
void scanDirectory(QString);
void readAlerts();
void processDownloadedFile(QString, QString);
bool loadTrackerFile(QString hash);
@@ -187,31 +162,18 @@ class bittorrent : public QObject{
void deleteBigRatios();
signals:
void invalidTorrent(QString path);
void duplicateTorrent(QString path);
void addedTorrent(QString path, QTorrentHandle& h, bool fastResume);
void addedTorrent(QTorrentHandle& h);
void deletedTorrent(QString hash);
void pausedTorrent(QString hash);
void resumedTorrent(QString hash);
void pausedTorrent(QTorrentHandle& h);
void resumedTorrent(QTorrentHandle& h);
void finishedTorrent(QTorrentHandle& h);
void fullDiskError(QTorrentHandle& h);
void trackerError(QString hash, QString time, QString msg);
void portListeningFailure();
void trackerAuthenticationRequired(QTorrentHandle& h);
void scanDirFoundTorrents(const QStringList& pathList);
void newDownloadedTorrent(QString path, QString url);
void aboutToDownloadFromUrl(QString url);
void updateFileSize(QString hash);
void peerBlocked(QString);
void downloadFromUrlFailure(QString url, QString reason);
void fastResumeDataRejected(QString name);
void urlSeedProblem(QString url, QString msg);
void torrentFinishedChecking(QString hash);
void torrent_ratio_deleted(QString fileName);
void UPnPError(QString msg);
void UPnPSuccess(QString msg);
void updateFinishedTorrentNumber();
void updateUnfinishedTorrentNumber();
void torrentFinishedChecking(QTorrentHandle& h);
};
#endif

58
src/console.ui Normal file
View File

@@ -0,0 +1,58 @@
<ui version="4.0" >
<class>ConsoleDlg</class>
<widget class="QDialog" name="ConsoleDlg" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>512</width>
<height>497</height>
</rect>
</property>
<property name="windowTitle" >
<string>qBittorrent console</string>
</property>
<property name="windowIcon" >
<iconset resource="icons.qrc" >:/Icons/log.png</iconset>
</property>
<layout class="QVBoxLayout" >
<item>
<widget class="QTabWidget" name="tabConsole" >
<property name="currentIndex" >
<number>0</number>
</property>
<widget class="QWidget" name="tab" >
<attribute name="title" >
<string>General</string>
</attribute>
<attribute name="icon" >
<iconset resource="icons.qrc" >:/Icons/log.png</iconset>
</attribute>
<layout class="QVBoxLayout" >
<item>
<widget class="QTextBrowser" name="textConsole" />
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2" >
<attribute name="title" >
<string>Blocked IPs</string>
</attribute>
<attribute name="icon" >
<iconset resource="icons.qrc" >:/Icons/filter.png</iconset>
</attribute>
<layout class="QVBoxLayout" >
<item>
<widget class="QTextBrowser" name="textBannedPeers" />
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="icons.qrc" />
</resources>
<connections/>
</ui>

50
src/console_imp.h Normal file
View File

@@ -0,0 +1,50 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2006 Christophe Dumez
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Contact : chris@qbittorrent.org
*/
#ifndef CONSOLE_H
#define CONSOLE_H
#include "bittorrent.h"
#include "ui_console.h"
using namespace libtorrent;
class consoleDlg : public QDialog, private Ui_ConsoleDlg{
Q_OBJECT
private:
bittorrent *BTSession;
public:
consoleDlg(QWidget *parent, bittorrent* _BTSession) : QDialog(parent) {
setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
BTSession = _BTSession;
textConsole->setHtml(BTSession->getConsoleMessages().join("<br>"));
textBannedPeers->setHtml(BTSession->getPeerBanMessages().join("<br>"));
show();
}
~consoleDlg() {}
};
#endif

View File

@@ -26,6 +26,7 @@
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/bind.hpp>
#include <libtorrent/entry.hpp>
#include <libtorrent/bencode.hpp>
@@ -34,6 +35,7 @@
#include <libtorrent/storage.hpp>
#include <libtorrent/hasher.hpp>
#include <libtorrent/file_pool.hpp>
#include <libtorrent/create_torrent.hpp>
#include "createtorrent_imp.h"
#include "misc.h"
@@ -41,13 +43,23 @@
using namespace libtorrent;
using namespace boost::filesystem;
// do not include files and folders whose
// name starts with a .
bool file_filter(boost::filesystem::path const& filename)
{
if (filename.leaf()[0] == '.') return false;
std::cerr << filename << std::endl;
return true;
}
createtorrent::createtorrent(QWidget *parent): QDialog(parent){
setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
creatorThread = new torrentCreatorThread();
connect(creatorThread, SIGNAL(creationSuccess(QString)), this, SLOT(handleCreationSucess(QString)));
creatorThread = new torrentCreatorThread(this);
connect(creatorThread, SIGNAL(creationSuccess(QString, const char*)), this, SLOT(handleCreationSuccess(QString, const char*)));
connect(creatorThread, SIGNAL(creationFailure(QString)), this, SLOT(handleCreationFailure(QString)));
connect(creatorThread, SIGNAL(updateProgress(int)), this, SLOT(updateProgressBar(int)));
path::default_name_check(no_check);
show();
}
@@ -126,20 +138,6 @@ void createtorrent::on_addURLSeed_button_clicked(){
}
}
// Subfunction to add files to a torrent_info structure
// Written by Arvid Norberg (libtorrent Author)
void add_files(torrent_info& t, path const& p, path const& l){
qDebug("p: %s, l: %s, l.leaf(): %s", p.string().c_str(), l.string().c_str(), l.leaf().c_str());
path f(p / l);
if (is_directory(f)){
for (directory_iterator i(f), end; i != end; ++i)
add_files(t, p, l / i->leaf());
}else{
qDebug("Adding %s", l.string().c_str());
t.add_file(l, file_size(f));
}
}
QStringList createtorrent::allItems(QListWidget *list){
QStringList res;
unsigned int nbItems = list->count();
@@ -180,17 +178,25 @@ void createtorrent::handleCreationFailure(QString msg) {
hide();
}
void createtorrent::handleCreationSuccess(QString path, const char* branch_path, QString hash) {
if(checkStartSeeding->isChecked()) {
// Create save path file
QFile savepath_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".savepath"));
savepath_file.open(QIODevice::WriteOnly | QIODevice::Text);
savepath_file.write(branch_path);
savepath_file.close();
emit torrent_to_seed(path);
}
QMessageBox::information(0, tr("Torrent creation"), tr("Torrent was created successfully:")+" "+path);
hide();
void createtorrent::handleCreationSuccess(QString path, const char* branch_path) {
if(checkStartSeeding->isChecked()) {
// Create save path file
boost::intrusive_ptr<torrent_info> t;
try {
t = new torrent_info(path.toUtf8().data());
} catch(std::exception&) {
QMessageBox::critical(0, tr("Torrent creation"), tr("Created torrent file is invalid. It won't be added to download list."));
return;
}
QString hash = misc::toQString(t->info_hash());
QFile savepath_file(misc::qBittorrentPath()+QString::fromUtf8("BT_backup")+QDir::separator()+hash+QString::fromUtf8(".savepath"));
savepath_file.open(QIODevice::WriteOnly | QIODevice::Text);
savepath_file.write(branch_path);
savepath_file.close();
emit torrent_to_seed(path);
}
QMessageBox::information(0, tr("Torrent creation"), tr("Torrent was created successfully:")+" "+path);
hide();
}
void createtorrent::updateProgressBar(int progress) {
@@ -213,54 +219,47 @@ void torrentCreatorThread::create(QString _input_path, QString _save_path, QStri
start();
}
void sendProgressUpdateSignal(int i, int num, QDialog *parent){
((createtorrent*)parent)->updateProgressBar((int)(i*100./(float)num));
}
void torrentCreatorThread::run() {
emit updateProgress(0);
char const* creator_str = "qBittorrent "VERSION;
try {
boost::intrusive_ptr<torrent_info> t(new torrent_info);
ofstream out(complete(path((const char*)save_path.toUtf8())), std::ios_base::binary);
// Adding files to the torrent
file_storage fs;
file_pool fp;
path full_path = complete(path(input_path.toUtf8().data()));
add_files(*t, full_path.branch_path(), full_path.leaf());
// Adding files to the torrent
add_files(fs, full_path, file_filter);
if(abort) return;
// Set piece size
t->set_piece_size(piece_size);
create_torrent t(fs, piece_size);
// Add url seeds
QString seed;
foreach(seed, url_seeds){
t->add_url_seed(seed.toUtf8().data());
t.add_url_seed(seed.toUtf8().data());
}
for(int i=0; i<trackers.size(); ++i){
t->add_tracker(trackers.at(i).toUtf8().data());
t.add_tracker(trackers.at(i).toUtf8().data());
}
if(abort) return;
// calculate the hash for all pieces
file_pool fp;
boost::scoped_ptr<storage_interface> st(default_storage_constructor(t, full_path.branch_path(), fp));
int num = t->num_pieces();
std::vector<char> buf(piece_size);
for (int i = 0; i < num; ++i) {
st->read(&buf[0], i, 0, t->piece_size(i));
hasher h(&buf[0], t->piece_size(i));
t->set_hash(i, h.final());
emit updateProgress((int)(i*100./(float)num));
if(abort) return;
}
set_piece_hashes(t, full_path.branch_path(), boost::bind<void>(&sendProgressUpdateSignal, _1, t.num_pieces(), parent));
// Set qBittorrent as creator and add user comment to
// torrent_info structure
t->set_creator(creator_str);
t->set_comment((const char*)comment.toUtf8());
t.set_creator(creator_str);
t.set_comment((const char*)comment.toUtf8());
// Is private ?
if(is_private){
t->set_priv(true);
t.set_priv(true);
}
if(abort) return;
// create the torrent and print it to out
entry e = t->create_torrent();
libtorrent::bencode(std::ostream_iterator<char>(out), e);
out.flush();
ofstream out(complete(path((const char*)save_path.toUtf8())), std::ios_base::binary);
bencode(std::ostream_iterator<char>(out), t.generate());
emit updateProgress(100);
emit creationSuccess(save_path, full_path.branch_path().string().c_str(), misc::toQString(t->info_hash()));
emit creationSuccess(save_path, full_path.branch_path().string().c_str());
}
catch (std::exception& e){
emit creationFailure(QString::fromUtf8(e.what()));

View File

@@ -37,9 +37,12 @@ class torrentCreatorThread : public QThread {
bool is_private;
int piece_size;
bool abort;
QDialog *parent;
public:
torrentCreatorThread() {}
torrentCreatorThread(QDialog *_parent) {
parent = _parent;
}
~torrentCreatorThread() {
abort = true;
wait();
@@ -51,7 +54,7 @@ class torrentCreatorThread : public QThread {
signals:
void creationFailure(QString msg);
void creationSuccess(QString path, const char* branch_path, QString hash);
void creationSuccess(QString path, const char* branch_path);
void updateProgress(int progress);
};
@@ -70,6 +73,9 @@ class createtorrent : public QDialog, private Ui::createTorrentDialog{
signals:
void torrent_to_seed(QString path);
public slots:
void updateProgressBar(int progress);
protected slots:
void on_createButton_clicked();
void on_addFile_button_clicked();
@@ -79,8 +85,7 @@ class createtorrent : public QDialog, private Ui::createTorrentDialog{
void on_addURLSeed_button_clicked();
void on_removeURLSeed_button_clicked();
void handleCreationFailure(QString msg);
void handleCreationSuccess(QString path, const char* branch_path, QString hash);
void updateProgressBar(int progress);
void handleCreationSuccess(QString path, const char* branch_path);
};
#endif

View File

@@ -1,125 +0,0 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2006 Christophe Dumez
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Contact : chris@qbittorrent.org
*/
#ifndef DELETETHREAD_H
#define DELETETHREAD_H
#include <QThread>
#include <QMutex>
#include <QWaitCondition>
#include <QMutexLocker>
#include <QPair>
#include "arborescence.h"
class subDeleteThread : public QThread {
Q_OBJECT
private:
QString save_path;
arborescence *arb;
bool abort;
public:
subDeleteThread(QObject *parent, QString saveDir, arborescence *arb) : QThread(parent), save_path(saveDir), arb(arb), abort(false){}
~subDeleteThread(){
abort = true;
wait();
}
signals:
// For subthreads
void deletionSuccessST(subDeleteThread* st);
void deletionFailureST(subDeleteThread* st);
protected:
void run(){
if(arb->removeFromFS(save_path))
emit deletionSuccessST(this);
else
emit deletionFailureST(this);
delete arb;
}
};
class deleteThread : public QThread {
Q_OBJECT
private:
QList<QPair<QString, arborescence*> > torrents_list;
QMutex mutex;
QWaitCondition condition;
bool abort;
QList<subDeleteThread*> subThreads;
public:
deleteThread(QObject* parent) : QThread(parent), abort(false){}
~deleteThread(){
mutex.lock();
abort = true;
condition.wakeOne();
mutex.unlock();
qDeleteAll(subThreads);
wait();
}
void deleteTorrent(QString saveDir, arborescence *arb){
qDebug("deleteThread called");
QMutexLocker locker(&mutex);
torrents_list << QPair<QString, arborescence*>(saveDir, arb);
if(!isRunning()){
start();
}else{
condition.wakeOne();
}
}
protected:
void run(){
forever{
if(abort)
return;
mutex.lock();
if(torrents_list.size() != 0){
QPair<QString, arborescence *> torrent = torrents_list.takeFirst();
mutex.unlock();
subDeleteThread *st = new subDeleteThread(0, torrent.first, torrent.second);
subThreads << st;
connect(st, SIGNAL(deletionSuccessST(subDeleteThread*)), this, SLOT(deleteSubThread(subDeleteThread*)));
connect(st, SIGNAL(deletionFailureST(subDeleteThread*)), this, SLOT(deleteSubThread(subDeleteThread*)));
st->start();
}else{
condition.wait(&mutex);
mutex.unlock();
}
}
}
protected slots:
void deleteSubThread(subDeleteThread* st){
int index = subThreads.indexOf(st);
Q_ASSERT(index != -1);
subThreads.removeAt(index);
delete st;
}
};
#endif

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