--- a
+++ b/src/qtgui/respopup.cpp
@@ -0,0 +1,105 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+#include "autoconfig.h"
+
+#include <qapplication.h>
+#include <qmenu.h>
+#include <qclipboard.h>
+
+#include "debuglog.h"
+#include "smallut.h"
+#include "recoll.h"
+#include "docseq.h"
+#include "respopup.h"
+
+namespace ResultPopup {
+
+QMenu *create(QWidget *me, int opts, RefCntr<DocSequence> source, Rcl::Doc& doc)
+{
+ QMenu *popup = new QMenu(me);
+
+ string apptag;
+ doc.getmeta(Rcl::Doc::keyapptg, &apptag);
+ popup->addAction(me->tr("&Preview"), me, SLOT(menuPreview()));
+ if (!theconfig->getMimeViewerDef(doc.mimetype, apptag, 0).empty()) {
+ popup->addAction(me->tr("&Open"), me, SLOT(menuEdit()));
+ }
+ popup->addAction(me->tr("Copy &File Name"), me, SLOT(menuCopyFN()));
+ popup->addAction(me->tr("Copy &URL"), me, SLOT(menuCopyURL()));
+ if (!doc.ipath.empty())
+ popup->addAction(me->tr("&Write to File"), me, SLOT(menuSaveToFile()));
+
+ Rcl::Doc pdoc;
+ if (source.isNotNull() && source->getEnclosing(doc, pdoc)) {
+ popup->addAction(me->tr("Preview P&arent document/folder"),
+ me, SLOT(menuPreviewParent()));
+ popup->addAction(me->tr("&Open Parent document/folder"),
+ me, SLOT(menuOpenParent()));
+ }
+ if (opts & showExpand)
+ popup->addAction(me->tr("Find &similar documents"),
+ me, SLOT(menuExpand()));
+ if (doc.haspages && source->snippetsCapable())
+ popup->addAction(me->tr("Open &Snippets window"),
+ me, SLOT(menuOpenSnippets()));
+
+ if (rcldb && rcldb->hasSubDocs(doc))
+ popup->addAction(me->tr("Show subdocuments / attachments"),
+ me, SLOT(menuShowSubDocs()));
+ return popup;
+}
+
+Rcl::Doc getParent(RefCntr<DocSequence> source,
+ Rcl::Doc& doc)
+{
+ Rcl::Doc pdoc;
+ if (source.isNull() || !source->getEnclosing(doc, pdoc)) {
+ // No parent doc: show enclosing folder with app configured for
+ // directories
+ pdoc.url = path_getfather(doc.url);
+ pdoc.meta[Rcl::Doc::keychildurl] = doc.url;
+ pdoc.meta[Rcl::Doc::keyapptg] = "parentopen";
+ pdoc.mimetype = "inode/directory";
+ }
+ return pdoc;
+}
+
+void copyFN(const Rcl::Doc &doc)
+{
+ // Our urls currently always begin with "file://"
+ //
+ // Problem: setText expects a QString. Passing a (const char*)
+ // as we used to do causes an implicit conversion from
+ // latin1. File are binary and the right approach would be no
+ // conversion, but it's probably better (less worse...) to
+ // make a "best effort" tentative and try to convert from the
+ // locale's charset than accept the default conversion.
+ QString qfn = QString::fromLocal8Bit(doc.url.c_str()+7);
+ QApplication::clipboard()->setText(qfn, QClipboard::Selection);
+ QApplication::clipboard()->setText(qfn, QClipboard::Clipboard);
+}
+
+void copyURL(const Rcl::Doc &doc)
+{
+ string url = url_encode(doc.url, 7);
+ QApplication::clipboard()->setText(url.c_str(),
+ QClipboard::Selection);
+ QApplication::clipboard()->setText(url.c_str(),
+ QClipboard::Clipboard);
+}
+
+}