]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kstandarditemlistview.h
GIT_SILENT Sync po/docbooks with svn
[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 void onScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous) override;
52 void onSupportsItemExpandingChanged(bool supportsExpanding) override;
53 void polishEvent() override;
54
55 private:
56 void applyDefaultStyleOption(int iconSize, int padding, int horizontalMargin, int verticalMargin);
57 void updateLayoutOfVisibleItems();
58
59 private:
60 ItemLayout m_itemLayout;
61 };
62
63 #endif