From e25c84c0463f5a43d3b2bb836850f5c5963a2846 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Fri, 30 Sep 2022 23:58:46 -0400 Subject: Add context menu for the image view. Shortcuts are currently broken. Will be fixed in future commits. --- qdeduper/utilities.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 qdeduper/utilities.cpp (limited to 'qdeduper/utilities.cpp') diff --git a/qdeduper/utilities.cpp b/qdeduper/utilities.cpp new file mode 100644 index 0000000..a2af953 --- /dev/null +++ b/qdeduper/utilities.cpp @@ -0,0 +1,65 @@ +#include "utilities.hpp" + +#include +#include +#include +#include +#ifdef HAS_QTDBUS +#include +#include +#endif + +namespace utilities +{ + +QString fspath_to_qstring(const fs::path &p) +{ + return fsstr_to_qstring(p.native()); +} + +QString fsstr_to_qstring(const fs::path::string_type &s) +{ +#if PATH_VALSIZE == 2 //the degenerate platform + return QString::fromStdWString(s); +#else + return QString::fromStdString(s); +#endif +} + +fs::path qstring_to_path(const QString &s) +{ +#if PATH_VALSIZE == 2 //the degenerate platform + return fs::path(s.toStdWString()); +#else + return fs::path(s.toStdString()); +#endif +} + +void open_containing_folder(const fs::path &path) +{ +#ifdef _WIN32 + QProcess::startDetached("explorer", QStringList() << "/select," << QDir::toNativeSeparators(fileInfo.absoluteFilePath())); +#else +#ifdef HAS_QTDBUS + auto conn = QDBusConnection::sessionBus(); + auto call = QDBusMessage::createMethodCall( + "org.freedesktop.FileManager1", + "/org/freedesktop/FileManager1", + "org.freedesktop.FileManager1", + "ShowItems" + ); + QVariantList args = { + QStringList({fspath_to_qstring(path)}), + QString() + }; + call.setArguments(args); + auto resp = conn.call(call, QDBus::CallMode::Block, 500); + if (resp.type() != QDBusMessage::MessageType::ErrorMessage) + return; +#endif +#endif + auto par = (path / "../").lexically_normal(); + QDesktopServices::openUrl(QUrl::fromLocalFile(fspath_to_qstring(par))); +} + +}; -- cgit v1.2.3