]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemlistview.h
Merge branch 'Applications/16.04'
[dolphin.git] / src / kitemviews / kfileitemlistview.h
index 0f0c5e85a52a2f13a3de5bd517b48f93f1a2f4cf..84aa17d89baec0ed1a2148d7c1e5c62f20e86278 100644 (file)
@@ -20,9 +20,9 @@
 #ifndef KFILEITEMLISTVIEW_H
 #define KFILEITEMLISTVIEW_H
 
-#include <libdolphin_export.h>
+#include "dolphin_export.h"
 
-#include <kitemviews/kitemlistview.h>
+#include <kitemviews/kstandarditemlistview.h>
 
 class KFileItemModelRolesUpdater;
 class QTimer;
@@ -36,50 +36,63 @@ class QTimer;
  * KItemListView::setWidgetCreator() and KItemListView::setGroupHeaderCreator()
  * to apply customized generators.
  */
-class LIBDOLPHINPRIVATE_EXPORT KFileItemListView : public KItemListView
+class DOLPHIN_EXPORT KFileItemListView : public KStandardItemListView
 {
     Q_OBJECT
 
 public:
-    enum Layout
-    {
-        IconsLayout,
-        CompactLayout,
-        DetailsLayout
-    };
-
     KFileItemListView(QGraphicsWidget* parent = 0);
     virtual ~KFileItemListView();
 
     void setPreviewsShown(bool show);
     bool previewsShown() const;
 
-    void setItemLayout(Layout layout);
-    Layout itemLayout() const;
-
-    /** @reimp */
-    virtual QSizeF itemSizeHint(int index) const;
-
-    /** @reimp */
-    virtual QHash<QByteArray, QSizeF> visibleRoleSizes() const;
-
-    /** @reimp */
-    virtual QPixmap createDragPixmap(const QSet<int>& indexes) const;
+    /**
+     * If enabled a small preview gets upscaled to the icon size in case where
+     * the icon size is larger than the preview. Per default enlarging is
+     * enabled.
+     */
+    void setEnlargeSmallPreviews(bool enlarge);
+    bool enlargeSmallPreviews() const;
+
+    /**
+     * Sets the list of enabled thumbnail plugins that are used for previews.
+     * Per default all plugins enabled in the KConfigGroup "PreviewSettings"
+     * are used.
+     *
+     * For a list of available plugins, call KServiceTypeTrader::self()->query("ThumbCreator").
+     *
+     * @see enabledPlugins
+     */
+    void setEnabledPlugins(const QStringList& list);
+
+    /**
+     * Returns the list of enabled thumbnail plugins.
+     * @see setEnabledPlugins
+     */
+    QStringList enabledPlugins() const;
+
+    virtual QPixmap createDragPixmap(const KItemSet& indexes) const Q_DECL_OVERRIDE;
 
 protected:
-    virtual void initializeItemListWidget(KItemListWidget* item);
-    virtual void onModelChanged(KItemModelBase* current, KItemModelBase* previous);
-    virtual void onScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous);
-    virtual void onItemSizeChanged(const QSizeF& current, const QSizeF& previous);
-    virtual void onOffsetChanged(qreal current, qreal previous);
-    virtual void onVisibleRolesChanged(const QList<QByteArray>& current, const QList<QByteArray>& previous);
-    virtual void onStyleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous);
-    virtual void onTransactionBegin();
-    virtual void onTransactionEnd();
-    virtual void resizeEvent(QGraphicsSceneResizeEvent* event);
+    virtual KItemListWidgetCreatorBase* defaultWidgetCreator() const Q_DECL_OVERRIDE;
+    virtual void initializeItemListWidget(KItemListWidget* item) Q_DECL_OVERRIDE;
+    virtual void onPreviewsShownChanged(bool shown);
+    virtual void onItemLayoutChanged(ItemLayout current, ItemLayout previous) Q_DECL_OVERRIDE;
+    virtual void onModelChanged(KItemModelBase* current, KItemModelBase* previous) Q_DECL_OVERRIDE;
+    virtual void onScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous) Q_DECL_OVERRIDE;
+    virtual void onItemSizeChanged(const QSizeF& current, const QSizeF& previous) Q_DECL_OVERRIDE;
+    virtual void onScrollOffsetChanged(qreal current, qreal previous) Q_DECL_OVERRIDE;
+    virtual void onVisibleRolesChanged(const QList<QByteArray>& current, const QList<QByteArray>& previous) Q_DECL_OVERRIDE;
+    virtual void onStyleOptionChanged(const KItemListStyleOption& current, const KItemListStyleOption& previous) Q_DECL_OVERRIDE;
+    virtual void onSupportsItemExpandingChanged(bool supportsExpanding) Q_DECL_OVERRIDE;
+    virtual void onTransactionBegin() Q_DECL_OVERRIDE;
+    virtual void onTransactionEnd() Q_DECL_OVERRIDE;
+    virtual void resizeEvent(QGraphicsSceneResizeEvent* event) Q_DECL_OVERRIDE;
 
 protected slots:
-    virtual void slotItemsRemoved(const KItemRangeList& itemRanges);
+    virtual void slotItemsRemoved(const KItemRangeList& itemRanges) Q_DECL_OVERRIDE;
+    virtual void slotSortRoleChanged(const QByteArray& current, const QByteArray& previous) Q_DECL_OVERRIDE;
 
 private slots:
     void triggerVisibleIndexRangeUpdate();
@@ -89,21 +102,26 @@ private slots:
     void updateIconSize();
 
 private:
-    QSizeF visibleRoleSizeHint(int index, const QByteArray& role) const;
-    void updateLayoutOfVisibleItems();
-    void updateTimersInterval();
-    void updateMinimumRolesWidths();
+    /**
+     * Applies the roles defined by KItemListView::visibleRoles() to the
+     * KFileItemModel and KFileItemModelRolesUpdater. As the model does not
+     * distinct between visible and invisible roles also internal roles
+     * are applied that are mandatory for having a working KFileItemModel.
+     */
+    void applyRolesToModel();
+
+    /**
+     * @return Size that is available for the icons. The size might be larger than specified by
+     *         KItemListStyleOption::iconSize: With the IconsLayout also the empty left area left
+     *         and right of an icon will be included.
+     */
+    QSize availableIconSize() const;
 
 private:
-    Layout m_itemLayout;
-
     KFileItemModelRolesUpdater* m_modelRolesUpdater;
     QTimer* m_updateVisibleIndexRangeTimer;
     QTimer* m_updateIconSizeTimer;
 
-    // Cache for calculating visibleRoleSizes() in a fast way
-    QHash<QByteArray, int> m_minimumRolesWidths;
-
     friend class KFileItemListViewTest; // For unit testing
 };