1
mirror of https://github.com/qbittorrent/qBittorrent synced 2025-10-12 03:12:18 +02:00

Compare commits

...

1 Commits

Author SHA1 Message Date
Christophe Dumez
37bcb56bb8 - Tagged rc4 2007-10-06 20:05:55 +00:00
150 changed files with 35041 additions and 17545 deletions

View File

@@ -1,5 +1,5 @@
Author: Author:
* Christophe Dumez <chris@qbittorrent.org> * Christophe Dumez <chris@qbittorrent.org>
Other developers: Contributors:
* Arnaud Demaizière <arnaud@qbittorrent.org> * Arnaud Demaizière <arnaud@qbittorrent.org>

View File

@@ -5,6 +5,7 @@
- FEATURE: Bittorrent FAST extension support - FEATURE: Bittorrent FAST extension support
- FEATURE: Added RSS support - FEATURE: Added RSS support
- FEATURE: Support files prioritizing in a torrent - FEATURE: Support files prioritizing in a torrent
- FEATURE: Brand new search engine plugins system
- FEATURE: Finished torrents are now moved to another tab for seeding - FEATURE: Finished torrents are now moved to another tab for seeding
- FEATURE: Display more infos about the torrent in its properties - FEATURE: Display more infos about the torrent in its properties
- FEATURE: Allow the user to edit torrents' trackers - FEATURE: Allow the user to edit torrents' trackers
@@ -30,6 +31,15 @@
- FEATURE: User is now warned when fast resume data was rejected - FEATURE: User is now warned when fast resume data was rejected
- FEATURE: Url seeds are now displayed in torrent properties and are editable - FEATURE: Url seeds are now displayed in torrent properties and are editable
- FEATURE: Allow to drag 'n drop urls on the main window - FEATURE: Allow to drag 'n drop urls on the main window
- FEATURE: Improved search engine (multipage support in all plugins)
- FEATURE: Added BTJunkie search engine plugin
- FEATURE: Added an option to force full disk allocation for all torrents
- FEATURE: Added an option to add torrents in paused state
- FEATURE: Added an option to set the max number of connections per torrent
- FEATURE: Added an option to set the max number of uploads per torrent
- FEATURE: Added an option to automatically delete torrents when they reach a given ratio (>= 1.0)
- FEATURE: Added an option to display current transfer speeds in title bar
- FEATURE: Torrent content is now displayed as a tree
- I18N: Added Hungarian translation - I18N: Added Hungarian translation
- I18N: Added Brazilian translation - I18N: Added Brazilian translation
- BUGFIX: Progress of paused torrents is now correct on restart - BUGFIX: Progress of paused torrents is now correct on restart
@@ -52,11 +62,14 @@
- BUGFIX: Made torrent deletion from hard-drive safer - BUGFIX: Made torrent deletion from hard-drive safer
- BUGFIX: Prevent downloadFromUrl flooding - BUGFIX: Prevent downloadFromUrl flooding
- BUGFIX: ETA was wrong for torrents with filtered files - BUGFIX: ETA was wrong for torrents with filtered files
- BUGFIX: Fixed drag'n drop on non-KDE systems
- COSMETIC: Redesigned torrent properties a little - COSMETIC: Redesigned torrent properties a little
- COSMETIC: Redesigned options a little - COSMETIC: Totally redesigned program preferences
- COSMETIC: Display more logs messages concerning features - COSMETIC: Display more logs messages concerning features
- COSMETIC: Improved lists renderers - COSMETIC: Improved lists renderers
- COSMETIC: Use a different icon for torrents being checked and for connecting ones - COSMETIC: Use a different icon for torrents being checked and for connecting ones
- COSMETIC: Improved some icons
- COSMETIC: Improved systray tooltip style
* Mon May 07 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.3 * Mon May 07 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.3
- BUGFIX: Fixed pause toggle on double-click in download list - BUGFIX: Fixed pause toggle on double-click in download list

21
INSTALL
View File

