1
mirror of https://github.com/qbittorrent/qBittorrent synced 2025-10-23 22:32:16 +02:00

Compare commits

..

165 Commits

Author SHA1 Message Date
Christophe Dumez
9c0751ed4b - Tagged v1.5.0beta2 2009-08-23 14:59:51 +00:00
Christophe Dumez
fd81567ecd - Remembering open state of RSS folders on startup 2009-08-23 14:56:44 +00:00
Christophe Dumez
8e5f5b5d65 - Fixed crash on feed deletion 2009-08-23 13:52:45 +00:00
Christophe Dumez
215d561b82 - When adding a new feed, add it to the selected folder 2009-08-23 13:47:45 +00:00
Christophe Dumez
dc18780a97 - "Mark items read" on a folder now updates number of unread news 2009-08-23 13:39:15 +00:00
Christophe Dumez
06fb19e8be - Updated selectFirstFeed() function due to code rewrite 2009-08-23 13:35:45 +00:00
Christophe Dumez
3550e31871 - Remove useless code 2009-08-23 13:26:16 +00:00
Christophe Dumez
46c6c4fc9a - UpdateSelectedItems() now sets loading.png icon for all feeds included in selected folders 2009-08-23 13:20:26 +00:00
Christophe Dumez
e126de8ff5 - Always keep number of unread news per folders up to date
- RefreshAllFeeds() only sets loading.png icon for feeds (and not folders)
2009-08-23 13:05:47 +00:00
Christophe Dumez
f2d2e70967 - Updated number of unread news of RSS folders after a feed is moved from one folder to another 2009-08-23 12:49:37 +00:00
Christophe Dumez
48b14d1066 - Major rewrite of rss grouping code because I did not like my first approach. It is not complete yet but it is far more clean and stable 2009-08-23 12:22:19 +00:00
Christophe Dumez
725700420c - RSS feed parent was not updated after being moved to another folder 2009-08-23 09:10:45 +00:00
Christophe Dumez
480df1f5dc - Fixed crash when selecting feeds after they were moved 2009-08-23 09:05:36 +00:00
Christophe Dumez
2fa43dd973 - Started to implement drag n drop in feed list but it is still very buggy 2009-08-23 08:10:56 +00:00
Christophe Dumez
b9f1586068 - Expand parent folder when a new subfolder is created
- Fixed folder renaming
2009-08-22 15:33:31 +00:00
Christophe Dumez
07dbe388f4 - Started to implement 'new Folder' feature for RSS grouping
- Fixed a bug in 'Feed subscribe', the type of the new feed (STREAM) was not set
2009-08-22 15:26:39 +00:00
Christophe Dumez
b2af40c95b - Updated some icons to oxygen theme
- Prepared actions for rss grouping
2009-08-22 15:01:53 +00:00
Christophe Dumez
05569a5011 - Added some more function for rss feeds grouping 2009-08-22 14:41:58 +00:00
Christophe Dumez
73dbce45b2 - Most of the code is there for rss feeds grouping. However it is not used yet and it is probably quite unstable 2009-08-22 14:06:05 +00:00
Christophe Dumez
fdaeafc701 - Fixed overwriting confirmation -> should have 'Yes/No' buttons, not 'Ok' 2009-08-22 13:44:05 +00:00
Christophe Dumez
9ca4e2f1f6 - RSS code remodeling to improve robustness 2009-08-22 03:00:31 +00:00
Christophe Dumez
2b53aa7e81 - Use clickedItem event to update news read status instead of currentItem one to avoid marking items as read although they were not actually clicked by the user
- Use the actual number of unread news instead of (0) when adding a RSS stream to the list since it is now possible that unread news were loaded from hard disk by the class constructor
2009-08-22 02:43:11 +00:00
Christophe Dumez
8e79e918c5 - RSS toolbar: text besides icons instead of under to reduce bar height 2009-08-22 02:34:11 +00:00
Christophe Dumez
687842a949 Code cleanup 2009-08-22 02:30:28 +00:00
Christophe Dumez
645ee86860 Fixed new RSS tab layout (Toolbar) 2009-08-22 02:27:36 +00:00
Christophe Dumez
f50762dfa8 - Updated language files and icon resource file 2009-08-22 02:23:56 +00:00
Christophe Dumez
7e252d3fbd - COSMETIC: Redesigned RSS tab to improve usability 2009-08-22 02:19:40 +00:00
Christophe Dumez
2dc9f10bf4 - Fixed 'Mark all as read' would not refresh news list 2009-08-21 18:36:50 +00:00
Christophe Dumez
bca03706a0 - Delete code that is no longer used 2009-08-21 18:33:36 +00:00
Christophe Dumez
e7663e7b6b - Fixed a slight bug in default RSS feed downloader filter rule (use rule name instead as '*') 2009-08-21 18:27:45 +00:00
Christophe Dumez
2b0e05b453 - Some more RSS polishing 2009-08-21 18:24:29 +00:00
Christophe Dumez
4d67170d3e - Fixed tiny bug in RSS feeds refreshing code 2009-08-21 18:02:35 +00:00
Christophe Dumez
538c028f8a - Some more RSS polishing 2009-08-21 17:49:48 +00:00
Christophe Dumez
2cbbd6ef50 - Slightly improved RSS feeds loading: Saved news can be displayed before the Feed is effectively updated 2009-08-21 14:48:33 +00:00
Christophe Dumez
955d8069e2 - RSS fix: Make sure to update refreshed boolean only if the RSS feed have been refreshed 2009-08-21 14:15:23 +00:00
Christophe Dumez
25d998f1b5 - Added magnet URI support to Web UI 2009-08-21 14:05:03 +00:00
Christophe Dumez
462f6c41cd - Updated Changelog 2009-08-21 11:58:08 +00:00
Christophe Dumez
298f1e6a9a - FEATURE: If a torrent contains a torrent file, process downloaded torrent file too 2009-08-21 11:26:58 +00:00
Christophe Dumez
2926745102 - Added Import / Export feature for RSS feed downloader filters 2009-08-21 10:17:00 +00:00
Christophe Dumez
c6003c7403 - Reorganized RSS feeds popup menu 2009-08-21 09:06:57 +00:00
Christophe Dumez
66e5a6672a - It is now possible to rename Feed downloader filters 2009-08-21 09:01:18 +00:00
Christophe Dumez
c35500dd29 - Already present RSS news were not remembered on startup 2009-08-21 08:30:10 +00:00
Christophe Dumez
f80bd42361 - Fixed RSS feed filter matching (did not take 'not' tokens into consideration)
- Added a RSS feed filter tester for easy setup)
- Updated language files
2009-08-21 08:19:32 +00:00
Christophe Dumez
0b9c05d41b - FEATURE: Make use of torrent enclosure in RSS feeds for direct download
- FEATURE: Implemented a RSS feed downloader with filter support
- FEATURE: Save old RSS item to hard disk to remember them on start up
- FEATURE: RSS Feeds can now be copied to the clipboard
2009-08-21 07:40:57 +00:00
Christophe Dumez
2477dc1fc0 - FEATURE: In torrent addition from URL, paste clipboard content if it contains an URL 2009-08-18 03:29:34 +00:00
Christophe Dumez
706362333d - Attempt to support FreeDiskSpace() on Windows platform
* Totally untested, not even sure it compiles but if not it should be easy to fix
2009-08-17 14:53:41 +00:00
Christophe Dumez
6fcf25af52 - FEATURE: Display free disk space in torrent addition dialog
- Added some disambiguation for translators
2009-08-17 13:17:52 +00:00
Christophe Dumez
c8e8306e0a - Added "Copy magnet link" entry to right click menu now that we support magnet URIs 2009-08-17 10:22:41 +00:00
Christophe Dumez
e429126934 - Ok. torrentless downloads paused state is now restored properly (once metadata is received) 2009-08-17 08:08:51 +00:00
Christophe Dumez
7e71de558a - catching invalid_handle exception to avoid rare crashes 2009-08-17 06:01:35 +00:00
Christophe Dumez
09d8a4797d - Make sure torrent handle is valid before updating the torrent 2009-08-17 05:50:47 +00:00
Christophe Dumez
1bcb8b1ed8 - Disabled force recheck for torrents with no metadata 2009-08-17 05:35:20 +00:00
Christophe Dumez
d132d50f4d - Torrentless downloads are no longer added in pause (temporary workaround as I think it is better not to start in paused state). 2009-08-17 05:23:58 +00:00
Christophe Dumez
e619b6977a - Added Magnet URI support (might be still buggy)
* Known problem: Always added in paused state for some obscure reason)
2009-08-17 05:14:03 +00:00
Christophe Dumez
2742a54d6e - Rewrited torrent resume code to make it cleaner and more generic
* magnet URI support should be easy to implement now
Warning: Since a lot of code was rewrited, some bugs may have been introduced
2009-08-16 03:09:20 +00:00
Christophe Dumez
360a327d7d - Updated version to v1.5.0 (alpha) 2009-08-15 02:37:03 +00:00
Christophe Dumez
b659303419 - Bump to v1.5.0alpha 2009-08-14 15:57:08 +00:00
Christophe Dumez
43108712be - Removed rc2 from version 2009-08-13 03:54:35 +00:00
Christophe Dumez
a038616fe5 - Updated Changelog 2009-08-13 03:48:53 +00:00
Christophe Dumez
81e5c295b6 - Updated German translation 2009-08-13 01:29:57 +00:00
Christophe Dumez
08d079a563 - Updated Swedish, Bulgarian and Greek translations 2009-08-11 01:16:27 +00:00
Christophe Dumez
454c8dc2bc - Fix compilation with Qt 4.3 (closes #410138) 2009-08-07 10:26:02 +00:00
Christophe Dumez
337fc72ee6 - Updated Changelog 2009-08-06 14:19:49 +00:00
Christophe Dumez
b1e9c1ccf5 - Updated preference text since we are spoofing µtorrent now instead of Azureus 2009-08-06 13:14:50 +00:00
Christophe Dumez
64806cb199 - Torrent is moved to temp dir on startup if it is supposed to be complete but data could not be found 2009-08-06 08:58:49 +00:00
Christophe Dumez
8e8e7cd3e7 - Fixed finished torrents returning to download dir on restart when temp dir feature is enabled 2009-08-06 08:48:04 +00:00
Christophe Dumez
27a18e01e2 - Updated Hungarian translation 2009-08-06 04:01:31 +00:00
Christophe Dumez
fc9e7d74a3 - Bump to rc2 2009-08-02 06:36:13 +00:00
Christophe Dumez
037a1875f9 - Use findPkg (pkg-config) to find libtorrent-rasterbar and detected if version is sufficient
- Cleaned up libMagick compilation flags detection
- Minor fixes to About dialog
- Updated language files
- Fixed French translation
2009-08-02 06:33:43 +00:00
Christophe Dumez
66baa4d3dc - Fixed torrent name parsing in Mininova search plugin due to Web site changes (Thanks Lucas Moauro for the patch) 2009-08-02 01:42:38 +00:00
Christophe Dumez
9e522a8a6c - Updated language files 2009-08-02 01:19:02 +00:00
Christophe Dumez
cfa4edd140 - Updated Korean and Italian translations
- Fixes to about dialog
2009-08-02 01:08:14 +00:00
Christophe Dumez
9e9134cd44 - Polished Finnish translation 2009-07-27 07:59:48 +00:00
Christophe Dumez
83a798b07e - Updated Portuguese and Brazilian translations 2009-07-27 01:57:40 +00:00
Christophe Dumez
baee85684c - Updated romanian translation 2009-07-25 16:14:53 +00:00
Christophe Dumez
88afb0f0e7 - Updated Chinese Translation 2009-07-25 13:32:08 +00:00
Christophe Dumez
6f212f18f5 - Updated Russian translation 2009-07-25 12:07:13 +00:00
Christophe Dumez
f04e600340 - Updated Turkish translation 2009-07-25 08:46:07 +00:00
Christophe Dumez
5140886567 - Updated slovak translation 2009-07-24 13:24:10 +00:00
Christophe Dumez
0aa59694fd - Updated Czech translation 2009-07-24 11:29:45 +00:00
Christophe Dumez
66d31b5ca1 - Updated Finnish translation 2009-07-24 11:16:41 +00:00
Christophe Dumez
47135932a4 - Updated Finnish translation 2009-07-24 09:16:26 +00:00
Christophe Dumez
40d0e44f15 - Bump to rc1 2009-07-24 08:32:51 +00:00
Christophe Dumez
16c30a2f10 - Updated language files 2009-07-24 08:16:40 +00:00
Christophe Dumez
7f2639fcbd - Remember visual indexes of columns in transfer lists 2009-07-24 05:53:35 +00:00
Christophe Dumez
8ad987a672 - Save properties window size, position, columns width and restore them
- Set a minimum default width for NAME column in properties
2009-07-24 03:35:55 +00:00
Christophe Dumez
b24194068a - Fixed possible overflow in progress calculation in arborescence.h 2009-07-24 03:00:11 +00:00
Christophe Dumez
f4e9b00ce3 - Fixed a small typo 2009-07-24 02:40:36 +00:00
Christophe Dumez
5c0a24d58b - Fixed "infos" -> "info" typo in torrent properties
- Updated language files
- Updated French translation
2009-07-23 14:15:27 +00:00
Christophe Dumez
c4aa23c86b - Fixed torrent creation (closes #402025) 2009-07-23 09:11:05 +00:00
Christophe Dumez
96911a2c48 - Fixed broken icon for Website link 2009-07-15 11:13:52 +00:00
Christophe Dumez
85abb80f43 - Updated TODO 2009-07-15 11:02:56 +00:00
Christophe Dumez
2372f434cf Fixed a small bug in new DHT port setting code 2009-07-14 08:06:55 +00:00
Christophe Dumez
ee6bc3c2e9 - FEATURE: Allow to set a different port for DHT (UDP) than the one used for
Bittorrent
2009-07-14 07:50:00 +00:00
Christophe Dumez
b6c6637c3b Made IP filter more robust 2009-07-14 06:49:16 +00:00
Christophe Dumez
d358987316 - Updated french translation 2009-07-12 09:25:44 +00:00
Christophe Dumez
6f28711f9e - Updated Changelog 2009-07-12 09:16:29 +00:00
Christophe Dumez
7b4b568859 - Display date as well as time in log window 2009-07-12 09:08:38 +00:00
Christophe Dumez
c3aa2906bb - Tuned lists properties to make sure display is correct 2009-07-12 08:54:33 +00:00
Christophe Dumez
9509bbaed4 - Remove last separator in toolbar 2009-07-12 08:45:05 +00:00
Christophe Dumez
b7c7245fb5 - Display a ratio of 0.0 if total_upload and total_download are both 0 2009-07-12 08:21:06 +00:00
Christophe Dumez
0153b03160 BUGFIX: Stop enforcing UTF-8 and use system locale instead 2009-07-12 08:13:00 +00:00
Christophe Dumez
ca83fdecff - Display swarm information in download list too 2009-07-12 07:51:58 +00:00
Christophe Dumez
bca898d8b6 - torrents with an infinite ratio are no longer affected by ratio_limit set in program preferences 2009-07-12 07:23:11 +00:00
Christophe Dumez
c877c9c412 - Implemented cut/copy/paste actions on right click in search field
- Added icons for menu actions
2009-07-12 07:12:43 +00:00
Christophe Dumez
4dfd1f229b - Updated language files 2009-07-12 06:50:38 +00:00
Christophe Dumez
0d63f46035 - FEATURE: Added right click menu in search engine to clear completion history 2009-07-12 06:42:38 +00:00
Christophe Dumez
106f7cdd32 - Cleanly fixed popup menu positions in lists (no more workarounds) 2009-07-12 06:00:27 +00:00
Christophe Dumez
0308825c11 - Fixed right-click menu position in seeding list 2009-07-12 05:50:42 +00:00
Christophe Dumez
8c21ef5c04 - Updated Changelog 2009-07-12 05:39:08 +00:00
Christophe Dumez
53c2fe4a60 - Display Swarm infos in seeding list (closes #346955)
- Bump to beta3
2009-07-12 05:37:09 +00:00
Christophe Dumez
64fef21a86 - Forcing our own cleanlooks style instead of default one on startup (closes #181796) 2009-07-12 03:35:04 +00:00
Christophe Dumez
f6f4b5f219 - Suppressed QLayout: Attempting to add QLayout "" to properties "properties" warning message when opening a properties dialog (closes #380414) 2009-07-12 03:03:17 +00:00
Christophe Dumez
f809b8a014 - Fixing compiling with Qt 4.3 2009-06-21 15:04:46 +00:00
Christophe Dumez
cf8dbf22f8 - Fixed a bug in download_url() in helpers.py 2009-06-19 06:55:28 +00:00
Christophe Dumez
00d9f7c36b - Fixed IP filter file parsing on 64bits architecture (Fix by Eric Porter) 2009-05-03 15:37:17 +00:00
Christophe Dumez
9a314db530 - Ensured UTF-8 support in novaprinter another way so that we do not require an additional python library 2009-04-30 16:18:29 +00:00
Christophe Dumez
7db2ffc09f - Should fix logout cancelation on KDE 2009-04-28 14:54:43 +00:00
Christophe Dumez
9a02c12ec9 - Updated french and russian translations 2009-04-26 09:03:55 +00:00
Christophe Dumez
2a77de686c - Fix splash screen 2009-04-26 08:19:38 +00:00
Christophe Dumez
a79b294885 - Fix options matching between buttons and frames (closes #366957) 2009-04-26 08:16:12 +00:00
Christophe Dumez
13c670b96d - Code cleanup 2009-04-17 20:16:02 +00:00
Christophe Dumez
65c4da6f0e - BUGFIX: Provide more helpful explanation when an I/O error occured 2009-04-17 20:04:09 +00:00
Christophe Dumez
bf9dc052d3 - Fixed copyright in helpers.py 2009-04-07 06:46:52 +00:00
Christophe Dumez
0ea6ee32be - Now beta2 2009-04-06 20:27:37 +00:00
Christophe Dumez
019bd476db - Forgot to update those headers 2009-04-05 18:48:45 +00:00
Christophe Dumez
baf5cb31af - Fixed typo in novaprinter.py (Thanks Cristian Greco) 2009-04-05 17:06:33 +00:00
Christophe Dumez
fc3c123f5b - Cosmetic license fix 2009-04-05 17:01:22 +00:00
Christophe Dumez
7dfdebd593 - License fix due to problems with OpenSSL 2009-04-05 17:00:55 +00:00
Christophe Dumez
9835af4962 - Fix license due to problems with OpenSSL 2009-04-05 16:34:42 +00:00
Christophe Dumez
04cbd91f04 - Added some debug
- On torrent completion, save its fastresume data *AFTER* it was moved to final directory to avoid big problems (oops)
2009-03-30 22:01:33 +00:00
Christophe Dumez
66db20cb47 - Added ico favicon support to search engine plugins manager (until now, only png was supported)
- Updated server url for search plugins update (new search engine plugins are not compatible with qBittorrent < v1.3.3)
2009-03-30 21:38:56 +00:00
Christophe Dumez
2e0707bc0c - Enabled debug, updated nova2.py version to force update 2009-03-30 20:31:30 +00:00
Christophe Dumez
e9c12cbf78 - Fix search item download when a column was sorted 2009-03-30 13:40:33 +00:00
Christophe Dumez
031de096f5 - Updated Finnish translation 2009-03-30 07:39:10 +00:00
Christophe Dumez
b85ed8ff38 - fix compilation with Qt <= 4.3 2009-03-28 19:55:44 +00:00
Christophe Dumez
00c5127ba1 - Commited some code by mistake 2009-03-27 22:25:34 +00:00
Christophe Dumez
714bf4f2ab - Removed some debug 2009-03-27 22:22:01 +00:00
Christophe Dumez
c2244f746e - Torrent downloading is now handled by search engine plugins to allow for more flexibility 2009-03-27 22:11:41 +00:00
Christophe Dumez
8214d87ce5 - Removed useless variable 2009-03-27 19:52:16 +00:00
Christophe Dumez
e8454596ea - Force UTF-8 printing to terminal 2009-03-27 14:34:30 +00:00
Christophe Dumez
1cc039c147 - Fixed search engine bug that prevented a torrent from appearing more
than once among all tabs
2009-03-27 13:27:54 +00:00
Christophe Dumez
fe455970f1 - use std error output instead of debug output for file error message 2009-03-26 21:08:10 +00:00
Christophe Dumez
36871a34ad - Fix for last commit 2009-03-26 20:59:44 +00:00
Christophe Dumez
4ea6ca75ca - removed debug output 2009-03-26 20:24:34 +00:00
Christophe Dumez
9e46c6c047 - Should completly fix unicode problems for all search engines 2009-03-26 20:14:05 +00:00
Christophe Dumez
a2e9210665 - Fixed unicode in mininova and btjunkie search engines 2009-03-26 16:49:44 +00:00
Christophe Dumez
aaf79add0b - Unicode fix for search engine 2009-03-26 15:46:35 +00:00
Christophe Dumez
55743021e8 - Fixed bug in new temp dir feature
* Completed torrents were moved too
2009-03-17 17:38:41 +00:00
Christophe Dumez
a8d627e1df - resize program preferences window if it does not fit with current
screen resolution
2009-03-15 17:48:20 +00:00
Christophe Dumez
eead11427f - Fix compilation 2009-03-15 15:54:08 +00:00
Christophe Dumez
bec1388ba5 - forgot to commit this file 2009-03-14 15:22:40 +00:00
Christophe Dumez
1542ff98bc - Fixed upload form in web ui 2009-03-12 13:24:18 +00:00
Christophe Dumez
0e9fd2dc3f - bump to beta1 2009-03-09 21:35:06 +00:00
Christophe Dumez
cd618150b0 - Little code optimization 2009-03-09 21:25:39 +00:00
Christophe Dumez
a2bcfa9192 - FEATURE: Resizing a column in a search results tab affects all tabs
- FEATURE: Search results tab columns are now remembered upon startup
2009-03-09 21:24:40 +00:00
Christophe Dumez
1421f1450c - Fixed typo in french translation 2009-03-09 20:34:57 +00:00
Christophe Dumez
288300d264 - Rewrote btjunkie parser (it is now a lot faster and less cpu extensive) 2009-03-09 20:25:34 +00:00
Christophe Dumez
5e41a64c8b - FEATURE: Display total amount of uploaded data in finished list
- Updated language files
2009-03-09 18:37:17 +00:00
Christophe Dumez
f4502367f3 - Allow to define a temporary download folder 2009-03-08 16:26:02 +00:00
Christophe Dumez
273526b414 - Fix signal/slot 2009-03-08 16:14:03 +00:00
Christophe Dumez
5b7b4b2cf3 - Still working on temp folder 2009-03-08 15:40:25 +00:00
Christophe Dumez
ee99df0ba9 - Started work on temp folder
- Use a proper icon for browse buttons
2009-03-08 14:51:27 +00:00
Christophe Dumez
aec32db565 - Updated splash screen 2009-03-08 10:30:15 +00:00
Christophe Dumez
3894452840 - COSMETIC: Redesigned program preferences
- COSMETIC: Updated icons set
2009-03-08 10:28:58 +00:00
189 changed files with 34287 additions and 31884 deletions

View File

@@ -17,6 +17,11 @@ Images Authors:
license: GPLv2 license: GPLv2
url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme
* files: src/oxygen/*.png
copyright: Oxygen Icon Theme (KDE)
license: LGPL
url: http://www.oxygen-icons.org
* files: src/Icons/flags/*.png * files: src/Icons/flags/*.png
copyright: Open Clip Art Library copyright: Open Clip Art Library
license: Creative Commons Public Domain Dedication license: Creative Commons Public Domain Dedication

View File

@@ -1,3 +1,37 @@
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.5.0
- FEATURE: Added Magnet URI support
- FEATURE: Make use of torrent enclosure in RSS feeds for direct download
- FEATURE: Implemented a RSS feed downloader with filter support
- FEATURE: Save old RSS item to hard disk to remember them on start up
- FEATURE: Display free disk space in torrent addition dialog
- FEATURE: In torrent addition from URL, paste clipboard content if it contains an URL
- FEATURE: RSS feeds URLs can now be copied to clipboard
- FEATURE: RSS feeds can now be grouped into folders
- FEATURE: If a torrent contains a torrent file, process downloaded torrent file too
- BUGFIX: torrent resume code rewrited
- COSMETIC: Redesigned RSS tab to improve usability
* Sun Aug 21 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.4.1
- BUGFIX: Fix problems when changing save path (if using temporary download folder)
- BUGFIX: Display real save path instead of the temporary one in torrent properties
- BUGFIX: Catching invalid_handle exception to avoid rare crashes
- BUGFIX: Fixed popup menu position in RSS feeds list
- BUGFIX: Don't save RSS feed state if it could not be updated
* Thu Aug 13 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.4.0
- FEATURE: Display swarm information in lists
- FEATURE: Allow to define temporary download folder
- FEATURE: Display total amount of uploaded data in finished list
- FEATURE: Resizing a column in a search results tab affects all tabs
- FEATURE: Search results tab columns are now remembered upon startup
- FEATURE: Added right click menu in search engine to clear completion history
- FEATURE: Allow to set a different port for DHT (UDP) than the one used for Bittorrent
- FEATURE: Updated spoofing code to avoid trackers ban
- BUGFIX: Provide more helpful explanation when an I/O error occured
- BUGFIX: Stop enforcing UTF-8 and use system locale instead
- COSMETIC: Redesigned program preferences
- COSMETIC: Updated icons set
* Fri Jul 24 2009 - Christophe DUMEZ <chris@qbittorrent.org> - 1.3.5 * Fri Jul 24 2009 - Christophe DUMEZ <chris@qbittorrent.org> - 1.3.5
- BUGFIX: Made IP filter parser more robust - BUGFIX: Made IP filter parser more robust
- BUGFIX: Fixed torrent creation tool - BUGFIX: Fixed torrent creation tool

109
configure vendored
View File

@@ -18,17 +18,12 @@ Main options:
--help This help text. --help This help text.
Dependency options: Dependency options:
--with-libtorrent-inc=[path] Path to libtorrent-rasterbar include --with-libboost-inc=[path] Path to libboost include files
files --with-libcurl-inc=[path] Path to libcurl include files
--with-libtorrent-lib=[path] Path to libtorrent-rasterbar library --with-libcurl-lib=[path] Path to libcurl library files
files --disable-libzzip Disable use of libzzip
--with-libtorrent-static-lib=[path] Path to libtorrent-rasterbar .a file --with-libzzip-inc=[path] Path to libzzip++ include files
--with-libboost-inc=[path] Path to libboost include files --with-libzzip-lib=[path] Path to libzzip++ library files
--with-libcurl-inc=[path] Path to libcurl include files
--with-libcurl-lib=[path] Path to libcurl 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
EOT EOT
} }
@@ -145,21 +140,6 @@ while [ $# -gt 0 ]; do
shift shift
;; ;;
--with-libtorrent-inc=*)
QC_WITH_LIBTORRENT_INC=$optarg
shift
;;
--with-libtorrent-lib=*)
QC_WITH_LIBTORRENT_LIB=$optarg
shift
;;
--with-libtorrent-static-lib=*)
QC_WITH_LIBTORRENT_STATIC_LIB=$optarg
shift
;;
--with-libboost-inc=*) --with-libboost-inc=*)
QC_WITH_LIBBOOST_INC=$optarg QC_WITH_LIBBOOST_INC=$optarg
shift shift
@@ -211,9 +191,6 @@ echo PREFIX=$PREFIX
echo BINDIR=$BINDIR echo BINDIR=$BINDIR
echo DATADIR=$DATADIR echo DATADIR=$DATADIR
echo EX_QTDIR=$EX_QTDIR echo EX_QTDIR=$EX_QTDIR
echo QC_WITH_LIBTORRENT_INC=$QC_WITH_LIBTORRENT_INC
echo QC_WITH_LIBTORRENT_LIB=$QC_WITH_LIBTORRENT_LIB
echo QC_WITH_LIBTORRENT_STATIC_LIB=$QC_WITH_LIBTORRENT_STATIC_LIB
echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC
echo QC_WITH_LIBCURL_INC=$QC_WITH_LIBCURL_INC echo QC_WITH_LIBCURL_INC=$QC_WITH_LIBCURL_INC
echo QC_WITH_LIBCURL_LIB=$QC_WITH_LIBCURL_LIB echo QC_WITH_LIBCURL_LIB=$QC_WITH_LIBCURL_LIB
@@ -346,70 +323,29 @@ public:
/* /*
-----BEGIN QCMOD----- -----BEGIN QCMOD-----
name: libtorrent-rasterbar name: libtorrent-rasterbar
arg: with-libtorrent-inc=[path], Path to libtorrent-rasterbar include files
arg: with-libtorrent-lib=[path], Path to libtorrent-rasterbar library files
arg: with-libtorrent-static-lib=[path], Path to libtorrent-rasterbar .a file
-----END QCMOD----- -----END QCMOD-----
*/ */
// see Conf::findPkgConfig
class qc_libtorrent_rasterbar : public ConfObj class qc_libtorrent_rasterbar : public ConfObj
{ {
public: public:
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {} qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
QString name() const { return "libtorrent-rasterbar >= 0.14"; } QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.14.4 advised)"; }
QString shortname() const { return "libtorrent-rasterbar"; } QString shortname() const { return "libtorrent-rasterbar"; }
bool exec(){ bool exec(){
QString s; QStringList incs;
s = conf->getenv("QC_WITH_LIBTORRENT_INC"); QString req_ver = "0.14.0";
if(!s.isEmpty()) { QString adv_ver = "0.14.4";
if(!conf->checkHeader(s, "libtorrent/magnet_uri.hpp")) { QString version, libs, other;
return false; VersionMode mode = VersionMin;
} if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
}else{ return false;
QStringList sl; for(int n = 0; n < incs.count(); ++n)
sl << "/usr/include"; conf->addIncludePath(incs[n]);
sl << "/usr/local/include"; if(!libs.isEmpty())
bool found = false; conf->addLib(libs);
foreach(s, sl){ if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other))
if(conf->checkHeader(s, "libtorrent/magnet_uri.hpp")){ printf("\nWarning: libtorrent-rasterbar v%s was detected. Although it will compile and run, you will probably experience some bugs. Please consider updating to v%s!\n", version.toUtf8().data(), adv_ver.toUtf8().data());
found = true;
break;
}
}
if(!found) {
return false;
}
}
conf->addIncludePath(s);
conf->addIncludePath(s+QDir::separator()+"libtorrent");
s = conf->getenv("QC_WITH_LIBTORRENT_STATIC_LIB");
if(!s.isEmpty() && QFile::exists(s) && s.endsWith(".a")){
conf->addLib(s);
return true;
}
s = conf->getenv("QC_WITH_LIBTORRENT_LIB");
if(!s.isEmpty()) {
if(!conf->checkLibrary(s, "torrent-rasterbar")) {
return false;
}
conf->addLib(QString("-L") + s);
}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, "torrent-rasterbar")){
found = true;
break;
}
}
if(!found) return false;
conf->addLib(QString("-L") + s);
}
return true; return true;
} }
}; };
@@ -1567,9 +1503,6 @@ export PREFIX
export BINDIR export BINDIR
export DATADIR export DATADIR
export EX_QTDIR export EX_QTDIR
export QC_WITH_LIBTORRENT_INC
export QC_WITH_LIBTORRENT_LIB
export QC_WITH_LIBTORRENT_STATIC_LIB
export QC_WITH_LIBBOOST_INC export QC_WITH_LIBBOOST_INC
export QC_WITH_LIBCURL_INC export QC_WITH_LIBCURL_INC
export QC_WITH_LIBCURL_LIB export QC_WITH_LIBCURL_LIB

View File

@@ -64,14 +64,11 @@ public:
return false; return false;
} }
conf->addLib(QString("-L") + s); conf->addLib(QString("-L") + s);
QProcess magickConfig; QString out = "";
QStringList params; QStringList params;
params << "--libs"; params << "--libs";
magickConfig.start("Magick++-config", params, QIODevice::ReadOnly); qconf->doCommand("Magick++-config", params, &out);
magickConfig.waitForStarted(); out = out.replace("\n", "");
magickConfig.waitForFinished();
QByteArray result = magickConfig.readAll();
result = result.replace("\n", "");
conf->addLib(result.data()); conf->addLib(result.data());
conf->addDefine("HAVE_MAGICK"); conf->addDefine("HAVE_MAGICK");
return true; return true;

View File

@@ -1,9 +1,6 @@
/* /*
-----BEGIN QCMOD----- -----BEGIN QCMOD-----
name: libtorrent-rasterbar name: libtorrent-rasterbar
arg: with-libtorrent-inc=[path], Path to libtorrent-rasterbar include files
arg: with-libtorrent-lib=[path], Path to libtorrent-rasterbar library files
arg: with-libtorrent-static-lib=[path], Path to libtorrent-rasterbar .a file
-----END QCMOD----- -----END QCMOD-----
*/ */
// see Conf::findPkgConfig // see Conf::findPkgConfig
@@ -11,61 +8,22 @@ class qc_libtorrent_rasterbar : public ConfObj
{ {
public: public:
qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {} qc_libtorrent_rasterbar(Conf *c) : ConfObj(c) {}
QString name() const { return "libtorrent-rasterbar >= 0.14"; } QString name() const { return "libtorrent-rasterbar >= 0.14.0 (>= 0.14.4 advised)"; }
QString shortname() const { return "libtorrent-rasterbar"; } QString shortname() const { return "libtorrent-rasterbar"; }
bool exec(){ bool exec(){
QString s; QStringList incs;
s = conf->getenv("QC_WITH_LIBTORRENT_INC"); QString req_ver = "0.14.0";
if(!s.isEmpty()) { QString adv_ver = "0.14.4";
if(!conf->checkHeader(s, "libtorrent/magnet_uri.hpp")) { QString version, libs, other;
return false; VersionMode mode = VersionMin;
} if(!conf->findPkgConfig("libtorrent-rasterbar", mode, req_ver, &version, &incs, &libs, &other))
}else{ return false;
QStringList sl; for(int n = 0; n < incs.count(); ++n)
sl << "/usr/include"; conf->addIncludePath(incs[n]);
sl << "/usr/local/include"; if(!libs.isEmpty())
bool found = false; conf->addLib(libs);
foreach(s, sl){ if(!conf->findPkgConfig("libtorrent-rasterbar", mode, adv_ver, &version, &incs, &libs, &other))
if(conf->checkHeader(s, "libtorrent/magnet_uri.hpp")){ printf("\nWarning: libtorrent-rasterbar v%s was detected. Although it will compile and run, you will probably experience some bugs. Please consider updating to v%s!\n", version.toLocal8Bit().data(), adv_ver.toUtf8().data());
found = true;
break;
}
}
if(!found) {
return false;
}
}
conf->addIncludePath(s);
conf->addIncludePath(s+QDir::separator()+"libtorrent");
s = conf->getenv("QC_WITH_LIBTORRENT_STATIC_LIB");
if(!s.isEmpty() && QFile::exists(s) && s.endsWith(".a")){
conf->addLib(s);
return true;
}
s = conf->getenv("QC_WITH_LIBTORRENT_LIB");
if(!s.isEmpty()) {
if(!conf->checkLibrary(s, "torrent-rasterbar")) {
return false;
}
conf->addLib(QString("-L") + s);
}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, "torrent-rasterbar")){
found = true;
break;
}
}
if(!found) return false;
conf->addLib(QString("-L") + s);
}
return true; return true;
} }
}; };

