diff options
author | p2k <patrick.p2k.schneider@gmail.com> | 2012-03-12 14:20:55 +0100 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2012-03-20 12:54:51 -0400 |
commit | 3f1bb1ac788cd8a9b39a06f4c8fa48b466dda1d2 (patch) | |
tree | fcf208e00a99ffb50b81e3a29731352d6dd3e69f /src | |
parent | 9aa459b2947d2db3f09a6558fee80a444e1220bb (diff) |
Proper support for Growl 1.3 notifications
Diffstat (limited to 'src')
-rw-r--r-- | src/qt/notificator.cpp | 15 | ||||
-rw-r--r-- | src/qt/notificator.h | 3 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/qt/notificator.cpp b/src/qt/notificator.cpp index a2314caa47..e668079536 100644 --- a/src/qt/notificator.cpp +++ b/src/qt/notificator.cpp @@ -52,10 +52,13 @@ Notificator::Notificator(const QString &programName, QSystemTrayIcon *trayicon, OSStatus status = LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator, CFSTR("growlTicket"), kLSRolesAll, 0, &cfurl); if (status != kLSApplicationNotFoundErr) { CFBundleRef bundle = CFBundleCreate(0, cfurl); - CFRelease(cfurl); if (CFStringCompare(CFBundleGetIdentifier(bundle), CFSTR("com.Growl.GrowlHelperApp"), kCFCompareCaseInsensitive | kCFCompareBackwards) == kCFCompareEqualTo) { - mode = Growl; + if (CFStringHasSuffix(CFURLGetString(cfurl), CFSTR("/Growl.app/"))) + mode = Growl13; + else + mode = Growl12; } + CFRelease(cfurl); CFRelease(bundle); } #endif @@ -226,7 +229,7 @@ void Notificator::notifySystray(Class cls, const QString &title, const QString & void Notificator::notifyGrowl(Class cls, const QString &title, const QString &text, const QIcon &icon) { const QString script( - "tell application \"GrowlHelperApp\"\n" + "tell application \"%5\"\n" " set the allNotificationsList to {\"Notification\"}\n" // -- Make a list of all the notification types (all) " set the enabledNotificationsList to {\"Notification\"}\n" // -- Make a list of the notifications (enabled) " register as application \"%1\" all notifications allNotificationsList default notifications enabledNotificationsList\n" // -- Register our script with Growl @@ -265,7 +268,8 @@ void Notificator::notifyGrowl(Class cls, const QString &title, const QString &te QString quotedTitle(title), quotedText(text); quotedTitle.replace("\\", "\\\\").replace("\"", "\\"); quotedText.replace("\\", "\\\\").replace("\"", "\\"); - qt_mac_execute_apple_script(script.arg(notificationApp, quotedTitle, quotedText, notificationIcon), 0); + QString growlApp(this->mode == Notificator::Growl13 ? "Growl" : "GrowlHelperApp"); + qt_mac_execute_apple_script(script.arg(notificationApp, quotedTitle, quotedText, notificationIcon, growlApp), 0); } #endif @@ -282,7 +286,8 @@ void Notificator::notify(Class cls, const QString &title, const QString &text, c notifySystray(cls, title, text, icon, millisTimeout); break; #ifdef Q_WS_MAC - case Growl: + case Growl12: + case Growl13: notifyGrowl(cls, title, text, icon); break; #endif diff --git a/src/qt/notificator.h b/src/qt/notificator.h index 2d83013a7f..0271c26f48 100644 --- a/src/qt/notificator.h +++ b/src/qt/notificator.h @@ -49,7 +49,8 @@ private: None, /**< Ignore informational notifications, and show a modal pop-up dialog for Critical notifications. */ Freedesktop, /**< Use DBus org.freedesktop.Notifications */ QSystemTray, /**< Use QSystemTray::showMessage */ - Growl /**< Use the Growl notification system (Mac only) */ + Growl12, /**< Use the Growl 1.2 notification system (Mac only) */ + Growl13 /**< Use the Growl 1.3 notification system (Mac only) */ }; QString programName; Mode mode; |