X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fclient%2FDownloadView.cpp;h=94bcaf40d877b7ff948bd296ffb8463c967f353b;hb=4fda70ff265b1a5a1f37597f57253272a2b22fbf;hp=d0972341c258447c08b6e5f69010f89bfca07731;hpb=2acb66424c20ea4ddd481b37e4b4dcee3acde632;p=qtrapids diff --git a/src/client/DownloadView.cpp b/src/client/DownloadView.cpp index d097234..94bcaf4 100644 --- a/src/client/DownloadView.cpp +++ b/src/client/DownloadView.cpp @@ -29,14 +29,14 @@ namespace qtrapids { DownloadView::DownloadView(QWidget* parent) : - QTreeWidget(parent), - items_() + QTreeWidget(parent), + items_() { - setRootIsDecorated(false); // Hide branch lines, making one-level treeview (similar to list) - setHeaderItem(DownloadViewItem::getHeaderItem()); + setRootIsDecorated(false); // Hide branch lines, making one-level treeview (similar to list) + setHeaderItem(DownloadViewItem::getHeaderItem()); - connect(this, SIGNAL(itemPressed(QTreeWidgetItem*, int)), - this, SLOT(on_itemClicked(QTreeWidgetItem*, int))); + connect(this, SIGNAL(itemPressed(QTreeWidgetItem*, int)), + this, SLOT(on_itemClicked(QTreeWidgetItem*, int))); } @@ -47,177 +47,164 @@ DownloadView::~DownloadView() void DownloadView::updateItem(TorrentState const& info, ParamsMap_t other_info) { - DownloadItems_t::iterator p = items_.find(info.hash); - switch (info.action) - { - case TorrentState::action_add : - if (p == items_.end()) - { - addItem_(info, other_info); - } - else - { - qWarning() << "item with similar info hash marked as added"; - updateItem_(p.value(), info, other_info); - } - break; - case TorrentState::action_update : - if (p != items_.end()) - { - updateItem_(p.value(), info, other_info); - } - else - { - qWarning() << "item does not exist in list but information update arrived"; - } - break; - case TorrentState::action_remove : - if (p != items_.end()) - { - removeItem_(p.value(), info); - } - else - { - qWarning() << "item removal request arrived but there is no such item"; - } - break; - default: - qWarning() << "unknown action requested: " << info.action; - break; - } + DownloadItems_t::iterator p = items_.find(info.hash); + switch (info.action) { + case TorrentState::action_add : + if (p == items_.end()) { + addItem_(info, other_info); + } else { + qWarning() << "item with similar info hash marked as added"; + updateItem_(p.value(), info, other_info); + } + break; + case TorrentState::action_update : + if (p != items_.end()) { + updateItem_(p.value(), info, other_info); + } else { + qWarning() << "item does not exist in list but information update arrived"; + } + break; + case TorrentState::action_remove : + if (p != items_.end()) { + removeItem_(p.value(), info); + } else { + qWarning() << "item removal request arrived but there is no such item"; + } + break; + default: + qWarning() << "unknown action requested: " << info.action; + break; + } } void DownloadView::removeItem_(DownloadViewItem *item, TorrentState const& info) { - QString hash = item->getHash(); + QString hash = item->getHash(); - int removed = items_.remove(hash); - if (!removed) - qDebug() << "Inconsistent download view state on item removal"; + int removed = items_.remove(hash); + if (!removed) + qDebug() << "Inconsistent download view state on item removal"; - int index = indexOfTopLevelItem(item); - if (index >= 0) - { - takeTopLevelItem(index); - } + int index = indexOfTopLevelItem(item); + if (index >= 0) { + takeTopLevelItem(index); + } } void DownloadView::addItem_(TorrentState const& info, ParamsMap_t) { - DownloadViewItem *item = new DownloadViewItem - ( info.hash, - QStringList() - << info.name - << formatSize(info.total_size) - << GetStatusString((TorrentStatus::Id)info.state) - << formatProgress(info.progress) - << QString::number(info.down_rate, 'f', 2) - << QString::number(info.up_rate, 'f', 2) - << QString::number(info.seeds) + "/" + QString::number(info.leeches) - << QString::number(info.ratio) - << "ETA" ); - - QBrush brushTmp(GetStatusColor((TorrentStatus::Id)info.state)); - item->setForeground(2, brushTmp); - - addTopLevelItem(item); - items_[info.hash] = item; + DownloadViewItem *item = new DownloadViewItem + ( info.hash, + QStringList() + << info.name + << formatSize(info.total_size) + << GetStatusString((TorrentStatus::Id)info.state) + << formatProgress(info.progress) + << QString::number(info.down_rate, 'f', 2) + << QString::number(info.up_rate, 'f', 2) + << QString::number(info.seeds) + "/" + QString::number(info.leeches) + << QString::number(info.ratio) + << "ETA" ); + + QBrush brushTmp(GetStatusColor((TorrentStatus::Id)info.state)); + item->setForeground(2, brushTmp); + + addTopLevelItem(item); + items_[info.hash] = item; } void DownloadView::updateItem_(DownloadViewItem *item , TorrentState const& info, ParamsMap_t) { - item->setData(2, Qt::DisplayRole, - QVariant(GetStatusString((TorrentStatus::Id)info.state))); - item->setData(3, Qt::DisplayRole, - QVariant(formatProgress(info.progress))); - item->setData(4, Qt::DisplayRole, - QVariant(QString::number(info.down_rate))); - item->setData(5, Qt::DisplayRole, - QVariant(QString::number(info.up_rate))); - item->setData(6, Qt::DisplayRole, - QString::number(info.seeds) + "/" + QString::number(info.leeches)); - - QBrush brushTmp(GetStatusColor((TorrentStatus::Id)info.state)); - item->setForeground(2, brushTmp); + item->setData(2, Qt::DisplayRole, + QVariant(GetStatusString((TorrentStatus::Id)info.state))); + item->setData(3, Qt::DisplayRole, + QVariant(formatProgress(info.progress))); + item->setData(4, Qt::DisplayRole, + QVariant(QString::number(info.down_rate))); + item->setData(5, Qt::DisplayRole, + QVariant(QString::number(info.up_rate))); + item->setData(6, Qt::DisplayRole, + QString::number(info.seeds) + "/" + QString::number(info.leeches)); + + QBrush brushTmp(GetStatusColor((TorrentStatus::Id)info.state)); + item->setForeground(2, brushTmp); } QString DownloadView::prepareRemoveSelected() { - qDebug() << "DownloadView::removeSelected() " << topLevelItemCount() ; + qDebug() << "DownloadView::removeSelected() " << topLevelItemCount() ; - DownloadViewItem *item = dynamic_cast (currentItem()); - QString hash = item->getHash(); + DownloadViewItem *item = dynamic_cast (currentItem()); + QString hash = item->getHash(); - item->setDisabled(true); + item->setDisabled(true); - qDebug() << "DownloadView::removeSelected() " << topLevelItemCount() ; + qDebug() << "DownloadView::removeSelected() " << topLevelItemCount() ; - return hash; + return hash; } void DownloadView::on_itemClicked(QTreeWidgetItem * , int) { - /* - qDebug() << "DownloadView::on_itemClicked(()" << item << "," << column; - qDebug() << "current item" << currentItem(); - - if (item == currentItem() && item->isSelected()) { - item->setSelected(false); - } - */ + /* + qDebug() << "DownloadView::on_itemClicked(()" << item << "," << column; + qDebug() << "current item" << currentItem(); + + if (item == currentItem() && item->isSelected()) { + item->setSelected(false); + } + */ } QString DownloadView::GetStatusString(TorrentStatus::Id status) { - switch (status) - { - case TorrentStatus::QUEUED_FOR_CHECKING : - return tr("Queued"); - case TorrentStatus::CHECKING_FILES : - return tr("Checking"); - case TorrentStatus::DOWNLOADING_METADATA : - return tr("DL meta"); - case TorrentStatus::DOWNLOADING : - return tr("Downloading"); - case TorrentStatus::FINISHED : - return tr("Finished"); - case TorrentStatus::SEEDING : - return tr("Seeding"); - case TorrentStatus::ALLOCATING : - return tr("Allocating"); - case TorrentStatus::CHECKING_RESUME_DATA : - return tr("Checking resume"); - default: - return tr("N/A"); - } + switch (status) { + case TorrentStatus::QUEUED_FOR_CHECKING : + return tr("Queued"); + case TorrentStatus::CHECKING_FILES : + return tr("Checking"); + case TorrentStatus::DOWNLOADING_METADATA : + return tr("DL meta"); + case TorrentStatus::DOWNLOADING : + return tr("Downloading"); + case TorrentStatus::FINISHED : + return tr("Finished"); + case TorrentStatus::SEEDING : + return tr("Seeding"); + case TorrentStatus::ALLOCATING : + return tr("Allocating"); + case TorrentStatus::CHECKING_RESUME_DATA : + return tr("Checking resume"); + default: + return tr("N/A"); + } } QColor DownloadView::GetStatusColor(TorrentStatus::Id status) { - QColor green(40,205,40); - QColor yellow(255,174,0); - - switch (status) - { - case TorrentStatus::QUEUED_FOR_CHECKING : - case TorrentStatus::CHECKING_FILES : - case TorrentStatus::DOWNLOADING_METADATA : - case TorrentStatus::ALLOCATING : - case TorrentStatus::CHECKING_RESUME_DATA: - return yellow; - case TorrentStatus::DOWNLOADING : - case TorrentStatus::FINISHED : - case TorrentStatus::SEEDING : - return green; - default: - return QColor(); - } + QColor green(40,205,40); + QColor yellow(255,174,0); + + switch (status) { + case TorrentStatus::QUEUED_FOR_CHECKING : + case TorrentStatus::CHECKING_FILES : + case TorrentStatus::DOWNLOADING_METADATA : + case TorrentStatus::ALLOCATING : + case TorrentStatus::CHECKING_RESUME_DATA: + return yellow; + case TorrentStatus::DOWNLOADING : + case TorrentStatus::FINISHED : + case TorrentStatus::SEEDING : + return green; + default: + return QColor(); + } } } // namespace qtrapids