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

Compare commits

...

126 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
124 changed files with 12082 additions and 105764 deletions

View File

@@ -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)

View File

@@ -1,4 +1,92 @@
* Unreleased - Christophe Dumez <chris@qbittorrent.org> - v2.4.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

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;
}
};

View File

@@ -42,6 +42,7 @@
#include <QClipboard>
#include <QCloseEvent>
#include <QShortcut>
#include <QScrollBar>
#include "GUI.h"
#include "transferlistwidget.h"
@@ -71,6 +72,7 @@
void qt_mac_set_dock_menu(QMenu *menu);
#endif
#include "lineedit.h"
#include "sessionapplication.h"
using namespace libtorrent;
@@ -88,6 +90,8 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), for
ui_locked = Preferences::isUILocked();
setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent v0.x").arg(QString::fromUtf8(VERSION)));
displaySpeedInTitle = Preferences::speedInTitleBar();
// Clean exit on log out
connect(static_cast<SessionApplication*>(qApp), SIGNAL(sessionIsShuttingDown()), this, SLOT(deleteBTSession()));
// Setting icons
this->setWindowIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent32.png")));
actionOpen->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/open.png")));
@@ -110,7 +114,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), for
actionSet_global_download_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/download.png")));
actionDocumentation->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/qb_question.png")));
actionLock_qBittorrent->setIcon(QIcon(QString::fromUtf8(":/Icons/oxygen/encrypted32.png")));
QMenu *lockMenu = new QMenu();
lockMenu = new QMenu();
QAction *defineUiLockPasswdAct = lockMenu->addAction(tr("Set the password..."));
connect(defineUiLockPasswdAct, SIGNAL(triggered()), this, SLOT(defineUILockPassword()));
actionLock_qBittorrent->setMenu(lockMenu);
@@ -206,13 +210,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), for
properties->readSettings();
// Limit status filters list height
int cur_height = 80;
do {
transferListFilters->getStatusFilters()->setFixedHeight(cur_height);
cur_height += 10;
transferListFilters->getStatusFilters()->scrollToBottom();
}while(transferListFilters->getStatusFilters()->verticalScrollBar()->sliderPosition() > 0);
transferListFilters->getStatusFilters()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
transferListFilters->getStatusFilters()->updateHeight();
if(ui_locked) {
hide();
@@ -248,6 +246,16 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), for
#endif
}
void GUI::deleteBTSession() {
guiUpdater->stop();
status_bar->stopTimer();
if(BTSession) {
delete BTSession;
BTSession = 0;
}
QTimer::singleShot(0, this, SLOT(close()));
}
// Destructor
GUI::~GUI() {
qDebug("GUI destruction");
@@ -258,7 +266,9 @@ GUI::~GUI() {
#endif
// Async deletion of Bittorrent session as early as possible
// in order to speed up exit
session_proxy sp = BTSession->asyncDeletion();
session_proxy sp;
if(BTSession)
sp = BTSession->asyncDeletion();
// Some saving
properties->saveSettings();
disconnect(tabs, SIGNAL(currentChanged(int)), this, SLOT(tab_changed(int)));
@@ -269,6 +279,7 @@ GUI::~GUI() {
delete search_filter;
delete transferList;
delete guiUpdater;
delete lockMenu;
if(createTorrentDlg)
delete createTorrentDlg;
if(console)
@@ -662,7 +673,7 @@ void GUI::closeEvent(QCloseEvent *e) {
e->accept();
return;
}
if(settings.value(QString::fromUtf8("Preferences/General/ExitConfirm"), true).toBool() && BTSession->hasActiveTorrents()) {
if(settings.value(QString::fromUtf8("Preferences/General/ExitConfirm"), true).toBool() && BTSession && BTSession->hasActiveTorrents()) {
if(e->spontaneous() || force_exit) {
if(!isVisible())
show();
@@ -947,7 +958,7 @@ void GUI::loadPreferences(bool configure_session) {
properties->getPeerList()->setAlternatingRowColors(Preferences::useAlternatingRowColors());
// Queueing System
if(Preferences::isQueueingSystemEnabled()) {
if(!configure_session || !BTSession->isQueueingEnabled()) {
if(!actionDecreasePriority->isVisible()) {
transferList->hidePriorityColumn(false);
actionDecreasePriority->setVisible(true);
actionIncreasePriority->setVisible(true);
@@ -956,7 +967,7 @@ void GUI::loadPreferences(bool configure_session) {
toolBar->layout()->setSpacing(7);
}
} else {
if(BTSession->isQueueingEnabled()) {
if(actionDecreasePriority->isVisible()) {
transferList->hidePriorityColumn(true);
actionDecreasePriority->setVisible(false);
actionIncreasePriority->setVisible(false);
@@ -1024,7 +1035,12 @@ void GUI::showNotificationBaloon(QString title, QString msg) const {
#ifdef WITH_LIBNOTIFY
if (notify_init ("summary-body")) {
NotifyNotification* notification;
notification = notify_notification_new (qPrintable(title), qPrintable(msg), "qbittorrent", 0);
notification = notify_notification_new (qPrintable(title), qPrintable(msg), "qbittorrent"
#if !defined(NOTIFY_VERSION_MINOR) || (NOTIFY_VERSION_MAJOR == 0 && NOTIFY_VERSION_MINOR < 7)
, 0
#endif
);
gboolean success = notify_notification_show (notification, NULL);
g_object_unref(G_OBJECT(notification));
notify_uninit ();
@@ -1195,3 +1211,8 @@ void GUI::on_actionDownload_from_URL_triggered() {
}
}
void GUI::on_actionDonate_money_triggered()
{
QDesktopServices::openUrl(QUrl("http://sourceforge.net/donate/index.php?group_id=163414"));
}

View File

@@ -80,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
@@ -170,6 +171,7 @@ private:
QAction *prioSeparator2;
QSplitter *hSplitter;
QSplitter *vSplitter;
QMenu *lockMenu;
// Search
QPointer<SearchEngine> searchEngine;
// RSS
@@ -181,6 +183,7 @@ private slots:
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

View File

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

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.4.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

@@ -191,7 +191,8 @@ void createtorrent::on_createButton_clicked(){
QString destination = QFileDialog::getSaveFileName(this, tr("Select destination torrent file"), last_path, tr("Torrent Files")+QString::fromUtf8(" (*.torrent)"));
if(!destination.isEmpty()) {
settings.setValue("CreateTorrent/last_save_path", misc::removeLastPathPart(destination));
destination += QString::fromUtf8(".torrent");
if(!destination.toUpper().endsWith(".TORRENT"))
destination += QString::fromUtf8(".torrent");
} else {
return;
}
@@ -219,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);
@@ -284,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;
@@ -310,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());

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,21 +206,74 @@ 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 addTorrentsFromDir(const QDir &dir, QStringList &torrents) {
const QStringList files = dir.entryList(filters, QDir::Files, QDir::Unsorted);
foreach(const QString &file, files) {
#if defined(Q_WS_WIN) || defined(Q_OS_OS2)
torrents << dir.absoluteFilePath(file).replace("/", "\\");
#else
torrents << dir.absoluteFilePath(file);
#endif
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(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();
}
};
#endif // FILESYSTEMWATCHER_H

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

@@ -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

View File

@@ -161,6 +161,7 @@
<file>Icons/oxygen/encrypted.png</file>
<file>Icons/oxygen/folder-remote16.png</file>
<file>Icons/oxygen/go-top.png</file>
<file>Icons/oxygen/emblem-favorite.png</file>
<file>Icons/oxygen/edit_clear.png</file>
<file>Icons/oxygen/bug.png</file>
<file>Icons/oxygen/gear.png</file>

View File

@@ -132,6 +132,7 @@ namespace json {
tmp += c;
}
}
if(!tmp.isEmpty()) couples << tmp;
foreach(QString couple, couples) {
QStringList parts = couple.split(":");
if(parts.size() != 2) continue;

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

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