Simply use a QList<QByteArray> instead of QHash<QByteArray, int>.
// 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<QByteArray, int> 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);
const int itemCount = model()->count();
for (int i = 0; i < itemCount; ++i) {
- QHashIterator<QByteArray, int> 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);
triggerVisibleIndexRangeUpdate();
}
-void KFileItemListView::onVisibleRolesChanged(const QHash<QByteArray, int>& current, const QHash<QByteArray, int>& previous)
+void KFileItemListView::onVisibleRolesChanged(const QList<QByteArray>& current, const QList<QByteArray>& previous)
{
Q_UNUSED(previous);
// KFileItemModel does not distinct between "visible" and "invisible" roles.
// Add all roles that are mandatory for having a working KFileItemListView:
- QSet<QByteArray> keys = current.keys().toSet();
+ QSet<QByteArray> keys = current.toSet();
QSet<QByteArray> roles = keys;
roles.insert("iconPixmap");
roles.insert("iconName");
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<QByteArray, int>& current, const QHash<QByteArray, int>& previous);
+ virtual void onVisibleRolesChanged(const QList<QByteArray>& current, const QList<QByteArray>& previous);
virtual void onStyleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous);
virtual void onTransactionBegin();
virtual void onTransactionEnd();
QSet<QByteArray> dirtyRoles;
if (roles.isEmpty()) {
- dirtyRoles = visibleRoles().keys().toSet();
+ dirtyRoles = visibleRoles().toSet();
dirtyRoles.insert("iconPixmap");
dirtyRoles.insert("iconName");
} else {
}
}
-void KFileItemListWidget::visibleRolesChanged(const QHash<QByteArray, int>& current,
- const QHash<QByteArray, int>& previous)
+void KFileItemListWidget::visibleRolesChanged(const QList<QByteArray>& current,
+ const QList<QByteArray>& 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<QByteArray, int> 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<QByteArray, QSizeF>& current,
QPixmap overlay() const;
virtual void dataChanged(const QHash<QByteArray, QVariant>& current, const QSet<QByteArray>& roles = QSet<QByteArray>());
- virtual void visibleRolesChanged(const QHash<QByteArray, int>& current, const QHash<QByteArray, int>& previous);
+ virtual void visibleRolesChanged(const QList<QByteArray>& current, const QList<QByteArray>& previous);
virtual void visibleRolesSizesChanged(const QHash<QByteArray, QSizeF>& current, const QHash<QByteArray, QSizeF>& previous);
virtual void styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous);
virtual void hoveredChanged(bool hovered);
return m_layouter->maximumOffset();
}
-void KItemListView::setVisibleRoles(const QHash<QByteArray, int>& roles)
+void KItemListView::setVisibleRoles(const QList<QByteArray>& roles)
{
- const QHash<QByteArray, int> previousRoles = m_visibleRoles;
+ const QList<QByteArray> previousRoles = m_visibleRoles;
m_visibleRoles = roles;
QHashIterator<int, KItemListWidget*> it(m_visibleItems);
updateLayout();
}
-QHash<QByteArray, int> KItemListView::visibleRoles() const
+QList<QByteArray> KItemListView::visibleRoles() const
{
return m_visibleRoles;
}
Q_UNUSED(previous);
}
-void KItemListView::onVisibleRolesChanged(const QHash<QByteArray, int>& current, const QHash<QByteArray, int>& previous)
+void KItemListView::onVisibleRolesChanged(const QList<QByteArray>& current, const QList<QByteArray>& previous)
{
Q_UNUSED(current);
Q_UNUSED(previous);
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<QByteArray, int>& roles);
- QHash<QByteArray, int> visibleRoles() const;
+ void setVisibleRoles(const QList<QByteArray>& roles);
+ QList<QByteArray> visibleRoles() const;
/**
* If set to true an automatic scrolling is done as soon as the
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<QByteArray, int>& current, const QHash<QByteArray, int>& previous);
+ virtual void onVisibleRolesChanged(const QList<QByteArray>& current, const QList<QByteArray>& previous);
virtual void onStyleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous);
virtual void onTransactionBegin();
QSizeF m_itemSize;
KItemListController* m_controller;
KItemModelBase* m_model;
- QHash<QByteArray, int> m_visibleRoles;
+ QList<QByteArray> m_visibleRoles;
QHash<QByteArray, QSizeF> m_visibleRolesSizes;
KItemListWidgetCreatorBase* m_widgetCreator;
KItemListGroupHeaderCreatorBase* m_groupHeaderCreator;
painter->setOpacity(opacity);
}
-void KItemListWidget::setVisibleRoles(const QHash<QByteArray, int>& roles)
+void KItemListWidget::setVisibleRoles(const QList<QByteArray>& roles)
{
- const QHash<QByteArray, int> previousRoles = m_visibleRoles;
+ const QList<QByteArray> previousRoles = m_visibleRoles;
m_visibleRoles = roles;
visibleRolesChanged(roles, previousRoles);
}
-QHash<QByteArray, int> KItemListWidget::visibleRoles() const
+QList<QByteArray> KItemListWidget::visibleRoles() const
{
return m_visibleRoles;
}
update();
}
-void KItemListWidget::visibleRolesChanged(const QHash<QByteArray, int>& current,
- const QHash<QByteArray, int>& previous)
+void KItemListWidget::visibleRolesChanged(const QList<QByteArray>& current,
+ const QList<QByteArray>& previous)
{
Q_UNUSED(current);
Q_UNUSED(previous);
*/
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<QByteArray, int>& roles);
- QHash<QByteArray, int> visibleRoles() const;
+ void setVisibleRoles(const QList<QByteArray>& roles);
+ QList<QByteArray> visibleRoles() const;
void setVisibleRolesSizes(const QHash<QByteArray, QSizeF> rolesSizes);
QHash<QByteArray, QSizeF> visibleRolesSizes() const;
protected:
virtual void dataChanged(const QHash<QByteArray, QVariant>& current, const QSet<QByteArray>& roles = QSet<QByteArray>());
- virtual void visibleRolesChanged(const QHash<QByteArray, int>& current, const QHash<QByteArray, int>& previous);
+ virtual void visibleRolesChanged(const QList<QByteArray>& current, const QList<QByteArray>& previous);
virtual void visibleRolesSizesChanged(const QHash<QByteArray, QSizeF>& current, const QHash<QByteArray, QSizeF>& previous);
virtual void styleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous);
virtual void currentChanged(bool current);
bool m_current;
bool m_hovered;
QHash<QByteArray, QVariant> m_data;
- QHash<QByteArray, int> m_visibleRoles;
+ QList<QByteArray> m_visibleRoles;
QHash<QByteArray, QSizeF> m_visibleRolesSizes;
KItemListStyleOption m_styleOption;
return m_fileItemListView->previewsShown();
}
-void DolphinItemListContainer::setVisibleRoles(const QHash<QByteArray, int>& roles)
+void DolphinItemListContainer::setVisibleRoles(const QList<QByteArray>& roles)
{
m_fileItemListView->setVisibleRoles(roles);
updateGridSize();
}
-QHash<QByteArray, int> DolphinItemListContainer::visibleRoles() const
+QList<QByteArray> DolphinItemListContainer::visibleRoles() const
{
return m_fileItemListView->visibleRoles();
}
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<QByteArray, int>& roles);
- QHash<QByteArray, int> visibleRoles() const;
+ void setVisibleRoles(const QList<QByteArray>& roles);
+ QList<QByteArray> visibleRoles() const;
void setZoomLevel(int level);
int zoomLevel() const;
connect(m_dirLister, SIGNAL(itemsDeleted(KFileItemList)), this, SIGNAL(itemCountChanged()));
m_container = new DolphinItemListContainer(m_dirLister, this);
- QHash<QByteArray, int> visibleRoles;
- visibleRoles.insert("name", 0);
- m_container->setVisibleRoles(visibleRoles);
+ m_container->setVisibleRoles(QList<QByteArray>() << "name");
KItemListController* controller = m_container->controller();
controller->setSelectionBehavior(KItemListController::MultiSelection);
{
const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
- QHash<QByteArray, int> visibleRoles;
- visibleRoles.insert("name", 0);
+ QList<QByteArray> 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);