Remove widgets lib dependency on platformsupport.
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>
Wed, 6 Jun 2012 13:01:59 +0000 (15:01 +0200)
committerQt by Nokia <qt-info@nokia.com>
Fri, 8 Jun 2012 02:47:59 +0000 (04:47 +0200)
Instead of the dependency add the one needed function as virtual to
the QPlatformServices in QtGui.

Change-Id: Ia4455f5ac88ec4d0480bd81635cebba62bbd8ac5
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
src/gui/kernel/qplatformservices.h
src/gui/kernel/qplatformservices_qpa.cpp
src/platformsupport/services/genericunix/qgenericunixservices.cpp
src/platformsupport/services/genericunix/qgenericunixservices_p.h
src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
src/src.pro
src/widgets/itemviews/qfileiconprovider.cpp

index ab8211f..dd4c444 100644 (file)
@@ -66,6 +66,8 @@ public:
 
     virtual bool openUrl(const QUrl &url);
     virtual bool openDocument(const QUrl &url);
+
+    virtual QByteArray desktopEnvironment() const;
 };
 
 QT_END_NAMESPACE
index dac9e64..9a1ea40 100644 (file)
@@ -71,4 +71,14 @@ bool QPlatformServices::openDocument(const QUrl &url)
     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
index 34f46e4..168ecf8 100644 (file)
@@ -52,14 +52,14 @@ QT_BEGIN_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)
@@ -68,7 +68,7 @@ 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)
 {
@@ -86,19 +86,15 @@ static inline bool detectWebBrowser(QGenericUnixServices::DesktopEnvironment des
             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)
@@ -122,9 +118,9 @@ static inline bool launch(const QString &launcher, const QUrl &url)
     return ok;
 }
 
-QGenericUnixServices::DesktopEnvironment QGenericUnixServices::desktopEnvironment()
+QByteArray QGenericUnixServices::desktopEnvironment() const
 {
-    static const DesktopEnvironment result = detectDesktopEnvironment();
+    static const QByteArray result = detectDesktopEnvironment();
     return result;
 }
 
index b0dbccc..098112a 100644 (file)
@@ -52,15 +52,9 @@ QT_BEGIN_NAMESPACE
 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);
index 5c57b0c..d4826fb 100644 (file)
@@ -52,6 +52,9 @@
 #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
 
@@ -378,15 +381,10 @@ QStringList QGenericUnixTheme::themeNames()
 {
     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")
index 6ecdc10..e46dc2e 100644 (file)
@@ -54,7 +54,7 @@ src_concurrent.target = sub-concurrent
    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
index b7d317a..074a3ec 100644 (file)
@@ -47,6 +47,9 @@
 #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
@@ -60,7 +63,6 @@
 
 #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
@@ -400,7 +402,7 @@ QIcon QFileIconProvider::icon(const QFileInfo &info) const
     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;