┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kitemlistview.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2011-09-23 23:37:42 +0200
committerPeter Penz <[email protected]>2011-09-23 23:38:51 +0200
commit9ea4d3c70c3765c1ef417642a392465caa31997c (patch)
tree501200dfc615f61858fc96e7066b040db28123c1 /src/kitemviews/kitemlistview.cpp
parent56852cff392f33ee731129fd9a755544d817e590 (diff)
Increase the width of the first column automatically
Additionally it is assured that on role-changes the size-hints get updated if necessary.
Diffstat (limited to 'src/kitemviews/kitemlistview.cpp')
-rw-r--r--src/kitemviews/kitemlistview.cpp50
1 files changed, 31 insertions, 19 deletions
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp
index ef429e544..f15d1ed9d 100644
--- a/src/kitemviews/kitemlistview.cpp
+++ b/src/kitemviews/kitemlistview.cpp
@@ -204,6 +204,7 @@ void KItemListView::setVisibleRoles(const QList<QByteArray>& roles)
if (m_header) {
m_header->setVisibleRoles(roles);
m_header->setVisibleRolesWidths(headerRolesWidths());
+ m_useHeaderWidths = false;
}
}
@@ -463,6 +464,12 @@ void KItemListView::initializeItemListWidget(KItemListWidget* item)
Q_UNUSED(item);
}
+bool KItemListView::itemSizeHintUpdateRequired(const QSet<QByteArray>& changedRoles) const
+{
+ Q_UNUSED(changedRoles);
+ return true;
+}
+
void KItemListView::onControllerChanged(KItemListController* current, KItemListController* previous)
{
Q_UNUSED(current);
@@ -578,11 +585,19 @@ void KItemListView::resizeEvent(QGraphicsSceneResizeEvent* event)
updateHeaderWidth();
}
-void KItemListView::slotItemsInserted(const KItemRangeList& itemRanges)
+bool KItemListView::markVisibleRolesSizesAsDirty()
{
- if (!m_useHeaderWidths) {
- markVisibleRolesSizesAsDirty();
+ const bool dirty = m_itemSize.isEmpty();
+ if (dirty && !m_useHeaderWidths) {
+ m_visibleRolesSizes.clear();
+ m_layouter->setItemSize(QSizeF());
}
+ return dirty;
+}
+
+void KItemListView::slotItemsInserted(const KItemRangeList& itemRanges)
+{
+ markVisibleRolesSizesAsDirty();
const bool hasMultipleRanges = (itemRanges.count() > 1);
if (hasMultipleRanges) {
@@ -655,9 +670,7 @@ void KItemListView::slotItemsInserted(const KItemRangeList& itemRanges)
void KItemListView::slotItemsRemoved(const KItemRangeList& itemRanges)
{
- if (!m_useHeaderWidths) {
- markVisibleRolesSizesAsDirty();
- }
+ markVisibleRolesSizesAsDirty();
const bool hasMultipleRanges = (itemRanges.count() > 1);
if (hasMultipleRanges) {
@@ -739,12 +752,22 @@ void KItemListView::slotItemsRemoved(const KItemRangeList& itemRanges)
void KItemListView::slotItemsChanged(const KItemRangeList& itemRanges,
const QSet<QByteArray>& roles)
{
+ const bool updateSizeHints = itemSizeHintUpdateRequired(roles);
+ if (updateSizeHints) {
+ markVisibleRolesSizesAsDirty();
+ }
+
foreach (const KItemRange& itemRange, itemRanges) {
const int index = itemRange.index;
const int count = itemRange.count;
- m_sizeHintResolver->itemsChanged(index, count, roles);
+ if (updateSizeHints) {
+ m_sizeHintResolver->itemsChanged(index, count, roles);
+ m_layouter->markAsDirty();
+ updateLayout();
+ }
+ // Apply the changed roles to the visible item-widgets
const int lastIndex = index + count - 1;
for (int i = index; i <= lastIndex; ++i) {
KItemListWidget* widget = m_visibleItems.value(i);
@@ -752,6 +775,7 @@ void KItemListView::slotItemsChanged(const KItemRangeList& itemRanges,
widget->setData(m_model->data(i), roles);
}
}
+
}
}
@@ -884,7 +908,6 @@ void KItemListView::slotVisibleRoleWidthChanged(const QByteArray& role,
qreal previousWidth)
{
Q_UNUSED(previousWidth);
- Q_ASSERT(m_header);
m_useHeaderWidths = true;
@@ -1292,17 +1315,6 @@ void KItemListView::setLayouterSize(const QSizeF& size, SizeType sizeType)
}
}
-bool KItemListView::markVisibleRolesSizesAsDirty()
-{
- const bool dirty = m_itemSize.isEmpty();
- if (dirty) {
- m_visibleRolesSizes.clear();
- m_layouter->setItemSize(QSizeF());
- m_useHeaderWidths = false;
- }
- return dirty;
-}
-
void KItemListView::applyDynamicItemSize()
{
if (!m_itemSize.isEmpty()) {