virtual bool openUrl(const QUrl &url);
virtual bool openDocument(const QUrl &url);
+
+ virtual QByteArray desktopEnvironment() const;
};
QT_END_NAMESPACE
return false;
}
+/*!
+ * \brief QPlatformServices::desktopEnvironment returns the active desktop environment.
+ * \return On Unix this function returns KDE, GNOME or UNKNOWN.
+ */
+QByteArray QPlatformServices::desktopEnvironment() const
+{
+ return QByteArray("UNKNOWN");
+}
+
+
QT_END_NAMESPACE
enum { debug = 0 };
-static inline QGenericUnixServices::DesktopEnvironment detectDesktopEnvironment()
+static inline QByteArray detectDesktopEnvironment()
{
if (!qgetenv("KDE_FULL_SESSION").isEmpty())
- return QGenericUnixServices::DE_KDE;
+ return QByteArray("KDE");
// GNOME_DESKTOP_SESSION_ID is deprecated for some reason, but still check it
if (qgetenv("DESKTOP_SESSION") == "gnome" || !qgetenv("GNOME_DESKTOP_SESSION_ID").isEmpty())
- return QGenericUnixServices::DE_GNOME;
- return QGenericUnixServices::DE_UNKNOWN;
+ return QByteArray("GNOME");
+ return QByteArray("UNKNOWN");
}
static inline bool checkExecutable(const QString &candidate, QString *result)
return !result->isEmpty();
}
-static inline bool detectWebBrowser(QGenericUnixServices::DesktopEnvironment desktop,
+static inline bool detectWebBrowser(QByteArray desktop,
bool checkBrowserVariable,
QString *browser)
{
return true;
}
- switch (desktop) {
- case QGenericUnixServices::DE_UNKNOWN:
- break;
- case QGenericUnixServices::DE_KDE:
+ if (desktop == QByteArray("KDE")) {
// Konqueror launcher
if (checkExecutable(QStringLiteral("kfmclient"), browser)) {
browser->append(QStringLiteral(" exec"));
return true;
}
- case QGenericUnixServices::DE_GNOME:
+ } else if (desktop == QByteArray("GNOME")) {
if (checkExecutable(QStringLiteral("gnome-open"), browser))
return true;
- break;
}
for (size_t i = 0; i < sizeof(browsers)/sizeof(char *); ++i)
return ok;
}
-QGenericUnixServices::DesktopEnvironment QGenericUnixServices::desktopEnvironment()
+QByteArray QGenericUnixServices::desktopEnvironment() const
{
- static const DesktopEnvironment result = detectDesktopEnvironment();
+ static const QByteArray result = detectDesktopEnvironment();
return result;
}
class QGenericUnixServices : public QPlatformServices
{
public:
- enum DesktopEnvironment {
- DE_UNKNOWN,
- DE_KDE,
- DE_GNOME
- };
-
QGenericUnixServices() {}
- static DesktopEnvironment desktopEnvironment();
+ QByteArray desktopEnvironment() const;
virtual bool openUrl(const QUrl &url);
virtual bool openDocument(const QUrl &url);
#include <QtCore/QSettings>
#include <QtCore/QVariant>
#include <QtCore/QStringList>
+#include <private/qguiapplication_p.h>
+#include <qpa/qplatformintegration.h>
+#include <qpa/qplatformservices.h>
QT_BEGIN_NAMESPACE
{
QStringList result;
if (QGuiApplication::desktopSettingsAware()) {
- switch (QGenericUnixServices::desktopEnvironment()) {
- case QGenericUnixServices::DE_KDE:
+ if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("KDE")) {
result.push_back(QLatin1String(QKdeTheme::name));
- break;
- case QGenericUnixServices::DE_GNOME:
+ } else if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("GNOME")) {
result.push_back(QLatin1String(QGnomeTheme::name));
- break;
- case QGenericUnixServices::DE_UNKNOWN:
- break;
}
const QByteArray session = qgetenv("DESKTOP_SESSION");
if (!session.isEmpty() && session != "default")
src_gui.depends = src_corelib
src_printsupport.depends = src_corelib src_gui src_widgets
src_platformsupport.depends = src_corelib src_gui src_network
- src_widgets.depends = src_corelib src_gui src_tools_uic src_platformsupport
+ src_widgets.depends = src_corelib src_gui src_tools_uic
src_xml.depends = src_corelib
src_concurrent.depends = src_corelib
src_dbus.depends = src_corelib
#include <qdir.h>
#include <qpixmapcache.h>
#include <private/qfunctions_p.h>
+#include <private/qguiapplication_p.h>
+#include <qpa/qplatformintegration.h>
+#include <qpa/qplatformservices.h>
#if defined(Q_OS_WIN)
# define _WIN32_IE 0x0500
#if defined(Q_OS_UNIX) && !defined(QT_NO_STYLE_GTK)
# include <private/qgtkstyle_p.h>
-# include <QtPlatformSupport/private/qgenericunixservices_p.h>
#endif
#ifndef SHGFI_ADDOVERLAYS
Q_D(const QFileIconProvider);
#if defined(Q_OS_UNIX) && !defined(QT_NO_STYLE_GTK)
- if (QGenericUnixServices::desktopEnvironment() == QGenericUnixServices::DE_GNOME) {
+ if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("GNOME")) {
QIcon gtkIcon = QGtkStylePrivate::getFilesystemIcon(info);
if (!gtkIcon.isNull())
return gtkIcon;