diff --git a/src/qtgui/rclmain.ui b/src/qtgui/rclmain.ui index 55efc9a2..7de0e410 100644 --- a/src/qtgui/rclmain.ui +++ b/src/qtgui/rclmain.ui @@ -133,6 +133,7 @@ + @@ -212,7 +213,7 @@ - + :/images/history.png:/images/history.png @@ -227,7 +228,7 @@ - + :/images/asearch.png:/images/asearch.png @@ -253,7 +254,7 @@ - + :/images/spell.png:/images/spell.png @@ -271,7 +272,7 @@ false - + :/images/nextpage.png:/images/nextpage.png @@ -292,7 +293,7 @@ false - + :/images/firstpage.png:/images/firstpage.png @@ -313,7 +314,7 @@ false - + :/images/prevpage.png:/images/prevpage.png @@ -378,7 +379,7 @@ false - + :/images/up.png:/images/up.png @@ -406,6 +407,11 @@ Sort by dates from newest to oldest + + + Show Query Details + + qPixmapFromMimeSource diff --git a/src/qtgui/rclmain_w.cpp b/src/qtgui/rclmain_w.cpp index 671126fd..f62727f3 100644 --- a/src/qtgui/rclmain_w.cpp +++ b/src/qtgui/rclmain_w.cpp @@ -242,6 +242,8 @@ void RclMain::init() this, SLOT(catgFilter(int))); connect(toggleFullScreenAction, SIGNAL(activated()), this, SLOT(toggleFullScreen())); + connect(actionShowQueryDetails, SIGNAL(activated()), + this, SLOT(showQueryDetails())); connect(periodictimer, SIGNAL(timeout()), this, SLOT(periodic100())); @@ -259,6 +261,10 @@ void RclMain::init() connect(restable->getModel(), SIGNAL(sortDataChanged(DocSeqSortSpec)), this, SLOT(onResTableSortBy(DocSeqSortSpec))); + connect(restable, SIGNAL(docEditClicked(Rcl::Doc)), + this, SLOT(startNativeViewer(Rcl::Doc))); + connect(restable, SIGNAL(docPreviewClicked(int, Rcl::Doc, int)), + this, SLOT(startPreview(int, Rcl::Doc, int))); connect(this, SIGNAL(docSourceChanged(RefCntr)), reslist, SLOT(setDocSource(RefCntr))); diff --git a/src/qtgui/restable.cpp b/src/qtgui/restable.cpp index c99d37ad..fcc8eff9 100644 --- a/src/qtgui/restable.cpp +++ b/src/qtgui/restable.cpp @@ -248,6 +248,13 @@ void ResTable::init() m_pager = new ResTablePager(this); QSettings settings; splitter->restoreState(settings.value("resTableSplitterSizes").toByteArray()); + textBrowser->setReadOnly(TRUE); + textBrowser->setUndoRedoEnabled(FALSE); + textBrowser->setOpenLinks(FALSE); + // signals and slots connections + connect(textBrowser, SIGNAL(anchorClicked(const QUrl &)), + this, SLOT(linkWasClicked(const QUrl &))); + } void ResTable::saveSizeState() @@ -287,7 +294,7 @@ void ResTable::setDocSource(RefCntr nsource) if (m_model) m_model->setDocSource(nsource); if (m_pager) - m_pager->setDocSource(nsource); + m_pager->setDocSource(nsource, 0); if (textBrowser) textBrowser->clear(); } @@ -323,3 +330,32 @@ void ResTable::readDocSource() { m_model->setDocSource(m_model->m_source); } + +void ResTable::linkWasClicked(const QUrl &url) +{ + QString s = url.toString(); + const char *ascurl = s.toAscii(); + LOGDEB(("ResTable::linkWasClicked: [%s]\n", ascurl)); + + int i = atoi(ascurl+1) -1; + int what = ascurl[0]; + switch (what) { + case 'P': + case 'E': + { + Rcl::Doc doc; + if (!m_model->getdoc(i, doc)) { + LOGERR(("ResTable::linkWasClicked: can't get doc for %d\n", i)); + return; + } + if (what == 'P') + emit docPreviewClicked(i, doc, 0); + else + emit docEditClicked(doc); + } + break; + default: + LOGERR(("ResList::linkWasClicked: bad link [%s]\n", ascurl)); + break;// ?? + } +} diff --git a/src/qtgui/restable.h b/src/qtgui/restable.h index 1c329abf..10340c02 100644 --- a/src/qtgui/restable.h +++ b/src/qtgui/restable.h @@ -58,6 +58,7 @@ private: }; class ResTablePager; +class QUrl; class ResTable : public QWidget, public Ui::ResTable { @@ -84,6 +85,11 @@ public slots: virtual void resetSource(); virtual void readDocSource(); virtual void onSortDataChanged(DocSeqSortSpec); + virtual void linkWasClicked(const QUrl&); + +signals: + void docPreviewClicked(int, Rcl::Doc, int); + void docEditClicked(Rcl::Doc); friend class ResTablePager; private: diff --git a/src/query/reslistpager.h b/src/query/reslistpager.h index d43303ea..92493c3c 100644 --- a/src/query/reslistpager.h +++ b/src/query/reslistpager.h @@ -23,10 +23,10 @@ public: { m_hiliter = ptr; } - void setDocSource(RefCntr src) + void setDocSource(RefCntr src, int winfirst = -1) { m_pagesize = m_newpagesize; - m_winfirst = -1; + m_winfirst = winfirst; m_hasNext = false; m_docSource = src; m_respage.clear();