void ImageWindow::slotContextMenu() { if (m_contextMenu) { TagsPopupMenu* assignTagsMenu = 0; TagsPopupMenu* removeTagsMenu = 0; // Bulk assignment/removal of tags -------------------------- QList<qlonglong> idList; idList << d->currentImageInfo.id(); assignTagsMenu = new TagsPopupMenu(idList, TagsPopupMenu::RECENTLYASSIGNED, this); removeTagsMenu = new TagsPopupMenu(idList, TagsPopupMenu::REMOVE, this); assignTagsMenu->menuAction()->setText(i18n("Assign Tag")); removeTagsMenu->menuAction()->setText(i18n("Remove Tag")); m_contextMenu->addSeparator(); m_contextMenu->addMenu(assignTagsMenu); m_contextMenu->addMenu(removeTagsMenu); connect(assignTagsMenu, SIGNAL(signalTagActivated(int)), this, SLOT(slotAssignTag(int))); connect(removeTagsMenu, SIGNAL(signalTagActivated(int)), this, SLOT(slotRemoveTag(int))); connect(assignTagsMenu, SIGNAL(signalPopupTagsView()), d->rightSideBar, SLOT(slotPopupTagsView())); if (!DatabaseAccess().db()->hasTags( idList )) { m_contextMenu->menuAction()->setEnabled(false); } m_contextMenu->addSeparator(); // Assign Labels ------------------------------------------- KMenu* menuLabels = new KMenu(i18n("Assign Labels"), m_contextMenu); PickLabelMenuAction* pmenu = new PickLabelMenuAction(m_contextMenu); ColorLabelMenuAction* cmenu = new ColorLabelMenuAction(m_contextMenu); RatingMenuAction* rmenu = new RatingMenuAction(m_contextMenu); menuLabels->addAction(pmenu); menuLabels->addAction(cmenu); menuLabels->addAction(rmenu); m_contextMenu->addMenu(menuLabels); connect(pmenu, SIGNAL(signalPickLabelChanged(int)), this, SLOT(slotAssignPickLabel(int))); connect(cmenu, SIGNAL(signalColorLabelChanged(int)), this, SLOT(slotAssignColorLabel(int))); connect(rmenu, SIGNAL(signalRatingChanged(int)), this, SLOT(slotAssignRating(int))); // -------------------------------------------------------------- m_contextMenu->exec(QCursor::pos()); delete assignTagsMenu; delete removeTagsMenu; delete cmenu; delete pmenu; delete rmenu; delete menuLabels; } }
LightTableView::LightTableView(QWidget* const parent) : QFrame(parent), d(new Private) { setAttribute(Qt::WA_DeleteOnClose); setFrameStyle(QFrame::NoFrame); setLineWidth(0); d->grid = new QGridLayout(); setLayout(d->grid); d->leftFrame = new QLabel(this); d->leftPreview = new LightTablePreview(this); QVBoxLayout* const llay = new QVBoxLayout(d->leftFrame); llay->addWidget(d->leftPreview); llay->setContentsMargins(3, 3, 3, 3); llay->setSpacing(0); d->rightFrame = new QLabel(this); d->rightPreview = new LightTablePreview(this); QVBoxLayout* const rlay = new QVBoxLayout(d->rightFrame); rlay->addWidget(d->rightPreview); rlay->setContentsMargins(3, 3, 3, 3); rlay->setSpacing(0); d->grid->addWidget(d->leftFrame, 0, 0, 1, 1); d->grid->addWidget(d->rightFrame, 0, 1, 1, 1); d->grid->setColumnStretch(0, 10); d->grid->setColumnStretch(1, 10); d->grid->setRowStretch(0, 10); // Left panel connections ------------------------------------------------ connect(d->leftPreview, SIGNAL(signalPopupTagsView()), this, SIGNAL(signalLeftPopupTagsView())); connect(d->leftPreview->layout(), SIGNAL(zoomFactorChanged(double)), this, SLOT(slotLeftZoomFactorChanged(double))); connect(d->leftPreview, SIGNAL(contentsMoving(int,int)), this, SLOT(slotLeftContentsMoved(int,int))); connect(d->leftPreview, SIGNAL(signalSlideShowCurrent()), this, SIGNAL(signalLeftSlideShowCurrent())); connect(d->leftPreview, SIGNAL(signalDroppedItems(ItemInfoList)), this, SIGNAL(signalLeftDroppedItems(ItemInfoList))); connect(d->leftPreview, SIGNAL(signalPreviewLoaded(bool)), this, SLOT(slotLeftPreviewLoaded(bool))); connect(d->leftPreview, SIGNAL(leftButtonClicked()), this, SIGNAL(signalLeftPanelLeftButtonClicked())); connect(d->leftPreview, SIGNAL(signalDeleteItem()), this, SLOT(slotDeleteLeftItem())); // Right panel connections ------------------------------------------------ connect(d->rightPreview, SIGNAL(signalPopupTagsView()), this, SIGNAL(signalRightPopupTagsView())); connect(d->rightPreview->layout(), SIGNAL(zoomFactorChanged(double)), this, SLOT(slotRightZoomFactorChanged(double))); connect(d->rightPreview, SIGNAL(contentsMoving(int,int)), this, SLOT(slotRightContentsMoved(int,int))); connect(d->rightPreview, SIGNAL(signalDroppedItems(ItemInfoList)), this, SIGNAL(signalRightDroppedItems(ItemInfoList))); connect(d->rightPreview, SIGNAL(signalSlideShowCurrent()), this, SIGNAL(signalRightSlideShowCurrent())); connect(d->rightPreview, SIGNAL(signalPreviewLoaded(bool)), this, SLOT(slotRightPreviewLoaded(bool))); connect(d->rightPreview, SIGNAL(leftButtonClicked()), this, SIGNAL(signalRightPanelLeftButtonClicked())); connect(d->rightPreview, SIGNAL(signalDeleteItem()), this, SLOT(slotDeleteRightItem())); }