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

Compare commits

...

185 Commits

Author SHA1 Message Date
Christophe Dumez
fd3e278284 tagged v2.4.10 release 2010-11-10 17:50:55 +00:00
Christophe Dumez
c713bd56e0 Bump to v2.4.10 2010-11-10 17:45:10 +00:00
Christophe Dumez
efcd652e3d - BUGFIX: Do not create the torrent root folder at final destination if
torrent is in the temp dir (closes #673271)
2010-11-10 17:39:21 +00:00
Christophe Dumez
8d6df1f15f More reliable folder scanning for torrents 2010-11-09 19:17:08 +00:00
Christophe Dumez
ca835a105b BUGFIX: Use a pointing cursor over status bar buttons 2010-11-08 18:25:21 +00:00
Christophe Dumez
2de1a7cc30 Updated Changelog 2010-11-07 11:38:54 +00:00
Christophe Dumez
3de83319a8 Improved IP address parsing 2010-11-07 11:38:02 +00:00
Christophe Dumez
cfc75905a2 Improved IPv6 support (thanks ver) 2010-11-07 10:43:26 +00:00
Christophe Dumez
2c30d5a1ca Fix compilation with libnotify v0.7.0 2010-11-06 09:28:49 +00:00
Christophe Dumez
d162d0c3c6 Draw the qBittorrent version on the splash screen at run time 2010-11-04 19:40:14 +00:00
Christophe Dumez
509eb9bcf0 Added qBittorrent version number to the debug stack trace 2010-11-02 18:16:33 +00:00
Christophe Dumez
1766877605 BUGFIX: Fix possible crash when selecting a RSS item (really closes #575624) 2010-11-02 18:06:20 +00:00
Christophe Dumez
fa78fba559 Updated Italian translation 2010-10-31 20:05:31 +00:00
Christophe Dumez
44ff7161aa BUGFIX: Fix and improve file priorities editing (closes #669084) 2010-10-31 16:14:11 +00:00
Christophe Dumez
96837a3658 Updated Changelog 2010-10-31 14:20:15 +00:00
Christophe Dumez
e4d93a96e7 Updated Changelog 2010-10-31 14:12:12 +00:00
Christophe Dumez
ccb2ed9a69 Fix possible crash on torrent removal 2010-10-31 14:11:11 +00:00
Christophe Dumez
ae5693544d Updated Changelog 2010-10-31 13:57:19 +00:00
Christophe Dumez
3a72c11e39 Fix torrent size update in torrent addition dialog 2010-10-31 13:56:22 +00:00
Christophe Dumez
4176abd18a Fix Arabic translation 2010-10-31 12:26:16 +00:00
Christophe Dumez
cba36fcb14 Added a donate link to the Help menu 2010-10-31 12:13:06 +00:00
Christophe Dumez
9f33656e61 Updated Changelog 2010-10-31 11:19:04 +00:00
Christophe Dumez
a4123a6462 Updated the name of the Italian translator 2010-10-31 11:13:06 +00:00
Christophe Dumez
313b2630bd Updated Croatian translation 2010-10-31 11:11:28 +00:00
Christophe Dumez
87b0ae9a79 Updated Italian translation 2010-10-31 11:09:20 +00:00
Christophe Dumez
81778a0090 Some more issues with virtual 2010-10-31 08:55:15 +00:00
Christophe Dumez
5d0d63d89a Declared function as virtual when it shouldn't 2010-10-31 08:49:36 +00:00
Christophe Dumez
764e8a365b BUGFIX: Make listening on a particular interface more reliable 2010-10-30 21:51:06 +00:00
Christophe Dumez
e302042520 Display the splash screen for 2 seconds instead 2010-10-30 21:18:38 +00:00
Christophe Dumez
e453eb9a91 Updated Italian translation 2010-10-30 20:34:41 +00:00
Christophe Dumez
98fcb91dae Make sure the splash screen is displayed for 3 seconds (Thanks Leigh) 2010-10-30 14:38:41 +00:00
Christophe Dumez
c8a1f625f0 Bump to v2.4.9 (release is planned for Halloween) 2010-10-30 14:04:40 +00:00
Christophe Dumez
b70cf7c049 BUGFIX: Correctly update total number of torrents when a torrent is automatically removed (closes #668726) 2010-10-30 13:59:07 +00:00
Christophe Dumez
ecdfe63d00 Updated language files 2010-10-28 17:11:48 +00:00
Christophe Dumez
7635fe51f7 BUGFIX: Fix possible crash on clicking a RSS article (closes #575624) 2010-10-28 17:09:00 +00:00
Christophe Dumez
8cba38ac62 - BUGFIX: Fix crash when deleting a torrent with no metadata (closes #667528)
- BUGFIX: Correctly display the hash of torrents with no metadata
2010-10-28 16:57:30 +00:00
Christophe Dumez
fab63e6ffc Fix properties display for torrents without metadata 2010-10-28 16:17:59 +00:00
Christophe Dumez
27f257ba03 BUGFIX: Elide status bar text if it is too wide 2010-10-26 17:57:07 +00:00
Christophe Dumez
a2aa462030 BUGFIX: Fix crash when pressing enter in save path field in torrent addition dialog 2010-10-26 16:39:14 +00:00
Christophe Dumez
0f44804225 Updated Arabic translation 2010-10-25 20:25:55 +00:00
Christophe Dumez
de78fc495b Fix compiling error 2010-10-24 10:12:37 +00:00
Christophe Dumez
93731f1b3f Bump to v2.2.8 2010-10-24 09:40:22 +00:00
Christophe Dumez
2e9e10299c Peers can now be sorted by country 2010-10-24 09:34:31 +00:00
Christophe Dumez
9f627b5ec9 BUGFIX: Better fix for save path editing issues in torrent addition dialog 2010-10-24 08:32:39 +00:00
Christophe Dumez
ad252f432a BUGFIX: Fix issue when altering files priorities of a seeding torrent (closes #665799) 2010-10-24 08:07:17 +00:00
Christophe Dumez
eb1feddea6 BUGFIX: Fix rounding issue in torrent progress display (closes #617733) 2010-10-23 19:14:01 +00:00
Christophe Dumez
1634014dde Fix status list widget height issue on style change (closes #603342) 2010-10-23 17:00:58 +00:00
Christophe Dumez
e863772159 Fix possible string encoding problem 2010-10-23 15:26:08 +00:00
Christophe Dumez
7c34f4e93c Update search plugin update URL 2010-10-22 20:14:21 +00:00
Christophe Dumez
91032056e1 Remember the current property tab on startup 2010-10-22 17:32:04 +00:00
Christophe Dumez
f427d267b6 BUGFIX: Auto-disable the shutdown feature 2010-10-21 16:55:44 +00:00
Christophe Dumez
a7a8265053 BUGFIX: Several search plugins fixed 2010-10-20 20:29:30 +00:00
Christophe Dumez
827fceca83 Fix torrentreactor search plugin 2010-10-20 19:51:47 +00:00
Christophe Dumez
7aaa3e8f51 Fix searching for something with {*} in it 2010-10-20 19:44:23 +00:00
Christophe Dumez
1fe49198d1 Improved hostname resolution code 2010-10-20 17:21:29 +00:00
Christophe Dumez
c582aff563 Updated Changelog 2010-10-20 16:17:49 +00:00
Christophe Dumez
5272f1cba3 Fix possible crash on manual peer ban 2010-10-20 16:17:11 +00:00
Christophe Dumez
b72d356083 Bump to v2.4.7 2010-10-19 17:05:06 +00:00
Christophe Dumez
fbd6533eee Update changelog 2010-10-19 16:54:53 +00:00
Christophe Dumez
2998dbd0a1 Fix possible transfer list refresh problem 2010-10-19 16:47:47 +00:00
Christophe Dumez
cb8da634f4 BUGFIX: Improved "Set Location" and "Change save path" dialogs 2010-10-18 19:25:58 +00:00
Christophe Dumez
e8f229816e BUGFIX: Fix issues when marking a file as 'not downloaded' causes the torrent to complete 2010-10-18 18:21:00 +00:00
Christophe Dumez
fe0fc952e8 - BUGFIX: Fix encoding problem in file renaming
- BUGFIX: Delete uneeded files on torrent "soft" deletion
2010-10-18 17:48:18 +00:00
Christophe Dumez
29a76ae600 BUGFIX: Display the priority column when the queueing system gets enabled 2010-10-18 17:08:25 +00:00
Christophe Dumez
5471600dfb Fix to German translation 2010-10-18 16:25:41 +00:00
Christophe Dumez
df42c4d59f Bump to v2.4.6 2010-10-17 15:27:25 +00:00
Christophe Dumez
8047495b2e BUGFIX: Fix moving of a torrent to an unexisting directory 2010-10-17 15:16:25 +00:00
Christophe Dumez
de04b47c29 BUGFIX: Fix detection of files at final destination when temp dir is used 2010-10-17 14:53:03 +00:00
Christophe Dumez
b709bec24d Fix compilation error with libtorrent v0.14 2010-10-17 11:47:16 +00:00
Christophe Dumez
35f93e8e16 BUGFIX: The properties panel data would sometimes not match the selected torrent 2010-10-17 09:12:24 +00:00
Christophe Dumez
554a84f8b0 Improvement to last commit 2010-10-17 09:01:34 +00:00
Christophe Dumez
f26fcabde1 BUGFIX: Fix "torrent seeding after creation" feature 2010-10-17 08:48:32 +00:00
Christophe Dumez
75b91c204d Forgot to commit this file 2010-10-17 08:42:34 +00:00
Christophe Dumez
0837c25602 Updated Changelog 2010-10-12 16:09:03 +00:00
Christophe Dumez
34f8937b8d Code optimization 2010-10-12 16:08:09 +00:00
Christophe Dumez
4a7f3ee415 Some more code optimization 2010-10-11 21:30:11 +00:00
Christophe Dumez
b218531ff7 BUGFIX: Piece availability/downloaded widgets performance improvement 2010-10-11 21:08:49 +00:00
Christophe Dumez
e96dee2038 Fix possible variable overflow 2010-10-11 20:01:56 +00:00
Christophe Dumez
080105c088 Bump to v2.4.5 2010-10-11 19:43:50 +00:00
Christophe Dumez
5d2535c1c1 BUGFIX: Improved peer hostname resolution with caching 2010-10-10 21:06:07 +00:00
Christophe Dumez
49b21059fa BUGFIX: Fix display of URL seeds in the UI 2010-10-10 15:43:53 +00:00
Christophe Dumez
c1af948649 Fix issues introduced recently related to torrent completion 2010-10-09 15:04:15 +00:00
Christophe Dumez
36ad3df9e7 Fix feature to keep incomplete torrents in a separate folder 2010-10-09 08:57:26 +00:00
Christophe Dumez
e607d721a2 Forgot to commit gpl.html 2010-10-08 17:52:10 +00:00
Christophe Dumez
5bfbfeb665 Fix some cosmetic issues in about dlg 2010-10-08 17:50:45 +00:00
Ishan Arora
1f1eabb1e9 moved windows path configs from src/src.pro to winconf.pri 2010-10-05 01:12:29 +00:00
Christophe Dumez
762050f8fc Remember torrent seeding date correctly 2010-10-02 12:55:39 +00:00
Christophe Dumez
e3c1270205 Code cleanup 2010-10-02 12:14:29 +00:00
Christophe Dumez
414685910b Fix to last commit 2010-10-01 20:52:53 +00:00
Christophe Dumez
d61b9c5d4d Bump to v2.4.4 2010-10-01 20:22:20 +00:00
Christophe Dumez
cf86a1cecd BUGFIX: Fix possible search engine plugin update 2010-10-01 20:19:17 +00:00
Christophe Dumez
a3f3287e24 Clean program exit on system shutdown/log out 2010-10-01 20:05:54 +00:00
Christophe Dumez
6e18d780ba Updated Changelog 2010-09-28 16:57:31 +00:00
Christophe Dumez
7dde763fc6 Fix wrong mapping to source model 2010-09-28 16:56:49 +00:00
Christophe Dumez
8c85ffca5f Fix tiny memory leak 2010-09-27 20:47:26 +00:00
Christophe Dumez
321e568d86 TorrentDownloads performance improvement 2010-09-27 19:48:58 +00:00
Christophe Dumez
e0649a7e78 Bump to v2.4.3 2010-09-27 17:49:33 +00:00
Christophe Dumez
4cd3233cd0 Better fix for encoding issue 2010-09-27 17:36:42 +00:00
Christophe Dumez
c554528afe BUGFIX: Fix possible crash when changing the save path in addition dialog 2010-09-27 17:35:34 +00:00
Christophe Dumez
7ab7f4b0fc BUGFIX: Fix encoding issue in command line parameters processing 2010-09-27 17:19:27 +00:00
Christophe Dumez
58c0ac7638 BUGFIX: Really fix manual editing of save path in torrent addition dialog 2010-09-26 17:10:21 +00:00
Christophe Dumez
2514224a3a Bump to v2.4.2 2010-09-26 16:57:04 +00:00
Christophe Dumez
247f6b4a8e BUGFIX: Fix display of torrent content in addition dialog 2010-09-26 16:53:20 +00:00
Christophe Dumez
3d89864b75 Fix deprecation warning 2010-09-26 11:15:00 +00:00
Christophe Dumez
7ac75ad772 Fix to last commit 2010-09-25 19:41:12 +00:00
Christophe Dumez
caa628371f BUGFIX: Limit torrent addition dialog width to fit the screen 2010-09-25 19:40:29 +00:00
Christophe Dumez
fd31f632d9 BUGFIX: Fix saving to drive root on Windows 2010-09-25 17:38:20 +00:00
Christophe Dumez
a25b6e087b Bump to v2.4.1 (release is nearing) 2010-09-25 17:08:21 +00:00
Christophe Dumez
1626d938d1 Fix save path encoding on non-utf8 systems (e.g. Windows)
Fix progress bar style on Windows
2010-09-25 17:02:40 +00:00
Christophe Dumez
a4c7640499 BUGFIX: Use AND operator for torrentdownloads.net searches 2010-09-25 13:12:02 +00:00
Christophe Dumez
2c1b93a12b BUGFIX: Fix locale switching from Web UI 2010-09-25 12:44:31 +00:00
Christophe Dumez
8f19025c2a Remove obsolete strings from language files 2010-09-25 12:12:08 +00:00
Christophe Dumez
20d41bcff2 Fix Web Ui for spanish users 2010-09-25 11:44:44 +00:00
Christophe Dumez
1ad77e00ff BUGFIX: Added support for | (OR) operator in RSS feed downloader 2010-09-25 11:31:33 +00:00
Christophe Dumez
0b65c02666 BUGFIX: Fix possible issue with temporary download path persistence 2010-09-25 11:05:02 +00:00
Christophe Dumez
294095367a BUGFIX: Add .torrent extension only when missing (torrent creator) 2010-09-25 10:49:13 +00:00
Christophe Dumez
05a6ffd554 Fix download in scan dir persistence (closes #633396) 2010-09-25 10:41:17 +00:00
Christophe Dumez
e0a30dc40c BUGFIX: Save path can now be edited in torrent addition dialog 2010-09-25 09:14:00 +00:00
Christophe Dumez
1940bc4e73 Higher maximum download limit 2010-09-25 08:04:36 +00:00
Christophe Dumez
a7e4e0273a Detect OGV as a previewable format 2010-09-25 07:42:55 +00:00
Christophe Dumez
29a9d57cdc Updated Changelog 2010-09-19 08:40:44 +00:00
Christophe Dumez
9c7a4e4983 Fixes to German translation 2010-09-19 08:39:14 +00:00
Christophe Dumez
35ead5bcf2 Updated Spanish and Catalan translations 2010-08-27 07:43:42 +00:00
Christophe Dumez
645bd58d79 Updated Arabic translation 2010-08-25 06:34:50 +00:00
Christophe Dumez
6c47a552ab Updated release date in Changelog 2010-08-24 18:28:56 +00:00
Christophe Dumez
f54bc8bea4 Branched v2.4.x 2010-08-24 18:27:18 +00:00
Christophe Dumez
eb54d81c5e Bump to rc3 2010-08-23 19:42:33 +00:00
Christophe Dumez
431d2f082c FEATURE: Detect executable updates in order to advise the user to restart 2010-08-23 19:42:15 +00:00
Christophe Dumez
a0ff0cdc7e UI lock related cosmetic changes 2010-08-23 16:12:17 +00:00
Christophe Dumez
fb91558261 Updated Portuguese and Brazilian translations 2010-08-23 15:46:06 +00:00
Christophe Dumez
fc2a47ca31 Updated Spanish and Catalan translation 2010-08-23 06:07:52 +00:00
Christophe Dumez
dcccbaad59 UI Lock also lock the tray icon menu 2010-08-22 19:08:15 +00:00
Christophe Dumez
99d040de3f Updated Serbian translation 2010-08-22 18:52:54 +00:00
Christophe Dumez
ee30a75b57 Fix compilation warning 2010-08-22 18:11:19 +00:00
Christophe Dumez
8c001aa478 Force progress update of paused torrents too 2010-08-22 16:55:57 +00:00
Christophe Dumez
849bc11a01 Updated Simplified Chinese translation 2010-08-22 14:27:47 +00:00
Christophe Dumez
5024e0b092 Updated Traditional Chinese translation 2010-08-22 12:53:16 +00:00
Christophe Dumez
d93447489b Clear search filter before hiding the top toolbar 2010-08-22 08:54:33 +00:00
Christophe Dumez
33988e70ab Updated Czech translation 2010-08-22 08:38:56 +00:00
Christophe Dumez
d2b41d70c8 Safer error detection 2010-08-21 20:22:59 +00:00
Christophe Dumez
8e1e51d268 Bump to rc2 2010-08-21 20:16:26 +00:00
Christophe Dumez
53500ea005 Force progress update on torrent pausing 2010-08-21 20:12:16 +00:00
Christophe Dumez
e048389dea Attempt to improve error detection 2010-08-21 09:08:12 +00:00
Christophe Dumez
fa7b1a205d Updated Slovak translation 2010-08-20 20:39:21 +00:00
Christophe Dumez
7dd6b7e9bb Updated Ukrainian translation 2010-08-20 14:37:30 +00:00
Christophe Dumez
78b96accda Fix "Seed until ratio reaches x.x" feature 2010-08-20 14:17:46 +00:00
Christophe Dumez
73d0e2568a Updated Web UI to reflect the autorun changes 2010-08-20 14:02:40 +00:00
Christophe Dumez
92fc212a0e FEATURE: Run external program on torrent completion 2010-08-20 13:20:23 +00:00
Christophe Dumez
6f4d7b7c1b Clean up 2010-08-20 12:35:13 +00:00
Christophe Dumez
63ee1c36e8 FEATURE: Added torrent filtering by name 2010-08-20 12:27:20 +00:00
Christophe Dumez
7d07debcb5 Cleaner program exit on Auto-shutdown 2010-08-20 09:35:28 +00:00
Christophe Dumez
dd67e1ee9d Code cleanup 2010-08-20 09:33:44 +00:00
Christophe Dumez
493efdbf10 Bump to beta3 2010-08-20 09:31:24 +00:00
Christophe Dumez
e323175275 Fix possible crash when using the new "Auto-shutdown" feature 2010-08-20 09:31:00 +00:00
Christophe Dumez
c1fa7f8645 Code cleanup 2010-08-20 09:02:27 +00:00
Christophe Dumez
275b962363 Added missing include 2010-08-19 20:23:39 +00:00
Christophe Dumez
3847c33017 Updated French translation 2010-08-19 19:37:29 +00:00
Christophe Dumez
9e21f52213 Updated language files 2010-08-19 19:16:44 +00:00
Christophe Dumez
25cf9b33ec Bump to beta2 2010-08-19 19:12:25 +00:00
Christophe Dumez
c7a2d3589f Updated Web UI to reflect the mail notification changes 2010-08-19 19:10:46 +00:00
Christophe Dumez
d8dd3834c3 Email notification on download completion 2010-08-19 18:47:57 +00:00
Christophe Dumez
ee01c2c745 FEATURE: Added button to password-lock the UI 2010-08-19 16:30:13 +00:00
Christophe Dumez
e7e5a2b4e9 Fix "Set location" action 2010-08-18 08:46:04 +00:00
Christophe Dumez
ff16f59be1 Fix per-label pause/resume actions 2010-08-18 08:07:17 +00:00
Christophe Dumez
2cd4937ddc Mac specific changes by Stephanos Antaris 2010-08-17 10:50:14 +00:00
Christophe Dumez
0e9abc1762 Bump to v2.4.0beta1 2010-08-17 08:51:12 +00:00
Christophe Dumez
e24ce87946 FEATURE: Added label-level Pause/Resume/Delete actions 2010-08-17 08:42:30 +00:00
Christophe Dumez
308e358d3f Fix Auto-Shutdown feature on Windows 2010-08-16 18:34:30 +00:00
Christophe Dumez
d15e6a4847 Blind implementation for auto-shutdown on Windows 2010-08-16 17:57:15 +00:00
Christophe Dumez
e311239a28 Blind implementation of auto-shutdown for Mac OS 2010-08-16 17:42:21 +00:00
Christophe Dumez
df677789d2 FEATURE: Added Auto-Shutdown on downloads completion feature (Linux Only for now) 2010-08-16 17:35:32 +00:00
Christophe Dumez
0af44eadb6 Fix possible folder watching issues on Windows 2010-08-16 11:51:50 +00:00
Christophe Dumez
85cafe530e Fix to last commit 2010-08-16 09:20:49 +00:00
Christophe Dumez
7609db28f1 Fix scan folder display on Windows and OS/2 2010-08-16 08:58:25 +00:00
Christophe Dumez
fefda39284 Added priority actions to Web UI right-click menu 2010-08-15 08:49:19 +00:00
Christophe Dumez
b2f98bd059 Priority actions should work only if the tab is displayed 2010-08-15 07:47:33 +00:00
Christophe Dumez
26c69fe6d4 Priority actions are only effective if the transfer list tab is displayed 2010-08-15 07:45:20 +00:00
Christophe Dumez
bf4f1a7c37 Fix speed limit sliders initialization in Web UI 2010-08-15 07:39:36 +00:00
Christophe Dumez
9b0dd39d9d Added missing icon 2010-08-15 07:23:37 +00:00
Christophe Dumez
66d4cc2ab8 FEATURE: Added actions to "Move to top/bottom" of priority queue 2010-08-14 15:53:05 +00:00
Christophe Dumez
0bcbaf6521 Remember last selected paths in torrent creation dialog 2010-08-13 14:02:19 +00:00
Christophe Dumez
e074872b24 Fix about dialog layout 2010-08-13 13:35:24 +00:00
Christophe Dumez
63ec1e618e Fix compilation with gcc 4.5 2010-08-13 13:29:17 +00:00
Christophe Dumez
331c15b76c Bump to v2.4.0alpha 2010-07-27 08:07:46 +00:00
Christophe Dumez
d2089c9aad Updated about dialog 2010-07-27 00:00:52 +00:00
150 changed files with 21164 additions and 108460 deletions

View File

@@ -12,7 +12,7 @@ Contributors:
* Silvan Scherrer <silvan.scherrer@aroa.ch>
Code from other projects:
* files src/qtsingleapp/*
* files src/qtsingleapp/* src/lineedit/*
copyright: Nokia Corporation
license: LGPL
@@ -83,7 +83,7 @@ Translations authors:
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net) and Stephanos Antaris (santaris@csd.auth.gr)
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
- Italian: Mirko Ferrari (mirkoferrari@gmail.com) and Ferraro Luciano (luciano.ferraro@gmail.com)
- Italian: Matteo Sechi (bu17714@gmail.com)
- Japanese: Nardog (alphisation@gmail.com)
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
- Norwegian: Lars-Erik Labori (hamil@users.sourceforge.net)

100
Changelog
View File

@@ -1,4 +1,102 @@
* Unreleased - Christophe Dumez <chris@qbittorrent.org> - v2.3.0
* Wed Nov 10 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.10
- BUGFIX: Fix possible crash when selecting a RSS item (really closes #575624)
- BUGFIX: Improved IPv6 support (IP filter and Peer list)
- BUGFIX: Make IP filter more tolerant towards strangely formatted IPs
- BUGFIX: More reliable folder scanning
- BUGFIX: Do not create the torrent root folder at final destination if
torrent is in the temp dir (closes #673271)
- BUGFIX: Fix compilation with libnotify v0.7.0 (closes #671769)
- BUGFIX: Use a pointing cursor over status bar buttons
* Sun Oct 31 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.9
- BUGFIX: Fix crash when pressing enter in save path field in torrent addition dialog
- BUGFIX: Fix crash when deleting a torrent with no metadata (closes #667528)
- BUGFIX: Fix possible crash on clicking a RSS article (closes #575624)
- BUGFIX: Correctly update total number of torrents when a torrent is automatically removed (closes #668726)
- BUGFIX: Correctly display the hash of torrents with no metadata
- BUGFIX: Elide status bar text if it is too wide
- BUGFIX: Make sure the splash screen is displayed for 2 seconds
- BUGFIX: Make listening on a particular interface more reliable
- BUGFIX: Fix torrent size update in torrent addition dialog
- BUGFIX: Fix possible crash on qBittorrent shutdown
- BUGFIX: Fix and improve file priorities editing (closes #669084)
- I18N: Updated Arabic, Italian and Croatian translations
* Sun Oct 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.8
- BUGFIX: Fix possible crash on manual peer ban
- BUGFIX: Improved hostname resolution code
- BUGFIX: Several search plugins fixed
- BUGFIX: Auto-disable the shutdown feature
- BUGFIX: Remember the current property tab on startup
- BUGFIX: Fix status list widget height issue on style change
- BUGFIX: Fix rounding issue in torrent progress display
- BUGFIX: Fix issue when altering files priorities of a seeding torrent
- BUGFIX: Better fix for save path editing issues in torrent addition dialog
- BUGFIX: Peers can now be sorted by country
* Tue Oct 19 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.7
- BUGFIX: Display the priority column when the queueing system gets enabled
- BUGFIX: Fix encoding problem in file renaming
- BUGFIX: Delete uneeded files on torrent "soft" deletion
- BUGFIX: Fix issues when marking a file as 'not downloaded' causes the torrent to complete
- BUGFIX: Improved "Set Location" and "Change save path" dialogs
- BUGFIX: Fix display of queued seeding torrents
* Sun Oct 17 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.6
- BUGFIX: Fix "torrent seeding after creation" feature
- BUGFIX: The properties panel data would sometimes not match the selected torrent
- BUGFIX: Fix detection of files at final destination when temp dir is used
- BUGFIX: Fix moving of a torrent to an unexisting directory
* Tue Oct 12 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.5
- BUGFIX: Remember torrent completion date correctly
- BUGFIX: Fix feature to keep incomplete torrents in a separate folder
- BUGFIX: Fix display of URL seeds in the UI
- BUGFIX: Improved peer hostname resolution with caching
- BUGFIX: Piece availability/downloaded widgets performance improvement
* Fri Oct 1 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.4
- BUGFIX: Clean program exit on system shutdown/logout
- BUGFIX: Fix possible search engine plugin update
* Tue Sep 28 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.3
- BUGFIX: Fix encoding issue in command line parameters processing
- BUGFIX: Fix possible crash when changing the save path in addition dialog
- BUGFIX: Fix wrong mapping to source model
* Sun Sep 26 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.2
- BUGFIX: Fix display of torrent content in addition dialog
- BUGFIX: Really fix manual editing of save path in torrent addition dialog
* Sun Sep 26 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.1
- I18N: Updated Arabic translation
- I18N: Fixes to German translation
- BUGFIX: Save path can now be edited in torrent addition dialog
- BUGFIX: Fix save path encoding on non-utf8 systems
- BUGFIX: Fix saving to drive root on Windows
- BUGFIX: OGV can now be previewed
- BUGFIX: Maximum download limit is now 10MB/s
- BUGFIX: Fix 'download in scan dir' persistence
- BUGFIX: Add .torrent extension only when missing (torrent creator)
- BUGFIX: Fix possible issue with temporary download path persistence
- BUGFIX: Added support for | (OR) operator in RSS feed downloader
- BUGFIX: Fix Web UI for spanish users
- BUGFIX: Fix locale switching from Web UI
- BUGFIX: Use AND operator for torrentdownloads.net searches
- BUGFIX: Limit torrent addition dialog width to fit the screen
- COSMETIC: Fix progress bars style on Windows
* Tue Aug 24 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.4.0
- FEATURE: Added actions to "Move to top/bottom" of priority queue
- FEATURE: Auto-Shutdown on downloads completion
- FEATURE: Email notification on download completion
- FEATURE: Added button to password-lock the UI
- FEATURE: Added label-level Pause/Resume/Delete actions
- FEATURE: Torrents can now be filtered by name
- FEATURE: Run external program on torrent completion
- FEATURE: Detect executable updates in order to advise the user to restart
* Tue Jul 27 2010 - Christophe Dumez <chris@qbittorrent.org> - v2.3.0
- FEATURE: Simplified torrent root folder renaming/truncating (< v2.3.0 is no longer forward compatible)
- FEATURE: Remember previous save paths in torrent addition dialog
- FEATURE: Max number of half-open connections can now be edited

View File

@@ -0,0 +1,26 @@
/*
-----BEGIN QCMOD-----
name: libboost
arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplication library or the system one
-----END QCMOD-----
*/
class qc_qtsingleapplication : public ConfObj
{
public:
qc_qtsingleapplication(Conf *c) : ConfObj(c) {}
QString name() const { return "qtsingleapplication library"; }
QString shortname() const { return "qtsingleapplication"; }
bool exec(){
QString s;
s = conf->getenv("QC_WITH_QTSINGLEAPPLICATION");
if(s.compare("system", Qt::CaseInsensitive) == 0) {
// System
conf->addDefine("USE_SYSTEM_QTSINGLEAPPLICATION");
printf(" [system] ");
} else {
printf(" [shipped] ");
}
return true;
}
};

File diff suppressed because it is too large Load Diff

View File

@@ -57,6 +57,8 @@ class about;
class createtorrent;
class downloadFromURL;
class HidableTabWidget;
class LineEdit;
class QFileSystemWatcher;
class GUI : public QMainWindow, private Ui::MainWindow{
Q_OBJECT
@@ -69,6 +71,7 @@ public:
QWidget* getCurrentTabWidget() const;
TransferListWidget* getTransferList() const { return transferList; }
QMenu* getTrayIconMenu();
PropertiesWidget *getProperties() const { return properties; }
public slots:
void trackerAuthenticationRequired(QTorrentHandle& h);
@@ -77,6 +80,7 @@ public slots:
void downloadFromURLList(const QStringList& urls);
void updateAltSpeedsBtn(bool alternative);
void updateNbTorrents(unsigned int nb_downloading, unsigned int nb_seeding, unsigned int nb_active, unsigned int nb_inactive, unsigned int nb_paused);
void deleteBTSession();
protected slots:
// GUI related slots
@@ -97,6 +101,10 @@ protected slots:
void handleDownloadFromUrlFailure(QString, QString) const;
void createSystrayDelayed();
void tab_changed(int);
void on_actionLock_qBittorrent_triggered();
void defineUILockPassword();
bool unlockUI();
void notifyOfUpdate(QString);
// Keyboard shortcuts
void createKeyboardShortcuts();
void displayTransferTab() const;
@@ -130,6 +138,7 @@ protected:
void displaySearchTab(bool enable);
private:
QFileSystemWatcher *executable_watcher;
// Bittorrent
Bittorrent *BTSession;
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; // Still needed?
@@ -150,6 +159,8 @@ private:
PropertiesWidget *properties;
bool displaySpeedInTitle;
bool force_exit;
bool ui_locked;
LineEdit *search_filter;
// Keyboard shortcuts
QShortcut *switchSearchShortcut;
QShortcut *switchSearchShortcut2;
@@ -160,6 +171,7 @@ private:
QAction *prioSeparator2;
QSplitter *hSplitter;
QSplitter *vSplitter;
QMenu *lockMenu;
// Search
QPointer<SearchEngine> searchEngine;
// RSS
@@ -170,6 +182,8 @@ private slots:
void on_actionRSS_Reader_triggered();
void on_actionSpeed_in_title_bar_triggered();
void on_actionTop_tool_bar_triggered();
void on_actionShutdown_when_downloads_complete_triggered();
void on_actionDonate_money_triggered();
};
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

BIN
src/Icons/oxygen/go-top.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 996 B

BIN
src/Icons/oxygen/go-up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 929 B

View File

@@ -1,6 +1,6 @@
[Desktop Entry]
Categories=Qt;Network;P2P;
Comment=V2.3.0
Comment=V2.4.10
Exec=qbittorrent %f
GenericName=Bittorrent client
GenericName[ar]=العميل Bittorrent

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -47,7 +47,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>2.3.0</string>
<string>2.4.10</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleExecutable</key>

6
src/about.qrc Normal file
View File

@@ -0,0 +1,6 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>gpl.html</file>
</qresource>
</RCC>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -108,6 +108,7 @@ public:
session* getSession() const;
QHash<QString, TrackerInfos> getTrackersInfo(QString hash) const;
bool hasActiveTorrents() const;
bool hasDownloadingTorrents() const;
bool isQueueingEnabled() const;
int getMaximumActiveDownloads() const;
int getMaximumActiveTorrents() const;
@@ -199,6 +200,9 @@ protected slots:
void takeETASamples();
void exportTorrentFiles(QString path);
void saveTempFastResumeData();
void sendNotificationEmail(QTorrentHandle h);
void autoRunExternalProgram(QTorrentHandle h, bool async=true);
void cleanUpAutoRunProcess(int);
signals:
void addedTorrent(QTorrentHandle& h);

View File

@@ -50,6 +50,7 @@
#include "torrentpersistentdata.h"
#include "createtorrent_imp.h"
#include "misc.h"
#include "qinisettings.h"
using namespace libtorrent;
using namespace boost::filesystem;
@@ -80,8 +81,11 @@ createtorrent::~createtorrent() {
}
void createtorrent::on_addFolder_button_clicked(){
QString dir = QFileDialog::getExistingDirectory(this, tr("Select a folder to add to the torrent"), QDir::homePath(), QFileDialog::ShowDirsOnly);
QIniSettings settings("qBittorrent", "qBittorrent");
QString last_path = settings.value("CreateTorrent/last_add_path", QDir::homePath()).toString();
QString dir = QFileDialog::getExistingDirectory(this, tr("Select a folder to add to the torrent"), last_path, QFileDialog::ShowDirsOnly);
if(!dir.isEmpty()) {
settings.setValue("CreateTorrent/last_add_path", dir);
#if defined(Q_WS_WIN) || defined(Q_OS_OS2)
dir = dir.replace("/", "\\");
#endif
@@ -90,8 +94,11 @@ void createtorrent::on_addFolder_button_clicked(){
}
void createtorrent::on_addFile_button_clicked(){
QString file = QFileDialog::getOpenFileName(this, tr("Select a file to add to the torrent"), QDir::homePath());
QIniSettings settings("qBittorrent", "qBittorrent");
QString last_path = settings.value("CreateTorrent/last_add_path", QDir::homePath()).toString();
QString file = QFileDialog::getOpenFileName(this, tr("Select a file to add to the torrent"), last_path);
if(!file.isEmpty()) {
settings.setValue("CreateTorrent/last_add_path", misc::removeLastPathPart(file));
#if defined(Q_WS_WIN) || defined(Q_OS_OS2)
file = file.replace("/", "\\");
#endif
@@ -177,13 +184,14 @@ void createtorrent::on_createButton_clicked(){
return;
}
QStringList trackers = allItems(trackers_list);
/*if(!trackers.size()){
QMessageBox::critical(0, tr("No tracker path set"), tr("Please set at least one tracker"));
return;
}*/
QString destination = QFileDialog::getSaveFileName(this, tr("Select destination torrent file"), QDir::homePath(), tr("Torrent Files")+QString::fromUtf8(" (*.torrent)"));
QIniSettings settings("qBittorrent", "qBittorrent");
QString last_path = settings.value("CreateTorrent/last_save_path", QDir::homePath()).toString();
QString destination = QFileDialog::getSaveFileName(this, tr("Select destination torrent file"), last_path, tr("Torrent Files")+QString::fromUtf8(" (*.torrent)"));
if(!destination.isEmpty()) {
if(!destination.endsWith(QString::fromUtf8(".torrent")))
settings.setValue("CreateTorrent/last_save_path", misc::removeLastPathPart(destination));
if(!destination.toUpper().endsWith(".TORRENT"))
destination += QString::fromUtf8(".torrent");
} else {
return;
@@ -212,16 +220,22 @@ void createtorrent::handleCreationSuccess(QString path, QString branch_path) {
// Remove busy cursor
setCursor(QCursor(Qt::ArrowCursor));
if(checkStartSeeding->isChecked()) {
QString root_folder;
// Create save path temp data
boost::intrusive_ptr<torrent_info> t;
try {
t = new torrent_info(path.toUtf8().data());
root_folder = misc::truncateRootFolder(t);
} 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());
TorrentTempData::setSavePath(hash, branch_path);
QString save_path = branch_path;
if(!root_folder.isEmpty()) {
save_path = QDir(save_path).absoluteFilePath(root_folder);
}
TorrentTempData::setSavePath(hash, save_path);
#if LIBTORRENT_VERSION_MINOR > 14
// Enable seeding mode (do not recheck the files)
TorrentTempData::setSeedingMode(hash, true);
@@ -277,8 +291,7 @@ void torrentCreatorThread::run() {
char const* creator_str = "qBittorrent "VERSION;
try {
file_storage fs;
file_pool fp;
path full_path = complete(path(input_path.toLocal8Bit().data()));
path full_path = complete(path(input_path.toUtf8().constData()));
// Adding files to the torrent
add_files(fs, full_path, file_filter);
if(abort) return;
@@ -303,7 +316,7 @@ void torrentCreatorThread::run() {
t.set_priv(is_private);
if(abort) return;
// create the torrent and print it to out
ofstream out(complete(path((const char*)save_path.toLocal8Bit())), std::ios_base::binary);
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, QString::fromUtf8(full_path.branch_path().string().c_str()));

View File

@@ -60,31 +60,34 @@ public:
pix.fill();
pixmap = pix;
} else {
const int nb_pieces = pieces.size();
const qulonglong 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()) {
const int ratio = floor(nb_pieces/(double)width());
std::vector<bool> scaled_pieces;
std::vector<bool> scaled_downloading;
for(int i=0; i<nb_pieces; i+= ratio) {
const uint w = width();
if(nb_pieces > w) {
const uint ratio = floor(nb_pieces/(double)w);
bitfield scaled_pieces(ceil(nb_pieces/(double)ratio), false);
bitfield scaled_downloading(ceil(nb_pieces/(double)ratio), false);
uint scaled_index = 0;
for(qulonglong i=0; i<nb_pieces; i+= ratio) {
bool have = true;
for(int j=i; j<qMin(i+ratio, nb_pieces); ++j) {
for(qulonglong j=i; j<qMin(i+ratio, nb_pieces); ++j) {
if(!pieces[i]) { have = false; break; }
}
scaled_pieces.push_back(have);
if(have) {
scaled_downloading.push_back(false);
scaled_pieces.set_bit(scaled_index);
} else {
bool downloading = false;
for(int j=i; j<qMin(i+ratio, nb_pieces); ++j) {
for(qulonglong j=i; j<qMin(i+ratio, nb_pieces); ++j) {
if(downloading_pieces[i]) { downloading = true; break; }
}
scaled_downloading.push_back(downloading);
if(downloading)
scaled_downloading.set_bit(scaled_index);
}
++scaled_index;
}
QPixmap pix = QPixmap(scaled_pieces.size(), 1);
pix.fill();
//pix.fill();
QPainter painter(&pix);
for(uint i=0; i<scaled_pieces.size(); ++i) {
if(scaled_pieces[i]) {
@@ -101,7 +104,7 @@ public:
pixmap = pix;
} else {
QPixmap pix = QPixmap(pieces.size(), 1);
pix.fill();
//pix.fill();
QPainter painter(&pix);
for(uint i=0; i<pieces.size(); ++i) {
if(pieces[i]) {

View File

@@ -44,7 +44,7 @@
#include <QTemporaryFile>
enum EngineColumns {ENGINE_NAME, ENGINE_URL, ENGINE_STATE, ENGINE_ID};
#define UPDATE_URL "http://qbittorrent.svn.sourceforge.net/viewvc/qbittorrent/trunk/src/search_engine/engines/"
#define UPDATE_URL "http://qbittorrent.svn.sourceforge.net/viewvc/qbittorrent/branches/v2_4_x/src/search_engine/engines/"
engineSelectDlg::engineSelectDlg(QWidget *parent, SupportedEngines *supported_engines) : QDialog(parent), supported_engines(supported_engines) {
setupUi(this);
@@ -270,6 +270,7 @@ void engineSelectDlg::installPlugin(QString path, QString plugin_name) {
// Backup in case install fails
QFile::copy(dest_path, dest_path+".bak");
misc::safeRemove(dest_path);
misc::safeRemove(dest_path+"c");
update = true;
}
// Copy the plugin

View File

@@ -38,6 +38,7 @@
//#include "proplistdelegate.h"
#include "torrentpersistentdata.h"
#include <QDebug>
#include <QTranslator>
EventManager::EventManager(QObject *parent, Bittorrent *BTSession)
: QObject(parent), BTSession(BTSession)
@@ -124,8 +125,20 @@ QList<QVariantMap> EventManager::getPropFilesInfo(QString hash) const {
void EventManager::setGlobalPreferences(QVariantMap m) const {
// UI
if(m.contains("locale"))
Preferences::setLocale(m["locale"].toString());
if(m.contains("locale")) {
QString locale = m["locale"].toString();
if(Preferences::getLocale() != locale) {
QTranslator *translator = new QTranslator;
if(translator->load(QString::fromUtf8(":/lang/qbittorrent_") + locale)){
qDebug("%s locale recognized, using translation.", qPrintable(locale));
}else{
qDebug("%s locale unrecognized, using default (en_GB).", qPrintable(locale));
}
qApp->installTranslator(translator);
}
Preferences::setLocale(locale);
}
// Downloads
if(m.contains("save_path"))
Preferences::setSavePath(m["save_path"].toString());
@@ -163,6 +176,16 @@ void EventManager::setGlobalPreferences(QVariantMap m) const {
}
if(m.contains("export_dir"))
Preferences::setExportDir(m["export_dir"].toString());
if(m.contains("mail_notification_enabled"))
Preferences::setMailNotificationEnabled(m["mail_notification_enabled"].toBool());
if(m.contains("mail_notification_email"))
Preferences::setMailNotificationEmail(m["mail_notification_email"].toString());
if(m.contains("mail_notification_smtp"))
Preferences::setMailNotificationSMTP(m["mail_notification_smtp"].toString());
if(m.contains("autorun_enabled"))
Preferences::setAutoRunEnabled(m["autorun_enabled"].toBool());
if(m.contains("autorun_program"))
Preferences::setAutoRunProgram(m["autorun_program"].toString());
if(m.contains("preallocate_all"))
Preferences::preAllocateAllFiles(m["preallocate_all"].toBool());
if(m.contains("queueing_enabled"))
@@ -265,6 +288,11 @@ QVariantMap EventManager::getGlobalPreferences() const {
data["download_in_scan_dirs"] = var_list;
data["export_dir_enabled"] = Preferences::isTorrentExportEnabled();
data["export_dir"] = Preferences::getExportDir();
data["mail_notification_enabled"] = Preferences::isMailNotificationEnabled();
data["mail_notification_email"] = Preferences::getMailNotificationEmail();
data["mail_notification_smtp"] = Preferences::getMailNotificationSMTP();
data["autorun_enabled"] = Preferences::isAutoRunEnabled();
data["autorun_program"] = Preferences::getAutoRunProgram();
data["preallocate_all"] = Preferences::preAllocateAllFiles();
data["queueing_enabled"] = Preferences::isQueueingSystemEnabled();
data["max_active_downloads"] = Preferences::getMaxActiveDownloads();

View File

@@ -105,7 +105,7 @@ public:
QStringList getNotMatchingTokens() const {
QString notmatching = this->value("not", "").toString();
return notmatching.split(" ");
return notmatching.split(QRegExp("[\\s|]"));
}
QString getNotMatchingTokens_str() const {

View File

@@ -19,6 +19,8 @@
#endif
#endif
#include "misc.h"
#ifndef CIFS_MAGIC_NUMBER
#define CIFS_MAGIC_NUMBER 0xFF534D42
#endif
@@ -27,6 +29,9 @@
#define NFS_SUPER_MAGIC 0x6969
#endif
const int WATCH_INTERVAL = 10000; // 10 sec
const int MAX_PARTIAL_RETRIES = 5;
/*
* Subclassing QFileSystemWatcher in order to support Network File
* System watching (NFS, CIFS) on Linux and Mac OS.
@@ -39,11 +44,14 @@ private:
QList<QDir> watched_folders;
QPointer<QTimer> watch_timer;
#endif
QStringList filters;
QStringList m_filters;
// Partial torrents
QHash<QString, int> m_partialTorrents;
QPointer<QTimer> m_partialTorrentTimer;
#ifndef Q_WS_WIN
protected:
bool isNetworkFileSystem(QString path) {
private:
static bool isNetworkFileSystem(QString path) {
QString file = path;
if(!file.endsWith(QDir::separator()))
file += QDir::separator();
@@ -99,7 +107,7 @@ protected:
public:
FileSystemWatcher(QObject *parent): QFileSystemWatcher(parent) {
filters << "*.torrent";
m_filters << "*.torrent";
connect(this, SIGNAL(directoryChanged(QString)), this, SLOT(scanLocalFolder(QString)));
}
@@ -108,6 +116,8 @@ public:
if(watch_timer)
delete watch_timer;
#endif
if(m_partialTorrentTimer)
delete m_partialTorrentTimer;
}
QStringList directories() const {
@@ -137,7 +147,7 @@ public:
if (!watch_timer) {
watch_timer = new QTimer(this);
connect(watch_timer, SIGNAL(timeout()), this, SLOT(scanNetworkFolders()));
watch_timer->start(5000); // 5 sec
watch_timer->start(WATCH_INTERVAL); // 5 sec
}
} else {
#endif
@@ -196,14 +206,72 @@ protected slots:
#endif
}
void processPartialTorrents() {
QStringList no_longer_partial;
// Check which torrents are still partial
foreach(const QString& torrent_path, m_partialTorrents.keys()) {
if(!QFile::exists(torrent_path)) {
m_partialTorrents.remove(torrent_path);
continue;
}
if(misc::isValidTorrentFile(torrent_path)) {
no_longer_partial << torrent_path;
m_partialTorrents.remove(torrent_path);
} else {
if(m_partialTorrents[torrent_path] >= MAX_PARTIAL_RETRIES) {
m_partialTorrents.remove(torrent_path);
QFile::rename(torrent_path, torrent_path+".invalid");
} else {
m_partialTorrents[torrent_path]++;
}
}
}
// Stop the partial timer if necessary
if(m_partialTorrents.empty()) {
m_partialTorrentTimer->stop();
m_partialTorrentTimer->deleteLater();
qDebug("No longer any partial torrent.");
} else {
qDebug("Still %d partial torrents after delayed processing.", m_partialTorrents.count());
m_partialTorrentTimer->start(WATCH_INTERVAL);
}
// Notify of new torrents
if(!no_longer_partial.isEmpty())
emit torrentsAdded(no_longer_partial);
}
signals:
void torrentsAdded(QStringList &pathList);
private:
void startPartialTorrentTimer() {
Q_ASSERT(!m_partialTorrents.isEmpty());
if(!m_partialTorrentTimer) {
m_partialTorrentTimer = new QTimer();
connect(m_partialTorrentTimer, SIGNAL(timeout()), SLOT(processPartialTorrents()));
m_partialTorrentTimer->setSingleShot(true);
m_partialTorrentTimer->start(WATCH_INTERVAL);
}
}
void addTorrentsFromDir(const QDir &dir, QStringList &torrents) {
const QStringList files = dir.entryList(filters, QDir::Files, QDir::Unsorted);
foreach(const QString &file, files)
torrents << dir.canonicalPath() + '/' + file;
const QStringList files = dir.entryList(m_filters, QDir::Files, QDir::Unsorted);
foreach(const QString &file, files) {
const QString file_abspath = dir.absoluteFilePath(file);
if(misc::isValidTorrentFile(file_abspath)) {
torrents << file_abspath;
} else {
if(!m_partialTorrents.contains(file_abspath)) {
qDebug("Partial torrent detected at: %s", qPrintable(file_abspath));
qDebug("Delay the file's processing...");
m_partialTorrents.insert(file_abspath, 0);
}
}
}
if(!m_partialTorrents.empty())
startPartialTorrentTimer();
}
};

File diff suppressed because it is too large Load Diff

508
src/gpl.html Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -109,7 +109,7 @@ QString HttpConnection::translateDocument(QString data) {
bool found = false;
do {
found = false;
QRegExp regex(QString::fromUtf8("_\\(([\\w\\s?!:\\/\\(\\),µ&\\-\\.]+)\\)"));
QRegExp regex(QString::fromUtf8("_\\(([\\w\\s?!:\\/\\(\\),%µ&\\-\\.]+)\\)"));
i = regex.indexIn(data, i);
if(i >= 0) {
//qDebug("Found translatable string: %s", regex.cap(1).toUtf8().data());
@@ -161,7 +161,7 @@ void HttpConnection::respond() {
write();
return;
}
// Client sucessfuly authenticated, reset number of failed attempts
// Client successfully authenticated, reset number of failed attempts
parent->resetNbFailedAttemptsForIp(peer_ip);
QString url = parser.url();
// Favicon
@@ -500,6 +500,16 @@ void HttpConnection::respondCommand(QString command)
if(h.is_valid()) h.queue_position_down();
return;
}
if(command == "topPrio") {
QTorrentHandle h = BTSession->getTorrentHandle(parser.post("hash"));
if(h.is_valid()) h.queue_position_top();
return;
}
if(command == "bottomPrio") {
QTorrentHandle h = BTSession->getTorrentHandle(parser.post("hash"));
if(h.is_valid()) h.queue_position_bottom();
return;
}
if(command == "recheck"){
recheckTorrent(parser.post("hash"));
return;

View File

@@ -54,7 +54,7 @@ class HttpConnection : public QObject
protected slots:
void write();
virtual void respond();
void respond();
void respondJson();
void respondGenPropertiesJson(QString hash);
void respondTrackersPropertiesJson(QString hash);

View File

@@ -44,7 +44,7 @@ class HttpResponseGenerator : public QHttpResponseHeader
void setMessage(const QString message);
void stripMessage();
void setContentTypeByExt(const QString ext);
virtual QByteArray toByteArray() const;
QByteArray toByteArray() const;
};
#endif

File diff suppressed because it is too large Load Diff

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