diff options
Diffstat (limited to 'Swiften')
-rw-r--r-- | Swiften/Notifier/GrowlNotifier.cpp | 97 | ||||
-rw-r--r-- | Swiften/Notifier/GrowlNotifier.h | 34 | ||||
-rw-r--r-- | Swiften/Notifier/Notifier.cpp | 14 | ||||
-rw-r--r-- | Swiften/Notifier/Notifier.h | 30 | ||||
-rw-r--r-- | Swiften/SConscript | 2 |
5 files changed, 0 insertions, 177 deletions
diff --git a/Swiften/Notifier/GrowlNotifier.cpp b/Swiften/Notifier/GrowlNotifier.cpp deleted file mode 100644 index 8f92b04..0000000 --- a/Swiften/Notifier/GrowlNotifier.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -// FIXME: Is it safe to pass boost::function<void()> by raw values? -// FIXME: Should we release the strings created in the constructor? - -#include <cassert> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Notifier/GrowlNotifier.h" - -#pragma GCC diagnostic ignored "-Wold-style-cast" - -namespace { - struct Context { - Context() {} - Context(const boost::function<void()>& callback) : callback(callback) {} - - boost::function<void()> callback; - }; - - void notificationClicked(CFPropertyListRef growlContext) { - Context context; - - CFDataRef growlContextData = (CFDataRef) CFArrayGetValueAtIndex((CFArrayRef) growlContext, 0); - assert(CFDataGetLength(growlContextData) == sizeof(Context)); - CFDataGetBytes(growlContextData, CFRangeMake(0, CFDataGetLength(growlContextData)), (UInt8*) &context); - - context.callback(); - } - - void notificationTimedout(CFPropertyListRef) { - } -} - -namespace Swift { - -GrowlNotifier::GrowlNotifier(const String& name) { - // All notifications - CFMutableArrayRef allNotifications = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks); - CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactAvailable))); - CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactUnavailable))); - CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactStatusChange))); - CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(IncomingMessage))); - - // Default Notifications - CFMutableArrayRef defaultNotifications = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks); - CFArrayAppendValue(defaultNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactAvailable))); - CFArrayAppendValue(defaultNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(IncomingMessage))); - - // Initialize delegate - InitGrowlDelegate(&delegate_); - delegate_.applicationName = SWIFTEN_STRING_TO_CFSTRING(name); - CFTypeRef keys[] = { GROWL_NOTIFICATIONS_ALL, GROWL_NOTIFICATIONS_DEFAULT }; - CFTypeRef values[] = { allNotifications, defaultNotifications }; - delegate_.registrationDictionary = CFDictionaryCreate(kCFAllocatorDefault, keys, values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - delegate_.growlNotificationWasClicked = ¬ificationClicked; - delegate_.growlNotificationTimedOut = ¬ificationTimedout; - Growl_SetDelegate(&delegate_); -} - -void GrowlNotifier::showMessage(Type type, const String& subject, const String& description, const ByteArray& picture, boost::function<void()> callback) { - CFStringRef cfSubject = SWIFTEN_STRING_TO_CFSTRING(subject); - CFStringRef cfDescription = SWIFTEN_STRING_TO_CFSTRING(description); - CFStringRef cfName = SWIFTEN_STRING_TO_CFSTRING(typeToString(type)); - CFDataRef cfIcon = CFDataCreate( NULL, (UInt8*) picture.getData(), picture.getSize()); - - Context context(callback); - CFDataRef cfContextData[1]; - cfContextData[0] = CFDataCreate(kCFAllocatorDefault, (const UInt8*) &context, sizeof(Context)); - CFArrayRef cfContext = CFArrayCreate( kCFAllocatorDefault, (const void **) cfContextData, 1, &kCFTypeArrayCallBacks ); - CFRelease(cfContextData[0]); - - Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext(cfSubject, cfDescription, cfName, cfIcon, 0, false, cfContext); - - CFRelease(cfContext); - CFRelease(cfIcon); - CFRelease(cfName); - CFRelease(cfDescription); - CFRelease(cfSubject); -} - -String GrowlNotifier::typeToString(Type type) { - switch (type) { - case ContactAvailable: return "Contact Becomes Available"; - case ContactUnavailable: return "Contact Becomes Unavailable"; - case ContactStatusChange: return "Contact Changes Status"; - case IncomingMessage: return "Incoming Message"; - } - assert(false); - return ""; -} - -} diff --git a/Swiften/Notifier/GrowlNotifier.h b/Swiften/Notifier/GrowlNotifier.h deleted file mode 100644 index 5743fe5..0000000 --- a/Swiften/Notifier/GrowlNotifier.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#pragma once - -#include <CoreFoundation/CoreFoundation.h> -#include <Growl/Growl.h> - -#include "Swiften/Notifier/Notifier.h" - -namespace Swift { - /** - * Preconditions for using growlnotifier: - * - Must be part a bundle. - * - The Carbon/Cocoa application loop must be running (e.g. through QApplication) - * such that notifications are coming through. - * TODO: Find out what the easiest way is to do this without a QApplication. - */ - class GrowlNotifier : public Notifier { - public: - GrowlNotifier(const String& name); - - virtual void showMessage(Type type, const String& subject, const String& description, const ByteArray& picture, boost::function<void()> callback); - - private: - String typeToString(Type type); - - private: - Growl_Delegate delegate_; - }; -} diff --git a/Swiften/Notifier/Notifier.cpp b/Swiften/Notifier/Notifier.cpp deleted file mode 100644 index 44e7b32..0000000 --- a/Swiften/Notifier/Notifier.cpp +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#include "Swiften/Notifier/Notifier.h" - -namespace Swift { - -Notifier::~Notifier() { -} - -} diff --git a/Swiften/Notifier/Notifier.h b/Swiften/Notifier/Notifier.h deleted file mode 100644 index 7eb09f4..0000000 --- a/Swiften/Notifier/Notifier.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#pragma once - -#include <boost/function.hpp> - -#include "Swiften/Base/String.h" - -namespace Swift { - class Notifier { - public: - virtual ~Notifier(); - - enum Type { ContactAvailable, ContactUnavailable, ContactStatusChange, IncomingMessage }; - - /** - * Picture is a PNG image. - */ - virtual void showMessage( - Type type, - const String& subject, - const String& description, - const ByteArray& picture, - boost::function<void()> callback) = 0; - }; -} diff --git a/Swiften/SConscript b/Swiften/SConscript index 7689ffc..11c976e 100644 --- a/Swiften/SConscript +++ b/Swiften/SConscript @@ -43,7 +43,6 @@ if env["SCONS_STAGE"] == "build" : "MUC/MUCOccupant.cpp", "MUC/MUCRegistry.cpp", "MUC/MUCBookmarkManager.cpp", - "Notifier/Notifier.cpp", "Presence/PresenceOracle.cpp", "Presence/PresenceSender.cpp", "Queries/IQChannel.cpp", @@ -107,7 +106,6 @@ if env["SCONS_STAGE"] == "build" : "StringCodecs/PBKDF2.cpp", "StringCodecs/Hexify.cpp", ] -# "Notifier/GrowlNotifier.cpp", if myenv.get("HAVE_OPENSSL", 0) : sources += ["TLS/OpenSSL/OpenSSLContext.cpp"] |