##// END OF EJS Templates
Display of the save & cancel button next to a catalogue
trabillard -
r1142:425eece3bcf7
parent child
Show More
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
@@ -1,24 +1,27
1 #ifndef SCIQLOP_CATALOGUETREEWIDGETITEM_H
1 #ifndef SCIQLOP_CATALOGUETREEWIDGETITEM_H
2 #define SCIQLOP_CATALOGUETREEWIDGETITEM_H
2 #define SCIQLOP_CATALOGUETREEWIDGETITEM_H
3
3
4 #include <Common/spimpl.h>
4 #include <Common/spimpl.h>
5 #include <QTreeWidgetItem>
5 #include <QTreeWidgetItem>
6
6
7 #include <DBCatalogue.h>
7 #include <DBCatalogue.h>
8
8
9
9
10 class CatalogueTreeWidgetItem : public QTreeWidgetItem {
10 class CatalogueTreeWidgetItem : public QTreeWidgetItem {
11 public:
11 public:
12 CatalogueTreeWidgetItem(DBCatalogue catalogue, int type = QTreeWidgetItem::Type);
12 CatalogueTreeWidgetItem(DBCatalogue catalogue, int type = QTreeWidgetItem::Type);
13
13
14 QVariant data(int column, int role) const override;
14 QVariant data(int column, int role) const override;
15 void setData(int column, int role, const QVariant &value) override;
15 void setData(int column, int role, const QVariant &value) override;
16
16
17 /// Returns the catalogue represented by the item
17 DBCatalogue catalogue() const;
18 DBCatalogue catalogue() const;
18
19
20 void setHasChanges(bool value);
21
19 private:
22 private:
20 class CatalogueTreeWidgetItemPrivate;
23 class CatalogueTreeWidgetItemPrivate;
21 spimpl::unique_impl_ptr<CatalogueTreeWidgetItemPrivate> impl;
24 spimpl::unique_impl_ptr<CatalogueTreeWidgetItemPrivate> impl;
22 };
25 };
23
26
24 #endif // SCIQLOP_CATALOGUETREEWIDGETITEM_H
27 #endif // SCIQLOP_CATALOGUETREEWIDGETITEM_H
@@ -1,29 +1,31
1 <RCC>
1 <RCC>
2 <qresource prefix="/">
2 <qresource prefix="/">
3 <file>icones/dataSourceComponent.png</file>
3 <file>icones/dataSourceComponent.png</file>
4 <file>icones/dataSourceNode.png</file>
4 <file>icones/dataSourceNode.png</file>
5 <file>icones/dataSourceProduct.png</file>
5 <file>icones/dataSourceProduct.png</file>
6 <file>icones/dataSourceRoot.png</file>
6 <file>icones/dataSourceRoot.png</file>
7 <file>icones/delete.png</file>
7 <file>icones/delete.png</file>
8 <file>icones/down.png</file>
8 <file>icones/down.png</file>
9 <file>icones/openInspector.png</file>
9 <file>icones/openInspector.png</file>
10 <file>icones/next.png</file>
10 <file>icones/next.png</file>
11 <file>icones/plot.png</file>
11 <file>icones/plot.png</file>
12 <file>icones/previous.png</file>
12 <file>icones/previous.png</file>
13 <file>icones/unplot.png</file>
13 <file>icones/unplot.png</file>
14 <file>icones/up.png</file>
14 <file>icones/up.png</file>
15 <file>icones/time.png</file>
15 <file>icones/time.png</file>
16 <file>icones/zoom.png</file>
16 <file>icones/zoom.png</file>
17 <file>icones/rectangle.png</file>
17 <file>icones/rectangle.png</file>
18 <file>icones/drag.png</file>
18 <file>icones/drag.png</file>
19 <file>icones/cursor.png</file>
19 <file>icones/cursor.png</file>
20 <file>icones/pointer.png</file>
20 <file>icones/pointer.png</file>
21 <file>icones/catalogue.png</file>
21 <file>icones/catalogue.png</file>
22 <file>icones/add.png</file>
22 <file>icones/add.png</file>
23 <file>icones/remove.png</file>
23 <file>icones/remove.png</file>
24 <file>icones/chart.png</file>
24 <file>icones/chart.png</file>
25 <file>icones/allEvents.png</file>
25 <file>icones/allEvents.png</file>
26 <file>icones/trash.png</file>
26 <file>icones/trash.png</file>
27 <file>icones/database.png</file>
27 <file>icones/database.png</file>
28 <file>icones/save.png</file>
29 <file>icones/discard.png</file>
28 </qresource>
30 </qresource>
29 </RCC>
31 </RCC>
@@ -1,199 +1,203
1 #include "Catalogue/CatalogueSideBarWidget.h"
1 #include "Catalogue/CatalogueSideBarWidget.h"
2 #include "ui_CatalogueSideBarWidget.h"
2 #include "ui_CatalogueSideBarWidget.h"
3 #include <SqpApplication.h>
3 #include <SqpApplication.h>
4
4
5 #include <Catalogue/CatalogueController.h>
5 #include <Catalogue/CatalogueController.h>
6 #include <Catalogue/CatalogueTreeWidgetItem.h>
6 #include <Catalogue/CatalogueTreeWidgetItem.h>
7 #include <CatalogueDao.h>
7 #include <CatalogueDao.h>
8 #include <ComparaisonPredicate.h>
8 #include <ComparaisonPredicate.h>
9 #include <DBCatalogue.h>
9 #include <DBCatalogue.h>
10
10
11 #include <QMenu>
11 #include <QMenu>
12
12
13
13
14 constexpr auto ALL_EVENT_ITEM_TYPE = QTreeWidgetItem::UserType;
14 constexpr auto ALL_EVENT_ITEM_TYPE = QTreeWidgetItem::UserType;
15 constexpr auto TRASH_ITEM_TYPE = QTreeWidgetItem::UserType + 1;
15 constexpr auto TRASH_ITEM_TYPE = QTreeWidgetItem::UserType + 1;
16 constexpr auto CATALOGUE_ITEM_TYPE = QTreeWidgetItem::UserType + 2;
16 constexpr auto CATALOGUE_ITEM_TYPE = QTreeWidgetItem::UserType + 2;
17 constexpr auto DATABASE_ITEM_TYPE = QTreeWidgetItem::UserType + 3;
17 constexpr auto DATABASE_ITEM_TYPE = QTreeWidgetItem::UserType + 3;
18
18
19
19
20 struct CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate {
20 struct CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate {
21
21
22 QHash<QTreeWidgetItem *, DBCatalogue> m_CatalogueMap;
22 QHash<QTreeWidgetItem *, DBCatalogue> m_CatalogueMap;
23
23
24 void configureTreeWidget(QTreeWidget *treeWidget);
24 void configureTreeWidget(QTreeWidget *treeWidget);
25 QTreeWidgetItem *addDatabaseItem(const QString &name, QTreeWidget *treeWidget);
25 QTreeWidgetItem *addDatabaseItem(const QString &name, QTreeWidget *treeWidget);
26 QTreeWidgetItem *getDatabaseItem(const QString &name, QTreeWidget *treeWidget);
26 QTreeWidgetItem *getDatabaseItem(const QString &name, QTreeWidget *treeWidget);
27 void addCatalogueItem(const DBCatalogue &catalogue, QTreeWidgetItem *parentDatabaseItem);
27 void addCatalogueItem(const DBCatalogue &catalogue, QTreeWidgetItem *parentDatabaseItem);
28 };
28 };
29
29
30 CatalogueSideBarWidget::CatalogueSideBarWidget(QWidget *parent)
30 CatalogueSideBarWidget::CatalogueSideBarWidget(QWidget *parent)
31 : QWidget(parent),
31 : QWidget(parent),
32 ui(new Ui::CatalogueSideBarWidget),
32 ui(new Ui::CatalogueSideBarWidget),
33 impl{spimpl::make_unique_impl<CatalogueSideBarWidgetPrivate>()}
33 impl{spimpl::make_unique_impl<CatalogueSideBarWidgetPrivate>()}
34 {
34 {
35 ui->setupUi(this);
35 ui->setupUi(this);
36 impl->configureTreeWidget(ui->treeWidget);
36 impl->configureTreeWidget(ui->treeWidget);
37
37
38 ui->treeWidget->setColumnCount(2);
39 ui->treeWidget->header()->setStretchLastSection(false);
40 ui->treeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
41 ui->treeWidget->header()->setSectionResizeMode(0, QHeaderView::Stretch);
42
38 auto emitSelection = [this]() {
43 auto emitSelection = [this]() {
39
44
40 auto selectedItems = ui->treeWidget->selectedItems();
45 auto selectedItems = ui->treeWidget->selectedItems();
41 if (selectedItems.isEmpty()) {
46 if (selectedItems.isEmpty()) {
42 emit this->selectionCleared();
47 emit this->selectionCleared();
43 }
48 }
44 else {
49 else {
45 QVector<DBCatalogue> catalogues;
50 QVector<DBCatalogue> catalogues;
46 QStringList databases;
51 QStringList databases;
47 int selectionType = selectedItems.first()->type();
52 int selectionType = selectedItems.first()->type();
48
53
49 for (auto item : ui->treeWidget->selectedItems()) {
54 for (auto item : ui->treeWidget->selectedItems()) {
50 if (item->type() == selectionType) {
55 if (item->type() == selectionType) {
51 switch (selectionType) {
56 switch (selectionType) {
52 case CATALOGUE_ITEM_TYPE:
57 case CATALOGUE_ITEM_TYPE:
53 catalogues.append(
58 catalogues.append(
54 static_cast<CatalogueTreeWidgetItem *>(item)->catalogue());
59 static_cast<CatalogueTreeWidgetItem *>(item)->catalogue());
55 break;
60 break;
56 case DATABASE_ITEM_TYPE:
61 case DATABASE_ITEM_TYPE:
57 selectionType = DATABASE_ITEM_TYPE;
62 selectionType = DATABASE_ITEM_TYPE;
58 databases.append(item->text(0));
63 databases.append(item->text(0));
59 case ALL_EVENT_ITEM_TYPE: // fallthrough
64 case ALL_EVENT_ITEM_TYPE: // fallthrough
60 case TRASH_ITEM_TYPE: // fallthrough
65 case TRASH_ITEM_TYPE: // fallthrough
61 default:
66 default:
62 break;
67 break;
63 }
68 }
64 }
69 }
65 else {
70 else {
66 // Incoherent multi selection
71 // Incoherent multi selection
67 selectionType = -1;
72 selectionType = -1;
68 break;
73 break;
69 }
74 }
70 }
75 }
71
76
72 switch (selectionType) {
77 switch (selectionType) {
73 case CATALOGUE_ITEM_TYPE:
78 case CATALOGUE_ITEM_TYPE:
74 emit this->catalogueSelected(catalogues);
79 emit this->catalogueSelected(catalogues);
75 break;
80 break;
76 case DATABASE_ITEM_TYPE:
81 case DATABASE_ITEM_TYPE:
77 emit this->databaseSelected(databases);
82 emit this->databaseSelected(databases);
78 break;
83 break;
79 case ALL_EVENT_ITEM_TYPE:
84 case ALL_EVENT_ITEM_TYPE:
80 emit this->allEventsSelected();
85 emit this->allEventsSelected();
81 break;
86 break;
82 case TRASH_ITEM_TYPE:
87 case TRASH_ITEM_TYPE:
83 emit this->trashSelected();
88 emit this->trashSelected();
84 break;
89 break;
85 default:
90 default:
86 emit this->selectionCleared();
91 emit this->selectionCleared();
87 break;
92 break;
88 }
93 }
89 }
94 }
90
95
91
96
92 };
97 };
93
98
94 connect(ui->treeWidget, &QTreeWidget::itemClicked, emitSelection);
99 connect(ui->treeWidget, &QTreeWidget::itemClicked, emitSelection);
95 connect(ui->treeWidget, &QTreeWidget::currentItemChanged, emitSelection);
100 connect(ui->treeWidget, &QTreeWidget::currentItemChanged, emitSelection);
96
101
97 ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
102 ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
98 connect(ui->treeWidget, &QTreeWidget::customContextMenuRequested, this,
103 connect(ui->treeWidget, &QTreeWidget::customContextMenuRequested, this,
99 &CatalogueSideBarWidget::onContextMenuRequested);
104 &CatalogueSideBarWidget::onContextMenuRequested);
100 }
105 }
101
106
102 CatalogueSideBarWidget::~CatalogueSideBarWidget()
107 CatalogueSideBarWidget::~CatalogueSideBarWidget()
103 {
108 {
104 delete ui;
109 delete ui;
105 }
110 }
106
111
107 void CatalogueSideBarWidget::onContextMenuRequested(const QPoint &pos)
112 void CatalogueSideBarWidget::onContextMenuRequested(const QPoint &pos)
108 {
113 {
109 QMenu menu{this};
114 QMenu menu{this};
110
115
111 auto currentItem = ui->treeWidget->currentItem();
116 auto currentItem = ui->treeWidget->currentItem();
112 switch (currentItem->type()) {
117 switch (currentItem->type()) {
113 case CATALOGUE_ITEM_TYPE:
118 case CATALOGUE_ITEM_TYPE:
114 menu.addAction("Rename",
119 menu.addAction("Rename",
115 [this, currentItem]() { ui->treeWidget->editItem(currentItem); });
120 [this, currentItem]() { ui->treeWidget->editItem(currentItem); });
116 break;
121 break;
117 case DATABASE_ITEM_TYPE:
122 case DATABASE_ITEM_TYPE:
118 break;
123 break;
119 case ALL_EVENT_ITEM_TYPE:
124 case ALL_EVENT_ITEM_TYPE:
120 break;
125 break;
121 case TRASH_ITEM_TYPE:
126 case TRASH_ITEM_TYPE:
122 menu.addAction("Empty Trash", []() {
127 menu.addAction("Empty Trash", []() {
123 // TODO
128 // TODO
124 });
129 });
125 break;
130 break;
126 default:
131 default:
127 break;
132 break;
128 }
133 }
129
134
130 if (!menu.isEmpty()) {
135 if (!menu.isEmpty()) {
131 menu.exec(ui->treeWidget->mapToGlobal(pos));
136 menu.exec(ui->treeWidget->mapToGlobal(pos));
132 }
137 }
133 }
138 }
134
139
135 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::configureTreeWidget(
140 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::configureTreeWidget(
136 QTreeWidget *treeWidget)
141 QTreeWidget *treeWidget)
137 {
142 {
138 auto allEventsItem = new QTreeWidgetItem{{"All Events"}, ALL_EVENT_ITEM_TYPE};
143 auto allEventsItem = new QTreeWidgetItem{{"All Events"}, ALL_EVENT_ITEM_TYPE};
139 allEventsItem->setIcon(0, QIcon(":/icones/allEvents.png"));
144 allEventsItem->setIcon(0, QIcon(":/icones/allEvents.png"));
140 treeWidget->addTopLevelItem(allEventsItem);
145 treeWidget->addTopLevelItem(allEventsItem);
141
146
142 auto trashItem = new QTreeWidgetItem{{"Trash"}, TRASH_ITEM_TYPE};
147 auto trashItem = new QTreeWidgetItem{{"Trash"}, TRASH_ITEM_TYPE};
143 trashItem->setIcon(0, QIcon(":/icones/trash.png"));
148 trashItem->setIcon(0, QIcon(":/icones/trash.png"));
144 treeWidget->addTopLevelItem(trashItem);
149 treeWidget->addTopLevelItem(trashItem);
145
150
146 auto separator = new QFrame{treeWidget};
151 auto separator = new QFrame{treeWidget};
147 separator->setFrameShape(QFrame::HLine);
152 separator->setFrameShape(QFrame::HLine);
148
149 auto separatorItem = new QTreeWidgetItem{};
153 auto separatorItem = new QTreeWidgetItem{};
150 separatorItem->setFlags(Qt::NoItemFlags);
154 separatorItem->setFlags(Qt::NoItemFlags);
151 treeWidget->addTopLevelItem(separatorItem);
155 treeWidget->addTopLevelItem(separatorItem);
152 treeWidget->setItemWidget(separatorItem, 0, separator);
156 treeWidget->setItemWidget(separatorItem, 0, separator);
153
157
154 auto &dao = sqpApp->catalogueController().getDao();
158 auto &dao = sqpApp->catalogueController().getDao();
155 auto allPredicate = std::make_shared<ComparaisonPredicate>(QString{"uniqId"}, "-1",
159 auto allPredicate = std::make_shared<ComparaisonPredicate>(QString{"uniqId"}, "-1",
156 ComparaisonOperation::DIFFERENT);
160 ComparaisonOperation::DIFFERENT);
157
161
158 auto db = addDatabaseItem("Default", treeWidget);
162 auto db = addDatabaseItem("Default", treeWidget);
159
163
160 auto catalogues = dao.getCatalogues(allPredicate);
164 auto catalogues = dao.getCatalogues(allPredicate);
161 for (auto catalogue : catalogues) {
165 for (auto catalogue : catalogues) {
162 addCatalogueItem(catalogue, db);
166 addCatalogueItem(catalogue, db);
163 }
167 }
164
168
165 treeWidget->expandAll();
169 treeWidget->expandAll();
166 }
170 }
167
171
168 QTreeWidgetItem *
172 QTreeWidgetItem *
169 CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addDatabaseItem(const QString &name,
173 CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addDatabaseItem(const QString &name,
170 QTreeWidget *treeWidget)
174 QTreeWidget *treeWidget)
171 {
175 {
172 auto databaseItem = new QTreeWidgetItem{{name}, DATABASE_ITEM_TYPE};
176 auto databaseItem = new QTreeWidgetItem{{name}, DATABASE_ITEM_TYPE};
173 databaseItem->setIcon(0, QIcon{":/icones/database.png"});
177 databaseItem->setIcon(0, QIcon{":/icones/database.png"});
174 treeWidget->addTopLevelItem(databaseItem);
178 treeWidget->addTopLevelItem(databaseItem);
175
179
176 return databaseItem;
180 return databaseItem;
177 }
181 }
178
182
179 QTreeWidgetItem *
183 QTreeWidgetItem *
180 CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::getDatabaseItem(const QString &name,
184 CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::getDatabaseItem(const QString &name,
181 QTreeWidget *treeWidget)
185 QTreeWidget *treeWidget)
182 {
186 {
183 for (auto i = 0; i < treeWidget->topLevelItemCount(); ++i) {
187 for (auto i = 0; i < treeWidget->topLevelItemCount(); ++i) {
184 auto item = treeWidget->topLevelItem(i);
188 auto item = treeWidget->topLevelItem(i);
185 if (item->type() == DATABASE_ITEM_TYPE && item->text(0) == name) {
189 if (item->type() == DATABASE_ITEM_TYPE && item->text(0) == name) {
186 return item;
190 return item;
187 }
191 }
188 }
192 }
189
193
190 return nullptr;
194 return nullptr;
191 }
195 }
192
196
193 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addCatalogueItem(
197 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addCatalogueItem(
194 const DBCatalogue &catalogue, QTreeWidgetItem *parentDatabaseItem)
198 const DBCatalogue &catalogue, QTreeWidgetItem *parentDatabaseItem)
195 {
199 {
196 auto catalogueItem = new CatalogueTreeWidgetItem{catalogue, CATALOGUE_ITEM_TYPE};
200 auto catalogueItem = new CatalogueTreeWidgetItem{catalogue, CATALOGUE_ITEM_TYPE};
197 catalogueItem->setIcon(0, QIcon{":/icones/catalogue.png"});
201 catalogueItem->setIcon(0, QIcon{":/icones/catalogue.png"});
198 parentDatabaseItem->addChild(catalogueItem);
202 parentDatabaseItem->addChild(catalogueItem);
199 }
203 }
@@ -1,46 +1,90
1 #include "Catalogue/CatalogueTreeWidgetItem.h"
1 #include "Catalogue/CatalogueTreeWidgetItem.h"
2
2
3 #include <memory>
4
5 #include <QBoxLayout>
6 #include <QToolButton>
7
8 const auto VALIDATION_BUTTON_ICON_SIZE = 12;
9
3 struct CatalogueTreeWidgetItem::CatalogueTreeWidgetItemPrivate {
10 struct CatalogueTreeWidgetItem::CatalogueTreeWidgetItemPrivate {
4
11
5 DBCatalogue m_Catalogue;
12 DBCatalogue m_Catalogue;
6
13
7 CatalogueTreeWidgetItemPrivate(DBCatalogue catalogue) : m_Catalogue(catalogue) {}
14 CatalogueTreeWidgetItemPrivate(DBCatalogue catalogue) : m_Catalogue(catalogue) {}
8 };
15 };
9
16
10
17
11 CatalogueTreeWidgetItem::CatalogueTreeWidgetItem(DBCatalogue catalogue, int type)
18 CatalogueTreeWidgetItem::CatalogueTreeWidgetItem(DBCatalogue catalogue, int type)
12 : QTreeWidgetItem(type),
19 : QTreeWidgetItem(type),
13 impl{spimpl::make_unique_impl<CatalogueTreeWidgetItemPrivate>(catalogue)}
20 impl{spimpl::make_unique_impl<CatalogueTreeWidgetItemPrivate>(catalogue)}
14 {
21 {
15 setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);
22 setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);
16 }
23 }
17
24
18 QVariant CatalogueTreeWidgetItem::data(int column, int role) const
25 QVariant CatalogueTreeWidgetItem::data(int column, int role) const
19 {
26 {
20 switch (role) {
27 if (column == 0) {
21 case Qt::EditRole: // fallthrough
28 switch (role) {
22 case Qt::DisplayRole:
29 case Qt::EditRole: // fallthrough
23 return impl->m_Catalogue.getName();
30 case Qt::DisplayRole:
24 default:
31 return impl->m_Catalogue.getName();
25 break;
32 default:
33 break;
34 }
26 }
35 }
27
36
28 return QTreeWidgetItem::data(column, role);
37 return QTreeWidgetItem::data(column, role);
29 }
38 }
30
39
31 void CatalogueTreeWidgetItem::setData(int column, int role, const QVariant &value)
40 void CatalogueTreeWidgetItem::setData(int column, int role, const QVariant &value)
32 {
41 {
33 if (role == Qt::EditRole && column == 0) {
42 if (role == Qt::EditRole && column == 0) {
34 auto newName = value.toString();
43 auto newName = value.toString();
35 setText(0, newName);
44 if (newName != impl->m_Catalogue.getName()) {
36 impl->m_Catalogue.setName(newName);
45 setText(0, newName);
46 impl->m_Catalogue.setName(newName);
47 setHasChanges(true);
48 }
37 }
49 }
38 else {
50 else {
39 QTreeWidgetItem::setData(column, role, value);
51 QTreeWidgetItem::setData(column, role, value);
40 }
52 }
41 }
53 }
42
54
43 DBCatalogue CatalogueTreeWidgetItem::catalogue() const
55 DBCatalogue CatalogueTreeWidgetItem::catalogue() const
44 {
56 {
45 return impl->m_Catalogue;
57 return impl->m_Catalogue;
46 }
58 }
59
60 void CatalogueTreeWidgetItem::setHasChanges(bool value)
61 {
62 if (value) {
63 auto widet = new QWidget{treeWidget()};
64
65 auto layout = new QHBoxLayout{widet};
66 layout->setContentsMargins(0, 0, 0, 0);
67 layout->setSpacing(0);
68
69 auto btnValid = new QToolButton{widet};
70 btnValid->setIcon(QIcon{":/icones/save"});
71 btnValid->setIconSize(QSize{VALIDATION_BUTTON_ICON_SIZE, VALIDATION_BUTTON_ICON_SIZE});
72 btnValid->setAutoRaise(true);
73 QObject::connect(btnValid, &QToolButton::clicked, [this]() { setHasChanges(false); });
74 layout->addWidget(btnValid);
75
76 auto btnDiscard = new QToolButton{widet};
77 btnDiscard->setIcon(QIcon{":/icones/discard"});
78 btnDiscard->setIconSize(QSize{VALIDATION_BUTTON_ICON_SIZE, VALIDATION_BUTTON_ICON_SIZE});
79 btnDiscard->setAutoRaise(true);
80 QObject::connect(btnDiscard, &QToolButton::clicked, [this]() { setHasChanges(false); });
81 layout->addWidget(btnDiscard);
82
83 treeWidget()->setItemWidget(this, 1, {widet});
84 treeWidget()->resizeColumnToContents(1);
85 }
86 else {
87 // Note: the widget is destroyed
88 treeWidget()->setItemWidget(this, 1, nullptr);
89 }
90 }
General Comments 0
You need to be logged in to leave comments. Login now