aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorp2k <patrick.p2k.schneider@gmail.com>2012-03-12 14:20:55 +0100
committerGavin Andresen <gavinandresen@gmail.com>2012-03-20 12:54:51 -0400
commit3f1bb1ac788cd8a9b39a06f4c8fa48b466dda1d2 (patch)
treefcf208e00a99ffb50b81e3a29731352d6dd3e69f /src
parent9aa459b2947d2db3f09a6558fee80a444e1220bb (diff)
Proper support for Growl 1.3 notifications
Diffstat (limited to 'src')
-rw-r--r--src/qt/notificator.cpp15
-rw-r--r--src/qt/notificator.h3
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;