void NotesContentsWidget::showContextMenu(const QPoint &point) { const QModelIndex index(m_ui->notesViewWidget->indexAt(point)); const BookmarksModel::BookmarkType type(static_cast<BookmarksModel::BookmarkType>(index.data(BookmarksModel::TypeRole).toInt())); QMenu menu(this); if (type != BookmarksModel::UrlBookmark && type != BookmarksModel::TrashBookmark) { menu.addAction(getAction(ActionsManager::PasteAction)); menu.addSeparator(); } if (type == BookmarksModel::TrashBookmark) { menu.addAction(ThemesManager::getIcon(QLatin1String("trash-empty")), tr("Empty Trash"), NotesManager::getModel(), SLOT(emptyTrash()))->setEnabled(NotesManager::getModel()->getTrashItem()->rowCount() > 0); } else if (type == BookmarksModel::UnknownBookmark) { menu.addAction(ThemesManager::getIcon(QLatin1String("inode-directory")), tr("Add Folder"), this, SLOT(addFolder())); menu.addAction(tr("Add Bookmark"), this, SLOT(addNote())); menu.addAction(tr("Add Separator"), this, SLOT(addSeparator())); } else { const bool isInTrash(index.data(BookmarksModel::IsTrashedRole).toBool()); if (type == BookmarksModel::UrlBookmark) { menu.addAction(getAction(ActionsManager::CutAction)); menu.addAction(getAction(ActionsManager::CopyAction)); menu.addAction(getAction(ActionsManager::PasteAction)); menu.addSeparator(); } menu.addAction(ThemesManager::getIcon(QLatin1String("document-open")), tr("Open source page"), this, SLOT(openUrl()))->setEnabled(type == BookmarksModel::UrlBookmark && index.data(BookmarksModel::UrlRole).toUrl().isValid()); if (type != BookmarksModel::RootBookmark) { Action *copyLinkAction(getAction(ActionsManager::CopyLinkToClipboardAction)); copyLinkAction->setEnabled(type == BookmarksModel::UrlBookmark && index.data(BookmarksModel::UrlRole).toUrl().isValid()); menu.addAction(copyLinkAction); } if (!isInTrash) { menu.addSeparator(); QMenu *addMenu(menu.addMenu(tr("Add Note"))); addMenu->addAction(ThemesManager::getIcon(QLatin1String("inode-directory")), tr("Add Folder"), this, SLOT(addFolder())); addMenu->addAction(tr("Add Note"), this, SLOT(addNote())); addMenu->addAction(tr("Add Separator"), this, SLOT(addSeparator())); } if (type != BookmarksModel::RootBookmark) { menu.addSeparator(); if (isInTrash) { menu.addAction(tr("Restore Note"), this, SLOT(restoreNote())); } else { menu.addAction(getAction(ActionsManager::DeleteAction)); } } } menu.exec(m_ui->notesViewWidget->mapToGlobal(point)); }
void BookmarksContentsWidget::showContextMenu(const QPoint &point) { const QModelIndex index(m_ui->bookmarksViewWidget->indexAt(point)); const BookmarksModel::BookmarkType type(static_cast<BookmarksModel::BookmarkType>(index.data(BookmarksModel::TypeRole).toInt())); QMenu menu(this); if (type == BookmarksModel::TrashBookmark) { menu.addAction(ThemesManager::getIcon(QLatin1String("trash-empty")), tr("Empty Trash"), BookmarksManager::getModel(), SLOT(emptyTrash()))->setEnabled(BookmarksManager::getModel()->getTrashItem()->rowCount() > 0); } else if (type == BookmarksModel::UnknownBookmark) { menu.addAction(ThemesManager::getIcon(QLatin1String("inode-directory")), tr("Add Folder"), this, SLOT(addFolder())); menu.addAction(tr("Add Bookmark"), this, SLOT(addBookmark())); menu.addAction(tr("Add Separator"), this, SLOT(addSeparator())); } else { const bool isInTrash(index.data(BookmarksModel::IsTrashedRole).toBool()); menu.addAction(ThemesManager::getIcon(QLatin1String("document-open")), tr("Open"), this, SLOT(openBookmark())); menu.addAction(tr("Open in New Tab"), this, SLOT(openBookmark()))->setData(WindowsManager::NewTabOpen); menu.addAction(tr("Open in New Background Tab"), this, SLOT(openBookmark()))->setData(static_cast<int>(WindowsManager::NewTabOpen | WindowsManager::BackgroundOpen)); menu.addSeparator(); menu.addAction(tr("Open in New Window"), this, SLOT(openBookmark()))->setData(WindowsManager::NewWindowOpen); menu.addAction(tr("Open in New Background Window"), this, SLOT(openBookmark()))->setData(static_cast<int>(WindowsManager::NewWindowOpen | WindowsManager::BackgroundOpen)); if (type == BookmarksModel::SeparatorBookmark || (type == BookmarksModel::FolderBookmark && index.child(0, 0).data(BookmarksModel::TypeRole).toInt() == 0)) { for (int i = 0; i < menu.actions().count(); ++i) { menu.actions().at(i)->setEnabled(false); } } MainWindow *mainWindow(MainWindow::findMainWindow(this)); Action *bookmarkAllOpenPagesAction(new Action(ActionsManager::BookmarkAllOpenPagesAction, this)); bookmarkAllOpenPagesAction->setEnabled(mainWindow && mainWindow->getWindowsManager()->getWindowCount() > 0); Action *copyLinkAction(new Action(ActionsManager::CopyLinkToClipboardAction, this)); copyLinkAction->setEnabled(type == BookmarksModel::UrlBookmark); menu.addSeparator(); menu.addAction(ActionsManager::getAction(ActionsManager::BookmarkPageAction, this)); menu.addAction(bookmarkAllOpenPagesAction); menu.addSeparator(); menu.addAction(copyLinkAction); if (!isInTrash) { menu.addSeparator(); QMenu *addMenu(menu.addMenu(tr("Add Bookmark"))); addMenu->addAction(ThemesManager::getIcon(QLatin1String("inode-directory")), tr("Add Folder"), this, SLOT(addFolder())); addMenu->addAction(tr("Add Bookmark"), this, SLOT(addBookmark())); addMenu->addAction(tr("Add Separator"), this, SLOT(addSeparator())); } if (type != BookmarksModel::RootBookmark) { menu.addSeparator(); if (isInTrash) { menu.addAction(tr("Restore Bookmark"), this, SLOT(restoreBookmark())); } else { menu.addAction(getAction(ActionsManager::DeleteAction)); } menu.addSeparator(); menu.addAction(tr("Properties…"), this, SLOT(bookmarkProperties())); } connect(bookmarkAllOpenPagesAction, SIGNAL(triggered(bool)), this, SLOT(triggerAction())); connect(copyLinkAction, SIGNAL(triggered(bool)), this, SLOT(triggerAction())); } menu.exec(m_ui->bookmarksViewWidget->mapToGlobal(point)); }