From: Peter Penz Date: Tue, 20 Sep 2011 13:19:11 +0000 (+0200) Subject: Change signature of setVisibleRoles() X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/63e1e3bc14b5538027471ee76b6e92d6425ecf0b Change signature of setVisibleRoles() Simply use a QList instead of QHash. --- diff --git a/src/kitemviews/kfileitemlistview.cpp b/src/kitemviews/kfileitemlistview.cpp index d9742945a..c1d98c810 100644 --- a/src/kitemviews/kfileitemlistview.cpp +++ b/src/kitemviews/kfileitemlistview.cpp @@ -141,10 +141,8 @@ QSizeF KFileItemListView::itemSizeHint(int index) const // For each row exactly one role is shown. Calculate the maximum required width that is necessary // to show all roles without horizontal clipping. qreal maximumRequiredWidth = 0.0; - QHashIterator it(visibleRoles()); - while (it.hasNext()) { - it.next(); - const QByteArray& role = it.key(); + + foreach (const QByteArray& role, visibleRoles()) { const QString text = values[role].toString(); const qreal requiredWidth = option.fontMetrics.width(text); maximumRequiredWidth = qMax(maximumRequiredWidth, requiredWidth); @@ -178,13 +176,8 @@ QHash KFileItemListView::visibleRoleSizes() const const int itemCount = model()->count(); for (int i = 0; i < itemCount; ++i) { - QHashIterator it(visibleRoles()); - while (it.hasNext()) { - it.next(); - const QByteArray& visibleRole = it.key(); - + foreach (const QByteArray& visibleRole, visibleRoles()) { QSizeF maxSize = sizes.value(visibleRole, QSizeF(0, 0)); - const QSizeF itemSize = visibleRoleSizeHint(i, visibleRole); maxSize = maxSize.expandedTo(itemSize); sizes.insert(visibleRole, maxSize); @@ -274,7 +267,7 @@ void KFileItemListView::onOffsetChanged(qreal current, qreal previous) triggerVisibleIndexRangeUpdate(); } -void KFileItemListView::onVisibleRolesChanged(const QHash& current, const QHash& previous) +void KFileItemListView::onVisibleRolesChanged(const QList& current, const QList& previous) { Q_UNUSED(previous); @@ -283,7 +276,7 @@ void KFileItemListView::onVisibleRolesChanged(const QHash& curr // KFileItemModel does not distinct between "visible" and "invisible" roles. // Add all roles that are mandatory for having a working KFileItemListView: - QSet keys = current.keys().toSet(); + QSet keys = current.toSet(); QSet roles = keys; roles.insert("iconPixmap"); roles.insert("iconName"); diff --git a/src/kitemviews/kfileitemlistview.h b/src/kitemviews/kfileitemlistview.h index 1fb7bf352..0f0c5e85a 100644 --- a/src/kitemviews/kfileitemlistview.h +++ b/src/kitemviews/kfileitemlistview.h @@ -72,7 +72,7 @@ protected: virtual void onScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous); virtual void onItemSizeChanged(const QSizeF& current, const QSizeF& previous); virtual void onOffsetChanged(qreal current, qreal previous); - virtual void onVisibleRolesChanged(const QHash& current, const QHash& previous); + virtual void onVisibleRolesChanged(const QList& current, const QList& previous); virtual void onStyleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous); virtual void onTransactionBegin(); virtual void onTransactionEnd(); diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp index d9a1cbfd1..a9193fbc7 100644 --- a/src/kitemviews/kfileitemlistwidget.cpp +++ b/src/kitemviews/kfileitemlistwidget.cpp @@ -199,7 +199,7 @@ void KFileItemListWidget::dataChanged(const QHash& current QSet dirtyRoles; if (roles.isEmpty()) { - dirtyRoles = visibleRoles().keys().toSet(); + dirtyRoles = visibleRoles().toSet(); dirtyRoles.insert("iconPixmap"); dirtyRoles.insert("iconName"); } else { @@ -213,33 +213,12 @@ void KFileItemListWidget::dataChanged(const QHash& current } } -void KFileItemListWidget::visibleRolesChanged(const QHash& current, - const QHash& previous) +void KFileItemListWidget::visibleRolesChanged(const QList& current, + const QList& previous) { KItemListWidget::visibleRolesChanged(current, previous); + m_sortedVisibleRoles = current; m_dirtyLayout = true; - - // Cache the roles sorted into m_sortedVisibleRoles: - const int visibleRolesCount = current.count(); - m_sortedVisibleRoles.clear(); - m_sortedVisibleRoles.reserve(visibleRolesCount); - for (int i = 0; i < visibleRolesCount; ++i) { - m_sortedVisibleRoles.append(QByteArray()); - } - - QHashIterator it(current); - while (it.hasNext()) { - it.next(); - - const int index = it.value(); - if (index < 0 || index >= visibleRolesCount || !m_sortedVisibleRoles.at(index).isEmpty()) { - kWarning() << "The visible roles have an invalid sort order."; - break; - } - - const QByteArray& role = it.key(); - m_sortedVisibleRoles[index] = role; - } } void KFileItemListWidget::visibleRolesSizesChanged(const QHash& current, diff --git a/src/kitemviews/kfileitemlistwidget.h b/src/kitemviews/kfileitemlistwidget.h index 50e746fad..4f1cf1133 100644 --- a/src/kitemviews/kfileitemlistwidget.h +++ b/src/kitemviews/kfileitemlistwidget.h @@ -72,7 +72,7 @@ protected: QPixmap overlay() const; virtual void dataChanged(const QHash& current, const QSet& roles = QSet()); - virtual void visibleRolesChanged(const QHash& current, const QHash& previous); + virtual void visibleRolesChanged(const QList& current, const QList& previous); virtual void visibleRolesSizesChanged(const QHash& current, const QHash& previous); virtual void styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous); virtual void hoveredChanged(bool hovered); diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 991551485..7b73bc616 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -180,9 +180,9 @@ qreal KItemListView::maximumOffset() const return m_layouter->maximumOffset(); } -void KItemListView::setVisibleRoles(const QHash& roles) +void KItemListView::setVisibleRoles(const QList& roles) { - const QHash previousRoles = m_visibleRoles; + const QList previousRoles = m_visibleRoles; m_visibleRoles = roles; QHashIterator it(m_visibleItems); @@ -201,7 +201,7 @@ void KItemListView::setVisibleRoles(const QHash& roles) updateLayout(); } -QHash KItemListView::visibleRoles() const +QList KItemListView::visibleRoles() const { return m_visibleRoles; } @@ -476,7 +476,7 @@ void KItemListView::onOffsetChanged(qreal current, qreal previous) Q_UNUSED(previous); } -void KItemListView::onVisibleRolesChanged(const QHash& current, const QHash& previous) +void KItemListView::onVisibleRolesChanged(const QList& current, const QList& previous) { Q_UNUSED(current); Q_UNUSED(previous); diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index a2fa23f3e..17db18b31 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -83,12 +83,8 @@ public: qreal maximumOffset() const; - /** - * Sets the visible roles to \p roles. The integer-value defines - * the order of the visible role: Smaller values are ordered first. - */ - void setVisibleRoles(const QHash& roles); - QHash visibleRoles() const; + void setVisibleRoles(const QList& roles); + QList visibleRoles() const; /** * If set to true an automatic scrolling is done as soon as the @@ -198,7 +194,7 @@ protected: virtual void onScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous); virtual void onItemSizeChanged(const QSizeF& current, const QSizeF& previous); virtual void onOffsetChanged(qreal current, qreal previous); - virtual void onVisibleRolesChanged(const QHash& current, const QHash& previous); + virtual void onVisibleRolesChanged(const QList& current, const QList& previous); virtual void onStyleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous); virtual void onTransactionBegin(); @@ -327,7 +323,7 @@ private: QSizeF m_itemSize; KItemListController* m_controller; KItemModelBase* m_model; - QHash m_visibleRoles; + QList m_visibleRoles; QHash m_visibleRolesSizes; KItemListWidgetCreatorBase* m_widgetCreator; KItemListGroupHeaderCreatorBase* m_groupHeaderCreator; diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index 86febed97..476031777 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -141,14 +141,14 @@ void KItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* o painter->setOpacity(opacity); } -void KItemListWidget::setVisibleRoles(const QHash& roles) +void KItemListWidget::setVisibleRoles(const QList& roles) { - const QHash previousRoles = m_visibleRoles; + const QList previousRoles = m_visibleRoles; m_visibleRoles = roles; visibleRolesChanged(roles, previousRoles); } -QHash KItemListWidget::visibleRoles() const +QList KItemListWidget::visibleRoles() const { return m_visibleRoles; } @@ -269,8 +269,8 @@ void KItemListWidget::dataChanged(const QHash& current, update(); } -void KItemListWidget::visibleRolesChanged(const QHash& current, - const QHash& previous) +void KItemListWidget::visibleRolesChanged(const QList& current, + const QList& previous) { Q_UNUSED(current); Q_UNUSED(previous); diff --git a/src/kitemviews/kitemlistwidget.h b/src/kitemviews/kitemlistwidget.h index e3f3cb578..2229948a3 100644 --- a/src/kitemviews/kitemlistwidget.h +++ b/src/kitemviews/kitemlistwidget.h @@ -59,12 +59,8 @@ public: */ virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); - /** - * Sets the visible roles to \p roles. The integer-value defines - * the order of the visible role: Smaller values are ordered first. - */ - void setVisibleRoles(const QHash& roles); - QHash visibleRoles() const; + void setVisibleRoles(const QList& roles); + QList visibleRoles() const; void setVisibleRolesSizes(const QHash rolesSizes); QHash visibleRolesSizes() const; @@ -115,7 +111,7 @@ public: protected: virtual void dataChanged(const QHash& current, const QSet& roles = QSet()); - virtual void visibleRolesChanged(const QHash& current, const QHash& previous); + virtual void visibleRolesChanged(const QList& current, const QList& previous); virtual void visibleRolesSizesChanged(const QHash& current, const QHash& previous); virtual void styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous); virtual void currentChanged(bool current); @@ -143,7 +139,7 @@ private: bool m_current; bool m_hovered; QHash m_data; - QHash m_visibleRoles; + QList m_visibleRoles; QHash m_visibleRolesSizes; KItemListStyleOption m_styleOption; diff --git a/src/views/dolphinitemlistcontainer.cpp b/src/views/dolphinitemlistcontainer.cpp index 404b1d92b..e1be814c0 100644 --- a/src/views/dolphinitemlistcontainer.cpp +++ b/src/views/dolphinitemlistcontainer.cpp @@ -126,13 +126,13 @@ bool DolphinItemListContainer::previewsShown() const return m_fileItemListView->previewsShown(); } -void DolphinItemListContainer::setVisibleRoles(const QHash& roles) +void DolphinItemListContainer::setVisibleRoles(const QList& roles) { m_fileItemListView->setVisibleRoles(roles); updateGridSize(); } -QHash DolphinItemListContainer::visibleRoles() const +QList DolphinItemListContainer::visibleRoles() const { return m_fileItemListView->visibleRoles(); } diff --git a/src/views/dolphinitemlistcontainer.h b/src/views/dolphinitemlistcontainer.h index 2b00380a9..9cf4bff3f 100644 --- a/src/views/dolphinitemlistcontainer.h +++ b/src/views/dolphinitemlistcontainer.h @@ -51,12 +51,8 @@ public: void setPreviewsShown(bool show); bool previewsShown() const; - /** - * Sets the visible roles to \p roles. The integer-value defines - * the order of the visible role: Smaller values are ordered first. - */ - void setVisibleRoles(const QHash& roles); - QHash visibleRoles() const; + void setVisibleRoles(const QList& roles); + QList visibleRoles() const; void setZoomLevel(int level); int zoomLevel() const; diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index db546fe95..2fa9196bf 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -163,9 +163,7 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : connect(m_dirLister, SIGNAL(itemsDeleted(KFileItemList)), this, SIGNAL(itemCountChanged())); m_container = new DolphinItemListContainer(m_dirLister, this); - QHash visibleRoles; - visibleRoles.insert("name", 0); - m_container->setVisibleRoles(visibleRoles); + m_container->setVisibleRoles(QList() << "name"); KItemListController* controller = m_container->controller(); controller->setSelectionBehavior(KItemListController::MultiSelection); @@ -1194,13 +1192,12 @@ void DolphinView::applyAdditionalInfoListToView() { const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance(); - QHash visibleRoles; - visibleRoles.insert("name", 0); + QList visibleRoles; + visibleRoles.reserve(m_additionalInfoList.count() + 1); + visibleRoles.append("name"); - int index = 1; foreach (AdditionalInfo info, m_additionalInfoList) { - visibleRoles.insert(infoAccessor.role(info), index); - ++index; + visibleRoles.append(infoAccessor.role(info)); } m_container->setVisibleRoles(visibleRoles);