mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-27 03:39:39 +03:00
- Make torrent status filters behave as in µTorrent
This commit is contained in:
parent
46f081d888
commit
d6e1dc9020
4 changed files with 85 additions and 39 deletions
|
@ -41,7 +41,7 @@
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
// Defines for download list list columns
|
// Defines for download list list columns
|
||||||
enum TorrentState {STATE_STALLED, STATE_DOWNLOADING, STATE_SEEDING, STATE_PAUSED, STATE_QUEUED, STATE_CHECKING, STATE_INVALID};
|
enum TorrentState {STATE_DOWNLOADING, STATE_STALLED_DL, STATE_STALLED_UP, STATE_SEEDING, STATE_PAUSED_DL, STATE_PAUSED_UP, STATE_QUEUED_DL, STATE_QUEUED_UP, STATE_CHECKING_UP, STATE_CHECKING_DL, STATE_INVALID};
|
||||||
enum Column {TR_NAME, TR_PRIORITY, TR_SIZE, TR_PROGRESS, TR_STATUS, TR_SEEDS, TR_PEERS, TR_DLSPEED, TR_UPSPEED, TR_ETA, TR_RATIO, TR_HASH};
|
enum Column {TR_NAME, TR_PRIORITY, TR_SIZE, TR_PROGRESS, TR_STATUS, TR_SEEDS, TR_PEERS, TR_DLSPEED, TR_UPSPEED, TR_ETA, TR_RATIO, TR_HASH};
|
||||||
|
|
||||||
class TransferListDelegate: public QItemDelegate {
|
class TransferListDelegate: public QItemDelegate {
|
||||||
|
@ -86,19 +86,23 @@ public:
|
||||||
case STATE_DOWNLOADING:
|
case STATE_DOWNLOADING:
|
||||||
display = tr("Downloading");
|
display = tr("Downloading");
|
||||||
break;
|
break;
|
||||||
case STATE_PAUSED:
|
case STATE_PAUSED_DL:
|
||||||
|
case STATE_PAUSED_UP:
|
||||||
display = tr("Paused");
|
display = tr("Paused");
|
||||||
break;
|
break;
|
||||||
case STATE_QUEUED:
|
case STATE_QUEUED_DL:
|
||||||
|
case STATE_QUEUED_UP:
|
||||||
display = tr("Queued", "i.e. torrent is queued");
|
display = tr("Queued", "i.e. torrent is queued");
|
||||||
break;
|
break;
|
||||||
case STATE_SEEDING:
|
case STATE_SEEDING:
|
||||||
|
case STATE_STALLED_UP:
|
||||||
display = tr("Seeding", "Torrent is complete and in upload-only mode");
|
display = tr("Seeding", "Torrent is complete and in upload-only mode");
|
||||||
break;
|
break;
|
||||||
case STATE_STALLED:
|
case STATE_STALLED_DL:
|
||||||
display = tr("Stalled", "Torrent is waiting for download to begin");
|
display = tr("Stalled", "Torrent is waiting for download to begin");
|
||||||
break;
|
break;
|
||||||
case STATE_CHECKING:
|
case STATE_CHECKING_DL:
|
||||||
|
case STATE_CHECKING_UP:
|
||||||
display = tr("Checking", "Torrent local data is being checked");
|
display = tr("Checking", "Torrent local data is being checked");
|
||||||
}
|
}
|
||||||
QItemDelegate::drawBackground(painter, opt, index);
|
QItemDelegate::drawBackground(painter, opt, index);
|
||||||
|
|
|
@ -65,7 +65,7 @@ public:
|
||||||
|
|
||||||
// SIGNAL/SLOT
|
// SIGNAL/SLOT
|
||||||
connect(this, SIGNAL(currentRowChanged(int)), transferList, SLOT(applyFilter(int)));
|
connect(this, SIGNAL(currentRowChanged(int)), transferList, SLOT(applyFilter(int)));
|
||||||
connect(transferList, SIGNAL(torrentStatusUpdate(uint,uint,uint)), this, SLOT(updateTorrentNumbers(uint, uint, uint)));
|
connect(transferList, SIGNAL(torrentStatusUpdate(uint,uint,uint,uint)), this, SLOT(updateTorrentNumbers(uint, uint, uint, uint)));
|
||||||
|
|
||||||
// Load settings
|
// Load settings
|
||||||
loadSettings();
|
loadSettings();
|
||||||
|
@ -88,8 +88,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void updateTorrentNumbers(uint nb_downloading, uint nb_seeding, uint nb_inactive) {
|
void updateTorrentNumbers(uint nb_downloading, uint nb_seeding, uint nb_active, uint nb_inactive) {
|
||||||
uint nb_active = nb_downloading+nb_seeding;
|
|
||||||
item(FILTER_ALL)->setData(Qt::DisplayRole, tr("All")+" ("+QString::number(nb_active+nb_inactive)+")");
|
item(FILTER_ALL)->setData(Qt::DisplayRole, tr("All")+" ("+QString::number(nb_active+nb_inactive)+")");
|
||||||
item(FILTER_DOWNLOADING)->setData(Qt::DisplayRole, tr("Downloading")+" ("+QString::number(nb_downloading)+")");
|
item(FILTER_DOWNLOADING)->setData(Qt::DisplayRole, tr("Downloading")+" ("+QString::number(nb_downloading)+")");
|
||||||
item(FILTER_COMPLETED)->setData(Qt::DisplayRole, tr("Completed")+" ("+QString::number(nb_seeding)+")");
|
item(FILTER_COMPLETED)->setData(Qt::DisplayRole, tr("Completed")+" ("+QString::number(nb_seeding)+")");
|
||||||
|
|
|
@ -152,11 +152,19 @@ void TransferListWidget::addTorrent(QTorrentHandle& h) {
|
||||||
// Pause torrent if it is
|
// Pause torrent if it is
|
||||||
if(h.is_paused()) {
|
if(h.is_paused()) {
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/paused.png"))), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/paused.png"))), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_PAUSED);
|
if(h.is_seed())
|
||||||
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_PAUSED_UP);
|
||||||
|
else
|
||||||
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_PAUSED_DL);
|
||||||
//setRowColor(row, QString::fromUtf8("red"));
|
//setRowColor(row, QString::fromUtf8("red"));
|
||||||
}else{
|
}else{
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/stalled.png"))), Qt::DecorationRole);
|
if(h.is_seed()) {
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_STALLED);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png"))), Qt::DecorationRole);
|
||||||
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_STALLED_UP);
|
||||||
|
} else {
|
||||||
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/stalled.png"))), Qt::DecorationRole);
|
||||||
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_STALLED_DL);
|
||||||
|
}
|
||||||
//setRowColor(row, QString::fromUtf8("grey"));
|
//setRowColor(row, QString::fromUtf8("grey"));
|
||||||
}
|
}
|
||||||
// Select first torrent to be added
|
// Select first torrent to be added
|
||||||
|
@ -188,11 +196,16 @@ void TransferListWidget::pauseTorrent(QTorrentHandle &h) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::pauseTorrent(int row, bool refresh_list) {
|
void TransferListWidget::pauseTorrent(int row, bool refresh_list) {
|
||||||
|
QTorrentHandle h = BTSession->getTorrentHandle(getHashFromRow(row));
|
||||||
listModel->setData(listModel->index(row, TR_DLSPEED), QVariant((double)0.0));
|
listModel->setData(listModel->index(row, TR_DLSPEED), QVariant((double)0.0));
|
||||||
listModel->setData(listModel->index(row, TR_UPSPEED), QVariant((double)0.0));
|
listModel->setData(listModel->index(row, TR_UPSPEED), QVariant((double)0.0));
|
||||||
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QIcon(QString::fromUtf8(":/Icons/skin/paused.png")), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QIcon(QString::fromUtf8(":/Icons/skin/paused.png")), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_PAUSED);
|
if(h.is_seed()) {
|
||||||
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_PAUSED_UP);
|
||||||
|
} else {
|
||||||
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_PAUSED_DL);
|
||||||
|
}
|
||||||
listModel->setData(listModel->index(row, TR_SEEDS), QVariant(0.0));
|
listModel->setData(listModel->index(row, TR_SEEDS), QVariant(0.0));
|
||||||
listModel->setData(listModel->index(row, TR_PEERS), QVariant(0.0));
|
listModel->setData(listModel->index(row, TR_PEERS), QVariant(0.0));
|
||||||
//setRowColor(row, QString::fromUtf8("red"));
|
//setRowColor(row, QString::fromUtf8("red"));
|
||||||
|
@ -210,10 +223,10 @@ void TransferListWidget::resumeTorrent(int row, bool refresh_list) {
|
||||||
if(!h.is_valid()) return;
|
if(!h.is_valid()) return;
|
||||||
if(h.is_seed()) {
|
if(h.is_seed()) {
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(":/Icons/skin/seeding.png")), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(":/Icons/skin/seeding.png")), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_SEEDING);
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_STALLED_UP);
|
||||||
} else {
|
} else {
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(":/Icons/skin/stalled.png")), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(":/Icons/skin/stalled.png")), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_STALLED);
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_STALLED_DL);
|
||||||
}
|
}
|
||||||
if(refresh_list)
|
if(refresh_list)
|
||||||
refreshList();
|
refreshList();
|
||||||
|
@ -246,12 +259,18 @@ int TransferListWidget::updateTorrent(int row) {
|
||||||
if(h.state() == torrent_status::checking_files || h.state() == torrent_status::queued_for_checking) {
|
if(h.state() == torrent_status::checking_files || h.state() == torrent_status::queued_for_checking) {
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/run-build.png"))), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/run-build.png"))), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_PROGRESS), QVariant((double)h.progress()));
|
listModel->setData(listModel->index(row, TR_PROGRESS), QVariant((double)h.progress()));
|
||||||
s = STATE_CHECKING;
|
if(h.is_seed())
|
||||||
|
s = STATE_CHECKING_UP;
|
||||||
|
else
|
||||||
|
s = STATE_CHECKING_DL;
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), s);
|
listModel->setData(listModel->index(row, TR_STATUS), s);
|
||||||
}else {
|
}else {
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/mail-queue.png"))), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/mail-queue.png"))), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
||||||
s = STATE_QUEUED;
|
if(h.is_seed())
|
||||||
|
s = STATE_QUEUED_UP;
|
||||||
|
else
|
||||||
|
s =STATE_QUEUED_DL;
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), s);
|
listModel->setData(listModel->index(row, TR_STATUS), s);
|
||||||
}
|
}
|
||||||
// Reset speeds and seeds/leech
|
// Reset speeds and seeds/leech
|
||||||
|
@ -263,7 +282,11 @@ int TransferListWidget::updateTorrent(int row) {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(h.is_paused()) return STATE_PAUSED;
|
if(h.is_paused()) {
|
||||||
|
if(h.is_seed())
|
||||||
|
return STATE_PAUSED_UP;
|
||||||
|
return STATE_PAUSED_DL;
|
||||||
|
}
|
||||||
|
|
||||||
// Parse download state
|
// Parse download state
|
||||||
switch(h.state()) {
|
switch(h.state()) {
|
||||||
|
@ -272,8 +295,11 @@ int TransferListWidget::updateTorrent(int row) {
|
||||||
case torrent_status::queued_for_checking:
|
case torrent_status::queued_for_checking:
|
||||||
case torrent_status::checking_resume_data:
|
case torrent_status::checking_resume_data:
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/run-build.png"))), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/oxygen/run-build.png"))), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_CHECKING);
|
if(h.is_seed())
|
||||||
s = STATE_CHECKING;
|
s = STATE_CHECKING_UP;
|
||||||
|
else
|
||||||
|
s = STATE_CHECKING_DL;
|
||||||
|
listModel->setData(listModel->index(row, TR_STATUS), s);
|
||||||
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
||||||
//setRowColor(row, QString::fromUtf8("grey"));
|
//setRowColor(row, QString::fromUtf8("grey"));
|
||||||
break;
|
break;
|
||||||
|
@ -282,24 +308,27 @@ int TransferListWidget::updateTorrent(int row) {
|
||||||
if(h.download_payload_rate() > 0) {
|
if(h.download_payload_rate() > 0) {
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/downloading.png"))), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/downloading.png"))), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)BTSession->getETA(hash)));
|
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)BTSession->getETA(hash)));
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_DOWNLOADING);
|
|
||||||
s = STATE_DOWNLOADING;
|
s = STATE_DOWNLOADING;
|
||||||
//setRowColor(row, QString::fromUtf8("green"));
|
//setRowColor(row, QString::fromUtf8("green"));
|
||||||
}else{
|
}else{
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/stalled.png"))), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(QString::fromUtf8(":/Icons/skin/stalled.png"))), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_STALLED);
|
s = STATE_STALLED_DL;
|
||||||
s = STATE_STALLED;
|
|
||||||
//setRowColor(row, QApplication::palette().color(QPalette::WindowText));
|
//setRowColor(row, QApplication::palette().color(QPalette::WindowText));
|
||||||
}
|
}
|
||||||
|
listModel->setData(listModel->index(row, TR_STATUS), s);
|
||||||
listModel->setData(listModel->index(row, TR_UPSPEED), QVariant((double)h.upload_payload_rate()));
|
listModel->setData(listModel->index(row, TR_UPSPEED), QVariant((double)h.upload_payload_rate()));
|
||||||
break;
|
break;
|
||||||
case torrent_status::finished:
|
case torrent_status::finished:
|
||||||
case torrent_status::seeding:
|
case torrent_status::seeding:
|
||||||
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
||||||
listModel->setData(listModel->index(row, TR_UPSPEED), QVariant((double)h.upload_payload_rate()));
|
listModel->setData(listModel->index(row, TR_UPSPEED), QVariant((double)h.upload_payload_rate()));
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_SEEDING);
|
if(h.upload_payload_rate() > 0) {
|
||||||
s = STATE_SEEDING;
|
s = STATE_SEEDING;
|
||||||
|
} else {
|
||||||
|
s = STATE_STALLED_UP;
|
||||||
|
}
|
||||||
|
listModel->setData(listModel->index(row, TR_STATUS), s);
|
||||||
}
|
}
|
||||||
// Common to both downloads and uploads
|
// Common to both downloads and uploads
|
||||||
listModel->setData(listModel->index(row, TR_PROGRESS), QVariant((double)h.progress()));
|
listModel->setData(listModel->index(row, TR_PROGRESS), QVariant((double)h.progress()));
|
||||||
|
@ -335,11 +364,11 @@ void TransferListWidget::setFinished(QTorrentHandle &h) {
|
||||||
if(row >= 0) {
|
if(row >= 0) {
|
||||||
if(h.is_paused()) {
|
if(h.is_paused()) {
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QIcon(":/Icons/skin/paused.png"), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QIcon(":/Icons/skin/paused.png"), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_PAUSED);
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_PAUSED_UP);
|
||||||
//setRowColor(row, "red");
|
//setRowColor(row, "red");
|
||||||
}else{
|
}else{
|
||||||
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(":/Icons/skin/seeding.png")), Qt::DecorationRole);
|
listModel->setData(listModel->index(row, TR_NAME), QVariant(QIcon(":/Icons/skin/seeding.png")), Qt::DecorationRole);
|
||||||
listModel->setData(listModel->index(row, TR_STATUS), STATE_SEEDING);
|
listModel->setData(listModel->index(row, TR_STATUS), STATE_STALLED_UP);
|
||||||
//setRowColor(row, "orange");
|
//setRowColor(row, "orange");
|
||||||
}
|
}
|
||||||
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
listModel->setData(listModel->index(row, TR_ETA), QVariant((qlonglong)-1));
|
||||||
|
@ -357,27 +386,37 @@ void TransferListWidget::setRefreshInterval(int t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransferListWidget::refreshList() {
|
void TransferListWidget::refreshList() {
|
||||||
unsigned int nb_downloading = 0, nb_seeding=0, nb_inactive = 0;
|
unsigned int nb_downloading = 0, nb_seeding=0, nb_active=0, nb_inactive = 0;
|
||||||
for(int i=0; i<listModel->rowCount(); ++i) {
|
for(int i=0; i<listModel->rowCount(); ++i) {
|
||||||
int s = updateTorrent(i);
|
int s = updateTorrent(i);
|
||||||
switch(s) {
|
switch(s) {
|
||||||
case STATE_DOWNLOADING:
|
case STATE_DOWNLOADING:
|
||||||
case STATE_STALLED:
|
++nb_active;
|
||||||
|
++nb_downloading;
|
||||||
|
break;
|
||||||
|
case STATE_STALLED_DL:
|
||||||
|
case STATE_CHECKING_DL:
|
||||||
|
case STATE_PAUSED_DL:
|
||||||
|
case STATE_QUEUED_DL:
|
||||||
|
++nb_inactive;
|
||||||
++nb_downloading;
|
++nb_downloading;
|
||||||
break;
|
break;
|
||||||
case STATE_SEEDING:
|
case STATE_SEEDING:
|
||||||
|
++nb_active;
|
||||||
++nb_seeding;
|
++nb_seeding;
|
||||||
break;
|
break;
|
||||||
case STATE_CHECKING:
|
case STATE_STALLED_UP:
|
||||||
case STATE_PAUSED:
|
case STATE_CHECKING_UP:
|
||||||
case STATE_QUEUED:
|
case STATE_PAUSED_UP:
|
||||||
|
case STATE_QUEUED_UP:
|
||||||
|
++nb_seeding;
|
||||||
++nb_inactive;
|
++nb_inactive;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
emit torrentStatusUpdate(nb_downloading, nb_seeding, nb_inactive);
|
emit torrentStatusUpdate(nb_downloading, nb_seeding, nb_active, nb_inactive);
|
||||||
}
|
}
|
||||||
|
|
||||||
int TransferListWidget::getRowFromHash(QString hash) const{
|
int TransferListWidget::getRowFromHash(QString hash) const{
|
||||||
|
@ -881,8 +920,8 @@ void TransferListWidget::displayListMenu(const QPoint&) {
|
||||||
added_preview_action = true;
|
added_preview_action = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(added_preview_action)
|
if(added_preview_action)
|
||||||
listMenu.addSeparator();
|
listMenu.addSeparator();
|
||||||
if(one_has_metadata) {
|
if(one_has_metadata) {
|
||||||
listMenu.addAction(&actionForce_recheck);
|
listMenu.addAction(&actionForce_recheck);
|
||||||
listMenu.addSeparator();
|
listMenu.addSeparator();
|
||||||
|
@ -1010,16 +1049,20 @@ void TransferListWidget::currentChanged(const QModelIndex& current, const QModel
|
||||||
void TransferListWidget::applyFilter(int f) {
|
void TransferListWidget::applyFilter(int f) {
|
||||||
switch(f) {
|
switch(f) {
|
||||||
case FILTER_DOWNLOADING:
|
case FILTER_DOWNLOADING:
|
||||||
proxyModel->setFilterRegExp(QRegExp(QString::number(STATE_DOWNLOADING)+"|"+QString::number(STATE_STALLED), Qt::CaseSensitive));
|
proxyModel->setFilterRegExp(QRegExp(QString::number(STATE_DOWNLOADING)+"|"+QString::number(STATE_STALLED_DL)+"|"+
|
||||||
|
QString::number(STATE_PAUSED_DL)+"|"+QString::number(STATE_CHECKING_DL)+"|"+
|
||||||
|
QString::number(STATE_QUEUED_DL), Qt::CaseSensitive));
|
||||||
break;
|
break;
|
||||||
case FILTER_COMPLETED:
|
case FILTER_COMPLETED:
|
||||||
proxyModel->setFilterRegExp(QRegExp(QString::number(STATE_SEEDING), Qt::CaseSensitive, QRegExp::FixedString));
|
proxyModel->setFilterRegExp(QRegExp(QString::number(STATE_SEEDING)+"|"+QString::number(STATE_STALLED_UP)+"|"+
|
||||||
|
QString::number(STATE_PAUSED_UP)+"|"+QString::number(STATE_CHECKING_UP)+"|"+
|
||||||
|
QString::number(STATE_QUEUED_UP), Qt::CaseSensitive));
|
||||||
break;
|
break;
|
||||||
case FILTER_ACTIVE:
|
case FILTER_ACTIVE:
|
||||||
proxyModel->setFilterRegExp(QRegExp(QString::number(STATE_DOWNLOADING)+"|"+QString::number(STATE_SEEDING)+"|"+QString::number(STATE_STALLED), Qt::CaseSensitive));
|
proxyModel->setFilterRegExp(QRegExp(QString::number(STATE_DOWNLOADING)+"|"+QString::number(STATE_SEEDING), Qt::CaseSensitive));
|
||||||
break;
|
break;
|
||||||
case FILTER_INACTIVE:
|
case FILTER_INACTIVE:
|
||||||
proxyModel->setFilterRegExp(QRegExp(QString::number(STATE_CHECKING)+"|"+QString::number(STATE_PAUSED)+"|"+QString::number(STATE_QUEUED), Qt::CaseSensitive));
|
proxyModel->setFilterRegExp(QRegExp("[^"+QString::number(STATE_DOWNLOADING)+QString::number(STATE_SEEDING)+"]", Qt::CaseSensitive));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
proxyModel->setFilterRegExp(QRegExp());
|
proxyModel->setFilterRegExp(QRegExp());
|
||||||
|
|
|
@ -110,7 +110,7 @@ public slots:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void currentTorrentChanged(QTorrentHandle &h);
|
void currentTorrentChanged(QTorrentHandle &h);
|
||||||
void torrentStatusUpdate(unsigned int, unsigned int, unsigned int);
|
void torrentStatusUpdate(unsigned int nb_downloading, unsigned int nb_seeding, unsigned int nb_active, unsigned int nb_inactive);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue