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

Compare commits

...

40 Commits

Author SHA1 Message Date
Christophe Dumez
d02298c7d2 Tagged v1.5.6 release 2009-11-17 17:38:08 +00:00
Christophe Dumez
e5f9c5b746 - Update release date 2009-11-17 17:32:52 +00:00
Christophe Dumez
96f9add49a - Fix per-torrent speed limiting 2009-11-17 13:19:24 +00:00
Christophe Dumez
2b9f0ae94f - Improve ETA calculation for big torrents
- Bump to v1.5.6
2009-11-16 20:37:29 +00:00
Christophe Dumez
76c5c63b50 - Do not display total peer values if they are less than connected peers 2009-11-16 18:32:00 +00:00
Christophe Dumez
aed4c1f5a4 Fixed possible crash in search engine autocompletion code 2009-11-14 20:27:04 +00:00
Christophe Dumez
d4fe27e436 - Fixed memory leak in RSS parser 2009-11-14 19:46:20 +00:00
Christophe Dumez
14567b85bd - BUGFIX: RSS feed articles can now be displayed using keyboard arrows 2009-11-06 18:33:15 +00:00
Christophe Dumez
1a5cd45dfc - Make sure RSS feed downloader does not process already read articles 2009-11-06 13:47:59 +00:00
Christophe Dumez
a7850a4305 - BUGFIX: Added safety mecanism which adds the torrents back to the list in case qbittorrent-resume.conf gets deleted or corrupted. 2009-11-04 17:50:13 +00:00
Christophe Dumez
02c9b06c77 - Remove outdated information 2009-11-04 17:15:43 +00:00
Christophe Dumez
94a8c88bd9 - BUGFIX: Make sure scan folder is different than qBittorrent backup directory to avoid torrents deletion 2009-11-04 10:51:53 +00:00
Christophe Dumez
7a7fca0d0c - Remove useless function that can cause compilation error. 2009-11-01 14:11:28 +00:00
Christophe Dumez
9dbc3a1540 - BUGFIX: Suppress compilation warning regarding sortNewsList() not being used
- bump to v1.5.5
2009-10-30 15:19:52 +00:00
Christophe Dumez
407c384494 BUGFIX: Fix trackers addition to torrents (bug introduced in v1.5.4) 2009-10-30 15:03:31 +00:00
Christophe Dumez
833f1d8c6a - BUGFIX: Fix crash on torrent addition (if libtorrent-rasterbar has debug enabled) 2009-10-30 13:11:07 +00:00
Christophe Dumez
51dcd6c93c - Escape properly the -- in the man page (Thanks Cristian Greco) 2009-10-30 12:16:48 +00:00
Christophe Dumez
03cf510f7f - Fix compilation warning 2009-10-24 23:11:56 +00:00
Christophe Dumez
610dfefa26 - Bump to v1.5.4 2009-10-24 23:07:35 +00:00
Christophe Dumez
6c477fcf75 - BUGFIX: Fixed PirateBay search plugin
- BUGFIX: Using Download button in search results list now downloads the right torrents
  - BUGFIX: The search results list is no longer sorted automatically when a row color is updated
2009-10-24 22:55:06 +00:00
Christophe Dumez
604f8542a7 - Enabled "Start Minimized" and disabling systray integration at the same time n
o longer make GUI invisible.
2009-10-21 19:23:16 +00:00
Christophe Dumez
e9b4c6c047 - Fix possible crash with torrents containing unicode characters 2009-10-15 20:03:45 +00:00
Christophe Dumez
985ac3be68 - Some fixes to Russian translation (Thanks to Anthony "Commando" and Alexey Morsov) 2009-10-14 18:44:17 +00:00
Christophe Dumez
562c748c50 - Updated man page 2009-09-30 21:07:21 +00:00
Christophe Dumez
7a685f5ab6 - BUGFIX: Ignore permanent deletion button when no torrent is selected
- BUGFIX: When a selected torrent is deleted, select next suitable torrent
  - Bump to v1.5.3
