25 #include <QtCore/QEvent>
26 #include <QtCore/QTimer>
27 #include <QtGui/QAbstractProxyModel>
28 #include <QtGui/QApplication>
29 #include <QtGui/QHeaderView>
30 #include <QtGui/QListView>
31 #include <QtGui/QResizeEvent>
32 #include <QtGui/QScrollBar>
36 m_resizeColumns(true), m_hideDetailColumns(false)
38 setRootIsDecorated(
false);
39 setSortingEnabled(
true);
40 setUniformRowHeights(
true);
41 setDragDropMode(QListView::DragOnly);
42 setSelectionBehavior(QAbstractItemView::SelectRows);
43 setEditTriggers(QAbstractItemView::NoEditTriggers);
44 setVerticalScrollMode(QListView::ScrollPerPixel);
45 setHorizontalScrollMode(QListView::ScrollPerPixel);
54 if (model->rowCount() == 0) {
59 connect(dirModel->
dirLister(), SIGNAL(completed()),
60 this, SLOT(resetResizing()));
65 connect(model, SIGNAL(layoutChanged()),
this, SLOT(slotLayoutChanged()));
75 m_hideDetailColumns =
false;
77 m_hideDetailColumns =
true;
80 m_hideDetailColumns =
false;
86 setRootIsDecorated(tree);
87 setItemsExpandable(tree);
91 if( tree && m_hideDetailColumns ) {
92 header()->setResizeMode( QHeaderView::ResizeToContents );
93 header()->setStretchLastSection(
false );
101 if (event->type() == QEvent::Polish) {
102 QHeaderView *headerView =
header();
103 headerView->setResizeMode(QHeaderView::Interactive);
104 headerView->setStretchLastSection(
true);
105 headerView->setMovable(
false);
114 else if (event->type() == QEvent::UpdateRequest) {
116 if (model()->rowCount())
117 verticalScrollBar()->setSingleStep((sizeHintForRow(0) / 3) * 4);
125 if (event->mimeData()->hasUrls()) {
126 event->acceptProposedAction();
140 const QModelIndex index = indexAt(event->pos());
142 const Qt::KeyboardModifiers modifiers = QApplication::keyboardModifiers();
143 if (!(modifiers & Qt::ShiftModifier) && !(modifiers & Qt::ControlModifier)) {
154 void KDirOperatorDetailView::resetResizing()
156 QTimer::singleShot(300,
this, SLOT(disableColumnResizing()));
159 void KDirOperatorDetailView::disableColumnResizing()
161 m_resizeColumns =
false;
164 void KDirOperatorDetailView::slotLayoutChanged()
166 if (m_resizeColumns) {
167 QHeaderView *headerView =
header();
168 headerView->resizeSections(QHeaderView::ResizeToContents);
171 int requiredWidth = 0;
172 const int count = headerView->count();
173 for (
int i = 1; i < count; ++i) {
174 requiredWidth += headerView->sectionSize(i);
179 int nameColumnWidth = viewport()->width() - requiredWidth;
180 if (nameColumnWidth < oldNameColumnWidth) {
181 nameColumnWidth = oldNameColumnWidth;