mirror of
https://github.com/moparisthebest/davmail
synced 2024-08-13 16:53:51 -04:00
437837e21c
git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1047 3d1905a2-6b24-0410-a738-b14d5a86fcbd
51 lines
1.3 KiB
Plaintext
51 lines
1.3 KiB
Plaintext
|
|
#import <jni.h>
|
|
#import <Foundation/Foundation.h>
|
|
#import <AppKit/AppKit.h>
|
|
|
|
#import "GrowlJavaCallback.h"
|
|
|
|
static JavaVM *cachedJVM = NULL;
|
|
@implementation GrowlJavaCallback
|
|
|
|
- (id) initWithCallback : (jobject) callback {
|
|
self = [super init];
|
|
|
|
_callbackObject = callback;
|
|
|
|
return self;
|
|
}
|
|
|
|
- (void) growlNotificationWasClicked : (NSNotification *)notification {
|
|
// get the callback id
|
|
NSDictionary *callbackDictionary = (NSDictionary *)[notification userInfo];
|
|
NSString *callbackId = (NSString *)[callbackDictionary objectForKey:@"ClickedContext"];
|
|
const char *nativeString;
|
|
jstring convertedString;
|
|
|
|
if (cachedJVM == NULL) {
|
|
jsize jvmCount;
|
|
jint jvmError = JNI_GetCreatedJavaVMs(&cachedJVM, 1, &jvmCount);
|
|
|
|
if (jvmError != 0) {
|
|
// TODO panic like crazy
|
|
NSLog(@"Error error error");
|
|
}
|
|
}
|
|
|
|
if (cachedJVM != NULL) {
|
|
JNIEnv *env = NULL;
|
|
cachedJVM->GetEnv((void **)&env, JNI_VERSION_1_2);
|
|
|
|
_callbackClass = env->GetObjectClass(_callbackObject);
|
|
_callbackMethod = env->GetMethodID(_callbackClass, "fireCallbacks", "(Ljava/lang/String;)V");
|
|
|
|
nativeString = [callbackId UTF8String];
|
|
convertedString = env->NewStringUTF(nativeString);
|
|
|
|
// fire off the callback
|
|
env->CallVoidMethod(_callbackObject, _callbackMethod, convertedString);
|
|
}
|
|
}
|
|
|
|
@end |