diff options
Diffstat (limited to 'Swift/QtUI/CocoaUIHelpers.mm')
-rw-r--r-- | Swift/QtUI/CocoaUIHelpers.mm | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/Swift/QtUI/CocoaUIHelpers.mm b/Swift/QtUI/CocoaUIHelpers.mm index 3cb62f3..1f4ffc1 100644 --- a/Swift/QtUI/CocoaUIHelpers.mm +++ b/Swift/QtUI/CocoaUIHelpers.mm @@ -4,9 +4,16 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * Copyright (c) 2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ + #include "CocoaUIHelpers.h" -#include <boost/shared_ptr.hpp> +#include <memory> + #include <boost/type_traits.hpp> #include <Cocoa/Cocoa.h> @@ -14,30 +21,31 @@ #include <Security/Security.h> #include <SecurityInterface/SFCertificatePanel.h> -#include <Swiften/Base/foreach.h> - #pragma GCC diagnostic ignored "-Wold-style-cast" namespace Swift { void CocoaUIHelpers::displayCertificateChainAsSheet(QWidget* parent, const std::vector<Certificate::ref>& chain) { - NSWindow* parentWindow = [((NSView*)parent->winId()) window]; - NSMutableArray* certificates = [[NSMutableArray alloc] init]; - foreach(Certificate::ref cert, chain) { - // convert chain to SecCertificateRef - ByteArray certAsDER = cert->toDER(); - boost::shared_ptr<boost::remove_pointer<CFDataRef>::type> certData(CFDataCreate(NULL, certAsDER.data(), certAsDER.size()), CFRelease); - boost::shared_ptr<OpaqueSecCertificateRef> macCert(SecCertificateCreateWithData(NULL, certData.get()), CFRelease); - - // add to NSMutable array - [certificates addObject: (id)macCert.get()]; - } - - - SFCertificatePanel* panel = [[SFCertificatePanel alloc] init]; - //[panel setPolicies:(id)policies.get()]; - [panel beginSheetForWindow:parentWindow modalDelegate:nil didEndSelector:NULL contextInfo:NULL certificates:certificates showGroup:YES]; - [certificates release]; + NSWindow* parentWindow = [((NSView*)parent->winId()) window]; + NSMutableArray* certificates = [[NSMutableArray alloc] init]; + for (auto&& cert : chain) { + // convert chain to SecCertificateRef + ByteArray certAsDER = cert->toDER(); + std::shared_ptr<boost::remove_pointer<CFDataRef>::type> certData(CFDataCreate(nullptr, certAsDER.data(), certAsDER.size()), CFRelease); + std::shared_ptr<OpaqueSecCertificateRef> macCert(SecCertificateCreateWithData(nullptr, certData.get()), CFRelease); + + // add to NSMutable array + [certificates addObject: (id)macCert.get()]; + } + + SFCertificatePanel* panel = [[SFCertificatePanel alloc] init]; + //[panel setPolicies:(id)policies.get()]; + [panel beginSheetForWindow:parentWindow modalDelegate:nil didEndSelector:nullptr contextInfo:nullptr certificates:certificates showGroup:YES]; + [certificates release]; +} + +void CocoaUIHelpers::sendCocoaApplicationWillTerminateNotification() { + [[NSNotificationCenter defaultCenter] postNotificationName:@"NSApplicationWillTerminateNotification" object:nil]; } } |