]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kstandarditemlistview.h
Merge branch 'release/20.08' into master
[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
35 {
36 IconsLayout,
37 CompactLayout,
38 DetailsLayout
39 };
40
41 explicit KStandardItemListView(QGraphicsWidget* parent = nullptr);
42 ~KStandardItemListView() override;
43
44 void setItemLayout(ItemLayout layout);
45 ItemLayout itemLayout() const;
46
47 protected:
48 KItemListWidgetCreatorBase* defaultWidgetCreator() const override;
49 KItemListGroupHeaderCreatorBase* defaultGroupHeaderCreator() const override;
50 void initializeItemListWidget(KItemListWidget* item) override;
51 bool itemSizeHintUpdateRequired(const QSet<QByteArray>& changedRoles) const override;
52 virtual bool itemLayoutSupportsItemExpanding(ItemLayout layout) const;
53 virtual void onItemLayoutChanged(ItemLayout current, ItemLayout previous);
54 void onScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous) override;
55 void onSupportsItemExpandingChanged(bool supportsExpanding) override;
56 void polishEvent() override;
57
58 private:
59 void applyDefaultStyleOption(int iconSize, int padding, int horizontalMargin, int verticalMargin);
60 void updateLayoutOfVisibleItems();
61
62 private:
63 ItemLayout m_itemLayout;
64 };
65
66 #endif
67
68