]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/kstandarditemlistview.h
Make details view mode's full row activation optional
[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 /** To be overriden by sub-classes to specify when full row highlighting should be enabled. */
54 virtual bool itemLayoutHighlightEntireRow(ItemLayout layout) const;
55 virtual void onItemLayoutChanged(ItemLayout current, ItemLayout previous);
56 void onScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous) override;
57 void onSupportsItemExpandingChanged(bool supportsExpanding) override;
58 void polishEvent() override;
59
60 private:
61 void applyDefaultStyleOption(int iconSize, int padding, int horizontalMargin, int verticalMargin);
62 void updateLayoutOfVisibleItems();
63
64 private:
65 ItemLayout m_itemLayout;
66 };
67
68 #endif
69
70