@@ -1,4 +1,4 @@
qBittorrent - A BitTorrent client in C++ / Qt4.2 qBittorrent - A BitTorrent client in C++ / Qt4
------------------------------------------ ------------------------------------------
*** Necessary if qt3 is default on your system *** *** Necessary if qt3 is default on your system ***
@@ -14,11 +14,12 @@ qbittorrent
will install and execute qBittorrent hopefully without any problems. will install and execute qBittorrent hopefully without any problems.
Dependencies: Dependencies:
- Qt >= 4.2 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) - Qt >= 4.3.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml)
- libtorrent by Arvid Norberg (>= v0.13 REQUIRED) - rblibtorrent by Arvid Norberg (>= v0.13 REQUIRED)
-> http://www.qbittorrent.org/download.php (advised)
-> http://www.libtorrent.net -> http://www.libtorrent.net
Be carefull: another library (the one used by rtorrent) use the same name. Be careful: another library (the one used by rTorrent) use the same name.
These are TWO different libraries and qBittorrent will only work with the one provided These are TWO different libraries and qBittorrent will only work with the one provided
on sourceforge (created by Arvid Norberg). The two libraries conflicts with each other. on sourceforge (created by Arvid Norberg). The two libraries conflicts with each other.
@@ -26,13 +27,17 @@ Dependencies:
- libcommoncpp2 - libcommoncpp2
- python >= 2.3 (previous might work - not tested): needed by search engine. - python >= 2.3 (needed by search engine)
- libmagick++ (advised, not required) - libmagick++ (advised, not required)
* Needed for favicons support (RSS / Search plugins)
NOTE FOR GNOME USERS: - libzzip (advised, not required)
- qt4-qtconfig package is advised when using Plastique style (default) * Needed for zip support (Search plugins)
or just change qBittorrent style to Cleanlooks (GNOME like)
NOTE FOR NON-KDE USERS:
- qt4-qtconfig package is advised when using other systems than KDE.
You can also change qBittorrent style to Cleanlooks (GNOME like)
DOCUMENTATION: DOCUMENTATION:
Please note that there is a documentation with a "compiling howto" at http://wiki.qbittorrent.org. Please note that there is a documentation with a "compiling howto" at http://wiki.qbittorrent.org.

14
README
View File

@@ -3,30 +3,30 @@ qBittorrent - A BitTorrent client in Qt4
Description: Description:
******************************** ********************************
qBittorrent is a bittorrent client programmed in C++ / Qt4 that use qBittorrent is a bittorrent client programmed in C++ / Qt4 that uses
libtorrent (sometimes called rb_libtorrent) by Arvid Norberg. libtorrent (sometimes called rblibtorrent) by Arvid Norberg.
It aims to be a good alternative to all other bittorrent clients It aims to be a good alternative to all other bittorrent clients
out there. qBittorrent is fast, stable and provides unicode out there. qBittorrent is fast, stable and provides unicode
support. support as well as many features.
Installation: Installation:
******************************** ********************************
For installation follow the instructions from INSTALL file, but simple For installation, follow the instructions from INSTALL file, but simple:
./configure ./configure
make && make install make && make install
qbittorrent qbittorrent
will install and execute qBittorrent hopefully without any problems. will install and execute qBittorrent hopefully without any problem.
For more information please visit: For more information please visit:
http://www.qbittorrent.org http://www.qbittorrent.org
Please report any bug (or feature requests) to: Please report any bug (or feature request) to:
http://bugs.qbittorrent.org http://bugs.qbittorrent.org
You can also meet me on IRC: You can also meet me (chris-qBT) on IRC:
#qbittorrent on irc.freenode.net #qbittorrent on irc.freenode.net
------------------------------------------ ------------------------------------------

105
TODO
View File

