1 /* This file is part of the KDE project
3 Copyright (C) 2006 Dario Massarin <nekkar@libero.it>
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
11 #include "transfersview.h"
13 #include "transfersviewdelegate.h"
18 #include <QHeaderView>
20 TransfersView::TransfersView(QWidget
* parent
)
23 setRootIsDecorated(false);
25 setAllColumnsShowFocus(true);
26 header()->setDefaultAlignment(Qt::AlignCenter
);
27 header()->setMinimumSectionSize(80);
29 setSelectionMode(QAbstractItemView::ExtendedSelection
);
32 setDropIndicatorShown(true);
33 setEditTriggers(QAbstractItemView::NoEditTriggers
);
34 setVerticalScrollMode(QAbstractItemView::ScrollPerPixel
);
35 setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel
);
38 TransfersView::~TransfersView()
41 for (int i
= 0; i
<5; i
++)
43 list
.append(columnWidth(i
));
45 Settings::setColumnWidths( list
);
46 Settings::self()->writeConfig();
49 void TransfersView::setModel(QAbstractItemModel
* model
)
51 QTreeView::setModel(model
);
53 int nGroups
= model
->rowCount(QModelIndex());
55 for(int i
= 0; i
< nGroups
; i
++)
57 kDebug(5001) << "openEditor for row " << i
;
58 openPersistentEditor(model
->index(i
, 1, QModelIndex()));
61 QList
<int> sizeList
= Settings::columnWidths();
63 if (!sizeList
.isEmpty())
66 foreach(int i
, sizeList
)
68 setColumnWidth( j
, i
);
74 setColumnWidth(0 , 250);
78 connect(model
, SIGNAL(rowsRemoved(const QModelIndex
&, int, int)), SLOT (toggleMainGroup()));
81 QModelIndex
TransfersView::indexFromTransferHandler(TransferHandler
*handler
)
83 for(int groupRow
= 0; groupRow
< model()->rowCount(); groupRow
++) {
84 QModelIndex groupIndex
= model()->index(groupRow
, 0, QModelIndex());
85 for(int transferRow
= 0; transferRow
< model()->rowCount(groupIndex
); transferRow
++) {
86 QModelIndex index
= model()->index(transferRow
, 0, groupIndex
);
88 TransferHandler
*indexHandler
= static_cast <TransferHandler
*> (index
.internalPointer());
89 if(indexHandler
== handler
) {
97 void TransfersView::dropEvent(QDropEvent
* event
)
99 QModelIndex dropIndex
= indexAt(event
->pos());
100 QTreeView::dropEvent(event
);
102 setExpanded(dropIndex
, true);
105 void TransfersView::rowsInserted(const QModelIndex
& parent
, int start
, int end
)
107 kDebug(5001) << "TransfersView::rowsInserted";
109 if(!parent
.isValid())
111 kDebug(5001) << "parent is not valid " << start
<< " " << end
;
113 for(int i
= start
; i
<= end
; i
++)
115 kDebug(5001) << "openEditor for row " << i
;
116 openPersistentEditor(model()->index(i
, 1, parent
));
120 QTreeView::rowsInserted(parent
, start
, end
);
122 setExpanded(parent
, true);
126 void TransfersView::dragMoveEvent ( QDragMoveEvent
* event
)
129 TransfersViewDelegate
*view_delegate
= static_cast <TransfersViewDelegate
*> (itemDelegate());
131 view_delegate
->closeExpandableDetails();
134 void TransfersView::toggleMainGroup()
136 // show or hide the first group header if there's only one download group
137 int nGroups
= model()->rowCount(QModelIndex());
140 setRootIndex(model()->index(0, 0, QModelIndex()));
143 setRootIndex(QModelIndex());
147 void TransfersView::rowsAboutToBeRemoved(const QModelIndex
& parent
, int start
, int end
)
152 TransfersViewDelegate
*view_delegate
= static_cast <TransfersViewDelegate
*> (itemDelegate());
153 view_delegate
->closeExpandableDetails(currentIndex());
156 #include "transfersview.moc"