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 @@
+
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();