diff --git a/src/qtgui/rclm_wins.cpp b/src/qtgui/rclm_wins.cpp index 5547380c..955a24e6 100644 --- a/src/qtgui/rclm_wins.cpp +++ b/src/qtgui/rclm_wins.cpp @@ -31,6 +31,7 @@ #include "specialindex.h" #include "rclmain_w.h" #include "webcache.h" +#include "restable.h" using namespace std; @@ -453,16 +454,23 @@ void RclMain::newDupsW(const Rcl::Doc, const vector dups) void RclMain::showSnippets(Rcl::Doc doc) { - if (m_snippets) { - deleteZ(m_snippets); + if (!m_snippets) { + m_snippets = new SnippetsW(doc, m_source); + connect(m_snippets, SIGNAL(startNativeViewer(Rcl::Doc, int, QString)), + this, SLOT(startNativeViewer(Rcl::Doc, int, QString))); + connect(new QShortcut(quitKeySeq, m_snippets), SIGNAL (activated()), + this, SLOT (fileExit())); + connect(new QShortcut(closeKeySeq, m_snippets), SIGNAL (activated()), + m_snippets, SLOT (close())); + if (restable) { + connect( + restable, + SIGNAL(detailDocChanged(Rcl::Doc, std::shared_ptr)), + m_snippets, + SLOT(onSetDoc(Rcl::Doc, std::shared_ptr))); + } + } else { + m_snippets->onSetDoc(doc, m_source); } - m_snippets = new SnippetsW(doc, m_source); - connect(m_snippets, SIGNAL(startNativeViewer(Rcl::Doc, int, QString)), - this, SLOT(startNativeViewer(Rcl::Doc, int, QString))); - connect(new QShortcut(quitKeySeq, m_snippets), SIGNAL (activated()), - this, SLOT (fileExit())); - connect(new QShortcut(closeKeySeq, m_snippets), SIGNAL (activated()), - m_snippets, SLOT (close())); m_snippets->show(); } - diff --git a/src/qtgui/restable.cpp b/src/qtgui/restable.cpp index 22dc3ed8..0eca0a17 100644 --- a/src/qtgui/restable.cpp +++ b/src/qtgui/restable.cpp @@ -666,6 +666,7 @@ void ResTable::onTableView_currentChanged(const QModelIndex& index) m_detaildoc = doc; m_pager->displayDoc(theconfig, index.row(), m_detaildoc, m_model->m_hdata); + emit(detailDocChanged(doc, m_model->getDocSource())); } else { m_detaildocnum = -1; } diff --git a/src/qtgui/restable.h b/src/qtgui/restable.h index 83b6b40d..b502739c 100644 --- a/src/qtgui/restable.h +++ b/src/qtgui/restable.h @@ -167,7 +167,8 @@ signals: void docExpand(Rcl::Doc); void showSubDocs(Rcl::Doc); void showSnippets(Rcl::Doc); - + void detailDocChanged(Rcl::Doc, std::shared_ptr); + friend class ResTablePager; friend class ResTableDetailArea; private: diff --git a/src/qtgui/snippets_w.cpp b/src/qtgui/snippets_w.cpp index 28c9add7..ab83468c 100644 --- a/src/qtgui/snippets_w.cpp +++ b/src/qtgui/snippets_w.cpp @@ -65,23 +65,18 @@ using namespace std; class PlainToRichQtSnippets : public PlainToRich { public: - virtual string startMatch(unsigned int) - { - return string(""); + virtual string startMatch(unsigned int) { + return string(""); } - virtual string endMatch() - { - return string(""); + virtual string endMatch() { + return string(""); } }; static PlainToRichQtSnippets g_hiliter; void SnippetsW::init() { - if (!m_source) - return; - QPushButton *searchButton = new QPushButton(tr("Search")); searchButton->setAutoDefault(false); buttonBox->addButton(searchButton, QDialogButtonBox::ActionRole); @@ -94,16 +89,16 @@ void SnippetsW::init() new QShortcut(QKeySequence::FindNext, this, SLOT(slotEditFindNext())); new QShortcut(QKeySequence(Qt::Key_F3), this, SLOT(slotEditFindNext())); new QShortcut(QKeySequence::FindPrevious, this, - SLOT(slotEditFindPrevious())); + SLOT(slotEditFindPrevious())); new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_F3), - this, SLOT(slotEditFindPrevious())); + this, SLOT(slotEditFindPrevious())); QPushButton *closeButton = buttonBox->button(QDialogButtonBox::Close); if (closeButton) - connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); + connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); connect(searchButton, SIGNAL(clicked()), this, SLOT(slotEditFind())); connect(searchLE, SIGNAL(textChanged(const QString&)), - this, SLOT(slotSearchTextChanged(const QString&))); + this, SLOT(slotSearchTextChanged(const QString&))); connect(nextPB, SIGNAL(clicked()), this, SLOT(slotEditFindNext())); connect(prevPB, SIGNAL(clicked()), this, SLOT(slotEditFindPrevious())); @@ -113,43 +108,50 @@ void SnippetsW::init() verticalLayout->insertWidget(0, browserw); browser->setUrl(QUrl(QString::fromUtf8("about:blank"))); connect(browser, SIGNAL(linkClicked(const QUrl &)), - this, SLOT(onLinkClicked(const QUrl &))); + this, SLOT(onLinkClicked(const QUrl &))); browser->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); browser->page()->currentFrame()->setScrollBarPolicy(Qt::Horizontal, - Qt::ScrollBarAlwaysOff); + Qt::ScrollBarAlwaysOff); QWEBSETTINGS *ws = browser->page()->settings(); if (prefs.reslistfontfamily != "") { - ws->setFontFamily(QWEBSETTINGS::StandardFont, prefs.reslistfontfamily); - ws->setFontSize(QWEBSETTINGS::DefaultFontSize, prefs.reslistfontsize); + ws->setFontFamily(QWEBSETTINGS::StandardFont, prefs.reslistfontfamily); + ws->setFontSize(QWEBSETTINGS::DefaultFontSize, prefs.reslistfontsize); } if (!prefs.snipCssFile.isEmpty()) - ws->setUserStyleSheetUrl(QUrl::fromLocalFile(prefs.snipCssFile)); + ws->setUserStyleSheetUrl(QUrl::fromLocalFile(prefs.snipCssFile)); #elif defined(USING_WEBENGINE) browserw = new QWebEngineView(this); verticalLayout->insertWidget(0, browserw); browser->setPage(new SnipWebPage(this)); QWEBSETTINGS *ws = browser->page()->settings(); if (prefs.reslistfontfamily != "") { - ws->setFontFamily(QWEBSETTINGS::StandardFont, prefs.reslistfontfamily); - ws->setFontSize(QWEBSETTINGS::DefaultFontSize, prefs.reslistfontsize); + ws->setFontFamily(QWEBSETTINGS::StandardFont, prefs.reslistfontfamily); + ws->setFontSize(QWEBSETTINGS::DefaultFontSize, prefs.reslistfontsize); } // Stylesheet TBD #else browserw = new QTextBrowser(this); verticalLayout->insertWidget(0, browserw); connect(browser, SIGNAL(anchorClicked(const QUrl &)), - this, SLOT(onLinkClicked(const QUrl &))); + this, SLOT(onLinkClicked(const QUrl &))); browser->setReadOnly(true); browser->setUndoRedoEnabled(false); browser->setOpenLinks(false); browser->setTabChangesFocus(true); if (prefs.reslistfontfamily.length()) { - QFont nfont(prefs.reslistfontfamily, prefs.reslistfontsize); - browser->setFont(nfont); + QFont nfont(prefs.reslistfontfamily, prefs.reslistfontsize); + browser->setFont(nfont); } else { - browser->setFont(QFont()); + browser->setFont(QFont()); } #endif +} + +void SnippetsW::onSetDoc(Rcl::Doc doc, std::shared_ptr source) +{ + m_doc = doc; + if (!source) + return; // Make title out of file name if none yet string titleOrFilename; @@ -157,7 +159,7 @@ void SnippetsW::init() m_doc.getmeta(Rcl::Doc::keytt, &titleOrFilename); m_doc.getmeta(Rcl::Doc::keyfn, &utf8fn); if (titleOrFilename.empty()) { - titleOrFilename = utf8fn; + titleOrFilename = utf8fn; } QString title("Recoll - Snippets"); if (!titleOrFilename.empty()) { @@ -166,17 +168,17 @@ void SnippetsW::init() setWindowTitle(title); vector vpabs; - m_source->getAbstract(m_doc, vpabs, + source->getAbstract(m_doc, vpabs, prefs.snipwMaxLength, prefs.snipwSortByPage); HighlightData hdata; - m_source->getTerms(hdata); + source->getTerms(hdata); ostringstream oss; oss << - "" - ""; + "" + ""; oss << "