diff options
| author | Peter Penz <[email protected]> | 2012-05-02 23:56:22 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-05-02 23:57:04 +0200 |
| commit | aacf20282d9b7d78bda93ba946cdcf2e0fee5692 (patch) | |
| tree | 738a8680f755b2800bb1921ca1d60a33b75c047b /src/kitemviews | |
| parent | f158bf097a079cba181afa9ecc03e5eb20f3573a (diff) | |
Places Panel: Allow showing of hidden items
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kitemlistview.cpp | 7 | ||||
| -rw-r--r-- | src/kitemviews/kstandarditem.cpp | 13 | ||||
| -rw-r--r-- | src/kitemviews/kstandarditemlistwidget.cpp | 9 | ||||
| -rw-r--r-- | src/kitemviews/kstandarditemmodel.cpp | 4 | ||||
| -rw-r--r-- | src/kitemviews/kstandarditemmodel.h | 2 |
5 files changed, 27 insertions, 8 deletions
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index a3fc2bafc..4bcdab105 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -922,6 +922,13 @@ void KItemListView::slotItemsInserted(const KItemRangeList& itemRanges) } } + // In case if items of the same group have been inserted before an item that + // currently represents the first item of the group, the group header of + // this item must be removed. + if (m_grouped && index + count < m_model->count()) { + updateGroupHeaderForWidget(m_visibleItems.value(index + count)); + } + if (m_model->count() == count && m_activeTransactions == 0) { // Check whether a scrollbar is required to show the inserted items. In this case // the size of the layouter will be decreased before calling doLayout(): This prevents diff --git a/src/kitemviews/kstandarditem.cpp b/src/kitemviews/kstandarditem.cpp index e7655f9c8..cce1dece1 100644 --- a/src/kitemviews/kstandarditem.cpp +++ b/src/kitemviews/kstandarditem.cpp @@ -20,6 +20,7 @@ #include "kstandarditem.h" #include <KDebug> +#include "kstandarditemmodel.h" KStandardItem::KStandardItem(KStandardItem* parent) : m_parent(parent), @@ -62,7 +63,7 @@ KStandardItem::~KStandardItem() void KStandardItem::setText(const QString& text) { - m_data.insert("text", text); + setDataValue("text", text); } QString KStandardItem::text() const @@ -72,7 +73,7 @@ QString KStandardItem::text() const void KStandardItem::setIcon(const QIcon& icon) { - m_data.insert("iconName", icon.name()); + setDataValue("iconName", icon.name()); } QIcon KStandardItem::icon() const @@ -82,7 +83,7 @@ QIcon KStandardItem::icon() const void KStandardItem::setGroup(const QString& group) { - m_data.insert("group", group); + setDataValue("group", group); } QString KStandardItem::group() const @@ -93,6 +94,12 @@ QString KStandardItem::group() const void KStandardItem::setDataValue(const QByteArray& role, const QVariant& value) { m_data.insert(role, value); + if (m_model) { + const int index = m_model->index(this); + QSet<QByteArray> changedRoles; + changedRoles.insert(role); + emit m_model->itemsChanged(KItemRangeList() << KItemRange(index, 1), changedRoles); + } } QVariant KStandardItem::dataValue(const QByteArray& role) const diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index 14a3db066..3f470b8cf 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -259,7 +259,7 @@ void KStandardItemListWidget::paint(QPainter* painter, const QStyleOptionGraphic } painter->setFont(itemListStyleOption.font); - painter->setPen(textColor()); + painter->setPen(m_isHidden ? m_additionalInfoTextColor : textColor()); const TextInfo* textInfo = m_textInfo.value("text"); painter->drawStaticText(textInfo->pos, textInfo->staticText); @@ -480,12 +480,15 @@ void KStandardItemListWidget::dataChanged(const QHash<QByteArray, QVariant>& cur QSet<QByteArray> dirtyRoles; if (roles.isEmpty()) { dirtyRoles = visibleRoles().toSet(); - dirtyRoles.insert("iconPixmap"); - dirtyRoles.insert("iconName"); } else { dirtyRoles = roles; } + // The icon-state might depend from other roles and hence is + // marked as dirty whenever a role has been changed + dirtyRoles.insert("iconPixmap"); + dirtyRoles.insert("iconName"); + QSetIterator<QByteArray> it(dirtyRoles); while (it.hasNext()) { const QByteArray& role = it.next(); diff --git a/src/kitemviews/kstandarditemmodel.cpp b/src/kitemviews/kstandarditemmodel.cpp index d0be1325f..ffacd3c59 100644 --- a/src/kitemviews/kstandarditemmodel.cpp +++ b/src/kitemviews/kstandarditemmodel.cpp @@ -38,7 +38,7 @@ KStandardItemModel::~KStandardItemModel() void KStandardItemModel::insertItem(int index, KStandardItem* item) { - if (item && !m_indexesForItems.contains(item) && !item->m_model) { + if (item && !m_indexesForItems.contains(item)) { item->m_model = this; m_items.insert(index, item); m_indexesForItems.insert(item, index); @@ -51,7 +51,7 @@ void KStandardItemModel::insertItem(int index, KStandardItem* item) void KStandardItemModel::replaceItem(int index, KStandardItem* item) { - if (item && index >= 0 && index < count() && !item->m_model) { + if (item && index >= 0 && index < count()) { item->m_model = this; QSet<QByteArray> changedRoles; diff --git a/src/kitemviews/kstandarditemmodel.h b/src/kitemviews/kstandarditemmodel.h index d1a036fd0..510342a81 100644 --- a/src/kitemviews/kstandarditemmodel.h +++ b/src/kitemviews/kstandarditemmodel.h @@ -98,6 +98,8 @@ protected: private: QList<KStandardItem*> m_items; QHash<const KStandardItem*, int> m_indexesForItems; + + friend class KStandardItem; }; #endif |
