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

Compare commits

..

162 Commits

Author SHA1 Message Date
Christophe Dumez
89906d16d5 Tagged today's releases 2010-10-24 09:55:14 +00:00
Christophe Dumez
a83fbf5a98 Peers can now be sorted by country 2010-10-24 09:32:28 +00:00
Christophe Dumez
328e4fd860 Better fix for save path editing issues in torrent addition dialog 2010-10-24 08:28:35 +00:00
Christophe Dumez
b98d0282ce BUGFIX: Fix issue when altering files priorities of a seeding torrent (closes #665799) 2010-10-24 08:06:56 +00:00
Christophe Dumez
166dad51d5 FEATURE: qBittorrent can update itself from Sourceforge (Windows/Mac OS X only) 2010-10-23 21:46:05 +00:00
Christophe Dumez
e3ccea3b17 Fix a progress rounding issue 2010-10-23 19:12:00 +00:00
Christophe Dumez
8a64a6441e Fix status list widget height issue on style change 2010-10-23 16:58:06 +00:00
Christophe Dumez
c34000ab17 Update language files 2010-10-23 16:25:05 +00:00
Christophe Dumez
90dd337069 FEATURE: Added a torrent import assistant to seed or keep downloading outside torrents 2010-10-23 16:21:56 +00:00
Christophe Dumez
31e4b8dc31 Fix nox compilation 2010-10-22 20:17:47 +00:00
Christophe Dumez
5145abe5c8 Update search engine update URL 2010-10-22 20:14:51 +00:00
Christophe Dumez
7ec842929a Moved search code into a subfolder 2010-10-22 20:13:22 +00:00
Christophe Dumez
39778baaf5 Cleaned up the properties tab bar code 2010-10-22 18:59:18 +00:00
Christophe Dumez
0a510db95e Started properties refactoring 2010-10-22 17:49:55 +00:00
Christophe Dumez
c73243b0d2 Remember the current property tab on startup 2010-10-22 17:30:17 +00:00
Christophe Dumez
46b75b760f Auto-disable to auto-shutdown feature 2010-10-21 16:54:10 +00:00
Christophe Dumez
fc3ae51122 Fix isohunt and vertor search plugins 2010-10-20 20:27:32 +00:00
Christophe Dumez
05d9f28f8b Fix torrentreactor search plugin 2010-10-20 19:50:28 +00:00
Christophe Dumez
b1b2a2c775 Fix issues when searching for something with {*} in the name 2010-10-20 19:42:12 +00:00
Christophe Dumez
105de3161a Improved hostname resolution code 2010-10-20 17:19:18 +00:00
Christophe Dumez
354d968a94 Fix possible crash on manual peer ban 2010-10-20 16:15:15 +00:00
Christophe Dumez
f617b74bac Performance optimization and code clean up 2010-10-19 20:00:50 +00:00
Christophe Dumez
3664134e02 Fix possible transfer list refresh issue 2010-10-19 16:45:23 +00:00
Christophe Dumez
1875846326 Improved "Set Location" and "Change save path" dialogs 2010-10-18 19:23:39 +00:00
Christophe Dumez
64f0adc813 Fix issues when marking a file as "not downloaded" causes the torrent to complete 2010-10-18 18:20:44 +00:00
Christophe Dumez
a9d4b38bd3 Remove uneeded files on torrent deletion
Fix encoding error in file renaming
2010-10-18 17:44:37 +00:00
Christophe Dumez
44fa7388d5 Fix display of priority column when the queueing system is enabled 2010-10-18 17:06:11 +00:00
Christophe Dumez
24df142b02 Fix to German translation 2010-10-18 16:25:23 +00:00
Christophe Dumez
958b73f2cb Updated language files 2010-10-18 16:21:38 +00:00
Christophe Dumez
1962898e24 Bump to v2.5.0 beta1 2010-10-17 15:21:52 +00:00
Christophe Dumez
56b88661bc BUGFIX: Fix moving of a torrent to an unexisting directory 2010-10-17 15:17:39 +00:00
Christophe Dumez
5b47a762ac Fix crash on torrent addition caused by last commit 2010-10-17 15:00:31 +00:00
Christophe Dumez
a5c6bcceea Fix detection of path at final destination when temp directory is enabled (regression) 2010-10-17 14:50:38 +00:00
Christophe Dumez
290932e128 Big code clean up 2010-10-17 14:46:01 +00:00
Christophe Dumez
f53fe96191 Start to clean up Bittorrent class 2010-10-17 12:18:34 +00:00
Christophe Dumez
fc8a822dac Fix compilation error with libtorrent v0.14 2010-10-17 11:45:53 +00:00
Christophe Dumez
b7a3ae2b4c Fix issue where the properties panel data would not match the currently selected torrent 2010-10-17 09:09:40 +00:00
Christophe Dumez
26d19b33e6 Improvement to last commit 2010-10-17 09:00:06 +00:00
Christophe Dumez
4ba9dc1fed Fix seeding after torrent creation 2010-10-17 08:41:45 +00:00
Christophe Dumez
2c3f99692d Further restructuring of the RSS code 2010-10-16 20:09:15 +00:00
Christophe Dumez
a27d2dcac2 Big restructuring of the RSS code
Dropped Qt 4.4 support
2010-10-16 17:39:03 +00:00
Christophe Dumez
f7cb6a7da5 Forgot to commit this file 2010-10-16 16:41:15 +00:00
Christophe Dumez
6855edf649 Disabled some checking 2010-10-16 15:30:44 +00:00
Christophe Dumez
aff27558dd FEATURE: qBittorrent can now act as a tracker 2010-10-15 21:55:56 +00:00
Christophe Dumez
f6172f8c77 Code optimization 2010-10-12 16:06:53 +00:00
Christophe Dumez
1562088bc8 Some more code optimization 2010-10-11 21:28:00 +00:00
Christophe Dumez
67973515d5 Performance improvement for piece availability and downloaded pieces widgets 2010-10-11 21:06:53 +00:00
Christophe Dumez
7867cf68f9 Fix possible variable overflow 2010-10-11 19:50:32 +00:00
Christophe Dumez
1eb26bd78b Greatly improved peer host name resolution with caching 2010-10-10 21:03:45 +00:00
Christophe Dumez
a8d635f7ac Fix URL Seed support 2010-10-10 15:39:08 +00:00
Christophe Dumez
289ad37f06 Further RSS code cleanup 2010-10-10 11:03:09 +00:00
Christophe Dumez
94de42bf2e Keep reorganizing code (RSS) 2010-10-10 10:37:07 +00:00
Christophe Dumez
ca9f40eb7f COSMETIC: Replaced message box by on-screen notification for download errors 2010-10-09 15:40:24 +00:00
Christophe Dumez
4013f9fefd Enable systray icon on Mac since it is supported by Qt 2010-10-09 15:36:39 +00:00
Christophe Dumez
ccf0002c0f FEATURE: Added a transfer list column to display the current tracker 2010-10-09 15:23:51 +00:00
Christophe Dumez
86fb4a323a FEATURE: Added feature to shutdown qbittorrent on torrents completion 2010-10-09 14:57:41 +00:00
Christophe Dumez
38c56a2b5f Some more code reorganizing 2010-10-09 14:32:00 +00:00
Christophe Dumez
2d1286158a Updated language files 2010-10-09 14:11:14 +00:00
Christophe Dumez
6e7309316c Started code reorganizing (Moved libtorrent specific files and webui files to subfolders) 2010-10-09 14:06:35 +00:00
Christophe Dumez
593fdad426 Fix feature to keep incomplete torrents in a separate folder 2010-10-09 08:56:07 +00:00
Christophe Dumez
933a831eb1 Forgot to commit this file 2010-10-08 17:50:47 +00:00
Christophe Dumez
7c55082464 Fix about dialog cosmetic issues 2010-10-08 17:47:34 +00:00
Ishan Arora
fa3e70316e moved windows path configs from src/src.pro to winconf.pri 2010-10-05 01:11:46 +00:00
Christophe Dumez
c9c2ab320d Remember completion date correctly 2010-10-02 12:52:06 +00:00
Christophe Dumez
53d9817d8a Code cleanup 2010-10-02 12:11:55 +00:00
Christophe Dumez
828ecb6b3c Fix to last commit 2010-10-01 20:51:08 +00:00
Christophe Dumez
af61ed7c72 Fix possible search plugin update issue 2010-10-01 20:17:04 +00:00
Christophe Dumez
1e86ea8c0a Clean program exit on system shutdown/logout 2010-10-01 20:03:27 +00:00
Christophe Dumez
129bfac549 Fix typo (baloon -> ballon) 2010-09-30 20:30:48 +00:00
Christophe Dumez
4815bb9f11 Fix wrong mapping to source model 2010-09-28 16:53:58 +00:00
Christophe Dumez
81eb8b1341 Fix tiny memory leak 2010-09-27 20:42:00 +00:00
Christophe Dumez
1596dc5206 TorrentDownloads plugin performance improvement 2010-09-27 19:47:17 +00:00
Christophe Dumez
76a22fabcd Better fix for encoding issue 2010-09-27 17:36:10 +00:00
Christophe Dumez
3d7bf26f85 Fix possible crash when changing the save path in torrent addition dialog 2010-09-27 17:33:43 +00:00
Christophe Dumez
69661406a0 Fix encoding problem in command line parameter processing 2010-09-27 17:17:22 +00:00
Christophe Dumez
74fba0fb7e Really fix manual editing of save path in torrent addition dialog 2010-09-26 17:08:16 +00:00
Christophe Dumez
d56fc9fcd4 Fix torrent addition dialog bug introduced in v2.4.1 2010-09-26 16:50:56 +00:00
Christophe Dumez
124dcee7b8 Fix deprecation warning 2010-09-26 11:15:22 +00:00
Christophe Dumez
b5b06ce36d Fix to last commit 2010-09-25 19:40:31 +00:00
Christophe Dumez
ef01088411 Limit torrent addition dialog width 2010-09-25 19:26:45 +00:00
Christophe Dumez
bc87c1c409 Fix saving to drive root on Windows 2010-09-25 17:31:06 +00:00
Christophe Dumez
bbe4328c06 Fix progress bar style on Windows 2010-09-25 16:51:19 +00:00
Christophe Dumez
d557410156 Fix save path encoding problem on Windows 2010-09-25 16:01:07 +00:00
Christophe Dumez
a150e24ce4 Update version file 2010-09-25 13:08:07 +00:00
Christophe Dumez
261d02863c - Use AND operator for torrentdownloads searches 2010-09-25 13:07:31 +00:00
Christophe Dumez
c64f02c9bf Fix locale change from the Web UI 2010-09-25 12:42:19 +00:00
Christophe Dumez
790db14b51 Remove obsolete strings from language files 2010-09-25 12:11:26 +00:00
Christophe Dumez
2500ac2cb7 Fix Web UI for spanish users 2010-09-25 11:44:13 +00:00
Christophe Dumez
cd8a7cf0e0 Fix problem in spanish translation that would break web UI 2010-09-25 11:41:37 +00:00
Christophe Dumez
b3be32126d Added support for | (OR) operator in RSS feed downloader 2010-09-25 11:29:45 +00:00
Christophe Dumez
643bc5516c Fix "Temp path" saving 2010-09-25 11:02:40 +00:00
Christophe Dumez
eb94c59892 TorrentCreator: add .torrent extension only when missing 2010-09-25 10:46:29 +00:00
Christophe Dumez
72f4c81f4c Fix download in scan dir persistence 2010-09-25 10:39:08 +00:00
Christophe Dumez
9543bd63f9 Fix torrent addition dialog path editing 2010-09-25 09:11:06 +00:00
Christophe Dumez
7ae7a71782 Higher maximum download speed limit 2010-09-25 07:52:29 +00:00
Christophe Dumez
8994ca6dd5 Detect OGV as previewable format 2010-09-25 07:40:13 +00:00
Christophe Dumez
354dceeaf0 Fixes to German translation 2010-09-19 08:39:26 +00:00
Christophe Dumez
50c7225c1e Updated Spanish and Catalan translations 2010-08-27 07:43:15 +00:00
Christophe Dumez
44d945b5c0 Updated Changelog 2010-08-26 17:42:23 +00:00
Christophe Dumez
4ff6104601 Updated Arabic translation 2010-08-25 06:33:29 +00:00
Christophe Dumez
80760dd7af Trunk is now v2.5.0alpha 2010-08-24 18:28:17 +00:00
Christophe Dumez
7835a13573 Updated Russian translation 2010-08-23 19:53:03 +00:00
Christophe Dumez
9b26fd50b2 Fix Chinese translation 2010-08-23 19:50:48 +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
254 changed files with 42460 additions and 119254 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

View File

@@ -1,3 +1,21 @@
* Unreleased - Christophe Dumez <chris@qbittorrent.org> - v2.5.0
- FEATURE: qBittorrent can now act as a tracker
- FEATURE: Added feature to shutdown qbittorrent on torrents completion
- FEATURE: Added a torrent import assistant to seed or keep downloading outside torrents
- FEATURE: qBittorrent can update itself from Sourceforge (Windows/Mac OS X only)
- FEATURE: Added a transfer list column to display the current tracker
- COSMETIC: Replaced message box by on-screen notification for download errors
* 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

View File

@@ -10,7 +10,7 @@ qBittorrent - A BitTorrent client in C++ / Qt4
will install and execute qBittorrent hopefully without any problems.
Dependencies:
- Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
- Qt >= 4.5.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
- pkg-config executable

26
configure vendored
View File

@@ -325,7 +325,7 @@ cat >$1/modules.cpp <<EOT
#line 1 "qt4.qcm"
/*
-----BEGIN QCMOD-----
name: Qt >= 4.4
name: Qt >= 4.5
arg: disable-gui, Disable qBittorrent Graphical user interface for headless running
-----END QCMOD-----
*/
@@ -333,14 +333,14 @@ class qc_qt4 : public ConfObj
{
public:
qc_qt4(Conf *c) : ConfObj(c) {}
QString name() const { return "Qt >= 4.4"; }
QString shortname() const { return "Qt 4.4"; }
QString name() const { return "Qt >= 4.5"; }
QString shortname() const { return "Qt 4.5"; }
bool exec()
{
if(!conf->getenv("QC_DISABLE_GUI").isEmpty()) {
conf->addDefine("DISABLE_GUI");
}
return(QT_VERSION >= 0x040400);
return(QT_VERSION >= 0x040500);
}
};
#line 1 "pkg-config.qcm"
@@ -616,22 +616,22 @@ arg: with-qtsingleapplication=[system|shipped], Use the shipped qtsingleapplicat
class qc_qtsingleapplication : public ConfObj
{
public:
qc_qtsingleapplication(Conf *c) : ConfObj(c) {}
QString name() const { return "qtsingleapplication library"; }
QString shortname() const { return "qtsingleapplication"; }
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");
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;
}
}
return true;
}
};
EOT

