2 * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #ifndef KSTANDARDITEMLISTVIEW_H
8 #define KSTANDARDITEMLISTVIEW_H
10 #include "dolphin_export.h"
11 #include "kitemviews/kitemlistview.h"
14 * @brief Provides layouts for icons-, compact- and details-view.
16 * Together with the KStandardItemModel lists for standard usecases
17 * can be created in a straight forward way.
21 * KStandardItemListView* view = new KStandardItemListView();
22 * KStandardItemModel* model = new KStandardItemModel();
23 * model->appendItem(new KStandardItem("Item 1"));
24 * model->appendItem(new KStandardItem("Item 2"));
25 * KItemListController* controller = new KItemListController(model, view);
26 * KItemListContainer* container = new KItemListContainer(controller, parentWidget);
29 class DOLPHIN_EXPORT KStandardItemListView
: public KItemListView
34 enum ItemLayout
{ IconsLayout
, CompactLayout
, DetailsLayout
};
36 explicit KStandardItemListView(QGraphicsWidget
*parent
= nullptr);
37 ~KStandardItemListView() override
;
39 void setItemLayout(ItemLayout layout
);
40 ItemLayout
itemLayout() const;
43 KItemListWidgetCreatorBase
*defaultWidgetCreator() const override
;
44 KItemListGroupHeaderCreatorBase
*defaultGroupHeaderCreator() const override
;
45 void initializeItemListWidget(KItemListWidget
*item
) override
;
46 bool itemSizeHintUpdateRequired(const QSet
<QByteArray
> &changedRoles
) const override
;
47 virtual bool itemLayoutSupportsItemExpanding(ItemLayout layout
) const;
48 /** To be overriden by sub-classes to specify when full row highlighting should be enabled. */
49 virtual bool itemLayoutHighlightEntireRow(ItemLayout layout
) const;
50 virtual void onItemLayoutChanged(ItemLayout current
, ItemLayout previous
);
51 virtual qreal
scrollSingleStep() const override
;
52 void onScrollOrientationChanged(Qt::Orientation current
, Qt::Orientation previous
) override
;
53 void onSupportsItemExpandingChanged(bool supportsExpanding
) override
;
54 void polishEvent() override
;
57 void applyDefaultStyleOption(int iconSize
, int padding
, int horizontalMargin
, int verticalMargin
);
58 void updateLayoutOfVisibleItems();
61 ItemLayout m_itemLayout
;