@@ -1,98 +1,65 @@
// Easy // Easy
- Translations into as many languages as possible - Translations into as many languages as possible
- Improve man page
- Use Launchpad/Rosetta for translations once it supports TS files - Use Launchpad/Rosetta for translations once it supports TS files
// Intermediate // Intermediate
- Port on MacOS, Windows (and create an installer for Windows) - Progressing slowly - Port on MacOS, Windows (and create an installer for Windows) - Slow progress
- Add some transparency (menus,...), improve look - Add some transparency (menus,...), improve look / usabilty
- Skins support? (contact Mateusz)
// Harder // Harder
- Display a progress bar that really displays the pieces we have (like in eMule) - Display a progress bar that really represents the pieces we have (like in eMule)
- Torrent scheduler ala µtorrent/Bitcomet
// Waiting for libtorrent // Waiting for libtorrent
- File selection in a torrent in compact mode - File selection in a torrent in compact mode
- Allow to prioritize torrents - Allow to prioritize torrents (may code this in qBittorrent?)
// Unsure // Unsure
- Display the peers we are connected to for each torrent with infos (like flag, dl/up speeds, ...)
- Azureus spoofing to prevent ban from trackers? - Azureus spoofing to prevent ban from trackers?
- Option to shutdown computer when downloads are finished - Option to shutdown computer when downloads are finished
- Add a torrent scheduler - NAT checker/Tester
- Display hard drive space left?
- Make use of dbus on Linux for the single instance instead of socket communication? - Make use of dbus on Linux for the single instance instead of socket communication?
(http://techbase.kde.org/Development/Tutorials/D-Bus/Accessing_Interfaces) (http://techbase.kde.org/Development/Tutorials/D-Bus/Accessing_Interfaces)
- search engines customizing - When favicon can't be downloaded, try to parse the webpage for:
<link rel="icon" href="http://example.com/favicon.ico" type="image/vnd.microsoft.icon">
* Be carefull, the link can be relative
// in v1.2.0 // in v1.2.0
- Allow user to organize the downloads into categories/folders - Allow user to organize the downloads into categories/folders?
// in v1.1.0 // in v1.1.0
- Tabs support in search - Tabs support in search
- Allow to hide columns? - Allow to hide columns?
- Allow to scan multiple directories? (useful?) - Allow to scan multiple directories? (useful?)
- Web interface (turbogears? php?) - Web interface (turbogears? php? python?)
* Webserver? Try to write a webserver as a plugin for qBittorrent in Python
* http://fragments.turtlemeat.com/pythonwebserver.php
- improve and test tracker authentication code (remember login/pass) (need a tracker to test this) - improve and test tracker authentication code (remember login/pass) (need a tracker to test this)
- support zipped torrents? (useful?) - support zipped torrents? (useful?)
- Add option for RSS customization (refresh interval, max news per RSS...)
- Allow to disable UPnP/NAT-PMP/LSD in options?
- Allow to automatically delete torrents when they reach a given ratio (in options) : easy
- Allow to limit the number of downloading torrents simultaneously (other are paused until a download finishes) - Allow to limit the number of downloading torrents simultaneously (other are paused until a download finishes)
- Add "Mark all as read" feature for RSS - Improve search plugin install (choose in a list taken from plugins.qbittorrent.org)
- Allow to customize lists refreshing interval (in options) - Display the number of DHT node if possible
- Use search engines as plugins (split them, load them dynamically) to allow the user to add some - When adding a duplicate torrent, check if the trackers are different from the existing one and ask the user if he wants to add them
- Display in torrent addition dialog:
* free disk space on selected drive
* free disk space after torrent download (and/or torrent size)
- Allow to change action on double-click
-> in download list
-> in seeding list
// in v1.0.0 (partial) - WIP // in v1.0.0 - FEATURE FREEZE
- Check storage st creation + hasher in torrent creation
- Fix all (or almost all) opened bugs in bug tracker - Fix all (or almost all) opened bugs in bug tracker
- update sorting when a new torrent is added? - debug new torrent content selection
- Keep documention up to date - Recheck doc
- Windows port (Chris - Peerkoel) - Translations update (IN PROGRESS)
- write patches libtorrent for file_priority(int index), actual_size() ? - add qt4-qtconfig as package dependency
- valgrind --tool=memcheck --leak-check=full src/qbittorrent (Looks ok)
- 128m 29m 16m S 4.8 2.9 0:02.28 qbittorrent
* beta 6
- Translations update (IN PROGRESS)
- Wait for some bug fixes in libtorrent :
- Number of seeds non null for finished torrent (Ticket #122)
LANGUAGES UPDATED: rc3->rc4 changelog:
- French *BETA3* - BUGFIX: Fixed ip filter preferences (couldn't enable it)
- English *BETA3* - BUGFIX: Fixed compilation problems on FreeBSD (Ok now)
- Japanese *BETA3* - BUGFIX: Updated INSTALL file
- Swedish *BETA3* - BUGFIX: Optimized torrent real size calculation
- Slovak *BETA3* - BUGFIX: Use system default style as a default (instead of Plastique style)
- Ukrainian *BETA3*
- Chinese (simplified) *BETA4*
- Hungarian *BETA4*
- Italian *BETA5*
- Polish *BETA5*
- Portuguese *BETA5*
- Brazilian *BETA5*
- Spanish *BETA5*
- German *BETA5*
- Russian *BETA5*
- Korean *BETA5*
- Greek *BETA6*
- Dutch *BETA6*
- Romanian *BETA6*
beta5->beta6 changelog:
- FEATURE: Split download tab from GUI class and cleaned up code
- FEATURE: A lot of code optimization (CPU & memory usage)
- FEATURE: Added support for .ico format (useful for RSS favicons)
- FEATURE: Replaced Meganova search engine by TorrentReactor
- I18N: Updated Greek, Dutch and Romanian translation
- I18N: Removed no longer maintained Traditional chinese translation
- BUGFIX: Made torrent deletion from hard-drive safer
- BUGFIX: Fixed a bug when switching from finished to downloading list
- BUGFIX: Showing checking progress for paused torrents too
- BUGFIX: Fixed progress column sorting on startup
- BUGFIX: Prevent downloadFromUrl flooding
- BUGFIX: Fixed pause state toggle for paused and checking torrents
- BUGFIX: Made finished list context menu more similar to the download list one
- BUGFIX: Fixed Pause/Start action in lists context menus
- BUGFIX: Improved ETA calculation
- BUGFIX: ETA was wrong for torrents with filtered files
- BUGFIX: Display the torrent that are being checked as 'checking' in seeding list
- BUGFIX: Fixed file preview and improved previewable files detection
- BUGFIX: Do not store and calculate ETA values for finished/paused torrents
- BUGFIX: Fixed memory leak in GUI

114
configure vendored
View File

@@ -27,6 +27,9 @@ Dependency options:
--disable-libmagick Disable use of libmagick --disable-libmagick Disable use of libmagick
--with-libmagick-inc=[path] Path to libmagick++ include files --with-libmagick-inc=[path] Path to libmagick++ include files
--with-libmagick-lib=[path] Path to libmagick++ library files --with-libmagick-lib=[path] Path to libmagick++ library files
--disable-libzzip Disable use of libzzip
--with-libzzip-inc=[path] Path to libzzip++ include files
--with-libzzip-lib=[path] Path to libzzip++ library files
EOT EOT
} }
@@ -188,6 +191,21 @@ while [ $# -gt 0 ]; do
shift shift
;; ;;
--disable-libzzip)
QC_DISABLE_libzzip="Y"
shift
;;
--with-libzzip-inc=*)
QC_WITH_LIBZZIP_INC=$optarg
shift
;;
--with-libzzip-lib=*)
QC_WITH_LIBZZIP_LIB=$optarg
shift
;;
--verbose) --verbose)
QC_VERBOSE="Y" QC_VERBOSE="Y"
shift shift
@@ -218,6 +236,9 @@ echo QC_WITH_LIBCOMMONCPP2_LIB=$QC_WITH_LIBCOMMONCPP2_LIB
echo QC_DISABLE_libmagick=$QC_DISABLE_libmagick echo QC_DISABLE_libmagick=$QC_DISABLE_libmagick
echo QC_WITH_LIBMAGICK_INC=$QC_WITH_LIBMAGICK_INC echo QC_WITH_LIBMAGICK_INC=$QC_WITH_LIBMAGICK_INC
echo QC_WITH_LIBMAGICK_LIB=$QC_WITH_LIBMAGICK_LIB echo QC_WITH_LIBMAGICK_LIB=$QC_WITH_LIBMAGICK_LIB
echo QC_DISABLE_libzzip=$QC_DISABLE_libzzip
echo QC_WITH_LIBZZIP_INC=$QC_WITH_LIBZZIP_INC
echo QC_WITH_LIBZZIP_LIB=$QC_WITH_LIBZZIP_LIB
echo echo
fi fi
@@ -319,21 +340,21 @@ fi
gen_files() { gen_files() {
cat >$1/modules.cpp <<EOT cat >$1/modules.cpp <<EOT
#line 1 "qt42.qcm" #line 1 "qt4.qcm"
/* /*
-----BEGIN QCMOD----- -----BEGIN QCMOD-----
name: Qt >= 4.2 name: Qt >= 4.3
-----END QCMOD----- -----END QCMOD-----
*/ */
class qc_qt42 : public ConfObj class qc_qt4 : public ConfObj
{ {
public: public:
qc_qt42(Conf *c) : ConfObj(c) {} qc_qt4(Conf *c) : ConfObj(c) {}
QString name() const { return "Qt >= 4.2"; } QString name() const { return "Qt >= 4.3"; }
QString shortname() const { return "qt42"; } QString shortname() const { return "Qt 4.3"; }
bool exec() bool exec()
{ {
return(QT_VERSION >= 0x040200); return(QT_VERSION >= 0x040300);
} }
}; };
#line 1 "libtorrent.qcm" #line 1 "libtorrent.qcm"
@@ -618,11 +639,82 @@ public:
magickConfig.waitForStarted(); magickConfig.waitForStarted();
magickConfig.waitForFinished(); magickConfig.waitForFinished();
QByteArray result = magickConfig.readAll(); 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;
} }
}; };
#line 1 "libzzip.qcm"
/*
-----BEGIN QCMOD-----
name: libzzip
arg: with-libzzip-inc=[path], Path to libzzip++ include files
arg: with-libzzip-lib=[path], Path to libzzip++ library files
-----END QCMOD-----
*/
#include <QProcess>
class qc_libzzip : public ConfObj
{
public:
qc_libzzip(Conf *c) : ConfObj(c) {}
QString name() const { return "Zzip library (libzzip)"; }
QString shortname() const { return "libzzip"; }
QString checkString() const {
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return "";
return ConfObj::checkString();
}
bool exec(){
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return false;
QString s;
s = conf->getenv("QC_WITH_LIBZZIP_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "zzip/zzip.h")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "zzip/zzip.h")){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBZZIP_LIB");
if(!s.isEmpty()) {
if(!QFile::exists(s+QString("libzzip.so"))){
return false;
}
}else{
QStringList sl;
sl << "/usr/lib/";
sl << "/usr/local/lib/";
bool found = false;
foreach(s, sl){
if(QFile::exists(s+QString("libzzip.so"))){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addLib(QString("-L") + s);
conf->addLib("-lzzip");
conf->addDefine("HAVE_ZZIP");
return true;
}
};
#line 1 "python.qcm" #line 1 "python.qcm"
/* /*
-----BEGIN QCMOD----- -----BEGIN QCMOD-----
@@ -646,7 +738,7 @@ public:
EOT EOT
cat >$1/modules_new.cpp <<EOT cat >$1/modules_new.cpp <<EOT
o = new qc_qt42(conf); o = new qc_qt4(conf);
o->required = true; o->required = true;
o->disabled = false; o->disabled = false;
o = new qc_libtorrent(conf); o = new qc_libtorrent(conf);
@@ -661,6 +753,9 @@ cat >$1/modules_new.cpp <<EOT
o = new qc_libmagick(conf); o = new qc_libmagick(conf);
o->required = false; o->required = false;
o->disabled = false; o->disabled = false;
o = new qc_libzzip(conf);
o->required = false;
o->disabled = false;
o = new qc_python(conf); o = new qc_python(conf);
o->required = true; o->required = true;
o->disabled = false; o->disabled = false;
@@ -1618,6 +1713,9 @@ export QC_WITH_LIBCOMMONCPP2_LIB
export QC_DISABLE_libmagick export QC_DISABLE_libmagick
export QC_WITH_LIBMAGICK_INC export QC_WITH_LIBMAGICK_INC
export QC_WITH_LIBMAGICK_LIB export QC_WITH_LIBMAGICK_LIB
export QC_DISABLE_libzzip
export QC_WITH_LIBZZIP_INC
export QC_WITH_LIBZZIP_LIB
export QC_VERBOSE export QC_VERBOSE
rm -rf .qconftemp rm -rf .qconftemp
( (

Binary file not shown.

View File

@@ -3,7 +3,7 @@
<profile>qbittorrent.pro</profile> <profile>qbittorrent.pro</profile>
<moddir>qcm</moddir> <moddir>qcm</moddir>
<datadir/> <datadir/>
<dep type='qt42'> <dep type='qt4'>
<required/> <required/>
</dep> </dep>
<dep type='libtorrent'> <dep type='libtorrent'>
@@ -15,7 +15,8 @@
<dep type='libcommoncpp2'> <dep type='libcommoncpp2'>
<required/> <required/>
</dep> </dep>
<dep type='libmagick'/> <dep type='libmagick'/>
<dep type='libzzip'/>
<dep type='python'> <dep type='python'>
<required/> <required/>
</dep> </dep>

View File

@@ -69,6 +69,7 @@ public:
magickConfig.waitForStarted(); magickConfig.waitForStarted();
magickConfig.waitForFinished(); magickConfig.waitForFinished();
QByteArray result = magickConfig.readAll(); 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;

69
qcm/libzzip.qcm Normal file
View File

@@ -0,0 +1,69 @@
/*
-----BEGIN QCMOD-----
name: libzzip
arg: with-libzzip-inc=[path], Path to libzzip++ include files
arg: with-libzzip-lib=[path], Path to libzzip++ library files
-----END QCMOD-----
*/
#include <QProcess>
class qc_libzzip : public ConfObj
{
public:
qc_libzzip(Conf *c) : ConfObj(c) {}
QString name() const { return "Zzip library (libzzip)"; }
QString shortname() const { return "libzzip"; }
QString checkString() const {
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return "";
return ConfObj::checkString();
}
bool exec(){
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return false;
QString s;
s = conf->getenv("QC_WITH_LIBZZIP_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "zzip/zzip.h")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "zzip/zzip.h")){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBZZIP_LIB");
if(!s.isEmpty()) {
if(!QFile::exists(s+QString("libzzip.so"))){
return false;
}
}else{
QStringList sl;
sl << "/usr/lib/";
sl << "/usr/local/lib/";
bool found = false;
foreach(s, sl){
if(QFile::exists(s+QString("libzzip.so"))){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addLib(QString("-L") + s);
conf->addLib("-lzzip");
conf->addDefine("HAVE_ZZIP");
return true;
}
};

16
qcm/qt4.qcm Normal file
View File

@@ -0,0 +1,16 @@
/*
-----BEGIN QCMOD-----
name: Qt >= 4.3
-----END QCMOD-----
*/
class qc_qt4 : public ConfObj
{
public:
qc_qt4(Conf *c) : ConfObj(c) {}
QString name() const { return "Qt >= 4.3"; }
QString shortname() const { return "Qt 4.3"; }
bool exec()
{
return(QT_VERSION >= 0x040300);
}
};

View File

@@ -1,16 +0,0 @@
/*
-----BEGIN QCMOD-----
name: Qt >= 4.2
-----END QCMOD-----
*/
class qc_qt42 : public ConfObj
{
public:
qc_qt42(Conf *c) : ConfObj(c) {}
QString name() const { return "Qt >= 4.2"; }
QString shortname() const { return "qt42"; }
bool exec()
{
return(QT_VERSION >= 0x040200);
}
};

View File

@@ -86,7 +86,8 @@ class DLListDelegate: public QItemDelegate {
newopt.textVisible = false; newopt.textVisible = false;
QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt, QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt,
painter); painter);
painter->setPen(QColor("Black")); QPalette::ColorGroup cg = opt.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled;
painter->setPen(opt.palette.color(cg, QPalette::WindowText));
painter->drawText(opt.rect, Qt::AlignCenter, newopt.text); painter->drawText(opt.rect, Qt::AlignCenter, newopt.text);
break; break;
} }

View File

@@ -79,7 +79,8 @@ class FinishedListDelegate: public QItemDelegate {
newopt.textVisible = false; newopt.textVisible = false;
QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt, QApplication::style()->drawControl(QStyle::CE_ProgressBar, &newopt,
painter); painter);
painter->setPen(QColor("Black")); QPalette::ColorGroup cg = opt.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled;
painter->setPen(opt.palette.color(cg, QPalette::WindowText));
painter->drawText(opt.rect, Qt::AlignCenter, newopt.text); painter->drawText(opt.rect, Qt::AlignCenter, newopt.text);
break; break;
} }

View File

@@ -122,7 +122,8 @@ void FinishedTorrents::torrentAdded(QString, QTorrentHandle& h, bool) {
// Set the color of a row in data model // Set the color of a row in data model
void FinishedTorrents::setRowColor(int row, QString color){ void FinishedTorrents::setRowColor(int row, QString color){
for(int i=0; i<finishedListModel->columnCount(); ++i){ unsigned int nbColumns = finishedListModel->columnCount()-1;
for(unsigned int i=0; i<nbColumns; ++i){
finishedListModel->setData(finishedListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole); finishedListModel->setData(finishedListModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole);
} }
} }
@@ -209,6 +210,10 @@ void FinishedTorrents::updateFinishedList(){
} }
Q_ASSERT(row != -1); Q_ASSERT(row != -1);
if(h.is_paused()) continue; if(h.is_paused()) continue;
if(BTSession->getTorrentsToPauseAfterChecking().indexOf(hash) != -1) {
finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress()));
continue;
}
if(h.state() == torrent_status::downloading || (h.state() != torrent_status::checking_files && h.state() != torrent_status::queued_for_checking && h.progress() < 1.)) { if(h.state() == torrent_status::downloading || (h.state() != torrent_status::checking_files && h.state() != torrent_status::queued_for_checking && h.progress() < 1.)) {
// What are you doing here? go back to download tab! // What are you doing here? go back to download tab!
qDebug("Info: a torrent was moved from finished to download tab"); qDebug("Info: a torrent was moved from finished to download tab");
@@ -218,10 +223,8 @@ void FinishedTorrents::updateFinishedList(){
continue; continue;
} }
if(h.state() == torrent_status::checking_files){ if(h.state() == torrent_status::checking_files){
if(BTSession->getTorrentsToPauseAfterChecking().indexOf(hash) == -1) { 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/time.png"))), Qt::DecorationRole); setRowColor(row, QString::fromUtf8("grey"));
setRowColor(row, QString::fromUtf8("grey"));
}
finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress())); finishedListModel->setData(finishedListModel->index(row, F_PROGRESS), QVariant((double)h.progress()));
continue; continue;
} }
@@ -311,7 +314,7 @@ void FinishedTorrents::displayFinishedListMenu(const QPoint& pos){
// Enable/disable pause/start action given the DL state // Enable/disable pause/start action given the DL state
QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes(); QModelIndexList selectedIndexes = finishedList->selectionModel()->selectedIndexes();
QSettings settings("qBittorrent", "qBittorrent"); QSettings settings("qBittorrent", "qBittorrent");
QString previewProgram = settings.value("Options/Misc/PreviewProgram", QString()).toString(); QString previewProgram = settings.value("Preferences/general/MediaPlayer", QString()).toString();
bool has_pause = false, has_start = false, has_preview = false; bool has_pause = false, has_start = false, has_preview = false;
foreach(index, selectedIndexes) { foreach(index, selectedIndexes) {
if(index.column() == F_NAME) { if(index.column() == F_NAME) {

File diff suppressed because it is too large Load Diff

View File

@@ -64,7 +64,9 @@ class GUI : public QMainWindow, private Ui::MainWindow{
FinishedTorrents *finishedTorrentTab; FinishedTorrents *finishedTorrentTab;
QLabel *connecStatusLblIcon; QLabel *connecStatusLblIcon;
bool systrayIntegration; bool systrayIntegration;
bool displaySpeedInTitle;
bool force_exit; bool force_exit;
unsigned int refreshInterval;
QTimer *refresher; QTimer *refresher;
// Keyboard shortcuts // Keyboard shortcuts
QShortcut *switchSearchShortcut; QShortcut *switchSearchShortcut;
@@ -127,10 +129,12 @@ class GUI : public QMainWindow, private Ui::MainWindow{
void checkConnectionStatus(); void checkConnectionStatus();
void configureSession(bool deleteOptions); void configureSession(bool deleteOptions);
void processParams(const QStringList& params); void processParams(const QStringList& params);
void addTorrent(QString path);
void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker); void addUnauthenticatedTracker(QPair<QTorrentHandle,QString> tracker);
void processScannedFiles(const QStringList& params); void processScannedFiles(const QStringList& params);
void processDownloadedFiles(QString path, QString url); void processDownloadedFiles(QString path, QString url);
void downloadFromURLList(const QStringList& urls); void downloadFromURLList(const QStringList& urls);
void deleteTorrent(QString hash, QString fileName, bool finished);
void finishedTorrent(QTorrentHandle& h) const; void finishedTorrent(QTorrentHandle& h) const;
void torrentChecked(QString hash) const; void torrentChecked(QString hash) const;
void updateLists(); void updateLists();

BIN
src/Icons/bt_settings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/Icons/configure.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 820 B

BIN
src/Icons/download.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/Icons/file.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 704 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 998 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 558 B

BIN
src/Icons/folder.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

BIN
src/Icons/gear.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -4,19 +4,20 @@ Comment=V1.0.0
Encoding=UTF-8 Encoding=UTF-8
Exec=qbittorrent Exec=qbittorrent
GenericName=Bittorrent client GenericName=Bittorrent client
GenericName[fr]=Client Bittorrent GenericName[bg]=Торент клиент
GenericName[nl]=Bittorrent client GenericName[de]=Bittorren Client
GenericName[el]=Τορεντ πελάτης
GenericName[es]=Cliente Bittorrent GenericName[es]=Cliente Bittorrent
GenericName[fr]=Client Bittorrent
GenericName[ja]=Bittorrent クライアント
GenericName[ko]=비토렌트 클라이언트
GenericName[nl]=Bittorrent client
GenericName[pl]=Klient Bittorrent
GenericName[ru]=клиент Bittorrent
GenericName[sv]=Bittorrent-klient GenericName[sv]=Bittorrent-klient
GenericName[tr]=Bittorrent istemcisi GenericName[tr]=Bittorrent istemcisi
GenericName[de]=Bittorren Client
GenericName[pl]=Klient Bittorrent
GenericName[zh]=Bittorrent之用户
GenericName[ko]=비토렌트 클라이언트
GenericName[el]=Τορεντ πελάτης
GenericName[bg]=Торент клиент
GenericName[uk]=Bittorrent-клієнт GenericName[uk]=Bittorrent-клієнт
GenericName[ru]=клиент Bittorrent GenericName[zh]=Bittorrent之用户
Icon=qbittorrent Icon=qbittorrent
MimeType=application/x-bittorrent MimeType=application/x-bittorrent
Name=qBittorrent Name=qBittorrent

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 948 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

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