View File

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

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

@@ -37,7 +37,7 @@
#include "ui_mainwindow.h"
#include "qtorrenthandle.h"
class Bittorrent;
class QBtSession;
class QTimer;
class downloadFromURL;
class SearchEngine;
@@ -54,9 +54,11 @@ class PropertiesWidget;
class StatusBar;
class consoleDlg;
class about;
class createtorrent;
class TorrentCreatorDlg;
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;
@@ -121,6 +129,10 @@ protected slots:
void optionsSaved();
// HTTP slots
void on_actionDownload_from_URL_triggered();
#if defined(Q_WS_WIN) || defined(Q_WS_MAC)
void handleUpdateCheckFinished(bool update_available, QString new_version);
void handleUpdateInstalled(QString error_msg);
#endif
protected:
void closeEvent(QCloseEvent *);
@@ -130,8 +142,9 @@ protected:
void displaySearchTab(bool enable);
private:
QFileSystemWatcher *executable_watcher;
// Bittorrent
Bittorrent *BTSession;
QBtSession *BTSession;
QList<QPair<QTorrentHandle,QString> > unauthenticated_trackers; // Still needed?
// GUI related
QTimer *guiUpdater;
@@ -140,7 +153,7 @@ private:
QPointer<options_imp> options;
QPointer<consoleDlg> console;
QPointer<about> aboutDlg;
QPointer<createtorrent> createTorrentDlg;
QPointer<TorrentCreatorDlg> createTorrentDlg;
QPointer<downloadFromURL> downloadFromURLDialog;
QPointer<QSystemTrayIcon> systrayIcon;
QPointer<QTimer> systrayCreator;
@@ -150,6 +163,8 @@ private:
PropertiesWidget *properties;
bool displaySpeedInTitle;
bool force_exit;
bool ui_locked;
LineEdit *search_filter;
// Keyboard shortcuts
QShortcut *switchSearchShortcut;
QShortcut *switchSearchShortcut2;
@@ -160,6 +175,7 @@ private:
QAction *prioSeparator2;
QSplitter *hSplitter;
QSplitter *vSplitter;
QMenu *lockMenu;
// Search
QPointer<SearchEngine> searchEngine;
// RSS
@@ -170,6 +186,9 @@ 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_actionShutdown_qBittorrent_when_downloads_complete_triggered();
void on_action_Import_Torrent_triggered();
};
#endif

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.5.0
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: 79 KiB

