diff options
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kfileitemmodel.cpp | 15 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodel.h | 6 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.cpp | 4 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.h | 2 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistcontroller.cpp | 12 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistcontroller.h | 37 | ||||
| -rw-r--r-- | src/kitemviews/kitemmodelbase.cpp | 7 | ||||
| -rw-r--r-- | src/kitemviews/kitemmodelbase.h | 6 | ||||
| -rw-r--r-- | src/kitemviews/private/kitemlistheaderwidget.cpp | 5 |
9 files changed, 45 insertions, 49 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index fd0a88fb6..61bedfaca 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -304,6 +304,9 @@ QString KFileItemModel::roleDescription(const QByteArray& role) const int count = 0; const RoleInfoMap* map = rolesInfoMap(count); for (int i = 0; i < count; ++i) { + if (!map[i].roleTranslation) { + continue; + } description.insert(map[i].role, i18nc(map[i].roleTranslationContext, map[i].roleTranslation)); } } @@ -786,7 +789,7 @@ void KFileItemModel::onGroupedSortingChanged(bool current) m_groups.clear(); } -void KFileItemModel::onSortRoleChanged(const QByteArray& current, const QByteArray& previous) +void KFileItemModel::onSortRoleChanged(const QByteArray& current, const QByteArray& previous, bool resortItems) { Q_UNUSED(previous); m_sortRole = typeForRole(current); @@ -797,7 +800,9 @@ void KFileItemModel::onSortRoleChanged(const QByteArray& current, const QByteArr setRoles(newRoles); } - resortAllItems(); + if (resortItems) { + resortAllItems(); + } } void KFileItemModel::onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) @@ -1712,8 +1717,8 @@ bool KFileItemModel::lessThan(const ItemData* a, const ItemData* b, const QColla return (sortOrder() == Qt::AscendingOrder) ? result < 0 : result > 0; } -void KFileItemModel::sort(QList<KFileItemModel::ItemData*>::iterator begin, - QList<KFileItemModel::ItemData*>::iterator end) const +void KFileItemModel::sort(const QList<KFileItemModel::ItemData*>::iterator &begin, + const QList<KFileItemModel::ItemData*>::iterator &end) const { auto lambdaLessThan = [&] (const KFileItemModel::ItemData* a, const KFileItemModel::ItemData* b) { @@ -1977,7 +1982,7 @@ QList<QPair<int, QVariant> > KFileItemModel::sizeRoleGroups() const return groups; } -QList<QPair<int, QVariant> > KFileItemModel::timeRoleGroups(std::function<QDateTime(const ItemData *)> fileTimeCb) const +QList<QPair<int, QVariant> > KFileItemModel::timeRoleGroups(const std::function<QDateTime(const ItemData *)> &fileTimeCb) const { Q_ASSERT(!m_itemData.isEmpty()); diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h index a931a28cc..d15cfebc1 100644 --- a/src/kitemviews/kfileitemmodel.h +++ b/src/kitemviews/kfileitemmodel.h @@ -260,7 +260,7 @@ signals: protected: void onGroupedSortingChanged(bool current) override; - void onSortRoleChanged(const QByteArray& current, const QByteArray& previous) override; + void onSortRoleChanged(const QByteArray& current, const QByteArray& previous, bool resortItems = true) override; void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) override; private slots: @@ -371,7 +371,7 @@ private: * Sorts the items between \a begin and \a end using the comparison * function lessThan(). */ - void sort(QList<ItemData*>::iterator begin, QList<ItemData*>::iterator end) const; + void sort(const QList<ItemData*>::iterator &begin, const QList<ItemData*>::iterator &end) const; /** * Helper method for lessThan() and expandedParentsCountCompare(): Compares @@ -386,7 +386,7 @@ private: QList<QPair<int, QVariant> > nameRoleGroups() const; QList<QPair<int, QVariant> > sizeRoleGroups() const; - QList<QPair<int, QVariant> > timeRoleGroups(std::function<QDateTime(const ItemData *)> fileTimeCb) const; + QList<QPair<int, QVariant> > timeRoleGroups(const std::function<QDateTime(const ItemData *)> &fileTimeCb) const; QList<QPair<int, QVariant> > permissionRoleGroups() const; QList<QPair<int, QVariant> > ratingRoleGroups() const; QList<QPair<int, QVariant> > genericStringRoleGroups(const QByteArray& typeForRole) const; diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 1d45e44c5..6e0103c79 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -405,7 +405,7 @@ void KFileItemModelRolesUpdater::slotItemsRemoved(const KItemRangeList& itemRang } } -void KFileItemModelRolesUpdater::slotItemsMoved(const KItemRange& itemRange, QList<int> movedToIndexes) +void KFileItemModelRolesUpdater::slotItemsMoved(const KItemRange& itemRange, const QList<int> &movedToIndexes) { Q_UNUSED(itemRange); Q_UNUSED(movedToIndexes); @@ -710,6 +710,8 @@ void KFileItemModelRolesUpdater::applyChangedBalooRoles(const QString& file) return; } applyChangedBalooRolesForItem(item); +#else + Q_UNUSED(file); #endif } diff --git a/src/kitemviews/kfileitemmodelrolesupdater.h b/src/kitemviews/kfileitemmodelrolesupdater.h index 0eef7fcd4..9078c8e0d 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.h +++ b/src/kitemviews/kfileitemmodelrolesupdater.h @@ -157,7 +157,7 @@ public: private slots: void slotItemsInserted(const KItemRangeList& itemRanges); void slotItemsRemoved(const KItemRangeList& itemRanges); - void slotItemsMoved(const KItemRange& itemRange, QList<int> movedToIndexes); + void slotItemsMoved(const KItemRange& itemRange, const QList<int> &movedToIndexes); void slotItemsChanged(const KItemRangeList& itemRanges, const QSet<QByteArray>& roles); void slotSortRoleChanged(const QByteArray& current, diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index bde2bb26c..d3dbeb35c 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -210,18 +210,6 @@ bool KItemListController::singleClickActivationEnforced() const return m_singleClickActivationEnforced; } -bool KItemListController::showEvent(QShowEvent* event) -{ - Q_UNUSED(event); - return false; -} - -bool KItemListController::hideEvent(QHideEvent* event) -{ - Q_UNUSED(event); - return false; -} - bool KItemListController::keyPressEvent(QKeyEvent* event) { int index = m_selectionManager->currentItem(); diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h index 2f84a6c2c..b21e50735 100644 --- a/src/kitemviews/kitemlistcontroller.h +++ b/src/kitemviews/kitemlistcontroller.h @@ -40,10 +40,8 @@ class QGraphicsSceneDragDropEvent; class QGraphicsSceneMouseEvent; class QGraphicsSceneResizeEvent; class QGraphicsSceneWheelEvent; -class QHideEvent; class QInputMethodEvent; class QKeyEvent; -class QShowEvent; class QTransform; /** @@ -136,24 +134,7 @@ public: void setSingleClickActivationEnforced(bool singleClick); bool singleClickActivationEnforced() const; - virtual bool showEvent(QShowEvent* event); - virtual bool hideEvent(QHideEvent* event); - virtual bool keyPressEvent(QKeyEvent* event); - virtual bool inputMethodEvent(QInputMethodEvent* event); - virtual bool mousePressEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform); - virtual bool mouseMoveEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform); - virtual bool mouseReleaseEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform); - virtual bool mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform); - virtual bool dragEnterEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform); - virtual bool dragLeaveEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform); - virtual bool dragMoveEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform); - virtual bool dropEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform); - virtual bool hoverEnterEvent(QGraphicsSceneHoverEvent* event, const QTransform& transform); - virtual bool hoverMoveEvent(QGraphicsSceneHoverEvent* event, const QTransform& transform); - virtual bool hoverLeaveEvent(QGraphicsSceneHoverEvent* event, const QTransform& transform); - virtual bool wheelEvent(QGraphicsSceneWheelEvent* event, const QTransform& transform); - virtual bool resizeEvent(QGraphicsSceneResizeEvent* event, const QTransform& transform); - virtual bool processEvent(QEvent* event, const QTransform& transform); + bool processEvent(QEvent* event, const QTransform& transform); signals: /** @@ -307,6 +288,22 @@ private: */ void updateExtendedSelectionRegion(); + bool keyPressEvent(QKeyEvent* event); + bool inputMethodEvent(QInputMethodEvent* event); + bool mousePressEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform); + bool mouseMoveEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform); + bool mouseReleaseEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform); + bool mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform); + bool dragEnterEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform); + bool dragLeaveEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform); + bool dragMoveEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform); + bool dropEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform); + bool hoverEnterEvent(QGraphicsSceneHoverEvent* event, const QTransform& transform); + bool hoverMoveEvent(QGraphicsSceneHoverEvent* event, const QTransform& transform); + bool hoverLeaveEvent(QGraphicsSceneHoverEvent* event, const QTransform& transform); + bool wheelEvent(QGraphicsSceneWheelEvent* event, const QTransform& transform); + bool resizeEvent(QGraphicsSceneResizeEvent* event, const QTransform& transform); + private: bool m_singleClickActivationEnforced; bool m_selectionTogglePressed; diff --git a/src/kitemviews/kitemmodelbase.cpp b/src/kitemviews/kitemmodelbase.cpp index 47db1f86d..7f7877555 100644 --- a/src/kitemviews/kitemmodelbase.cpp +++ b/src/kitemviews/kitemmodelbase.cpp @@ -63,12 +63,12 @@ bool KItemModelBase::groupedSorting() const return m_groupedSorting; } -void KItemModelBase::setSortRole(const QByteArray& role) +void KItemModelBase::setSortRole(const QByteArray& role, bool resortItems) { if (role != m_sortRole) { const QByteArray previous = m_sortRole; m_sortRole = role; - onSortRoleChanged(role, previous); + onSortRoleChanged(role, previous, resortItems); emit sortRoleChanged(role, previous); } } @@ -152,10 +152,11 @@ void KItemModelBase::onGroupedSortingChanged(bool current) Q_UNUSED(current); } -void KItemModelBase::onSortRoleChanged(const QByteArray& current, const QByteArray& previous) +void KItemModelBase::onSortRoleChanged(const QByteArray& current, const QByteArray& previous, bool resortItems) { Q_UNUSED(current); Q_UNUSED(previous); + Q_UNUSED(resortItems); } void KItemModelBase::onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) diff --git a/src/kitemviews/kitemmodelbase.h b/src/kitemviews/kitemmodelbase.h index 257872f9c..f1945de06 100644 --- a/src/kitemviews/kitemmodelbase.h +++ b/src/kitemviews/kitemmodelbase.h @@ -85,8 +85,9 @@ public: * Sets the sort-role to \a role. The method KItemModelBase::onSortRoleChanged() will be * called so that model-implementations can react on the sort-role change. Afterwards the * signal sortRoleChanged() will be emitted. + * The implementation should resort only if \a resortItems is true. */ - void setSortRole(const QByteArray& role); + void setSortRole(const QByteArray& role, bool resortItems = true); QByteArray sortRole() const; /** @@ -266,8 +267,9 @@ protected: * Usually the most efficient way is to emit a * itemsRemoved() signal for all items, reorder the items internally and to emit a * itemsInserted() signal afterwards. + * The implementation should resort only if \a resortItems is true. */ - virtual void onSortRoleChanged(const QByteArray& current, const QByteArray& previous); + virtual void onSortRoleChanged(const QByteArray& current, const QByteArray& previous, bool resortItems = true); /** * Is invoked if the sort order has been changed by KItemModelBase::setSortOrder(). Allows diff --git a/src/kitemviews/private/kitemlistheaderwidget.cpp b/src/kitemviews/private/kitemlistheaderwidget.cpp index a994f69c8..a3f3f521f 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.cpp +++ b/src/kitemviews/private/kitemlistheaderwidget.cpp @@ -220,10 +220,11 @@ void KItemListHeaderWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) // Change the sort role and reset to the ascending order const QByteArray previous = m_model->sortRole(); const QByteArray current = m_columns[m_pressedRoleIndex]; - m_model->setSortRole(current); + const bool resetSortOrder = m_model->sortOrder() == Qt::DescendingOrder; + m_model->setSortRole(current, !resetSortOrder); emit sortRoleChanged(current, previous); - if (m_model->sortOrder() == Qt::DescendingOrder) { + if (resetSortOrder) { m_model->setSortOrder(Qt::AscendingOrder); emit sortOrderChanged(Qt::AscendingOrder, Qt::DescendingOrder); } |
