From f40f86fef846a8874575809d68dee2df8c58d2da Mon Sep 17 00:00:00 2001 From: "Hoa V. DINH" Date: Tue, 2 Apr 2013 20:53:36 -0700 Subject: Added framework target. Added example. --- .../macExample.xcodeproj/project.pbxproj | 487 +++ example/mac/macExample/macExample/AppDelegate.h | 15 + example/mac/macExample/macExample/AppDelegate.m | 23 + .../macExample/MCTMsgListViewController.h | 22 + .../macExample/MCTMsgListViewController.m | 81 + .../macExample/macExample/MCTMsgViewController.h | 33 + .../macExample/macExample/MCTMsgViewController.m | 255 ++ .../macExample/macExample/en.lproj/MainMenu.xib | 3852 ++++++++++++++++++++ .../macExample/macExample/macExample-Info.plist | 34 + example/mac/macExample/macExample/main.mm | 19 + 10 files changed, 4821 insertions(+) create mode 100644 example/mac/macExample/macExample.xcodeproj/project.pbxproj create mode 100644 example/mac/macExample/macExample/AppDelegate.h create mode 100644 example/mac/macExample/macExample/AppDelegate.m create mode 100644 example/mac/macExample/macExample/MCTMsgListViewController.h create mode 100644 example/mac/macExample/macExample/MCTMsgListViewController.m create mode 100644 example/mac/macExample/macExample/MCTMsgViewController.h create mode 100644 example/mac/macExample/macExample/MCTMsgViewController.m create mode 100644 example/mac/macExample/macExample/en.lproj/MainMenu.xib create mode 100644 example/mac/macExample/macExample/macExample-Info.plist create mode 100644 example/mac/macExample/macExample/main.mm (limited to 'example') diff --git a/example/mac/macExample/macExample.xcodeproj/project.pbxproj b/example/mac/macExample/macExample.xcodeproj/project.pbxproj new file mode 100644 index 00000000..81392995 --- /dev/null +++ b/example/mac/macExample/macExample.xcodeproj/project.pbxproj @@ -0,0 +1,487 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + C64FF38416AF97F400F8C162 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = C64FF38316AF97F400F8C162 /* main.mm */; }; + C6BD2873170BC5C500A91AC1 /* MCOCIDURLProtocol.mm in Sources */ = {isa = PBXBuildFile; fileRef = C6BD2870170BC5C500A91AC1 /* MCOCIDURLProtocol.mm */; }; + C6BD2874170BC5C500A91AC1 /* MCOMessageView.mm in Sources */ = {isa = PBXBuildFile; fileRef = C6BD2872170BC5C500A91AC1 /* MCOMessageView.mm */; }; + C6D42BB616ABB39A002BB4F9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6D42BB516ABB39A002BB4F9 /* Cocoa.framework */; }; + C6D42BC916ABB39A002BB4F9 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C6D42BC816ABB39A002BB4F9 /* AppDelegate.m */; }; + C6D42BCC16ABB39A002BB4F9 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C6D42BCA16ABB39A002BB4F9 /* MainMenu.xib */; }; + C6D42BE516ABB511002BB4F9 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6D42BE416ABB511002BB4F9 /* WebKit.framework */; }; + C6D42BE916ACF711002BB4F9 /* MCTMsgListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C6D42BE816ACF711002BB4F9 /* MCTMsgListViewController.m */; }; + C6D42BEC16ACFE3F002BB4F9 /* MCTMsgViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C6D42BEB16ACFE3F002BB4F9 /* MCTMsgViewController.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + C6BD287E170BC8ED00A91AC1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C6BD2877170BC8ED00A91AC1 /* mailcore2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = C64EA537169E772200778456; + remoteInfo = mailcore2; + }; + C6BD2880170BC8ED00A91AC1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C6BD2877170BC8ED00A91AC1 /* mailcore2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = C6BA2C191705F4E6003F0E9E; + remoteInfo = "mailcore2 ios"; + }; + C6BD2882170BC8ED00A91AC1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C6BD2877170BC8ED00A91AC1 /* mailcore2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = C64EA78C169F259200778456; + remoteInfo = tests; + }; + C6BD2884170BC8ED00A91AC1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C6BD2877170BC8ED00A91AC1 /* mailcore2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = C6A81B911706840C00882C15; + remoteInfo = "test-ios"; + }; + C6BD2886170BC9CE00A91AC1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C6BD2877170BC8ED00A91AC1 /* mailcore2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = C64EA536169E772200778456; + remoteInfo = mailcore2; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + C64FF38316AF97F400F8C162 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; + C6BD286F170BC5C500A91AC1 /* MCOCIDURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOCIDURLProtocol.h; sourceTree = ""; }; + C6BD2870170BC5C500A91AC1 /* MCOCIDURLProtocol.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOCIDURLProtocol.mm; sourceTree = ""; }; + C6BD2871170BC5C500A91AC1 /* MCOMessageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOMessageView.h; sourceTree = ""; }; + C6BD2872170BC5C500A91AC1 /* MCOMessageView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOMessageView.mm; sourceTree = ""; }; + C6BD2877170BC8ED00A91AC1 /* mailcore2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = mailcore2.xcodeproj; path = "../../../build-mac/mailcore2.xcodeproj"; sourceTree = ""; }; + C6D42BB116ABB39A002BB4F9 /* macExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = macExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + C6D42BB516ABB39A002BB4F9 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + C6D42BB816ABB39A002BB4F9 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + C6D42BB916ABB39A002BB4F9 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + C6D42BBA16ABB39A002BB4F9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + C6D42BBD16ABB39A002BB4F9 /* macExample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "macExample-Info.plist"; sourceTree = ""; }; + C6D42BC716ABB39A002BB4F9 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + C6D42BC816ABB39A002BB4F9 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + C6D42BCB16ABB39A002BB4F9 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; + C6D42BE416ABB511002BB4F9 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; + C6D42BE716ACF711002BB4F9 /* MCTMsgListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCTMsgListViewController.h; sourceTree = ""; }; + C6D42BE816ACF711002BB4F9 /* MCTMsgListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MCTMsgListViewController.m; sourceTree = ""; }; + C6D42BEA16ACFE3F002BB4F9 /* MCTMsgViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCTMsgViewController.h; sourceTree = ""; }; + C6D42BEB16ACFE3F002BB4F9 /* MCTMsgViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MCTMsgViewController.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C6D42BAE16ABB39A002BB4F9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C6D42BE516ABB511002BB4F9 /* WebKit.framework in Frameworks */, + C6D42BB616ABB39A002BB4F9 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + C6BD286D170BC5C500A91AC1 /* ui */ = { + isa = PBXGroup; + children = ( + C6BD286E170BC5C500A91AC1 /* mac */, + ); + name = ui; + path = ../../../src/ui; + sourceTree = ""; + }; + C6BD286E170BC5C500A91AC1 /* mac */ = { + isa = PBXGroup; + children = ( + C6BD286F170BC5C500A91AC1 /* MCOCIDURLProtocol.h */, + C6BD2870170BC5C500A91AC1 /* MCOCIDURLProtocol.mm */, + C6BD2871170BC5C500A91AC1 /* MCOMessageView.h */, + C6BD2872170BC5C500A91AC1 /* MCOMessageView.mm */, + ); + path = mac; + sourceTree = ""; + }; + C6BD2875170BC79700A91AC1 /* MailCoreUI */ = { + isa = PBXGroup; + children = ( + C6BD286D170BC5C500A91AC1 /* ui */, + ); + name = MailCoreUI; + sourceTree = ""; + }; + C6BD2876170BC8E200A91AC1 /* MailCore */ = { + isa = PBXGroup; + children = ( + C6BD2877170BC8ED00A91AC1 /* mailcore2.xcodeproj */, + ); + name = MailCore; + sourceTree = ""; + }; + C6BD2878170BC8ED00A91AC1 /* Products */ = { + isa = PBXGroup; + children = ( + C6BD287F170BC8ED00A91AC1 /* libmailcore2.a */, + C6BD2881170BC8ED00A91AC1 /* libmailcore2-ios.a */, + C6BD2883170BC8ED00A91AC1 /* tests */, + C6BD2885170BC8ED00A91AC1 /* test-ios.app */, + ); + name = Products; + sourceTree = ""; + }; + C6D42BA616ABB39A002BB4F9 = { + isa = PBXGroup; + children = ( + C6BD2876170BC8E200A91AC1 /* MailCore */, + C6BD2875170BC79700A91AC1 /* MailCoreUI */, + C6D42BBB16ABB39A002BB4F9 /* macExample */, + C6D42BB416ABB39A002BB4F9 /* Frameworks */, + C6D42BB216ABB39A002BB4F9 /* Products */, + ); + sourceTree = ""; + }; + C6D42BB216ABB39A002BB4F9 /* Products */ = { + isa = PBXGroup; + children = ( + C6D42BB116ABB39A002BB4F9 /* macExample.app */, + ); + name = Products; + sourceTree = ""; + }; + C6D42BB416ABB39A002BB4F9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C6D42BE416ABB511002BB4F9 /* WebKit.framework */, + C6D42BB516ABB39A002BB4F9 /* Cocoa.framework */, + C6D42BB716ABB39A002BB4F9 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + C6D42BB716ABB39A002BB4F9 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + C6D42BB816ABB39A002BB4F9 /* AppKit.framework */, + C6D42BB916ABB39A002BB4F9 /* CoreData.framework */, + C6D42BBA16ABB39A002BB4F9 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + C6D42BBB16ABB39A002BB4F9 /* macExample */ = { + isa = PBXGroup; + children = ( + C6D42BBC16ABB39A002BB4F9 /* Supporting Files */, + C6D42BC716ABB39A002BB4F9 /* AppDelegate.h */, + C6D42BC816ABB39A002BB4F9 /* AppDelegate.m */, + C6D42BCA16ABB39A002BB4F9 /* MainMenu.xib */, + C6D42BE716ACF711002BB4F9 /* MCTMsgListViewController.h */, + C6D42BE816ACF711002BB4F9 /* MCTMsgListViewController.m */, + C6D42BEA16ACFE3F002BB4F9 /* MCTMsgViewController.h */, + C6D42BEB16ACFE3F002BB4F9 /* MCTMsgViewController.m */, + ); + path = macExample; + sourceTree = ""; + }; + C6D42BBC16ABB39A002BB4F9 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + C64FF38316AF97F400F8C162 /* main.mm */, + C6D42BBD16ABB39A002BB4F9 /* macExample-Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C6D42BB016ABB39A002BB4F9 /* macExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = C6D42BCF16ABB39A002BB4F9 /* Build configuration list for PBXNativeTarget "macExample" */; + buildPhases = ( + C6D42BAD16ABB39A002BB4F9 /* Sources */, + C6D42BAE16ABB39A002BB4F9 /* Frameworks */, + C6D42BAF16ABB39A002BB4F9 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C6BD2887170BC9CE00A91AC1 /* PBXTargetDependency */, + ); + name = macExample; + productName = testUI; + productReference = C6D42BB116ABB39A002BB4F9 /* macExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C6D42BA816ABB39A002BB4F9 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = MailCore; + }; + buildConfigurationList = C6D42BAB16ABB39A002BB4F9 /* Build configuration list for PBXProject "macExample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = C6D42BA616ABB39A002BB4F9; + productRefGroup = C6D42BB216ABB39A002BB4F9 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = C6BD2878170BC8ED00A91AC1 /* Products */; + ProjectRef = C6BD2877170BC8ED00A91AC1 /* mailcore2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + C6D42BB016ABB39A002BB4F9 /* macExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + C6BD287F170BC8ED00A91AC1 /* libmailcore2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libmailcore2.a; + remoteRef = C6BD287E170BC8ED00A91AC1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + C6BD2881170BC8ED00A91AC1 /* libmailcore2-ios.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libmailcore2-ios.a"; + remoteRef = C6BD2880170BC8ED00A91AC1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + C6BD2883170BC8ED00A91AC1 /* tests */ = { + isa = PBXReferenceProxy; + fileType = "compiled.mach-o.executable"; + path = tests; + remoteRef = C6BD2882170BC8ED00A91AC1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + C6BD2885170BC8ED00A91AC1 /* test-ios.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "test-ios.app"; + remoteRef = C6BD2884170BC8ED00A91AC1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + C6D42BAF16ABB39A002BB4F9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C6D42BCC16ABB39A002BB4F9 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C6D42BAD16ABB39A002BB4F9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C6D42BC916ABB39A002BB4F9 /* AppDelegate.m in Sources */, + C6D42BE916ACF711002BB4F9 /* MCTMsgListViewController.m in Sources */, + C6D42BEC16ACFE3F002BB4F9 /* MCTMsgViewController.m in Sources */, + C64FF38416AF97F400F8C162 /* main.mm in Sources */, + C6BD2873170BC5C500A91AC1 /* MCOCIDURLProtocol.mm in Sources */, + C6BD2874170BC5C500A91AC1 /* MCOMessageView.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + C6BD2887170BC9CE00A91AC1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = mailcore2; + targetProxy = C6BD2886170BC9CE00A91AC1 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + C6D42BCA16ABB39A002BB4F9 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + C6D42BCB16ABB39A002BB4F9 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C6D42BCD16ABB39A002BB4F9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + C6D42BCE16ABB39A002BB4F9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + SDKROOT = macosx; + }; + name = Release; + }; + C6D42BD016ABB39A002BB4F9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LIBRARY = "libc++"; + COMBINE_HIDPI_IMAGES = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../Externals/libetpan/include", + "$(SRCROOT)/../../../Externals/icu4c/include", + "$(SRCROOT)/../../../Externals/ctemplate/include", + /usr/include/tidy, + /usr/include/libxml2, + ); + INFOPLIST_FILE = "macExample/macExample-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(SRCROOT)/../../../Externals/libetpan/lib", + "$(SRCROOT)/../../../Externals/icu4c/lib", + "$(SRCROOT)/../../../Externals/ctemplate/lib", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-letpan", + "-licudata", + "-licui18n", + "-licuuc", + "-lxml2", + "-lssl", + "-lcrypto", + "-lsasl2", + "-liconv", + "-lctemplate", + "-ltidy", + "-lmailcore2", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + C6D42BD116ABB39A002BB4F9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LIBRARY = "libc++"; + COMBINE_HIDPI_IMAGES = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../Externals/libetpan/include", + "$(SRCROOT)/../../../Externals/icu4c/include", + "$(SRCROOT)/../../../Externals/ctemplate/include", + /usr/include/tidy, + /usr/include/libxml2, + ); + INFOPLIST_FILE = "macExample/macExample-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(SRCROOT)/../../../Externals/libetpan/lib", + "$(SRCROOT)/../../../Externals/icu4c/lib", + "$(SRCROOT)/../../../Externals/ctemplate/lib", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-letpan", + "-licudata", + "-licui18n", + "-licuuc", + "-lxml2", + "-lssl", + "-lcrypto", + "-lsasl2", + "-liconv", + "-lctemplate", + "-ltidy", + "-lmailcore2", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C6D42BAB16ABB39A002BB4F9 /* Build configuration list for PBXProject "macExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C6D42BCD16ABB39A002BB4F9 /* Debug */, + C6D42BCE16ABB39A002BB4F9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C6D42BCF16ABB39A002BB4F9 /* Build configuration list for PBXNativeTarget "macExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C6D42BD016ABB39A002BB4F9 /* Debug */, + C6D42BD116ABB39A002BB4F9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = C6D42BA816ABB39A002BB4F9 /* Project object */; +} diff --git a/example/mac/macExample/macExample/AppDelegate.h b/example/mac/macExample/macExample/AppDelegate.h new file mode 100644 index 00000000..a47dfbad --- /dev/null +++ b/example/mac/macExample/macExample/AppDelegate.h @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// testUI +// +// Created by DINH Viêt Hoà on 1/19/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import + +@interface AppDelegate : NSObject + +@property (assign) IBOutlet NSWindow *window; + +@end diff --git a/example/mac/macExample/macExample/AppDelegate.m b/example/mac/macExample/macExample/AppDelegate.m new file mode 100644 index 00000000..8f89fe10 --- /dev/null +++ b/example/mac/macExample/macExample/AppDelegate.m @@ -0,0 +1,23 @@ +// +// AppDelegate.m +// testUI +// +// Created by DINH Viêt Hoà on 1/19/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (void)dealloc +{ + [super dealloc]; +} + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + // Insert code here to initialize your application +} + +@end diff --git a/example/mac/macExample/macExample/MCTMsgListViewController.h b/example/mac/macExample/macExample/MCTMsgListViewController.h new file mode 100644 index 00000000..fbd76411 --- /dev/null +++ b/example/mac/macExample/macExample/MCTMsgListViewController.h @@ -0,0 +1,22 @@ +// +// MCTMsgListViewController.h +// testUI +// +// Created by DINH Viêt Hoà on 1/20/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import +#include + +@class MCTMsgViewController; + +@interface MCTMsgListViewController : NSViewController { + IBOutlet NSTableView * _tableView; + IBOutlet MCTMsgViewController * _msgViewController; + MCOIMAPSession * _session; + MCOIMAPFetchMessagesOperation * _op; + NSArray * _messages; +} + +@end diff --git a/example/mac/macExample/macExample/MCTMsgListViewController.m b/example/mac/macExample/macExample/MCTMsgListViewController.m new file mode 100644 index 00000000..b2275686 --- /dev/null +++ b/example/mac/macExample/macExample/MCTMsgListViewController.m @@ -0,0 +1,81 @@ +// +// MCTMsgListViewController.m +// testUI +// +// Created by DINH Viêt Hoà on 1/20/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCTMsgListViewController.h" + +#include + +#import "MCTMsgViewController.h" + +#define FOLDER @"INBOX" +//#define FOLDER @"[Gmail]/All Mail" + +@interface MCTMsgListViewController () + +@end + +@implementation MCTMsgListViewController + +- (void) awakeFromNib +{ + [_msgViewController setFolder:FOLDER]; + + NSString * login = [[NSUserDefaults standardUserDefaults] stringForKey:@"Login"]; + NSString * password = [[NSUserDefaults standardUserDefaults] stringForKey:@"Password"]; + + _session = [[MCOIMAPSession alloc] init]; + [_session setHostname:@"imap.gmail.com"]; + [_session setPort:993]; + [_session setUsername:login]; + [_session setPassword:password]; + [_session setConnectionType:MCOConnectionTypeTLS]; + + MCOIMAPMessagesRequestKind requestKind = (MCOIMAPMessagesRequestKind) + (MCOIMAPMessagesRequestKindHeaders | MCOIMAPMessagesRequestKindStructure | + MCOIMAPMessagesRequestKindInternalDate | MCOIMAPMessagesRequestKindHeaderSubject | + MCOIMAPMessagesRequestKindFlags); + + _op = [_session fetchMessagesByUIDOperationWithFolder:FOLDER requestKind:requestKind uids:[MCOIndexSet indexSetWithRange:MCORangeMake(1, UINT64_MAX)]]; + [_op setProgress:^(unsigned int current){ + //NSLog(@"progress: %u", current); + }]; + [_op start:^(NSError * error, NSArray * messages, MCOIndexSet * vanishedMessages) { + [_messages release]; + _messages = [messages retain]; + NSLog(@"%i messages", (int) [_messages count]); + //NSLog(@"%@", _messages); + [_tableView reloadData]; + }]; +} + +- (NSInteger) numberOfRowsInTableView:(NSTableView *)aTableView +{ + return [_messages count]; +} + +- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex +{ + MCOIMAPMessage * msg = [_messages objectAtIndex:rowIndex]; + return [[msg header] subject]; +} + +- (void) tableViewSelectionDidChange:(NSNotification *)notification +{ + int rowIndex = (int) [_tableView selectedRow]; + if (rowIndex == -1) { + [_msgViewController setSession:nil]; + [_msgViewController setMessage:nil]; + } + else { + MCOIMAPMessage * msg = [_messages objectAtIndex:rowIndex]; + [_msgViewController setSession:_session]; + [_msgViewController setMessage:msg]; + } +} + +@end diff --git a/example/mac/macExample/macExample/MCTMsgViewController.h b/example/mac/macExample/macExample/MCTMsgViewController.h new file mode 100644 index 00000000..a7bc0168 --- /dev/null +++ b/example/mac/macExample/macExample/MCTMsgViewController.h @@ -0,0 +1,33 @@ +// +// MCTMsgViewController.h +// testUI +// +// Created by DINH Viêt Hoà on 1/20/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import + +#include + +@class MCOMessageView; +@class MCOIMAPAsyncSession; +@class MCOMAPMessage; + +@interface MCTMsgViewController : NSViewController { + IBOutlet MCOMessageView * _messageView; + NSMutableDictionary * _storage; + NSMutableSet * _pending; + NSMutableArray * _ops; + MCOIMAPSession * _session; + MCOIMAPMessage * _message; + NSMutableDictionary * _callbacks; + NSString * _folder; +} + +@property (nonatomic, copy) NSString * folder; + +@property (nonatomic, strong) MCOIMAPSession * session; +@property (nonatomic, strong) MCOIMAPMessage * message; + +@end diff --git a/example/mac/macExample/macExample/MCTMsgViewController.m b/example/mac/macExample/macExample/MCTMsgViewController.m new file mode 100644 index 00000000..2f8dea38 --- /dev/null +++ b/example/mac/macExample/macExample/MCTMsgViewController.m @@ -0,0 +1,255 @@ +// +// MCTMsgViewController.m +// testUI +// +// Created by DINH Viêt Hoà on 1/20/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCTMsgViewController.h" + +#import "MCOMessageView.h" + +@interface MCTMsgViewController () + +@end + +@implementation MCTMsgViewController + +@synthesize folder = _folder; +@synthesize session = _session; + +- (void) awakeFromNib +{ + _storage = [[NSMutableDictionary alloc] init]; + _ops = [[NSMutableArray alloc] init];; + _pending = [[NSMutableSet alloc] init];; + _callbacks = [[NSMutableDictionary alloc] init]; +} + +- (void) setMessage:(MCOIMAPMessage *)message +{ + NSLog(@"set message : %@", message); + for(MCOOperation * op in _ops) { + [op cancel]; + } + [_ops removeAllObjects]; + + [_callbacks removeAllObjects]; + [_pending removeAllObjects]; + [_storage removeAllObjects]; + [_message release]; + _message = [message retain]; + + if (0) { + [_messageView setDelegate:self]; + [_messageView setFolder:_folder]; + [_messageView setMessage:message]; + } + else { + [_messageView setMessage:NULL]; + MCOIMAPFetchContentOperation * op = [_session fetchMessageByUIDOperationWithFolder:_folder uid:[_message uid]]; + [_ops addObject:op]; + [op start:^(NSError * error, NSData * data) { + if ([error code] != MCOErrorNone) { + return; + } + + NSAssert(data != nil, @"data != nil"); + + MCOMessageParser * msg = [MCOMessageParser messageParserWithData:data]; + [_messageView setDelegate:self]; + [_messageView setFolder:_folder]; + [_messageView setMessage:msg]; + }]; + } +} + +- (MCOIMAPMessage *) message +{ + return _message; +} + +- (MCOIMAPFetchContentOperation *) _fetchIMAPPartWithUniqueID:(NSString *)partUniqueID folder:(NSString *)folder +{ + NSLog(@"%@ is missing, fetching", partUniqueID); + + if ([_pending containsObject:partUniqueID]) { + return NULL; + } + + MCOIMAPPart * part = (MCOIMAPPart *) [_message partForUniqueID:partUniqueID]; + NSAssert(part != nil, @"part != nil"); + + [_pending addObject:partUniqueID]; + + MCOIMAPFetchContentOperation * op = [_session fetchMessageAttachmentByUIDOperationWithFolder:folder uid:[_message uid] partID:[part partID] encoding:[part encoding]]; + [_ops addObject:op]; + [op start:^(NSError * error, NSData * data) { + if ([error code] != MCOErrorNone) { + [self _callbackForPartUniqueID:partUniqueID error:error]; + return; + } + + NSAssert(data != NULL, @"data != nil"); + [_ops removeObject:op]; + [_storage setObject:data forKey:partUniqueID]; + [_pending removeObject:partUniqueID]; + NSLog(@"downloaded %@", partUniqueID); + + [self _callbackForPartUniqueID:partUniqueID error:nil]; + }]; + + return op; +} + +typedef void (^DownloadCallback)(NSError * error); + +- (void) _callbackForPartUniqueID:(NSString *)partUniqueID error:(NSError *)error +{ + NSArray * blocks; + blocks = [_callbacks objectForKey:partUniqueID]; + NSLog(@"%@", blocks); + for(DownloadCallback block in blocks) { + block(error); + } + NSLog(@"done: %@", blocks); +} + +- (NSString *) MCOMessageView_templateForAttachment:(MCOMessageView *)view +{ + return @"
\ +{{#HASSIZE}}\ +
- {{FILENAME}}, {{SIZE}}
\ +{{/HASSIZE}}\ +{{#NOSIZE}}\ +
- {{FILENAME}}
\ +{{/NOSIZE}}"; +} + +- (NSString *) MCOMessageView_templateForMessage:(MCOMessageView *)view +{ + return @"
{{HEADER}}
{{BODY}}
"; +} + +- (BOOL) MCOMessageView:(MCOMessageView *)view canPreviewPart:(MCOAbstractPart *)part +{ + // tiff, tif, pdf + NSString * mimeType = [[part mimeType] lowercaseString]; + if ([mimeType isEqualToString:@"image/tiff"]) { + return YES; + } + else if ([mimeType isEqualToString:@"image/tif"]) { + return YES; + } + else if ([mimeType isEqualToString:@"application/pdf"]) { + return YES; + } + + NSString * ext = nil; + if ([part filename] != nil) { + if ([[part filename] pathExtension] != nil) { + ext = [[[part filename] pathExtension] lowercaseString]; + } + } + if (ext != nil) { + if ([ext isEqualToString:@"tiff"]) { + return YES; + } + else if ([ext isEqualToString:@"tif"]) { + return YES; + } + else if ([ext isEqualToString:@"pdf"]) { + return YES; + } + } + + return NO; +} + +- (NSString *) MCOMessageView:(MCOMessageView *)view filteredHTML:(NSString *)html +{ + return html; +} + +- (NSData *) MCOMessageView:(MCOMessageView *)view dataForPartWithUniqueID:(NSString *)partUniqueID +{ + NSData * data = [_storage objectForKey:partUniqueID]; + return data; +} + +- (void) MCOMessageView:(MCOMessageView *)view fetchDataForPartWithUniqueID:(NSString *)partUniqueID + downloadedFinished:(void (^)(NSError * error))downloadFinished +{ + MCOIMAPFetchContentOperation * op = [self _fetchIMAPPartWithUniqueID:partUniqueID folder:_folder]; + [op setProgress:^(unsigned int current, unsigned int maximum) { + NSLog(@"progress content: %u/%u", current, maximum); + }]; + [_ops addObject:op]; + if (downloadFinished != NULL) { + NSMutableArray * blocks; + blocks = [_callbacks objectForKey:partUniqueID]; + if (blocks == nil) { + blocks = [NSMutableArray array]; + [_callbacks setObject:blocks forKey:partUniqueID]; + } + [blocks addObject:[[downloadFinished copy] autorelease]]; + } +} + +- (NSData *) MCOMessageView:(MCOMessageView *)view previewForData:(NSData *)data isHTMLInlineImage:(BOOL)isHTMLInlineImage +{ + if (isHTMLInlineImage) { + return data; + } + else { + return [self _convertToJPEGData:data]; + } +} + +#define IMAGE_PREVIEW_HEIGHT 300 +#define IMAGE_PREVIEW_WIDTH 500 + +- (NSData *) _convertToJPEGData:(NSData *)data +{ + CGImageSourceRef imageSource; + CGImageRef thumbnail; + NSMutableDictionary * info; + int width; + int height; + float quality; + + width = IMAGE_PREVIEW_WIDTH; + height = IMAGE_PREVIEW_HEIGHT; + quality = 1.0; + + imageSource = CGImageSourceCreateWithData((CFDataRef) data, NULL); + if (imageSource == NULL) + return nil; + + info = [[NSMutableDictionary alloc] init]; + [info setObject:(id) kCFBooleanTrue forKey:(id) kCGImageSourceCreateThumbnailWithTransform]; + [info setObject:(id) kCFBooleanTrue forKey:(id) kCGImageSourceCreateThumbnailFromImageAlways]; + [info setObject:(id) [NSNumber numberWithFloat:(float) IMAGE_PREVIEW_WIDTH] forKey:(id) kCGImageSourceThumbnailMaxPixelSize]; + thumbnail = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, (CFDictionaryRef) info); + [info release]; + + CGImageDestinationRef destination; + NSMutableData * destData = [NSMutableData data]; + + destination = CGImageDestinationCreateWithData((CFMutableDataRef) destData, + (CFStringRef) @"public.jpeg", + 1, NULL); + + CGImageDestinationAddImage(destination, thumbnail, NULL); + CGImageDestinationFinalize(destination); + + CFRelease(destination); + + CFRelease(thumbnail); + CFRelease(imageSource); + + return destData; +} + +@end diff --git a/example/mac/macExample/macExample/en.lproj/MainMenu.xib b/example/mac/macExample/macExample/en.lproj/MainMenu.xib new file mode 100644 index 00000000..a34a5ae2 --- /dev/null +++ b/example/mac/macExample/macExample/en.lproj/MainMenu.xib @@ -0,0 +1,3852 @@ + + + + 1080 + 12C3012 + 3084 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 3084 + + + NSCustomObject + NSCustomView + NSMenu + NSMenuItem + NSScrollView + NSScroller + NSSecureTextField + NSSecureTextFieldCell + NSTableColumn + NSTableHeaderView + NSTableView + NSTextField + NSTextFieldCell + NSUserDefaultsController + NSView + NSViewController + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + testUI + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + testUI + + + + About testUI + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide testUI + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit testUI + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + + + New + n + 1048576 + 2147483647 + + + + + + Account... + + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save… + s + 1048576 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find and Replace… + f + 1572864 + 2147483647 + + + 12 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + + + Show Substitutions + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Dashes + + 2147483647 + + + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + Text Replacement + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + + + Font + + 2147483647 + + + submenuAction: + + Font + + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligatures + + 2147483647 + + + submenuAction: + + Ligatures + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Writing Direction + + 2147483647 + + + submenuAction: + + Writing Direction + + + + YES + Paragraph + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + YES + Selection + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + + + testUI Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 15 + 2 + {{344, 127}, {768, 493}} + 1948778496 + testUI + NSWindow + + + + + 256 + + + + 284 + + + + 2304 + + + + 256 + {192, 477} + + + + _NS:13 + YES + NO + YES + + + 256 + {192, 17} + + + + _NS:16 + + + + + -2147483392 + {{224, 0}, {16, 17}} + + _NS:19 + + + + 188.68359375 + 40 + 1000 + + 75497536 + 2048 + + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 337641536 + 2048 + Text Cell + + LucidaGrande + 13 + 1044 + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + 3 + YES + YES + + + + 3 + 2 + + 3 + MQA + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + -700448768 + + + 4 + 15 + 0 + YES + 0 + 1 + + + {{1, 17}, {192, 477}} + + + + _NS:11 + + + 4 + + + + -2147483392 + {{224, 17}, {15, 102}} + + + + _NS:58 + NO + + _doScroller: + 37 + 0.1947367936372757 + + + + -2147483392 + {{1, 478}, {335, 16}} + + + + _NS:60 + NO + 1 + + _doScroller: + 1 + 0.97953216374269003 + + + + 2304 + + + + {{1, 0}, {192, 17}} + + + + _NS:15 + + + 4 + + + {{-1, -1}, {194, 495}} + + + + _NS:9 + 133682 + + + + + QSAAAEEgAABBmAAAQZgAAA + 0.25 + 4 + 1 + + + + 274 + {{201, 0}, {567, 493}} + + + _NS:9 + MCOMessageView + + + {768, 493} + + + + + {{0, 0}, {1366, 746}} + {10000000000000, 10000000000000} + YES + + + 3 + 2 + {{505, 474}, {385, 94}} + 611845120 + Account + NSWindow + + + + + 256 + + + + 268 + {{116, 52}, {249, 22}} + + + _NS:9 + YES + + -1804599231 + 272630784 + + + _NS:9 + + YES + + 6 + System + textBackgroundColor + + + + 6 + System + textColor + + + + NO + + + + 268 + {{72, 55}, {39, 17}} + + + _NS:1535 + YES + + 68157504 + 272630784 + Login + + _NS:1535 + + + 6 + System + controlColor + + + + + NO + + + + 268 + {{47, 23}, {64, 17}} + + + _NS:1535 + YES + + 68157504 + 272630784 + Password + + _NS:1535 + + + + + NO + + + + 268 + {{116, 20}, {249, 22}} + + _NS:9 + YES + + 342884416 + 272630848 + + + _NS:9 + + YES + + + + NSAllRomanInputSourcesLocaleIdentifier + + + NO + + + {385, 94} + + _NS:20 + + {{0, 0}, {1366, 746}} + {10000000000000, 10000000000000} + YES + + + AppDelegate + + + NSFontManager + + + + + YES + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + saveDocument: + + + + 362 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + toggleAutomaticSpellingCorrection: + + + + 456 + + + + orderFrontSubstitutionsPanel: + + + + 458 + + + + toggleAutomaticDashSubstitution: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + uppercaseWord: + + + + 464 + + + + capitalizeWord: + + + + 467 + + + + lowercaseWord: + + + + 468 + + + + pasteAsPlainText: + + + + 486 + + + + performFindPanelAction: + + + + 487 + + + + performFindPanelAction: + + + + 488 + + + + performFindPanelAction: + + + + 489 + + + + showHelp: + + + + 493 + + + + alignCenter: + + + + 518 + + + + pasteRuler: + + + + 519 + + + + toggleRuler: + + + + 520 + + + + alignRight: + + + + 521 + + + + copyRuler: + + + + 522 + + + + alignJustified: + + + + 523 + + + + alignLeft: + + + + 524 + + + + makeBaseWritingDirectionNatural: + + + + 525 + + + + makeBaseWritingDirectionLeftToRight: + + + + 526 + + + + makeBaseWritingDirectionRightToLeft: + + + + 527 + + + + makeTextWritingDirectionNatural: + + + + 528 + + + + makeTextWritingDirectionLeftToRight: + + + + 529 + + + + makeTextWritingDirectionRightToLeft: + + + + 530 + + + + performFindPanelAction: + + + + 535 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + window + + + + 532 + + + + dataSource + + + + 597 + + + + delegate + + + + 598 + + + + _tableView + + + + 596 + + + + _msgViewController + + + + 608 + + + + _messageView + + + + 607 + + + + makeKeyAndOrderFront: + + + + 622 + + + + value: values.Login + + + + + + value: values.Login + value + values.Login + 2 + + + 625 + + + + value: values.Password + + + + + + value: values.Password + value + values.Password + 2 + + + 626 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + + + + 19 + + + + + + + + 56 + + + + + + + + 217 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + + + + + + + + 75 + + + + + 78 + + + + + 72 + + + + + 82 + + + + + 124 + + + + + + + + 77 + + + + + 73 + + + + + 79 + + + + + 112 + + + + + 74 + + + + + 125 + + + + + + + + 126 + + + + + 205 + + + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + + + + + + 216 + + + + + + + + 200 + + + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 57 + + + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 129 + + + + + 143 + + + + + 236 + + + + + 131 + + + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + + + + + + 296 + + + + + + + + + 297 + + + + + 298 + + + + + 211 + + + + + + + + 212 + + + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + + + + + + 349 + + + + + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + + + + + + 372 + + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + + 377 + + + + + + + + 388 + + + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + + + + + + 398 + + + + + + + + 399 + + + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + + + + + + 451 + + + + + + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 457 + + + + + 459 + + + + + 460 + + + + + 462 + + + + + 465 + + + + + 466 + + + + + 485 + + + + + 490 + + + + + + + + 491 + + + + + + + + 492 + + + + + 494 + + + + + 496 + + + + + + + + 497 + + + + + + + + + + + + + + + + + 498 + + + + + 499 + + + + + 500 + + + + + 501 + + + + + 502 + + + + + 503 + + + + + + + + 504 + + + + + 505 + + + + + 506 + + + + + 507 + + + + + 508 + + + + + + + + + + + + + + + + 509 + + + + + 510 + + + + + 511 + + + + + 512 + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 517 + + + + + 534 + + + + + 536 + + + + + + + + + + + 537 + + + + + + + + 538 + + + + + 539 + + + + + 540 + + + + + 541 + + + + + + + + 544 + + + + + 573 + + + + + 594 + + + + + 595 + + + + + 609 + + + + + 610 + + + + + + + + 611 + + + + + + + + + + + 612 + + + + + + + + 613 + + + + + 616 + + + + + + + + 617 + + + + + 618 + + + + + + + + 619 + + + + + 620 + + + + + + + + 621 + + + + + 623 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + MCTMsgListViewController + com.apple.InterfaceBuilder.CocoaPlugin + MCTMsgViewController + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 626 + + + + + AppDelegate + NSObject + + window + NSWindow + + + window + + window + NSWindow + + + + IBProjectSource + ./Classes/AppDelegate.h + + + + MCOMessageView + NSView + + IBProjectSource + ./Classes/MCOMessageView.h + + + + MCTMsgListViewController + NSViewController + + MCTMsgViewController + NSTableView + + + + _msgViewController + MCTMsgViewController + + + _tableView + NSTableView + + + + IBProjectSource + ./Classes/MCTMsgListViewController.h + + + + MCTMsgViewController + NSViewController + + _messageView + MCOMessageView + + + _messageView + + _messageView + MCOMessageView + + + + IBProjectSource + ./Classes/MCTMsgViewController.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + + diff --git a/example/mac/macExample/macExample/macExample-Info.plist b/example/mac/macExample/macExample/macExample-Info.plist new file mode 100644 index 00000000..7b990dc4 --- /dev/null +++ b/example/mac/macExample/macExample/macExample-Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + org.mailcore.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2013 MailCore. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/example/mac/macExample/macExample/main.mm b/example/mac/macExample/macExample/main.mm new file mode 100644 index 00000000..be0c2229 --- /dev/null +++ b/example/mac/macExample/macExample/main.mm @@ -0,0 +1,19 @@ +// +// main.m +// testUI +// +// Created by DINH Viêt Hoà on 1/19/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import +#include +#include + +int main(int argc, char *argv[]) +{ + u_setDataDirectory("/usr/local/share/icu"); + mailcore::AutoreleasePool * pool = new mailcore::AutoreleasePool(); + return NSApplicationMain(argc, (const char **)argv); + pool->release(); +} -- cgit v1.2.3