]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kstandarditemlistview.h
DolphinView: Conform to global scroll speed
[dolphin.git] / src / kitemviews / kstandarditemlistview.h
1 /*
2 * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #ifndef KSTANDARDITEMLISTVIEW_H
8 #define KSTANDARDITEMLISTVIEW_H
9
10 #include "dolphin_export.h"
11 #include "kitemviews/kitemlistview.h"
12
13 /**
14 * @brief Provides layouts for icons-, compact- and details-view.
15 *
16 * Together with the KStandardItemModel lists for standard usecases
17 * can be created in a straight forward way.
18 *
19 * Example code:
20 * <code>
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);
27 * </code>
28 */
29 class DOLPHIN_EXPORT KStandardItemListView : public KItemListView
30 {
31 Q_OBJECT
32
33 public:
34 enum ItemLayout { IconsLayout, CompactLayout, DetailsLayout };
35
36 explicit KStandardItemListView(QGraphicsWidget *parent = nullptr);
37 ~KStandardItemListView() override;
38
39 void setItemLayout(ItemLayout layout);
40 ItemLayout itemLayout() const;
41
42 protected:
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;
55
56 private:
57 void applyDefaultStyleOption(int iconSize, int padding, int horizontalMargin, int verticalMargin);
58 void updateLayoutOfVisibleItems();
59
60 private:
61 ItemLayout m_itemLayout;
62 };
63
64 #endif