X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fa988586bc923b33497cbc97aaac07fc93a4ca83..87e8d0ba:/src/kitemviews/kfileitemmodel.h diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h index 1a4f6928e..4589b5422 100644 --- a/src/kitemviews/kfileitemmodel.h +++ b/src/kitemviews/kfileitemmodel.h @@ -20,15 +20,18 @@ #ifndef KFILEITEMMODEL_H #define KFILEITEMMODEL_H -#include -#include +#include "dolphin_export.h" +#include #include #include #include +#include #include #include +#include + class KFileItemModelDirLister; class QTimer; @@ -42,13 +45,13 @@ class QTimer; * Recursive expansion of sub-directories is supported by * KFileItemModel::setExpanded(). */ -class LIBDOLPHINPRIVATE_EXPORT KFileItemModel : public KItemModelBase +class DOLPHIN_EXPORT KFileItemModel : public KItemModelBase { Q_OBJECT public: - explicit KFileItemModel(QObject* parent = 0); - virtual ~KFileItemModel(); + explicit KFileItemModel(QObject* parent = nullptr); + ~KFileItemModel() override; /** * Loads the directory specified by \a url. The signals @@ -70,7 +73,7 @@ public: * the root-parent of all items. * @see rootItem() */ - QUrl directory() const; + QUrl directory() const override; /** * Cancels the loading of a directory which has been started by either @@ -78,9 +81,9 @@ public: */ void cancelDirectoryLoading(); - virtual int count() const; - virtual QHash data(int index) const; - virtual bool setData(int index, const QHash& values); + int count() const override; + QHash data(int index) const override; + bool setData(int index, const QHash& values) override; /** * Sets a separate sorting with directories first (true) or a mixed @@ -99,20 +102,15 @@ public: void setShowDirectoriesOnly(bool enabled); bool showDirectoriesOnly() const; - /** @reimp */ - virtual QMimeData* createMimeData(const KItemSet& indexes) const; + QMimeData* createMimeData(const KItemSet& indexes) const override; - /** @reimp */ - virtual int indexForKeyboardSearch(const QString& text, int startFromIndex = 0) const; + int indexForKeyboardSearch(const QString& text, int startFromIndex = 0) const override; - /** @reimp */ - virtual bool supportsDropping(int index) const; + bool supportsDropping(int index) const override; - /** @reimp */ - virtual QString roleDescription(const QByteArray& role) const; + QString roleDescription(const QByteArray& role) const override; - /** @reimp */ - virtual QList > groups() const; + QList > groups() const override; /** * @return The file-item for the index \a index. If the index is in a valid @@ -158,10 +156,10 @@ public: void setRoles(const QSet& roles); QSet roles() const; - virtual bool setExpanded(int index, bool expanded); - virtual bool isExpanded(int index) const; - virtual bool isExpandable(int index) const; - virtual int expandedParentsCount(int index) const; + bool setExpanded(int index, bool expanded) override; + bool isExpanded(int index) const override; + bool isExpandable(int index) const override; + int expandedParentsCount(int index) const override; QSet expandedDirectories() const; @@ -260,9 +258,9 @@ signals: void urlIsFileError(const QUrl& url); protected: - virtual void onGroupedSortingChanged(bool current); - virtual void onSortRoleChanged(const QByteArray& current, const QByteArray& previous); - virtual void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous); + void onGroupedSortingChanged(bool current) override; + void onSortRoleChanged(const QByteArray& current, const QByteArray& previous) override; + void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) override; private slots: /** @@ -277,21 +275,21 @@ private slots: void slotItemsDeleted(const KFileItemList& items); void slotRefreshItems(const QList >& items); void slotClear(); - void slotNaturalSortingChanged(); + void slotSortingChoiceChanged(); void dispatchPendingItemsToInsert(); private: enum RoleType { // User visible roles: - NoRole, NameRole, SizeRole, DateRole, PermissionsRole, OwnerRole, - GroupRole, TypeRole, DestinationRole, PathRole, + NoRole, NameRole, SizeRole, ModificationTimeRole, CreationTimeRole, AccessTimeRole, PermissionsRole, OwnerRole, + GroupRole, TypeRole, DestinationRole, PathRole, DeletionTimeRole, // User visible roles available with Baloo: - CommentRole, TagsRole, RatingRole, ImageSizeRole, OrientationRole, - WordCountRole, LineCountRole, ArtistRole, AlbumRole, DurationRole, TrackRole, - CopiedFromRole, + CommentRole, TagsRole, RatingRole, ImageSizeRole, ImageDateTimeRole, OrientationRole, + WordCountRole, TitleRole, LineCountRole, ArtistRole, GenreRole, AlbumRole, DurationRole, TrackRole, ReleaseYearRole, + BitrateRole, OriginUrlRole, // Non-visible roles: - IsDirRole, IsLinkRole, IsExpandedRole, IsExpandableRole, ExpandedParentsCountRole, + IsDirRole, IsLinkRole, IsHiddenRole, IsExpandedRole, IsExpandableRole, ExpandedParentsCountRole, // Mandatory last entry: RolesCount }; @@ -366,7 +364,7 @@ private: * @return True if the item-data \a a should be ordered before the item-data * \b. The item-data may have different parent-items. */ - bool lessThan(const ItemData* a, const ItemData* b) const; + bool lessThan(const ItemData* a, const ItemData* b, const QCollator& collator) const; /** * Sorts the items between \a begin and \a end using the comparison @@ -379,15 +377,15 @@ private: * the passed item-data using m_sortRole as criteria. Both items must * have the same parent item, otherwise the comparison will be wrong. */ - int sortRoleCompare(const ItemData* a, const ItemData* b) const; + int sortRoleCompare(const ItemData* a, const ItemData* b, const QCollator& collator) const; - int stringCompare(const QString& a, const QString& b) const; + int stringCompare(const QString& a, const QString& b, const QCollator& collator) const; bool useMaximumUpdateInterval() const; QList > nameRoleGroups() const; QList > sizeRoleGroups() const; - QList > dateRoleGroups() const; + QList > timeRoleGroups(std::function fileTimeCb) const; QList > permissionRoleGroups() const; QList > ratingRoleGroups() const; QList > genericStringRoleGroups(const QByteArray& typeForRole) const; @@ -419,6 +417,11 @@ private: */ void removeFilteredChildren(const KItemRangeList& parents); + /** + * Loads the selected choice of sorting method from Dolphin General Settings + */ + void loadSortingSettings(); + /** * Maps the QByteArray-roles to RoleTypes and provides translation- and * group-contexts. @@ -460,13 +463,13 @@ private: private: KFileItemModelDirLister* m_dirLister; + QCollator m_collator; bool m_naturalSorting; bool m_sortDirsFirst; RoleType m_sortRole; int m_sortingProgressPercent; // Value of directorySortingProgress() signal QSet m_roles; - Qt::CaseSensitivity m_caseSensitivity; QList m_itemData;