2 * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #ifndef KFILEITEMLISTVIEW_H
8 #define KFILEITEMLISTVIEW_H
10 #include "dolphin_export.h"
11 #include "kitemviews/kstandarditemlistview.h"
13 class KFileItemModelRolesUpdater
;
17 * @brief View that allows to show the content of file-items.
19 * The corresponding model set by the controller must be an instance
20 * of KFileItemModel. Per default KFileItemListWidget is set as widget creator
21 * value and KItemListGroupHeader as group-header creator value. Use
22 * KItemListView::setWidgetCreator() and KItemListView::setGroupHeaderCreator()
23 * to apply customized generators.
25 class DOLPHIN_EXPORT KFileItemListView
: public KStandardItemListView
30 explicit KFileItemListView(QGraphicsWidget
* parent
= nullptr);
31 ~KFileItemListView() override
;
33 void setPreviewsShown(bool show
);
34 bool previewsShown() const;
37 * If enabled a small preview gets upscaled to the icon size in case where
38 * the icon size is larger than the preview. Per default enlarging is
41 void setEnlargeSmallPreviews(bool enlarge
);
42 bool enlargeSmallPreviews() const;
45 * Sets the list of enabled thumbnail plugins that are used for previews.
46 * Per default all plugins enabled in the KConfigGroup "PreviewSettings"
49 * For a list of available plugins, call KServiceTypeTrader::self()->query("ThumbCreator").
53 void setEnabledPlugins(const QStringList
& list
);
56 * Returns the list of enabled thumbnail plugins.
57 * @see setEnabledPlugins
59 QStringList
enabledPlugins() const;
62 * Sets the maximum file size of local files for which
63 * previews will be generated (if enabled). A value of 0
64 * indicates no file size limit.
65 * Per default the value from KConfigGroup "PreviewSettings"
66 * MaximumSize is used, 0 otherwise.
69 void setLocalFileSizePreviewLimit(qlonglong size
);
70 qlonglong
localFileSizePreviewLimit() const;
73 * If set to true, directories contents are scanned to determine their size
76 void setScanDirectories(bool enabled
);
77 bool scanDirectories();
79 QPixmap
createDragPixmap(const KItemSet
& indexes
) const override
;
82 KItemListWidgetCreatorBase
* defaultWidgetCreator() const override
;
83 void initializeItemListWidget(KItemListWidget
* item
) override
;
84 virtual void onPreviewsShownChanged(bool shown
);
85 void onItemLayoutChanged(ItemLayout current
, ItemLayout previous
) override
;
86 void onModelChanged(KItemModelBase
* current
, KItemModelBase
* previous
) override
;
87 void onScrollOrientationChanged(Qt::Orientation current
, Qt::Orientation previous
) override
;
88 void onItemSizeChanged(const QSizeF
& current
, const QSizeF
& previous
) override
;
89 void onScrollOffsetChanged(qreal current
, qreal previous
) override
;
90 void onVisibleRolesChanged(const QList
<QByteArray
>& current
, const QList
<QByteArray
>& previous
) override
;
91 void onStyleOptionChanged(const KItemListStyleOption
& current
, const KItemListStyleOption
& previous
) override
;
92 void onSupportsItemExpandingChanged(bool supportsExpanding
) override
;
93 void onTransactionBegin() override
;
94 void onTransactionEnd() override
;
95 void resizeEvent(QGraphicsSceneResizeEvent
* event
) override
;
98 void slotItemsRemoved(const KItemRangeList
& itemRanges
) override
;
99 void slotSortRoleChanged(const QByteArray
& current
, const QByteArray
& previous
) override
;
102 void triggerVisibleIndexRangeUpdate();
103 void updateVisibleIndexRange();
105 void triggerIconSizeUpdate();
106 void updateIconSize();
110 * Applies the roles defined by KItemListView::visibleRoles() to the
111 * KFileItemModel and KFileItemModelRolesUpdater. As the model does not
112 * distinct between visible and invisible roles also internal roles
113 * are applied that are mandatory for having a working KFileItemModel.
115 void applyRolesToModel();
118 * @return Size that is available for the icons. The size might be larger than specified by
119 * KItemListStyleOption::iconSize: With the IconsLayout also the empty left area left
120 * and right of an icon will be included.
122 QSize
availableIconSize() const;
125 KFileItemModelRolesUpdater
* m_modelRolesUpdater
;
126 QTimer
* m_updateVisibleIndexRangeTimer
;
127 QTimer
* m_updateIconSizeTimer
;
128 bool m_scanDirectories
;
130 friend class KFileItemListViewTest
; // For unit testing