]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemmodel.h
Merge branch 'release/21.12'
[dolphin.git] / src / kitemviews / kfileitemmodel.h
index acf4b761cf51bde3b470c197ce5ad36e81721962..cc39a0084d21246f3aff0d8dd143c463424b74b4 100644 (file)
@@ -12,6 +12,7 @@
 #include "kitemviews/private/kfileitemmodelfilter.h"
 
 #include <KFileItem>
+#include <KLazyLocalizedString>
 
 #include <QCollator>
 #include <QHash>
 
 #include <functional>
 
-class KFileItemModelDirLister;
+class KDirLister;
+
 class QTimer;
 
+namespace KIO {
+    class Job;
+}
+
 /**
  * @brief KItemModelBase implementation for KFileItems.
  *
@@ -80,6 +86,12 @@ public:
     void setSortDirectoriesFirst(bool dirsFirst);
     bool sortDirectoriesFirst() const;
 
+    /**
+     * Sets a separate sorting with hidden files and folders last (true) or not (false).
+     */
+    void setSortHiddenLast(bool hiddenLast);
+    bool sortHiddenLast() const;
+
     void setShowHiddenFiles(bool show);
     bool showHiddenFiles() const;
 
@@ -270,6 +282,7 @@ private Q_SLOTS:
     void slotRefreshItems(const QList<QPair<KFileItem, KFileItem> >& items);
     void slotClear();
     void slotSortingChoiceChanged();
+    void slotListerError(KIO::Job *job);
 
     void dispatchPendingItemsToInsert();
 
@@ -279,7 +292,7 @@ private:
         NoRole, NameRole, SizeRole, ModificationTimeRole, CreationTimeRole, AccessTimeRole, PermissionsRole, OwnerRole,
         GroupRole, TypeRole, DestinationRole, PathRole, DeletionTimeRole,
         // User visible roles available with Baloo:
-        CommentRole, TagsRole, RatingRole, WidthRole, HeightRole, ImageDateTimeRole, OrientationRole,
+        CommentRole, TagsRole, RatingRole, DimensionsRole, WidthRole, HeightRole, ImageDateTimeRole, OrientationRole,
         WordCountRole, TitleRole, LineCountRole, ArtistRole, GenreRole, AlbumRole, DurationRole, TrackRole, ReleaseYearRole,
         BitrateRole, OriginUrlRole, AspectRatioRole, FrameRateRole,
         // Non-visible roles:
@@ -297,7 +310,8 @@ private:
 
     enum RemoveItemsBehavior {
         KeepItemData,
-        DeleteItemData
+        DeleteItemData,
+        DeleteItemDataIfUnfiltered
     };
 
     void insertItems(QList<ItemData*>& items);
@@ -427,10 +441,8 @@ private:
     {
         const char* const role;
         const RoleType roleType;
-        const char* const roleTranslationContext;
-        const char* const roleTranslation;
-        const char* const groupTranslationContext;
-        const char* const groupTranslation;
+        const KLazyLocalizedString roleTranslation;
+        const KLazyLocalizedString groupTranslation;
         const bool requiresBaloo;
         const bool requiresIndexer;
     };
@@ -457,12 +469,22 @@ private:
      */
     bool isConsistent() const;
 
+    /**
+     * Filters out the expanded folders that don't pass the filter themselves and don't have any filter-passing children.
+     * Will update the removedItemRanges arguments to include the parents that have been filtered.
+     * @returns the number of parents that have been filtered.
+     * @param removedItemRanges The ranges of items being deleted/filtered, will get updated
+     * @param parentsToEnsureVisible Parents that must be visible no matter what due to being ancestors of newly visible items
+     */
+    int filterChildlessParents(KItemRangeList &removedItemRanges, const QSet<ItemData *> &parentsToEnsureVisible = QSet<ItemData *>());
+
 private:
-    KFileItemModelDirLister* m_dirLister;
+    KDirLister *m_dirLister = nullptr;
 
     QCollator m_collator;
     bool m_naturalSorting;
     bool m_sortDirsFirst;
+    bool m_sortHiddenLast;
 
     RoleType m_sortRole;
     int m_sortingProgressPercent; // Value of directorySortingProgress() signal