480
src/FeedDownloader.h Normal file

File diff suppressed because it is too large Load Diff

546
src/FeedDownloader.ui Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -44,9 +44,11 @@
#define F_NAME 0 #define F_NAME 0
#define F_SIZE 1 #define F_SIZE 1
#define F_UPSPEED 2 #define F_UPSPEED 2
#define F_LEECH 3 #define F_SWARM 3
#define F_RATIO 4 #define F_PEERS 4
#define F_HASH 5 #define F_UPLOAD 5
#define F_RATIO 6
#define F_HASH 7
#define MAX_RATIO 100. #define MAX_RATIO 100.
@@ -62,6 +64,7 @@ class FinishedListDelegate: public QItemDelegate {
QStyleOptionViewItemV2 opt = QItemDelegate::setOptions(index, option); QStyleOptionViewItemV2 opt = QItemDelegate::setOptions(index, option);
switch(index.column()){ switch(index.column()){
case F_SIZE: case F_SIZE:
case F_UPLOAD:
QItemDelegate::drawBackground(painter, opt, index); QItemDelegate::drawBackground(painter, opt, index);
QItemDelegate::drawDisplay(painter, opt, option.rect, misc::friendlyUnit(index.data().toLongLong())); QItemDelegate::drawDisplay(painter, opt, option.rect, misc::friendlyUnit(index.data().toLongLong()));
break; break;

View File

@@ -46,11 +46,13 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par
setupUi(this); setupUi(this);
actionStart->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/play.png"))); actionStart->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/play.png")));
actionPause->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/pause.png"))); actionPause->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/pause.png")));
finishedListModel = new QStandardItemModel(0,6); finishedListModel = new QStandardItemModel(0,8);
finishedListModel->setHeaderData(F_NAME, Qt::Horizontal, tr("Name", "i.e: file name")); finishedListModel->setHeaderData(F_NAME, Qt::Horizontal, tr("Name", "i.e: file name"));
finishedListModel->setHeaderData(F_SIZE, Qt::Horizontal, tr("Size", "i.e: file size")); finishedListModel->setHeaderData(F_SIZE, Qt::Horizontal, tr("Size", "i.e: file size"));
finishedListModel->setHeaderData(F_UPSPEED, Qt::Horizontal, tr("UP Speed", "i.e: Upload speed")); finishedListModel->setHeaderData(F_UPSPEED, Qt::Horizontal, tr("UP Speed", "i.e: Upload speed"));
finishedListModel->setHeaderData(F_LEECH, Qt::Horizontal, tr("Leechers", "i.e: full/partial sources")); finishedListModel->setHeaderData(F_SWARM, Qt::Horizontal, tr("Seeds / Leechers"));
finishedListModel->setHeaderData(F_PEERS, Qt::Horizontal, tr("Connected peers"));
finishedListModel->setHeaderData(F_UPLOAD, Qt::Horizontal, tr("Total uploaded", "i.e: Total amount of uploaded data"));
finishedListModel->setHeaderData(F_RATIO, Qt::Horizontal, tr("Ratio")); finishedListModel->setHeaderData(F_RATIO, Qt::Horizontal, tr("Ratio"));
finishedList->setModel(finishedListModel); finishedList->setModel(finishedListModel);
finishedList->setRootIsDecorated(false); finishedList->setRootIsDecorated(false);
@@ -62,6 +64,8 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par
if(!loadColWidthFinishedList()){ if(!loadColWidthFinishedList()){
finishedList->header()->resizeSection(0, 200); finishedList->header()->resizeSection(0, 200);
} }
// Connect BTSession signals
connect(BTSession, SIGNAL(metadataReceived(QTorrentHandle&)), this, SLOT(updateMetadata(QTorrentHandle&)));
// Make download list header clickable for sorting // Make download list header clickable for sorting
finishedList->header()->setClickable(true); finishedList->header()->setClickable(true);
finishedList->header()->setSortIndicatorShown(true); finishedList->header()->setSortIndicatorShown(true);
@@ -77,6 +81,8 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par
actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png"))); actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png")));
actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png"))); actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png")));
actionSet_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png"))); actionSet_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
actionCopy_magnet_link->setIcon(QIcon(QString::fromUtf8(":/Icons/magnet.png")));
connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered())); connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered()));
connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered())); connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered()));
connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered())); connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered()));
@@ -86,11 +92,14 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par
connect(actionBuy_it, SIGNAL(triggered()), (GUI*)parent, SLOT(goBuyPage())); connect(actionBuy_it, SIGNAL(triggered()), (GUI*)parent, SLOT(goBuyPage()));
connect(actionTorrent_Properties, SIGNAL(triggered()), this, SLOT(propertiesSelection())); connect(actionTorrent_Properties, SIGNAL(triggered()), this, SLOT(propertiesSelection()));
connect(actionForce_recheck, SIGNAL(triggered()), this, SLOT(forceRecheck())); connect(actionForce_recheck, SIGNAL(triggered()), this, SLOT(forceRecheck()));
connect(actionCopy_magnet_link, SIGNAL(triggered()), (GUI*)parent, SLOT(copyMagnetURI()));
connect(actionHOSColName, SIGNAL(triggered()), this, SLOT(hideOrShowColumnName())); connect(actionHOSColName, SIGNAL(triggered()), this, SLOT(hideOrShowColumnName()));
connect(actionHOSColSize, SIGNAL(triggered()), this, SLOT(hideOrShowColumnSize())); connect(actionHOSColSize, SIGNAL(triggered()), this, SLOT(hideOrShowColumnSize()));
connect(actionHOSColUpSpeed, SIGNAL(triggered()), this, SLOT(hideOrShowColumnUpSpeed())); connect(actionHOSColUpSpeed, SIGNAL(triggered()), this, SLOT(hideOrShowColumnUpSpeed()));
connect(actionHOSColLeechers, SIGNAL(triggered()), this, SLOT(hideOrShowColumnLeechers())); connect(actionHOSColSwarm, SIGNAL(triggered()), this, SLOT(hideOrShowColumnSwarm()));
connect(actionHOSColPeers, SIGNAL(triggered()), this, SLOT(hideOrShowColumnPeers()));
connect(actionHOSColUpload, SIGNAL(triggered()), this, SLOT(hideOrShowColumnUpload()));
connect(actionHOSColRatio, SIGNAL(triggered()), this, SLOT(hideOrShowColumnRatio())); connect(actionHOSColRatio, SIGNAL(triggered()), this, SLOT(hideOrShowColumnRatio()));
} }
@@ -117,7 +126,9 @@ void FinishedTorrents::addTorrent(QString hash){
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(h.name())); finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(h.name()));
finishedListModel->setData(finishedListModel->index(row, F_SIZE), QVariant((qlonglong)h.actual_size())); finishedListModel->setData(finishedListModel->index(row, F_SIZE), QVariant((qlonglong)h.actual_size()));
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)0.)); finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)0.));
finishedListModel->setData(finishedListModel->index(row, F_LEECH), QVariant("0")); finishedListModel->setData(finishedListModel->index(row, F_SWARM), QVariant("-1/-1"));
finishedListModel->setData(finishedListModel->index(row, F_PEERS), QVariant("0"));
finishedListModel->setData(finishedListModel->index(row, F_UPLOAD), QVariant((qlonglong)h.all_time_upload()));
finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(QString::fromUtf8(misc::toString(BTSession->getRealRatio(hash)).c_str()))); finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(QString::fromUtf8(misc::toString(BTSession->getRealRatio(hash)).c_str())));
finishedListModel->setData(finishedListModel->index(row, F_HASH), QVariant(hash)); finishedListModel->setData(finishedListModel->index(row, F_HASH), QVariant(hash));
if(h.is_paused()) { if(h.is_paused()) {
@@ -227,7 +238,7 @@ void FinishedTorrents::saveColWidthFinishedList() const{
width_list = line.split(' '); width_list = line.split(' ');
} }
for(short i=0; i<nbColumns; ++i){ for(short i=0; i<nbColumns; ++i){
if(finishedList->columnWidth(i)<1 && width_list.size() == finishedListModel->columnCount()-1 && width_list.at(i).toInt()>=1) { if(finishedList->columnWidth(i)<1 && width_list.size() == nbColumns && width_list.at(i).toInt()>=1) {
// load the former width // load the former width
new_width_list << width_list.at(i); new_width_list << width_list.at(i);
} else if(finishedList->columnWidth(i)>=1) { } else if(finishedList->columnWidth(i)>=1) {
@@ -260,7 +271,18 @@ void FinishedTorrents::on_actionSet_upload_limit_triggered(){
new BandwidthAllocationDialog(this, true, BTSession, hashes); new BandwidthAllocationDialog(this, true, BTSession, hashes);
} }
void FinishedTorrents::updateMetadata(QTorrentHandle &h) {
QString hash = h.hash();
int row = getRowFromHash(hash);
if(row != -1) {
qDebug("Updating torrent metadata in download list");
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(h.name()));
finishedListModel->setData(finishedListModel->index(row, F_SIZE), QVariant((qlonglong)h.actual_size()));
}
}
void FinishedTorrents::updateTorrent(QTorrentHandle h) { void FinishedTorrents::updateTorrent(QTorrentHandle h) {
if(!h.is_valid()) return;
QString hash = h.hash(); QString hash = h.hash();
int row = getRowFromHash(hash); int row = getRowFromHash(hash);
if(row == -1){ if(row == -1){
@@ -269,22 +291,25 @@ void FinishedTorrents::updateTorrent(QTorrentHandle h) {
row = getRowFromHash(hash); row = getRowFromHash(hash);
} }
Q_ASSERT(row != -1); Q_ASSERT(row != -1);
if(!finishedList->isColumnHidden(F_SWARM)) {
finishedListModel->setData(finishedListModel->index(row, F_SWARM), misc::toQString(h.num_complete())+QString("/")+misc::toQString(h.num_incomplete()));
}
if(h.is_paused()) return; if(h.is_paused()) return;
// Update queued torrent // Update queued torrent
if(BTSession->isQueueingEnabled() && h.is_queued()) { if(BTSession->isQueueingEnabled() && h.is_queued()) {
if(h.state() == torrent_status::checking_files || h.state() == torrent_status::queued_for_checking){ if(h.state() == torrent_status::checking_files || h.state() == torrent_status::queued_for_checking){
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/time.png"))), Qt::DecorationRole); finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/time.png"))), Qt::DecorationRole);
} else { } else {
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/queued.png"))), Qt::DecorationRole); finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/queued.png"))), Qt::DecorationRole);
} }
// Reset upload speed and seeds/leech // Reset upload speed and seeds/leech
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), 0.); finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), 0.);
finishedListModel->setData(finishedListModel->index(row, F_LEECH), "0"); finishedListModel->setData(finishedListModel->index(row, F_PEERS), "0");
setRowColor(row, QString::fromUtf8("grey")); setRowColor(row, QString::fromUtf8("grey"));
return; return;
} }
if(h.state() == torrent_status::checking_files || h.state() == torrent_status::queued_for_checking){ if(h.state() == torrent_status::checking_files || h.state() == torrent_status::queued_for_checking){
finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/time.png"))), Qt::DecorationRole); finishedListModel->setData(finishedListModel->index(row, F_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/time.png"))), Qt::DecorationRole);
setRowColor(row, QString::fromUtf8("grey")); setRowColor(row, QString::fromUtf8("grey"));
return; return;
} }
@@ -293,8 +318,11 @@ void FinishedTorrents::updateTorrent(QTorrentHandle h) {
if(!finishedList->isColumnHidden(F_UPSPEED)) { if(!finishedList->isColumnHidden(F_UPSPEED)) {
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)h.upload_payload_rate())); finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)h.upload_payload_rate()));
} }
if(!finishedList->isColumnHidden(F_LEECH)) { if(!finishedList->isColumnHidden(F_PEERS)) {
finishedListModel->setData(finishedListModel->index(row, F_LEECH), misc::toQString(h.num_peers() - h.num_seeds(), true)); finishedListModel->setData(finishedListModel->index(row, F_PEERS), misc::toQString(h.num_peers() - h.num_seeds(), true));
}
if(!finishedList->isColumnHidden(F_UPLOAD)) {
finishedListModel->setData(finishedListModel->index(row, F_UPLOAD), QVariant((double)h.all_time_upload()));
} }
if(!finishedList->isColumnHidden(F_RATIO)) { if(!finishedList->isColumnHidden(F_RATIO)) {
finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(misc::toQString(BTSession->getRealRatio(hash)))); finishedListModel->setData(finishedListModel->index(row, F_RATIO), QVariant(misc::toQString(BTSession->getRealRatio(hash))));
@@ -318,7 +346,7 @@ void FinishedTorrents::pauseTorrent(QString hash) {
return; return;
finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)0.0)); finishedListModel->setData(finishedListModel->index(row, F_UPSPEED), QVariant((double)0.0));
finishedListModel->setData(finishedListModel->index(row, F_NAME), QIcon(QString::fromUtf8(":/Icons/skin/paused.png")), Qt::DecorationRole); finishedListModel->setData(finishedListModel->index(row, F_NAME), QIcon(QString::fromUtf8(":/Icons/skin/paused.png")), Qt::DecorationRole);
finishedListModel->setData(finishedListModel->index(row, F_LEECH), QVariant(QString::fromUtf8("0"))); finishedListModel->setData(finishedListModel->index(row, F_PEERS), QVariant(QString::fromUtf8("0")));
setRowColor(row, QString::fromUtf8("red")); setRowColor(row, QString::fromUtf8("red"));
} }
@@ -374,6 +402,7 @@ void FinishedTorrents::forceRecheck(){
if(index.column() == F_NAME){ if(index.column() == F_NAME){
QString hash = finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString(); QString hash = finishedListModel->data(finishedListModel->index(index.row(), F_HASH)).toString();
QTorrentHandle h = BTSession->getTorrentHandle(hash); QTorrentHandle h = BTSession->getTorrentHandle(hash);
qDebug("Forcing recheck for torrent %s", hash.toLocal8Bit().data());
h.force_recheck(); h.force_recheck();
} }
} }
@@ -420,6 +449,7 @@ void FinishedTorrents::displayFinishedListMenu(const QPoint&){
myFinishedListMenu.addAction(actionOpen_destination_folder); myFinishedListMenu.addAction(actionOpen_destination_folder);
myFinishedListMenu.addAction(actionTorrent_Properties); myFinishedListMenu.addAction(actionTorrent_Properties);
myFinishedListMenu.addSeparator(); myFinishedListMenu.addSeparator();
myFinishedListMenu.addAction(actionCopy_magnet_link);
myFinishedListMenu.addAction(actionBuy_it); myFinishedListMenu.addAction(actionBuy_it);
// Call menu // Call menu
@@ -458,12 +488,12 @@ void FinishedTorrents::hideOrShowColumn(int index) {
if(nbVisibleColumns <= 1) return; if(nbVisibleColumns <= 1) return;
// User can hide the column, do it. // User can hide the column, do it.
finishedList->setColumnHidden(index, true); finishedList->setColumnHidden(index, true);
getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_cancel.png"))); getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_cancel.png")));
--nbVisibleColumns; --nbVisibleColumns;
} else { } else {
// User want to display the column // User want to display the column
finishedList->setColumnHidden(index, false); finishedList->setColumnHidden(index, false);
getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_ok.png"))); getActionHoSCol(index)->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_ok.png")));
++nbVisibleColumns; ++nbVisibleColumns;
} }
//resize all others non-hidden columns //resize all others non-hidden columns
@@ -486,8 +516,16 @@ void FinishedTorrents::hideOrShowColumnUpSpeed() {
hideOrShowColumn(F_UPSPEED); hideOrShowColumn(F_UPSPEED);
} }
void FinishedTorrents::hideOrShowColumnLeechers() { void FinishedTorrents::hideOrShowColumnSwarm() {
hideOrShowColumn(F_LEECH); hideOrShowColumn(F_SWARM);
}
void FinishedTorrents::hideOrShowColumnPeers() {
hideOrShowColumn(F_PEERS);
}
void FinishedTorrents::hideOrShowColumnUpload() {
hideOrShowColumn(F_UPLOAD);
} }
void FinishedTorrents::hideOrShowColumnRatio() { void FinishedTorrents::hideOrShowColumnRatio() {
@@ -513,9 +551,9 @@ bool FinishedTorrents::loadHiddenColumns() {
for(int i=0; i<finishedListModel->columnCount()-1; i++) { for(int i=0; i<finishedListModel->columnCount()-1; i++) {
if(loaded && ishidden_list.at(i) == "0") { if(loaded && ishidden_list.at(i) == "0") {
finishedList->setColumnHidden(i, true); finishedList->setColumnHidden(i, true);
getActionHoSCol(i)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_cancel.png"))); getActionHoSCol(i)->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_cancel.png")));
} else { } else {
getActionHoSCol(i)->setIcon(QIcon(QString::fromUtf8(":/Icons/button_ok.png"))); getActionHoSCol(i)->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/button_ok.png")));
} }
} }
return loaded; return loaded;
@@ -549,8 +587,14 @@ QAction* FinishedTorrents::getActionHoSCol(int index) {
case F_UPSPEED : case F_UPSPEED :
return actionHOSColUpSpeed; return actionHOSColUpSpeed;
break; break;
case F_LEECH : case F_SWARM :
return actionHOSColLeechers; return actionHOSColSwarm;
break;
case F_PEERS :
return actionHOSColPeers;
break;
case F_UPLOAD :
return actionHOSColUpload;
break; break;
case F_RATIO : case F_RATIO :
return actionHOSColRatio; return actionHOSColRatio;
@@ -574,6 +618,7 @@ void FinishedTorrents::toggleFinishedListSortOrder(int index) {
case F_SIZE: case F_SIZE:
case F_UPSPEED: case F_UPSPEED:
case F_RATIO: case F_RATIO:
case F_UPLOAD:
sortFinishedListFloat(index, sortOrder); sortFinishedListFloat(index, sortOrder);
break; break;
default: default:
@@ -598,6 +643,8 @@ void FinishedTorrents::sortFinishedList(int index, Qt::SortOrder sortOrder){
switch(index) { switch(index) {
case F_SIZE: case F_SIZE:
case F_UPSPEED: case F_UPSPEED:
case F_UPLOAD:
case F_RATIO:
sortFinishedListFloat(index, sortOrder); sortFinishedListFloat(index, sortOrder);
break; break;
default: default:

View File

@@ -79,7 +79,9 @@ class FinishedTorrents : public QWidget, public Ui::seeding {
void hideOrShowColumnName(); void hideOrShowColumnName();
void hideOrShowColumnSize(); void hideOrShowColumnSize();
void hideOrShowColumnUpSpeed(); void hideOrShowColumnUpSpeed();
void hideOrShowColumnLeechers(); void hideOrShowColumnSwarm();
void hideOrShowColumnPeers();
void hideOrShowColumnUpload();
void hideOrShowColumnRatio(); void hideOrShowColumnRatio();
void forceRecheck(); void forceRecheck();
@@ -91,6 +93,7 @@ class FinishedTorrents : public QWidget, public Ui::seeding {
void deleteTorrent(QString hash); void deleteTorrent(QString hash);
void showPropertiesFromHash(QString hash); void showPropertiesFromHash(QString hash);
void loadLastSortedColumn(); void loadLastSortedColumn();
void updateMetadata(QTorrentHandle &h);
signals: signals:
void torrentMovedFromFinishedList(QString); void torrentMovedFromFinishedList(QString);

File diff suppressed because it is too large Load Diff

View File

@@ -70,6 +70,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
// Bittorrent // Bittorrent
bittorrent *BTSession; bittorrent *BTSession;
QTimer *checkConnect; QTimer *checkConnect;
QTimer *scrapeTimer;
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers;
// GUI related // GUI related
QTabWidget *tabs; QTabWidget *tabs;
@@ -139,9 +140,10 @@ class GUI : public QMainWindow, private Ui::MainWindow{
void createTrayIcon(); void createTrayIcon();
void updateUnfinishedTorrentNumber(unsigned int nb); void updateUnfinishedTorrentNumber(unsigned int nb);
void updateFinishedTorrentNumber(unsigned int nb); void updateFinishedTorrentNumber(unsigned int nb);
void fullDiskError(QTorrentHandle& h) const; void fullDiskError(QTorrentHandle& h, QString msg) const;
void handleDownloadFromUrlFailure(QString, QString) const; void handleDownloadFromUrlFailure(QString, QString) const;
void createSystrayDelayed(); void createSystrayDelayed();
void setPaused(QTorrentHandle &h) const;
// Keyboard shortcuts // Keyboard shortcuts
void createKeyboardShortcuts(); void createKeyboardShortcuts();
void displayDownTab() const; void displayDownTab() const;
@@ -177,6 +179,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
bool initWebUi(QString username, QString password, int port); bool initWebUi(QString username, QString password, int port);
void on_actionIncreasePriority_triggered(); void on_actionIncreasePriority_triggered();
void on_actionDecreasePriority_triggered(); void on_actionDecreasePriority_triggered();
void scrapeTrackers();
// Options slots // Options slots
void on_actionOptions_triggered(); void on_actionOptions_triggered();
void OptionsSaved(bool deleteOptions); void OptionsSaved(bool deleteOptions);
@@ -189,6 +192,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
void setTabText(int index, QString text) const; void setTabText(int index, QString text) const;
void openDestinationFolder() const; void openDestinationFolder() const;
void goBuyPage() const; void goBuyPage() const;
void copyMagnetURI() const;
void updateRatio(); void updateRatio();
protected: protected:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1005 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 821 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 998 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 846 B

BIN
src/Icons/magnet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 532 B

BIN
src/Icons/oxygen/browse.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
src/Icons/oxygen/bug.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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