@@ -1,22 +1,24 | |||
|
1 | 1 | #ifndef SCIQLOP_CATALOGUETREEWIDGETITEM_H |
|
2 | 2 | #define SCIQLOP_CATALOGUETREEWIDGETITEM_H |
|
3 | 3 | |
|
4 | 4 | #include <Common/spimpl.h> |
|
5 | 5 | #include <QTreeWidgetItem> |
|
6 | 6 | |
|
7 | 7 | #include <DBCatalogue.h> |
|
8 | 8 | |
|
9 | 9 | |
|
10 | 10 | class CatalogueTreeWidgetItem : public QTreeWidgetItem { |
|
11 | 11 | public: |
|
12 | 12 | CatalogueTreeWidgetItem(DBCatalogue catalogue, int type = QTreeWidgetItem::Type); |
|
13 | 13 | |
|
14 | 14 | QVariant data(int column, int role) const override; |
|
15 | void setData(int column, int role, const QVariant &value) override; | |
|
16 | ||
|
15 | 17 | DBCatalogue catalogue() const; |
|
16 | 18 | |
|
17 | 19 | private: |
|
18 | 20 | class CatalogueTreeWidgetItemPrivate; |
|
19 | 21 | spimpl::unique_impl_ptr<CatalogueTreeWidgetItemPrivate> impl; |
|
20 | 22 | }; |
|
21 | 23 | |
|
22 | 24 | #endif // SCIQLOP_CATALOGUETREEWIDGETITEM_H |
@@ -1,32 +1,46 | |||
|
1 | 1 | #include "Catalogue/CatalogueTreeWidgetItem.h" |
|
2 | 2 | |
|
3 | 3 | struct CatalogueTreeWidgetItem::CatalogueTreeWidgetItemPrivate { |
|
4 | 4 | |
|
5 | 5 | DBCatalogue m_Catalogue; |
|
6 | 6 | |
|
7 | 7 | CatalogueTreeWidgetItemPrivate(DBCatalogue catalogue) : m_Catalogue(catalogue) {} |
|
8 | 8 | }; |
|
9 | 9 | |
|
10 | 10 | |
|
11 | 11 | CatalogueTreeWidgetItem::CatalogueTreeWidgetItem(DBCatalogue catalogue, int type) |
|
12 | 12 | : QTreeWidgetItem(type), |
|
13 | 13 | impl{spimpl::make_unique_impl<CatalogueTreeWidgetItemPrivate>(catalogue)} |
|
14 | 14 | { |
|
15 | setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable); | |
|
15 | 16 | } |
|
16 | 17 | |
|
17 | 18 | QVariant CatalogueTreeWidgetItem::data(int column, int role) const |
|
18 | 19 | { |
|
19 | 20 | switch (role) { |
|
21 | case Qt::EditRole: // fallthrough | |
|
20 | 22 | case Qt::DisplayRole: |
|
21 | 23 | return impl->m_Catalogue.getName(); |
|
22 | 24 | default: |
|
23 | 25 | break; |
|
24 | 26 | } |
|
25 | 27 | |
|
26 | 28 | return QTreeWidgetItem::data(column, role); |
|
27 | 29 | } |
|
28 | 30 | |
|
31 | void CatalogueTreeWidgetItem::setData(int column, int role, const QVariant &value) | |
|
32 | { | |
|
33 | if (role == Qt::EditRole && column == 0) { | |
|
34 | auto newName = value.toString(); | |
|
35 | setText(0, newName); | |
|
36 | impl->m_Catalogue.setName(newName); | |
|
37 | } | |
|
38 | else { | |
|
39 | QTreeWidgetItem::setData(column, role, value); | |
|
40 | } | |
|
41 | } | |
|
42 | ||
|
29 | 43 | DBCatalogue CatalogueTreeWidgetItem::catalogue() const |
|
30 | 44 | { |
|
31 | 45 | return impl->m_Catalogue; |
|
32 | 46 | } |
General Comments 0
You need to be logged in to leave comments.
Login now