- Torrent addign and removal functional
[qtrapids] / src / gui / DownloadView.cpp
1 /***************************************************************************
2  *   Copyright (C) 2009 by Lassi Väätämöinen   *
3  *   lassi.vaatamoinen@ixonos.com   *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU General Public License as published by  *
7  *   the Free Software Foundation; either version 2 of the License, or     *
8  *   (at your option) any later version.                                   *
9  *                                                                         *
10  *   This program is distributed in the hope that it will be useful,       *
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13  *   GNU General Public License for more details.                          *
14  *                                                                         *
15  *   You should have received a copy of the GNU General Public License     *
16  *   along with this program; if not, write to the                         *
17  *   Free Software Foundation, Inc.,                                       *
18  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19  ***************************************************************************/
20 #include <QDebug>
21 #include "DownloadView.h"
22
23 DownloadView::DownloadView(QWidget* parent) : 
24         QTreeWidget(parent),
25         items_()
26 {
27         setRootIsDecorated(false); // Hide branch lines, making one-level treeview (similar to list)
28         setHeaderItem(DownloadViewItem::getHeaderItem());
29         
30         connect(this, SIGNAL(itemPressed(QTreeWidgetItem*, int)),
31                                         this, SLOT(on_itemClicked(QTreeWidgetItem*, int)));
32
33 }
34
35
36 DownloadView::~DownloadView()
37 {
38 }
39
40
41 void DownloadView::newItem(QTorrentHandle handle)
42 {
43         qDebug() << "DownloadView::newItem() " << items_.count(handle);
44
45         DownloadViewItem *item = new DownloadViewItem(QStringList()
46                         << handle.name()
47                         << QString::number(handle.getTotalSize())
48                         << handle.state()
49                         << QString::number(handle.progress())
50                         << QString::number(handle.downloadRate()) 
51                         << QString::number(handle.uploadRate()) 
52                         << QString::number(handle.numSeeds()) + "/"
53                                         + QString::number(handle.numLeeches())
54                         << QString::number(handle.ratio())
55                         << "ETA" );
56         
57         addTopLevelItem(item);
58         items_[handle] = item;
59 }
60
61
62 void DownloadView::updateItem(QTorrentHandle handle)
63 {
64         qDebug() << "DownloadView::updateItem() "  << items_.count(handle);
65         
66         if (items_.count(handle) > 0) {
67                 DownloadViewItem *item = items_[handle];
68                 item->setData(2, Qt::DisplayRole, QVariant(handle.state()));
69                 item->setData(3, Qt::DisplayRole,
70                                                                         QVariant(QString::number(handle.progress())));
71                 item->setData(4, Qt::DisplayRole,
72                                                                         QVariant(QString::number(handle.downloadRate())));
73                 item->setData(5, Qt::DisplayRole,
74                                                                         QVariant(QString::number(handle.uploadRate())));
75                 item->setData(6, Qt::DisplayRole, 
76                                                                         QString::number(handle.numSeeds()) + "/" 
77                                                                                 + QString::number(handle.numLeeches()));
78         }
79 }
80
81
82 QTorrentHandle DownloadView::removeSelected()
83 {
84         qDebug() << "DownloadView::removeSelected() " <<  topLevelItemCount() ;
85
86         DownloadViewItem *item = dynamic_cast<DownloadViewItem*> (currentItem());
87         
88         std::map<QTorrentHandle, DownloadViewItem*>::iterator listIter
89                         = items_.begin();
90         std::map<QTorrentHandle, DownloadViewItem*>::iterator listEnd
91                         = items_.end();
92         
93         while (listIter != listEnd) {
94                 if (listIter->second == item) {
95                         break;
96                 }
97                 ++listIter;
98         }
99         
100         QTorrentHandle handle = listIter->first;
101         items_.erase(listIter);
102
103         
104         int index = indexOfTopLevelItem(currentItem());
105         if (index >= 0) {
106                 takeTopLevelItem(index);
107         }
108         
109         qDebug() << "DownloadView::removeSelected() " <<  topLevelItemCount() ;
110         
111         return handle;
112 }
113
114
115 void DownloadView::removeItem(QTorrentHandle handle)
116 {
117 }
118
119
120 void DownloadView::on_itemClicked(QTreeWidgetItem * item, int column)
121 {/*
122         qDebug() << "DownloadView::on_itemClicked(()" << item << "," << column;
123         qDebug() << "current item" << currentItem();
124         
125         if (item == currentItem() && item->isSelected()) {
126                 item->setSelected(false);
127         }
128         */
129 }
130