diff --git a/CMakeLists.txt b/CMakeLists.txt index 34f6951..b5b38e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,18 @@ include(cmake/Rpm.cmake) find_package(Qt4 4.5.0 REQUIRED QtCore QtGui QtOpenGL QtSql QtNetwork QtXml) if(UNIX AND NOT APPLE) - find_package(Qt4 REQUIRED QtDbus) + option(ENABLE_DBUS "Enable D-Bus, MPRIS and native notifications. Required for DeviceKit and Wii remote support" ON) + if(ENABLE_DBUS) + find_package(Qt4 REQUIRED QtDbus) + set(HAVE_DBUS ON) + + option(ENABLE_DEVICEKIT "DeviceKit backend" ON) + if(ENABLE_DEVICEKIT) + set(HAVE_DEVICEKIT ON) + endif(ENABLE_DEVICEKIT) + + option(ENABLE_WIIMOTEDEV "Enable Wii remote support in Clementine" ON) + endif(ENABLE_DBUS) endif(UNIX AND NOT APPLE) find_package(Qt4 COMPONENTS Phonon QtWebKit) @@ -127,10 +138,6 @@ option(BUNDLE_PROJECTM_PRESETS "Install Clementine's own copies of libprojectm p option(ENABLE_SOUNDMENU "Add Clementine to the Gnome sound menu" ON) option(ENABLE_LIBLASTFM "Use liblastfm for fetching song info, scrobbling and radio streams" ON) -if(NOT APPLE AND NOT WIN32) - option(ENABLE_WIIMOTEDEV "Enable Wii remote support in Clementine" ON) -endif(NOT APPLE AND NOT WIN32) - if(ENABLE_LIBGPOD AND LIBGPOD_FOUND) set(HAVE_LIBGPOD ON) endif(ENABLE_LIBGPOD AND LIBGPOD_FOUND) @@ -252,10 +259,12 @@ add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") # Show a summary of what we have enabled +summary_add("devices: DeviceKit backend" HAVE_DEVICEKIT) summary_add("devices: iPod classic support" HAVE_LIBGPOD) summary_add("devices: iPod Touch, iPhone, iPad support" HAVE_IMOBILEDEVICE) summary_add("devices: MTP support" HAVE_LIBMTP) summary_add("devices: GIO backend" HAVE_GIO) +summary_add("D-Bus support" HAVE_DBUS) summary_add("Gnome sound menu integration" HAVE_LIBINDICATE) summary_add("Wiimote support" ENABLE_WIIMOTEDEV) summary_add("Visualisations" ENABLE_VISUALISATIONS) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 530ff23..e327701 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -557,7 +557,7 @@ else(APPLE) endif(APPLE) # DBUS and MPRIS - Linux specific -if(NOT APPLE AND NOT WIN32) +if(HAVE_DBUS) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dbus) # Hack to get it to generate interfaces without namespaces - required @@ -593,12 +593,14 @@ if(NOT APPLE AND NOT WIN32) dbus/notification) # DeviceKit DBUS interfaces + if(HAVE_DEVICEKIT) qt4_add_dbus_interface(SOURCES dbus/org.freedesktop.UDisks.xml dbus/udisks) qt4_add_dbus_interface(SOURCES dbus/org.freedesktop.UDisks.Device.xml dbus/udisksdevice) + endif(HAVE_DEVICEKIT) # MPRIS source list(APPEND SOURCES core/mpris.cpp core/mpris2.cpp) @@ -622,12 +624,14 @@ if(NOT APPLE AND NOT WIN32) endif(ENABLE_WIIMOTEDEV) # DeviceKit lister source + if(HAVE_DEVICEKIT) list(APPEND SOURCES devices/devicekitlister.cpp) list(APPEND HEADERS devices/devicekitlister.h) + endif(HAVE_DEVICEKIT) # Gnome Screensaver DBus interface list(APPEND SOURCES ui/dbusscreensaver.cpp) -endif(NOT APPLE AND NOT WIN32) +endif(HAVE_DBUS) # Libgpod device backend if(HAVE_LIBGPOD) diff --git a/src/core/player.cpp b/src/core/player.cpp index 2c0ba2d..3b26e95 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -39,7 +39,7 @@ # include "radio/lastfmservice.h" #endif -#ifdef Q_WS_X11 +#ifdef HAVE_DBUS # include "mpris.h" # include "mpris2.h" # include @@ -77,7 +77,7 @@ Player::Player(MainWindow* main_window, PlaylistManager* playlists, connect(playlists, SIGNAL(CurrentSongChanged(Song)), art_loader_, SLOT(LoadArt(Song))); -#ifdef Q_WS_X11 +#ifdef HAVE_DBUS // MPRIS DBus interface. qDBusRegisterMetaType(); qDBusRegisterMetaType(); diff --git a/src/core/player.h b/src/core/player.h index ef6999b..94b247b 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -42,7 +42,7 @@ namespace mpris { class ArtLoader; } -#ifdef Q_WS_X11 +#ifdef HAVE_DBUS # include QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image); const QDBusArgument& operator>> (const QDBusArgument& arg, QImage& image); diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp index a4fe94a..cc12c21 100644 --- a/src/devices/devicemanager.cpp +++ b/src/devices/devicemanager.cpp @@ -182,7 +182,7 @@ DeviceManager::DeviceManager(BackgroundThread* database, connected_devices_model_ = new DeviceStateFilterModel(this); connected_devices_model_->setSourceModel(this); -#ifdef Q_WS_X11 +#ifdef HAVE_DEVICEKIT AddLister(new DeviceKitLister); #endif #ifdef HAVE_GIO diff --git a/src/ui/screensaver.cpp b/src/ui/screensaver.cpp index a8353b1..b548ce1 100644 --- a/src/ui/screensaver.cpp +++ b/src/ui/screensaver.cpp @@ -19,7 +19,7 @@ #include -#ifdef Q_WS_X11 +#ifdef HAVE_DBUS #include "dbusscreensaver.h" #include #include @@ -42,7 +42,7 @@ Screensaver* Screensaver::screensaver_ = 0; Screensaver* Screensaver::GetScreensaver() { if (!screensaver_) { - #if defined(Q_WS_X11) + #if defined(HAVE_DBUS) if (QDBusConnection::sessionBus().interface()->isServiceRegistered(kGnomeService)) { screensaver_ = new DBusScreensaver(kGnomeService, kGnomePath, kGnomeInterface); } else if (QDBusConnection::sessionBus().interface()->isServiceRegistered(kKdeService)) { diff --git a/src/widgets/osd.cpp b/src/widgets/osd.cpp index 29dc2ff..f38379f 100644 --- a/src/widgets/osd.cpp +++ b/src/widgets/osd.cpp @@ -19,7 +19,7 @@ #include "osdpretty.h" #include "ui/systemtrayicon.h" -#ifdef Q_WS_X11 +#ifdef HAVE_DBUS # include "dbus/notification.h" #endif @@ -193,7 +193,7 @@ void OSD::ShowMessage(const QString& summary, } } -#ifndef Q_WS_X11 +#ifndef HAVE_DBUS void OSD::CallFinished(QDBusPendingCallWatcher*) {} #endif diff --git a/src/widgets/osd.h b/src/widgets/osd.h index 7e25d1a..e899c63 100644 --- a/src/widgets/osd.h +++ b/src/widgets/osd.h @@ -33,7 +33,7 @@ class SystemTrayIcon; class QDBusPendingCallWatcher; -#ifdef Q_WS_X11 +#ifdef HAVE_DBUS # include # include @@ -127,7 +127,7 @@ class OSD : public QObject { GrowlNotificationWrapper* wrapper_; #endif // Q_OS_DARWIN -#ifdef Q_WS_X11 +#ifdef HAVE_DBUS boost::scoped_ptr interface_; uint notification_id_; QDateTime last_notification_time_; diff --git a/src/widgets/osd_x11.cpp b/src/widgets/osd_x11.cpp index b87e0ad..d1d26d6 100644 --- a/src/widgets/osd_x11.cpp +++ b/src/widgets/osd_x11.cpp @@ -16,11 +16,13 @@ */ #include "osd.h" -#include "dbus/notification.h" -#include #include -#include + +#ifdef HAVE_DBUS + #include "dbus/notification.h" + #include + #include using boost::scoped_ptr; @@ -52,8 +54,10 @@ const QDBusArgument& operator>> (const QDBusArgument& arg, QImage& image) { Q_ASSERT(0); return arg; } +#endif void OSD::Init() { + #ifdef HAVE_DBUS interface_.reset(new OrgFreedesktopNotificationsInterface( OrgFreedesktopNotificationsInterface::staticInterfaceName(), "/org/freedesktop/Notifications", @@ -63,10 +67,15 @@ void OSD::Init() { } notification_id_ = 0; + #endif } bool OSD::SupportsNativeNotifications() { + #ifdef HAVE_DBUS return true; + #else + return false; + #endif } bool OSD::SupportsTrayPopups() { @@ -75,6 +84,7 @@ bool OSD::SupportsTrayPopups() { void OSD::ShowMessageNative(const QString& summary, const QString& message, const QString& icon, const QImage& image) { + #ifdef HAVE_DBUS QVariantMap hints; if (!image.isNull()) { hints["image_data"] = QVariant(image); @@ -101,8 +111,12 @@ void OSD::ShowMessageNative(const QString& summary, const QString& message, QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply, this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(CallFinished(QDBusPendingCallWatcher*))); + #else + qWarning() << __PRETTY_FUNCTION__ << ": NOT IMPLEMENTED"; + #endif } +#ifdef HAVE_DBUS void OSD::CallFinished(QDBusPendingCallWatcher* watcher) { scoped_ptr w(watcher); @@ -118,3 +132,4 @@ void OSD::CallFinished(QDBusPendingCallWatcher* watcher) { last_notification_time_ = QDateTime::currentDateTime(); } } +#endif - 1.6.1