##// END OF EJS Templates
Rebase fix CatalogueCatalogue
Rebase fix CatalogueCatalogue

File last commit:

r1267:fba51a5eef20
r1269:66e1a8e9fbb1
Show More
CatalogueInspectorWidget.cpp
211 lines | 7.8 KiB | text/x-c | CppLexer
/ gui / src / Catalogue / CatalogueInspectorWidget.cpp
Sub widget classes
r1095 #include "Catalogue/CatalogueInspectorWidget.h"
#include "ui_CatalogueInspectorWidget.h"
Display catalogues and events with CatalogueAPI
r1129 #include <Common/DateUtils.h>
#include <DBCatalogue.h>
#include <DBEvent.h>
Edition of event products via the inspector
r1150 #include <DBEventProduct.h>
Display catalogues and events with CatalogueAPI
r1129 #include <DBTag.h>
Edition of catalogues from the inspector
r1147 struct CatalogueInspectorWidget::CatalogueInspectorWidgetPrivate {
std::shared_ptr<DBCatalogue> m_DisplayedCatalogue = nullptr;
std::shared_ptr<DBEvent> m_DisplayedEvent = nullptr;
Edition of event products via the inspector
r1150 std::shared_ptr<DBEventProduct> m_DisplayedEventProduct = nullptr;
Edition of events from the inspector
r1148
void connectCatalogueUpdateSignals(CatalogueInspectorWidget *inspector,
Ui::CatalogueInspectorWidget *ui);
void connectEventUpdateSignals(CatalogueInspectorWidget *inspector,
Ui::CatalogueInspectorWidget *ui);
Edition of catalogues from the inspector
r1147 };
Sub widget classes
r1095 CatalogueInspectorWidget::CatalogueInspectorWidget(QWidget *parent)
Edition of catalogues from the inspector
r1147 : QWidget(parent),
ui(new Ui::CatalogueInspectorWidget),
impl{spimpl::make_unique_impl<CatalogueInspectorWidgetPrivate>()}
Sub widget classes
r1095 {
ui->setupUi(this);
Inspector
r1099 showPage(Page::Empty);
Edition of catalogues from the inspector
r1147
Edition of events from the inspector
r1148 impl->connectCatalogueUpdateSignals(this, ui);
impl->connectEventUpdateSignals(this, ui);
}
CatalogueInspectorWidget::~CatalogueInspectorWidget()
{
delete ui;
}
void CatalogueInspectorWidget::CatalogueInspectorWidgetPrivate::connectCatalogueUpdateSignals(
CatalogueInspectorWidget *inspector, Ui::CatalogueInspectorWidget *ui)
{
connect(ui->leCatalogueName, &QLineEdit::editingFinished, [ui, inspector, this]() {
if (ui->leCatalogueName->text() != m_DisplayedCatalogue->getName()) {
m_DisplayedCatalogue->setName(ui->leCatalogueName->text());
emit inspector->catalogueUpdated(m_DisplayedCatalogue);
Edition of catalogues from the inspector
r1147 }
});
Edition of events from the inspector
r1148 connect(ui->leCatalogueAuthor, &QLineEdit::editingFinished, [ui, inspector, this]() {
if (ui->leCatalogueAuthor->text() != m_DisplayedCatalogue->getAuthor()) {
m_DisplayedCatalogue->setAuthor(ui->leCatalogueAuthor->text());
emit inspector->catalogueUpdated(m_DisplayedCatalogue);
Edition of catalogues from the inspector
r1147 }
});
Sub widget classes
r1095 }
Edition of events from the inspector
r1148 void CatalogueInspectorWidget::CatalogueInspectorWidgetPrivate::connectEventUpdateSignals(
CatalogueInspectorWidget *inspector, Ui::CatalogueInspectorWidget *ui)
Sub widget classes
r1095 {
Edition of events from the inspector
r1148 connect(ui->leEventName, &QLineEdit::editingFinished, [ui, inspector, this]() {
if (ui->leEventName->text() != m_DisplayedEvent->getName()) {
m_DisplayedEvent->setName(ui->leEventName->text());
emit inspector->eventUpdated(m_DisplayedEvent);
}
});
Edition of tags
r1153 connect(ui->leEventTags, &QLineEdit::editingFinished, [ui, inspector, this]() {
Discard an added event remove it now.
r1267 auto tags = ui->leEventTags->text().split(QRegExp("\\s+"), QString::SkipEmptyParts);
Edition of tags
r1153 std::list<QString> tagNames;
for (auto tag : tags) {
tagNames.push_back(tag);
}
if (m_DisplayedEvent->getTagsNames() != tagNames) {
m_DisplayedEvent->setTagsNames(tagNames);
emit inspector->eventUpdated(m_DisplayedEvent);
}
});
Edition of events from the inspector
r1148 connect(ui->leEventProduct, &QLineEdit::editingFinished, [ui, inspector, this]() {
Edition of event products via the inspector
r1150 if (ui->leEventProduct->text() != m_DisplayedEventProduct->getProductId()) {
Add init of DisplayedEvent. Add save on EventProduct modif
r1226 auto oldProductId = m_DisplayedEventProduct->getProductId();
Edition of event products via the inspector
r1150 m_DisplayedEventProduct->setProductId(ui->leEventProduct->text());
Add init of DisplayedEvent. Add save on EventProduct modif
r1226
auto eventProducts = m_DisplayedEvent->getEventProducts();
for (auto &eventProduct : eventProducts) {
if (eventProduct.getProductId() == oldProductId) {
eventProduct.setProductId(m_DisplayedEventProduct->getProductId());
}
}
m_DisplayedEvent->setEventProducts(eventProducts);
emit inspector->eventUpdated(m_DisplayedEvent);
Edition of event products via the inspector
r1150 }
Edition of events from the inspector
r1148 });
connect(ui->dateTimeEventTStart, &QDateTimeEdit::editingFinished, [ui, inspector, this]() {
Edition of event products via the inspector
r1150 auto time = DateUtils::secondsSinceEpoch(ui->dateTimeEventTStart->dateTime());
if (time != m_DisplayedEventProduct->getTStart()) {
m_DisplayedEventProduct->setTStart(time);
Add init of DisplayedEvent. Add save on EventProduct modif
r1226
auto eventProducts = m_DisplayedEvent->getEventProducts();
for (auto &eventProduct : eventProducts) {
if (eventProduct.getProductId() == m_DisplayedEventProduct->getProductId()) {
eventProduct.setTStart(m_DisplayedEventProduct->getTStart());
}
}
m_DisplayedEvent->setEventProducts(eventProducts);
emit inspector->eventUpdated(m_DisplayedEvent);
Edition of event products via the inspector
r1150 }
Edition of events from the inspector
r1148 });
connect(ui->dateTimeEventTEnd, &QDateTimeEdit::editingFinished, [ui, inspector, this]() {
Edition of event products via the inspector
r1150 auto time = DateUtils::secondsSinceEpoch(ui->dateTimeEventTEnd->dateTime());
if (time != m_DisplayedEventProduct->getTEnd()) {
m_DisplayedEventProduct->setTEnd(time);
Add init of DisplayedEvent. Add save on EventProduct modif
r1226
auto eventProducts = m_DisplayedEvent->getEventProducts();
for (auto &eventProduct : eventProducts) {
if (eventProduct.getProductId() == m_DisplayedEventProduct->getProductId()) {
eventProduct.setTEnd(m_DisplayedEventProduct->getTEnd());
}
}
m_DisplayedEvent->setEventProducts(eventProducts);
emit inspector->eventUpdated(m_DisplayedEvent);
Edition of event products via the inspector
r1150 }
Edition of events from the inspector
r1148 });
Sub widget classes
r1095 }
Inspector
r1099
void CatalogueInspectorWidget::showPage(CatalogueInspectorWidget::Page page)
{
ui->stackedWidget->setCurrentIndex(static_cast<int>(page));
}
CatalogueInspectorWidget::Page CatalogueInspectorWidget::currentPage() const
{
return static_cast<Page>(ui->stackedWidget->currentIndex());
}
Skeleton to fill the inspector with the selection
r1105
Adaptation to the shared pointers of catalogue controller
r1143 void CatalogueInspectorWidget::setEvent(const std::shared_ptr<DBEvent> &event)
Skeleton to fill the inspector with the selection
r1105 {
Edition of catalogues from the inspector
r1147 impl->m_DisplayedEvent = event;
blockSignals(true);
Skeleton to fill the inspector with the selection
r1105 showPage(Page::EventProperties);
Edition of event products via the inspector
r1150 ui->leEventName->setEnabled(true);
Adaptation to the shared pointers of catalogue controller
r1143 ui->leEventName->setText(event->getName());
Edition of event products via the inspector
r1150 ui->leEventProduct->setEnabled(false);
ui->leEventProduct->setText(
QString::number(event->getEventProducts().size()).append(" product(s)"));
Display catalogues and events with CatalogueAPI
r1129
QString tagList;
Edition of tags
r1153 auto tags = event->getTagsNames();
Display catalogues and events with CatalogueAPI
r1129 for (auto tag : tags) {
Edition of tags
r1153 tagList += tag;
Display catalogues and events with CatalogueAPI
r1129 tagList += ' ';
}
Edition of event products via the inspector
r1150 ui->leEventTags->setEnabled(true);
Display catalogues and events with CatalogueAPI
r1129 ui->leEventTags->setText(tagList);
Edition of event products via the inspector
r1150 ui->dateTimeEventTStart->setEnabled(false);
ui->dateTimeEventTEnd->setEnabled(false);
Displays TStart & TEnd for events
r1152 ui->dateTimeEventTStart->setDateTime(DateUtils::dateTime(event->getTStart()));
ui->dateTimeEventTEnd->setDateTime(DateUtils::dateTime(event->getTEnd()));
Edition of catalogues from the inspector
r1147
blockSignals(false);
Skeleton to fill the inspector with the selection
r1105 }
Edition of event products via the inspector
r1150 void CatalogueInspectorWidget::setEventProduct(const std::shared_ptr<DBEvent> &event,
const std::shared_ptr<DBEventProduct> &eventProduct)
{
Add init of DisplayedEvent. Add save on EventProduct modif
r1226
impl->m_DisplayedEvent = event;
Edition of event products via the inspector
r1150 impl->m_DisplayedEventProduct = eventProduct;
blockSignals(true);
showPage(Page::EventProperties);
ui->leEventName->setEnabled(false);
ui->leEventName->setText(event->getName());
small gui improvements
r1238 ui->leEventProduct->setEnabled(false);
Edition of event products via the inspector
r1150 ui->leEventProduct->setText(eventProduct->getProductId());
ui->leEventTags->setEnabled(false);
ui->leEventTags->clear();
ui->dateTimeEventTStart->setEnabled(true);
ui->dateTimeEventTEnd->setEnabled(true);
ui->dateTimeEventTStart->setDateTime(DateUtils::dateTime(eventProduct->getTStart()));
ui->dateTimeEventTEnd->setDateTime(DateUtils::dateTime(eventProduct->getTEnd()));
blockSignals(false);
}
Adaptation to the shared pointers of catalogue controller
r1143 void CatalogueInspectorWidget::setCatalogue(const std::shared_ptr<DBCatalogue> &catalogue)
Skeleton to fill the inspector with the selection
r1105 {
Edition of catalogues from the inspector
r1147 impl->m_DisplayedCatalogue = catalogue;
blockSignals(true);
Skeleton to fill the inspector with the selection
r1105 showPage(Page::CatalogueProperties);
Adaptation to the shared pointers of catalogue controller
r1143 ui->leCatalogueName->setText(catalogue->getName());
ui->leCatalogueAuthor->setText(catalogue->getAuthor());
Edition of catalogues from the inspector
r1147
blockSignals(false);
Skeleton to fill the inspector with the selection
r1105 }