Change signature of setVisibleRoles()

Simply use a QList<QByteArray> instead of QHash<QByteArray, int>.
This commit is contained in:
Peter Penz 2011-09-20 15:19:11 +02:00
parent 6a75a61671
commit 63e1e3bc14
11 changed files with 37 additions and 80 deletions

View file

@ -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<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);
@ -178,13 +176,8 @@ QHash<QByteArray, QSizeF> KFileItemListView::visibleRoleSizes() const
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);
@ -274,7 +267,7 @@ void KFileItemListView::onOffsetChanged(qreal current, qreal previous)
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);
@ -283,7 +276,7 @@ void KFileItemListView::onVisibleRolesChanged(const QHash<QByteArray, int>& curr
// 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");

View file

@ -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<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();

View file

@ -199,7 +199,7 @@ void KFileItemListWidget::dataChanged(const QHash<QByteArray, QVariant>& current
QSet<QByteArray> 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<QByteArray, QVariant>& current
}
}
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,

View file

@ -72,7 +72,7 @@ protected:
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);

View file

@ -180,9 +180,9 @@ qreal KItemListView::maximumOffset() const
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);
@ -201,7 +201,7 @@ void KItemListView::setVisibleRoles(const QHash<QByteArray, int>& roles)
updateLayout();
}
QHash<QByteArray, int> KItemListView::visibleRoles() const
QList<QByteArray> 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<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);

View file

@ -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<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
@ -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<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();
@ -327,7 +323,7 @@ private:
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;

View file

@ -141,14 +141,14 @@ void KItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* o
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;
}
@ -269,8 +269,8 @@ void KItemListWidget::dataChanged(const QHash<QByteArray, QVariant>& current,
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);

View file

@ -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<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;
@ -115,7 +111,7 @@ public:
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);
@ -143,7 +139,7 @@ private:
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;

View file

@ -126,13 +126,13 @@ bool DolphinItemListContainer::previewsShown() const
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();
}

View file

@ -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<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;

View file

@ -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<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);
@ -1194,13 +1192,12 @@ void DolphinView::applyAdditionalInfoListToView()
{
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);