#define KFILEITEMMODEL_H
#include "dolphin_export.h"
+#include "kitemviews/kitemmodelbase.h"
+#include "kitemviews/private/kfileitemmodelfilter.h"
+
#include <KFileItem>
-#include <QUrl>
-#include <kitemviews/kitemmodelbase.h>
-#include <kitemviews/private/kfileitemmodelfilter.h>
#include <QCollator>
#include <QHash>
#include <QSet>
+#include <QUrl>
+
+#include <functional>
class KFileItemModelDirLister;
class QTimer;
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
* 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
*/
void cancelDirectoryLoading();
- virtual int count() const Q_DECL_OVERRIDE;
- virtual QHash<QByteArray, QVariant> data(int index) const Q_DECL_OVERRIDE;
- virtual bool setData(int index, const QHash<QByteArray, QVariant>& values) Q_DECL_OVERRIDE;
+ int count() const override;
+ QHash<QByteArray, QVariant> data(int index) const override;
+ bool setData(int index, const QHash<QByteArray, QVariant>& values) override;
/**
* Sets a separate sorting with directories first (true) or a mixed
void setShowDirectoriesOnly(bool enabled);
bool showDirectoriesOnly() const;
- virtual QMimeData* createMimeData(const KItemSet& indexes) const Q_DECL_OVERRIDE;
+ QMimeData* createMimeData(const KItemSet& indexes) const override;
- virtual int indexForKeyboardSearch(const QString& text, int startFromIndex = 0) const Q_DECL_OVERRIDE;
+ int indexForKeyboardSearch(const QString& text, int startFromIndex = 0) const override;
- virtual bool supportsDropping(int index) const Q_DECL_OVERRIDE;
+ bool supportsDropping(int index) const override;
- virtual QString roleDescription(const QByteArray& role) const Q_DECL_OVERRIDE;
+ QString roleDescription(const QByteArray& role) const override;
- virtual QList<QPair<int, QVariant> > groups() const Q_DECL_OVERRIDE;
+ QList<QPair<int, QVariant> > groups() const override;
/**
* @return The file-item for the index \a index. If the index is in a valid
void setRoles(const QSet<QByteArray>& roles);
QSet<QByteArray> roles() const;
- virtual bool setExpanded(int index, bool expanded) Q_DECL_OVERRIDE;
- virtual bool isExpanded(int index) const Q_DECL_OVERRIDE;
- virtual bool isExpandable(int index) const Q_DECL_OVERRIDE;
- virtual int expandedParentsCount(int index) const Q_DECL_OVERRIDE;
+ 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<QUrl> expandedDirectories() const;
void urlIsFileError(const QUrl& url);
protected:
- virtual void onGroupedSortingChanged(bool current) Q_DECL_OVERRIDE;
- virtual void onSortRoleChanged(const QByteArray& current, const QByteArray& previous) Q_DECL_OVERRIDE;
- virtual void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) Q_DECL_OVERRIDE;
+ void onGroupedSortingChanged(bool current) override;
+ void onSortRoleChanged(const QByteArray& current, const QByteArray& previous, bool resortItems = true) override;
+ void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) override;
private slots:
/**
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, TitleRole, LineCountRole, ArtistRole, AlbumRole, DurationRole, TrackRole,
- OriginUrlRole,
+ CommentRole, TagsRole, RatingRole, WidthRole, HeightRole, ImageDateTimeRole, OrientationRole,
+ WordCountRole, TitleRole, LineCountRole, ArtistRole, GenreRole, AlbumRole, DurationRole, TrackRole, ReleaseYearRole,
+ BitrateRole, OriginUrlRole, AspectRatioRole, FrameRateRole,
// Non-visible roles:
- IsDirRole, IsLinkRole, IsExpandedRole, IsExpandableRole, ExpandedParentsCountRole,
+ IsDirRole, IsLinkRole, IsHiddenRole, IsExpandedRole, IsExpandableRole, ExpandedParentsCountRole,
// Mandatory last entry:
RolesCount
};
* 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
int stringCompare(const QString& a, const QString& b, const QCollator& collator) const;
- bool useMaximumUpdateInterval() const;
-
QList<QPair<int, QVariant> > nameRoleGroups() const;
QList<QPair<int, QVariant> > sizeRoleGroups() const;
- QList<QPair<int, QVariant> > dateRoleGroups() 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;
// and done step after step in slotCompleted().
QSet<QUrl> m_urlsToExpand;
- friend class KFileItemModelLessThan; // Accesses lessThan() method
friend class KFileItemModelRolesUpdater; // Accesses emitSortProgress() method
friend class KFileItemModelTest; // For unit testing
friend class KFileItemModelBenchmark; // For unit testing