QWidget* medDatabaseDataSource::mainViewWidget() { if(d->mainWidget.isNull()) { d->mainWidget = new QWidget; d->largeView = new medDatabaseView(d->mainWidget); d->largeView->setModel(d->proxy); QVBoxLayout *database_layout = new QVBoxLayout(d->mainWidget); database_layout->setContentsMargins(0, 0, 0, 0); database_layout->setSpacing(0); database_layout->addWidget(d->largeView); connect(d->largeView, SIGNAL(open(const medDataIndex&)), this, SIGNAL(open(const medDataIndex&))); connect(d->largeView, SIGNAL(exportData(const medDataIndex&)), this, SIGNAL(exportData(const medDataIndex&))); connect(d->largeView, SIGNAL(dataRemoved(const medDataIndex&)), this, SIGNAL(dataRemoved(const medDataIndex&))); if(!d->toolBoxes.isEmpty()) { connect(d->actionsToolBox, SIGNAL(removeClicked()), d->largeView, SLOT(onRemoveSelectedItemRequested())); connect(d->actionsToolBox, SIGNAL(exportClicked()), d->largeView, SLOT(onExportSelectedItemRequested())); connect(d->actionsToolBox, SIGNAL(viewClicked()), d->largeView, SLOT(onViewSelectedItemRequested())); connect(d->actionsToolBox, SIGNAL(saveClicked()), d->largeView, SLOT(onSaveSelectedItemRequested())); connect(d->actionsToolBox, SIGNAL(newPatientClicked()), d->largeView, SLOT(onCreatePatientRequested())); connect(d->actionsToolBox, SIGNAL(newStudyClicked()), d->largeView, SLOT(onCreateStudyRequested())); connect(d->actionsToolBox, SIGNAL(editClicked()), d->largeView, SLOT(onEditRequested())); connect(d->largeView, SIGNAL(patientClicked(const medDataIndex&)), d->actionsToolBox, SLOT(patientSelected(const medDataIndex&))); connect(d->largeView, SIGNAL(seriesClicked(const medDataIndex&)), d->actionsToolBox, SLOT(seriesSelected(const medDataIndex&))); connect(d->largeView, SIGNAL(noPatientOrSeriesSelected()), d->actionsToolBox, SLOT(noPatientOrSeriesSelected())); connect(d->largeView, SIGNAL(multipleEntriesSelected(const QVector<medDataIndex>&)), d->actionsToolBox, SLOT(multipleEntriesSelected(const QVector<medDataIndex>&))); }
medDatabaseView::medDatabaseView(QWidget *parent) : QTreeView(parent), d(new medDatabaseViewPrivate) { this->setDragEnabled(true); this->setDropIndicatorShown(true); this->setAcceptDrops(true); this->setFrameStyle(QFrame::NoFrame); this->setAttribute(Qt::WA_MacShowFocusRect, false); this->setUniformRowHeights(true); this->setAlternatingRowColors(true); this->setAnimated(false); this->setSortingEnabled(true); this->setSelectionBehavior(QAbstractItemView::SelectRows); this->setSelectionMode(QAbstractItemView::ExtendedSelection); this->header()->setStretchLastSection(true); this->header()->setDefaultAlignment(Qt::AlignCenter); this->setContextMenuPolicy(Qt::CustomContextMenu); this->setEditTriggers(QAbstractItemView:: SelectedClicked); connect(this, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(onItemDoubleClicked(const QModelIndex&))); connect(this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(updateContextMenu(const QPoint&))); NoFocusDelegate* delegate = new NoFocusDelegate(this, QList<medDataIndex>()); this->setItemDelegate(delegate); d->contextMenu = new QMenu(this); //Init the QActions d->viewAction = new QAction(tr("View"), this); d->viewAction->setIconVisibleInMenu(true); d->viewAction->setIcon(QIcon(":icons/eye.png")); connect(d->viewAction, SIGNAL(triggered()), this, SLOT(onViewSelectedItemRequested())); d->exportAction = new QAction(tr("Export"), this); d->exportAction->setIconVisibleInMenu(true); d->exportAction->setIcon(QIcon(":icons/export.png")); connect(d->exportAction, SIGNAL(triggered()), this, SLOT(onExportSelectedItemRequested())); d->saveAction = new QAction(tr("Save"), this); d->saveAction->setIconVisibleInMenu(true); d->saveAction->setIcon(QIcon(":icons/save.png")); connect(d->saveAction, SIGNAL(triggered()), this, SLOT(onSaveSelectedItemRequested())); d->removeAction = new QAction(tr("Remove"), this); d->removeAction->setIconVisibleInMenu(true); d->removeAction->setIcon(QIcon(":icons/cross.svg")); connect(d->removeAction, SIGNAL(triggered()), this, SLOT(onRemoveSelectedItemRequested())); d->addPatientAction = new QAction(tr("New Patient"), this); d->addPatientAction->setIconVisibleInMenu(true); d->addPatientAction->setIcon(QIcon(":icons/user_add.png")); connect(d->addPatientAction, SIGNAL(triggered()), this, SLOT(onCreatePatientRequested())); d->addStudyAction = new QAction(tr("New Study"), this); d->addStudyAction->setIconVisibleInMenu(true); d->addStudyAction->setIcon(QIcon(":icons/page_add.png")); connect(d->addStudyAction, SIGNAL(triggered()), this, SLOT(onCreateStudyRequested())); d->editAction = new QAction(tr("Edit..."), this); d->editAction->setIconVisibleInMenu(true); d->editAction->setIcon(QIcon(":icons/page_edit.png")); connect(d->editAction, SIGNAL(triggered()), this, SLOT(onEditRequested())); }