@@ -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