]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemlistview.cpp
Implement group-header layouting
[dolphin.git] / src / kitemviews / kfileitemlistview.cpp
index f1594b10b01171768251c740281623a1b2a14017..a3cf8829093f8a6352ea8dc353dae7abb8ef5d63 100644 (file)
@@ -68,8 +68,11 @@ KFileItemListView::KFileItemListView(QGraphicsWidget* parent) :
 
 KFileItemListView::~KFileItemListView()
 {
-    delete widgetCreator();
+    // The group headers are children of the widgets created by
+    // widgetCreator(). So it is mandatory to delete the group headers
+    // first.
     delete groupHeaderCreator();
+    delete widgetCreator();
 
     delete m_modelRolesUpdater;
     m_modelRolesUpdater = 0;
@@ -198,29 +201,11 @@ QHash<QByteArray, QSizeF> KFileItemListView::visibleRolesSizes(const KItemRangeL
                 maxTimeExceeded = true;
                 break;
             }
+            ++calculatedItemCount;
         }
         if (maxTimeExceeded) {
             break;
         }
-        ++calculatedItemCount;
-    }
-
-    // Stretch the width of the first role so that the full visible view-width
-    // is used to show all roles.
-    const qreal availableWidth = size().width();
-
-    qreal usedWidth = 0;
-    QHashIterator<QByteArray, QSizeF> it(sizes);
-    while (it.hasNext()) {
-        it.next();
-        usedWidth += it.value().width();
-    }
-
-    if (usedWidth < availableWidth) {
-        const QByteArray role = visibleRoles().first();
-        QSizeF firstRoleSize = sizes.value(role);
-        firstRoleSize.rwidth() += availableWidth - usedWidth;
-        sizes.insert(role, firstRoleSize);
     }
 
 #ifdef KFILEITEMLISTVIEW_DEBUG
@@ -263,6 +248,8 @@ void KFileItemListView::initializeItemListWidget(KItemListWidget* item)
     case DetailsLayout: fileItemListWidget->setLayout(KFileItemListWidget::DetailsLayout); break;
     default:            Q_ASSERT(false); break;
     }
+
+    fileItemListWidget->setAlternatingBackgroundColors(m_itemLayout == DetailsLayout);
 }
 
 bool KFileItemListView::itemSizeHintUpdateRequired(const QSet<QByteArray>& changedRoles) const