2015-02-07 20:23:09 +03:00
|
|
|
#include <QString>
|
|
|
|
#include <QDebug>
|
|
|
|
#import <Cocoa/Cocoa.h>
|
|
|
|
|
2016-01-05 15:32:46 +03:00
|
|
|
@interface NotificationCenterDelegate : NSObject
|
|
|
|
@end
|
|
|
|
@implementation NotificationCenterDelegate
|
|
|
|
// Always show, even if app is active at the moment.
|
|
|
|
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center
|
|
|
|
shouldPresentNotification:(NSUserNotification *)notification
|
|
|
|
{
|
|
|
|
Q_UNUSED(center);
|
|
|
|
Q_UNUSED(notification);
|
|
|
|
return YES;
|
|
|
|
}
|
|
|
|
@end
|
|
|
|
|
2015-02-07 20:23:09 +03:00
|
|
|
namespace OCC {
|
|
|
|
|
|
|
|
bool canOsXSendUserNotification()
|
|
|
|
{
|
|
|
|
return NSClassFromString(@"NSUserNotificationCenter") != nil;
|
|
|
|
}
|
|
|
|
|
|
|
|
void sendOsXUserNotification(const QString &title, const QString &message)
|
|
|
|
{
|
|
|
|
qDebug() << Q_FUNC_INFO << title << message;
|
|
|
|
Class cuserNotificationCenter = NSClassFromString(@"NSUserNotificationCenter");
|
|
|
|
id userNotificationCenter = [cuserNotificationCenter defaultUserNotificationCenter];
|
|
|
|
|
2016-01-05 15:32:46 +03:00
|
|
|
static dispatch_once_t once;
|
|
|
|
dispatch_once(&once, ^{
|
|
|
|
id delegate = [[NotificationCenterDelegate alloc] init];
|
|
|
|
[userNotificationCenter setDelegate:delegate];
|
|
|
|
});
|
|
|
|
|
2015-02-07 20:23:09 +03:00
|
|
|
Class cuserNotification = NSClassFromString(@"NSUserNotification");
|
|
|
|
id notification = [[cuserNotification alloc] init];
|
|
|
|
[notification setTitle:[NSString stringWithUTF8String:title.toUtf8().data()]];
|
|
|
|
[notification setInformativeText:[NSString stringWithUTF8String:message.toUtf8().data()]];
|
|
|
|
|
|
|
|
[userNotificationCenter deliverNotification:notification];
|
|
|
|
[notification release];
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|