View File

@@ -47,7 +47,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>2.3.0</string>
<string>2.5.0</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

View File

@@ -11,15 +11,15 @@
#include "preferences.h"
enum AdvSettingsCols {PROPERTY, VALUE};
enum AdvSettingsRows {DISK_CACHE, OUTGOING_PORT_MIN, OUTGOING_PORT_MAX, IGNORE_LIMIT_LAN, COUNT_OVERHEAD, RECHECK_COMPLETED, LIST_REFRESH, RESOLVE_COUNTRIES, RESOLVE_HOSTS, MAX_HALF_OPEN, SUPER_SEEDING, NETWORK_IFACE, PROGRAM_NOTIFICATIONS };
#define ROW_COUNT 13
enum AdvSettingsRows {DISK_CACHE, OUTGOING_PORT_MIN, OUTGOING_PORT_MAX, IGNORE_LIMIT_LAN, COUNT_OVERHEAD, RECHECK_COMPLETED, LIST_REFRESH, RESOLVE_COUNTRIES, RESOLVE_HOSTS, MAX_HALF_OPEN, SUPER_SEEDING, NETWORK_IFACE, PROGRAM_NOTIFICATIONS, TRACKER_STATUS, TRACKER_PORT };
#define ROW_COUNT 15
class AdvancedSettings: public QTableWidget {
Q_OBJECT
private:
QSpinBox *spin_cache, *outgoing_ports_min, *outgoing_ports_max, *spin_list_refresh, *spin_maxhalfopen;
QCheckBox *cb_ignore_limits_lan, *cb_count_overhead, *cb_recheck_completed, *cb_resolve_countries, *cb_resolve_hosts, *cb_super_seeding, *cb_program_notifications;
QSpinBox *spin_cache, *outgoing_ports_min, *outgoing_ports_max, *spin_list_refresh, *spin_maxhalfopen, *spin_tracker_port;
QCheckBox *cb_ignore_limits_lan, *cb_count_overhead, *cb_recheck_completed, *cb_resolve_countries, *cb_resolve_hosts, *cb_super_seeding, *cb_program_notifications, *cb_tracker_status;
QComboBox *combo_iface;
public:
@@ -53,6 +53,8 @@ public:
delete cb_super_seeding;
delete combo_iface;
delete cb_program_notifications;
delete spin_tracker_port;
delete cb_tracker_status;
}
public slots:
@@ -88,6 +90,9 @@ public slots:
}
// Program notification
Preferences::useProgramNotification(cb_program_notifications->isChecked());
// Tracker
Preferences::setTrackerEnabled(cb_tracker_status->isChecked());
Preferences::setTrackerPort(spin_tracker_port->value());
}
protected slots:
@@ -190,11 +195,25 @@ protected slots:
connect(combo_iface, SIGNAL(currentIndexChanged(int)), this, SLOT(emitSettingsChanged()));
setCellWidget(NETWORK_IFACE, VALUE, combo_iface);
// Program notifications
setItem(PROGRAM_NOTIFICATIONS, PROPERTY, new QTableWidgetItem(tr("Display program notification baloons")));
setItem(PROGRAM_NOTIFICATIONS, PROPERTY, new QTableWidgetItem(tr("Display program notification balloons")));
cb_program_notifications = new QCheckBox();
connect(cb_program_notifications, SIGNAL(toggled(bool)), this, SLOT(emitSettingsChanged()));
cb_program_notifications->setChecked(Preferences::useProgramNotification());
setCellWidget(PROGRAM_NOTIFICATIONS, VALUE, cb_program_notifications);
// Tracker State
setItem(TRACKER_STATUS, PROPERTY, new QTableWidgetItem(tr("Enable embedded tracker")));
cb_tracker_status = new QCheckBox();
connect(cb_tracker_status, SIGNAL(toggled(bool)), this, SLOT(emitSettingsChanged()));
cb_tracker_status->setChecked(Preferences::isTrackerEnabled());
setCellWidget(TRACKER_STATUS, VALUE, cb_tracker_status);
// Tracker port
setItem(TRACKER_PORT, PROPERTY, new QTableWidgetItem(tr("Embedded tracker port")));
spin_tracker_port = new QSpinBox();
connect(spin_tracker_port, SIGNAL(valueChanged(int)), this, SLOT(emitSettingsChanged()));
spin_tracker_port->setMinimum(1);
spin_tracker_port->setMaximum(65535);
spin_tracker_port->setValue(Preferences::getTrackerPort());
setCellWidget(TRACKER_PORT, VALUE, spin_tracker_port);
}
void emitSettingsChanged() {

View File

@@ -31,7 +31,7 @@
#ifndef CONSOLE_H
#define CONSOLE_H
#include "bittorrent.h"
#include "qbtsession.h"
#include "ui_console.h"
using namespace libtorrent;
@@ -40,10 +40,10 @@ class consoleDlg : public QDialog, private Ui_ConsoleDlg{
Q_OBJECT
private:
Bittorrent *BTSession;
QBtSession *BTSession;
public:
consoleDlg(QWidget *parent, Bittorrent* _BTSession) : QDialog(parent) {
consoleDlg(QWidget *parent, QBtSession* _BTSession) : QDialog(parent) {
setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
setModal(true);

View File

@@ -39,8 +39,6 @@
#include "preferences.h"
#include "qinisettings.h"
enum ProxyType {HTTP=1, SOCKS5=2, HTTP_PW=3, SOCKS5_PW=4, SOCKS4=5};
/** Download Thread **/
downloadThread::downloadThread(QObject* parent) : QObject(parent) {
@@ -180,7 +178,7 @@ void downloadThread::applyProxySettings() {
qDebug("Using proxy: %s", qPrintable(IP));
proxy.setPort(port.toUShort());
// Default proxy type is HTTP, we must change if it is SOCKS5
if(intValue == SOCKS5 || intValue == SOCKS5_PW) {
if(intValue == Proxy::SOCKS5 || intValue == Proxy::SOCKS5_PW) {
qDebug("Proxy is SOCKS5, not HTTP");
proxy.setType(QNetworkProxy::Socks5Proxy);
} else {

View File

@@ -1,221 +0,0 @@
#ifndef FEEDLIST_H
#define FEEDLIST_H
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QDropEvent>
#include <QDragMoveEvent>
#include <QStringList>
#include <QHash>
#include <QUrl>
#include "rss.h"
class FeedList: public QTreeWidget {
Q_OBJECT
private:
RssManager *rssmanager;
QHash<QTreeWidgetItem*, RssFile*> mapping;
QHash<QString, QTreeWidgetItem*> feeds_items;
QTreeWidgetItem* current_feed;
QTreeWidgetItem *unread_item;
public:
FeedList(QWidget *parent, RssManager *rssmanager): QTreeWidget(parent), rssmanager(rssmanager) {
setContextMenuPolicy(Qt::CustomContextMenu);
setDragDropMode(QAbstractItemView::InternalMove);
setSelectionMode(QAbstractItemView::ExtendedSelection);
setColumnCount(1);
QTreeWidgetItem *___qtreewidgetitem = headerItem();
___qtreewidgetitem->setText(0, QApplication::translate("RSS", "RSS feeds", 0, QApplication::UnicodeUTF8));
unread_item = new QTreeWidgetItem(this);
unread_item->setText(0, tr("Unread") + QString::fromUtf8(" (") + QString::number(rssmanager->getNbUnRead(), 10)+ QString(")"));
unread_item->setData(0,Qt::DecorationRole, QVariant(QIcon(":/Icons/oxygen/mail-folder-inbox.png")));
itemAdded(unread_item, rssmanager);
connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(updateCurrentFeed(QTreeWidgetItem*)));
setCurrentItem(unread_item);
}
~FeedList() {
disconnect(this, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(updateCurrentFeed(QTreeWidgetItem*)));
delete unread_item;
}
void itemAdded(QTreeWidgetItem *item, RssFile* file) {
mapping[item] = file;
if(file->getType() == RssFile::STREAM) {
feeds_items[file->getID()] = item;
}
}
void itemAboutToBeRemoved(QTreeWidgetItem *item) {
RssFile* file = mapping.take(item);
if(file->getType() == RssFile::STREAM) {
feeds_items.remove(file->getID());
} else {
QList<RssStream*> feeds = ((RssFolder*)file)->getAllFeeds();
foreach(RssStream* feed, feeds) {
feeds_items.remove(feed->getID());
}
}
}
bool hasFeed(QString url) const {
return feeds_items.contains(QUrl(url).toString());
}
QList<QTreeWidgetItem*> getAllFeedItems() const {
return feeds_items.values();
}
QTreeWidgetItem* getUnreadItem() const {
return unread_item;
}
QStringList getItemPath(QTreeWidgetItem* item) const {
QStringList path;
if(item) {
if(item->parent())
path << getItemPath(item->parent());
path.append(getRSSItem(item)->getID());
}
return path;
}
QList<QTreeWidgetItem*> getAllOpenFolders(QTreeWidgetItem *parent=0) const {
QList<QTreeWidgetItem*> open_folders;
int nbChildren;
if(parent)
nbChildren = parent->childCount();
else
nbChildren = topLevelItemCount();
for(int i=0; i<nbChildren; ++i) {
QTreeWidgetItem *item;
if(parent)
item = parent->child(i);
else
item = topLevelItem(i);
if(getItemType(item) == RssFile::FOLDER && item->isExpanded()) {
QList<QTreeWidgetItem*> open_subfolders = getAllOpenFolders(item);
if(!open_subfolders.empty()) {
open_folders << open_subfolders;
} else {
open_folders << item;
}
}
}
return open_folders;
}
QList<QTreeWidgetItem*> getAllFeedItems(QTreeWidgetItem* folder) {
QList<QTreeWidgetItem*> feeds;
int nbChildren = folder->childCount();
for(int i=0; i<nbChildren; ++i) {
QTreeWidgetItem *item = folder->child(i);
if(getItemType(item) == RssFile::STREAM) {
feeds << item;
} else {
feeds << getAllFeedItems(item);
}
}
return feeds;
}
RssFile* getRSSItem(QTreeWidgetItem *item) const {
return mapping.value(item, 0);
}
RssFile::FileType getItemType(QTreeWidgetItem *item) const {
return mapping.value(item)->getType();
}
QString getItemID(QTreeWidgetItem *item) const {
return mapping.value(item)->getID();
}
QTreeWidgetItem* getTreeItemFromUrl(QString url) const{
return feeds_items.value(url, 0);
}
RssStream* getRSSItemFromUrl(QString url) const {
return (RssStream*)getRSSItem(getTreeItemFromUrl(url));
}
QTreeWidgetItem* currentItem() const {
return current_feed;
}
QTreeWidgetItem* currentFeed() const {
return current_feed;
}
signals:
void foldersAltered(QList<QTreeWidgetItem*> folders);
void overwriteAttempt(QString filename);
protected slots:
void updateCurrentFeed(QTreeWidgetItem* new_item) {
if(!new_item) return;
if(!mapping.contains(new_item)) return;
if((getItemType(new_item) == RssFile::STREAM) || new_item == unread_item)
current_feed = new_item;
}
protected:
void dragMoveEvent(QDragMoveEvent * event) {
QTreeWidgetItem *item = itemAt(event->pos());
if(item == unread_item) {
event->ignore();
} else {
if(item && getItemType(item) != RssFile::FOLDER)
event->ignore();
else {
if(selectedItems().contains(unread_item)) {
event->ignore();
} else {
QTreeWidget::dragMoveEvent(event);
}
}
}
}
void dropEvent(QDropEvent *event) {
qDebug("dropEvent");
QList<QTreeWidgetItem*> folders_altered;
QTreeWidgetItem *dest_folder_item = itemAt(event->pos());
RssFolder *dest_folder;
if(dest_folder_item) {
dest_folder = (RssFolder*)getRSSItem(dest_folder_item);
folders_altered << dest_folder_item;
} else {
dest_folder = rssmanager;
}
QList<QTreeWidgetItem *> src_items = selectedItems();
// Check if there is not going to overwrite another file
foreach(QTreeWidgetItem *src_item, src_items) {
RssFile *file = getRSSItem(src_item);
if(dest_folder->hasChild(file->getID())) {
emit overwriteAttempt(file->getID());
return;
}
}
// Proceed with the move
foreach(QTreeWidgetItem *src_item, src_items) {
QTreeWidgetItem *parent_folder = src_item->parent();
if(parent_folder && !folders_altered.contains(parent_folder))
folders_altered << parent_folder;
// Actually move the file
RssFile *file = getRSSItem(src_item);
rssmanager->moveFile(file, dest_folder);
}
QTreeWidget::dropEvent(event);
if(dest_folder_item)
dest_folder_item->setExpanded(true);
// Emit signal for update
if(!folders_altered.empty())
emit foldersAltered(folders_altered);
}
};
#endif // FEEDLIST_H

File diff suppressed because it is too large Load Diff

View File

@@ -202,8 +202,13 @@ signals:
private:
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;
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
}
}
};

View File

@@ -407,9 +407,12 @@ class FilterParserThread : public QThread {
// First, import current filter
ip_filter filter = s->get_ip_filter();
foreach(const QString &ip, IPs) {
qDebug("Manual ban of peer %s", ip.toLocal8Bit().data());
address_v4 addr = address_v4::from_string(ip.toLocal8Bit().data());
filter.add_rule(addr, addr, ip_filter::blocked);
qDebug("Manual ban of peer %s", ip.toLocal8Bit().constData());
boost::system::error_code ec;
address_v4 addr = address_v4::from_string(ip.toLocal8Bit().constData(), ec);
Q_ASSERT(!ec);
if(!ec)
filter.add_rule(addr, addr, ip_filter::blocked);
}
s->set_ip_filter(filter);
}

508
src/gpl.html Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -34,7 +34,7 @@
#include <QObject>
#include <QCoreApplication>
#include "preferences.h"
#include "bittorrent.h"
#include "qbtsession.h"
class HeadlessLoader: public QObject {
Q_OBJECT
@@ -44,7 +44,7 @@ public:
// Enable Web UI
Preferences::setWebUiEnabled(true);
// Instanciate Bittorrent Object
BTSession = new Bittorrent();
BTSession = new QBtSession();
connect(BTSession, SIGNAL(newConsoleMessage(QString)), this, SLOT(displayConsoleMessage(QString)));
// Resume unfinished torrents
BTSession->startUpTorrents();
@@ -103,7 +103,7 @@ public slots:
}
private:
Bittorrent *BTSession;
QBtSession *BTSession;
};

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +1,34 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>lang/qbittorrent_es.qm</file>
<file>lang/qbittorrent_sk.qm</file>
<file>lang/qbittorrent_zh_TW.qm</file>
<file>lang/qbittorrent_pt.qm</file>
<file>lang/qbittorrent_sv.qm</file>
<file>lang/qbittorrent_pl.qm</file>
<file>lang/qbittorrent_it.qm</file>
<file>lang/qbittorrent_ar.qm</file>
<file>lang/qbittorrent_ko.qm</file>
<file>lang/qbittorrent_en.qm</file>
<file>lang/qbittorrent_ro.qm</file>
<file>lang/qbittorrent_bg.qm</file>
<file>lang/qbittorrent_ru.qm</file>
<file>lang/qbittorrent_nl.qm</file>
<file>lang/qbittorrent_nb.qm</file>
<file>lang/qbittorrent_hu.qm</file>
<file>lang/qbittorrent_ru.qm</file>
<file>lang/qbittorrent_zh_TW.qm</file>
<file>lang/qbittorrent_tr.qm</file>
<file>lang/qbittorrent_fi.qm</file>
<file>lang/qbittorrent_uk.qm</file>
<file>lang/qbittorrent_cs.qm</file>
<file>lang/qbittorrent_pt_BR.qm</file>
<file>lang/qbittorrent_sk.qm</file>
<file>lang/qbittorrent_ja.qm</file>
<file>lang/qbittorrent_el.qm</file>
<file>lang/qbittorrent_ca.qm</file>
<file>lang/qbittorrent_hr.qm</file>
<file>lang/qbittorrent_sr.qm</file>
<file>lang/qbittorrent_hu.qm</file>
<file>lang/qbittorrent_da.qm</file>
<file>lang/qbittorrent_de.qm</file>
<file>lang/qbittorrent_zh.qm</file>
<file>lang/qbittorrent_ja.qm</file>
<file>lang/qbittorrent_tr.qm</file>
<file>lang/qbittorrent_pt.qm</file>
<file>lang/qbittorrent_it.qm</file>
<file>lang/qbittorrent_fr.qm</file>
<file>lang/qbittorrent_uk.qm</file>
<file>lang/qbittorrent_zh.qm</file>
<file>lang/qbittorrent_ko.qm</file>
<file>lang/qbittorrent_nb.qm</file>
<file>lang/qbittorrent_sv.qm</file>
<file>lang/qbittorrent_de.qm</file>
<file>lang/qbittorrent_sr.qm</file>
<file>lang/qbittorrent_pt_BR.qm</file>
<file>lang/qbittorrent_da.qm</file>
<file>lang/qbittorrent_cs.qm</file>
<file>lang/qbittorrent_pl.qm</file>
<file>lang/qbittorrent_bg.qm</file>
<file>lang/qbittorrent_ar.qm</file>
<file>lang/qbittorrent_es.qm</file>
<file>lang/qbittorrent_en.qm</file>
<file>lang/qbittorrent_hr.qm</file>
<file>lang/qbittorrent_ro.qm</file>
</qresource>
</RCC>

Binary file not shown.

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