File: finishedmodel.cpp

package info (click to toggle)
dc-qt 0.2.0.alpha-4
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 1,948 kB
  • ctags: 5,361
  • sloc: cpp: 28,936; makefile: 19
file content (92 lines) | stat: -rw-r--r-- 2,035 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//
// C++ Implementation: FinishedModel
//
// Description: 
//
//
// Author: Rikard Björklind <olof@linux.nu>, (C) 2005
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "finishedmodel.h"
#include <QtCore>
#include "log.h"


QVariant FinishedModel::data ( const QModelIndex & index, int role ) const
{
    if(!index.isValid()) return QVariant();
    if(index.row() < 0 || index.row() >= itemList.size()) return QVariant();
    if(index.column() < 0 || index.column()>4) return QVariant();
    if(role == Qt::DisplayRole) {
        int i = index.row();
        switch(index.column()) {
           case 0:
			   return itemList[i]->type==0?tr("Upload"):tr("Download");
            case 1:
                return itemList[i]->target;
            case 2:
                return itemList[i]->user;
			case 3:
                return itemList[i]->hub;
        }
    }
    return QVariant();
}

QVariant FinishedModel::headerData ( int section, Qt::Orientation orientation, int role ) const
{
    if (role != Qt::DisplayRole)
        return QVariant();

    if(orientation==Qt::Horizontal) {
        
		if(section==0) return tr("Type");
		if(section==1) return tr("Target");
		if(section==2) return tr("User");
		if(section==3) return tr("Hub");
    }
    return QVariant();
}

void FinishedModel::onItemAdded( const FinishedItem& item)
{
	logger->debug("FinishedModel::onItemAdded: %d",item.id);
    items[item.id] = item;
    itemList.append( &items[item.id] );
	emit layoutChanged();
}

void FinishedModel::onItemRemoved( int id )
{
	logger->debug("FinishedModel::onItemRemoved: %d",id);
    itemList.removeAll(&items[id]);   
    items.remove(id);
	emit layoutChanged();
}

void FinishedModel::onAllRemoved(int type)
{
	logger->debug("FinishedModel::onAllRemoved: %d",type);
	QList<FinishedItem*>::iterator it = itemList.begin();
	while(it != itemList.end()) {
		FinishedItem *fi = *it;
		if(fi->type == type)
		{
			it = itemList.erase(it);
			items.remove(fi->id);
		}
		else
		  it++;
	}


}