##// END OF EJS Templates
Basic interactions
trabillard -
r1103:dbebdcd0984a
parent child
Show More
@@ -1,25 +1,31
1 #ifndef SCIQLOP_CATALOGUEEVENTSWIDGET_H
1 #ifndef SCIQLOP_CATALOGUEEVENTSWIDGET_H
2 #define SCIQLOP_CATALOGUEEVENTSWIDGET_H
2 #define SCIQLOP_CATALOGUEEVENTSWIDGET_H
3
3
4 #include <Common/spimpl.h>
4 #include <Common/spimpl.h>
5 #include <QWidget>
5 #include <QWidget>
6
6
7 namespace Ui {
7 namespace Ui {
8 class CatalogueEventsWidget;
8 class CatalogueEventsWidget;
9 }
9 }
10
10
11 class CatalogueEventsWidget : public QWidget {
11 class CatalogueEventsWidget : public QWidget {
12 Q_OBJECT
12 Q_OBJECT
13
13
14 signals:
15 void eventSelected();
16
14 public:
17 public:
15 explicit CatalogueEventsWidget(QWidget *parent = 0);
18 explicit CatalogueEventsWidget(QWidget *parent = 0);
16 virtual ~CatalogueEventsWidget();
19 virtual ~CatalogueEventsWidget();
17
20
21 public slots:
22 void populateWithCatalogue(const QString &catalogue);
23
18 private:
24 private:
19 Ui::CatalogueEventsWidget *ui;
25 Ui::CatalogueEventsWidget *ui;
20
26
21 class CatalogueEventsWidgetPrivate;
27 class CatalogueEventsWidgetPrivate;
22 spimpl::unique_impl_ptr<CatalogueEventsWidgetPrivate> impl;
28 spimpl::unique_impl_ptr<CatalogueEventsWidgetPrivate> impl;
23 };
29 };
24
30
25 #endif // SCIQLOP_CATALOGUEEVENTSWIDGET_H
31 #endif // SCIQLOP_CATALOGUEEVENTSWIDGET_H
@@ -1,25 +1,31
1 #ifndef SCIQLOP_CATALOGUESIDEBARWIDGET_H
1 #ifndef SCIQLOP_CATALOGUESIDEBARWIDGET_H
2 #define SCIQLOP_CATALOGUESIDEBARWIDGET_H
2 #define SCIQLOP_CATALOGUESIDEBARWIDGET_H
3
3
4 #include <Common/spimpl.h>
4 #include <Common/spimpl.h>
5 #include <QTreeWidgetItem>
5 #include <QWidget>
6 #include <QWidget>
6
7
7 namespace Ui {
8 namespace Ui {
8 class CatalogueSideBarWidget;
9 class CatalogueSideBarWidget;
9 }
10 }
10
11
11 class CatalogueSideBarWidget : public QWidget {
12 class CatalogueSideBarWidget : public QWidget {
12 Q_OBJECT
13 Q_OBJECT
13
14
15 signals:
16 void catalogueSelected(const QString &catalogue);
17 void allEventsSelected();
18 void trashSelected();
19
14 public:
20 public:
15 explicit CatalogueSideBarWidget(QWidget *parent = 0);
21 explicit CatalogueSideBarWidget(QWidget *parent = 0);
16 virtual ~CatalogueSideBarWidget();
22 virtual ~CatalogueSideBarWidget();
17
23
18 private:
24 private:
19 Ui::CatalogueSideBarWidget *ui;
25 Ui::CatalogueSideBarWidget *ui;
20
26
21 class CatalogueSideBarWidgetPrivate;
27 class CatalogueSideBarWidgetPrivate;
22 spimpl::unique_impl_ptr<CatalogueSideBarWidgetPrivate> impl;
28 spimpl::unique_impl_ptr<CatalogueSideBarWidgetPrivate> impl;
23 };
29 };
24
30
25 #endif // SCIQLOP_CATALOGUESIDEBARWIDGET_H
31 #endif // SCIQLOP_CATALOGUESIDEBARWIDGET_H
@@ -1,66 +1,78
1 #include "Catalogue/CatalogueEventsWidget.h"
1 #include "Catalogue/CatalogueEventsWidget.h"
2 #include "ui_CatalogueEventsWidget.h"
2 #include "ui_CatalogueEventsWidget.h"
3
3
4 struct CatalogueEventsWidget::CatalogueEventsWidgetPrivate {
4 struct CatalogueEventsWidget::CatalogueEventsWidgetPrivate {
5 void addEventItem(const QStringList &data, QTableWidget *tableWidget);
5 void addEventItem(const QStringList &data, QTableWidget *tableWidget);
6
6
7 enum class Column { Event, TStart, TEnd, Tags, Product, NbColumn };
7 enum class Column { Event, TStart, TEnd, Tags, Product, NbColumn };
8 QStringList columnNames() { return QStringList{"Event", "TStart", "TEnd", "Tags", "Product"}; }
8 QStringList columnNames() { return QStringList{"Event", "TStart", "TEnd", "Tags", "Product"}; }
9 };
9 };
10
10
11
11
12 CatalogueEventsWidget::CatalogueEventsWidget(QWidget *parent)
12 CatalogueEventsWidget::CatalogueEventsWidget(QWidget *parent)
13 : QWidget(parent),
13 : QWidget(parent),
14 ui(new Ui::CatalogueEventsWidget),
14 ui(new Ui::CatalogueEventsWidget),
15 impl{spimpl::make_unique_impl<CatalogueEventsWidgetPrivate>()}
15 impl{spimpl::make_unique_impl<CatalogueEventsWidgetPrivate>()}
16 {
16 {
17 ui->setupUi(this);
17 ui->setupUi(this);
18
18
19 connect(ui->btnTime, &QToolButton::clicked, [this](auto checked) {
19 connect(ui->btnTime, &QToolButton::clicked, [this](auto checked) {
20 if (checked) {
20 if (checked) {
21 ui->btnChart->setChecked(false);
21 ui->btnChart->setChecked(false);
22 }
22 }
23 });
23 });
24
24
25 connect(ui->btnChart, &QToolButton::clicked, [this](auto checked) {
25 connect(ui->btnChart, &QToolButton::clicked, [this](auto checked) {
26 if (checked) {
26 if (checked) {
27 ui->btnTime->setChecked(false);
27 ui->btnTime->setChecked(false);
28 }
28 }
29 });
29 });
30
30
31 connect(ui->tableWidget, &QTableWidget::cellClicked,
32 [this](auto row, auto column) { emit this->eventSelected(); });
33
31 Q_ASSERT(impl->columnNames().count() == (int)CatalogueEventsWidgetPrivate::Column::NbColumn);
34 Q_ASSERT(impl->columnNames().count() == (int)CatalogueEventsWidgetPrivate::Column::NbColumn);
32 ui->tableWidget->setColumnCount((int)CatalogueEventsWidgetPrivate::Column::NbColumn);
35 ui->tableWidget->setColumnCount((int)CatalogueEventsWidgetPrivate::Column::NbColumn);
33 ui->tableWidget->setHorizontalHeaderLabels(impl->columnNames());
36 ui->tableWidget->setHorizontalHeaderLabels(impl->columnNames());
34 ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
37 ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
35 ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
38 ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
36 ui->tableWidget->horizontalHeader()->setSortIndicatorShown(true);
39 ui->tableWidget->horizontalHeader()->setSortIndicatorShown(true);
37
38
39 // test
40 impl->addEventItem({"Event 1", "12/12/2012 12:12", "12/12/2042 12:42", "cloud", "mfi/b_gse"},
41 ui->tableWidget);
42 impl->addEventItem({"Event 2", "12/12/2012 12:12", "12/12/2042 12:42", "cloud", "mfi/b_gse"},
43 ui->tableWidget);
44 impl->addEventItem({"Event 3", "12/12/2012 12:12", "12/12/2042 12:42", "cloud", "mfi/b_gse"},
45 ui->tableWidget);
46 impl->addEventItem({"Event 4", "12/12/2012 12:12", "12/12/2042 12:42", "cloud", "mfi/b_gse"},
47 ui->tableWidget);
48 }
40 }
49
41
50 CatalogueEventsWidget::~CatalogueEventsWidget()
42 CatalogueEventsWidget::~CatalogueEventsWidget()
51 {
43 {
52 delete ui;
44 delete ui;
53 }
45 }
54
46
47 void CatalogueEventsWidget::populateWithCatalogue(const QString &catalogue)
48 {
49 ui->tableWidget->clearContents();
50 ui->tableWidget->setRowCount(0);
51
52 // TODO
53 impl->addEventItem(
54 {catalogue + " - Event 1", "12/12/2012 12:12", "12/12/2042 12:42", "cloud", "mfi/b_gse"},
55 ui->tableWidget);
56 impl->addEventItem(
57 {catalogue + " - Event 2", "12/12/2012 12:12", "12/12/2042 12:42", "cloud", "mfi/b_gse"},
58 ui->tableWidget);
59 impl->addEventItem(
60 {catalogue + " - Event 3", "12/12/2012 12:12", "12/12/2042 12:42", "cloud", "mfi/b_gse"},
61 ui->tableWidget);
62 impl->addEventItem(
63 {catalogue + " - Event 4", "12/12/2012 12:12", "12/12/2042 12:42", "cloud", "mfi/b_gse"},
64 ui->tableWidget);
65 }
66
55 void CatalogueEventsWidget::CatalogueEventsWidgetPrivate::addEventItem(const QStringList &data,
67 void CatalogueEventsWidget::CatalogueEventsWidgetPrivate::addEventItem(const QStringList &data,
56 QTableWidget *tableWidget)
68 QTableWidget *tableWidget)
57 {
69 {
58 auto row = tableWidget->rowCount();
70 auto row = tableWidget->rowCount();
59 tableWidget->setRowCount(row + 1);
71 tableWidget->setRowCount(row + 1);
60
72
61 for (auto i = 0; i < (int)Column::NbColumn; ++i) {
73 for (auto i = 0; i < (int)Column::NbColumn; ++i) {
62 auto item = new QTableWidgetItem(data.value(i));
74 auto item = new QTableWidgetItem(data.value(i));
63 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
75 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
64 tableWidget->setItem(row, i, item);
76 tableWidget->setItem(row, i, item);
65 }
77 }
66 }
78 }
@@ -1,14 +1,22
1 #include "Catalogue/CatalogueExplorer.h"
1 #include "Catalogue/CatalogueExplorer.h"
2 #include "ui_CatalogueExplorer.h"
2 #include "ui_CatalogueExplorer.h"
3
3
4 CatalogueExplorer::CatalogueExplorer(QWidget *parent)
4 CatalogueExplorer::CatalogueExplorer(QWidget *parent)
5 : QDialog(parent, Qt::Dialog | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint),
5 : QDialog(parent, Qt::Dialog | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint),
6 ui(new Ui::CatalogueExplorer)
6 ui(new Ui::CatalogueExplorer)
7 {
7 {
8 ui->setupUi(this);
8 ui->setupUi(this);
9
10 connect(ui->catalogues, &CatalogueSideBarWidget::catalogueSelected, [this](auto name) {
11 ui->inspector->showPage(CatalogueInspectorWidget::Page::CatalogueProperties);
12 ui->events->populateWithCatalogue(name);
13 });
14
15 connect(ui->events, &CatalogueEventsWidget::eventSelected,
16 [this]() { ui->inspector->showPage(CatalogueInspectorWidget::Page::EventProperties); });
9 }
17 }
10
18
11 CatalogueExplorer::~CatalogueExplorer()
19 CatalogueExplorer::~CatalogueExplorer()
12 {
20 {
13 delete ui;
21 delete ui;
14 }
22 }
@@ -1,81 +1,98
1 #include "Catalogue/CatalogueSideBarWidget.h"
1 #include "Catalogue/CatalogueSideBarWidget.h"
2 #include "ui_CatalogueSideBarWidget.h"
2 #include "ui_CatalogueSideBarWidget.h"
3
3
4 auto ALL_EVENT_ITEM_TYPE = QTreeWidgetItem::UserType;
4 constexpr auto ALL_EVENT_ITEM_TYPE = QTreeWidgetItem::UserType;
5 auto TRASH_ITEM_TYPE = QTreeWidgetItem::UserType + 1;
5 constexpr auto TRASH_ITEM_TYPE = QTreeWidgetItem::UserType + 1;
6 auto CATALOGUE_ITEM_TYPE = QTreeWidgetItem::UserType + 2;
6 constexpr auto CATALOGUE_ITEM_TYPE = QTreeWidgetItem::UserType + 2;
7 auto DATABASE_ITEM_TYPE = QTreeWidgetItem::UserType + 3;
7 constexpr auto DATABASE_ITEM_TYPE = QTreeWidgetItem::UserType + 3;
8
8
9
9
10 struct CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate {
10 struct CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate {
11 void configureTreeWidget(QTreeWidget *treeWidget);
11 void configureTreeWidget(QTreeWidget *treeWidget);
12 QTreeWidgetItem *addDatabaseItem(const QString &name, QTreeWidget *treeWidget);
12 QTreeWidgetItem *addDatabaseItem(const QString &name, QTreeWidget *treeWidget);
13 void addCatalogueItem(const QString &name, QTreeWidgetItem *parentDatabaseItem);
13 void addCatalogueItem(const QString &name, QTreeWidgetItem *parentDatabaseItem);
14 };
14 };
15
15
16 CatalogueSideBarWidget::CatalogueSideBarWidget(QWidget *parent)
16 CatalogueSideBarWidget::CatalogueSideBarWidget(QWidget *parent)
17 : QWidget(parent),
17 : QWidget(parent),
18 ui(new Ui::CatalogueSideBarWidget),
18 ui(new Ui::CatalogueSideBarWidget),
19 impl{spimpl::make_unique_impl<CatalogueSideBarWidgetPrivate>()}
19 impl{spimpl::make_unique_impl<CatalogueSideBarWidgetPrivate>()}
20 {
20 {
21 ui->setupUi(this);
21 ui->setupUi(this);
22 impl->configureTreeWidget(ui->treeWidget);
22 impl->configureTreeWidget(ui->treeWidget);
23
24 connect(ui->treeWidget, &QTreeWidget::itemClicked, [this](auto item) {
25 switch (item->type()) {
26 case CATALOGUE_ITEM_TYPE:
27 emit this->catalogueSelected(item->text(0));
28 break;
29 case ALL_EVENT_ITEM_TYPE:
30 emit this->allEventsSelected();
31 break;
32 case TRASH_ITEM_TYPE:
33 emit this->trashSelected();
34 break;
35 case DATABASE_ITEM_TYPE:
36 default:
37 break;
38 }
39 });
23 }
40 }
24
41
25 CatalogueSideBarWidget::~CatalogueSideBarWidget()
42 CatalogueSideBarWidget::~CatalogueSideBarWidget()
26 {
43 {
27 delete ui;
44 delete ui;
28 }
45 }
29
46
30 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::configureTreeWidget(
47 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::configureTreeWidget(
31 QTreeWidget *treeWidget)
48 QTreeWidget *treeWidget)
32 {
49 {
33 auto allEventsItem = new QTreeWidgetItem({"All Events"}, ALL_EVENT_ITEM_TYPE);
50 auto allEventsItem = new QTreeWidgetItem({"All Events"}, ALL_EVENT_ITEM_TYPE);
34 allEventsItem->setIcon(0, QIcon(":/icones/allEvents.png"));
51 allEventsItem->setIcon(0, QIcon(":/icones/allEvents.png"));
35 treeWidget->addTopLevelItem(allEventsItem);
52 treeWidget->addTopLevelItem(allEventsItem);
36
53
37 auto trashItem = new QTreeWidgetItem({"Trash"}, TRASH_ITEM_TYPE);
54 auto trashItem = new QTreeWidgetItem({"Trash"}, TRASH_ITEM_TYPE);
38 trashItem->setIcon(0, QIcon(":/icones/trash.png"));
55 trashItem->setIcon(0, QIcon(":/icones/trash.png"));
39 treeWidget->addTopLevelItem(trashItem);
56 treeWidget->addTopLevelItem(trashItem);
40
57
41 auto separator = new QFrame(treeWidget);
58 auto separator = new QFrame(treeWidget);
42 separator->setFrameShape(QFrame::HLine);
59 separator->setFrameShape(QFrame::HLine);
43
60
44 auto separatorItem = new QTreeWidgetItem();
61 auto separatorItem = new QTreeWidgetItem();
45 separatorItem->setFlags(Qt::NoItemFlags);
62 separatorItem->setFlags(Qt::NoItemFlags);
46 treeWidget->addTopLevelItem(separatorItem);
63 treeWidget->addTopLevelItem(separatorItem);
47 treeWidget->setItemWidget(separatorItem, 0, separator);
64 treeWidget->setItemWidget(separatorItem, 0, separator);
48
65
49 // Test
66 // Test
50 auto db = addDatabaseItem("Database 1", treeWidget);
67 auto db = addDatabaseItem("Database 1", treeWidget);
51 addCatalogueItem("Catalogue 1", db);
68 addCatalogueItem("Catalogue 1", db);
52 addCatalogueItem("Catalogue 2", db);
69 addCatalogueItem("Catalogue 2", db);
53 addCatalogueItem("Catalogue 3", db);
70 addCatalogueItem("Catalogue 3", db);
54 addCatalogueItem("Catalogue 4", db);
71 addCatalogueItem("Catalogue 4", db);
55
72
56 auto db2 = addDatabaseItem("Database 2", treeWidget);
73 auto db2 = addDatabaseItem("Database 2", treeWidget);
57 addCatalogueItem("Catalogue A", db2);
74 addCatalogueItem("Catalogue A", db2);
58 addCatalogueItem("Catalogue B", db2);
75 addCatalogueItem("Catalogue B", db2);
59 addCatalogueItem("Catalogue C", db2);
76 addCatalogueItem("Catalogue C", db2);
60
77
61 treeWidget->expandAll();
78 treeWidget->expandAll();
62 }
79 }
63
80
64 QTreeWidgetItem *
81 QTreeWidgetItem *
65 CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addDatabaseItem(const QString &name,
82 CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addDatabaseItem(const QString &name,
66 QTreeWidget *treeWidget)
83 QTreeWidget *treeWidget)
67 {
84 {
68 auto databaseItem = new QTreeWidgetItem({name}, DATABASE_ITEM_TYPE);
85 auto databaseItem = new QTreeWidgetItem({name}, DATABASE_ITEM_TYPE);
69 databaseItem->setIcon(0, QIcon(":/icones/database.png"));
86 databaseItem->setIcon(0, QIcon(":/icones/database.png"));
70 treeWidget->addTopLevelItem(databaseItem);
87 treeWidget->addTopLevelItem(databaseItem);
71
88
72 return databaseItem;
89 return databaseItem;
73 }
90 }
74
91
75 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addCatalogueItem(
92 void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addCatalogueItem(
76 const QString &name, QTreeWidgetItem *parentDatabaseItem)
93 const QString &name, QTreeWidgetItem *parentDatabaseItem)
77 {
94 {
78 auto catalogueItem = new QTreeWidgetItem({name}, CATALOGUE_ITEM_TYPE);
95 auto catalogueItem = new QTreeWidgetItem({name}, CATALOGUE_ITEM_TYPE);
79 catalogueItem->setIcon(0, QIcon(":/icones/catalogue.png"));
96 catalogueItem->setIcon(0, QIcon(":/icones/catalogue.png"));
80 parentDatabaseItem->addChild(catalogueItem);
97 parentDatabaseItem->addChild(catalogueItem);
81 }
98 }
General Comments 0
You need to be logged in to leave comments. Login now