2009-09-30 20:33:26 +00:00
Christophe Dumez
9500b212c7 - BUGFIX: Added a command line parameter to disable splash screen 2009-09-30 18:59:18 +00:00
Christophe Dumez
5a2e92ad79 Fix compilation on Mac OS 2009-09-30 18:44:58 +00:00
Christophe Dumez
9772fccde3 - Fix crash when scanned directory does not exist (closes #438001) 2009-09-30 18:40:13 +00:00
Christophe Dumez
f26bcec56f - Updated bulgarian translation 2009-09-25 23:31:54 +00:00
Christophe Dumez
52a62b6f0f - Hide download URL column in search results 2009-09-24 19:12:54 +00:00
Christophe Dumez
f27b49f9a3 - BUGFIX: Fix a possible crash when pausing then deleting a torrent quickly 2009-09-21 19:17:41 +00:00
Christophe Dumez
3e4fe1f823 - Updated Changelog 2009-09-20 21:56:41 +00:00
Christophe Dumez
a8a6911aa8 - Bump to v1.5.2 2009-09-20 21:39:19 +00:00
Christophe Dumez
e299288367 - Some torrents were pausing for no reason 2009-09-20 21:32:20 +00:00
Christophe Dumez
de64a641d0 - Updated Korean translation 2009-09-10 09:40:30 +00:00
Christophe Dumez
ab13a58614 - Pause torrents in error state 2009-09-07 12:14:20 +00:00
Christophe Dumez
c863ff6335 - BUGFIX: Fix crash in torrent addition dialog when save path does not exist (closes #425227)
- BUGFIX: Fix downloading from URL (broken in v1.5.0)
2009-09-07 11:52:18 +00:00
Christophe Dumez
e20a09ca3e - Added traditional chinese translation to desktop file 2009-09-07 09:59:44 +00:00
Christophe Dumez
40966ae421 - Removed useless variable check 2009-09-06 20:17:23 +00:00
Christophe Dumez
a87098629b - Branched v1.5.x 2009-09-03 11:39:30 +00:00
78 changed files with 2628 additions and 2426 deletions

View File

@@ -1,3 +1,46 @@
* Tue Nov 17 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.6
- BUGFIX: RSS feed articles can now be displayed using keyboard arrows
- BUGFIX: RSS feed downloader can only process unread articles now
- BUGFIX: Fixed memory leak in RSS parser
- BUGFIX: Fixed possible crash in search autocompletion
- BUGFIX: Improved ETA calculation for big torrents
- BUGFIX: Fixed per-torrent speed limiting
* Wed Nov 4 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.5
- BUGFIX: Fixed man page
- BUGFIX: Fix crash on torrent addition (if libtorrent-rasterbar has debug enabled)
- BUGFIX: Fix trackers addition to torrents (bug introduced in v1.5.4)
- BUGFIX: Suppress compilation warning regarding sortNewsList() not being used
- BUGFIX: Make sure scan folder is different than qBittorrent backup directory to avoid torrents deletion
- BUGFIX: Added safety mecanism which adds the torrents back to the list in case qbittorrent-resume.conf gets deleted or corrupted.
* Sun Oct 25 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.4
- BUGFIX: Updated man page
- BUGFIX: Fixed possible crash with torrents containing unicode characters
- BUGFIX: Fixed problem when disabling systray integration and starting minimized
- BUGFIX: Fixed PirateBay search plugin
- BUGFIX: Using Download button in search results list now downloads the right torrents
- BUGFIX: The search results list is no longer sorted automatically when a row color is updated
* Wed Sep 30 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.3
- BUGFIX: Fix a possible crash when pausing then deleting a torrent quickly
- BUGFIX: Fix a race condition in folder scanning and torrent downloader
- BUGFIX: Hide download url column in search results
- BUGFIX: Fix a crash when scanned directory does not exist
- BUGFIX: Fix compilation on Mac OS
- BUGFIX: Added a command line parameter to disable splash screen
- BUGFIX: Ignore permanent deletion button when no torrent is selected
- BUGFIX: When a selected torrent is deleted, select next suitable torrent
* Sun Sep 20 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.2
- BUGFIX: Some torrents were pausing for no reason
- I18N: Updated Korean translation
* Thu Sep 7 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.1
- BUGFIX: Fix crash in torrent addition dialog when save path does not exist (closes #425227)
- BUGFIX: Fix downloading from URL (broken in v1.5.0)
- BUGFIX: Pause torrents in error state
* Thu Sep 3 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.5.0
- FEATURE: Added Magnet URI support
- FEATURE: Search engine supports category-based requests

View File

@@ -1,12 +1,6 @@
qBittorrent - A BitTorrent client in C++ / Qt4
------------------------------------------
*** Necessary if qt3 is default on your system ***
export QTDIR=/usr/include/qt4
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
*** End ***
./configure
make && make install
qbittorrent
@@ -28,9 +22,6 @@ Dependencies:
- python >= 2.3 (needed by search engine)
- libmagick++ (advised, not required)
* Needed for favicons support (RSS / Search plugins)
- libzzip (advised, not required)
* Needed for zip support (Search plugins)

View File

@@ -1,17 +1,19 @@
.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>.
.TH "QBITTORRENT" "1" "September 1st 2007" "Bittorrent client written in C++ / Qt4" ""
.TH "QBITTORRENT" "1" "September 30th 2009" "Bittorrent client written in C++ / Qt4" ""
.SH NAME
.SH "NAME"
qBittorrent \- a Bittorrent client written in C++ / Qt4
.SH SYNOPSIS
\fBqbittorrent\fR [FILE | URL] [FILE | URL...]
.SH "SYNOPSIS"
\fBqbittorrent\fR [\-\-no-splash] [TORRENT_FILE | URL]...
\fBqbittorrent\fR \-\-help
\fBqbittorrent\fR \-\-version
.PP
.SH "DESCRIPTION"
@@ -19,10 +21,21 @@ qBittorrent \- a Bittorrent client written in C++ / Qt4
using the \fBrblibtorrent\fR library by Arvid Norberg. qBittorrent aims
to be a good alternative to all other bittorrent clients out there. qBittorrent
is fast, stable, light, it supports unicode and it provides a good integrated search engine.
It also comes with UPnP port forwarding / NAT-PMP, encryption (Azureus compatible), FAST extension (mainline) and PeX support (utorrent compatible).
It also comes with UPnP port forwarding / NAT-PMP, encryption (Azureus compatible),
FAST extension (mainline) and PeX support (utorrent compatible).
.SH "OPTIONS"
\fB--help\fR Prints the command line options.
\fB--version\fR Prints qbittorrent program version number.
\fB--no-splash\fR Disables splash screen on startup.
.SH "BUGS"
If you find a bug, please report it at http://bugs.qbittorrent.org
Please report any problem to http://bugs.qbittorrent.org
.PP
.SH "AUTHOR"
Christophe Dumez <chris@qbittorrent.org>

View File

@@ -383,6 +383,20 @@ void FinishedTorrents::deleteTorrent(QString hash){
qDebug("Torrent is not in finished list, nothing to delete");
return;
}
// Select item just under (or above nothing under) the one that was deleted
QModelIndex current_prox_index = proxyModel->mapFromSource(finishedListModel->index(row, 0, finishedList->rootIndex()));
bool was_selected = finishedList->selectionModel()->isSelected(current_prox_index);
if(finishedListModel->rowCount() > 1 && was_selected) {
QModelIndex under_prox_index;
if(current_prox_index.row() == finishedListModel->rowCount()-1)
under_prox_index = proxyModel->index(current_prox_index.row()-1, 0);
else
under_prox_index = proxyModel->index(current_prox_index.row()+1, 0);
//downloadList->selectionModel()->select(under_prox_index, QItemSelectionModel::Current|QItemSelectionModel::Columns|QItemSelectionModel::Select);
finishedList->setCurrentIndex(under_prox_index);
finishedList->update();
}
// Actually delete the row
finishedListModel->removeRow(row);
--nbFinished;
emit finishedTorrentsNumberChanged(nbFinished);

View File

@@ -249,8 +249,9 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
QMainWindow::statusBar()->addPermanentWidget(upSpeedLbl);
QMainWindow::statusBar()->addPermanentWidget(statusSep4);
QMainWindow::statusBar()->addPermanentWidget(ratioLbl);
if(!settings.value(QString::fromUtf8("Preferences/General/StartMinimized"), false).toBool()) {
show();
show();
if(settings.value(QString::fromUtf8("Preferences/General/StartMinimized"), false).toBool()) {
this->setWindowState(Qt::WindowMinimized);
}
scrapeTimer = new QTimer(this);
connect(scrapeTimer, SIGNAL(timeout()), this, SLOT(scrapeTrackers()));
@@ -450,7 +451,10 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
}
void GUI::setPaused(QTorrentHandle &h) const {
if(!h.is_paused()) return;
if(!h.is_paused()) {
// FIXME in v1.6.0: Add Error state and stop using pause for this
h.pause();
}
qDebug("Marking torrent %s as paused", h.hash().toLocal8Bit().data());
if(h.is_seed()) {
// In finished list
@@ -865,6 +869,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
default:
return;
}
if(hashes.empty()) return;
int ret;
if(inDownloadList) {
ret = QMessageBox::question(
@@ -916,7 +921,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
default:
return;
}
if(!hashes.size()) return;
if(hashes.empty()) return;
int ret;
if(inDownloadList) {
ret = QMessageBox::question(
@@ -953,6 +958,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool();
foreach(QString param, params) {
param = param.trimmed();
if(param.startsWith("--")) continue;
if(param.startsWith(QString::fromUtf8("http://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("ftp://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("https://"), Qt::CaseInsensitive)) {
BTSession->downloadFromUrl(param);
}else{

View File

@@ -1,6 +1,6 @@
[Desktop Entry]
Categories=Qt;Network;P2P;
Comment=V1.5.0
Comment=V1.5.6
Exec=qbittorrent %f
GenericName=Bittorrent client
GenericName[bg]=Торент клиент
@@ -25,6 +25,7 @@ GenericName[sv]=Bittorrent-klient
GenericName[tr]=Bittorrent istemcisi
GenericName[uk]=Bittorrent-клієнт
GenericName[zh]=Bittorrent之用户
GenericName[zh_TW]=Bittorrent客戶端
Icon=qbittorrent
MimeType=application/x-bittorrent;
Name=qBittorrent

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -63,7 +63,6 @@ SearchTab::SearchTab(SearchEngine *parent) : QWidget(), parent(parent)
SearchListModel->setHeaderData(SEARCH_SEEDERS, Qt::Horizontal, tr("Seeders", "i.e: Number of full sources"));
SearchListModel->setHeaderData(SEARCH_LEECHERS, Qt::Horizontal, tr("Leechers", "i.e: Number of partial sources"));
SearchListModel->setHeaderData(SEARCH_ENGINE, Qt::Horizontal, tr("Search engine"));
resultsBrowser->hideColumn(URL_COLUMN); // Hide url column
proxyModel = new QSortFilterProxyModel();
proxyModel->setDynamicSortFilter(true);
@@ -73,6 +72,8 @@ SearchTab::SearchTab(SearchEngine *parent) : QWidget(), parent(parent)
SearchDelegate = new SearchListDelegate();
resultsBrowser->setItemDelegate(SearchDelegate);
resultsBrowser->hideColumn(URL_COLUMN); // Hide url column
resultsBrowser->setRootIsDecorated(false);
resultsBrowser->setAllColumnsShowFocus(true);
resultsBrowser->setSortingEnabled(true);
@@ -134,16 +135,23 @@ QTreeView* SearchTab::getCurrentTreeView()
return resultsBrowser;
}
QStandardItemModel* SearchTab::getCurrentSearchListModel()
QSortFilterProxyModel* SearchTab::getCurrentSearchListProxy() const
{
return proxyModel;
}
QStandardItemModel* SearchTab::getCurrentSearchListModel() const
{
return SearchListModel;
}
// Set the color of a row in data model
void SearchTab::setRowColor(int row, QString color){
proxyModel->setDynamicSortFilter(false);
for(int i=0; i<proxyModel->columnCount(); ++i){
proxyModel->setData(proxyModel->index(row, i), QVariant(QColor(color)), Qt::ForegroundRole);
}
proxyModel->setDynamicSortFilter(true);
}

View File

@@ -63,7 +63,8 @@ public:
~SearchTab();
bool loadColWidthResultsList();
QLabel * getCurrentLabel();
QStandardItemModel * getCurrentSearchListModel();
QStandardItemModel* getCurrentSearchListModel() const;
QSortFilterProxyModel* getCurrentSearchListProxy() const;
QTreeView * getCurrentTreeView();
void setRowColor(int row, QString color);
QHeaderView* header() const;

File diff suppressed because it is too large Load Diff

View File

@@ -42,6 +42,8 @@
using namespace libtorrent;
#define MAX_SAMPLES 20
class downloadThread;
class QTimer;
class QFileSystemWatcher;
@@ -77,6 +79,8 @@ class bittorrent : public QObject {
bool queueingEnabled;
QStringList url_skippingDlg;
QHash<QString, QString> savepath_fromurl;
QPointer<QTimer> timerETA;
QHash<QString, QList<int> > ETA_samples;
protected:
QString getSavePath(QString hash);
@@ -107,7 +111,7 @@ class bittorrent : public QObject {
int loadTorrentPriority(QString hash);
QStringList getConsoleMessages() const;
QStringList getPeerBanMessages() const;
qlonglong getETA(QString hash) const;
qlonglong getETA(QString hash);
bool useTemporaryFolder() const;
QString getDefaultSavePath() const;
@@ -170,12 +174,14 @@ class bittorrent : public QObject {
void processDownloadedFile(QString, QString);
void saveTrackerFile(QString hash);
void addMagnetSkipAddDlg(QString uri);
void downloadFromURLList(const QStringList& urls);
protected slots:
void scanDirectory(QString);
void readAlerts();
void loadTrackerFile(QString hash);
void deleteBigRatios();
void takeETASamples();
signals:
void addedTorrent(QTorrentHandle& h);

View File

@@ -198,6 +198,20 @@ void DownloadingTorrents::deleteTorrent(QString hash) {
qDebug("torrent is not in download list, nothing to delete");
return;
}
// Select item just under (or above nothing under) the one that was deleted
QModelIndex current_prox_index = proxyModel->mapFromSource(DLListModel->index(row, 0, downloadList->rootIndex()));
bool was_selected = downloadList->selectionModel()->isSelected(current_prox_index);
if(DLListModel->rowCount() > 1 && was_selected) {
QModelIndex under_prox_index;
if(current_prox_index.row() == DLListModel->rowCount()-1)
under_prox_index = proxyModel->index(current_prox_index.row()-1, 0);
else
under_prox_index = proxyModel->index(current_prox_index.row()+1, 0);
//downloadList->selectionModel()->select(under_prox_index, QItemSelectionModel::Current|QItemSelectionModel::Columns|QItemSelectionModel::Select);
downloadList->setCurrentIndex(under_prox_index);
downloadList->update();
}
// Actually delete the row
DLListModel->removeRow(row);
--nbTorrents;
emit unfinishedTorrentsNumberChanged(nbTorrents);
@@ -591,10 +605,10 @@ bool DownloadingTorrents::updateTorrent(QTorrentHandle h) {
}
if(!downloadList->isColumnHidden(SEEDSLEECH)) {
QString tmp = misc::toQString(h.num_seeds(), true);
if(h.num_complete() >= 0)
if(h.num_complete() >= h.num_seeds())
tmp.append(QString("(")+misc::toQString(h.num_complete())+QString(")"));
tmp.append(QString("/")+misc::toQString(h.num_peers() - h.num_seeds(), true));
if(h.num_incomplete() >= 0)
if(h.num_incomplete() >= (h.num_peers()-h.num_seeds()))
tmp.append(QString("(")+misc::toQString(h.num_incomplete())+QString(")"));
DLListModel->setData(DLListModel->index(row, SEEDSLEECH), QVariant(tmp));
}

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

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