- Torrent addign and removal functional
[qtrapids] / src / gui / DownloadView.cpp
index a589e39..2f91ff4 100644 (file)
  *   Free Software Foundation, Inc.,                                       *
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
+#include <QDebug>
 #include "DownloadView.h"
 
-DownloadView::DownloadView(QWidget* parent): QTreeWidget(parent)
+DownloadView::DownloadView(QWidget* parent) : 
+       QTreeWidget(parent),
+       items_()
 {
        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)));
+
 }
 
 
@@ -31,3 +38,93 @@ DownloadView::~DownloadView()
 }
 
 
+void DownloadView::newItem(QTorrentHandle handle)
+{
+       qDebug() << "DownloadView::newItem() " << items_.count(handle);
+
+       DownloadViewItem *item = new DownloadViewItem(QStringList()
+                       << handle.name()
+                       << QString::number(handle.getTotalSize())
+                       << handle.state()
+                       << QString::number(handle.progress())
+                       << QString::number(handle.downloadRate()) 
+                       << QString::number(handle.uploadRate()) 
+                       << QString::number(handle.numSeeds()) + "/"
+                                       + QString::number(handle.numLeeches())
+                       << QString::number(handle.ratio())
+                       << "ETA" );
+       
+       addTopLevelItem(item);
+       items_[handle] = item;
+}
+
+
+void DownloadView::updateItem(QTorrentHandle handle)
+{
+       qDebug() << "DownloadView::updateItem() "  << items_.count(handle);
+       
+       if (items_.count(handle) > 0) {
+               DownloadViewItem *item = items_[handle];
+               item->setData(2, Qt::DisplayRole, QVariant(handle.state()));
+               item->setData(3, Qt::DisplayRole,
+                                                                       QVariant(QString::number(handle.progress())));
+               item->setData(4, Qt::DisplayRole,
+                                                                       QVariant(QString::number(handle.downloadRate())));
+               item->setData(5, Qt::DisplayRole,
+                                                                       QVariant(QString::number(handle.uploadRate())));
+               item->setData(6, Qt::DisplayRole, 
+                                                                       QString::number(handle.numSeeds()) + "/" 
+                                                                               + QString::number(handle.numLeeches()));
+       }
+}
+
+
+QTorrentHandle DownloadView::removeSelected()
+{
+       qDebug() << "DownloadView::removeSelected() " <<  topLevelItemCount() ;
+
+       DownloadViewItem *item = dynamic_cast<DownloadViewItem*> (currentItem());
+       
+       std::map<QTorrentHandle, DownloadViewItem*>::iterator listIter
+                       = items_.begin();
+       std::map<QTorrentHandle, DownloadViewItem*>::iterator listEnd
+                       = items_.end();
+       
+       while (listIter != listEnd) {
+               if (listIter->second == item) {
+                       break;
+               }
+               ++listIter;
+       }
+       
+       QTorrentHandle handle = listIter->first;
+       items_.erase(listIter);
+
+       
+       int index = indexOfTopLevelItem(currentItem());
+       if (index >= 0) {
+               takeTopLevelItem(index);
+       }
+       
+       qDebug() << "DownloadView::removeSelected() " <<  topLevelItemCount() ;
+       
+       return handle;
+}
+
+
+void DownloadView::removeItem(QTorrentHandle handle)
+{
+}
+
+
+void DownloadView::on_itemClicked(QTreeWidgetItem * item, int column)
+{/*
+       qDebug() << "DownloadView::on_itemClicked(()" << item << "," << column;
+       qDebug() << "current item" << currentItem();
+       
+       if (item == currentItem() && item->isSelected()) {
+               item->setSelected(false);
+       }
+       */
+}
+