##// END OF EJS Templates
Display catalogues and events with CatalogueAPI
Display catalogues and events with CatalogueAPI

File last commit:

r1129:9abcd350a712
r1129:9abcd350a712
Show More
CatalogueSideBarWidget.cpp
113 lines | 4.0 KiB | text/x-c | CppLexer
/ gui / src / Catalogue / CatalogueSideBarWidget.cpp
Sub widget classes
r1095 #include "Catalogue/CatalogueSideBarWidget.h"
#include "ui_CatalogueSideBarWidget.h"
Display catalogues and events with CatalogueAPI
r1129 #include <SqpApplication.h>
#include <Catalogue/CatalogueController.h>
#include <Catalogue/CatalogueTreeWidgetItem.h>
#include <CatalogueDao.h>
#include <ComparaisonPredicate.h>
#include <DBCatalogue.h>
Sub widget classes
r1095
Basic interactions
r1103 constexpr auto ALL_EVENT_ITEM_TYPE = QTreeWidgetItem::UserType;
constexpr auto TRASH_ITEM_TYPE = QTreeWidgetItem::UserType + 1;
constexpr auto CATALOGUE_ITEM_TYPE = QTreeWidgetItem::UserType + 2;
constexpr auto DATABASE_ITEM_TYPE = QTreeWidgetItem::UserType + 3;
Catalog side bar
r1098
struct CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate {
Display catalogues and events with CatalogueAPI
r1129
QHash<QTreeWidgetItem *, DBCatalogue> m_CatalogueMap;
Catalog side bar
r1098 void configureTreeWidget(QTreeWidget *treeWidget);
Methods to add some catalogue items
r1102 QTreeWidgetItem *addDatabaseItem(const QString &name, QTreeWidget *treeWidget);
Display catalogues and events with CatalogueAPI
r1129 void addCatalogueItem(const DBCatalogue &catalogue, QTreeWidgetItem *parentDatabaseItem);
Catalog side bar
r1098 };
Sub widget classes
r1095 CatalogueSideBarWidget::CatalogueSideBarWidget(QWidget *parent)
Catalog side bar
r1098 : QWidget(parent),
ui(new Ui::CatalogueSideBarWidget),
impl{spimpl::make_unique_impl<CatalogueSideBarWidgetPrivate>()}
Sub widget classes
r1095 {
ui->setupUi(this);
Catalog side bar
r1098 impl->configureTreeWidget(ui->treeWidget);
Basic interactions
r1103
Skeleton to fill the inspector with the selection
r1105 auto emitSelection = [this](auto item) {
Basic interactions
r1103 switch (item->type()) {
case CATALOGUE_ITEM_TYPE:
Display catalogues and events with CatalogueAPI
r1129 emit this->catalogueSelected(
static_cast<CatalogueTreeWidgetItem *>(item)->catalogue());
Basic interactions
r1103 break;
case ALL_EVENT_ITEM_TYPE:
emit this->allEventsSelected();
break;
case TRASH_ITEM_TYPE:
emit this->trashSelected();
break;
case DATABASE_ITEM_TYPE:
default:
break;
}
Skeleton to fill the inspector with the selection
r1105 };
connect(ui->treeWidget, &QTreeWidget::itemClicked, emitSelection);
connect(ui->treeWidget, &QTreeWidget::currentItemChanged, emitSelection);
Sub widget classes
r1095 }
CatalogueSideBarWidget::~CatalogueSideBarWidget()
{
delete ui;
}
Catalog side bar
r1098
void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::configureTreeWidget(
QTreeWidget *treeWidget)
{
auto allEventsItem = new QTreeWidgetItem({"All Events"}, ALL_EVENT_ITEM_TYPE);
allEventsItem->setIcon(0, QIcon(":/icones/allEvents.png"));
treeWidget->addTopLevelItem(allEventsItem);
auto trashItem = new QTreeWidgetItem({"Trash"}, TRASH_ITEM_TYPE);
trashItem->setIcon(0, QIcon(":/icones/trash.png"));
treeWidget->addTopLevelItem(trashItem);
auto separator = new QFrame(treeWidget);
separator->setFrameShape(QFrame::HLine);
auto separatorItem = new QTreeWidgetItem();
separatorItem->setFlags(Qt::NoItemFlags);
treeWidget->addTopLevelItem(separatorItem);
treeWidget->setItemWidget(separatorItem, 0, separator);
Methods to add some catalogue items
r1102
// Test
Display catalogues and events with CatalogueAPI
r1129 auto &dao = sqpApp->catalogueController().getDao();
auto allPredicate = std::make_shared<ComparaisonPredicate>(QString{"uniqId"}, "-1",
ComparaisonOperation::DIFFERENT);
auto db = addDatabaseItem("Default", treeWidget);
Methods to add some catalogue items
r1102
Display catalogues and events with CatalogueAPI
r1129 auto catalogues = dao.getCatalogues(allPredicate);
for (auto catalogue : catalogues) {
addCatalogueItem(catalogue, db);
}
Methods to add some catalogue items
r1102
treeWidget->expandAll();
}
QTreeWidgetItem *
CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addDatabaseItem(const QString &name,
QTreeWidget *treeWidget)
{
auto databaseItem = new QTreeWidgetItem({name}, DATABASE_ITEM_TYPE);
databaseItem->setIcon(0, QIcon(":/icones/database.png"));
treeWidget->addTopLevelItem(databaseItem);
return databaseItem;
}
void CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate::addCatalogueItem(
Display catalogues and events with CatalogueAPI
r1129 const DBCatalogue &catalogue, QTreeWidgetItem *parentDatabaseItem)
Methods to add some catalogue items
r1102 {
Display catalogues and events with CatalogueAPI
r1129 auto catalogueItem = new CatalogueTreeWidgetItem(catalogue, CATALOGUE_ITEM_TYPE);
Methods to add some catalogue items
r1102 catalogueItem->setIcon(0, QIcon(":/icones/catalogue.png"));
parentDatabaseItem->addChild(catalogueItem);
Catalog side bar
r1098 }