##// END OF EJS Templates
Skeleton to fill the inspector with the selection
trabillard -
r1140:342312d662e7
parent child
Show More
@@ -1,31 +1,31
1 1 #ifndef SCIQLOP_CATALOGUEEVENTSWIDGET_H
2 2 #define SCIQLOP_CATALOGUEEVENTSWIDGET_H
3 3
4 4 #include <Common/spimpl.h>
5 5 #include <QWidget>
6 6
7 7 namespace Ui {
8 8 class CatalogueEventsWidget;
9 9 }
10 10
11 11 class CatalogueEventsWidget : public QWidget {
12 12 Q_OBJECT
13 13
14 14 signals:
15 void eventSelected();
15 void eventSelected(const QString &event);
16 16
17 17 public:
18 18 explicit CatalogueEventsWidget(QWidget *parent = 0);
19 19 virtual ~CatalogueEventsWidget();
20 20
21 21 public slots:
22 22 void populateWithCatalogue(const QString &catalogue);
23 23
24 24 private:
25 25 Ui::CatalogueEventsWidget *ui;
26 26
27 27 class CatalogueEventsWidgetPrivate;
28 28 spimpl::unique_impl_ptr<CatalogueEventsWidgetPrivate> impl;
29 29 };
30 30
31 31 #endif // SCIQLOP_CATALOGUEEVENTSWIDGET_H
@@ -1,29 +1,32
1 1 #ifndef SCIQLOP_CATALOGUEINSPECTORWIDGET_H
2 2 #define SCIQLOP_CATALOGUEINSPECTORWIDGET_H
3 3
4 4 #include <QWidget>
5 5
6 6 namespace Ui {
7 7 class CatalogueInspectorWidget;
8 8 }
9 9
10 10 class CatalogueInspectorWidget : public QWidget {
11 11 Q_OBJECT
12 12
13 13 public:
14 14 explicit CatalogueInspectorWidget(QWidget *parent = 0);
15 15 virtual ~CatalogueInspectorWidget();
16 16
17 17 /// Enum matching the pages inside the stacked widget
18 18 enum class Page { Empty, CatalogueProperties, EventProperties };
19 19
20 20 Page currentPage() const;
21 21
22 void setEvent(const QString &event);
23 void setCatalogue(const QString &catalogue);
24
22 25 public slots:
23 26 void showPage(Page page);
24 27
25 28 private:
26 29 Ui::CatalogueInspectorWidget *ui;
27 30 };
28 31
29 32 #endif // SCIQLOP_CATALOGUEINSPECTORWIDGET_H
@@ -1,80 +1,99
1 1 #include "Catalogue/CatalogueEventsWidget.h"
2 2 #include "ui_CatalogueEventsWidget.h"
3 3
4 #include <QtDebug>
5
4 6 struct CatalogueEventsWidget::CatalogueEventsWidgetPrivate {
5 7 void addEventItem(const QStringList &data, QTableWidget *tableWidget);
6 8
7 9 enum class Column { Event, TStart, TEnd, Tags, Product, NbColumn };
8 10 QStringList columnNames() { return QStringList{"Event", "TStart", "TEnd", "Tags", "Product"}; }
9 11 };
10 12
11 13
12 14 CatalogueEventsWidget::CatalogueEventsWidget(QWidget *parent)
13 15 : QWidget(parent),
14 16 ui(new Ui::CatalogueEventsWidget),
15 17 impl{spimpl::make_unique_impl<CatalogueEventsWidgetPrivate>()}
16 18 {
17 19 ui->setupUi(this);
18 20
19 21 connect(ui->btnTime, &QToolButton::clicked, [this](auto checked) {
20 22 if (checked) {
21 23 ui->btnChart->setChecked(false);
22 24 }
23 25 });
24 26
25 27 connect(ui->btnChart, &QToolButton::clicked, [this](auto checked) {
26 28 if (checked) {
27 29 ui->btnTime->setChecked(false);
28 30 }
29 31 });
30 32
31 connect(ui->tableWidget, &QTableWidget::cellClicked,
32 [this](auto row, auto column) { emit this->eventSelected(); });
33 connect(ui->tableWidget, &QTableWidget::cellClicked, [this](auto row, auto column) {
34 auto event = ui->tableWidget->item(row, 0)->text();
35 emit this->eventSelected(event);
36 });
37
38 connect(ui->tableWidget, &QTableWidget::currentItemChanged,
39 [this](auto current, auto previous) {
40 if (current && current->row() >= 0) {
41 auto event = ui->tableWidget->item(current->row(), 0)->text();
42 emit this->eventSelected(event);
43 }
44 });
45
46 connect(ui->tableWidget, &QTableWidget::itemSelectionChanged, [this]() {
47 auto selection = ui->tableWidget->selectedRanges();
48 auto isSingleSelection = selection.count() == 1 && selection.first().rowCount() == 1;
49 ui->btnChart->setEnabled(isSingleSelection);
50 ui->btnTime->setEnabled(isSingleSelection);
51 });
33 52
34 53 Q_ASSERT(impl->columnNames().count() == (int)CatalogueEventsWidgetPrivate::Column::NbColumn);
35 54 ui->tableWidget->setColumnCount((int)CatalogueEventsWidgetPrivate::Column::NbColumn);
36 55 ui->tableWidget->setHorizontalHeaderLabels(impl->columnNames());
37 56 ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
38 57 ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
39 58 ui->tableWidget->horizontalHeader()->setSortIndicatorShown(true);
40 59 }
41 60
42 61 CatalogueEventsWidget::~CatalogueEventsWidget()
43 62 {
44 63 delete ui;
45 64 }
46 65
47 66 void CatalogueEventsWidget::populateWithCatalogue(const QString &catalogue)
48 67 {
49 68 ui->tableWidget->clearContents();
50 69 ui->tableWidget->setRowCount(0);
51 70
52 71 // TODO
53 72 impl->addEventItem(
54 73 {catalogue + " - Event 1", "12/12/2012 12:12", "12/12/2042 12:52", "cloud", "mfi/b_gse42"},
55 74 ui->tableWidget);
56 75 impl->addEventItem(
57 76 {catalogue + " - Event 2", "12/12/2012 12:10", "12/12/2042 12:42", "Acloud", "mfi/b_gse1"},
58 77 ui->tableWidget);
59 78 impl->addEventItem(
60 79 {catalogue + " - Event 3", "12/12/2012 12:22", "12/12/2042 12:12", "Gcloud", "mfi/b_gse2"},
61 80 ui->tableWidget);
62 81 impl->addEventItem(
63 82 {catalogue + " - Event 4", "12/12/2012 12:00", "12/12/2042 12:62", "Bcloud", "mfi/b_gse3"},
64 83 ui->tableWidget);
65 84 }
66 85
67 86 void CatalogueEventsWidget::CatalogueEventsWidgetPrivate::addEventItem(const QStringList &data,
68 87 QTableWidget *tableWidget)
69 88 {
70 89 tableWidget->setSortingEnabled(false);
71 90 auto row = tableWidget->rowCount();
72 91 tableWidget->setRowCount(row + 1);
73 92
74 93 for (auto i = 0; i < (int)Column::NbColumn; ++i) {
75 94 auto item = new QTableWidgetItem(data.value(i));
76 95 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
77 96 tableWidget->setItem(row, i, item);
78 97 }
79 98 tableWidget->setSortingEnabled(true);
80 99 }
@@ -1,22 +1,22
1 1 #include "Catalogue/CatalogueExplorer.h"
2 2 #include "ui_CatalogueExplorer.h"
3 3
4 4 CatalogueExplorer::CatalogueExplorer(QWidget *parent)
5 5 : QDialog(parent, Qt::Dialog | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint),
6 6 ui(new Ui::CatalogueExplorer)
7 7 {
8 8 ui->setupUi(this);
9 9
10 10 connect(ui->catalogues, &CatalogueSideBarWidget::catalogueSelected, [this](auto name) {
11 ui->inspector->showPage(CatalogueInspectorWidget::Page::CatalogueProperties);
11 ui->inspector->setEvent(name);
12 12 ui->events->populateWithCatalogue(name);
13 13 });
14 14
15 15 connect(ui->events, &CatalogueEventsWidget::eventSelected,
16 [this]() { ui->inspector->showPage(CatalogueInspectorWidget::Page::EventProperties); });
16 [this](auto name) { ui->inspector->setCatalogue(name); });
17 17 }
18 18
19 19 CatalogueExplorer::~CatalogueExplorer()
20 20 {
21 21 delete ui;
22 22 }
@@ -1,24 +1,36
1 1 #include "Catalogue/CatalogueInspectorWidget.h"
2 2 #include "ui_CatalogueInspectorWidget.h"
3 3
4 4 CatalogueInspectorWidget::CatalogueInspectorWidget(QWidget *parent)
5 5 : QWidget(parent), ui(new Ui::CatalogueInspectorWidget)
6 6 {
7 7 ui->setupUi(this);
8 8 showPage(Page::Empty);
9 9 }
10 10
11 11 CatalogueInspectorWidget::~CatalogueInspectorWidget()
12 12 {
13 13 delete ui;
14 14 }
15 15
16 16 void CatalogueInspectorWidget::showPage(CatalogueInspectorWidget::Page page)
17 17 {
18 18 ui->stackedWidget->setCurrentIndex(static_cast<int>(page));
19 19 }
20 20
21 21 CatalogueInspectorWidget::Page CatalogueInspectorWidget::currentPage() const
22 22 {
23 23 return static_cast<Page>(ui->stackedWidget->currentIndex());
24 24 }
25
26 void CatalogueInspectorWidget::setEvent(const QString &event)
27 {
28 showPage(Page::EventProperties);
29 ui->leEventName->setText(event);
30 }
31
32 void CatalogueInspectorWidget::setCatalogue(const QString &catalogue)
33 {
34 showPage(Page::CatalogueProperties);
35 ui->leCatalogueName->setText(catalogue);
36 }
@@ -1,98 +1,101
1 1 #include "Catalogue/CatalogueSideBarWidget.h"
2 2 #include "ui_CatalogueSideBarWidget.h"
3 3
4 4 constexpr auto ALL_EVENT_ITEM_TYPE = QTreeWidgetItem::UserType;
5 5 constexpr auto TRASH_ITEM_TYPE = QTreeWidgetItem::UserType + 1;
6 6 constexpr auto CATALOGUE_ITEM_TYPE = QTreeWidgetItem::UserType + 2;
7 7 constexpr auto DATABASE_ITEM_TYPE = QTreeWidgetItem::UserType + 3;
8 8
9 9
10 10 struct CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate {
11 11 void configureTreeWidget(QTreeWidget *treeWidget);
12 12 QTreeWidgetItem *addDatabaseItem(const QString &name, QTreeWidget *treeWidget);
13 13 void addCatalogueItem(const QString &name, QTreeWidgetItem *parentDatabaseItem);
14 14 };
15 15
16 16 CatalogueSideBarWidget::CatalogueSideBarWidget(QWidget *parent)
17 17 : QWidget(parent),
18 18 ui(new Ui::CatalogueSideBarWidget),
19 19 impl{spimpl::make_unique_impl<CatalogueSideBarWidgetPrivate>()}
20 20 {
21 21 ui->setupUi(this);
22 22 impl->configureTreeWidget(ui->treeWidget);
23 23
24 connect(ui->treeWidget, &QTreeWidget::itemClicked, [this](auto item) {
24 auto emitSelection = [this](auto item) {
25 25 switch (item->type()) {
26 26 case CATALOGUE_ITEM_TYPE:
27 27 emit this->catalogueSelected(item->text(0));
28 28 break;
29 29 case ALL_EVENT_ITEM_TYPE:
30 30 emit this->allEventsSelected();
31 31 break;
32 32 case TRASH_ITEM_TYPE:
33 33 emit this->trashSelected();
34 34 break;
35 35 case DATABASE_ITEM_TYPE:
36 36 default:
37 37 break;
38 38 }
39 });
39 };
40
41 connect(ui->treeWidget, &QTreeWidget::itemClicked, emitSelection);
42 connect(ui->treeWidget, &QTreeWidget::currentItemChanged, emitSelection);
40 43 }
41 44
42 45 CatalogueSideBarWidget::~CatalogueSideBarWidget()
43 46 {
44 47 delete ui;
45 48 }
46 49
47 50 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::configureTreeWidget(
48 51 QTreeWidget *treeWidget)
49 52 {
50 53 auto allEventsItem = new QTreeWidgetItem({"All Events"}, ALL_EVENT_ITEM_TYPE);
51 54 allEventsItem->setIcon(0, QIcon(":/icones/allEvents.png"));
52 55 treeWidget->addTopLevelItem(allEventsItem);
53 56
54 57 auto trashItem = new QTreeWidgetItem({"Trash"}, TRASH_ITEM_TYPE);
55 58 trashItem->setIcon(0, QIcon(":/icones/trash.png"));
56 59 treeWidget->addTopLevelItem(trashItem);
57 60
58 61 auto separator = new QFrame(treeWidget);
59 62 separator->setFrameShape(QFrame::HLine);
60 63
61 64 auto separatorItem = new QTreeWidgetItem();
62 65 separatorItem->setFlags(Qt::NoItemFlags);
63 66 treeWidget->addTopLevelItem(separatorItem);
64 67 treeWidget->setItemWidget(separatorItem, 0, separator);
65 68
66 69 // Test
67 70 auto db = addDatabaseItem("Database 1", treeWidget);
68 71 addCatalogueItem("Catalogue 1", db);
69 72 addCatalogueItem("Catalogue 2", db);
70 73 addCatalogueItem("Catalogue 3", db);
71 74 addCatalogueItem("Catalogue 4", db);
72 75
73 76 auto db2 = addDatabaseItem("Database 2", treeWidget);
74 77 addCatalogueItem("Catalogue A", db2);
75 78 addCatalogueItem("Catalogue B", db2);
76 79 addCatalogueItem("Catalogue C", db2);
77 80
78 81 treeWidget->expandAll();
79 82 }
80 83
81 84 QTreeWidgetItem *
82 85 CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addDatabaseItem(const QString &name,
83 86 QTreeWidget *treeWidget)
84 87 {
85 88 auto databaseItem = new QTreeWidgetItem({name}, DATABASE_ITEM_TYPE);
86 89 databaseItem->setIcon(0, QIcon(":/icones/database.png"));
87 90 treeWidget->addTopLevelItem(databaseItem);
88 91
89 92 return databaseItem;
90 93 }
91 94
92 95 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addCatalogueItem(
93 96 const QString &name, QTreeWidgetItem *parentDatabaseItem)
94 97 {
95 98 auto catalogueItem = new QTreeWidgetItem({name}, CATALOGUE_ITEM_TYPE);
96 99 catalogueItem->setIcon(0, QIcon(":/icones/catalogue.png"));
97 100 parentDatabaseItem->addChild(catalogueItem);
98 101 }
@@ -1,214 +1,214
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <ui version="4.0">
3 3 <class>CatalogueInspectorWidget</class>
4 4 <widget class="QWidget" name="CatalogueInspectorWidget">
5 5 <property name="geometry">
6 6 <rect>
7 7 <x>0</x>
8 8 <y>0</y>
9 9 <width>400</width>
10 10 <height>300</height>
11 11 </rect>
12 12 </property>
13 13 <property name="windowTitle">
14 14 <string>Form</string>
15 15 </property>
16 16 <layout class="QVBoxLayout" name="verticalLayout_2">
17 17 <property name="leftMargin">
18 18 <number>0</number>
19 19 </property>
20 20 <property name="topMargin">
21 21 <number>0</number>
22 22 </property>
23 23 <property name="rightMargin">
24 24 <number>0</number>
25 25 </property>
26 26 <property name="bottomMargin">
27 27 <number>0</number>
28 28 </property>
29 29 <item>
30 30 <widget class="QFrame" name="frame">
31 31 <property name="frameShape">
32 32 <enum>QFrame::Box</enum>
33 33 </property>
34 34 <property name="frameShadow">
35 35 <enum>QFrame::Sunken</enum>
36 36 </property>
37 37 <property name="lineWidth">
38 38 <number>1</number>
39 39 </property>
40 40 <layout class="QVBoxLayout" name="verticalLayout">
41 41 <property name="leftMargin">
42 42 <number>0</number>
43 43 </property>
44 44 <property name="topMargin">
45 45 <number>0</number>
46 46 </property>
47 47 <property name="rightMargin">
48 48 <number>0</number>
49 49 </property>
50 50 <property name="bottomMargin">
51 51 <number>0</number>
52 52 </property>
53 53 <item>
54 54 <widget class="QStackedWidget" name="stackedWidget">
55 55 <property name="currentIndex">
56 <number>2</number>
56 <number>1</number>
57 57 </property>
58 58 <widget class="QWidget" name="emptyPage"/>
59 59 <widget class="QWidget" name="catalogueInspectorPage">
60 60 <layout class="QGridLayout" name="gridLayout_2">
61 61 <item row="1" column="0">
62 62 <widget class="QLabel" name="label_7">
63 63 <property name="text">
64 64 <string>Name</string>
65 65 </property>
66 66 </widget>
67 67 </item>
68 68 <item row="1" column="1">
69 <widget class="QLineEdit" name="lineEdit_5"/>
69 <widget class="QLineEdit" name="leCatalogueName"/>
70 70 </item>
71 71 <item row="2" column="0">
72 72 <widget class="QLabel" name="label_8">
73 73 <property name="text">
74 74 <string>Author</string>
75 75 </property>
76 76 </widget>
77 77 </item>
78 78 <item row="2" column="1">
79 <widget class="QLineEdit" name="lineEdit_6">
79 <widget class="QLineEdit" name="leCatalogueAuthor">
80 80 <property name="text">
81 81 <string/>
82 82 </property>
83 83 </widget>
84 84 </item>
85 85 <item row="3" column="1">
86 86 <spacer name="verticalSpacer_2">
87 87 <property name="orientation">
88 88 <enum>Qt::Vertical</enum>
89 89 </property>
90 90 <property name="sizeHint" stdset="0">
91 91 <size>
92 92 <width>20</width>
93 93 <height>40</height>
94 94 </size>
95 95 </property>
96 96 </spacer>
97 97 </item>
98 98 <item row="0" column="0" colspan="2">
99 99 <widget class="QLabel" name="label_9">
100 100 <property name="font">
101 101 <font>
102 102 <pointsize>10</pointsize>
103 103 <weight>75</weight>
104 104 <bold>true</bold>
105 105 </font>
106 106 </property>
107 107 <property name="text">
108 108 <string>Catalogue Properties</string>
109 109 </property>
110 110 </widget>
111 111 </item>
112 112 </layout>
113 113 </widget>
114 114 <widget class="QWidget" name="eventInspectorPage">
115 115 <layout class="QGridLayout" name="gridLayout">
116 116 <item row="5" column="1">
117 <widget class="QDateTimeEdit" name="dateTimeEdit_2"/>
117 <widget class="QDateTimeEdit" name="dateTimeEventTEnd"/>
118 118 </item>
119 119 <item row="4" column="0">
120 120 <widget class="QLabel" name="label_4">
121 121 <property name="text">
122 122 <string>TStart</string>
123 123 </property>
124 124 </widget>
125 125 </item>
126 126 <item row="6" column="0">
127 127 <widget class="QLabel" name="label_6">
128 128 <property name="text">
129 129 <string>Tags</string>
130 130 </property>
131 131 </widget>
132 132 </item>
133 133 <item row="3" column="0">
134 134 <widget class="QLabel" name="label_3">
135 135 <property name="text">
136 136 <string>Product</string>
137 137 </property>
138 138 </widget>
139 139 </item>
140 140 <item row="3" column="1">
141 <widget class="QLineEdit" name="lineEdit_3"/>
141 <widget class="QLineEdit" name="leEventProduct"/>
142 142 </item>
143 143 <item row="5" column="0">
144 144 <widget class="QLabel" name="label_5">
145 145 <property name="text">
146 146 <string>Tend</string>
147 147 </property>
148 148 </widget>
149 149 </item>
150 150 <item row="4" column="1">
151 <widget class="QDateTimeEdit" name="dateTimeEdit"/>
151 <widget class="QDateTimeEdit" name="dateTimeEventTStart"/>
152 152 </item>
153 153 <item row="2" column="0">
154 154 <widget class="QLabel" name="label_2">
155 155 <property name="text">
156 156 <string>Mission</string>
157 157 </property>
158 158 </widget>
159 159 </item>
160 160 <item row="1" column="1">
161 <widget class="QLineEdit" name="lineEdit"/>
161 <widget class="QLineEdit" name="leEventName"/>
162 162 </item>
163 163 <item row="1" column="0">
164 164 <widget class="QLabel" name="label">
165 165 <property name="text">
166 166 <string>Name</string>
167 167 </property>
168 168 </widget>
169 169 </item>
170 170 <item row="2" column="1">
171 <widget class="QLineEdit" name="lineEdit_2"/>
171 <widget class="QLineEdit" name="leEventMission"/>
172 172 </item>
173 173 <item row="6" column="1">
174 <widget class="QLineEdit" name="lineEdit_4"/>
174 <widget class="QLineEdit" name="leEventTags"/>
175 175 </item>
176 176 <item row="7" column="1">
177 177 <spacer name="verticalSpacer">
178 178 <property name="orientation">
179 179 <enum>Qt::Vertical</enum>
180 180 </property>
181 181 <property name="sizeHint" stdset="0">
182 182 <size>
183 183 <width>20</width>
184 184 <height>40</height>
185 185 </size>
186 186 </property>
187 187 </spacer>
188 188 </item>
189 189 <item row="0" column="0" colspan="2">
190 190 <widget class="QLabel" name="label_10">
191 191 <property name="font">
192 192 <font>
193 193 <pointsize>10</pointsize>
194 194 <weight>75</weight>
195 195 <bold>true</bold>
196 196 </font>
197 197 </property>
198 198 <property name="text">
199 199 <string>Event Properties</string>
200 200 </property>
201 201 </widget>
202 202 </item>
203 203 </layout>
204 204 </widget>
205 205 </widget>
206 206 </item>
207 207 </layout>
208 208 </widget>
209 209 </item>
210 210 </layout>
211 211 </widget>
212 212 <resources/>
213 213 <connections/>
214 214 </ui>
General Comments 3
Under Review
author

Auto status change to "Under Review"

Approved

Status change > Approved

You need to be logged in to leave comments. Login now