]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistview.cpp
Show the role-description in the header of the details view
[dolphin.git] / src / kitemviews / kitemlistview.cpp
index 7b73bc616ab6292112ae083fc40e529478780392..b17ca47b7cb4f5cbd3e206ca5afabf4c5511e8c2 100644 (file)
@@ -199,6 +199,11 @@ void KItemListView::setVisibleRoles(const QList<QByteArray>& roles)
 
     markVisibleRolesSizesAsDirty();
     updateLayout();
+
+    if (m_header) {
+        m_header->setVisibleRoles(roles);
+        m_header->setVisibleRolesWidths(headerRolesWidths());
+    }
 }
 
 QList<QByteArray> KItemListView::visibleRoles() const
@@ -231,6 +236,8 @@ void KItemListView::setHeaderShown(bool show)
         m_header = new KItemListHeader(this);
         m_header->setPos(0, 0);
         m_header->setModel(m_model);
+        m_header->setVisibleRoles(m_visibleRoles);
+        m_header->setVisibleRolesWidths(headerRolesWidths());
         m_header->setZValue(1);
         updateHeaderWidth();
         m_layouter->setHeaderHeight(m_header->size().height());
@@ -759,17 +766,14 @@ void KItemListView::slotCurrentChanged(int current, int previous)
         if (currentBoundingRect.top() < viewGeometry.top()) {
             Q_ASSERT(scrollOrientation() == Qt::Vertical);
             newOffset += currentBoundingRect.top() - viewGeometry.top();
-        }
-        else if ((currentBoundingRect.bottom() > viewGeometry.bottom())) {
+        } else if ((currentBoundingRect.bottom() > viewGeometry.bottom())) {
             Q_ASSERT(scrollOrientation() == Qt::Vertical);
             newOffset += currentBoundingRect.bottom() - viewGeometry.bottom();
-        }
-        else if (currentBoundingRect.left() < viewGeometry.left()) {
+        } else if (currentBoundingRect.left() < viewGeometry.left()) {
             if (scrollOrientation() == Qt::Horizontal) {
                 newOffset += currentBoundingRect.left() - viewGeometry.left();
             }
-        }
-        else if ((currentBoundingRect.right() > viewGeometry.right())) {
+        } else if ((currentBoundingRect.right() > viewGeometry.right())) {
             if (scrollOrientation() == Qt::Horizontal) {
                 newOffset += currentBoundingRect.right() - viewGeometry.right();
             }
@@ -1276,6 +1280,10 @@ void KItemListView::applyDynamicItemSize()
         foreach (KItemListWidget* widget, visibleItemListWidgets()) {
             widget->setVisibleRolesSizes(m_visibleRolesSizes);
         }
+
+        if (m_header) {
+            m_header->setVisibleRolesWidths(headerRolesWidths());
+        }
     }
 
     if (m_layouter->itemSize().isEmpty()) {
@@ -1334,6 +1342,19 @@ void KItemListView::updateHeaderWidth()
     m_header->resize(size().width(), m_header->size().height());
 }
 
+QHash<QByteArray, qreal> KItemListView::headerRolesWidths() const
+{
+    QHash<QByteArray, qreal> rolesWidths;
+
+    QHashIterator<QByteArray, QSizeF> it(m_visibleRolesSizes);
+    while (it.hasNext()) {
+        it.next();
+        rolesWidths.insert(it.key(), it.value().width());
+    }
+
+    return rolesWidths;
+}
+
 int KItemListView::calculateAutoScrollingIncrement(int pos, int range, int oldInc)
 {
     int inc = 0;