VSearchResultItem *VSearch::searchForOutline(const VFile *p_file) const { VEditTab *tab = g_mainWin->getEditArea()->getTab(p_file); if (!tab) { return NULL; } const VTableOfContent &toc = tab->getOutline(); const QVector<VTableOfContentItem> &table = toc.getTable(); VSearchResultItem *item = NULL; for (auto const & it: table) { if (it.isEmpty()) { continue; } if (!matchNonContent(it.m_name)) { continue; } if (!item) { item = new VSearchResultItem(VSearchResultItem::Note, VSearchResultItem::OutlineIndex, p_file->getName(), p_file->fetchPath()); } VSearchResultSubItem sitem(it.m_index, it.m_name); item->m_matches.append(sitem); } return item; }
// Fetch VFileSessionInfo from @p_tabInfo. VFileSessionInfo VFileSessionInfo::fromEditTabInfo(const VEditTabInfo *p_tabInfo) { Q_ASSERT(p_tabInfo); VEditTab *tab = p_tabInfo->m_editTab; VFileSessionInfo info(tab->getFile()->fetchPath(), tab->isEditMode() ? OpenFileMode::Edit : OpenFileMode::Read); info.m_headerIndex = p_tabInfo->m_headerIndex; info.m_cursorBlockNumber = p_tabInfo->m_cursorBlockNumber; info.m_cursorPositionInBlock = p_tabInfo->m_cursorPositionInBlock; return info; }
void VMdEditor::contextMenuEvent(QContextMenuEvent *p_event) { QMenu *menu = createStandardContextMenu(); menu->setToolTipsVisible(true); VEditTab *editTab = dynamic_cast<VEditTab *>(parent()); Q_ASSERT(editTab); if (editTab->isEditMode()) { const QList<QAction *> actions = menu->actions(); if (textCursor().hasSelection()) { initCopyAsMenu(actions.isEmpty() ? NULL : actions.last(), menu); } else { QAction *saveExitAct = new QAction(VIconUtils::menuIcon(":/resources/icons/save_exit.svg"), tr("&Save Changes And Read"), menu); saveExitAct->setToolTip(tr("Save changes and exit edit mode")); connect(saveExitAct, &QAction::triggered, this, [this]() { emit m_object->saveAndRead(); }); QAction *discardExitAct = new QAction(VIconUtils::menuIcon(":/resources/icons/discard_exit.svg"), tr("&Discard Changes And Read"), menu); discardExitAct->setToolTip(tr("Discard changes and exit edit mode")); connect(discardExitAct, &QAction::triggered, this, [this]() { emit m_object->discardAndRead(); }); menu->insertAction(actions.isEmpty() ? NULL : actions[0], discardExitAct); menu->insertAction(discardExitAct, saveExitAct); } if (!actions.isEmpty()) { menu->insertSeparator(actions[0]); } } menu->exec(p_event->globalPos()); delete menu; }