From 91efa0e2d452a19eb9704b2daf14ac800e2fcd91 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Wed, 25 Nov 2009 20:32:18 +0000 Subject: [PATCH] - COSMETIC: Make use of libnotify if available for system notifications (Now default on Ubuntu) instead of the Qt notification system --- Changelog | 1 + configure | 53 +++++++++++++++++++++++++++++++++++++++++++++++ qbittorrent.qc | 2 ++ qcm/libnotify.qcm | 41 ++++++++++++++++++++++++++++++++++++ src/GUI.cpp | 18 ++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 qcm/libnotify.qcm diff --git a/Changelog b/Changelog index f6efb4cc2..a5be9359a 100644 --- a/Changelog +++ b/Changelog @@ -47,6 +47,7 @@ - COSMETIC: Improved status bar layout spacing - COSMETIC: Display speeds with more user friendly units instead of always using KiB/s - COSMETIC: New torrent status icons by Mateusz Tolola + - COSMETIC: Make use of libnotify if available for system notifications (Ubuntu, ...) * Thu Sep 3 2009 - Christophe Dumez - v1.5.0 - FEATURE: Added Magnet URI support diff --git a/configure b/configure index a1402fcf0..98c8a3f5b 100755 --- a/configure +++ b/configure @@ -19,6 +19,7 @@ Main options: Dependency options: --with-libboost-inc=[path] Path to libboost include files + --disable-libnotify Disable use of libnotify EOT } @@ -140,6 +141,11 @@ while [ $# -gt 0 ]; do shift ;; + --disable-libnotify) + QC_DISABLE_libnotify="Y" + shift + ;; + --verbose) QC_VERBOSE="Y" shift @@ -162,6 +168,7 @@ echo BINDIR=$BINDIR echo DATADIR=$DATADIR echo EX_QTDIR=$EX_QTDIR echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC +echo QC_DISABLE_libnotify=$QC_DISABLE_libnotify echo fi @@ -370,6 +377,48 @@ public: return true; } }; +#line 1 "libnotify.qcm" +/* +-----BEGIN QCMOD----- +name: libnotify +-----END QCMOD----- +*/ +// see Conf::findPkgConfig +class qc_libnotify : public ConfObj +{ +public: + qc_libnotify(Conf *c) : ConfObj(c) {} + QString name() const { return "libnotify >= 0.4.2 (optional)"; } + QString shortname() const { return "libnotify"; } + bool exec(){ + QStringList incs; + QString req_ver = "0.4.2"; + QString version, libs, other; + VersionMode mode = VersionMin; + if(conf->findPkgConfig("libnotify", mode, req_ver, &version, &incs, &libs, &other)) { + conf->addDefine("WITH_LIBNOTIFY"); + for(int n = 0; n < incs.count(); ++n) + conf->addIncludePath(incs[n]); + if(!libs.isEmpty()) + conf->addLib(libs); + QStringList incs2; + QString req_ver2 = "2.0"; + QString version2, libs2, other2; + if(conf->findPkgConfig("glib-2.0", mode, req_ver2, &version2, &incs2, &libs2, &other2)) { + for(int n = 0; n < incs2.count(); ++n) + conf->addIncludePath(incs2[n]); + if(!libs2.isEmpty()) + conf->addLib(libs2); + } else { + return false; + } + } else { + return false; + } + + return true; + } +}; EOT cat >$1/modules_new.cpp <$1/modules_new.cpp <required = true; o->disabled = false; + o = new qc_libnotify(conf); + o->required = false; + o->disabled = false; EOT cat >$1/conf4.h < + + diff --git a/qcm/libnotify.qcm b/qcm/libnotify.qcm new file mode 100644 index 000000000..cc55aa4b2 --- /dev/null +++ b/qcm/libnotify.qcm @@ -0,0 +1,41 @@ +/* +-----BEGIN QCMOD----- +name: libnotify +-----END QCMOD----- +*/ +// see Conf::findPkgConfig +class qc_libnotify : public ConfObj +{ +public: + qc_libnotify(Conf *c) : ConfObj(c) {} + QString name() const { return "libnotify >= 0.4.2 (optional)"; } + QString shortname() const { return "libnotify"; } + bool exec(){ + QStringList incs; + QString req_ver = "0.4.2"; + QString version, libs, other; + VersionMode mode = VersionMin; + if(conf->findPkgConfig("libnotify", mode, req_ver, &version, &incs, &libs, &other)) { + conf->addDefine("WITH_LIBNOTIFY"); + for(int n = 0; n < incs.count(); ++n) + conf->addIncludePath(incs[n]); + if(!libs.isEmpty()) + conf->addLib(libs); + QStringList incs2; + QString req_ver2 = "2.0"; + QString version2, libs2, other2; + if(conf->findPkgConfig("glib-2.0", mode, req_ver2, &version2, &incs2, &libs2, &other2)) { + for(int n = 0; n < incs2.count(); ++n) + conf->addIncludePath(incs2[n]); + if(!libs2.isEmpty()) + conf->addLib(libs2); + } else { + return false; + } + } else { + return false; + } + + return true; + } +}; diff --git a/src/GUI.cpp b/src/GUI.cpp index 7f549e14d..8d0aa21f4 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -27,6 +27,12 @@ * * Contact : chris@qbittorrent.org */ +#ifdef WITH_LIBNOTIFY +#include +#include +#include +#endif + #include #include #include @@ -798,7 +804,19 @@ void GUI::updateGUI() { void GUI::showNotificationBaloon(QString title, QString msg) const { QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); if(systrayIcon && settings.value(QString::fromUtf8("Preferences/General/NotificationBaloons"), true).toBool()) { +#ifdef WITH_LIBNOTIFY + if (notify_init ("summary-body")) { + NotifyNotification* notification; + notification = notify_notification_new (title.toLocal8Bit().data(), msg.toLocal8Bit().data(), 0, 0); + GError* error = 0; + gboolean success = notify_notification_show (notification, &error); + notify_uninit (); + if(success) + return; + } +#else systrayIcon->showMessage(title, msg, QSystemTrayIcon::Information, TIME_TRAY_BALLOON); +#endif } }