├── .gitmodules ├── AboutCast Maker.xcodeproj └── project.pbxproj ├── AboutCast Maker ├── AboutCast Maker-Info.plist ├── AboutCast Maker-Prefix.pch ├── MDDocument.h ├── MDDocument.m ├── en.lproj │ ├── Credits.rtf │ ├── InfoPlist.strings │ ├── MDDocument.xib │ └── MainMenu.xib └── main.m ├── Artwork ├── Main Screen.ai └── Screenshot.png ├── MDAboutControllerDemo.xcodeproj └── project.pbxproj ├── MDAboutControllerDemo ├── Base.lproj │ ├── MDAboutControllerViewController.xib │ └── MainWindow.xib ├── Credits.plist ├── Default-568h@2x.png ├── Icon114px.png ├── Icon144px.png ├── Icon57px.png ├── Icon72px.png ├── MDAboutController-Info.plist ├── MDAboutController-Prefix.pch ├── MDAboutControllerAppDelegate.h ├── MDAboutControllerAppDelegate.m ├── MDAboutControllerViewController.h ├── MDAboutControllerViewController.m ├── SampleAppCast.plist ├── en.lproj │ └── InfoPlist.strings ├── ja.lproj │ ├── InfoPlist.strings │ ├── MDAboutControllerViewController.strings │ └── MainWindow.strings ├── logo.png ├── logo@2x.png └── main.m └── README.md /.gitmodules: -------------------------------------------------------------------------------- 1 | 2 | [submodule "MDAboutControllerDemo/MDAboutController"] 3 | path = MDAboutControllerDemo/MDAboutController 4 | url = git@github.com:mochidev/MDAboutController.git 5 | -------------------------------------------------------------------------------- /AboutCast Maker.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 65BBD22B16B5324400CF7E29 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65BBD22A16B5324400CF7E29 /* Cocoa.framework */; }; 11 | 65BBD23516B5324400CF7E29 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 65BBD23316B5324400CF7E29 /* InfoPlist.strings */; }; 12 | 65BBD23716B5324400CF7E29 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 65BBD23616B5324400CF7E29 /* main.m */; }; 13 | 65BBD23B16B5324400CF7E29 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 65BBD23916B5324400CF7E29 /* Credits.rtf */; }; 14 | 65BBD23E16B5324400CF7E29 /* MDDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 65BBD23D16B5324400CF7E29 /* MDDocument.m */; }; 15 | 65BBD24116B5324400CF7E29 /* MDDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65BBD23F16B5324400CF7E29 /* MDDocument.xib */; }; 16 | 65BBD24416B5324500CF7E29 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65BBD24216B5324500CF7E29 /* MainMenu.xib */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXFileReference section */ 20 | 65BBD22616B5324400CF7E29 /* AboutCast Maker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AboutCast Maker.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 21 | 65BBD22A16B5324400CF7E29 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 22 | 65BBD22D16B5324400CF7E29 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 23 | 65BBD22E16B5324400CF7E29 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 24 | 65BBD22F16B5324400CF7E29 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 25 | 65BBD23216B5324400CF7E29 /* AboutCast Maker-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "AboutCast Maker-Info.plist"; sourceTree = ""; }; 26 | 65BBD23416B5324400CF7E29 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 27 | 65BBD23616B5324400CF7E29 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 28 | 65BBD23816B5324400CF7E29 /* AboutCast Maker-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AboutCast Maker-Prefix.pch"; sourceTree = ""; }; 29 | 65BBD23A16B5324400CF7E29 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; 30 | 65BBD23C16B5324400CF7E29 /* MDDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MDDocument.h; sourceTree = ""; }; 31 | 65BBD23D16B5324400CF7E29 /* MDDocument.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MDDocument.m; sourceTree = ""; }; 32 | 65BBD24016B5324400CF7E29 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MDDocument.xib; sourceTree = ""; }; 33 | 65BBD24316B5324500CF7E29 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; 34 | /* End PBXFileReference section */ 35 | 36 | /* Begin PBXFrameworksBuildPhase section */ 37 | 65BBD22316B5324400CF7E29 /* Frameworks */ = { 38 | isa = PBXFrameworksBuildPhase; 39 | buildActionMask = 2147483647; 40 | files = ( 41 | 65BBD22B16B5324400CF7E29 /* Cocoa.framework in Frameworks */, 42 | ); 43 | runOnlyForDeploymentPostprocessing = 0; 44 | }; 45 | /* End PBXFrameworksBuildPhase section */ 46 | 47 | /* Begin PBXGroup section */ 48 | 65BBD21B16B5324400CF7E29 = { 49 | isa = PBXGroup; 50 | children = ( 51 | 65BBD23016B5324400CF7E29 /* AboutCast Maker */, 52 | 65BBD22916B5324400CF7E29 /* Frameworks */, 53 | 65BBD22716B5324400CF7E29 /* Products */, 54 | ); 55 | sourceTree = ""; 56 | }; 57 | 65BBD22716B5324400CF7E29 /* Products */ = { 58 | isa = PBXGroup; 59 | children = ( 60 | 65BBD22616B5324400CF7E29 /* AboutCast Maker.app */, 61 | ); 62 | name = Products; 63 | sourceTree = ""; 64 | }; 65 | 65BBD22916B5324400CF7E29 /* Frameworks */ = { 66 | isa = PBXGroup; 67 | children = ( 68 | 65BBD22A16B5324400CF7E29 /* Cocoa.framework */, 69 | 65BBD22C16B5324400CF7E29 /* Other Frameworks */, 70 | ); 71 | name = Frameworks; 72 | sourceTree = ""; 73 | }; 74 | 65BBD22C16B5324400CF7E29 /* Other Frameworks */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 65BBD22D16B5324400CF7E29 /* AppKit.framework */, 78 | 65BBD22E16B5324400CF7E29 /* CoreData.framework */, 79 | 65BBD22F16B5324400CF7E29 /* Foundation.framework */, 80 | ); 81 | name = "Other Frameworks"; 82 | sourceTree = ""; 83 | }; 84 | 65BBD23016B5324400CF7E29 /* AboutCast Maker */ = { 85 | isa = PBXGroup; 86 | children = ( 87 | 65BBD23C16B5324400CF7E29 /* MDDocument.h */, 88 | 65BBD23D16B5324400CF7E29 /* MDDocument.m */, 89 | 65BBD23F16B5324400CF7E29 /* MDDocument.xib */, 90 | 65BBD24216B5324500CF7E29 /* MainMenu.xib */, 91 | 65BBD23116B5324400CF7E29 /* Supporting Files */, 92 | ); 93 | path = "AboutCast Maker"; 94 | sourceTree = ""; 95 | }; 96 | 65BBD23116B5324400CF7E29 /* Supporting Files */ = { 97 | isa = PBXGroup; 98 | children = ( 99 | 65BBD23216B5324400CF7E29 /* AboutCast Maker-Info.plist */, 100 | 65BBD23316B5324400CF7E29 /* InfoPlist.strings */, 101 | 65BBD23616B5324400CF7E29 /* main.m */, 102 | 65BBD23816B5324400CF7E29 /* AboutCast Maker-Prefix.pch */, 103 | 65BBD23916B5324400CF7E29 /* Credits.rtf */, 104 | ); 105 | name = "Supporting Files"; 106 | sourceTree = ""; 107 | }; 108 | /* End PBXGroup section */ 109 | 110 | /* Begin PBXNativeTarget section */ 111 | 65BBD22516B5324400CF7E29 /* AboutCast Maker */ = { 112 | isa = PBXNativeTarget; 113 | buildConfigurationList = 65BBD24716B5324500CF7E29 /* Build configuration list for PBXNativeTarget "AboutCast Maker" */; 114 | buildPhases = ( 115 | 65BBD22216B5324400CF7E29 /* Sources */, 116 | 65BBD22316B5324400CF7E29 /* Frameworks */, 117 | 65BBD22416B5324400CF7E29 /* Resources */, 118 | ); 119 | buildRules = ( 120 | ); 121 | dependencies = ( 122 | ); 123 | name = "AboutCast Maker"; 124 | productName = "AboutCast Maker"; 125 | productReference = 65BBD22616B5324400CF7E29 /* AboutCast Maker.app */; 126 | productType = "com.apple.product-type.application"; 127 | }; 128 | /* End PBXNativeTarget section */ 129 | 130 | /* Begin PBXProject section */ 131 | 65BBD21D16B5324400CF7E29 /* Project object */ = { 132 | isa = PBXProject; 133 | attributes = { 134 | CLASSPREFIX = MD; 135 | LastUpgradeCheck = 0450; 136 | ORGANIZATIONNAME = "Mochi Development, Inc."; 137 | }; 138 | buildConfigurationList = 65BBD22016B5324400CF7E29 /* Build configuration list for PBXProject "AboutCast Maker" */; 139 | compatibilityVersion = "Xcode 3.2"; 140 | developmentRegion = English; 141 | hasScannedForEncodings = 0; 142 | knownRegions = ( 143 | en, 144 | ); 145 | mainGroup = 65BBD21B16B5324400CF7E29; 146 | productRefGroup = 65BBD22716B5324400CF7E29 /* Products */; 147 | projectDirPath = ""; 148 | projectRoot = ""; 149 | targets = ( 150 | 65BBD22516B5324400CF7E29 /* AboutCast Maker */, 151 | ); 152 | }; 153 | /* End PBXProject section */ 154 | 155 | /* Begin PBXResourcesBuildPhase section */ 156 | 65BBD22416B5324400CF7E29 /* Resources */ = { 157 | isa = PBXResourcesBuildPhase; 158 | buildActionMask = 2147483647; 159 | files = ( 160 | 65BBD23516B5324400CF7E29 /* InfoPlist.strings in Resources */, 161 | 65BBD23B16B5324400CF7E29 /* Credits.rtf in Resources */, 162 | 65BBD24116B5324400CF7E29 /* MDDocument.xib in Resources */, 163 | 65BBD24416B5324500CF7E29 /* MainMenu.xib in Resources */, 164 | ); 165 | runOnlyForDeploymentPostprocessing = 0; 166 | }; 167 | /* End PBXResourcesBuildPhase section */ 168 | 169 | /* Begin PBXSourcesBuildPhase section */ 170 | 65BBD22216B5324400CF7E29 /* Sources */ = { 171 | isa = PBXSourcesBuildPhase; 172 | buildActionMask = 2147483647; 173 | files = ( 174 | 65BBD23716B5324400CF7E29 /* main.m in Sources */, 175 | 65BBD23E16B5324400CF7E29 /* MDDocument.m in Sources */, 176 | ); 177 | runOnlyForDeploymentPostprocessing = 0; 178 | }; 179 | /* End PBXSourcesBuildPhase section */ 180 | 181 | /* Begin PBXVariantGroup section */ 182 | 65BBD23316B5324400CF7E29 /* InfoPlist.strings */ = { 183 | isa = PBXVariantGroup; 184 | children = ( 185 | 65BBD23416B5324400CF7E29 /* en */, 186 | ); 187 | name = InfoPlist.strings; 188 | sourceTree = ""; 189 | }; 190 | 65BBD23916B5324400CF7E29 /* Credits.rtf */ = { 191 | isa = PBXVariantGroup; 192 | children = ( 193 | 65BBD23A16B5324400CF7E29 /* en */, 194 | ); 195 | name = Credits.rtf; 196 | sourceTree = ""; 197 | }; 198 | 65BBD23F16B5324400CF7E29 /* MDDocument.xib */ = { 199 | isa = PBXVariantGroup; 200 | children = ( 201 | 65BBD24016B5324400CF7E29 /* en */, 202 | ); 203 | name = MDDocument.xib; 204 | sourceTree = ""; 205 | }; 206 | 65BBD24216B5324500CF7E29 /* MainMenu.xib */ = { 207 | isa = PBXVariantGroup; 208 | children = ( 209 | 65BBD24316B5324500CF7E29 /* en */, 210 | ); 211 | name = MainMenu.xib; 212 | sourceTree = ""; 213 | }; 214 | /* End PBXVariantGroup section */ 215 | 216 | /* Begin XCBuildConfiguration section */ 217 | 65BBD24516B5324500CF7E29 /* Debug */ = { 218 | isa = XCBuildConfiguration; 219 | buildSettings = { 220 | ALWAYS_SEARCH_USER_PATHS = NO; 221 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 222 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 223 | CLANG_CXX_LIBRARY = "libc++"; 224 | CLANG_ENABLE_OBJC_ARC = YES; 225 | CLANG_WARN_EMPTY_BODY = YES; 226 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 227 | COPY_PHASE_STRIP = NO; 228 | GCC_C_LANGUAGE_STANDARD = gnu99; 229 | GCC_DYNAMIC_NO_PIC = NO; 230 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 231 | GCC_OPTIMIZATION_LEVEL = 0; 232 | GCC_PREPROCESSOR_DEFINITIONS = ( 233 | "DEBUG=1", 234 | "$(inherited)", 235 | ); 236 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 237 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 238 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 239 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 240 | GCC_WARN_UNUSED_VARIABLE = YES; 241 | MACOSX_DEPLOYMENT_TARGET = 10.8; 242 | ONLY_ACTIVE_ARCH = YES; 243 | SDKROOT = macosx; 244 | }; 245 | name = Debug; 246 | }; 247 | 65BBD24616B5324500CF7E29 /* Release */ = { 248 | isa = XCBuildConfiguration; 249 | buildSettings = { 250 | ALWAYS_SEARCH_USER_PATHS = NO; 251 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 252 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 253 | CLANG_CXX_LIBRARY = "libc++"; 254 | CLANG_ENABLE_OBJC_ARC = YES; 255 | CLANG_WARN_EMPTY_BODY = YES; 256 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 257 | COPY_PHASE_STRIP = YES; 258 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 259 | GCC_C_LANGUAGE_STANDARD = gnu99; 260 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 261 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 262 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 263 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 264 | GCC_WARN_UNUSED_VARIABLE = YES; 265 | MACOSX_DEPLOYMENT_TARGET = 10.8; 266 | SDKROOT = macosx; 267 | }; 268 | name = Release; 269 | }; 270 | 65BBD24816B5324500CF7E29 /* Debug */ = { 271 | isa = XCBuildConfiguration; 272 | buildSettings = { 273 | COMBINE_HIDPI_IMAGES = YES; 274 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 275 | GCC_PREFIX_HEADER = "AboutCast Maker/AboutCast Maker-Prefix.pch"; 276 | INFOPLIST_FILE = "AboutCast Maker/AboutCast Maker-Info.plist"; 277 | PRODUCT_NAME = "$(TARGET_NAME)"; 278 | WRAPPER_EXTENSION = app; 279 | }; 280 | name = Debug; 281 | }; 282 | 65BBD24916B5324500CF7E29 /* Release */ = { 283 | isa = XCBuildConfiguration; 284 | buildSettings = { 285 | COMBINE_HIDPI_IMAGES = YES; 286 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 287 | GCC_PREFIX_HEADER = "AboutCast Maker/AboutCast Maker-Prefix.pch"; 288 | INFOPLIST_FILE = "AboutCast Maker/AboutCast Maker-Info.plist"; 289 | PRODUCT_NAME = "$(TARGET_NAME)"; 290 | WRAPPER_EXTENSION = app; 291 | }; 292 | name = Release; 293 | }; 294 | /* End XCBuildConfiguration section */ 295 | 296 | /* Begin XCConfigurationList section */ 297 | 65BBD22016B5324400CF7E29 /* Build configuration list for PBXProject "AboutCast Maker" */ = { 298 | isa = XCConfigurationList; 299 | buildConfigurations = ( 300 | 65BBD24516B5324500CF7E29 /* Debug */, 301 | 65BBD24616B5324500CF7E29 /* Release */, 302 | ); 303 | defaultConfigurationIsVisible = 0; 304 | defaultConfigurationName = Release; 305 | }; 306 | 65BBD24716B5324500CF7E29 /* Build configuration list for PBXNativeTarget "AboutCast Maker" */ = { 307 | isa = XCConfigurationList; 308 | buildConfigurations = ( 309 | 65BBD24816B5324500CF7E29 /* Debug */, 310 | 65BBD24916B5324500CF7E29 /* Release */, 311 | ); 312 | defaultConfigurationIsVisible = 0; 313 | }; 314 | /* End XCConfigurationList section */ 315 | }; 316 | rootObject = 65BBD21D16B5324400CF7E29 /* Project object */; 317 | } 318 | -------------------------------------------------------------------------------- /AboutCast Maker/AboutCast Maker-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDocumentTypes 8 | 9 | 10 | CFBundleTypeExtensions 11 | 12 | aboutcast 13 | 14 | CFBundleTypeIconFile 15 | 16 | CFBundleTypeName 17 | DocumentType 18 | CFBundleTypeOSTypes 19 | 20 | ???? 21 | 22 | CFBundleTypeRole 23 | Editor 24 | NSDocumentClass 25 | MDDocument 26 | 27 | 28 | CFBundleExecutable 29 | ${EXECUTABLE_NAME} 30 | CFBundleIconFile 31 | 32 | CFBundleIdentifier 33 | com.mochidev.${PRODUCT_NAME:rfc1034identifier} 34 | CFBundleInfoDictionaryVersion 35 | 6.0 36 | CFBundleName 37 | ${PRODUCT_NAME} 38 | CFBundlePackageType 39 | APPL 40 | CFBundleShortVersionString 41 | 1.0 42 | CFBundleSignature 43 | ???? 44 | CFBundleVersion 45 | 1 46 | LSApplicationCategoryType 47 | public.app-category.utilities 48 | LSMinimumSystemVersion 49 | ${MACOSX_DEPLOYMENT_TARGET} 50 | NSHumanReadableCopyright 51 | Copyright © 2013 Mochi Development, Inc. All rights reserved. 52 | NSMainNibFile 53 | MainMenu 54 | NSPrincipalClass 55 | NSApplication 56 | 57 | 58 | -------------------------------------------------------------------------------- /AboutCast Maker/AboutCast Maker-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'AboutCast Maker' target in the 'AboutCast Maker' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /AboutCast Maker/MDDocument.h: -------------------------------------------------------------------------------- 1 | // 2 | // MDDocument.h 3 | // AboutCast Maker 4 | // 5 | // Created by Dimitri Bouniol on 1/27/13. 6 | // Copyright (c) 2013 Mochi Development, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MDDocument : NSDocument 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /AboutCast Maker/MDDocument.m: -------------------------------------------------------------------------------- 1 | // 2 | // MDDocument.m 3 | // AboutCast Maker 4 | // 5 | // Created by Dimitri Bouniol on 1/27/13. 6 | // Copyright (c) 2013 Mochi Development, Inc. All rights reserved. 7 | // 8 | 9 | #import "MDDocument.h" 10 | 11 | @implementation MDDocument 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | if (self) { 17 | // Add your subclass-specific initialization here. 18 | } 19 | return self; 20 | } 21 | 22 | - (NSString *)windowNibName 23 | { 24 | // Override returning the nib file name of the document 25 | // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. 26 | return @"MDDocument"; 27 | } 28 | 29 | - (void)windowControllerDidLoadNib:(NSWindowController *)aController 30 | { 31 | [super windowControllerDidLoadNib:aController]; 32 | // Add any code here that needs to be executed once the windowController has loaded the document's window. 33 | } 34 | 35 | + (BOOL)autosavesInPlace 36 | { 37 | return YES; 38 | } 39 | 40 | - (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError 41 | { 42 | // Insert code here to write your document to data of the specified type. If outError != NULL, ensure that you create and set an appropriate error when returning nil. 43 | // You can also choose to override -fileWrapperOfType:error:, -writeToURL:ofType:error:, or -writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead. 44 | NSException *exception = [NSException exceptionWithName:@"UnimplementedMethod" reason:[NSString stringWithFormat:@"%@ is unimplemented", NSStringFromSelector(_cmd)] userInfo:nil]; 45 | @throw exception; 46 | return nil; 47 | } 48 | 49 | - (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError 50 | { 51 | // Insert code here to read your document from the given data of the specified type. If outError != NULL, ensure that you create and set an appropriate error when returning NO. 52 | // You can also choose to override -readFromFileWrapper:ofType:error: or -readFromURL:ofType:error: instead. 53 | // If you override either of these, you should also override -isEntireFileLoaded to return NO if the contents are lazily loaded. 54 | NSException *exception = [NSException exceptionWithName:@"UnimplementedMethod" reason:[NSString stringWithFormat:@"%@ is unimplemented", NSStringFromSelector(_cmd)] userInfo:nil]; 55 | @throw exception; 56 | return YES; 57 | } 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /AboutCast Maker/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /AboutCast Maker/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /AboutCast Maker/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // AboutCast Maker 4 | // 5 | // Created by Dimitri Bouniol on 1/27/13. 6 | // Copyright (c) 2013 Mochi Development, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | return NSApplicationMain(argc, (const char **)argv); 14 | } 15 | -------------------------------------------------------------------------------- /Artwork/Main Screen.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/Artwork/Main Screen.ai -------------------------------------------------------------------------------- /Artwork/Screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/Artwork/Screenshot.png -------------------------------------------------------------------------------- /MDAboutControllerDemo.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 652160A11361673C00113FC9 /* MDACCellBackgroundBottom.png in Resources */ = {isa = PBXBuildFile; fileRef = 6521609B1361673C00113FC9 /* MDACCellBackgroundBottom.png */; }; 11 | 652160A21361673C00113FC9 /* MDACCellBackgroundBottom@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6521609C1361673C00113FC9 /* MDACCellBackgroundBottom@2x.png */; }; 12 | 652160A31361673C00113FC9 /* MDACCellBackgroundMiddle.png in Resources */ = {isa = PBXBuildFile; fileRef = 6521609D1361673C00113FC9 /* MDACCellBackgroundMiddle.png */; }; 13 | 652160A41361673C00113FC9 /* MDACCellBackgroundMiddle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6521609E1361673C00113FC9 /* MDACCellBackgroundMiddle@2x.png */; }; 14 | 652160A51361673C00113FC9 /* MDACCellBackgroundTop.png in Resources */ = {isa = PBXBuildFile; fileRef = 6521609F1361673C00113FC9 /* MDACCellBackgroundTop.png */; }; 15 | 652160A61361673C00113FC9 /* MDACCellBackgroundTop@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160A01361673C00113FC9 /* MDACCellBackgroundTop@2x.png */; }; 16 | 652160BC1362234A00113FC9 /* MDACCellBackgroundSelectedBottom.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B01362234A00113FC9 /* MDACCellBackgroundSelectedBottom.png */; }; 17 | 652160BD1362234A00113FC9 /* MDACCellBackgroundSelectedBottom@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B11362234A00113FC9 /* MDACCellBackgroundSelectedBottom@2x.png */; }; 18 | 652160BE1362234A00113FC9 /* MDACCellBackgroundSelectedMiddle.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B21362234A00113FC9 /* MDACCellBackgroundSelectedMiddle.png */; }; 19 | 652160BF1362234A00113FC9 /* MDACCellBackgroundSelectedMiddle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B31362234A00113FC9 /* MDACCellBackgroundSelectedMiddle@2x.png */; }; 20 | 652160C01362234A00113FC9 /* MDACCellBackgroundSelectedSingle.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B41362234A00113FC9 /* MDACCellBackgroundSelectedSingle.png */; }; 21 | 652160C11362234A00113FC9 /* MDACCellBackgroundSelectedSingle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B51362234A00113FC9 /* MDACCellBackgroundSelectedSingle@2x.png */; }; 22 | 652160C21362234A00113FC9 /* MDACCellBackgroundSelectedTop.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B61362234A00113FC9 /* MDACCellBackgroundSelectedTop.png */; }; 23 | 652160C31362234A00113FC9 /* MDACCellBackgroundSelectedTop@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B71362234A00113FC9 /* MDACCellBackgroundSelectedTop@2x.png */; }; 24 | 652160C41362234A00113FC9 /* MDACCellBackgroundSingle.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B81362234A00113FC9 /* MDACCellBackgroundSingle.png */; }; 25 | 652160C51362234A00113FC9 /* MDACCellBackgroundSingle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160B91362234A00113FC9 /* MDACCellBackgroundSingle@2x.png */; }; 26 | 652160C61362234A00113FC9 /* MDACLinkArrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160BA1362234A00113FC9 /* MDACLinkArrow.png */; }; 27 | 652160C71362234A00113FC9 /* MDACLinkArrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160BB1362234A00113FC9 /* MDACLinkArrow@2x.png */; }; 28 | 652160D01362303400113FC9 /* MDACIconMask.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160CA1362303400113FC9 /* MDACIconMask.png */; }; 29 | 652160D11362303400113FC9 /* MDACIconMask@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160CB1362303400113FC9 /* MDACIconMask@2x.png */; }; 30 | 652160D21362303400113FC9 /* MDACIconMask~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160CC1362303400113FC9 /* MDACIconMask~ipad.png */; }; 31 | 652160D31362303400113FC9 /* MDACIconShadow.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160CD1362303400113FC9 /* MDACIconShadow.png */; }; 32 | 652160D41362303400113FC9 /* MDACIconShadow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160CE1362303400113FC9 /* MDACIconShadow@2x.png */; }; 33 | 652160D51362303400113FC9 /* MDACIconShadow~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160CF1362303400113FC9 /* MDACIconShadow~ipad.png */; }; 34 | 652160D91362309900113FC9 /* Icon57px.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160D61362309900113FC9 /* Icon57px.png */; }; 35 | 652160DA1362309900113FC9 /* Icon72px.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160D71362309900113FC9 /* Icon72px.png */; }; 36 | 652160DB1362309900113FC9 /* Icon114px.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160D81362309900113FC9 /* Icon114px.png */; }; 37 | 652160F61362BBF500113FC9 /* logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160F41362BBF500113FC9 /* logo.png */; }; 38 | 652160F71362BBF500113FC9 /* logo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 652160F51362BBF500113FC9 /* logo@2x.png */; }; 39 | 6525E0891360071900E70F9D /* Credits.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6525E0881360071900E70F9D /* Credits.plist */; }; 40 | 65262AC1135FA02500F99CB5 /* MDAboutController.m in Sources */ = {isa = PBXBuildFile; fileRef = 65262AB7135FA02500F99CB5 /* MDAboutController.m */; }; 41 | 65262AC2135FA02500F99CB5 /* MDACBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = 65262AB9135FA02500F99CB5 /* MDACBackground.png */; }; 42 | 65262AC3135FA02500F99CB5 /* MDACBackground@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 65262ABA135FA02500F99CB5 /* MDACBackground@2x.png */; }; 43 | 65262AC4135FA02500F99CB5 /* MDACDoneButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 65262ABB135FA02500F99CB5 /* MDACDoneButton.png */; }; 44 | 65262AC5135FA02500F99CB5 /* MDACDoneButton@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 65262ABC135FA02500F99CB5 /* MDACDoneButton@2x.png */; }; 45 | 65262AC6135FA02500F99CB5 /* MDACDoneButtonPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 65262ABD135FA02500F99CB5 /* MDACDoneButtonPressed.png */; }; 46 | 65262AC7135FA02500F99CB5 /* MDACDoneButtonPressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 65262ABE135FA02500F99CB5 /* MDACDoneButtonPressed@2x.png */; }; 47 | 65262AC8135FA02500F99CB5 /* MDACTitleBar.png in Resources */ = {isa = PBXBuildFile; fileRef = 65262ABF135FA02500F99CB5 /* MDACTitleBar.png */; }; 48 | 65262AC9135FA02500F99CB5 /* MDACTitleBar@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 65262AC0135FA02500F99CB5 /* MDACTitleBar@2x.png */; }; 49 | 652F7E95135CEF3800B24FF3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 652F7E94135CEF3800B24FF3 /* UIKit.framework */; }; 50 | 652F7E97135CEF3800B24FF3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 652F7E96135CEF3800B24FF3 /* Foundation.framework */; }; 51 | 652F7E99135CEF3800B24FF3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 652F7E98135CEF3800B24FF3 /* CoreGraphics.framework */; }; 52 | 652F7E9F135CEF3900B24FF3 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 652F7E9D135CEF3900B24FF3 /* InfoPlist.strings */; }; 53 | 652F7EA2135CEF3900B24FF3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 652F7EA1135CEF3900B24FF3 /* main.m */; }; 54 | 652F7EA5135CEF3900B24FF3 /* MDAboutControllerAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 652F7EA4135CEF3900B24FF3 /* MDAboutControllerAppDelegate.m */; }; 55 | 652F7EA8135CEF3900B24FF3 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 652F7EA6135CEF3900B24FF3 /* MainWindow.xib */; }; 56 | 652F7EAB135CEF3900B24FF3 /* MDAboutControllerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 652F7EAA135CEF3900B24FF3 /* MDAboutControllerViewController.m */; }; 57 | 652F7EAE135CEF3900B24FF3 /* MDAboutControllerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 652F7EAC135CEF3900B24FF3 /* MDAboutControllerViewController.xib */; }; 58 | 6538F6A6138B1FF2001F72EE /* UIImage+DBMaskedImageAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6538F6A5138B1FF2001F72EE /* UIImage+DBMaskedImageAdditions.m */; }; 59 | 6538F6A9138B211F001F72EE /* MDACTitleBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 6538F6A8138B211F001F72EE /* MDACTitleBar.m */; }; 60 | 6538F6AC138B229C001F72EE /* MDACCredit.m in Sources */ = {isa = PBXBuildFile; fileRef = 6538F6AB138B229C001F72EE /* MDACCredit.m */; }; 61 | 6538F6AF138B2315001F72EE /* MDACCreditItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 6538F6AE138B2314001F72EE /* MDACCreditItem.m */; }; 62 | 6538F6B2138B2405001F72EE /* MDACListCredit.m in Sources */ = {isa = PBXBuildFile; fileRef = 6538F6B1138B2405001F72EE /* MDACListCredit.m */; }; 63 | 6538F6B5138B24BE001F72EE /* MDACTextCredit.m in Sources */ = {isa = PBXBuildFile; fileRef = 6538F6B4138B24BD001F72EE /* MDACTextCredit.m */; }; 64 | 6538F6B8138B25A1001F72EE /* MDACImageCredit.m in Sources */ = {isa = PBXBuildFile; fileRef = 6538F6B7138B259F001F72EE /* MDACImageCredit.m */; }; 65 | 6538F6BB138B25EF001F72EE /* MDACIconCredit.m in Sources */ = {isa = PBXBuildFile; fileRef = 6538F6BA138B25EB001F72EE /* MDACIconCredit.m */; }; 66 | 6565DE9C1391FE810044FDD0 /* MDACWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6565DE9B1391FE810044FDD0 /* MDACWebViewController.m */; }; 67 | 658E2BDD14A9769A004E1A3A /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 658E2BDC14A9769A004E1A3A /* MessageUI.framework */; }; 68 | 658E2BE014A97D7F004E1A3A /* MDAboutNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 658E2BDF14A97D7E004E1A3A /* MDAboutNavigationController.m */; }; 69 | 658E2BE314A9924F004E1A3A /* MDACStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 658E2BE214A9924F004E1A3A /* MDACStyle.m */; }; 70 | 658E2BE614A99268004E1A3A /* MDACMochiDevStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 658E2BE514A99268004E1A3A /* MDACMochiDevStyle.m */; }; 71 | 658E2BEF14A9AA3A004E1A3A /* MDACDarkCellBackgroundBottom.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BE714A9AA3A004E1A3A /* MDACDarkCellBackgroundBottom.png */; }; 72 | 658E2BF014A9AA3A004E1A3A /* MDACDarkCellBackgroundMiddle.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BE814A9AA3A004E1A3A /* MDACDarkCellBackgroundMiddle.png */; }; 73 | 658E2BF114A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedBottom.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BE914A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedBottom.png */; }; 74 | 658E2BF214A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedMiddle.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BEA14A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedMiddle.png */; }; 75 | 658E2BF314A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedTop.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BEB14A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedTop.png */; }; 76 | 658E2BF414A9AA3A004E1A3A /* MDACDarkCellBackgroundTop.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BEC14A9AA3A004E1A3A /* MDACDarkCellBackgroundTop.png */; }; 77 | 658E2BF514A9AA3A004E1A3A /* MDACDarkLinkArrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BED14A9AA3A004E1A3A /* MDACDarkLinkArrow.png */; }; 78 | 658E2BF614A9AA3A004E1A3A /* MDACDarkLinkArrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BEE14A9AA3A004E1A3A /* MDACDarkLinkArrow@2x.png */; }; 79 | 658E2BFD14A9AC0B004E1A3A /* MDACDarkCellBackgroundBottom@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BF714A9AC0B004E1A3A /* MDACDarkCellBackgroundBottom@2x.png */; }; 80 | 658E2BFE14A9AC0B004E1A3A /* MDACDarkCellBackgroundMiddle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BF814A9AC0B004E1A3A /* MDACDarkCellBackgroundMiddle@2x.png */; }; 81 | 658E2BFF14A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedBottom@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BF914A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedBottom@2x.png */; }; 82 | 658E2C0014A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedMiddle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BFA14A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedMiddle@2x.png */; }; 83 | 658E2C0114A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedTop@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BFB14A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedTop@2x.png */; }; 84 | 658E2C0214A9AC0B004E1A3A /* MDACDarkCellBackgroundTop@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2BFC14A9AC0B004E1A3A /* MDACDarkCellBackgroundTop@2x.png */; }; 85 | 658E2C0714A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2C0314A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle.png */; }; 86 | 658E2C0814A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2C0414A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle@2x.png */; }; 87 | 658E2C0914A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2C0514A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle.png */; }; 88 | 658E2C0A14A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 658E2C0614A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle@2x.png */; }; 89 | 65AFED78150CBBFD00B79806 /* Icon144px.png in Resources */ = {isa = PBXBuildFile; fileRef = 65AFED77150CBBFD00B79806 /* Icon144px.png */; }; 90 | 65AFED7C150CBEE700B79806 /* MDACIconMask@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 65AFED7A150CBEE700B79806 /* MDACIconMask@2x~ipad.png */; }; 91 | 65AFED7D150CBEE700B79806 /* MDACIconShadow@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 65AFED7B150CBEE700B79806 /* MDACIconShadow@2x~ipad.png */; }; 92 | 65BA3AC2161BDA5D0090C1FF /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 65BA3AC1161BDA5D0090C1FF /* Default-568h@2x.png */; }; 93 | 65BBD1E616B4FE3600CF7E29 /* MDACIconOverlay.png in Resources */ = {isa = PBXBuildFile; fileRef = 65BBD1E216B4FE3600CF7E29 /* MDACIconOverlay.png */; }; 94 | 65BBD1E716B4FE3600CF7E29 /* MDACIconOverlay@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 65BBD1E316B4FE3600CF7E29 /* MDACIconOverlay@2x.png */; }; 95 | 65BBD1E816B4FE3600CF7E29 /* MDACIconOverlay@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 65BBD1E416B4FE3600CF7E29 /* MDACIconOverlay@2x~ipad.png */; }; 96 | 65BBD1E916B4FE3600CF7E29 /* MDACIconOverlay~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 65BBD1E516B4FE3600CF7E29 /* MDACIconOverlay~ipad.png */; }; 97 | 65BBD1EB16B52FAF00CF7E29 /* SampleAppCast.plist in Resources */ = {isa = PBXBuildFile; fileRef = 65BBD1EA16B52FAF00CF7E29 /* SampleAppCast.plist */; }; 98 | /* End PBXBuildFile section */ 99 | 100 | /* Begin PBXFileReference section */ 101 | 6521609B1361673C00113FC9 /* MDACCellBackgroundBottom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACCellBackgroundBottom.png; sourceTree = ""; }; 102 | 6521609C1361673C00113FC9 /* MDACCellBackgroundBottom@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACCellBackgroundBottom@2x.png"; sourceTree = ""; }; 103 | 6521609D1361673C00113FC9 /* MDACCellBackgroundMiddle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACCellBackgroundMiddle.png; sourceTree = ""; }; 104 | 6521609E1361673C00113FC9 /* MDACCellBackgroundMiddle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACCellBackgroundMiddle@2x.png"; sourceTree = ""; }; 105 | 6521609F1361673C00113FC9 /* MDACCellBackgroundTop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACCellBackgroundTop.png; sourceTree = ""; }; 106 | 652160A01361673C00113FC9 /* MDACCellBackgroundTop@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACCellBackgroundTop@2x.png"; sourceTree = ""; }; 107 | 652160B01362234A00113FC9 /* MDACCellBackgroundSelectedBottom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACCellBackgroundSelectedBottom.png; sourceTree = ""; }; 108 | 652160B11362234A00113FC9 /* MDACCellBackgroundSelectedBottom@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACCellBackgroundSelectedBottom@2x.png"; sourceTree = ""; }; 109 | 652160B21362234A00113FC9 /* MDACCellBackgroundSelectedMiddle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACCellBackgroundSelectedMiddle.png; sourceTree = ""; }; 110 | 652160B31362234A00113FC9 /* MDACCellBackgroundSelectedMiddle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACCellBackgroundSelectedMiddle@2x.png"; sourceTree = ""; }; 111 | 652160B41362234A00113FC9 /* MDACCellBackgroundSelectedSingle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACCellBackgroundSelectedSingle.png; sourceTree = ""; }; 112 | 652160B51362234A00113FC9 /* MDACCellBackgroundSelectedSingle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACCellBackgroundSelectedSingle@2x.png"; sourceTree = ""; }; 113 | 652160B61362234A00113FC9 /* MDACCellBackgroundSelectedTop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACCellBackgroundSelectedTop.png; sourceTree = ""; }; 114 | 652160B71362234A00113FC9 /* MDACCellBackgroundSelectedTop@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACCellBackgroundSelectedTop@2x.png"; sourceTree = ""; }; 115 | 652160B81362234A00113FC9 /* MDACCellBackgroundSingle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACCellBackgroundSingle.png; sourceTree = ""; }; 116 | 652160B91362234A00113FC9 /* MDACCellBackgroundSingle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACCellBackgroundSingle@2x.png"; sourceTree = ""; }; 117 | 652160BA1362234A00113FC9 /* MDACLinkArrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACLinkArrow.png; sourceTree = ""; }; 118 | 652160BB1362234A00113FC9 /* MDACLinkArrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACLinkArrow@2x.png"; sourceTree = ""; }; 119 | 652160C9136229C000113FC9 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = ""; }; 120 | 652160CA1362303400113FC9 /* MDACIconMask.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACIconMask.png; sourceTree = ""; }; 121 | 652160CB1362303400113FC9 /* MDACIconMask@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACIconMask@2x.png"; sourceTree = ""; }; 122 | 652160CC1362303400113FC9 /* MDACIconMask~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACIconMask~ipad.png"; sourceTree = ""; }; 123 | 652160CD1362303400113FC9 /* MDACIconShadow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACIconShadow.png; sourceTree = ""; }; 124 | 652160CE1362303400113FC9 /* MDACIconShadow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACIconShadow@2x.png"; sourceTree = ""; }; 125 | 652160CF1362303400113FC9 /* MDACIconShadow~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACIconShadow~ipad.png"; sourceTree = ""; }; 126 | 652160D61362309900113FC9 /* Icon57px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon57px.png; sourceTree = ""; }; 127 | 652160D71362309900113FC9 /* Icon72px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon72px.png; sourceTree = ""; }; 128 | 652160D81362309900113FC9 /* Icon114px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon114px.png; sourceTree = ""; }; 129 | 652160F41362BBF500113FC9 /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = ""; }; 130 | 652160F51362BBF500113FC9 /* logo@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "logo@2x.png"; sourceTree = ""; }; 131 | 6525E0881360071900E70F9D /* Credits.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Credits.plist; sourceTree = ""; }; 132 | 65262AB6135FA02500F99CB5 /* MDAboutController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDAboutController.h; sourceTree = ""; }; 133 | 65262AB7135FA02500F99CB5 /* MDAboutController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDAboutController.m; sourceTree = ""; }; 134 | 65262AB9135FA02500F99CB5 /* MDACBackground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACBackground.png; sourceTree = ""; }; 135 | 65262ABA135FA02500F99CB5 /* MDACBackground@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACBackground@2x.png"; sourceTree = ""; }; 136 | 65262ABB135FA02500F99CB5 /* MDACDoneButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDoneButton.png; sourceTree = ""; }; 137 | 65262ABC135FA02500F99CB5 /* MDACDoneButton@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDoneButton@2x.png"; sourceTree = ""; }; 138 | 65262ABD135FA02500F99CB5 /* MDACDoneButtonPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDoneButtonPressed.png; sourceTree = ""; }; 139 | 65262ABE135FA02500F99CB5 /* MDACDoneButtonPressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDoneButtonPressed@2x.png"; sourceTree = ""; }; 140 | 65262ABF135FA02500F99CB5 /* MDACTitleBar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACTitleBar.png; sourceTree = ""; }; 141 | 65262AC0135FA02500F99CB5 /* MDACTitleBar@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACTitleBar@2x.png"; sourceTree = ""; }; 142 | 652F7E90135CEF3800B24FF3 /* MDAboutController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MDAboutController.app; sourceTree = BUILT_PRODUCTS_DIR; }; 143 | 652F7E94135CEF3800B24FF3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 144 | 652F7E96135CEF3800B24FF3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 145 | 652F7E98135CEF3800B24FF3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 146 | 652F7E9C135CEF3900B24FF3 /* MDAboutController-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MDAboutController-Info.plist"; sourceTree = ""; }; 147 | 652F7E9E135CEF3900B24FF3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 148 | 652F7EA0135CEF3900B24FF3 /* MDAboutController-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MDAboutController-Prefix.pch"; sourceTree = ""; }; 149 | 652F7EA1135CEF3900B24FF3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 150 | 652F7EA3135CEF3900B24FF3 /* MDAboutControllerAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MDAboutControllerAppDelegate.h; sourceTree = ""; }; 151 | 652F7EA4135CEF3900B24FF3 /* MDAboutControllerAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MDAboutControllerAppDelegate.m; sourceTree = ""; }; 152 | 652F7EA9135CEF3900B24FF3 /* MDAboutControllerViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MDAboutControllerViewController.h; sourceTree = ""; }; 153 | 652F7EAA135CEF3900B24FF3 /* MDAboutControllerViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MDAboutControllerViewController.m; sourceTree = ""; }; 154 | 6538F6A4138B1FF1001F72EE /* UIImage+DBMaskedImageAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+DBMaskedImageAdditions.h"; sourceTree = ""; }; 155 | 6538F6A5138B1FF2001F72EE /* UIImage+DBMaskedImageAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+DBMaskedImageAdditions.m"; sourceTree = ""; }; 156 | 6538F6A7138B211F001F72EE /* MDACTitleBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACTitleBar.h; sourceTree = ""; }; 157 | 6538F6A8138B211F001F72EE /* MDACTitleBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACTitleBar.m; sourceTree = ""; }; 158 | 6538F6AA138B229C001F72EE /* MDACCredit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACCredit.h; sourceTree = ""; }; 159 | 6538F6AB138B229C001F72EE /* MDACCredit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACCredit.m; sourceTree = ""; }; 160 | 6538F6AD138B2314001F72EE /* MDACCreditItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACCreditItem.h; sourceTree = ""; }; 161 | 6538F6AE138B2314001F72EE /* MDACCreditItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACCreditItem.m; sourceTree = ""; }; 162 | 6538F6B0138B2404001F72EE /* MDACListCredit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACListCredit.h; sourceTree = ""; }; 163 | 6538F6B1138B2405001F72EE /* MDACListCredit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACListCredit.m; sourceTree = ""; }; 164 | 6538F6B3138B24BC001F72EE /* MDACTextCredit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACTextCredit.h; sourceTree = ""; }; 165 | 6538F6B4138B24BD001F72EE /* MDACTextCredit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACTextCredit.m; sourceTree = ""; }; 166 | 6538F6B6138B259F001F72EE /* MDACImageCredit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACImageCredit.h; sourceTree = ""; }; 167 | 6538F6B7138B259F001F72EE /* MDACImageCredit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACImageCredit.m; sourceTree = ""; }; 168 | 6538F6B9138B25EA001F72EE /* MDACIconCredit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACIconCredit.h; sourceTree = ""; }; 169 | 6538F6BA138B25EB001F72EE /* MDACIconCredit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACIconCredit.m; sourceTree = ""; }; 170 | 6538F6BC138B2713001F72EE /* MDACClasses.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACClasses.h; sourceTree = ""; }; 171 | 6565DE9A1391FE810044FDD0 /* MDACWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACWebViewController.h; sourceTree = ""; }; 172 | 6565DE9B1391FE810044FDD0 /* MDACWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACWebViewController.m; sourceTree = ""; }; 173 | 658E2BDC14A9769A004E1A3A /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; 174 | 658E2BDE14A97D7E004E1A3A /* MDAboutNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDAboutNavigationController.h; sourceTree = ""; }; 175 | 658E2BDF14A97D7E004E1A3A /* MDAboutNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDAboutNavigationController.m; sourceTree = ""; }; 176 | 658E2BE114A9924F004E1A3A /* MDACStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACStyle.h; sourceTree = ""; }; 177 | 658E2BE214A9924F004E1A3A /* MDACStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACStyle.m; sourceTree = ""; }; 178 | 658E2BE414A99267004E1A3A /* MDACMochiDevStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDACMochiDevStyle.h; sourceTree = ""; }; 179 | 658E2BE514A99268004E1A3A /* MDACMochiDevStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MDACMochiDevStyle.m; sourceTree = ""; }; 180 | 658E2BE714A9AA3A004E1A3A /* MDACDarkCellBackgroundBottom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDarkCellBackgroundBottom.png; sourceTree = ""; }; 181 | 658E2BE814A9AA3A004E1A3A /* MDACDarkCellBackgroundMiddle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDarkCellBackgroundMiddle.png; sourceTree = ""; }; 182 | 658E2BE914A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedBottom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDarkCellBackgroundSelectedBottom.png; sourceTree = ""; }; 183 | 658E2BEA14A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedMiddle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDarkCellBackgroundSelectedMiddle.png; sourceTree = ""; }; 184 | 658E2BEB14A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedTop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDarkCellBackgroundSelectedTop.png; sourceTree = ""; }; 185 | 658E2BEC14A9AA3A004E1A3A /* MDACDarkCellBackgroundTop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDarkCellBackgroundTop.png; sourceTree = ""; }; 186 | 658E2BED14A9AA3A004E1A3A /* MDACDarkLinkArrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDarkLinkArrow.png; sourceTree = ""; }; 187 | 658E2BEE14A9AA3A004E1A3A /* MDACDarkLinkArrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDarkLinkArrow@2x.png"; sourceTree = ""; }; 188 | 658E2BF714A9AC0B004E1A3A /* MDACDarkCellBackgroundBottom@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDarkCellBackgroundBottom@2x.png"; sourceTree = ""; }; 189 | 658E2BF814A9AC0B004E1A3A /* MDACDarkCellBackgroundMiddle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDarkCellBackgroundMiddle@2x.png"; sourceTree = ""; }; 190 | 658E2BF914A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedBottom@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDarkCellBackgroundSelectedBottom@2x.png"; sourceTree = ""; }; 191 | 658E2BFA14A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedMiddle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDarkCellBackgroundSelectedMiddle@2x.png"; sourceTree = ""; }; 192 | 658E2BFB14A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedTop@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDarkCellBackgroundSelectedTop@2x.png"; sourceTree = ""; }; 193 | 658E2BFC14A9AC0B004E1A3A /* MDACDarkCellBackgroundTop@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDarkCellBackgroundTop@2x.png"; sourceTree = ""; }; 194 | 658E2C0314A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDarkCellBackgroundSelectedSingle.png; sourceTree = ""; }; 195 | 658E2C0414A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDarkCellBackgroundSelectedSingle@2x.png"; sourceTree = ""; }; 196 | 658E2C0514A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACDarkCellBackgroundSingle.png; sourceTree = ""; }; 197 | 658E2C0614A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACDarkCellBackgroundSingle@2x.png"; sourceTree = ""; }; 198 | 65AFED77150CBBFD00B79806 /* Icon144px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon144px.png; sourceTree = ""; }; 199 | 65AFED7A150CBEE700B79806 /* MDACIconMask@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACIconMask@2x~ipad.png"; sourceTree = ""; }; 200 | 65AFED7B150CBEE700B79806 /* MDACIconShadow@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACIconShadow@2x~ipad.png"; sourceTree = ""; }; 201 | 65BA3AC1161BDA5D0090C1FF /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; 202 | 65BBD1D816B4BF7800CF7E29 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = ""; }; 203 | 65BBD1D916B4BF7800CF7E29 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MDAboutControllerViewController.xib; sourceTree = ""; }; 204 | 65BBD1DA16B4BF9300CF7E29 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/MainWindow.strings; sourceTree = ""; }; 205 | 65BBD1DB16B4BF9300CF7E29 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/MDAboutControllerViewController.strings; sourceTree = ""; }; 206 | 65BBD1DC16B4BF9300CF7E29 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = ""; }; 207 | 65BBD1E216B4FE3600CF7E29 /* MDACIconOverlay.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MDACIconOverlay.png; sourceTree = ""; }; 208 | 65BBD1E316B4FE3600CF7E29 /* MDACIconOverlay@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACIconOverlay@2x.png"; sourceTree = ""; }; 209 | 65BBD1E416B4FE3600CF7E29 /* MDACIconOverlay@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACIconOverlay@2x~ipad.png"; sourceTree = ""; }; 210 | 65BBD1E516B4FE3600CF7E29 /* MDACIconOverlay~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MDACIconOverlay~ipad.png"; sourceTree = ""; }; 211 | 65BBD1EA16B52FAF00CF7E29 /* SampleAppCast.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = SampleAppCast.plist; sourceTree = ""; }; 212 | /* End PBXFileReference section */ 213 | 214 | /* Begin PBXFrameworksBuildPhase section */ 215 | 652F7E8D135CEF3800B24FF3 /* Frameworks */ = { 216 | isa = PBXFrameworksBuildPhase; 217 | buildActionMask = 2147483647; 218 | files = ( 219 | 658E2BDD14A9769A004E1A3A /* MessageUI.framework in Frameworks */, 220 | 652F7E95135CEF3800B24FF3 /* UIKit.framework in Frameworks */, 221 | 652F7E97135CEF3800B24FF3 /* Foundation.framework in Frameworks */, 222 | 652F7E99135CEF3800B24FF3 /* CoreGraphics.framework in Frameworks */, 223 | ); 224 | runOnlyForDeploymentPostprocessing = 0; 225 | }; 226 | /* End PBXFrameworksBuildPhase section */ 227 | 228 | /* Begin PBXGroup section */ 229 | 65262AB4135FA02500F99CB5 /* MDAboutController */ = { 230 | isa = PBXGroup; 231 | children = ( 232 | 65262AB5135FA02500F99CB5 /* Classes */, 233 | 65262AB8135FA02500F99CB5 /* Images */, 234 | ); 235 | path = MDAboutController; 236 | sourceTree = ""; 237 | }; 238 | 65262AB5135FA02500F99CB5 /* Classes */ = { 239 | isa = PBXGroup; 240 | children = ( 241 | 6538F6BC138B2713001F72EE /* MDACClasses.h */, 242 | 658E2BDE14A97D7E004E1A3A /* MDAboutNavigationController.h */, 243 | 658E2BDF14A97D7E004E1A3A /* MDAboutNavigationController.m */, 244 | 65262AB6135FA02500F99CB5 /* MDAboutController.h */, 245 | 65262AB7135FA02500F99CB5 /* MDAboutController.m */, 246 | 658E2BE114A9924F004E1A3A /* MDACStyle.h */, 247 | 658E2BE214A9924F004E1A3A /* MDACStyle.m */, 248 | 658E2BE414A99267004E1A3A /* MDACMochiDevStyle.h */, 249 | 658E2BE514A99268004E1A3A /* MDACMochiDevStyle.m */, 250 | 6538F6A4138B1FF1001F72EE /* UIImage+DBMaskedImageAdditions.h */, 251 | 6538F6A5138B1FF2001F72EE /* UIImage+DBMaskedImageAdditions.m */, 252 | 6565DE9A1391FE810044FDD0 /* MDACWebViewController.h */, 253 | 6565DE9B1391FE810044FDD0 /* MDACWebViewController.m */, 254 | 6538F6A7138B211F001F72EE /* MDACTitleBar.h */, 255 | 6538F6A8138B211F001F72EE /* MDACTitleBar.m */, 256 | 6538F6AA138B229C001F72EE /* MDACCredit.h */, 257 | 6538F6AB138B229C001F72EE /* MDACCredit.m */, 258 | 6538F6AD138B2314001F72EE /* MDACCreditItem.h */, 259 | 6538F6AE138B2314001F72EE /* MDACCreditItem.m */, 260 | 6538F6B0138B2404001F72EE /* MDACListCredit.h */, 261 | 6538F6B1138B2405001F72EE /* MDACListCredit.m */, 262 | 6538F6B3138B24BC001F72EE /* MDACTextCredit.h */, 263 | 6538F6B4138B24BD001F72EE /* MDACTextCredit.m */, 264 | 6538F6B6138B259F001F72EE /* MDACImageCredit.h */, 265 | 6538F6B7138B259F001F72EE /* MDACImageCredit.m */, 266 | 6538F6B9138B25EA001F72EE /* MDACIconCredit.h */, 267 | 6538F6BA138B25EB001F72EE /* MDACIconCredit.m */, 268 | ); 269 | path = Classes; 270 | sourceTree = ""; 271 | }; 272 | 65262AB8135FA02500F99CB5 /* Images */ = { 273 | isa = PBXGroup; 274 | children = ( 275 | 65BBD1E216B4FE3600CF7E29 /* MDACIconOverlay.png */, 276 | 65BBD1E316B4FE3600CF7E29 /* MDACIconOverlay@2x.png */, 277 | 65BBD1E416B4FE3600CF7E29 /* MDACIconOverlay@2x~ipad.png */, 278 | 65BBD1E516B4FE3600CF7E29 /* MDACIconOverlay~ipad.png */, 279 | 658E2C0314A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle.png */, 280 | 658E2C0414A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle@2x.png */, 281 | 658E2C0514A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle.png */, 282 | 658E2C0614A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle@2x.png */, 283 | 658E2BF714A9AC0B004E1A3A /* MDACDarkCellBackgroundBottom@2x.png */, 284 | 658E2BF814A9AC0B004E1A3A /* MDACDarkCellBackgroundMiddle@2x.png */, 285 | 658E2BF914A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedBottom@2x.png */, 286 | 658E2BFA14A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedMiddle@2x.png */, 287 | 658E2BFB14A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedTop@2x.png */, 288 | 658E2BFC14A9AC0B004E1A3A /* MDACDarkCellBackgroundTop@2x.png */, 289 | 658E2BE714A9AA3A004E1A3A /* MDACDarkCellBackgroundBottom.png */, 290 | 658E2BE814A9AA3A004E1A3A /* MDACDarkCellBackgroundMiddle.png */, 291 | 658E2BE914A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedBottom.png */, 292 | 658E2BEA14A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedMiddle.png */, 293 | 658E2BEB14A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedTop.png */, 294 | 658E2BEC14A9AA3A004E1A3A /* MDACDarkCellBackgroundTop.png */, 295 | 658E2BED14A9AA3A004E1A3A /* MDACDarkLinkArrow.png */, 296 | 658E2BEE14A9AA3A004E1A3A /* MDACDarkLinkArrow@2x.png */, 297 | 652160CA1362303400113FC9 /* MDACIconMask.png */, 298 | 652160CB1362303400113FC9 /* MDACIconMask@2x.png */, 299 | 652160CC1362303400113FC9 /* MDACIconMask~ipad.png */, 300 | 65AFED7A150CBEE700B79806 /* MDACIconMask@2x~ipad.png */, 301 | 652160CD1362303400113FC9 /* MDACIconShadow.png */, 302 | 652160CE1362303400113FC9 /* MDACIconShadow@2x.png */, 303 | 652160CF1362303400113FC9 /* MDACIconShadow~ipad.png */, 304 | 65AFED7B150CBEE700B79806 /* MDACIconShadow@2x~ipad.png */, 305 | 652160B01362234A00113FC9 /* MDACCellBackgroundSelectedBottom.png */, 306 | 652160B11362234A00113FC9 /* MDACCellBackgroundSelectedBottom@2x.png */, 307 | 652160B21362234A00113FC9 /* MDACCellBackgroundSelectedMiddle.png */, 308 | 652160B31362234A00113FC9 /* MDACCellBackgroundSelectedMiddle@2x.png */, 309 | 652160B41362234A00113FC9 /* MDACCellBackgroundSelectedSingle.png */, 310 | 652160B51362234A00113FC9 /* MDACCellBackgroundSelectedSingle@2x.png */, 311 | 652160B61362234A00113FC9 /* MDACCellBackgroundSelectedTop.png */, 312 | 652160B71362234A00113FC9 /* MDACCellBackgroundSelectedTop@2x.png */, 313 | 652160B81362234A00113FC9 /* MDACCellBackgroundSingle.png */, 314 | 652160B91362234A00113FC9 /* MDACCellBackgroundSingle@2x.png */, 315 | 652160BA1362234A00113FC9 /* MDACLinkArrow.png */, 316 | 652160BB1362234A00113FC9 /* MDACLinkArrow@2x.png */, 317 | 6521609B1361673C00113FC9 /* MDACCellBackgroundBottom.png */, 318 | 6521609C1361673C00113FC9 /* MDACCellBackgroundBottom@2x.png */, 319 | 6521609D1361673C00113FC9 /* MDACCellBackgroundMiddle.png */, 320 | 6521609E1361673C00113FC9 /* MDACCellBackgroundMiddle@2x.png */, 321 | 6521609F1361673C00113FC9 /* MDACCellBackgroundTop.png */, 322 | 652160A01361673C00113FC9 /* MDACCellBackgroundTop@2x.png */, 323 | 65262AB9135FA02500F99CB5 /* MDACBackground.png */, 324 | 65262ABA135FA02500F99CB5 /* MDACBackground@2x.png */, 325 | 65262ABB135FA02500F99CB5 /* MDACDoneButton.png */, 326 | 65262ABC135FA02500F99CB5 /* MDACDoneButton@2x.png */, 327 | 65262ABD135FA02500F99CB5 /* MDACDoneButtonPressed.png */, 328 | 65262ABE135FA02500F99CB5 /* MDACDoneButtonPressed@2x.png */, 329 | 65262ABF135FA02500F99CB5 /* MDACTitleBar.png */, 330 | 65262AC0135FA02500F99CB5 /* MDACTitleBar@2x.png */, 331 | ); 332 | path = Images; 333 | sourceTree = ""; 334 | }; 335 | 652F7E85135CEF3800B24FF3 = { 336 | isa = PBXGroup; 337 | children = ( 338 | 652160C9136229C000113FC9 /* README.md */, 339 | 652F7E9A135CEF3800B24FF3 /* MDAboutControllerDemo */, 340 | 652F7E93135CEF3800B24FF3 /* Frameworks */, 341 | 652F7E91135CEF3800B24FF3 /* Products */, 342 | ); 343 | sourceTree = ""; 344 | }; 345 | 652F7E91135CEF3800B24FF3 /* Products */ = { 346 | isa = PBXGroup; 347 | children = ( 348 | 652F7E90135CEF3800B24FF3 /* MDAboutController.app */, 349 | ); 350 | name = Products; 351 | sourceTree = ""; 352 | }; 353 | 652F7E93135CEF3800B24FF3 /* Frameworks */ = { 354 | isa = PBXGroup; 355 | children = ( 356 | 658E2BDC14A9769A004E1A3A /* MessageUI.framework */, 357 | 652F7E94135CEF3800B24FF3 /* UIKit.framework */, 358 | 652F7E96135CEF3800B24FF3 /* Foundation.framework */, 359 | 652F7E98135CEF3800B24FF3 /* CoreGraphics.framework */, 360 | ); 361 | name = Frameworks; 362 | sourceTree = ""; 363 | }; 364 | 652F7E9A135CEF3800B24FF3 /* MDAboutControllerDemo */ = { 365 | isa = PBXGroup; 366 | children = ( 367 | 652F7EA3135CEF3900B24FF3 /* MDAboutControllerAppDelegate.h */, 368 | 652F7EA4135CEF3900B24FF3 /* MDAboutControllerAppDelegate.m */, 369 | 652F7EA6135CEF3900B24FF3 /* MainWindow.xib */, 370 | 652F7EA9135CEF3900B24FF3 /* MDAboutControllerViewController.h */, 371 | 652F7EAA135CEF3900B24FF3 /* MDAboutControllerViewController.m */, 372 | 652F7EAC135CEF3900B24FF3 /* MDAboutControllerViewController.xib */, 373 | 65262AB4135FA02500F99CB5 /* MDAboutController */, 374 | 652F7E9B135CEF3900B24FF3 /* Supporting Files */, 375 | ); 376 | path = MDAboutControllerDemo; 377 | sourceTree = ""; 378 | }; 379 | 652F7E9B135CEF3900B24FF3 /* Supporting Files */ = { 380 | isa = PBXGroup; 381 | children = ( 382 | 65BA3AC1161BDA5D0090C1FF /* Default-568h@2x.png */, 383 | 652160F41362BBF500113FC9 /* logo.png */, 384 | 652160F51362BBF500113FC9 /* logo@2x.png */, 385 | 652160D61362309900113FC9 /* Icon57px.png */, 386 | 652160D71362309900113FC9 /* Icon72px.png */, 387 | 652160D81362309900113FC9 /* Icon114px.png */, 388 | 65AFED77150CBBFD00B79806 /* Icon144px.png */, 389 | 652F7E9C135CEF3900B24FF3 /* MDAboutController-Info.plist */, 390 | 652F7E9D135CEF3900B24FF3 /* InfoPlist.strings */, 391 | 652F7EA0135CEF3900B24FF3 /* MDAboutController-Prefix.pch */, 392 | 652F7EA1135CEF3900B24FF3 /* main.m */, 393 | 6525E0881360071900E70F9D /* Credits.plist */, 394 | 65BBD1EA16B52FAF00CF7E29 /* SampleAppCast.plist */, 395 | ); 396 | name = "Supporting Files"; 397 | sourceTree = ""; 398 | }; 399 | /* End PBXGroup section */ 400 | 401 | /* Begin PBXNativeTarget section */ 402 | 652F7E8F135CEF3800B24FF3 /* MDAboutController */ = { 403 | isa = PBXNativeTarget; 404 | buildConfigurationList = 652F7EB1135CEF3900B24FF3 /* Build configuration list for PBXNativeTarget "MDAboutController" */; 405 | buildPhases = ( 406 | 652F7E8C135CEF3800B24FF3 /* Sources */, 407 | 652F7E8D135CEF3800B24FF3 /* Frameworks */, 408 | 652F7E8E135CEF3800B24FF3 /* Resources */, 409 | ); 410 | buildRules = ( 411 | ); 412 | dependencies = ( 413 | ); 414 | name = MDAboutController; 415 | productName = MDAboutController; 416 | productReference = 652F7E90135CEF3800B24FF3 /* MDAboutController.app */; 417 | productType = "com.apple.product-type.application"; 418 | }; 419 | /* End PBXNativeTarget section */ 420 | 421 | /* Begin PBXProject section */ 422 | 652F7E87135CEF3800B24FF3 /* Project object */ = { 423 | isa = PBXProject; 424 | attributes = { 425 | LastUpgradeCheck = 0450; 426 | ORGANIZATIONNAME = "Mochi Development Inc."; 427 | }; 428 | buildConfigurationList = 652F7E8A135CEF3800B24FF3 /* Build configuration list for PBXProject "MDAboutControllerDemo" */; 429 | compatibilityVersion = "Xcode 3.2"; 430 | developmentRegion = English; 431 | hasScannedForEncodings = 0; 432 | knownRegions = ( 433 | en, 434 | Base, 435 | ja, 436 | ); 437 | mainGroup = 652F7E85135CEF3800B24FF3; 438 | productRefGroup = 652F7E91135CEF3800B24FF3 /* Products */; 439 | projectDirPath = ""; 440 | projectRoot = ""; 441 | targets = ( 442 | 652F7E8F135CEF3800B24FF3 /* MDAboutController */, 443 | ); 444 | }; 445 | /* End PBXProject section */ 446 | 447 | /* Begin PBXResourcesBuildPhase section */ 448 | 652F7E8E135CEF3800B24FF3 /* Resources */ = { 449 | isa = PBXResourcesBuildPhase; 450 | buildActionMask = 2147483647; 451 | files = ( 452 | 652F7E9F135CEF3900B24FF3 /* InfoPlist.strings in Resources */, 453 | 652F7EA8135CEF3900B24FF3 /* MainWindow.xib in Resources */, 454 | 652F7EAE135CEF3900B24FF3 /* MDAboutControllerViewController.xib in Resources */, 455 | 65262AC2135FA02500F99CB5 /* MDACBackground.png in Resources */, 456 | 65262AC3135FA02500F99CB5 /* MDACBackground@2x.png in Resources */, 457 | 65262AC4135FA02500F99CB5 /* MDACDoneButton.png in Resources */, 458 | 65262AC5135FA02500F99CB5 /* MDACDoneButton@2x.png in Resources */, 459 | 65262AC6135FA02500F99CB5 /* MDACDoneButtonPressed.png in Resources */, 460 | 65262AC7135FA02500F99CB5 /* MDACDoneButtonPressed@2x.png in Resources */, 461 | 65262AC8135FA02500F99CB5 /* MDACTitleBar.png in Resources */, 462 | 65262AC9135FA02500F99CB5 /* MDACTitleBar@2x.png in Resources */, 463 | 6525E0891360071900E70F9D /* Credits.plist in Resources */, 464 | 652160A11361673C00113FC9 /* MDACCellBackgroundBottom.png in Resources */, 465 | 652160A21361673C00113FC9 /* MDACCellBackgroundBottom@2x.png in Resources */, 466 | 652160A31361673C00113FC9 /* MDACCellBackgroundMiddle.png in Resources */, 467 | 652160A41361673C00113FC9 /* MDACCellBackgroundMiddle@2x.png in Resources */, 468 | 652160A51361673C00113FC9 /* MDACCellBackgroundTop.png in Resources */, 469 | 652160A61361673C00113FC9 /* MDACCellBackgroundTop@2x.png in Resources */, 470 | 652160BC1362234A00113FC9 /* MDACCellBackgroundSelectedBottom.png in Resources */, 471 | 652160BD1362234A00113FC9 /* MDACCellBackgroundSelectedBottom@2x.png in Resources */, 472 | 652160BE1362234A00113FC9 /* MDACCellBackgroundSelectedMiddle.png in Resources */, 473 | 652160BF1362234A00113FC9 /* MDACCellBackgroundSelectedMiddle@2x.png in Resources */, 474 | 652160C01362234A00113FC9 /* MDACCellBackgroundSelectedSingle.png in Resources */, 475 | 652160C11362234A00113FC9 /* MDACCellBackgroundSelectedSingle@2x.png in Resources */, 476 | 652160C21362234A00113FC9 /* MDACCellBackgroundSelectedTop.png in Resources */, 477 | 652160C31362234A00113FC9 /* MDACCellBackgroundSelectedTop@2x.png in Resources */, 478 | 652160C41362234A00113FC9 /* MDACCellBackgroundSingle.png in Resources */, 479 | 652160C51362234A00113FC9 /* MDACCellBackgroundSingle@2x.png in Resources */, 480 | 652160C61362234A00113FC9 /* MDACLinkArrow.png in Resources */, 481 | 652160C71362234A00113FC9 /* MDACLinkArrow@2x.png in Resources */, 482 | 652160D01362303400113FC9 /* MDACIconMask.png in Resources */, 483 | 652160D11362303400113FC9 /* MDACIconMask@2x.png in Resources */, 484 | 652160D21362303400113FC9 /* MDACIconMask~ipad.png in Resources */, 485 | 652160D31362303400113FC9 /* MDACIconShadow.png in Resources */, 486 | 652160D41362303400113FC9 /* MDACIconShadow@2x.png in Resources */, 487 | 652160D51362303400113FC9 /* MDACIconShadow~ipad.png in Resources */, 488 | 652160D91362309900113FC9 /* Icon57px.png in Resources */, 489 | 652160DA1362309900113FC9 /* Icon72px.png in Resources */, 490 | 652160DB1362309900113FC9 /* Icon114px.png in Resources */, 491 | 652160F61362BBF500113FC9 /* logo.png in Resources */, 492 | 652160F71362BBF500113FC9 /* logo@2x.png in Resources */, 493 | 658E2BEF14A9AA3A004E1A3A /* MDACDarkCellBackgroundBottom.png in Resources */, 494 | 658E2BF014A9AA3A004E1A3A /* MDACDarkCellBackgroundMiddle.png in Resources */, 495 | 658E2BF114A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedBottom.png in Resources */, 496 | 658E2BF214A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedMiddle.png in Resources */, 497 | 658E2BF314A9AA3A004E1A3A /* MDACDarkCellBackgroundSelectedTop.png in Resources */, 498 | 658E2BF414A9AA3A004E1A3A /* MDACDarkCellBackgroundTop.png in Resources */, 499 | 658E2BF514A9AA3A004E1A3A /* MDACDarkLinkArrow.png in Resources */, 500 | 658E2BF614A9AA3A004E1A3A /* MDACDarkLinkArrow@2x.png in Resources */, 501 | 658E2BFD14A9AC0B004E1A3A /* MDACDarkCellBackgroundBottom@2x.png in Resources */, 502 | 658E2BFE14A9AC0B004E1A3A /* MDACDarkCellBackgroundMiddle@2x.png in Resources */, 503 | 658E2BFF14A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedBottom@2x.png in Resources */, 504 | 658E2C0014A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedMiddle@2x.png in Resources */, 505 | 658E2C0114A9AC0B004E1A3A /* MDACDarkCellBackgroundSelectedTop@2x.png in Resources */, 506 | 658E2C0214A9AC0B004E1A3A /* MDACDarkCellBackgroundTop@2x.png in Resources */, 507 | 658E2C0714A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle.png in Resources */, 508 | 658E2C0814A9AE8A004E1A3A /* MDACDarkCellBackgroundSelectedSingle@2x.png in Resources */, 509 | 658E2C0914A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle.png in Resources */, 510 | 658E2C0A14A9AE8A004E1A3A /* MDACDarkCellBackgroundSingle@2x.png in Resources */, 511 | 65AFED78150CBBFD00B79806 /* Icon144px.png in Resources */, 512 | 65AFED7C150CBEE700B79806 /* MDACIconMask@2x~ipad.png in Resources */, 513 | 65AFED7D150CBEE700B79806 /* MDACIconShadow@2x~ipad.png in Resources */, 514 | 65BA3AC2161BDA5D0090C1FF /* Default-568h@2x.png in Resources */, 515 | 65BBD1E616B4FE3600CF7E29 /* MDACIconOverlay.png in Resources */, 516 | 65BBD1E716B4FE3600CF7E29 /* MDACIconOverlay@2x.png in Resources */, 517 | 65BBD1E816B4FE3600CF7E29 /* MDACIconOverlay@2x~ipad.png in Resources */, 518 | 65BBD1E916B4FE3600CF7E29 /* MDACIconOverlay~ipad.png in Resources */, 519 | 65BBD1EB16B52FAF00CF7E29 /* SampleAppCast.plist in Resources */, 520 | ); 521 | runOnlyForDeploymentPostprocessing = 0; 522 | }; 523 | /* End PBXResourcesBuildPhase section */ 524 | 525 | /* Begin PBXSourcesBuildPhase section */ 526 | 652F7E8C135CEF3800B24FF3 /* Sources */ = { 527 | isa = PBXSourcesBuildPhase; 528 | buildActionMask = 2147483647; 529 | files = ( 530 | 652F7EA2135CEF3900B24FF3 /* main.m in Sources */, 531 | 652F7EA5135CEF3900B24FF3 /* MDAboutControllerAppDelegate.m in Sources */, 532 | 652F7EAB135CEF3900B24FF3 /* MDAboutControllerViewController.m in Sources */, 533 | 65262AC1135FA02500F99CB5 /* MDAboutController.m in Sources */, 534 | 6538F6A6138B1FF2001F72EE /* UIImage+DBMaskedImageAdditions.m in Sources */, 535 | 6538F6A9138B211F001F72EE /* MDACTitleBar.m in Sources */, 536 | 6538F6AC138B229C001F72EE /* MDACCredit.m in Sources */, 537 | 6538F6AF138B2315001F72EE /* MDACCreditItem.m in Sources */, 538 | 6538F6B2138B2405001F72EE /* MDACListCredit.m in Sources */, 539 | 6538F6B5138B24BE001F72EE /* MDACTextCredit.m in Sources */, 540 | 6538F6B8138B25A1001F72EE /* MDACImageCredit.m in Sources */, 541 | 6538F6BB138B25EF001F72EE /* MDACIconCredit.m in Sources */, 542 | 6565DE9C1391FE810044FDD0 /* MDACWebViewController.m in Sources */, 543 | 658E2BE014A97D7F004E1A3A /* MDAboutNavigationController.m in Sources */, 544 | 658E2BE314A9924F004E1A3A /* MDACStyle.m in Sources */, 545 | 658E2BE614A99268004E1A3A /* MDACMochiDevStyle.m in Sources */, 546 | ); 547 | runOnlyForDeploymentPostprocessing = 0; 548 | }; 549 | /* End PBXSourcesBuildPhase section */ 550 | 551 | /* Begin PBXVariantGroup section */ 552 | 652F7E9D135CEF3900B24FF3 /* InfoPlist.strings */ = { 553 | isa = PBXVariantGroup; 554 | children = ( 555 | 652F7E9E135CEF3900B24FF3 /* en */, 556 | 65BBD1DC16B4BF9300CF7E29 /* ja */, 557 | ); 558 | name = InfoPlist.strings; 559 | sourceTree = ""; 560 | }; 561 | 652F7EA6135CEF3900B24FF3 /* MainWindow.xib */ = { 562 | isa = PBXVariantGroup; 563 | children = ( 564 | 65BBD1D816B4BF7800CF7E29 /* Base */, 565 | 65BBD1DA16B4BF9300CF7E29 /* ja */, 566 | ); 567 | name = MainWindow.xib; 568 | sourceTree = ""; 569 | }; 570 | 652F7EAC135CEF3900B24FF3 /* MDAboutControllerViewController.xib */ = { 571 | isa = PBXVariantGroup; 572 | children = ( 573 | 65BBD1D916B4BF7800CF7E29 /* Base */, 574 | 65BBD1DB16B4BF9300CF7E29 /* ja */, 575 | ); 576 | name = MDAboutControllerViewController.xib; 577 | sourceTree = ""; 578 | }; 579 | /* End PBXVariantGroup section */ 580 | 581 | /* Begin XCBuildConfiguration section */ 582 | 652F7EAF135CEF3900B24FF3 /* Debug */ = { 583 | isa = XCBuildConfiguration; 584 | buildSettings = { 585 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 586 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 587 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 588 | GCC_C_LANGUAGE_STANDARD = gnu99; 589 | GCC_OPTIMIZATION_LEVEL = 0; 590 | GCC_PREPROCESSOR_DEFINITIONS = DEBUG; 591 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 592 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 593 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 594 | GCC_WARN_UNUSED_VARIABLE = YES; 595 | IPHONEOS_DEPLOYMENT_TARGET = 6.0; 596 | SDKROOT = iphoneos; 597 | TARGETED_DEVICE_FAMILY = 2; 598 | }; 599 | name = Debug; 600 | }; 601 | 652F7EB0135CEF3900B24FF3 /* Release */ = { 602 | isa = XCBuildConfiguration; 603 | buildSettings = { 604 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 605 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 606 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 607 | GCC_C_LANGUAGE_STANDARD = gnu99; 608 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 609 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 610 | GCC_WARN_UNUSED_VARIABLE = YES; 611 | IPHONEOS_DEPLOYMENT_TARGET = 6.0; 612 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 613 | SDKROOT = iphoneos; 614 | TARGETED_DEVICE_FAMILY = 2; 615 | }; 616 | name = Release; 617 | }; 618 | 652F7EB2135CEF3900B24FF3 /* Debug */ = { 619 | isa = XCBuildConfiguration; 620 | buildSettings = { 621 | ALWAYS_SEARCH_USER_PATHS = NO; 622 | CLANG_ENABLE_OBJC_ARC = YES; 623 | COPY_PHASE_STRIP = NO; 624 | GCC_DYNAMIC_NO_PIC = NO; 625 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 626 | GCC_PREFIX_HEADER = "MDAboutControllerDemo/MDAboutController-Prefix.pch"; 627 | INFOPLIST_FILE = "MDAboutControllerDemo/MDAboutController-Info.plist"; 628 | PRODUCT_NAME = "$(TARGET_NAME)"; 629 | TARGETED_DEVICE_FAMILY = "1,2"; 630 | WRAPPER_EXTENSION = app; 631 | }; 632 | name = Debug; 633 | }; 634 | 652F7EB3135CEF3900B24FF3 /* Release */ = { 635 | isa = XCBuildConfiguration; 636 | buildSettings = { 637 | ALWAYS_SEARCH_USER_PATHS = NO; 638 | CLANG_ENABLE_OBJC_ARC = YES; 639 | COPY_PHASE_STRIP = YES; 640 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 641 | GCC_PREFIX_HEADER = "MDAboutControllerDemo/MDAboutController-Prefix.pch"; 642 | INFOPLIST_FILE = "MDAboutControllerDemo/MDAboutController-Info.plist"; 643 | PRODUCT_NAME = "$(TARGET_NAME)"; 644 | TARGETED_DEVICE_FAMILY = "1,2"; 645 | VALIDATE_PRODUCT = YES; 646 | WRAPPER_EXTENSION = app; 647 | }; 648 | name = Release; 649 | }; 650 | /* End XCBuildConfiguration section */ 651 | 652 | /* Begin XCConfigurationList section */ 653 | 652F7E8A135CEF3800B24FF3 /* Build configuration list for PBXProject "MDAboutControllerDemo" */ = { 654 | isa = XCConfigurationList; 655 | buildConfigurations = ( 656 | 652F7EAF135CEF3900B24FF3 /* Debug */, 657 | 652F7EB0135CEF3900B24FF3 /* Release */, 658 | ); 659 | defaultConfigurationIsVisible = 0; 660 | defaultConfigurationName = Release; 661 | }; 662 | 652F7EB1135CEF3900B24FF3 /* Build configuration list for PBXNativeTarget "MDAboutController" */ = { 663 | isa = XCConfigurationList; 664 | buildConfigurations = ( 665 | 652F7EB2135CEF3900B24FF3 /* Debug */, 666 | 652F7EB3135CEF3900B24FF3 /* Release */, 667 | ); 668 | defaultConfigurationIsVisible = 0; 669 | defaultConfigurationName = Release; 670 | }; 671 | /* End XCConfigurationList section */ 672 | }; 673 | rootObject = 652F7E87135CEF3800B24FF3 /* Project object */; 674 | } 675 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/Base.lproj/MDAboutControllerViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1280 5 | 11B2118 6 | 1934 7 | 1138.1 8 | 566.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 931 12 | 13 | 14 | YES 15 | IBProxyObject 16 | IBUIView 17 | IBUIButton 18 | 19 | 20 | YES 21 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 22 | 23 | 24 | PluginDependencyRecalculationVersion 25 | 26 | 27 | 28 | YES 29 | 30 | IBFilesOwner 31 | IBIPadFramework 32 | 33 | 34 | IBFirstResponder 35 | IBIPadFramework 36 | 37 | 38 | 39 | 274 40 | 41 | YES 42 | 43 | 44 | 290 45 | {{20, 20}, {728, 37}} 46 | 47 | 48 | 49 | NO 50 | IBIPadFramework 51 | 0 52 | 0 53 | 1 54 | Show About 55 | 56 | 3 57 | MQA 58 | 59 | 60 | 1 61 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 62 | 63 | 64 | 3 65 | MC41AA 66 | 67 | 68 | Helvetica-Bold 69 | Helvetica 70 | 2 71 | 15 72 | 73 | 74 | Helvetica-Bold 75 | 15 76 | 16 77 | 78 | 79 | 80 | 81 | 290 82 | {{20, 65}, {728, 37}} 83 | 84 | 85 | 86 | NO 87 | IBIPadFramework 88 | 0 89 | 0 90 | 1 91 | Show Nav About 92 | 93 | 94 | 1 95 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 290 104 | {{20, 110}, {728, 37}} 105 | 106 | 107 | 108 | NO 109 | IBIPadFramework 110 | 0 111 | 0 112 | 1 113 | Show Transparent Nav About 114 | 115 | 116 | 1 117 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 118 | 119 | 120 | 121 | 122 | 123 | 124 | {{0, 20}, {768, 1004}} 125 | 126 | 127 | 128 | 129 | 3 130 | MQA 131 | 132 | 2 133 | 134 | 135 | 136 | 2 137 | 138 | IBIPadFramework 139 | 140 | 141 | 142 | 143 | YES 144 | 145 | 146 | view 147 | 148 | 149 | 150 | 3 151 | 152 | 153 | 154 | showAbout: 155 | 156 | 157 | 7 158 | 159 | 5 160 | 161 | 162 | 163 | showNavAbout: 164 | 165 | 166 | 7 167 | 168 | 10 169 | 170 | 171 | 172 | showTransparentNavAbout: 173 | 174 | 175 | 7 176 | 177 | 14 178 | 179 | 180 | 181 | 182 | YES 183 | 184 | 0 185 | 186 | YES 187 | 188 | 189 | 190 | 191 | 192 | -1 193 | 194 | 195 | File's Owner 196 | 197 | 198 | -2 199 | 200 | 201 | 202 | 203 | 2 204 | 205 | 206 | YES 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 4 215 | 216 | 217 | 218 | 219 | 8 220 | 221 | 222 | 223 | 224 | 11 225 | 226 | 227 | 228 | 229 | 230 | 231 | YES 232 | 233 | YES 234 | -1.CustomClassName 235 | -1.IBPluginDependency 236 | -2.CustomClassName 237 | -2.IBPluginDependency 238 | 11.IBPluginDependency 239 | 2.IBPluginDependency 240 | 4.IBPluginDependency 241 | 8.IBPluginDependency 242 | 243 | 244 | YES 245 | MDAboutControllerViewController 246 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 247 | UIResponder 248 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 249 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 250 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 251 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 252 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 253 | 254 | 255 | 256 | YES 257 | 258 | 259 | 260 | 261 | 262 | YES 263 | 264 | 265 | 266 | 267 | 14 268 | 269 | 270 | 271 | YES 272 | 273 | MDAboutControllerViewController 274 | UIViewController 275 | 276 | YES 277 | 278 | YES 279 | hideAbout: 280 | showAbout: 281 | showNavAbout: 282 | showTransparentNavAbout: 283 | 284 | 285 | YES 286 | id 287 | id 288 | id 289 | id 290 | 291 | 292 | 293 | YES 294 | 295 | YES 296 | hideAbout: 297 | showAbout: 298 | showNavAbout: 299 | showTransparentNavAbout: 300 | 301 | 302 | YES 303 | 304 | hideAbout: 305 | id 306 | 307 | 308 | showAbout: 309 | id 310 | 311 | 312 | showNavAbout: 313 | id 314 | 315 | 316 | showTransparentNavAbout: 317 | id 318 | 319 | 320 | 321 | 322 | IBProjectSource 323 | ./Classes/MDAboutControllerViewController.h 324 | 325 | 326 | 327 | 328 | 0 329 | IBIPadFramework 330 | 331 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 332 | 333 | 334 | YES 335 | 3 336 | 931 337 | 338 | 339 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/Base.lproj/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 800 5 | 10D540 6 | 760 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 81 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | 42 | 292 43 | {768, 1024} 44 | 45 | 46 | 1 47 | MSAxIDEAA 48 | 49 | NO 50 | NO 51 | 52 | 2 53 | 54 | IBIPadFramework 55 | YES 56 | 57 | 58 | IBIPadFramework 59 | 60 | 61 | MDAboutControllerViewController 62 | 63 | IBIPadFramework 64 | 65 | 66 | 67 | 68 | YES 69 | 70 | 71 | viewController 72 | 73 | 74 | 75 | 8 76 | 77 | 78 | 79 | delegate 80 | 81 | 82 | 83 | 9 84 | 85 | 86 | 87 | window 88 | 89 | 90 | 91 | 10 92 | 93 | 94 | 95 | 96 | YES 97 | 98 | 0 99 | 100 | 101 | 102 | 103 | 104 | -1 105 | 106 | 107 | File's Owner 108 | 109 | 110 | -2 111 | 112 | 113 | 114 | 115 | 2 116 | 117 | 118 | 119 | 120 | 6 121 | 122 | 123 | MDAboutController App Delegate 124 | 125 | 126 | 7 127 | 128 | 129 | 130 | 131 | 132 | 133 | YES 134 | 135 | YES 136 | -1.CustomClassName 137 | -2.CustomClassName 138 | 2.IBEditorWindowLastContentRect 139 | 2.IBPluginDependency 140 | 6.CustomClassName 141 | 6.IBPluginDependency 142 | 7.CustomClassName 143 | 7.IBEditorWindowLastContentRect 144 | 7.IBPluginDependency 145 | 146 | 147 | YES 148 | UIApplication 149 | UIResponder 150 | {{200, 57}, {783, 799}} 151 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 152 | MDAboutControllerAppDelegate 153 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 154 | MDAboutControllerViewController 155 | {{512, 351}, {320, 480}} 156 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 157 | 158 | 159 | 160 | YES 161 | 162 | 163 | YES 164 | 165 | 166 | 167 | 168 | YES 169 | 170 | 171 | YES 172 | 173 | 174 | 175 | 10 176 | 177 | 178 | 179 | YES 180 | 181 | MDAboutControllerAppDelegate 182 | NSObject 183 | 184 | YES 185 | 186 | YES 187 | viewController 188 | window 189 | 190 | 191 | YES 192 | MDAboutControllerViewController 193 | UIWindow 194 | 195 | 196 | 197 | IBProjectSource 198 | MDAboutControllerAppDelegate.h 199 | 200 | 201 | 202 | MDAboutControllerViewController 203 | UIViewController 204 | 205 | IBProjectSource 206 | MDAboutControllerViewController.h 207 | 208 | 209 | 210 | 211 | YES 212 | 213 | NSObject 214 | 215 | IBFrameworkSource 216 | Foundation.framework/Headers/NSError.h 217 | 218 | 219 | 220 | NSObject 221 | 222 | IBFrameworkSource 223 | Foundation.framework/Headers/NSFileManager.h 224 | 225 | 226 | 227 | NSObject 228 | 229 | IBFrameworkSource 230 | Foundation.framework/Headers/NSKeyValueCoding.h 231 | 232 | 233 | 234 | NSObject 235 | 236 | IBFrameworkSource 237 | Foundation.framework/Headers/NSKeyValueObserving.h 238 | 239 | 240 | 241 | NSObject 242 | 243 | IBFrameworkSource 244 | Foundation.framework/Headers/NSKeyedArchiver.h 245 | 246 | 247 | 248 | NSObject 249 | 250 | IBFrameworkSource 251 | Foundation.framework/Headers/NSNetServices.h 252 | 253 | 254 | 255 | NSObject 256 | 257 | IBFrameworkSource 258 | Foundation.framework/Headers/NSObject.h 259 | 260 | 261 | 262 | NSObject 263 | 264 | IBFrameworkSource 265 | Foundation.framework/Headers/NSPort.h 266 | 267 | 268 | 269 | NSObject 270 | 271 | IBFrameworkSource 272 | Foundation.framework/Headers/NSRunLoop.h 273 | 274 | 275 | 276 | NSObject 277 | 278 | IBFrameworkSource 279 | Foundation.framework/Headers/NSStream.h 280 | 281 | 282 | 283 | NSObject 284 | 285 | IBFrameworkSource 286 | Foundation.framework/Headers/NSThread.h 287 | 288 | 289 | 290 | NSObject 291 | 292 | IBFrameworkSource 293 | Foundation.framework/Headers/NSURL.h 294 | 295 | 296 | 297 | NSObject 298 | 299 | IBFrameworkSource 300 | Foundation.framework/Headers/NSURLConnection.h 301 | 302 | 303 | 304 | NSObject 305 | 306 | IBFrameworkSource 307 | Foundation.framework/Headers/NSXMLParser.h 308 | 309 | 310 | 311 | NSObject 312 | 313 | IBFrameworkSource 314 | UIKit.framework/Headers/UIAccessibility.h 315 | 316 | 317 | 318 | NSObject 319 | 320 | IBFrameworkSource 321 | UIKit.framework/Headers/UINibLoading.h 322 | 323 | 324 | 325 | NSObject 326 | 327 | IBFrameworkSource 328 | UIKit.framework/Headers/UIResponder.h 329 | 330 | 331 | 332 | UIApplication 333 | UIResponder 334 | 335 | IBFrameworkSource 336 | UIKit.framework/Headers/UIApplication.h 337 | 338 | 339 | 340 | UIResponder 341 | NSObject 342 | 343 | 344 | 345 | UIResponder 346 | 347 | IBFrameworkSource 348 | UIKit.framework/Headers/UITextInput.h 349 | 350 | 351 | 352 | UISearchBar 353 | UIView 354 | 355 | IBFrameworkSource 356 | UIKit.framework/Headers/UISearchBar.h 357 | 358 | 359 | 360 | UISearchDisplayController 361 | NSObject 362 | 363 | IBFrameworkSource 364 | UIKit.framework/Headers/UISearchDisplayController.h 365 | 366 | 367 | 368 | UIView 369 | 370 | IBFrameworkSource 371 | UIKit.framework/Headers/UITextField.h 372 | 373 | 374 | 375 | UIView 376 | UIResponder 377 | 378 | IBFrameworkSource 379 | UIKit.framework/Headers/UIView.h 380 | 381 | 382 | 383 | UIViewController 384 | 385 | IBFrameworkSource 386 | UIKit.framework/Headers/UINavigationController.h 387 | 388 | 389 | 390 | UIViewController 391 | 392 | IBFrameworkSource 393 | UIKit.framework/Headers/UISplitViewController.h 394 | 395 | 396 | 397 | UIViewController 398 | 399 | IBFrameworkSource 400 | UIKit.framework/Headers/UITabBarController.h 401 | 402 | 403 | 404 | UIViewController 405 | UIResponder 406 | 407 | IBFrameworkSource 408 | UIKit.framework/Headers/UIViewController.h 409 | 410 | 411 | 412 | UIWindow 413 | UIView 414 | 415 | IBFrameworkSource 416 | UIKit.framework/Headers/UIWindow.h 417 | 418 | 419 | 420 | 421 | 0 422 | IBIPadFramework 423 | 424 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 425 | 426 | 427 | 428 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 429 | 430 | 431 | YES 432 | MDAboutController.xcodeproj 433 | 3 434 | 81 435 | 436 | 437 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/Credits.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Items 7 | 8 | 9 | Link 10 | http://twitter.com/dimitribouniol 11 | Name 12 | Dimitri Bouniol 13 | Role 14 | Creator 15 | 16 | 17 | Name 18 | Dimitri Bouniol 19 | Role 20 | Designer 21 | 22 | 23 | Link 24 | http://doronkatz.com/ 25 | Name 26 | Doron Katz 27 | Role 28 | Contributor 29 | 30 | 31 | Link 32 | http://hennessynet.com/ 33 | Name 34 | Denis Hennessy 35 | Role 36 | Contributor 37 | 38 | 39 | Link 40 | https://github.com/MigrantP 41 | Name 42 | John Arnold 43 | Role 44 | Contributor 45 | 46 | 47 | Name 48 | Mochi Dev 49 | Link 50 | http://mochidev.com/open 51 | Role 52 | Publisher 53 | 54 | 55 | Type 56 | List 57 | 58 | 59 | Items 60 | 61 | 62 | Link 63 | http://elemintsapp.com/ 64 | Name 65 | EleMints 66 | 67 | 68 | Link 69 | http://mochidev.com/ 70 | Name 71 | Mochi Development, Inc. 72 | 73 | 74 | Link 75 | https://github.com/mochidev/MDAboutControllerDemo 76 | Name 77 | MDAboutController 78 | 79 | 80 | Email 81 | support@mochidev.com 82 | EmailName 83 | Mochi Dev Support 84 | Name 85 | Contact Us 86 | 87 | 88 | Title 89 | Links 90 | Type 91 | List 92 | 93 | 94 | Items 95 | 96 | 97 | Controller 98 | MDAboutControllerViewController 99 | Name 100 | Inception? 101 | 102 | 103 | Title 104 | More 105 | Type 106 | List 107 | 108 | 109 | Alignment 110 | Left 111 | Link 112 | https://github.com/mochidev/MDAboutControllerDemo 113 | Text 114 | MDAboutController is a complete About UIViewController package for iOS apps. It automatically fetches info from your Info.plist, and also populates credits from Credits.plist. This repository serves to demonstrate and test the MDAboutController class. Please visit the GitHub repository for the actual code :) 115 | Type 116 | Text 117 | 118 | 119 | Image 120 | logo.png 121 | Type 122 | Image 123 | 124 | 125 | Size 126 | 11 127 | Text 128 | © 2013 Mochi Development, Inc. 129 | See license for distribution. 130 | Type 131 | Text 132 | 133 | 134 | 135 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/MDAboutControllerDemo/Default-568h@2x.png -------------------------------------------------------------------------------- /MDAboutControllerDemo/Icon114px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/MDAboutControllerDemo/Icon114px.png -------------------------------------------------------------------------------- /MDAboutControllerDemo/Icon144px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/MDAboutControllerDemo/Icon144px.png -------------------------------------------------------------------------------- /MDAboutControllerDemo/Icon57px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/MDAboutControllerDemo/Icon57px.png -------------------------------------------------------------------------------- /MDAboutControllerDemo/Icon72px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/MDAboutControllerDemo/Icon72px.png -------------------------------------------------------------------------------- /MDAboutControllerDemo/MDAboutController-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | Icon57px 13 | CFBundleIconFiles 14 | 15 | Icon144px.png 16 | Icon114px.png 17 | Icon72px.png 18 | Icon57px.png 19 | 20 | CFBundleIdentifier 21 | com.mochidev.${PRODUCT_NAME:rfc1034identifier} 22 | CFBundleInfoDictionaryVersion 23 | 6.0 24 | CFBundleName 25 | ${PRODUCT_NAME} 26 | CFBundlePackageType 27 | APPL 28 | CFBundleShortVersionString 29 | 1.1 30 | CFBundleSignature 31 | ???? 32 | CFBundleVersion 33 | 12 34 | LSRequiresIPhoneOS 35 | 36 | NSMainNibFile 37 | MainWindow 38 | UIPrerenderedIcon 39 | 40 | UISupportedInterfaceOrientations 41 | 42 | UIInterfaceOrientationPortrait 43 | UIInterfaceOrientationPortraitUpsideDown 44 | UIInterfaceOrientationLandscapeLeft 45 | UIInterfaceOrientationLandscapeRight 46 | 47 | UISupportedInterfaceOrientations~ipad 48 | 49 | UIInterfaceOrientationPortrait 50 | UIInterfaceOrientationPortraitUpsideDown 51 | UIInterfaceOrientationLandscapeLeft 52 | UIInterfaceOrientationLandscapeRight 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/MDAboutController-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MDAboutController' target in the 'MDAboutController' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/MDAboutControllerAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // MDAboutControllerAppDelegate.h 3 | // MDAboutController 4 | // 5 | // Created by Dimitri Bouniol on 4/18/11. 6 | // Copyright 2013 Mochi Development Inc. All rights reserved. 7 | // 8 | // Copyright (c) 2013 Dimitri Bouniol, Mochi Development, Inc. 9 | // 10 | // Permission is hereby granted, free of charge, to any person obtaining a copy 11 | // of this software, associated artwork, and documentation files (the "Software"), 12 | // to deal in the Software without restriction, including without limitation the 13 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 14 | // sell copies of the Software, and to permit persons to whom the Software is 15 | // furnished to do so, subject to the following conditions: 16 | // 17 | // 1. The above copyright notice and this permission notice shall be included in 18 | // all copies or substantial portions of the Software. 19 | // 2. Neither the name of Mochi Development, Inc. nor the names of its 20 | // contributors or products may be used to endorse or promote products 21 | // derived from this software without specific prior written permission. 22 | // 23 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 28 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 29 | // THE SOFTWARE. 30 | // 31 | // EleMints, the EleMints Icon, Mochi Dev, and the Mochi Development logo are 32 | // copyright Mochi Development, Inc. 33 | // 34 | // Also, it'd be super awesome if you left in the credit line generated 35 | // automatically by the code that links back to this page :) 36 | // 37 | 38 | #import 39 | 40 | @class MDAboutControllerViewController; 41 | 42 | @interface MDAboutControllerAppDelegate : NSObject { 43 | 44 | } 45 | 46 | @property (nonatomic, strong) IBOutlet UIWindow *window; 47 | 48 | @property (nonatomic, strong) IBOutlet MDAboutControllerViewController *viewController; 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/MDAboutControllerAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // MDAboutControllerAppDelegate.m 3 | // MDAboutController 4 | // 5 | // Created by Dimitri Bouniol on 4/18/11. 6 | // Copyright 2013 Mochi Development Inc. All rights reserved. 7 | // 8 | // Copyright (c) 2013 Dimitri Bouniol, Mochi Development, Inc. 9 | // 10 | // Permission is hereby granted, free of charge, to any person obtaining a copy 11 | // of this software, associated artwork, and documentation files (the "Software"), 12 | // to deal in the Software without restriction, including without limitation the 13 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 14 | // sell copies of the Software, and to permit persons to whom the Software is 15 | // furnished to do so, subject to the following conditions: 16 | // 17 | // 1. The above copyright notice and this permission notice shall be included in 18 | // all copies or substantial portions of the Software. 19 | // 2. Neither the name of Mochi Development, Inc. nor the names of its 20 | // contributors or products may be used to endorse or promote products 21 | // derived from this software without specific prior written permission. 22 | // 23 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 28 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 29 | // THE SOFTWARE. 30 | // 31 | // EleMints, the EleMints Icon, Mochi Dev, and the Mochi Development logo are 32 | // copyright Mochi Development, Inc. 33 | // 34 | // Also, it'd be super awesome if you left in the credit line generated 35 | // automatically by the code that links back to this page :) 36 | // 37 | 38 | #import "MDAboutControllerAppDelegate.h" 39 | 40 | #import "MDAboutControllerViewController.h" 41 | 42 | @implementation MDAboutControllerAppDelegate 43 | 44 | 45 | @synthesize window=_window; 46 | 47 | @synthesize viewController=_viewController; 48 | 49 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 50 | { 51 | // Override point for customization after application launch. 52 | 53 | self.window.rootViewController = self.viewController; 54 | [self.window makeKeyAndVisible]; 55 | return YES; 56 | } 57 | 58 | - (void)applicationWillResignActive:(UIApplication *)application 59 | { 60 | /* 61 | Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 62 | Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 63 | */ 64 | } 65 | 66 | - (void)applicationDidEnterBackground:(UIApplication *)application 67 | { 68 | /* 69 | Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 70 | If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 71 | */ 72 | } 73 | 74 | - (void)applicationWillEnterForeground:(UIApplication *)application 75 | { 76 | /* 77 | Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 78 | */ 79 | } 80 | 81 | - (void)applicationDidBecomeActive:(UIApplication *)application 82 | { 83 | /* 84 | Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 85 | */ 86 | } 87 | 88 | - (void)applicationWillTerminate:(UIApplication *)application 89 | { 90 | /* 91 | Called when the application is about to terminate. 92 | Save data if appropriate. 93 | See also applicationDidEnterBackground:. 94 | */ 95 | } 96 | 97 | 98 | @end 99 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/MDAboutControllerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MDAboutControllerViewController.h 3 | // MDAboutController 4 | // 5 | // Created by Dimitri Bouniol on 4/18/11. 6 | // Copyright 2013 Mochi Development Inc. All rights reserved. 7 | // 8 | // Copyright (c) 2013 Dimitri Bouniol, Mochi Development, Inc. 9 | // 10 | // Permission is hereby granted, free of charge, to any person obtaining a copy 11 | // of this software, associated artwork, and documentation files (the "Software"), 12 | // to deal in the Software without restriction, including without limitation the 13 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 14 | // sell copies of the Software, and to permit persons to whom the Software is 15 | // furnished to do so, subject to the following conditions: 16 | // 17 | // 1. The above copyright notice and this permission notice shall be included in 18 | // all copies or substantial portions of the Software. 19 | // 2. Neither the name of Mochi Development, Inc. nor the names of its 20 | // contributors or products may be used to endorse or promote products 21 | // derived from this software without specific prior written permission. 22 | // 23 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 28 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 29 | // THE SOFTWARE. 30 | // 31 | // EleMints, the EleMints Icon, Mochi Dev, and the Mochi Development logo are 32 | // copyright Mochi Development, Inc. 33 | // 34 | // Also, it'd be super awesome if you left in the credit line generated 35 | // automatically by the code that links back to this page :) 36 | // 37 | 38 | #import 39 | #import "MDACClasses.h" 40 | 41 | @interface MDAboutControllerViewController : UIViewController { 42 | MDAboutNavigationController *aboutController; 43 | MDAboutNavigationController *navAboutController; 44 | UINavigationController *transparentNavAboutController; 45 | } 46 | 47 | - (IBAction)showAbout:(id)sender; 48 | - (IBAction)showNavAbout:(id)sender; 49 | - (IBAction)showTransparentNavAbout:(id)sender; 50 | - (IBAction)hideAbout:(id)sender; 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/MDAboutControllerViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MDAboutControllerViewController.m 3 | // MDAboutController 4 | // 5 | // Created by Dimitri Bouniol on 4/18/11. 6 | // Copyright 2013 Mochi Development Inc. All rights reserved. 7 | // 8 | // Copyright (c) 2013 Dimitri Bouniol, Mochi Development, Inc. 9 | // 10 | // Permission is hereby granted, free of charge, to any person obtaining a copy 11 | // of this software, associated artwork, and documentation files (the "Software"), 12 | // to deal in the Software without restriction, including without limitation the 13 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 14 | // sell copies of the Software, and to permit persons to whom the Software is 15 | // furnished to do so, subject to the following conditions: 16 | // 17 | // 1. The above copyright notice and this permission notice shall be included in 18 | // all copies or substantial portions of the Software. 19 | // 2. Neither the name of Mochi Development, Inc. nor the names of its 20 | // contributors or products may be used to endorse or promote products 21 | // derived from this software without specific prior written permission. 22 | // 23 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 28 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 29 | // THE SOFTWARE. 30 | // 31 | // EleMints, the EleMints Icon, Mochi Dev, and the Mochi Development logo are 32 | // copyright Mochi Development, Inc. 33 | // 34 | // Also, it'd be super awesome if you left in the credit line generated 35 | // automatically by the code that links back to this page :) 36 | // 37 | 38 | #import "MDAboutControllerViewController.h" 39 | 40 | @implementation MDAboutControllerViewController 41 | 42 | 43 | - (void)didReceiveMemoryWarning 44 | { 45 | [super didReceiveMemoryWarning]; 46 | 47 | // Check if the about controller is being shown 48 | if (aboutController.parentViewController == nil) { 49 | // Release and set to nil, so we can recreate it if we need to 50 | aboutController = nil; 51 | } 52 | 53 | if (navAboutController.parentViewController == nil) { 54 | navAboutController = nil; 55 | } 56 | 57 | if (transparentNavAboutController.parentViewController == nil) { 58 | transparentNavAboutController = nil; 59 | } 60 | } 61 | 62 | - (IBAction)showAbout:(id)sender 63 | { 64 | // If the view controller doesn't already exist, create it 65 | if (!aboutController) { 66 | aboutController = [[MDAboutNavigationController alloc] initWithStyle:[MDACMochiDevStyle style]]; 67 | } 68 | 69 | // Present to user! 70 | [self presentViewController:aboutController animated:YES completion:NULL]; 71 | } 72 | 73 | - (IBAction)showNavAbout:(id)sender 74 | { 75 | 76 | // If the view controller doesn't already exist, create it 77 | if (!navAboutController) { 78 | navAboutController = [[MDAboutNavigationController alloc] init]; 79 | 80 | navAboutController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 81 | navAboutController.modalPresentationStyle = UIModalPresentationFormSheet; 82 | } 83 | 84 | // Present to user! 85 | [self presentViewController:navAboutController animated:YES completion:NULL]; 86 | } 87 | 88 | - (IBAction)showTransparentNavAbout:(id)sender 89 | { 90 | 91 | // If the view controller doesn't already exist, create it 92 | if (!transparentNavAboutController) { 93 | transparentNavAboutController = [[UINavigationController alloc] init]; 94 | 95 | transparentNavAboutController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 96 | transparentNavAboutController.modalPresentationStyle = UIModalPresentationFormSheet; 97 | 98 | transparentNavAboutController.navigationBar.translucent = YES; 99 | 100 | MDAboutController *aboutCont = [[MDAboutController alloc] init]; 101 | 102 | // aboutCont.backgroundColor = [UIColor groupTableViewBackgroundColor]; 103 | //aboutCont.hasSimpleBackground = YES; 104 | 105 | UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(hideAbout:)]; 106 | aboutCont.navigationItem.rightBarButtonItem = doneButton; 107 | 108 | [transparentNavAboutController pushViewController:aboutCont animated:NO]; 109 | } 110 | 111 | // Present to user! 112 | [self presentViewController:transparentNavAboutController animated:YES completion:NULL]; 113 | } 114 | 115 | - (IBAction)hideAbout:(id)sender 116 | { 117 | [self dismissViewControllerAnimated:YES completion:NULL]; 118 | } 119 | 120 | #pragma mark - View lifecycle 121 | 122 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 123 | { 124 | return YES; 125 | } 126 | 127 | @end 128 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/SampleAppCast.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Icon 7 | EleMintsIcon 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/ja.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | CFBundleDisplayName = "情報コンツロラー"; -------------------------------------------------------------------------------- /MDAboutControllerDemo/ja.lproj/MDAboutControllerViewController.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "IBUIButton"; normalTitle = "Show About"; ObjectID = "4"; */ 3 | "4.normalTitle" = "Show About"; 4 | 5 | /* Class = "IBUIButton"; normalTitle = "Show Nav About"; ObjectID = "8"; */ 6 | "8.normalTitle" = "Show Nav About"; 7 | 8 | /* Class = "IBUIButton"; normalTitle = "Show Transparent Nav About"; ObjectID = "11"; */ 9 | "11.normalTitle" = "Show Transparent Nav About"; 10 | -------------------------------------------------------------------------------- /MDAboutControllerDemo/ja.lproj/MainWindow.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/MDAboutControllerDemo/ja.lproj/MainWindow.strings -------------------------------------------------------------------------------- /MDAboutControllerDemo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/MDAboutControllerDemo/logo.png -------------------------------------------------------------------------------- /MDAboutControllerDemo/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mochidev/MDAboutControllerDemo/a24b7c6cccb63cba2a1ca3fb0141c88705fa9d9f/MDAboutControllerDemo/logo@2x.png -------------------------------------------------------------------------------- /MDAboutControllerDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MDAboutController 4 | // 5 | // Created by Dimitri Bouniol on 4/18/11. 6 | // Copyright 2013 Mochi Development Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | @autoreleasepool { 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | return retVal; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | MDAboutController Demo 2 | ====================== 3 | 4 | ![Screenshot](https://github.com/mochidev/MDAboutControllerDemo/raw/master/Artwork/Screenshot.png) 5 | 6 | Purpose 7 | ------- 8 | 9 | MDAboutController is a complete About UIViewController package for iOS apps. 10 | It automatically fetches info from your Info.plist, and also populates credits 11 | from Credits.plist. This repository serves to demonstrate and test the 12 | MDAboutController class. Please visit the 13 | [MDAboutController](https://github.com/mochidev/MDAboutController) repository 14 | for the actual code :) 15 | 16 | MDAboutController is both iPhone (Portrait and Landscape) and iPad compatible, 17 | retrieves the app's name and version from your Info.plist, and even chooses the 18 | most appropriate icon for the project depending on the device and your choices 19 | in Info.plist. Finally, the controller allows you to add credits, links, images, 20 | and text via a Credits.plist file (examples below). 21 | 22 | If you use MDAboutController in your app, please add it to the 23 | [list](https://github.com/mochidev/MDAboutControllerDemo/wiki/Apps-That-Use-MDAboutController)! 24 | 25 | Installation 26 | ------------ 27 | 28 | ```bash 29 | $ git clone https://github.com/mochidev/MDAboutControllerDemo --recursive 30 | ``` 31 | 32 | To include it into your own projects either download the 33 | [source](https://github.com/mochidev/MDAboutController), or run the following 34 | on your git repo: 35 | 36 | ```bash 37 | $ cd 38 | $ git submodule add git@github.com:mochidev/MDAboutController.git 39 | ``` 40 | 41 | This will allow you to update it at anytime by running `$ git submodule update`. 42 | 43 | Usage 44 | ----- 45 | 46 | Simply add the 47 | [MDAboutController](https://github.com/mochidev/MDAboutController) submodule to 48 | your project, and show the controller via UIViewController's 49 | `presentModalViewController:animated:` method. 50 | 51 | In your interface, define the following instance variable and method: 52 | 53 | ```obj-c 54 | // Defined in interface 55 | MDAboutController *aboutController; 56 | - (IBAction)showAbout:(id)sender; 57 | ``` 58 | 59 | Then, in your UIViewController subclass implementation, implement the following methods: 60 | 61 | ```obj-c 62 | // Implemented in implementation of a UIViewController subclass 63 | - (void)dealloc 64 | { 65 | [aboutController release]; 66 | [super dealloc]; 67 | } 68 | 69 | - (void)didReceiveMemoryWarning 70 | { 71 | [super didReceiveMemoryWarning]; 72 | 73 | // Check if the about controller is being shown 74 | if (aboutController.parentViewController == nil) { 75 | // Release and set to nil, so we can recreate it if we need to 76 | [aboutController release]; 77 | aboutController = nil; 78 | } 79 | } 80 | 81 | - (IBAction)showAbout:(id)sender 82 | { 83 | // If the view controller doesn't already exist, create it 84 | if (!aboutController) { 85 | aboutController = [[MDAboutController alloc] init]; 86 | } 87 | 88 | // Present to user! 89 | [self presentModalViewController:aboutController animated:YES]; 90 | } 91 | ``` 92 | 93 | Alternatively, if you create the view controller as a part of a navigation 94 | controller stack, it will support loading `UIWebView`s and other specified 95 | view controllers. This can be easily done by using the `MDAboutNavigationController` 96 | class, a subclass of `UINavigationController`, in the same way as `MDAboutController` 97 | was used above. Please see the `MDAboutControllerDemo/MDAboutControllerViewController.m` 98 | file for examples. 99 | 100 | To add a custom controller to the navigation stack, first, make sure your 101 | about controller is part of a navigation stack. Then, in your `Credits.plist`, 102 | add a list item with the `Controller` key set to the class name of your 103 | custom `UIViewController` subclass. 104 | 105 | If you would like to include Email support directly in your app, please add 106 | the `MessageUI` framework to your project, otherwise a new message will be 107 | created in Mail.app. The subject will be populated with "App Name 1.0 (55) 108 | Support" automatically. 109 | 110 | If you would like to edit the style of an `MDAboutController` (as is done in 111 | the first demo), subclass `MDACStyle` and return values you wish to change. 112 | Then, when you create your controller, initialize it with that style: 113 | 114 | ```obj-c 115 | - (IBAction)showAbout:(id)sender 116 | { 117 | // If the view controller doesn't already exist, create it 118 | if (!aboutController) { 119 | aboutController = [[MDAboutController alloc] initWithStyle:[MyStyle style]]; 120 | } 121 | 122 | // Present to user! 123 | [self presentModalViewController:aboutController animated:YES]; 124 | } 125 | 126 | - (IBAction)showNavAbout:(id)sender 127 | { 128 | // If the view controller doesn't already exist, create it 129 | if (!aboutNavController) { 130 | aboutNavController = [[MDAboutNavigationController alloc] initWithStyle:[MyStyle style]]; 131 | } 132 | 133 | // Present to user! 134 | [self presentModalViewController:aboutNavController animated:YES]; 135 | } 136 | ``` 137 | 138 | Two styles are included by default. To get the default iOS user interface, 139 | simply create the controller with `[[MDAboutController alloc] init]`, 140 | and `[MDACStyle style]` will automatically be used. Additionally, 141 | the `MDACMochiDevStyle` style class is included to illustrate how 142 | a different style may look. 143 | 144 | ### Credits.plist 145 | ----------------- 146 | 147 | To get the most out of MDAboutViewController, be sure to include a `Credits.plist` 148 | file in your project's resources. This will allow you to add credits, 149 | links, images, and text to your about screen. The property list must be 150 | configured as an array of dictionaries, with each dictionary representing 151 | one section of the about screen. 152 | 153 | Each dictionary should have a `Type` key of type string, which can have a 154 | value of `List` for a group of links or credits, `Text` for blocks of text 155 | or copyright strings, or `Image` for images. 156 | 157 | `Type == List` Keys: 158 | 159 | - `Items` - an array of dictionaries with mandatory key `Name` and other optional keys that descripe the rows: 160 | - `Name` - a required string which will be used as the row text. 161 | - `Role` - an optional string shown in lower case in front of the `Name` string. 162 | - `Link` - an optional URL string to link to if the text is tapped. 163 | - `Email` - an optional Email string that will open an email panel. 164 | - `EmailName` - an optional name to use in the To: field of the email panel. 165 | - `Controller` - an optional controller to push on a navigation stack. 166 | - `Identifier` - an optional identifier to identify individual items. 167 | - `Title` - an optional title string to include above the group. 168 | 169 | `Type == Text` Keys: 170 | 171 | - `Text` - the text to represent. 172 | - `Link` - an optional URL string to link to if the text is tapped. 173 | - `Size` - an optional font size of type number. The default is 13pt. 174 | - `Alignment` - an optional string representing the text alignment. Can be either `Left`, `Right`, or the default, `Center`. 175 | 176 | `Type == Image` Keys: 177 | 178 | - `Image` - the name of the image file, much like it is referenced from `UIImage`'s `imageNamed:` method. 179 | 180 | ### For Open Source Software 181 | ---------------------------- 182 | 183 | If you have open source software which you'd like to add to `MDAboutController` 184 | automatically upon loading, simply implement a `+ (NSDictionary *)MDAboutControllerTextCreditDictionary` 185 | class method as shown below. Valid keys are `Text` and `Link`, both `NSString`s. 186 | If your open source user doesn't use `MDAboutController`, nothing will 187 | happen and code will continue to run just fine. If they do, a single line entry will 188 | automatically show up at the bottom of the controller to credit your code. 189 | 190 | ```obj-c 191 | @implementation MyOpenSourceMainClass 192 | 193 | + (NSDictionary *)MDAboutControllerTextCreditDictionary 194 | { 195 | if (self == [<#MyOpenSourceMainClass#> class]) { // change <#MyOpenSourceMainClass#> to whatever the class name actually is! 196 | return [NSDictionary dictionaryWithObjectsAndKeys:@"Super awesome stuff powered by MyOpenSourceMainClass, by Mr. Awesome!", @"Text", 197 | @"https://awesomesauce.com/", @"Link", nil]; 198 | } 199 | return nil; 200 | } 201 | 202 | ... 203 | 204 | @end 205 | ``` 206 | 207 | To Do 208 | ----- 209 | 210 | - List group titles 211 | - App portfolio for more info on other apps 212 | - Images in lists 213 | 214 | Coding Style Guidelines 215 | ----------------------- 216 | 217 | Please see https://mochidev.com/codestyle 218 | 219 | License 220 | ------- 221 | 222 | Copyright (c) 2013 Dimitri Bouniol, Mochi Development, Inc. 223 | 224 | Permission is hereby granted, free of charge, to any person obtaining a copy 225 | of this software, associated artwork, and documentation files (the "Software"), 226 | to deal in the Software without restriction, including without limitation the 227 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 228 | sell copies of the Software, and to permit persons to whom the Software is 229 | furnished to do so, subject to the following conditions: 230 | 231 | 1. The above copyright notice and this permission notice shall be included in 232 | all copies or substantial portions of the Software. 233 | 2. Neither the name of Mochi Development, Inc. nor the names of its 234 | contributors or products may be used to endorse or promote products 235 | derived from this software without specific prior written permission. 236 | 237 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 238 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 239 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 240 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 241 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 242 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 243 | THE SOFTWARE. 244 | 245 | EleMints, the EleMints Icon, Mochi Dev, and the Mochi Development logo are 246 | copyright Mochi Development, Inc. 247 | 248 | Also, it'd be super awesome if you left in the credit line generated 249 | automatically by the code that links back to this page :) 250 | 251 | Credits 252 | ------- 253 | 254 | - Created by [Dimitri Bouniol](http://twitter.com/dimitribouniol) for [Mochi Development, Inc.](http://mochidev.com/) 255 | - Contributed to by [Doron Katz](http://doronkatz.com) of [DoronKatz.com](http://doronkatz.com) 256 | - Contributed to by [Denis Hennessy](http://hennessynet.com) of [Peer Assembly](http://www.peerassembly.com) 257 | - Contributed to by [John Arnold](https://github.com/MigrantP) of [Handelabra](http://handelabra.com) 258 | --------------------------------------------------------------------------------