* maximal -> maximum
[kdenetwork.git] / kget / ui / transfersview.cpp
blobaa8a2950bfd2fdb49518d1a175154eaf47d6bc32
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.
9 */
11 #include "transfersview.h"
12 #include "settings.h"
13 #include "transfersviewdelegate.h"
15 #include <kdebug.h>
17 #include <QDropEvent>
18 #include <QHeaderView>
20 TransfersView::TransfersView(QWidget * parent)
21 : QTreeView(parent)
23 setRootIsDecorated(false);
24 setAnimated(true);
25 setAllColumnsShowFocus(true);
26 header()->setDefaultAlignment(Qt::AlignCenter);
27 header()->setMinimumSectionSize(80);
29 setSelectionMode(QAbstractItemView::ExtendedSelection);
30 setDragEnabled(true);
31 setAcceptDrops(true);
32 setDropIndicatorShown(true);
33 setEditTriggers(QAbstractItemView::NoEditTriggers);
34 setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
35 setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
38 TransfersView::~TransfersView()
40 QList<int> list;
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())
65 int j = 0;
66 foreach(int i, sizeList)
68 setColumnWidth( j, i );
69 j++;
72 else
74 setColumnWidth(0 , 250);
77 toggleMainGroup();
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) {
90 return index;
94 return QModelIndex();
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);
123 toggleMainGroup();
126 void TransfersView::dragMoveEvent ( QDragMoveEvent * event )
128 Q_UNUSED(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());
139 if(nGroups <= 1) {
140 setRootIndex(model()->index(0, 0, QModelIndex()));
142 else {
143 setRootIndex(QModelIndex());
147 void TransfersView::rowsAboutToBeRemoved(const QModelIndex & parent, int start, int end)
149 Q_UNUSED(parent);
150 Q_UNUSED(start);
151 Q_UNUSED(end);
152 TransfersViewDelegate *view_delegate = static_cast <TransfersViewDelegate *> (itemDelegate());
153 view_delegate->closeExpandableDetails(currentIndex());
156 #include "transfersview.moc"