#ifndef KFILEITEMMODEL_H
#define KFILEITEMMODEL_H
-#include <libdolphin_export.h>
-#include <KFileItemList>
+#include "dolphin_export.h"
+#include <KFileItem>
#include <QUrl>
#include <kitemviews/kitemmodelbase.h>
#include <kitemviews/private/kfileitemmodelfilter.h>
+#include <QCollator>
#include <QHash>
#include <QSet>
* Recursive expansion of sub-directories is supported by
* KFileItemModel::setExpanded().
*/
-class LIBDOLPHINPRIVATE_EXPORT KFileItemModel : public KItemModelBase
+class DOLPHIN_EXPORT KFileItemModel : public KItemModelBase
{
Q_OBJECT
*/
void cancelDirectoryLoading();
- virtual int count() const;
- virtual QHash<QByteArray, QVariant> data(int index) const;
- virtual bool setData(int index, const QHash<QByteArray, QVariant>& values);
+ 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;
/**
* Sets a separate sorting with directories first (true) or a mixed
void setShowDirectoriesOnly(bool enabled);
bool showDirectoriesOnly() const;
- /** @reimp */
- virtual QMimeData* createMimeData(const KItemSet& indexes) const;
+ virtual QMimeData* createMimeData(const KItemSet& indexes) const Q_DECL_OVERRIDE;
- /** @reimp */
- virtual int indexForKeyboardSearch(const QString& text, int startFromIndex = 0) const;
+ virtual int indexForKeyboardSearch(const QString& text, int startFromIndex = 0) const Q_DECL_OVERRIDE;
- /** @reimp */
- virtual bool supportsDropping(int index) const;
+ virtual bool supportsDropping(int index) const Q_DECL_OVERRIDE;
- /** @reimp */
- virtual QString roleDescription(const QByteArray& role) const;
+ virtual QString roleDescription(const QByteArray& role) const Q_DECL_OVERRIDE;
- /** @reimp */
- virtual QList<QPair<int, QVariant> > groups() const;
+ virtual QList<QPair<int, QVariant> > groups() const Q_DECL_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);
- virtual bool isExpanded(int index) const;
- virtual bool isExpandable(int index) const;
- virtual int expandedParentsCount(int index) 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;
QSet<QUrl> expandedDirectories() const;
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);
+ 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;
private slots:
/**
* @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
* 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;
private:
KFileItemModelDirLister* m_dirLister;
+ QCollator m_collator;
bool m_naturalSorting;
bool m_sortDirsFirst;
RoleType m_sortRole;
int m_sortingProgressPercent; // Value of directorySortingProgress() signal
QSet<QByteArray> m_roles;
- Qt::CaseSensitivity m_caseSensitivity;
QList<ItemData*> m_itemData;