medLinkMenu::medLinkMenu(QWidget * parent) : QPushButton(parent), d(new medLinkMenuPrivate) { this->setIcon(QIcon(":icons/link.svg")); d->popupWidget = new QWidget(this); d->popupWidget->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint ); d->popupWidget->setContentsMargins(0,0,4,4); d->popupWidget->setObjectName("popupWidget"); d->subPopupWidget = new QWidget(this); d->subPopupWidget->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint ); d->subPopupWidget->setContentsMargins(0,0,4,4); d->subPopupWidget->setObjectName("subPopupWidget"); d->popupWidget->setAttribute(Qt::WA_TranslucentBackground); d->subPopupWidget->setAttribute(Qt::WA_TranslucentBackground); #ifdef Q_OS_LINUX QGraphicsDropShadowEffect *shadowEffect1 = new QGraphicsDropShadowEffect(this); shadowEffect1->setOffset(2); shadowEffect1->setBlurRadius(8); shadowEffect1->setColor(QColor(33, 33, 33, 200)); QGraphicsDropShadowEffect *shadowEffect2 = new QGraphicsDropShadowEffect(this); shadowEffect2->setOffset(2); shadowEffect2->setBlurRadius(8); shadowEffect2->setColor(QColor(33, 33, 33, 200)); d->popupWidget->setGraphicsEffect(shadowEffect1); d->subPopupWidget->setGraphicsEffect(shadowEffect2); #endif d->groupList = new medListWidget; d->groupList->setMouseTracking(true); d->groupList->setAlternatingRowColors(true); d->paramList = new medListWidget; d->paramList->setMouseTracking(true); d->paramList->setAlternatingRowColors(true); d->newGroupitem = new QListWidgetItem("Add new Group..."); d->groupList->addItem(d->newGroupitem); d->newGroupEdit = new QLineEdit("Add new Group..."); d->groupList->setItemWidget(d->newGroupitem, d->newGroupEdit); d->saveAsPresetButton = new QPushButton("Save as preset"); d->presetList = new medListWidget; d->presetList->setMouseTracking(true); d->presetList->setAlternatingRowColors(true); d->presetList->hide(); QVBoxLayout *popUpLayout = new QVBoxLayout(d->popupWidget); popUpLayout->setContentsMargins(0,0,0,0); popUpLayout->addWidget(d->groupList); connect(this, SIGNAL(clicked()), this, SLOT(showPopup())); connect(d->newGroupEdit, SIGNAL(returnPressed()), this, SLOT(createNewGroup())); connect(d->groupList, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(selectGroup(QListWidgetItem*))); connect(d->paramList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(selectParam(QListWidgetItem*))); connect(d->groupList, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(showSubMenu(QListWidgetItem*))); connect(d->paramList, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(highlightItem(QListWidgetItem*))); connect(d->paramList, SIGNAL(itemPressed(QListWidgetItem*)), this, SLOT(selectItem(QListWidgetItem*))); connect(d->saveAsPresetButton, SIGNAL(clicked()), this, SLOT(saveAsPreset())); connect(d->presetList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(applyPreset(QListWidgetItem*))); connect(d->presetList, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(highlightItem(QListWidgetItem*))); connect(d->presetList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(editPreset(QListWidgetItem*))); connect(d->presetList, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(selectItem(QListWidgetItem*))); QWidget *internalSubPopWidget = new QWidget; internalSubPopWidget->setObjectName("internalSubPopWidget"); QVBoxLayout *layout = new QVBoxLayout(d->subPopupWidget); layout->setContentsMargins(0,0,0,0); layout->setSpacing(0); layout->addWidget(internalSubPopWidget); QVBoxLayout *subPopUpLayout = new QVBoxLayout(internalSubPopWidget); subPopUpLayout->setContentsMargins(3,3,3,3); subPopUpLayout->setSpacing(3); subPopUpLayout->addWidget(d->paramList); subPopUpLayout->addWidget(d->saveAsPresetButton); subPopUpLayout->addWidget(d->presetList); d->groupList->installEventFilter(this); d->paramList->installEventFilter(this); d->newGroupEdit->installEventFilter(this); d->saveAsPresetButton->installEventFilter(this); d->presetList->installEventFilter(this); if(qApp->activeWindow()) qApp->activeWindow()->installEventFilter(this); }
void EventManager::fireSaveAsPresetEvent(const SaveAsPresetEvent& event) { emit saveAsPreset(event); }