##// END OF EJS Templates
Adds read compatibility for local AMDA server...
Adds read compatibility for local AMDA server The local AMDA server uses another regex than the default server to read the units in x. We manage the compatibility by adding in the parser the possibility of testing several regexes to read a property

File last commit:

r1105:342312d662e7
r1121:98220c931c83
Show More
CatalogueSideBarWidget.cpp
101 lines | 3.6 KiB | text/x-c | CppLexer
/ gui / src / Catalogue / CatalogueSideBarWidget.cpp
#include "Catalogue/CatalogueSideBarWidget.h"
#include "ui_CatalogueSideBarWidget.h"
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;
struct CatalogueSideBarWidget::CatalogueSideBarWidgetPrivate {
void configureTreeWidget(QTreeWidget *treeWidget);
QTreeWidgetItem *addDatabaseItem(const QString &name, QTreeWidget *treeWidget);
void addCatalogueItem(const QString &name, QTreeWidgetItem *parentDatabaseItem);
};
CatalogueSideBarWidget::CatalogueSideBarWidget(QWidget *parent)
: QWidget(parent),
ui(new Ui::CatalogueSideBarWidget),
impl{spimpl::make_unique_impl<CatalogueSideBarWidgetPrivate>()}
{
ui->setupUi(this);
impl->configureTreeWidget(ui->treeWidget);
auto emitSelection = [this](auto item) {
switch (item->type()) {
case CATALOGUE_ITEM_TYPE:
emit this->catalogueSelected(item->text(0));
break;
case ALL_EVENT_ITEM_TYPE:
emit this->allEventsSelected();
break;
case TRASH_ITEM_TYPE:
emit this->trashSelected();
break;
case DATABASE_ITEM_TYPE:
default:
break;
}
};
connect(ui->treeWidget, &QTreeWidget::itemClicked, emitSelection);
connect(ui->treeWidget, &QTreeWidget::currentItemChanged, emitSelection);
}
CatalogueSideBarWidget::~CatalogueSideBarWidget()
{
delete ui;
}
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);
// Test
auto db = addDatabaseItem("Database 1", treeWidget);
addCatalogueItem("Catalogue 1", db);
addCatalogueItem("Catalogue 2", db);
addCatalogueItem("Catalogue 3", db);
addCatalogueItem("Catalogue 4", db);
auto db2 = addDatabaseItem("Database 2", treeWidget);
addCatalogueItem("Catalogue A", db2);
addCatalogueItem("Catalogue B", db2);
addCatalogueItem("Catalogue C", db2);
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(
const QString &name, QTreeWidgetItem *parentDatabaseItem)
{
auto catalogueItem = new QTreeWidgetItem({name}, CATALOGUE_ITEM_TYPE);
catalogueItem->setIcon(0, QIcon(":/icones/catalogue.png"));
parentDatabaseItem->addChild(catalogueItem);
}