Akonadi

statisticsproxymodel.h
1 /*
2  SPDX-FileCopyrightText: 2009 Kevin Ottens <[email protected]>
3  2016 David Faure <[email protected]>s
4 
5  SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #pragma once
9 
10 #include "akonadicore_export.h"
11 
12 #include <KExtraColumnsProxyModel>
13 
14 #include <memory>
15 
16 namespace Akonadi
17 {
18 class StatisticsProxyModelPrivate;
19 
20 /**
21  * @short A proxy model that exposes collection statistics through extra columns.
22  *
23  * This class can be used on top of an EntityTreeModel to display extra columns
24  * summarizing statistics of collections.
25  *
26  * @code
27  *
28  * Akonadi::EntityTreeModel *model = new Akonadi::EntityTreeModel( ... );
29  *
30  * Akonadi::StatisticsProxyModel *proxy = new Akonadi::StatisticsProxyModel();
31  * proxy->setSourceModel( model );
32  *
33  * Akonadi::EntityTreeView *view = new Akonadi::EntityTreeView( this );
34  * view->setModel( proxy );
35  *
36  * @endcode
37  *
38  * @author Kevin Ottens <[email protected]>, now maintained by David Faure <[email protected]>
39  * @since 4.4
40  */
41 class AKONADICORE_EXPORT StatisticsProxyModel : public KExtraColumnsProxyModel
42 {
43  Q_OBJECT
44 
45 public:
46  /**
47  * Creates a new statistics proxy model.
48  *
49  * @param parent The parent object.
50  */
51  explicit StatisticsProxyModel(QObject *parent = nullptr);
52 
53  /**
54  * Destroys the statistics proxy model.
55  */
56  ~StatisticsProxyModel() override;
57 
58  /**
59  * @param enable Display tooltips
60  * By default, tooltips are disabled.
61  */
62  void setToolTipEnabled(bool enable);
63 
64  /**
65  * Return true if we display tooltips, otherwise false
66  */
67  [[nodiscard]] bool isToolTipEnabled() const;
68 
69  /**
70  * @param enable Display extra statistics columns
71  * By default, the extra columns are enabled.
72  */
73  void setExtraColumnsEnabled(bool enable);
74 
75  /**
76  * Return true if we display extra statistics columns, otherwise false
77  */
78  [[nodiscard]] bool isExtraColumnsEnabled() const;
79 
80  [[nodiscard]] QVariant extraColumnData(const QModelIndex &parent, int row, int extraColumn, int role) const override;
81  [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
82  [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &index) const override;
83 
84  [[nodiscard]] QModelIndexList match(const QModelIndex &start,
85  int role,
86  const QVariant &value,
87  int hits = 1,
89 
90  void setSourceModel(QAbstractItemModel *model) override;
91 
92 private:
93  /// @cond PRIVATE
94  std::unique_ptr<StatisticsProxyModelPrivate> const d;
95  /// @endcond
96 };
97 
98 }
DisplayRole
Q_SCRIPTABLE Q_NOREPLY void start()
typedef ItemFlags
typedef MatchFlags
A proxy model that exposes collection statistics through extra columns.
Helper integration between Akonadi and Qt.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Wed Nov 29 2023 04:04:50 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.