@@ -0,0 +1,32 | |||
|
1 | #ifndef SCIQLOP_DATASOURCETREEWIDGETITEM_H | |
|
2 | #define SCIQLOP_DATASOURCETREEWIDGETITEM_H | |
|
3 | ||
|
4 | #include <Common/spimpl.h> | |
|
5 | ||
|
6 | #include <QLoggingCategory> | |
|
7 | #include <QTreeWidgetItem> | |
|
8 | ||
|
9 | Q_DECLARE_LOGGING_CATEGORY(LOG_DataSourceTreeWidgetItem) | |
|
10 | ||
|
11 | class DataSourceItem; | |
|
12 | ||
|
13 | /** | |
|
14 | * @brief The DataSourceTreeWidgetItem is the graphical representation of a data source item. It is | |
|
15 | * intended to be displayed in a QTreeWidget. | |
|
16 | * @sa DataSourceItem | |
|
17 | */ | |
|
18 | class DataSourceTreeWidgetItem : public QTreeWidgetItem { | |
|
19 | public: | |
|
20 | explicit DataSourceTreeWidgetItem(const DataSourceItem *data, int type = Type); | |
|
21 | explicit DataSourceTreeWidgetItem(QTreeWidget *parent, const DataSourceItem *data, | |
|
22 | int type = Type); | |
|
23 | ||
|
24 | virtual QVariant data(int column, int role) const override; | |
|
25 | virtual void setData(int column, int role, const QVariant &value) override; | |
|
26 | ||
|
27 | private: | |
|
28 | class DataSourceTreeWidgetItemPrivate; | |
|
29 | spimpl::unique_impl_ptr<DataSourceTreeWidgetItemPrivate> impl; | |
|
30 | }; | |
|
31 | ||
|
32 | #endif // SCIQLOP_DATASOURCETREEWIDGETITEM_H |
@@ -0,0 +1,41 | |||
|
1 | #include <DataSource/DataSourceItem.h> | |
|
2 | #include <DataSource/DataSourceTreeWidgetItem.h> | |
|
3 | ||
|
4 | Q_LOGGING_CATEGORY(LOG_DataSourceTreeWidgetItem, "DataSourceTreeWidgetItem") | |
|
5 | ||
|
6 | struct DataSourceTreeWidgetItem::DataSourceTreeWidgetItemPrivate { | |
|
7 | explicit DataSourceTreeWidgetItemPrivate(const DataSourceItem *data) : m_Data{data} {} | |
|
8 | ||
|
9 | /// Model used to retrieve data source information | |
|
10 | const DataSourceItem *m_Data; | |
|
11 | }; | |
|
12 | ||
|
13 | DataSourceTreeWidgetItem::DataSourceTreeWidgetItem(const DataSourceItem *data, int type) | |
|
14 | : DataSourceTreeWidgetItem{nullptr, data, type} | |
|
15 | { | |
|
16 | } | |
|
17 | ||
|
18 | DataSourceTreeWidgetItem::DataSourceTreeWidgetItem(QTreeWidget *parent, const DataSourceItem *data, | |
|
19 | int type) | |
|
20 | : QTreeWidgetItem{parent, type}, | |
|
21 | impl{spimpl::make_unique_impl<DataSourceTreeWidgetItemPrivate>(data)} | |
|
22 | { | |
|
23 | } | |
|
24 | ||
|
25 | QVariant DataSourceTreeWidgetItem::data(int column, int role) const | |
|
26 | { | |
|
27 | if (role == Qt::DisplayRole) { | |
|
28 | return (impl->m_Data) ? impl->m_Data->data(column) : QVariant{}; | |
|
29 | } | |
|
30 | else { | |
|
31 | return QTreeWidgetItem::data(column, role); | |
|
32 | } | |
|
33 | } | |
|
34 | ||
|
35 | void DataSourceTreeWidgetItem::setData(int column, int role, const QVariant &value) | |
|
36 | { | |
|
37 | // Data can't be changed by edition | |
|
38 | if (role != Qt::EditRole) { | |
|
39 | QTreeWidgetItem::setData(column, role, value); | |
|
40 | } | |
|
41 | } |
General Comments 0
You need to be logged in to leave comments.
Login now