#ifndef SCIQLOP_CATALOGUEEVENTSWIDGET_H #define SCIQLOP_CATALOGUEEVENTSWIDGET_H #include #include #include class DBCatalogue; class DBEvent; class DBEventProduct; class VisualizationWidget; class VisualizationSelectionZoneItem; namespace Ui { class CatalogueEventsWidget; } Q_DECLARE_LOGGING_CATEGORY(LOG_CatalogueEventsWidget) class CatalogueEventsWidget : public QWidget { Q_OBJECT signals: void eventsSelected(const QVector > &event); void eventsRemoved(const QVector > &event); void eventProductsSelected( const QVector, std::shared_ptr > > &eventproducts); void selectionCleared(); void selectionZoneAdded(const std::shared_ptr &event, const QString &productId, VisualizationSelectionZoneItem *selectionZone); void eventCataloguesModified(const QVector > &catalogues); public: explicit CatalogueEventsWidget(QWidget *parent = 0); virtual ~CatalogueEventsWidget(); void setVisualizationWidget(VisualizationWidget *visualization); void addEvent(const std::shared_ptr &event); void setEventChanges(const std::shared_ptr &event, bool hasChanges); QVector > displayedCatalogues() const; bool isAllEventsDisplayed() const; bool isEventDisplayed(const std::shared_ptr &event) const; void refreshEvent(const std::shared_ptr &event); public slots: void populateWithCatalogues(const QVector > &catalogues); void populateWithAllEvents(); void clear(); void refresh(); // QWidget interface protected: void keyPressEvent(QKeyEvent *event); private: Ui::CatalogueEventsWidget *ui; class CatalogueEventsWidgetPrivate; spimpl::unique_impl_ptr impl; private slots: void emitSelection(); }; #endif // SCIQLOP_CATALOGUEEVENTSWIDGET_H