#include "./desktoputils.h" #include #include #ifdef Q_OS_WIN32 #include #endif namespace QtUtilities { /*! * \brief Shows the specified file or directory using the default file browser. * \remarks * - The specified \a path must *not* be specified as URL. (The conversion to a URL suitable for * QDesktopServices::openUrl() is the whole purpose of this function). * - The Qt documentation suggests to use * `QDesktopServices::openUrl(QUrl("file:///C:/Documents and Settings/All Users/Desktop", QUrl::TolerantMode));` * under Windows. However, that does not work if the path contains a '#'. It is also better to use * QUrl::DecodedMode to prevent QUrl from interpreting any of the paths characters in a special way. */ bool openLocalFileOrDir(const QString &path) { QUrl url(QStringLiteral("file://")); #ifdef Q_OS_WIN32 // replace backslashes with regular slashes QString tmp(path); tmp.replace(QChar('\\'), QChar('/')); // add a slash before the drive letter of an absolute path if (QFileInfo(path).isAbsolute()) { tmp = QStringLiteral("/") + tmp; } url.setPath(tmp, QUrl::DecodedMode); #else url.setPath(path, QUrl::DecodedMode); #endif return QDesktopServices::openUrl(url); } /*! * \brief Returns whether \a palette is dark. * \remarks Just call with no argument to check for the default palette to see whether "dark mode" is enabled. */ bool isPaletteDark(const QPalette &palette) { return palette.color(QPalette::WindowText).lightness() > palette.color(QPalette::Window).lightness(); } } // namespace QtUtilities