├── OverKill.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ ├── binaryboy.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ │ └── gth.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ ├── binaryboy.xcuserdatad │ └── xcschemes │ │ ├── Quotes.xcscheme │ │ └── xcschememanagement.plist │ └── gth.xcuserdatad │ └── xcschemes │ ├── Quotes.xcscheme │ └── xcschememanagement.plist ├── OverKill.xcworkspace ├── contents.xcworkspacedata └── xcuserdata │ └── binaryboy.xcuserdatad │ ├── UserInterfaceState.xcuserstate │ └── xcdebugger │ └── Breakpoints_v2.xcbkptlist ├── OverKill ├── AppDelegate.swift ├── AppsViewController.swift ├── AppsViewController.xib ├── Base.lproj │ └── MainMenu.xib ├── Images.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── StatusBarButtonImage.imageset │ │ ├── Contents.json │ │ └── StatusBarButtonImage.png └── Info.plist ├── Podfile ├── Podfile.lock ├── Pods ├── ITSwitch │ ├── ITSwitch │ │ ├── ITSwitch.h │ │ └── ITSwitch.m │ ├── LICENSE │ └── README.md ├── Manifest.lock ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ └── binaryboy.xcuserdatad │ │ └── xcschemes │ │ ├── ITSwitch.xcscheme │ │ ├── Pods-OverKill.xcscheme │ │ └── xcschememanagement.plist └── Target Support Files │ ├── ITSwitch │ ├── ITSwitch-dummy.m │ ├── ITSwitch-prefix.pch │ ├── ITSwitch-umbrella.h │ ├── ITSwitch.modulemap │ ├── ITSwitch.xcconfig │ └── Info.plist │ └── Pods-OverKill │ ├── Info.plist │ ├── Pods-OverKill-acknowledgements.markdown │ ├── Pods-OverKill-acknowledgements.plist │ ├── Pods-OverKill-dummy.m │ ├── Pods-OverKill-frameworks.sh │ ├── Pods-OverKill-resources.sh │ ├── Pods-OverKill-umbrella.h │ ├── Pods-OverKill.debug.xcconfig │ ├── Pods-OverKill.modulemap │ └── Pods-OverKill.release.xcconfig ├── README.md └── ScreenShot └── ScreenShot1.png /OverKill.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 78A6BBD11ADCB5EE00554D13 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78A6BBD01ADCB5EE00554D13 /* AppDelegate.swift */; }; 11 | 78A6BBD31ADCB5EE00554D13 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 78A6BBD21ADCB5EE00554D13 /* Images.xcassets */; }; 12 | 78A6BBD61ADCB5EE00554D13 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 78A6BBD41ADCB5EE00554D13 /* MainMenu.xib */; }; 13 | 78A6BBED1ADCDDDC00554D13 /* AppsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78A6BBEB1ADCDDDC00554D13 /* AppsViewController.swift */; }; 14 | 78A6BBEE1ADCDDDC00554D13 /* AppsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 78A6BBEC1ADCDDDC00554D13 /* AppsViewController.xib */; }; 15 | 79B633BDAD12AE44F221BBA4 /* Pods_OverKill.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3346B8DA675085BABBBA47B /* Pods_OverKill.framework */; }; 16 | /* End PBXBuildFile section */ 17 | 18 | /* Begin PBXFileReference section */ 19 | 78A6BBCB1ADCB5EE00554D13 /* OverKill.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OverKill.app; sourceTree = BUILT_PRODUCTS_DIR; }; 20 | 78A6BBCF1ADCB5EE00554D13 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 21 | 78A6BBD01ADCB5EE00554D13 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 22 | 78A6BBD21ADCB5EE00554D13 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 23 | 78A6BBD51ADCB5EE00554D13 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 24 | 78A6BBEB1ADCDDDC00554D13 /* AppsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppsViewController.swift; sourceTree = ""; }; 25 | 78A6BBEC1ADCDDDC00554D13 /* AppsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AppsViewController.xib; sourceTree = ""; }; 26 | A8C417A312101CFE18D47CE8 /* Pods-OverKill.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OverKill.release.xcconfig"; path = "Pods/Target Support Files/Pods-OverKill/Pods-OverKill.release.xcconfig"; sourceTree = ""; }; 27 | C3346B8DA675085BABBBA47B /* Pods_OverKill.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OverKill.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | E02F28E50D5D3EB26962CC9C /* Pods-OverKill.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OverKill.debug.xcconfig"; path = "Pods/Target Support Files/Pods-OverKill/Pods-OverKill.debug.xcconfig"; sourceTree = ""; }; 29 | /* End PBXFileReference section */ 30 | 31 | /* Begin PBXFrameworksBuildPhase section */ 32 | 78A6BBC81ADCB5EE00554D13 /* Frameworks */ = { 33 | isa = PBXFrameworksBuildPhase; 34 | buildActionMask = 2147483647; 35 | files = ( 36 | 79B633BDAD12AE44F221BBA4 /* Pods_OverKill.framework in Frameworks */, 37 | ); 38 | runOnlyForDeploymentPostprocessing = 0; 39 | }; 40 | /* End PBXFrameworksBuildPhase section */ 41 | 42 | /* Begin PBXGroup section */ 43 | 5F0F1D5681A652E1315A1BED /* Frameworks */ = { 44 | isa = PBXGroup; 45 | children = ( 46 | C3346B8DA675085BABBBA47B /* Pods_OverKill.framework */, 47 | ); 48 | name = Frameworks; 49 | sourceTree = ""; 50 | }; 51 | 78A6BBC21ADCB5EE00554D13 = { 52 | isa = PBXGroup; 53 | children = ( 54 | 78A6BBCD1ADCB5EE00554D13 /* OverKill */, 55 | 78A6BBCC1ADCB5EE00554D13 /* Products */, 56 | D836764A4694DB14B5057F4D /* Pods */, 57 | 5F0F1D5681A652E1315A1BED /* Frameworks */, 58 | ); 59 | sourceTree = ""; 60 | }; 61 | 78A6BBCC1ADCB5EE00554D13 /* Products */ = { 62 | isa = PBXGroup; 63 | children = ( 64 | 78A6BBCB1ADCB5EE00554D13 /* OverKill.app */, 65 | ); 66 | name = Products; 67 | sourceTree = ""; 68 | }; 69 | 78A6BBCD1ADCB5EE00554D13 /* OverKill */ = { 70 | isa = PBXGroup; 71 | children = ( 72 | 78A6BBD01ADCB5EE00554D13 /* AppDelegate.swift */, 73 | 78A6BBEB1ADCDDDC00554D13 /* AppsViewController.swift */, 74 | 78A6BBEC1ADCDDDC00554D13 /* AppsViewController.xib */, 75 | 78A6BBD21ADCB5EE00554D13 /* Images.xcassets */, 76 | 78A6BBD41ADCB5EE00554D13 /* MainMenu.xib */, 77 | 78A6BBCE1ADCB5EE00554D13 /* Supporting Files */, 78 | ); 79 | path = OverKill; 80 | sourceTree = ""; 81 | }; 82 | 78A6BBCE1ADCB5EE00554D13 /* Supporting Files */ = { 83 | isa = PBXGroup; 84 | children = ( 85 | 78A6BBCF1ADCB5EE00554D13 /* Info.plist */, 86 | ); 87 | name = "Supporting Files"; 88 | sourceTree = ""; 89 | }; 90 | D836764A4694DB14B5057F4D /* Pods */ = { 91 | isa = PBXGroup; 92 | children = ( 93 | E02F28E50D5D3EB26962CC9C /* Pods-OverKill.debug.xcconfig */, 94 | A8C417A312101CFE18D47CE8 /* Pods-OverKill.release.xcconfig */, 95 | ); 96 | name = Pods; 97 | sourceTree = ""; 98 | }; 99 | /* End PBXGroup section */ 100 | 101 | /* Begin PBXNativeTarget section */ 102 | 78A6BBCA1ADCB5EE00554D13 /* OverKill */ = { 103 | isa = PBXNativeTarget; 104 | buildConfigurationList = 78A6BBE51ADCB5EE00554D13 /* Build configuration list for PBXNativeTarget "OverKill" */; 105 | buildPhases = ( 106 | 9A3DB373E0A7D2E58DC5B4EA /* [CP] Check Pods Manifest.lock */, 107 | 78A6BBC71ADCB5EE00554D13 /* Sources */, 108 | 78A6BBC81ADCB5EE00554D13 /* Frameworks */, 109 | 78A6BBC91ADCB5EE00554D13 /* Resources */, 110 | 1CADF984C2A305A08C2FC7CF /* [CP] Embed Pods Frameworks */, 111 | C6E498705EC849A1EBF99DB9 /* [CP] Copy Pods Resources */, 112 | ); 113 | buildRules = ( 114 | ); 115 | dependencies = ( 116 | ); 117 | name = OverKill; 118 | productName = OverKill; 119 | productReference = 78A6BBCB1ADCB5EE00554D13 /* OverKill.app */; 120 | productType = "com.apple.product-type.application"; 121 | }; 122 | /* End PBXNativeTarget section */ 123 | 124 | /* Begin PBXProject section */ 125 | 78A6BBC31ADCB5EE00554D13 /* Project object */ = { 126 | isa = PBXProject; 127 | attributes = { 128 | LastUpgradeCheck = 0820; 129 | ORGANIZATIONNAME = "Razeware LLC"; 130 | TargetAttributes = { 131 | 78A6BBCA1ADCB5EE00554D13 = { 132 | CreatedOnToolsVersion = 6.3; 133 | DevelopmentTeam = LXW484D3N9; 134 | LastSwiftMigration = 0820; 135 | ProvisioningStyle = Automatic; 136 | }; 137 | }; 138 | }; 139 | buildConfigurationList = 78A6BBC61ADCB5EE00554D13 /* Build configuration list for PBXProject "OverKill" */; 140 | compatibilityVersion = "Xcode 3.2"; 141 | developmentRegion = English; 142 | hasScannedForEncodings = 0; 143 | knownRegions = ( 144 | en, 145 | Base, 146 | ); 147 | mainGroup = 78A6BBC21ADCB5EE00554D13; 148 | productRefGroup = 78A6BBCC1ADCB5EE00554D13 /* Products */; 149 | projectDirPath = ""; 150 | projectRoot = ""; 151 | targets = ( 152 | 78A6BBCA1ADCB5EE00554D13 /* OverKill */, 153 | ); 154 | }; 155 | /* End PBXProject section */ 156 | 157 | /* Begin PBXResourcesBuildPhase section */ 158 | 78A6BBC91ADCB5EE00554D13 /* Resources */ = { 159 | isa = PBXResourcesBuildPhase; 160 | buildActionMask = 2147483647; 161 | files = ( 162 | 78A6BBEE1ADCDDDC00554D13 /* AppsViewController.xib in Resources */, 163 | 78A6BBD31ADCB5EE00554D13 /* Images.xcassets in Resources */, 164 | 78A6BBD61ADCB5EE00554D13 /* MainMenu.xib in Resources */, 165 | ); 166 | runOnlyForDeploymentPostprocessing = 0; 167 | }; 168 | /* End PBXResourcesBuildPhase section */ 169 | 170 | /* Begin PBXShellScriptBuildPhase section */ 171 | 1CADF984C2A305A08C2FC7CF /* [CP] Embed Pods Frameworks */ = { 172 | isa = PBXShellScriptBuildPhase; 173 | buildActionMask = 2147483647; 174 | files = ( 175 | ); 176 | inputPaths = ( 177 | ); 178 | name = "[CP] Embed Pods Frameworks"; 179 | outputPaths = ( 180 | ); 181 | runOnlyForDeploymentPostprocessing = 0; 182 | shellPath = /bin/sh; 183 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-OverKill/Pods-OverKill-frameworks.sh\"\n"; 184 | showEnvVarsInLog = 0; 185 | }; 186 | 9A3DB373E0A7D2E58DC5B4EA /* [CP] Check Pods Manifest.lock */ = { 187 | isa = PBXShellScriptBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | ); 191 | inputPaths = ( 192 | ); 193 | name = "[CP] Check Pods Manifest.lock"; 194 | outputPaths = ( 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | shellPath = /bin/sh; 198 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 199 | showEnvVarsInLog = 0; 200 | }; 201 | C6E498705EC849A1EBF99DB9 /* [CP] Copy Pods Resources */ = { 202 | isa = PBXShellScriptBuildPhase; 203 | buildActionMask = 2147483647; 204 | files = ( 205 | ); 206 | inputPaths = ( 207 | ); 208 | name = "[CP] Copy Pods Resources"; 209 | outputPaths = ( 210 | ); 211 | runOnlyForDeploymentPostprocessing = 0; 212 | shellPath = /bin/sh; 213 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-OverKill/Pods-OverKill-resources.sh\"\n"; 214 | showEnvVarsInLog = 0; 215 | }; 216 | /* End PBXShellScriptBuildPhase section */ 217 | 218 | /* Begin PBXSourcesBuildPhase section */ 219 | 78A6BBC71ADCB5EE00554D13 /* Sources */ = { 220 | isa = PBXSourcesBuildPhase; 221 | buildActionMask = 2147483647; 222 | files = ( 223 | 78A6BBD11ADCB5EE00554D13 /* AppDelegate.swift in Sources */, 224 | 78A6BBED1ADCDDDC00554D13 /* AppsViewController.swift in Sources */, 225 | ); 226 | runOnlyForDeploymentPostprocessing = 0; 227 | }; 228 | /* End PBXSourcesBuildPhase section */ 229 | 230 | /* Begin PBXVariantGroup section */ 231 | 78A6BBD41ADCB5EE00554D13 /* MainMenu.xib */ = { 232 | isa = PBXVariantGroup; 233 | children = ( 234 | 78A6BBD51ADCB5EE00554D13 /* Base */, 235 | ); 236 | name = MainMenu.xib; 237 | sourceTree = ""; 238 | }; 239 | /* End PBXVariantGroup section */ 240 | 241 | /* Begin XCBuildConfiguration section */ 242 | 78A6BBE31ADCB5EE00554D13 /* Debug */ = { 243 | isa = XCBuildConfiguration; 244 | buildSettings = { 245 | ALWAYS_SEARCH_USER_PATHS = NO; 246 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 247 | CLANG_CXX_LIBRARY = "libc++"; 248 | CLANG_ENABLE_MODULES = YES; 249 | CLANG_ENABLE_OBJC_ARC = YES; 250 | CLANG_WARN_BOOL_CONVERSION = YES; 251 | CLANG_WARN_CONSTANT_CONVERSION = YES; 252 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 253 | CLANG_WARN_EMPTY_BODY = YES; 254 | CLANG_WARN_ENUM_CONVERSION = YES; 255 | CLANG_WARN_INFINITE_RECURSION = YES; 256 | CLANG_WARN_INT_CONVERSION = YES; 257 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 258 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 259 | CLANG_WARN_UNREACHABLE_CODE = YES; 260 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 261 | CODE_SIGN_IDENTITY = "-"; 262 | COPY_PHASE_STRIP = NO; 263 | DEBUG_INFORMATION_FORMAT = dwarf; 264 | ENABLE_STRICT_OBJC_MSGSEND = YES; 265 | ENABLE_TESTABILITY = YES; 266 | GCC_C_LANGUAGE_STANDARD = gnu99; 267 | GCC_DYNAMIC_NO_PIC = NO; 268 | GCC_NO_COMMON_BLOCKS = YES; 269 | GCC_OPTIMIZATION_LEVEL = 0; 270 | GCC_PREPROCESSOR_DEFINITIONS = ( 271 | "DEBUG=1", 272 | "$(inherited)", 273 | ); 274 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 275 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 276 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 277 | GCC_WARN_UNDECLARED_SELECTOR = YES; 278 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 279 | GCC_WARN_UNUSED_FUNCTION = YES; 280 | GCC_WARN_UNUSED_VARIABLE = YES; 281 | MACOSX_DEPLOYMENT_TARGET = 10.10; 282 | MTL_ENABLE_DEBUG_INFO = YES; 283 | ONLY_ACTIVE_ARCH = YES; 284 | SDKROOT = macosx; 285 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 286 | }; 287 | name = Debug; 288 | }; 289 | 78A6BBE41ADCB5EE00554D13 /* Release */ = { 290 | isa = XCBuildConfiguration; 291 | buildSettings = { 292 | ALWAYS_SEARCH_USER_PATHS = NO; 293 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 294 | CLANG_CXX_LIBRARY = "libc++"; 295 | CLANG_ENABLE_MODULES = YES; 296 | CLANG_ENABLE_OBJC_ARC = YES; 297 | CLANG_WARN_BOOL_CONVERSION = YES; 298 | CLANG_WARN_CONSTANT_CONVERSION = YES; 299 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 300 | CLANG_WARN_EMPTY_BODY = YES; 301 | CLANG_WARN_ENUM_CONVERSION = YES; 302 | CLANG_WARN_INFINITE_RECURSION = YES; 303 | CLANG_WARN_INT_CONVERSION = YES; 304 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 305 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 306 | CLANG_WARN_UNREACHABLE_CODE = YES; 307 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 308 | CODE_SIGN_IDENTITY = "-"; 309 | COPY_PHASE_STRIP = NO; 310 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 311 | ENABLE_NS_ASSERTIONS = NO; 312 | ENABLE_STRICT_OBJC_MSGSEND = YES; 313 | GCC_C_LANGUAGE_STANDARD = gnu99; 314 | GCC_NO_COMMON_BLOCKS = YES; 315 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 316 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 317 | GCC_WARN_UNDECLARED_SELECTOR = YES; 318 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 319 | GCC_WARN_UNUSED_FUNCTION = YES; 320 | GCC_WARN_UNUSED_VARIABLE = YES; 321 | MACOSX_DEPLOYMENT_TARGET = 10.10; 322 | MTL_ENABLE_DEBUG_INFO = NO; 323 | SDKROOT = macosx; 324 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 325 | }; 326 | name = Release; 327 | }; 328 | 78A6BBE61ADCB5EE00554D13 /* Debug */ = { 329 | isa = XCBuildConfiguration; 330 | baseConfigurationReference = E02F28E50D5D3EB26962CC9C /* Pods-OverKill.debug.xcconfig */; 331 | buildSettings = { 332 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 333 | CODE_SIGN_IDENTITY = "Mac Developer"; 334 | COMBINE_HIDPI_IMAGES = YES; 335 | DEVELOPMENT_TEAM = LXW484D3N9; 336 | INFOPLIST_FILE = OverKill/Info.plist; 337 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; 338 | PRODUCT_BUNDLE_IDENTIFIER = dimo.hamdy.OverKill; 339 | PRODUCT_NAME = "$(TARGET_NAME)"; 340 | SWIFT_VERSION = 3.0; 341 | }; 342 | name = Debug; 343 | }; 344 | 78A6BBE71ADCB5EE00554D13 /* Release */ = { 345 | isa = XCBuildConfiguration; 346 | baseConfigurationReference = A8C417A312101CFE18D47CE8 /* Pods-OverKill.release.xcconfig */; 347 | buildSettings = { 348 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 349 | CODE_SIGN_IDENTITY = "Mac Developer"; 350 | COMBINE_HIDPI_IMAGES = YES; 351 | DEVELOPMENT_TEAM = LXW484D3N9; 352 | INFOPLIST_FILE = OverKill/Info.plist; 353 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; 354 | PRODUCT_BUNDLE_IDENTIFIER = dimo.hamdy.OverKill; 355 | PRODUCT_NAME = "$(TARGET_NAME)"; 356 | SWIFT_VERSION = 3.0; 357 | }; 358 | name = Release; 359 | }; 360 | /* End XCBuildConfiguration section */ 361 | 362 | /* Begin XCConfigurationList section */ 363 | 78A6BBC61ADCB5EE00554D13 /* Build configuration list for PBXProject "OverKill" */ = { 364 | isa = XCConfigurationList; 365 | buildConfigurations = ( 366 | 78A6BBE31ADCB5EE00554D13 /* Debug */, 367 | 78A6BBE41ADCB5EE00554D13 /* Release */, 368 | ); 369 | defaultConfigurationIsVisible = 0; 370 | defaultConfigurationName = Release; 371 | }; 372 | 78A6BBE51ADCB5EE00554D13 /* Build configuration list for PBXNativeTarget "OverKill" */ = { 373 | isa = XCConfigurationList; 374 | buildConfigurations = ( 375 | 78A6BBE61ADCB5EE00554D13 /* Debug */, 376 | 78A6BBE71ADCB5EE00554D13 /* Release */, 377 | ); 378 | defaultConfigurationIsVisible = 0; 379 | defaultConfigurationName = Release; 380 | }; 381 | /* End XCConfigurationList section */ 382 | }; 383 | rootObject = 78A6BBC31ADCB5EE00554D13 /* Project object */; 384 | } 385 | -------------------------------------------------------------------------------- /OverKill.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /OverKill.xcodeproj/project.xcworkspace/xcuserdata/binaryboy.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimohamdy/OverKill_Swift_App/196bf6fc4dee2deedd98bccfec6488e54fea3458/OverKill.xcodeproj/project.xcworkspace/xcuserdata/binaryboy.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /OverKill.xcodeproj/project.xcworkspace/xcuserdata/gth.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimohamdy/OverKill_Swift_App/196bf6fc4dee2deedd98bccfec6488e54fea3458/OverKill.xcodeproj/project.xcworkspace/xcuserdata/gth.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /OverKill.xcodeproj/xcuserdata/binaryboy.xcuserdatad/xcschemes/Quotes.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /OverKill.xcodeproj/xcuserdata/binaryboy.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Quotes.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 78A6BBCA1ADCB5EE00554D13 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /OverKill.xcodeproj/xcuserdata/gth.xcuserdatad/xcschemes/Quotes.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 75 | 77 | 83 | 84 | 85 | 86 | 87 | 88 | 94 | 96 | 102 | 103 | 104 | 105 | 107 | 108 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /OverKill.xcodeproj/xcuserdata/gth.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Quotes.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 78A6BBCA1ADCB5EE00554D13 16 | 17 | primary 18 | 19 | 20 | 78A6BBDA1ADCB5EE00554D13 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /OverKill.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /OverKill.xcworkspace/xcuserdata/binaryboy.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimohamdy/OverKill_Swift_App/196bf6fc4dee2deedd98bccfec6488e54fea3458/OverKill.xcworkspace/xcuserdata/binaryboy.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /OverKill.xcworkspace/xcuserdata/binaryboy.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 20 | 21 | 22 | 24 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /OverKill/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // OverKill 4 | // 5 | // Created by BinaryBoy on 12/25/16. 6 | // Copyright © 2016 BinaryBoy. All rights reserved. 7 | // 8 | 9 | 10 | import Cocoa 11 | 12 | @NSApplicationMain 13 | class AppDelegate: NSObject, NSApplicationDelegate { 14 | 15 | @IBOutlet weak var window: NSWindow! 16 | 17 | let statusItem = NSStatusBar.system().statusItem(withLength: -2) 18 | let popover = NSPopover() 19 | 20 | func applicationDidFinishLaunching(_ notification: Notification) { 21 | if let button = statusItem.button { 22 | button.image = NSImage(named: "StatusBarButtonImage") 23 | button.action = #selector(AppDelegate.togglePopover(_:)) 24 | } 25 | 26 | popover.contentViewController = AppsViewController(nibName: "AppsViewController", bundle: nil) 27 | 28 | 29 | } 30 | 31 | func applicationWillTerminate(_ aNotification: Notification) { 32 | // Insert code here to tear down your application 33 | } 34 | 35 | func togglePopover(_ sender: AnyObject?) { 36 | if popover.isShown { 37 | closePopover(sender) 38 | } else { 39 | showPopover(sender) 40 | } 41 | } 42 | 43 | func showPopover(_ sender: AnyObject?) { 44 | if let button = statusItem.button { 45 | popover.show(relativeTo: button.bounds, of: button, preferredEdge: NSRectEdge.minY) 46 | } 47 | } 48 | 49 | func closePopover(_ sender: AnyObject?) { 50 | popover.performClose(sender) 51 | } 52 | } 53 | 54 | -------------------------------------------------------------------------------- /OverKill/AppsViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppsViewController.swift 3 | // OverKill 4 | // 5 | // Created by BinaryBoy on 12/25/16. 6 | // Copyright © 2016 BinaryBoy. All rights reserved. 7 | // 8 | 9 | 10 | import Cocoa 11 | import ITSwitch 12 | class AppsViewController: NSViewController { 13 | 14 | let app = App(); 15 | 16 | var activeAppsNames:[String] = [String]( repeating: "", count: 2 ) 17 | 18 | override func viewWillAppear() { 19 | super.viewWillAppear() 20 | 21 | } 22 | @IBAction func photosActivce(_ sender: ITSwitch) { 23 | 24 | if sender.checked == true{ 25 | activeAppsNames[0] = "Photos" 26 | 27 | }else{ 28 | activeAppsNames[0] = "" 29 | 30 | } 31 | 32 | app.activeAppsNames = activeAppsNames; 33 | } 34 | @IBAction func itunesActive(_ sender: ITSwitch) { 35 | if sender.checked == true{ 36 | activeAppsNames[1] = "iTunes" 37 | 38 | }else{ 39 | activeAppsNames[1] = "" 40 | } 41 | app.activeAppsNames = activeAppsNames; 42 | 43 | } 44 | } 45 | class App: NSObject { 46 | let center: NotificationCenter = NSWorkspace.shared().notificationCenter 47 | var activeAppsNames:[String] = [String]() 48 | 49 | override init(){ 50 | super.init() 51 | center.addObserver(self, selector: #selector(newKeyApp), name: NSNotification.Name.NSWorkspaceDidActivateApplication, object: nil) 52 | center.addObserver(self, selector: #selector(newKeyApp), name: NSNotification.Name.NSWorkspaceWillLaunchApplication, object: nil) 53 | } 54 | 55 | func newKeyApp(notification: NSNotification){ 56 | let runningApp : NSRunningApplication = (notification.userInfo! as Dictionary)["NSWorkspaceApplicationKey"]! as! NSRunningApplication 57 | 58 | 59 | for appName:String in activeAppsNames { 60 | 61 | if (runningApp.localizedName?.range(of:appName)) != nil{ 62 | if !runningApp.isTerminated { 63 | 64 | print("\(runningApp.localizedName!) launched itself, killing the process now...💥") 65 | runningApp.terminate() 66 | runningApp.forceTerminate() 67 | kill( runningApp.processIdentifier, SIGKILL ); 68 | } 69 | } 70 | 71 | } 72 | 73 | } 74 | } 75 | 76 | -------------------------------------------------------------------------------- /OverKill/AppsViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /OverKill/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | Default 540 | 541 | 542 | 543 | 544 | 545 | 546 | Left to Right 547 | 548 | 549 | 550 | 551 | 552 | 553 | Right to Left 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | Default 565 | 566 | 567 | 568 | 569 | 570 | 571 | Left to Right 572 | 573 | 574 | 575 | 576 | 577 | 578 | Right to Left 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | -------------------------------------------------------------------------------- /OverKill/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /OverKill/Images.xcassets/StatusBarButtonImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac" 5 | }, 6 | { 7 | "idiom" : "mac", 8 | "scale" : "1x" 9 | }, 10 | { 11 | "idiom" : "mac", 12 | "filename" : "StatusBarButtonImage.png", 13 | "scale" : "2x" 14 | } 15 | ], 16 | "info" : { 17 | "version" : 1, 18 | "author" : "xcode" 19 | }, 20 | "properties" : { 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /OverKill/Images.xcassets/StatusBarButtonImage.imageset/StatusBarButtonImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimohamdy/OverKill_Swift_App/196bf6fc4dee2deedd98bccfec6488e54fea3458/OverKill/Images.xcassets/StatusBarButtonImage.imageset/StatusBarButtonImage.png -------------------------------------------------------------------------------- /OverKill/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | $(MACOSX_DEPLOYMENT_TARGET) 27 | LSUIElement 28 | 29 | NSHumanReadableCopyright 30 | Copyright © 2015 Razeware LLC. All rights reserved. 31 | NSMainNibFile 32 | MainMenu 33 | NSPrincipalClass 34 | NSApplication 35 | 36 | 37 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'OverKill' do 5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for Quotes 9 | pod ‘ITSwitch’ 10 | end 11 | 12 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - ITSwitch (1.0) 3 | 4 | DEPENDENCIES: 5 | - ITSwitch 6 | 7 | SPEC CHECKSUMS: 8 | ITSwitch: 7ff745d6f2a6910e9194b23e4eab9a843258a478 9 | 10 | PODFILE CHECKSUM: 4f9b357ac302cb9885c22df7c9f45f7b246210ac 11 | 12 | COCOAPODS: 1.1.1 13 | -------------------------------------------------------------------------------- /Pods/ITSwitch/ITSwitch/ITSwitch.h: -------------------------------------------------------------------------------- 1 | // 2 | // ITSwitch.h 3 | // ITSwitch-Demo 4 | // 5 | // Created by Ilija Tovilo on 01/02/14. 6 | // Copyright (c) 2014 Ilija Tovilo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | * ITSwitch is a replica of UISwitch for Mac OS X 13 | */ 14 | IB_DESIGNABLE 15 | @interface ITSwitch : NSControl 16 | 17 | /** 18 | * @property checked - Gets or sets the switches state 19 | */ 20 | @property (nonatomic, assign) IBInspectable BOOL checked; 21 | 22 | /** 23 | * @property tintColor - Gets or sets the switches tint 24 | */ 25 | @property (nonatomic, strong) IBInspectable NSColor *tintColor; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/ITSwitch/ITSwitch/ITSwitch.m: -------------------------------------------------------------------------------- 1 | // 2 | // ITSwitch.m 3 | // ITSwitch-Demo 4 | // 5 | // Created by Ilija Tovilo on 01/02/14. 6 | // Copyright (c) 2014 Ilija Tovilo. All rights reserved. 7 | // 8 | 9 | #import "ITSwitch.h" 10 | #import 11 | 12 | 13 | // ---------------------------------------------------- 14 | #pragma mark - Static Constants 15 | // ---------------------------------------------------- 16 | 17 | static NSTimeInterval const kAnimationDuration = 0.4f; 18 | 19 | static CGFloat const kBorderLineWidth = 1.f; 20 | 21 | static CGFloat const kGoldenRatio = 1.61803398875f; 22 | static CGFloat const kDecreasedGoldenRatio = 1.38; 23 | 24 | static CGFloat const kEnabledOpacity = 1.f; 25 | static CGFloat const kDisabledOpacity = 0.5f; 26 | 27 | // ---------------------------------------------------- 28 | #pragma mark - Preprocessor 29 | // ---------------------------------------------------- 30 | 31 | 32 | #define kKnobBackgroundColor [NSColor colorWithCalibratedWhite:1.f alpha:1.f] 33 | 34 | #define kDisabledBorderColor [NSColor colorWithCalibratedWhite:0.f alpha:0.2f] 35 | #define kDisabledBackgroundColor [NSColor clearColor] 36 | #define kDefaultTintColor [NSColor colorWithCalibratedRed:0.27f green:0.86f blue:0.36f alpha:1.f] 37 | #define kInactiveBackgroundColor [NSColor colorWithCalibratedWhite:0 alpha:0.3] 38 | 39 | // --------------------------------------------------------------------------------------- 40 | #pragma mark - Interface Extension 41 | // --------------------------------------------------------------------------------------- 42 | 43 | @interface ITSwitch () { 44 | __weak id _target; 45 | SEL _action; 46 | } 47 | 48 | @property (nonatomic, getter = isActive) BOOL active; 49 | @property (nonatomic, getter = hasDragged) BOOL dragged; 50 | @property (nonatomic, getter = isDraggingTowardsOn) BOOL draggingTowardsOn; 51 | 52 | @property (nonatomic, readonly, strong) CALayer *rootLayer; 53 | @property (nonatomic, readonly, strong) CALayer *backgroundLayer; 54 | @property (nonatomic, readonly, strong) CALayer *knobLayer; 55 | @property (nonatomic, readonly, strong) CALayer *knobInsideLayer; 56 | 57 | - (void)propagateValue:(id)value forBinding:(NSString*)binding; 58 | 59 | @end 60 | 61 | 62 | 63 | // --------------------------------------------------------------------------------------- 64 | #pragma mark - ITSwitch 65 | // --------------------------------------------------------------------------------------- 66 | 67 | @implementation ITSwitch 68 | @synthesize tintColor = _tintColor; 69 | 70 | 71 | 72 | // ---------------------------------------------------- 73 | #pragma mark - Init 74 | // ---------------------------------------------------- 75 | 76 | - (id)initWithCoder:(NSCoder *)coder { 77 | self = [super initWithCoder:coder]; 78 | if (!self) return nil; 79 | 80 | [self setUp]; 81 | 82 | return self; 83 | } 84 | 85 | - (id)initWithFrame:(NSRect)frame { 86 | self = [super initWithFrame:frame]; 87 | if (!self) return nil; 88 | 89 | [self setUp]; 90 | 91 | return self; 92 | } 93 | 94 | - (void)setUp { 95 | // The Switch is enabled per default 96 | self.enabled = YES; 97 | 98 | // Set up the layer hierarchy 99 | [self setUpLayers]; 100 | } 101 | 102 | - (void)setUpLayers { 103 | // Root layer 104 | _rootLayer = [CALayer layer]; 105 | //_rootLayer.delegate = self; 106 | self.layer = _rootLayer; 107 | self.wantsLayer = YES; 108 | 109 | // Background layer 110 | _backgroundLayer = [CALayer layer]; 111 | _backgroundLayer.autoresizingMask = kCALayerWidthSizable | kCALayerHeightSizable; 112 | _backgroundLayer.bounds = _rootLayer.bounds; 113 | _backgroundLayer.anchorPoint = (CGPoint){ .x = 0.f, .y = 0.f }; 114 | _backgroundLayer.borderWidth = kBorderLineWidth; 115 | [_rootLayer addSublayer:_backgroundLayer]; 116 | 117 | // Knob layer 118 | _knobLayer = [CALayer layer]; 119 | _knobLayer.frame = [self rectForKnob]; 120 | _knobLayer.autoresizingMask = kCALayerHeightSizable; 121 | _knobLayer.backgroundColor = [kKnobBackgroundColor CGColor]; 122 | _knobLayer.shadowColor = [[NSColor blackColor] CGColor]; 123 | _knobLayer.shadowOffset = (CGSize){ .width = 0.f, .height = -2.f }; 124 | _knobLayer.shadowRadius = 1.f; 125 | _knobLayer.shadowOpacity = 0.3f; 126 | [_rootLayer addSublayer:_knobLayer]; 127 | 128 | _knobInsideLayer = [CALayer layer]; 129 | _knobInsideLayer.frame = _knobLayer.bounds; 130 | _knobInsideLayer.autoresizingMask = kCALayerWidthSizable | kCALayerHeightSizable; 131 | _knobInsideLayer.shadowColor = [[NSColor blackColor] CGColor]; 132 | _knobInsideLayer.shadowOffset = (CGSize){ .width = 0.f, .height = 0.f }; 133 | _knobInsideLayer.backgroundColor = [[NSColor whiteColor] CGColor]; 134 | _knobInsideLayer.shadowRadius = 1.f; 135 | _knobInsideLayer.shadowOpacity = 0.35f; 136 | [_knobLayer addSublayer:_knobInsideLayer]; 137 | 138 | // Initial 139 | [self reloadLayerSize]; 140 | [self reloadLayer]; 141 | } 142 | 143 | 144 | 145 | // ---------------------------------------------------- 146 | #pragma mark - NSView 147 | // ---------------------------------------------------- 148 | 149 | - (BOOL)acceptsFirstMouse:(NSEvent *)theEvent { 150 | return YES; 151 | } 152 | 153 | - (void)setFrame:(NSRect)frameRect { 154 | [super setFrame:frameRect]; 155 | 156 | [self reloadLayerSize]; 157 | } 158 | 159 | - (void)drawFocusRingMask { 160 | CGFloat cornerRadius = NSHeight([self bounds])/2.0; 161 | NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:[self bounds] xRadius:cornerRadius yRadius:cornerRadius]; 162 | [[NSColor blackColor] set]; 163 | [path fill]; 164 | } 165 | 166 | - (BOOL)canBecomeKeyView { 167 | return [NSApp isFullKeyboardAccessEnabled]; 168 | } 169 | 170 | - (NSRect)focusRingMaskBounds { 171 | return [self bounds]; 172 | } 173 | 174 | 175 | // ---------------------------------------------------- 176 | #pragma mark - Update Layer 177 | // ---------------------------------------------------- 178 | 179 | - (void)reloadLayer { 180 | [CATransaction begin]; 181 | [CATransaction setAnimationDuration:kAnimationDuration]; 182 | { 183 | // ------------------------------- Animate Border 184 | // The green part also animates, which looks kinda weird 185 | // We'll use the background-color for now 186 | // _backgroundLayer.borderWidth = (YES || self.isActive || self.isOn) ? NSHeight(_backgroundLayer.bounds) / 2 : kBorderLineWidth; 187 | 188 | // ------------------------------- Animate Colors 189 | if (([self hasDragged] && [self isDraggingTowardsOn]) || (![self hasDragged] && [self checked])) { 190 | _backgroundLayer.borderColor = [self.tintColor CGColor]; 191 | _backgroundLayer.backgroundColor = [self.tintColor CGColor]; 192 | } else { 193 | _backgroundLayer.borderColor = [kDisabledBorderColor CGColor]; 194 | _backgroundLayer.backgroundColor = [kDisabledBackgroundColor CGColor]; 195 | } 196 | 197 | // ------------------------------- Animate Enabled-Disabled state 198 | _rootLayer.opacity = (self.isEnabled) ? kEnabledOpacity : kDisabledOpacity; 199 | 200 | // ------------------------------- Animate Frame 201 | if (![self hasDragged]) { 202 | CAMediaTimingFunction *function = [CAMediaTimingFunction functionWithControlPoints:0.25f :1.5f :0.5f :1.f]; 203 | [CATransaction setAnimationTimingFunction:function]; 204 | } 205 | 206 | self.knobLayer.frame = [self rectForKnob]; 207 | self.knobInsideLayer.frame = self.knobLayer.bounds; 208 | } 209 | [CATransaction commit]; 210 | } 211 | 212 | - (void)reloadLayerSize { 213 | [CATransaction begin]; 214 | [CATransaction setDisableActions:YES]; 215 | { 216 | self.knobLayer.frame = [self rectForKnob]; 217 | self.knobInsideLayer.frame = self.knobLayer.bounds; 218 | 219 | [_backgroundLayer setCornerRadius:_backgroundLayer.bounds.size.height / 2.f]; 220 | [_knobLayer setCornerRadius:_knobLayer.bounds.size.height / 2.f]; 221 | [_knobInsideLayer setCornerRadius:_knobLayer.bounds.size.height / 2.f]; 222 | } 223 | [CATransaction commit]; 224 | } 225 | 226 | - (CGFloat)knobHeightForSize:(NSSize)size 227 | { 228 | return size.height - (kBorderLineWidth * 2.f); 229 | } 230 | 231 | - (CGRect)rectForKnob { 232 | CGFloat height = [self knobHeightForSize:_backgroundLayer.bounds.size]; 233 | CGFloat width = ![self isActive] ? (NSWidth(_backgroundLayer.bounds) - 2.f * kBorderLineWidth) * 1.f / kGoldenRatio : 234 | (NSWidth(_backgroundLayer.bounds) - 2.f * kBorderLineWidth) * 1.f / kDecreasedGoldenRatio; 235 | CGFloat x = ((![self hasDragged] && ![self checked]) || (self.hasDragged && ![self isDraggingTowardsOn])) ? 236 | kBorderLineWidth : 237 | NSWidth(_backgroundLayer.bounds) - width - kBorderLineWidth; 238 | 239 | return (CGRect) { 240 | .size.width = width, 241 | .size.height = height, 242 | .origin.x = x, 243 | .origin.y = kBorderLineWidth, 244 | }; 245 | } 246 | 247 | 248 | 249 | // ---------------------------------------------------- 250 | #pragma mark - NSResponder 251 | // ---------------------------------------------------- 252 | 253 | - (BOOL)acceptsFirstResponder { 254 | return [NSApp isFullKeyboardAccessEnabled]; 255 | } 256 | 257 | - (void)mouseDown:(NSEvent *)theEvent { 258 | if (!self.isEnabled) return; 259 | 260 | self.active = YES; 261 | 262 | [self reloadLayer]; 263 | } 264 | 265 | - (void)mouseDragged:(NSEvent *)theEvent { 266 | if (!self.isEnabled) return; 267 | 268 | self.dragged = YES; 269 | 270 | NSPoint draggingPoint = [self convertPoint:[theEvent locationInWindow] fromView:nil]; 271 | self.draggingTowardsOn = draggingPoint.x >= NSWidth(self.bounds) / 2.f; 272 | 273 | [self reloadLayer]; 274 | } 275 | 276 | - (void)mouseUp:(NSEvent *)theEvent { 277 | if (!self.isEnabled) return; 278 | 279 | self.active = NO; 280 | 281 | BOOL checked = (![self hasDragged]) ? ![self checked] : [self isDraggingTowardsOn]; 282 | BOOL invokeTargetAction = (checked != [self checked]); 283 | 284 | self.checked = checked; 285 | if (invokeTargetAction) [self _invokeTargetAction]; 286 | 287 | // Reset 288 | self.dragged = NO; 289 | self.draggingTowardsOn = NO; 290 | 291 | [self reloadLayer]; 292 | } 293 | 294 | - (void)moveLeft:(id)sender { 295 | if ([self checked]) { 296 | self.checked = NO; 297 | [self _invokeTargetAction]; 298 | } 299 | } 300 | 301 | - (void)moveRight:(id)sender { 302 | if ([self checked] == NO) { 303 | self.checked = YES; 304 | [self _invokeTargetAction]; 305 | } 306 | } 307 | 308 | - (BOOL)performKeyEquivalent:(NSEvent *)theEvent { 309 | BOOL handledKeyEquivalent = NO; 310 | if ([[self window] firstResponder] == self) { 311 | NSInteger ch = [theEvent keyCode]; 312 | 313 | if (ch == 49) //Space 314 | { 315 | self.checked = ![self checked]; 316 | [self _invokeTargetAction]; 317 | handledKeyEquivalent = YES; 318 | } 319 | } 320 | return handledKeyEquivalent; 321 | } 322 | 323 | 324 | // ---------------------------------------------------- 325 | #pragma mark - Accessors 326 | // ---------------------------------------------------- 327 | 328 | - (id)target { 329 | return _target; 330 | } 331 | 332 | - (void)setTarget:(id)target { 333 | _target = target; 334 | } 335 | 336 | - (SEL)action { 337 | return _action; 338 | } 339 | 340 | - (void)setAction:(SEL)action { 341 | _action = action; 342 | } 343 | 344 | - (void)setChecked:(BOOL)checked { 345 | if (_checked != checked) { 346 | _checked = checked; 347 | [self propagateValue:@(checked) forBinding:@"checked"]; 348 | } 349 | 350 | [self reloadLayer]; 351 | } 352 | 353 | - (NSColor *)tintColor { 354 | if (!_tintColor) return kDefaultTintColor; 355 | 356 | return _tintColor; 357 | } 358 | 359 | - (void)setTintColor:(NSColor *)tintColor { 360 | _tintColor = tintColor; 361 | 362 | [self reloadLayer]; 363 | } 364 | 365 | - (void)setEnabled:(BOOL)enabled { 366 | [super setEnabled:enabled]; 367 | [self reloadLayer]; 368 | } 369 | 370 | // ----------------------------------- 371 | #pragma mark - Helpers 372 | // ----------------------------------- 373 | 374 | - (void)_invokeTargetAction { 375 | if (self.target && self.action) { 376 | NSMethodSignature *signature = [[self.target class] instanceMethodSignatureForSelector:self.action]; 377 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; 378 | [invocation setTarget:self.target]; 379 | [invocation setSelector:self.action]; 380 | [invocation setArgument:(void *)&self atIndex:2]; 381 | 382 | [invocation invoke]; 383 | } 384 | } 385 | 386 | // ----------------------------------- 387 | #pragma mark - Accessibility 388 | // ----------------------------------- 389 | 390 | - (BOOL)accessibilityIsIgnored { 391 | return NO; 392 | } 393 | 394 | - (id)accessibilityHitTest:(NSPoint)point { 395 | return self; 396 | } 397 | 398 | - (NSArray *)accessibilityAttributeNames { 399 | static NSArray *attributes = nil; 400 | if (attributes == nil) 401 | { 402 | NSMutableArray *mutableAttributes = [[super accessibilityAttributeNames] mutableCopy]; 403 | if (mutableAttributes == nil) 404 | mutableAttributes = [NSMutableArray new]; 405 | 406 | // Add attributes 407 | if (![mutableAttributes containsObject:NSAccessibilityValueAttribute]) 408 | [mutableAttributes addObject:NSAccessibilityValueAttribute]; 409 | 410 | if (![mutableAttributes containsObject:NSAccessibilityEnabledAttribute]) 411 | [mutableAttributes addObject:NSAccessibilityEnabledAttribute]; 412 | 413 | if (![mutableAttributes containsObject:NSAccessibilityDescriptionAttribute]) 414 | [mutableAttributes addObject:NSAccessibilityDescriptionAttribute]; 415 | 416 | // Remove attributes 417 | if ([mutableAttributes containsObject:NSAccessibilityChildrenAttribute]) 418 | [mutableAttributes removeObject:NSAccessibilityChildrenAttribute]; 419 | 420 | attributes = [mutableAttributes copy]; 421 | } 422 | return attributes; 423 | } 424 | 425 | - (id)accessibilityAttributeValue:(NSString *)attribute { 426 | id retVal = nil; 427 | if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) 428 | retVal = NSAccessibilityCheckBoxRole; 429 | else if ([attribute isEqualToString:NSAccessibilityValueAttribute]) 430 | retVal = [NSNumber numberWithInt:self.checked]; 431 | else if ([attribute isEqualToString:NSAccessibilityEnabledAttribute]) 432 | retVal = [NSNumber numberWithBool:self.enabled]; 433 | else 434 | retVal = [super accessibilityAttributeValue:attribute]; 435 | return retVal; 436 | } 437 | 438 | - (BOOL)accessibilityIsAttributeSettable:(NSString *)attribute { 439 | BOOL retVal; 440 | if ([attribute isEqualToString:NSAccessibilityValueAttribute]) 441 | retVal = YES; 442 | else if ([attribute isEqualToString:NSAccessibilityEnabledAttribute]) 443 | retVal = NO; 444 | else if ([attribute isEqualToString:NSAccessibilityDescriptionAttribute]) 445 | retVal = NO; 446 | else 447 | retVal = [super accessibilityIsAttributeSettable:attribute]; 448 | return retVal; 449 | } 450 | 451 | - (void)accessibilitySetValue:(id)value forAttribute:(NSString *)attribute { 452 | if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { 453 | BOOL invokeTargetAction = self.checked != [value boolValue]; 454 | self.checked = [value boolValue]; 455 | if (invokeTargetAction) { 456 | [self _invokeTargetAction]; 457 | } 458 | } 459 | else { 460 | [super accessibilitySetValue:value forAttribute:attribute]; 461 | } 462 | } 463 | 464 | - (NSArray *)accessibilityActionNames { 465 | static NSArray *actions = nil; 466 | if (actions == nil) 467 | { 468 | NSMutableArray *mutableActions = [[super accessibilityActionNames] mutableCopy]; 469 | if (mutableActions == nil) 470 | mutableActions = [NSMutableArray new]; 471 | if (![mutableActions containsObject:NSAccessibilityPressAction]) 472 | [mutableActions addObject:NSAccessibilityPressAction]; 473 | actions = [mutableActions copy]; 474 | } 475 | return actions; 476 | } 477 | 478 | - (void)accessibilityPerformAction:(NSString *)actionString { 479 | if ([actionString isEqualToString:NSAccessibilityPressAction]) { 480 | self.checked = ![self checked]; 481 | [self _invokeTargetAction]; 482 | } 483 | else { 484 | [super accessibilityPerformAction:actionString]; 485 | } 486 | } 487 | 488 | #pragma mark - 489 | #pragma mark Bindings Extension 490 | 491 | - (void)propagateValue:(id)value forBinding:(NSString*)binding 492 | { 493 | NSParameterAssert(binding != nil); 494 | 495 | // WARNING: bindingInfo contains NSNull, so it must be accounted for 496 | NSDictionary* bindingInfo = [self infoForBinding:binding]; 497 | if(!bindingInfo) 498 | return; //there is no binding 499 | 500 | // apply the value transformer, if one has been set 501 | NSDictionary* bindingOptions = [bindingInfo objectForKey:NSOptionsKey]; 502 | if(bindingOptions){ 503 | NSValueTransformer* transformer = [bindingOptions valueForKey:NSValueTransformerBindingOption]; 504 | if(!transformer || (id)transformer == [NSNull null]){ 505 | NSString* transformerName = [bindingOptions valueForKey:NSValueTransformerNameBindingOption]; 506 | if(transformerName && (id)transformerName != [NSNull null]){ 507 | transformer = [NSValueTransformer valueTransformerForName:transformerName]; 508 | } 509 | } 510 | 511 | if(transformer && (id)transformer != [NSNull null]){ 512 | if([[transformer class] allowsReverseTransformation]){ 513 | value = [transformer reverseTransformedValue:value]; 514 | } else { 515 | NSLog(@"WARNING: binding \"%@\" has value transformer, but it doesn't allow reverse transformations in %s", binding, __PRETTY_FUNCTION__); 516 | } 517 | } 518 | } 519 | 520 | id boundObject = [bindingInfo objectForKey:NSObservedObjectKey]; 521 | if(!boundObject || boundObject == [NSNull null]){ 522 | NSLog(@"ERROR: NSObservedObjectKey was nil for binding \"%@\" in %s", binding, __PRETTY_FUNCTION__); 523 | return; 524 | } 525 | 526 | NSString* boundKeyPath = [bindingInfo objectForKey:NSObservedKeyPathKey]; 527 | if(!boundKeyPath || (id)boundKeyPath == [NSNull null]){ 528 | NSLog(@"ERROR: NSObservedKeyPathKey was nil for binding \"%@\" in %s", binding, __PRETTY_FUNCTION__); 529 | return; 530 | } 531 | 532 | [boundObject setValue:value forKeyPath:boundKeyPath]; 533 | } 534 | 535 | @end 536 | -------------------------------------------------------------------------------- /Pods/ITSwitch/LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2014 Ilija Tovilo 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /Pods/ITSwitch/README.md: -------------------------------------------------------------------------------- 1 | ITSwitch 2 | ======== 3 | 4 | `ITSwitch` is a simple and lightweight replica of iOS 7 `UISwitch` for Mac OS X. 5 | 6 | ![](./demo.png) 7 | 8 | Usage 9 | ----- 10 | 11 | Not much to it, simply set the custom class of a `NSView` to `ITSwitch` in Interface Builder. 12 | 13 | You can create an IBAction and simply connect the two in Interface Builder. 14 | 15 | Additionally, you can use these two properties: 16 | 17 | ```objc 18 | /** 19 | * @property checked - Gets or sets the switches state 20 | */ 21 | @property (nonatomic, assign) IBInspectable BOOL checked; 22 | 23 | /** 24 | * @property tintColor - Gets or sets the switches tint 25 | */ 26 | @property (nonatomic, strong) IBInspectable NSColor *tintColor; 27 | ``` 28 | 29 | Since `ITSwitch` uses its `CALayer` to draw a drop-shadow, you should also layer-back it's superview. 30 | If you don't use Core Animation, you can also simply embed the view in a layer-backed view. 31 | 32 | Requirements 33 | ------------ 34 | 35 | ITSwitch requires 10.9+ and linking against the QuartzCore.framework. 36 | 37 | Tips 38 | ---- 39 | 40 | You may want to consider setting the width of the view to the golden ratio * height. 41 | 42 | So for example: 43 | 44 | ```objc 45 | height = 20; 46 | width = height * 1.618; 47 | ``` 48 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - ITSwitch (1.0) 3 | 4 | DEPENDENCIES: 5 | - ITSwitch 6 | 7 | SPEC CHECKSUMS: 8 | ITSwitch: 7ff745d6f2a6910e9194b23e4eab9a843258a478 9 | 10 | PODFILE CHECKSUM: 4f9b357ac302cb9885c22df7c9f45f7b246210ac 11 | 12 | COCOAPODS: 1.1.1 13 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 2B0B85FDDB6CEF3E81541E377C1E59B7 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AF61B071158AC964EE00F3C89759CE9 /* QuartzCore.framework */; }; 11 | 2FB0750B2F8A2B9F53B37CC797E9C90B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68FA21027725718854CD7A9C4006066A /* Cocoa.framework */; }; 12 | 45B5293F0566E604A71D1F952E40C9AA /* ITSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F75311A27AABA4EE0BADB1AA0E27A19 /* ITSwitch.m */; }; 13 | 4BE1CD8EECE67E8DA94FBE1847C79731 /* Pods-OverKill-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 57F5A07C4F47BF9D759EE8D1D91627E8 /* Pods-OverKill-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | 71E71536FFE815467759AA07C4517954 /* ITSwitch-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D610BF36CC4262B55E09628DC12492D6 /* ITSwitch-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15 | 958C34205C5585F78D83F9103F11169E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68FA21027725718854CD7A9C4006066A /* Cocoa.framework */; }; 16 | 95B0CB77409518EB84D1731C88B391D0 /* ITSwitch-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D72A5EBB826E95B3EE77B38FE7D2A96 /* ITSwitch-dummy.m */; }; 17 | EF6E7B100892130E73ECCEB96851CA18 /* Pods-OverKill-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DF773587464E7F3D590ED3E5603A0D2E /* Pods-OverKill-dummy.m */; }; 18 | F07F81FBE6DCB39A4A03735AA80EE7E8 /* ITSwitch.h in Headers */ = {isa = PBXBuildFile; fileRef = C101DC419D724E8BC81D6DBDA0859F7C /* ITSwitch.h */; settings = {ATTRIBUTES = (Public, ); }; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXContainerItemProxy section */ 22 | 8F917A54AB0408D177FEBE5A557A4803 /* PBXContainerItemProxy */ = { 23 | isa = PBXContainerItemProxy; 24 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 25 | proxyType = 1; 26 | remoteGlobalIDString = 1D1277B04944214E28E206D65F005710; 27 | remoteInfo = ITSwitch; 28 | }; 29 | /* End PBXContainerItemProxy section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 2164333B502C4D6DFAD1881E3DAA0D65 /* Pods-OverKill-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-OverKill-resources.sh"; sourceTree = ""; }; 33 | 39AFA9ED2E779202074E90BDEAC76BEE /* Pods-OverKill-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-OverKill-acknowledgements.markdown"; sourceTree = ""; }; 34 | 3F75311A27AABA4EE0BADB1AA0E27A19 /* ITSwitch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ITSwitch.m; path = ITSwitch/ITSwitch.m; sourceTree = ""; }; 35 | 57F5A07C4F47BF9D759EE8D1D91627E8 /* Pods-OverKill-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-OverKill-umbrella.h"; sourceTree = ""; }; 36 | 5C0E5B060F6C4D4F7AC072075044F899 /* ITSwitch.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = ITSwitch.modulemap; sourceTree = ""; }; 37 | 68FA21027725718854CD7A9C4006066A /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; 38 | 6D72A5EBB826E95B3EE77B38FE7D2A96 /* ITSwitch-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ITSwitch-dummy.m"; sourceTree = ""; }; 39 | 8344C1809E9D0BBBB3B2B606815020B6 /* Pods_OverKill.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_OverKill.framework; path = "Pods-OverKill.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 40 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 41 | 95C250FF5672B54A2004FB417189000D /* Pods-OverKill-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-OverKill-acknowledgements.plist"; sourceTree = ""; }; 42 | 9AF61B071158AC964EE00F3C89759CE9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; 43 | A98A93862DDBEA934E081C092B299EA9 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 44 | AA06C607CA145D36D76DF11F13AD8757 /* Pods-OverKill-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-OverKill-frameworks.sh"; sourceTree = ""; }; 45 | AABC3931B416B2F2AF3E858C8615F101 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 46 | BC44BF0697482E4361696F1E38FA4165 /* ITSwitch.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ITSwitch.framework; path = ITSwitch.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 47 | C101DC419D724E8BC81D6DBDA0859F7C /* ITSwitch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ITSwitch.h; path = ITSwitch/ITSwitch.h; sourceTree = ""; }; 48 | C31EE254A8396F5F5BFCCBFA244C1D7E /* Pods-OverKill.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-OverKill.release.xcconfig"; sourceTree = ""; }; 49 | C6706DE0ED9A9EB095A4E090E1BF1EAA /* Pods-OverKill.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-OverKill.debug.xcconfig"; sourceTree = ""; }; 50 | CA2150479BAE034096AB81012594EE81 /* Pods-OverKill.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-OverKill.modulemap"; sourceTree = ""; }; 51 | D286D516E214760A7022B58E593FEBED /* ITSwitch.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ITSwitch.xcconfig; sourceTree = ""; }; 52 | D610BF36CC4262B55E09628DC12492D6 /* ITSwitch-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ITSwitch-umbrella.h"; sourceTree = ""; }; 53 | DF773587464E7F3D590ED3E5603A0D2E /* Pods-OverKill-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-OverKill-dummy.m"; sourceTree = ""; }; 54 | EAA5705BF21D86F18CDBFDEDFB1EAB64 /* ITSwitch-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ITSwitch-prefix.pch"; sourceTree = ""; }; 55 | /* End PBXFileReference section */ 56 | 57 | /* Begin PBXFrameworksBuildPhase section */ 58 | 89A3B844EC2432D234DE0AFBF2E5909A /* Frameworks */ = { 59 | isa = PBXFrameworksBuildPhase; 60 | buildActionMask = 2147483647; 61 | files = ( 62 | 2FB0750B2F8A2B9F53B37CC797E9C90B /* Cocoa.framework in Frameworks */, 63 | ); 64 | runOnlyForDeploymentPostprocessing = 0; 65 | }; 66 | E21D5DC0F44863A9029DF08AF926E7AF /* Frameworks */ = { 67 | isa = PBXFrameworksBuildPhase; 68 | buildActionMask = 2147483647; 69 | files = ( 70 | 958C34205C5585F78D83F9103F11169E /* Cocoa.framework in Frameworks */, 71 | 2B0B85FDDB6CEF3E81541E377C1E59B7 /* QuartzCore.framework in Frameworks */, 72 | ); 73 | runOnlyForDeploymentPostprocessing = 0; 74 | }; 75 | /* End PBXFrameworksBuildPhase section */ 76 | 77 | /* Begin PBXGroup section */ 78 | 6DB0450C51743E33B17C9B1EEB52E8B2 /* Targets Support Files */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | D703C1D1B2D5C589D026CFAF22E53040 /* Pods-OverKill */, 82 | ); 83 | name = "Targets Support Files"; 84 | sourceTree = ""; 85 | }; 86 | 7AFAD962F6B305AD9B1C705D20D1482A /* Products */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | BC44BF0697482E4361696F1E38FA4165 /* ITSwitch.framework */, 90 | 8344C1809E9D0BBBB3B2B606815020B6 /* Pods_OverKill.framework */, 91 | ); 92 | name = Products; 93 | sourceTree = ""; 94 | }; 95 | 7DB346D0F39D3F0E887471402A8071AB = { 96 | isa = PBXGroup; 97 | children = ( 98 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 99 | D648CE86F139C7CCFD55D5B8A03BE74B /* Frameworks */, 100 | 91BA428343D1F787F12C469C6CDFEE13 /* Pods */, 101 | 7AFAD962F6B305AD9B1C705D20D1482A /* Products */, 102 | 6DB0450C51743E33B17C9B1EEB52E8B2 /* Targets Support Files */, 103 | ); 104 | sourceTree = ""; 105 | }; 106 | 8B93BE57057DBA78975F9DF173FECDD9 /* OS X */ = { 107 | isa = PBXGroup; 108 | children = ( 109 | 68FA21027725718854CD7A9C4006066A /* Cocoa.framework */, 110 | 9AF61B071158AC964EE00F3C89759CE9 /* QuartzCore.framework */, 111 | ); 112 | name = "OS X"; 113 | sourceTree = ""; 114 | }; 115 | 91BA428343D1F787F12C469C6CDFEE13 /* Pods */ = { 116 | isa = PBXGroup; 117 | children = ( 118 | A1A27FAFF4CE52691B4E2332249D7B1A /* ITSwitch */, 119 | ); 120 | name = Pods; 121 | sourceTree = ""; 122 | }; 123 | A1A27FAFF4CE52691B4E2332249D7B1A /* ITSwitch */ = { 124 | isa = PBXGroup; 125 | children = ( 126 | C101DC419D724E8BC81D6DBDA0859F7C /* ITSwitch.h */, 127 | 3F75311A27AABA4EE0BADB1AA0E27A19 /* ITSwitch.m */, 128 | FE6001915F3A16197EEE513566568272 /* Support Files */, 129 | ); 130 | name = ITSwitch; 131 | path = ITSwitch; 132 | sourceTree = ""; 133 | }; 134 | D648CE86F139C7CCFD55D5B8A03BE74B /* Frameworks */ = { 135 | isa = PBXGroup; 136 | children = ( 137 | 8B93BE57057DBA78975F9DF173FECDD9 /* OS X */, 138 | ); 139 | name = Frameworks; 140 | sourceTree = ""; 141 | }; 142 | D703C1D1B2D5C589D026CFAF22E53040 /* Pods-OverKill */ = { 143 | isa = PBXGroup; 144 | children = ( 145 | AABC3931B416B2F2AF3E858C8615F101 /* Info.plist */, 146 | CA2150479BAE034096AB81012594EE81 /* Pods-OverKill.modulemap */, 147 | 39AFA9ED2E779202074E90BDEAC76BEE /* Pods-OverKill-acknowledgements.markdown */, 148 | 95C250FF5672B54A2004FB417189000D /* Pods-OverKill-acknowledgements.plist */, 149 | DF773587464E7F3D590ED3E5603A0D2E /* Pods-OverKill-dummy.m */, 150 | AA06C607CA145D36D76DF11F13AD8757 /* Pods-OverKill-frameworks.sh */, 151 | 2164333B502C4D6DFAD1881E3DAA0D65 /* Pods-OverKill-resources.sh */, 152 | 57F5A07C4F47BF9D759EE8D1D91627E8 /* Pods-OverKill-umbrella.h */, 153 | C6706DE0ED9A9EB095A4E090E1BF1EAA /* Pods-OverKill.debug.xcconfig */, 154 | C31EE254A8396F5F5BFCCBFA244C1D7E /* Pods-OverKill.release.xcconfig */, 155 | ); 156 | name = "Pods-OverKill"; 157 | path = "Target Support Files/Pods-OverKill"; 158 | sourceTree = ""; 159 | }; 160 | FE6001915F3A16197EEE513566568272 /* Support Files */ = { 161 | isa = PBXGroup; 162 | children = ( 163 | A98A93862DDBEA934E081C092B299EA9 /* Info.plist */, 164 | 5C0E5B060F6C4D4F7AC072075044F899 /* ITSwitch.modulemap */, 165 | D286D516E214760A7022B58E593FEBED /* ITSwitch.xcconfig */, 166 | 6D72A5EBB826E95B3EE77B38FE7D2A96 /* ITSwitch-dummy.m */, 167 | EAA5705BF21D86F18CDBFDEDFB1EAB64 /* ITSwitch-prefix.pch */, 168 | D610BF36CC4262B55E09628DC12492D6 /* ITSwitch-umbrella.h */, 169 | ); 170 | name = "Support Files"; 171 | path = "../Target Support Files/ITSwitch"; 172 | sourceTree = ""; 173 | }; 174 | /* End PBXGroup section */ 175 | 176 | /* Begin PBXHeadersBuildPhase section */ 177 | 47E7CFEE2C22FCD76BB7611C716AB64C /* Headers */ = { 178 | isa = PBXHeadersBuildPhase; 179 | buildActionMask = 2147483647; 180 | files = ( 181 | 4BE1CD8EECE67E8DA94FBE1847C79731 /* Pods-OverKill-umbrella.h in Headers */, 182 | ); 183 | runOnlyForDeploymentPostprocessing = 0; 184 | }; 185 | 718BDD0B7FE526BD6948272D30EE869C /* Headers */ = { 186 | isa = PBXHeadersBuildPhase; 187 | buildActionMask = 2147483647; 188 | files = ( 189 | 71E71536FFE815467759AA07C4517954 /* ITSwitch-umbrella.h in Headers */, 190 | F07F81FBE6DCB39A4A03735AA80EE7E8 /* ITSwitch.h in Headers */, 191 | ); 192 | runOnlyForDeploymentPostprocessing = 0; 193 | }; 194 | /* End PBXHeadersBuildPhase section */ 195 | 196 | /* Begin PBXNativeTarget section */ 197 | 1D1277B04944214E28E206D65F005710 /* ITSwitch */ = { 198 | isa = PBXNativeTarget; 199 | buildConfigurationList = 9C269A8A75B8CFC5B26B3D2323BDEC20 /* Build configuration list for PBXNativeTarget "ITSwitch" */; 200 | buildPhases = ( 201 | 4FF692A7FD5BC7C19C817C6809272878 /* Sources */, 202 | E21D5DC0F44863A9029DF08AF926E7AF /* Frameworks */, 203 | 718BDD0B7FE526BD6948272D30EE869C /* Headers */, 204 | ); 205 | buildRules = ( 206 | ); 207 | dependencies = ( 208 | ); 209 | name = ITSwitch; 210 | productName = ITSwitch; 211 | productReference = BC44BF0697482E4361696F1E38FA4165 /* ITSwitch.framework */; 212 | productType = "com.apple.product-type.framework"; 213 | }; 214 | 366E768D72F9E59262B488F7D6F67800 /* Pods-OverKill */ = { 215 | isa = PBXNativeTarget; 216 | buildConfigurationList = 14D1AC88057CF4761A1104C75745592C /* Build configuration list for PBXNativeTarget "Pods-OverKill" */; 217 | buildPhases = ( 218 | D79C037B18FBF153737D1FFA1E1C1486 /* Sources */, 219 | 89A3B844EC2432D234DE0AFBF2E5909A /* Frameworks */, 220 | 47E7CFEE2C22FCD76BB7611C716AB64C /* Headers */, 221 | ); 222 | buildRules = ( 223 | ); 224 | dependencies = ( 225 | DC7C3FE644B7249D7E68A0DEAAF04664 /* PBXTargetDependency */, 226 | ); 227 | name = "Pods-OverKill"; 228 | productName = "Pods-OverKill"; 229 | productReference = 8344C1809E9D0BBBB3B2B606815020B6 /* Pods_OverKill.framework */; 230 | productType = "com.apple.product-type.framework"; 231 | }; 232 | /* End PBXNativeTarget section */ 233 | 234 | /* Begin PBXProject section */ 235 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 236 | isa = PBXProject; 237 | attributes = { 238 | LastSwiftUpdateCheck = 0730; 239 | LastUpgradeCheck = 0700; 240 | }; 241 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 242 | compatibilityVersion = "Xcode 3.2"; 243 | developmentRegion = English; 244 | hasScannedForEncodings = 0; 245 | knownRegions = ( 246 | en, 247 | ); 248 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 249 | productRefGroup = 7AFAD962F6B305AD9B1C705D20D1482A /* Products */; 250 | projectDirPath = ""; 251 | projectRoot = ""; 252 | targets = ( 253 | 1D1277B04944214E28E206D65F005710 /* ITSwitch */, 254 | 366E768D72F9E59262B488F7D6F67800 /* Pods-OverKill */, 255 | ); 256 | }; 257 | /* End PBXProject section */ 258 | 259 | /* Begin PBXSourcesBuildPhase section */ 260 | 4FF692A7FD5BC7C19C817C6809272878 /* Sources */ = { 261 | isa = PBXSourcesBuildPhase; 262 | buildActionMask = 2147483647; 263 | files = ( 264 | 95B0CB77409518EB84D1731C88B391D0 /* ITSwitch-dummy.m in Sources */, 265 | 45B5293F0566E604A71D1F952E40C9AA /* ITSwitch.m in Sources */, 266 | ); 267 | runOnlyForDeploymentPostprocessing = 0; 268 | }; 269 | D79C037B18FBF153737D1FFA1E1C1486 /* Sources */ = { 270 | isa = PBXSourcesBuildPhase; 271 | buildActionMask = 2147483647; 272 | files = ( 273 | EF6E7B100892130E73ECCEB96851CA18 /* Pods-OverKill-dummy.m in Sources */, 274 | ); 275 | runOnlyForDeploymentPostprocessing = 0; 276 | }; 277 | /* End PBXSourcesBuildPhase section */ 278 | 279 | /* Begin PBXTargetDependency section */ 280 | DC7C3FE644B7249D7E68A0DEAAF04664 /* PBXTargetDependency */ = { 281 | isa = PBXTargetDependency; 282 | name = ITSwitch; 283 | target = 1D1277B04944214E28E206D65F005710 /* ITSwitch */; 284 | targetProxy = 8F917A54AB0408D177FEBE5A557A4803 /* PBXContainerItemProxy */; 285 | }; 286 | /* End PBXTargetDependency section */ 287 | 288 | /* Begin XCBuildConfiguration section */ 289 | 04F622E386EAE086BB8299E42D68029D /* Debug */ = { 290 | isa = XCBuildConfiguration; 291 | baseConfigurationReference = C6706DE0ED9A9EB095A4E090E1BF1EAA /* Pods-OverKill.debug.xcconfig */; 292 | buildSettings = { 293 | CODE_SIGN_IDENTITY = "-"; 294 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 295 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 296 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 297 | COMBINE_HIDPI_IMAGES = YES; 298 | CURRENT_PROJECT_VERSION = 1; 299 | DEBUG_INFORMATION_FORMAT = dwarf; 300 | DEFINES_MODULE = YES; 301 | DYLIB_COMPATIBILITY_VERSION = 1; 302 | DYLIB_CURRENT_VERSION = 1; 303 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 304 | ENABLE_STRICT_OBJC_MSGSEND = YES; 305 | FRAMEWORK_VERSION = A; 306 | GCC_NO_COMMON_BLOCKS = YES; 307 | INFOPLIST_FILE = "Target Support Files/Pods-OverKill/Info.plist"; 308 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 309 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 310 | MACH_O_TYPE = staticlib; 311 | MACOSX_DEPLOYMENT_TARGET = 10.10; 312 | MODULEMAP_FILE = "Target Support Files/Pods-OverKill/Pods-OverKill.modulemap"; 313 | MTL_ENABLE_DEBUG_INFO = YES; 314 | OTHER_LDFLAGS = ""; 315 | OTHER_LIBTOOLFLAGS = ""; 316 | PODS_ROOT = "$(SRCROOT)"; 317 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 318 | PRODUCT_NAME = Pods_OverKill; 319 | SDKROOT = macosx; 320 | SKIP_INSTALL = YES; 321 | VERSIONING_SYSTEM = "apple-generic"; 322 | VERSION_INFO_PREFIX = ""; 323 | }; 324 | name = Debug; 325 | }; 326 | 935558EA53DFFC5E17DEA0990EA01FAE /* Release */ = { 327 | isa = XCBuildConfiguration; 328 | baseConfigurationReference = C31EE254A8396F5F5BFCCBFA244C1D7E /* Pods-OverKill.release.xcconfig */; 329 | buildSettings = { 330 | CODE_SIGN_IDENTITY = "-"; 331 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 332 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 333 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 334 | COMBINE_HIDPI_IMAGES = YES; 335 | CURRENT_PROJECT_VERSION = 1; 336 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 337 | DEFINES_MODULE = YES; 338 | DYLIB_COMPATIBILITY_VERSION = 1; 339 | DYLIB_CURRENT_VERSION = 1; 340 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 341 | ENABLE_STRICT_OBJC_MSGSEND = YES; 342 | FRAMEWORK_VERSION = A; 343 | GCC_NO_COMMON_BLOCKS = YES; 344 | INFOPLIST_FILE = "Target Support Files/Pods-OverKill/Info.plist"; 345 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 346 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 347 | MACH_O_TYPE = staticlib; 348 | MACOSX_DEPLOYMENT_TARGET = 10.10; 349 | MODULEMAP_FILE = "Target Support Files/Pods-OverKill/Pods-OverKill.modulemap"; 350 | MTL_ENABLE_DEBUG_INFO = NO; 351 | OTHER_LDFLAGS = ""; 352 | OTHER_LIBTOOLFLAGS = ""; 353 | PODS_ROOT = "$(SRCROOT)"; 354 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 355 | PRODUCT_NAME = Pods_OverKill; 356 | SDKROOT = macosx; 357 | SKIP_INSTALL = YES; 358 | VERSIONING_SYSTEM = "apple-generic"; 359 | VERSION_INFO_PREFIX = ""; 360 | }; 361 | name = Release; 362 | }; 363 | 9420A7205B8F85520AF134F4EE25F7CC /* Release */ = { 364 | isa = XCBuildConfiguration; 365 | buildSettings = { 366 | ALWAYS_SEARCH_USER_PATHS = NO; 367 | CLANG_ANALYZER_NONNULL = YES; 368 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 369 | CLANG_CXX_LIBRARY = "libc++"; 370 | CLANG_ENABLE_MODULES = YES; 371 | CLANG_ENABLE_OBJC_ARC = YES; 372 | CLANG_WARN_BOOL_CONVERSION = YES; 373 | CLANG_WARN_CONSTANT_CONVERSION = YES; 374 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 375 | CLANG_WARN_EMPTY_BODY = YES; 376 | CLANG_WARN_ENUM_CONVERSION = YES; 377 | CLANG_WARN_INT_CONVERSION = YES; 378 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 379 | CLANG_WARN_UNREACHABLE_CODE = YES; 380 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 381 | CODE_SIGNING_REQUIRED = NO; 382 | COPY_PHASE_STRIP = YES; 383 | ENABLE_NS_ASSERTIONS = NO; 384 | GCC_C_LANGUAGE_STANDARD = gnu99; 385 | GCC_PREPROCESSOR_DEFINITIONS = ( 386 | "POD_CONFIGURATION_RELEASE=1", 387 | "$(inherited)", 388 | ); 389 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 390 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 391 | GCC_WARN_UNDECLARED_SELECTOR = YES; 392 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 393 | GCC_WARN_UNUSED_FUNCTION = YES; 394 | GCC_WARN_UNUSED_VARIABLE = YES; 395 | MACOSX_DEPLOYMENT_TARGET = 10.10; 396 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 397 | STRIP_INSTALLED_PRODUCT = NO; 398 | SYMROOT = "${SRCROOT}/../build"; 399 | VALIDATE_PRODUCT = YES; 400 | }; 401 | name = Release; 402 | }; 403 | C17AE44502CF97E10EE9F8B9539C9E19 /* Release */ = { 404 | isa = XCBuildConfiguration; 405 | baseConfigurationReference = D286D516E214760A7022B58E593FEBED /* ITSwitch.xcconfig */; 406 | buildSettings = { 407 | CODE_SIGN_IDENTITY = "-"; 408 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 409 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 410 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 411 | COMBINE_HIDPI_IMAGES = YES; 412 | CURRENT_PROJECT_VERSION = 1; 413 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 414 | DEFINES_MODULE = YES; 415 | DYLIB_COMPATIBILITY_VERSION = 1; 416 | DYLIB_CURRENT_VERSION = 1; 417 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 418 | ENABLE_STRICT_OBJC_MSGSEND = YES; 419 | FRAMEWORK_VERSION = A; 420 | GCC_NO_COMMON_BLOCKS = YES; 421 | GCC_PREFIX_HEADER = "Target Support Files/ITSwitch/ITSwitch-prefix.pch"; 422 | INFOPLIST_FILE = "Target Support Files/ITSwitch/Info.plist"; 423 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 424 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 425 | MACOSX_DEPLOYMENT_TARGET = 10.9; 426 | MODULEMAP_FILE = "Target Support Files/ITSwitch/ITSwitch.modulemap"; 427 | MTL_ENABLE_DEBUG_INFO = NO; 428 | PRODUCT_NAME = ITSwitch; 429 | SDKROOT = macosx; 430 | SKIP_INSTALL = YES; 431 | SWIFT_VERSION = 3.0; 432 | VERSIONING_SYSTEM = "apple-generic"; 433 | VERSION_INFO_PREFIX = ""; 434 | }; 435 | name = Release; 436 | }; 437 | E14177EC4EFB22C38D19DA84063846B0 /* Debug */ = { 438 | isa = XCBuildConfiguration; 439 | baseConfigurationReference = D286D516E214760A7022B58E593FEBED /* ITSwitch.xcconfig */; 440 | buildSettings = { 441 | CODE_SIGN_IDENTITY = "-"; 442 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 443 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 444 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 445 | COMBINE_HIDPI_IMAGES = YES; 446 | CURRENT_PROJECT_VERSION = 1; 447 | DEBUG_INFORMATION_FORMAT = dwarf; 448 | DEFINES_MODULE = YES; 449 | DYLIB_COMPATIBILITY_VERSION = 1; 450 | DYLIB_CURRENT_VERSION = 1; 451 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 452 | ENABLE_STRICT_OBJC_MSGSEND = YES; 453 | FRAMEWORK_VERSION = A; 454 | GCC_NO_COMMON_BLOCKS = YES; 455 | GCC_PREFIX_HEADER = "Target Support Files/ITSwitch/ITSwitch-prefix.pch"; 456 | INFOPLIST_FILE = "Target Support Files/ITSwitch/Info.plist"; 457 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 458 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 459 | MACOSX_DEPLOYMENT_TARGET = 10.9; 460 | MODULEMAP_FILE = "Target Support Files/ITSwitch/ITSwitch.modulemap"; 461 | MTL_ENABLE_DEBUG_INFO = YES; 462 | PRODUCT_NAME = ITSwitch; 463 | SDKROOT = macosx; 464 | SKIP_INSTALL = YES; 465 | SWIFT_VERSION = 3.0; 466 | VERSIONING_SYSTEM = "apple-generic"; 467 | VERSION_INFO_PREFIX = ""; 468 | }; 469 | name = Debug; 470 | }; 471 | F653E316AB5F825D3AD0CAE700E37071 /* Debug */ = { 472 | isa = XCBuildConfiguration; 473 | buildSettings = { 474 | ALWAYS_SEARCH_USER_PATHS = NO; 475 | CLANG_ANALYZER_NONNULL = YES; 476 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 477 | CLANG_CXX_LIBRARY = "libc++"; 478 | CLANG_ENABLE_MODULES = YES; 479 | CLANG_ENABLE_OBJC_ARC = YES; 480 | CLANG_WARN_BOOL_CONVERSION = YES; 481 | CLANG_WARN_CONSTANT_CONVERSION = YES; 482 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 483 | CLANG_WARN_EMPTY_BODY = YES; 484 | CLANG_WARN_ENUM_CONVERSION = YES; 485 | CLANG_WARN_INT_CONVERSION = YES; 486 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 487 | CLANG_WARN_UNREACHABLE_CODE = YES; 488 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 489 | CODE_SIGNING_REQUIRED = NO; 490 | COPY_PHASE_STRIP = NO; 491 | ENABLE_TESTABILITY = YES; 492 | GCC_C_LANGUAGE_STANDARD = gnu99; 493 | GCC_DYNAMIC_NO_PIC = NO; 494 | GCC_OPTIMIZATION_LEVEL = 0; 495 | GCC_PREPROCESSOR_DEFINITIONS = ( 496 | "POD_CONFIGURATION_DEBUG=1", 497 | "DEBUG=1", 498 | "$(inherited)", 499 | ); 500 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 501 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 502 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 503 | GCC_WARN_UNDECLARED_SELECTOR = YES; 504 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 505 | GCC_WARN_UNUSED_FUNCTION = YES; 506 | GCC_WARN_UNUSED_VARIABLE = YES; 507 | MACOSX_DEPLOYMENT_TARGET = 10.10; 508 | ONLY_ACTIVE_ARCH = YES; 509 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 510 | STRIP_INSTALLED_PRODUCT = NO; 511 | SYMROOT = "${SRCROOT}/../build"; 512 | }; 513 | name = Debug; 514 | }; 515 | /* End XCBuildConfiguration section */ 516 | 517 | /* Begin XCConfigurationList section */ 518 | 14D1AC88057CF4761A1104C75745592C /* Build configuration list for PBXNativeTarget "Pods-OverKill" */ = { 519 | isa = XCConfigurationList; 520 | buildConfigurations = ( 521 | 04F622E386EAE086BB8299E42D68029D /* Debug */, 522 | 935558EA53DFFC5E17DEA0990EA01FAE /* Release */, 523 | ); 524 | defaultConfigurationIsVisible = 0; 525 | defaultConfigurationName = Release; 526 | }; 527 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 528 | isa = XCConfigurationList; 529 | buildConfigurations = ( 530 | F653E316AB5F825D3AD0CAE700E37071 /* Debug */, 531 | 9420A7205B8F85520AF134F4EE25F7CC /* Release */, 532 | ); 533 | defaultConfigurationIsVisible = 0; 534 | defaultConfigurationName = Release; 535 | }; 536 | 9C269A8A75B8CFC5B26B3D2323BDEC20 /* Build configuration list for PBXNativeTarget "ITSwitch" */ = { 537 | isa = XCConfigurationList; 538 | buildConfigurations = ( 539 | E14177EC4EFB22C38D19DA84063846B0 /* Debug */, 540 | C17AE44502CF97E10EE9F8B9539C9E19 /* Release */, 541 | ); 542 | defaultConfigurationIsVisible = 0; 543 | defaultConfigurationName = Release; 544 | }; 545 | /* End XCConfigurationList section */ 546 | }; 547 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 548 | } 549 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/binaryboy.xcuserdatad/xcschemes/ITSwitch.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/binaryboy.xcuserdatad/xcschemes/Pods-OverKill.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/binaryboy.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | ITSwitch.xcscheme 8 | 9 | isShown 10 | 11 | 12 | Pods-OverKill.xcscheme 13 | 14 | isShown 15 | 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 1D1277B04944214E28E206D65F005710 21 | 22 | primary 23 | 24 | 25 | 366E768D72F9E59262B488F7D6F67800 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ITSwitch/ITSwitch-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_ITSwitch : NSObject 3 | @end 4 | @implementation PodsDummy_ITSwitch 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ITSwitch/ITSwitch-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ITSwitch/ITSwitch-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "ITSwitch.h" 6 | 7 | FOUNDATION_EXPORT double ITSwitchVersionNumber; 8 | FOUNDATION_EXPORT const unsigned char ITSwitchVersionString[]; 9 | 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ITSwitch/ITSwitch.modulemap: -------------------------------------------------------------------------------- 1 | framework module ITSwitch { 2 | umbrella header "ITSwitch-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ITSwitch/ITSwitch.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/ITSwitch 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "QuartzCore" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ITSwitch/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Pods-OverKill-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## ITSwitch 5 | 6 | Apache License 7 | Version 2.0, January 2004 8 | http://www.apache.org/licenses/ 9 | 10 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 11 | 12 | 1. Definitions. 13 | 14 | "License" shall mean the terms and conditions for use, reproduction, 15 | and distribution as defined by Sections 1 through 9 of this document. 16 | 17 | "Licensor" shall mean the copyright owner or entity authorized by 18 | the copyright owner that is granting the License. 19 | 20 | "Legal Entity" shall mean the union of the acting entity and all 21 | other entities that control, are controlled by, or are under common 22 | control with that entity. For the purposes of this definition, 23 | "control" means (i) the power, direct or indirect, to cause the 24 | direction or management of such entity, whether by contract or 25 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 26 | outstanding shares, or (iii) beneficial ownership of such entity. 27 | 28 | "You" (or "Your") shall mean an individual or Legal Entity 29 | exercising permissions granted by this License. 30 | 31 | "Source" form shall mean the preferred form for making modifications, 32 | including but not limited to software source code, documentation 33 | source, and configuration files. 34 | 35 | "Object" form shall mean any form resulting from mechanical 36 | transformation or translation of a Source form, including but 37 | not limited to compiled object code, generated documentation, 38 | and conversions to other media types. 39 | 40 | "Work" shall mean the work of authorship, whether in Source or 41 | Object form, made available under the License, as indicated by a 42 | copyright notice that is included in or attached to the work 43 | (an example is provided in the Appendix below). 44 | 45 | "Derivative Works" shall mean any work, whether in Source or Object 46 | form, that is based on (or derived from) the Work and for which the 47 | editorial revisions, annotations, elaborations, or other modifications 48 | represent, as a whole, an original work of authorship. For the purposes 49 | of this License, Derivative Works shall not include works that remain 50 | separable from, or merely link (or bind by name) to the interfaces of, 51 | the Work and Derivative Works thereof. 52 | 53 | "Contribution" shall mean any work of authorship, including 54 | the original version of the Work and any modifications or additions 55 | to that Work or Derivative Works thereof, that is intentionally 56 | submitted to Licensor for inclusion in the Work by the copyright owner 57 | or by an individual or Legal Entity authorized to submit on behalf of 58 | the copyright owner. For the purposes of this definition, "submitted" 59 | means any form of electronic, verbal, or written communication sent 60 | to the Licensor or its representatives, including but not limited to 61 | communication on electronic mailing lists, source code control systems, 62 | and issue tracking systems that are managed by, or on behalf of, the 63 | Licensor for the purpose of discussing and improving the Work, but 64 | excluding communication that is conspicuously marked or otherwise 65 | designated in writing by the copyright owner as "Not a Contribution." 66 | 67 | "Contributor" shall mean Licensor and any individual or Legal Entity 68 | on behalf of whom a Contribution has been received by Licensor and 69 | subsequently incorporated within the Work. 70 | 71 | 2. Grant of Copyright License. Subject to the terms and conditions of 72 | this License, each Contributor hereby grants to You a perpetual, 73 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 74 | copyright license to reproduce, prepare Derivative Works of, 75 | publicly display, publicly perform, sublicense, and distribute the 76 | Work and such Derivative Works in Source or Object form. 77 | 78 | 3. Grant of Patent License. Subject to the terms and conditions of 79 | this License, each Contributor hereby grants to You a perpetual, 80 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 81 | (except as stated in this section) patent license to make, have made, 82 | use, offer to sell, sell, import, and otherwise transfer the Work, 83 | where such license applies only to those patent claims licensable 84 | by such Contributor that are necessarily infringed by their 85 | Contribution(s) alone or by combination of their Contribution(s) 86 | with the Work to which such Contribution(s) was submitted. If You 87 | institute patent litigation against any entity (including a 88 | cross-claim or counterclaim in a lawsuit) alleging that the Work 89 | or a Contribution incorporated within the Work constitutes direct 90 | or contributory patent infringement, then any patent licenses 91 | granted to You under this License for that Work shall terminate 92 | as of the date such litigation is filed. 93 | 94 | 4. Redistribution. You may reproduce and distribute copies of the 95 | Work or Derivative Works thereof in any medium, with or without 96 | modifications, and in Source or Object form, provided that You 97 | meet the following conditions: 98 | 99 | (a) You must give any other recipients of the Work or 100 | Derivative Works a copy of this License; and 101 | 102 | (b) You must cause any modified files to carry prominent notices 103 | stating that You changed the files; and 104 | 105 | (c) You must retain, in the Source form of any Derivative Works 106 | that You distribute, all copyright, patent, trademark, and 107 | attribution notices from the Source form of the Work, 108 | excluding those notices that do not pertain to any part of 109 | the Derivative Works; and 110 | 111 | (d) If the Work includes a "NOTICE" text file as part of its 112 | distribution, then any Derivative Works that You distribute must 113 | include a readable copy of the attribution notices contained 114 | within such NOTICE file, excluding those notices that do not 115 | pertain to any part of the Derivative Works, in at least one 116 | of the following places: within a NOTICE text file distributed 117 | as part of the Derivative Works; within the Source form or 118 | documentation, if provided along with the Derivative Works; or, 119 | within a display generated by the Derivative Works, if and 120 | wherever such third-party notices normally appear. The contents 121 | of the NOTICE file are for informational purposes only and 122 | do not modify the License. You may add Your own attribution 123 | notices within Derivative Works that You distribute, alongside 124 | or as an addendum to the NOTICE text from the Work, provided 125 | that such additional attribution notices cannot be construed 126 | as modifying the License. 127 | 128 | You may add Your own copyright statement to Your modifications and 129 | may provide additional or different license terms and conditions 130 | for use, reproduction, or distribution of Your modifications, or 131 | for any such Derivative Works as a whole, provided Your use, 132 | reproduction, and distribution of the Work otherwise complies with 133 | the conditions stated in this License. 134 | 135 | 5. Submission of Contributions. Unless You explicitly state otherwise, 136 | any Contribution intentionally submitted for inclusion in the Work 137 | by You to the Licensor shall be under the terms and conditions of 138 | this License, without any additional terms or conditions. 139 | Notwithstanding the above, nothing herein shall supersede or modify 140 | the terms of any separate license agreement you may have executed 141 | with Licensor regarding such Contributions. 142 | 143 | 6. Trademarks. This License does not grant permission to use the trade 144 | names, trademarks, service marks, or product names of the Licensor, 145 | except as required for reasonable and customary use in describing the 146 | origin of the Work and reproducing the content of the NOTICE file. 147 | 148 | 7. Disclaimer of Warranty. Unless required by applicable law or 149 | agreed to in writing, Licensor provides the Work (and each 150 | Contributor provides its Contributions) on an "AS IS" BASIS, 151 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 152 | implied, including, without limitation, any warranties or conditions 153 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 154 | PARTICULAR PURPOSE. You are solely responsible for determining the 155 | appropriateness of using or redistributing the Work and assume any 156 | risks associated with Your exercise of permissions under this License. 157 | 158 | 8. Limitation of Liability. In no event and under no legal theory, 159 | whether in tort (including negligence), contract, or otherwise, 160 | unless required by applicable law (such as deliberate and grossly 161 | negligent acts) or agreed to in writing, shall any Contributor be 162 | liable to You for damages, including any direct, indirect, special, 163 | incidental, or consequential damages of any character arising as a 164 | result of this License or out of the use or inability to use the 165 | Work (including but not limited to damages for loss of goodwill, 166 | work stoppage, computer failure or malfunction, or any and all 167 | other commercial damages or losses), even if such Contributor 168 | has been advised of the possibility of such damages. 169 | 170 | 9. Accepting Warranty or Additional Liability. While redistributing 171 | the Work or Derivative Works thereof, You may choose to offer, 172 | and charge a fee for, acceptance of support, warranty, indemnity, 173 | or other liability obligations and/or rights consistent with this 174 | License. However, in accepting such obligations, You may act only 175 | on Your own behalf and on Your sole responsibility, not on behalf 176 | of any other Contributor, and only if You agree to indemnify, 177 | defend, and hold each Contributor harmless for any liability 178 | incurred by, or claims asserted against, such Contributor by reason 179 | of your accepting any such warranty or additional liability. 180 | 181 | END OF TERMS AND CONDITIONS 182 | 183 | APPENDIX: How to apply the Apache License to your work. 184 | 185 | To apply the Apache License to your work, attach the following 186 | boilerplate notice, with the fields enclosed by brackets "{}" 187 | replaced with your own identifying information. (Don't include 188 | the brackets!) The text should be enclosed in the appropriate 189 | comment syntax for the file format. We also recommend that a 190 | file or class name and description of purpose be included on the 191 | same "printed page" as the copyright notice for easier 192 | identification within third-party archives. 193 | 194 | Copyright 2014 Ilija Tovilo 195 | 196 | Licensed under the Apache License, Version 2.0 (the "License"); 197 | you may not use this file except in compliance with the License. 198 | You may obtain a copy of the License at 199 | 200 | http://www.apache.org/licenses/LICENSE-2.0 201 | 202 | Unless required by applicable law or agreed to in writing, software 203 | distributed under the License is distributed on an "AS IS" BASIS, 204 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 205 | See the License for the specific language governing permissions and 206 | limitations under the License. 207 | 208 | 209 | Generated by CocoaPods - https://cocoapods.org 210 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Pods-OverKill-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Apache License 18 | Version 2.0, January 2004 19 | http://www.apache.org/licenses/ 20 | 21 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 22 | 23 | 1. Definitions. 24 | 25 | "License" shall mean the terms and conditions for use, reproduction, 26 | and distribution as defined by Sections 1 through 9 of this document. 27 | 28 | "Licensor" shall mean the copyright owner or entity authorized by 29 | the copyright owner that is granting the License. 30 | 31 | "Legal Entity" shall mean the union of the acting entity and all 32 | other entities that control, are controlled by, or are under common 33 | control with that entity. For the purposes of this definition, 34 | "control" means (i) the power, direct or indirect, to cause the 35 | direction or management of such entity, whether by contract or 36 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 37 | outstanding shares, or (iii) beneficial ownership of such entity. 38 | 39 | "You" (or "Your") shall mean an individual or Legal Entity 40 | exercising permissions granted by this License. 41 | 42 | "Source" form shall mean the preferred form for making modifications, 43 | including but not limited to software source code, documentation 44 | source, and configuration files. 45 | 46 | "Object" form shall mean any form resulting from mechanical 47 | transformation or translation of a Source form, including but 48 | not limited to compiled object code, generated documentation, 49 | and conversions to other media types. 50 | 51 | "Work" shall mean the work of authorship, whether in Source or 52 | Object form, made available under the License, as indicated by a 53 | copyright notice that is included in or attached to the work 54 | (an example is provided in the Appendix below). 55 | 56 | "Derivative Works" shall mean any work, whether in Source or Object 57 | form, that is based on (or derived from) the Work and for which the 58 | editorial revisions, annotations, elaborations, or other modifications 59 | represent, as a whole, an original work of authorship. For the purposes 60 | of this License, Derivative Works shall not include works that remain 61 | separable from, or merely link (or bind by name) to the interfaces of, 62 | the Work and Derivative Works thereof. 63 | 64 | "Contribution" shall mean any work of authorship, including 65 | the original version of the Work and any modifications or additions 66 | to that Work or Derivative Works thereof, that is intentionally 67 | submitted to Licensor for inclusion in the Work by the copyright owner 68 | or by an individual or Legal Entity authorized to submit on behalf of 69 | the copyright owner. For the purposes of this definition, "submitted" 70 | means any form of electronic, verbal, or written communication sent 71 | to the Licensor or its representatives, including but not limited to 72 | communication on electronic mailing lists, source code control systems, 73 | and issue tracking systems that are managed by, or on behalf of, the 74 | Licensor for the purpose of discussing and improving the Work, but 75 | excluding communication that is conspicuously marked or otherwise 76 | designated in writing by the copyright owner as "Not a Contribution." 77 | 78 | "Contributor" shall mean Licensor and any individual or Legal Entity 79 | on behalf of whom a Contribution has been received by Licensor and 80 | subsequently incorporated within the Work. 81 | 82 | 2. Grant of Copyright License. Subject to the terms and conditions of 83 | this License, each Contributor hereby grants to You a perpetual, 84 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 85 | copyright license to reproduce, prepare Derivative Works of, 86 | publicly display, publicly perform, sublicense, and distribute the 87 | Work and such Derivative Works in Source or Object form. 88 | 89 | 3. Grant of Patent License. Subject to the terms and conditions of 90 | this License, each Contributor hereby grants to You a perpetual, 91 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 92 | (except as stated in this section) patent license to make, have made, 93 | use, offer to sell, sell, import, and otherwise transfer the Work, 94 | where such license applies only to those patent claims licensable 95 | by such Contributor that are necessarily infringed by their 96 | Contribution(s) alone or by combination of their Contribution(s) 97 | with the Work to which such Contribution(s) was submitted. If You 98 | institute patent litigation against any entity (including a 99 | cross-claim or counterclaim in a lawsuit) alleging that the Work 100 | or a Contribution incorporated within the Work constitutes direct 101 | or contributory patent infringement, then any patent licenses 102 | granted to You under this License for that Work shall terminate 103 | as of the date such litigation is filed. 104 | 105 | 4. Redistribution. You may reproduce and distribute copies of the 106 | Work or Derivative Works thereof in any medium, with or without 107 | modifications, and in Source or Object form, provided that You 108 | meet the following conditions: 109 | 110 | (a) You must give any other recipients of the Work or 111 | Derivative Works a copy of this License; and 112 | 113 | (b) You must cause any modified files to carry prominent notices 114 | stating that You changed the files; and 115 | 116 | (c) You must retain, in the Source form of any Derivative Works 117 | that You distribute, all copyright, patent, trademark, and 118 | attribution notices from the Source form of the Work, 119 | excluding those notices that do not pertain to any part of 120 | the Derivative Works; and 121 | 122 | (d) If the Work includes a "NOTICE" text file as part of its 123 | distribution, then any Derivative Works that You distribute must 124 | include a readable copy of the attribution notices contained 125 | within such NOTICE file, excluding those notices that do not 126 | pertain to any part of the Derivative Works, in at least one 127 | of the following places: within a NOTICE text file distributed 128 | as part of the Derivative Works; within the Source form or 129 | documentation, if provided along with the Derivative Works; or, 130 | within a display generated by the Derivative Works, if and 131 | wherever such third-party notices normally appear. The contents 132 | of the NOTICE file are for informational purposes only and 133 | do not modify the License. You may add Your own attribution 134 | notices within Derivative Works that You distribute, alongside 135 | or as an addendum to the NOTICE text from the Work, provided 136 | that such additional attribution notices cannot be construed 137 | as modifying the License. 138 | 139 | You may add Your own copyright statement to Your modifications and 140 | may provide additional or different license terms and conditions 141 | for use, reproduction, or distribution of Your modifications, or 142 | for any such Derivative Works as a whole, provided Your use, 143 | reproduction, and distribution of the Work otherwise complies with 144 | the conditions stated in this License. 145 | 146 | 5. Submission of Contributions. Unless You explicitly state otherwise, 147 | any Contribution intentionally submitted for inclusion in the Work 148 | by You to the Licensor shall be under the terms and conditions of 149 | this License, without any additional terms or conditions. 150 | Notwithstanding the above, nothing herein shall supersede or modify 151 | the terms of any separate license agreement you may have executed 152 | with Licensor regarding such Contributions. 153 | 154 | 6. Trademarks. This License does not grant permission to use the trade 155 | names, trademarks, service marks, or product names of the Licensor, 156 | except as required for reasonable and customary use in describing the 157 | origin of the Work and reproducing the content of the NOTICE file. 158 | 159 | 7. Disclaimer of Warranty. Unless required by applicable law or 160 | agreed to in writing, Licensor provides the Work (and each 161 | Contributor provides its Contributions) on an "AS IS" BASIS, 162 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 163 | implied, including, without limitation, any warranties or conditions 164 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 165 | PARTICULAR PURPOSE. You are solely responsible for determining the 166 | appropriateness of using or redistributing the Work and assume any 167 | risks associated with Your exercise of permissions under this License. 168 | 169 | 8. Limitation of Liability. In no event and under no legal theory, 170 | whether in tort (including negligence), contract, or otherwise, 171 | unless required by applicable law (such as deliberate and grossly 172 | negligent acts) or agreed to in writing, shall any Contributor be 173 | liable to You for damages, including any direct, indirect, special, 174 | incidental, or consequential damages of any character arising as a 175 | result of this License or out of the use or inability to use the 176 | Work (including but not limited to damages for loss of goodwill, 177 | work stoppage, computer failure or malfunction, or any and all 178 | other commercial damages or losses), even if such Contributor 179 | has been advised of the possibility of such damages. 180 | 181 | 9. Accepting Warranty or Additional Liability. While redistributing 182 | the Work or Derivative Works thereof, You may choose to offer, 183 | and charge a fee for, acceptance of support, warranty, indemnity, 184 | or other liability obligations and/or rights consistent with this 185 | License. However, in accepting such obligations, You may act only 186 | on Your own behalf and on Your sole responsibility, not on behalf 187 | of any other Contributor, and only if You agree to indemnify, 188 | defend, and hold each Contributor harmless for any liability 189 | incurred by, or claims asserted against, such Contributor by reason 190 | of your accepting any such warranty or additional liability. 191 | 192 | END OF TERMS AND CONDITIONS 193 | 194 | APPENDIX: How to apply the Apache License to your work. 195 | 196 | To apply the Apache License to your work, attach the following 197 | boilerplate notice, with the fields enclosed by brackets "{}" 198 | replaced with your own identifying information. (Don't include 199 | the brackets!) The text should be enclosed in the appropriate 200 | comment syntax for the file format. We also recommend that a 201 | file or class name and description of purpose be included on the 202 | same "printed page" as the copyright notice for easier 203 | identification within third-party archives. 204 | 205 | Copyright 2014 Ilija Tovilo 206 | 207 | Licensed under the Apache License, Version 2.0 (the "License"); 208 | you may not use this file except in compliance with the License. 209 | You may obtain a copy of the License at 210 | 211 | http://www.apache.org/licenses/LICENSE-2.0 212 | 213 | Unless required by applicable law or agreed to in writing, software 214 | distributed under the License is distributed on an "AS IS" BASIS, 215 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 216 | See the License for the specific language governing permissions and 217 | limitations under the License. 218 | 219 | 220 | License 221 | Apache License 222 | Title 223 | ITSwitch 224 | Type 225 | PSGroupSpecifier 226 | 227 | 228 | FooterText 229 | Generated by CocoaPods - https://cocoapods.org 230 | Title 231 | 232 | Type 233 | PSGroupSpecifier 234 | 235 | 236 | StringsTable 237 | Acknowledgements 238 | Title 239 | Acknowledgements 240 | 241 | 242 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Pods-OverKill-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_OverKill : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_OverKill 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Pods-OverKill-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" 64 | fi 65 | } 66 | 67 | # Strip invalid architectures 68 | strip_invalid_archs() { 69 | binary="$1" 70 | # Get architectures for current file 71 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 72 | stripped="" 73 | for arch in $archs; do 74 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 75 | # Strip non-valid architectures in-place 76 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 77 | stripped="$stripped $arch" 78 | fi 79 | done 80 | if [[ "$stripped" ]]; then 81 | echo "Stripped $binary of architectures:$stripped" 82 | fi 83 | } 84 | 85 | 86 | if [[ "$CONFIGURATION" == "Debug" ]]; then 87 | install_framework "$BUILT_PRODUCTS_DIR/ITSwitch/ITSwitch.framework" 88 | fi 89 | if [[ "$CONFIGURATION" == "Release" ]]; then 90 | install_framework "$BUILT_PRODUCTS_DIR/ITSwitch/ITSwitch.framework" 91 | fi 92 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Pods-OverKill-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | *) 22 | TARGET_DEVICE_ARGS="--target-device mac" 23 | ;; 24 | esac 25 | 26 | install_resource() 27 | { 28 | if [[ "$1" = /* ]] ; then 29 | RESOURCE_PATH="$1" 30 | else 31 | RESOURCE_PATH="${PODS_ROOT}/$1" 32 | fi 33 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 34 | cat << EOM 35 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 36 | EOM 37 | exit 1 38 | fi 39 | case $RESOURCE_PATH in 40 | *.storyboard) 41 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 42 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 43 | ;; 44 | *.xib) 45 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 46 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 47 | ;; 48 | *.framework) 49 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 50 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 51 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 52 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 53 | ;; 54 | *.xcdatamodel) 55 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 56 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 57 | ;; 58 | *.xcdatamodeld) 59 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 60 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 61 | ;; 62 | *.xcmappingmodel) 63 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 64 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 65 | ;; 66 | *.xcassets) 67 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 68 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 69 | ;; 70 | *) 71 | echo "$RESOURCE_PATH" 72 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 73 | ;; 74 | esac 75 | } 76 | 77 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 78 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 79 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 80 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 82 | fi 83 | rm -f "$RESOURCES_TO_COPY" 84 | 85 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 86 | then 87 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 88 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 89 | while read line; do 90 | if [[ $line != "${PODS_ROOT}*" ]]; then 91 | XCASSET_FILES+=("$line") 92 | fi 93 | done <<<"$OTHER_XCASSETS" 94 | 95 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | fi 97 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Pods-OverKill-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | 6 | FOUNDATION_EXPORT double Pods_OverKillVersionNumber; 7 | FOUNDATION_EXPORT const unsigned char Pods_OverKillVersionString[]; 8 | 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Pods-OverKill.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | CODE_SIGN_IDENTITY = 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ITSwitch" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ITSwitch/ITSwitch.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "ITSwitch" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Pods-OverKill.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_OverKill { 2 | umbrella header "Pods-OverKill-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-OverKill/Pods-OverKill.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | CODE_SIGN_IDENTITY = 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ITSwitch" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ITSwitch/ITSwitch.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "ITSwitch" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | Mac App kill iTunes and Photos App when connect iOS devices 3 | 4 | ![](https://github.com/dimohamdy/OverKill_Swift_App/blob/master/ScreenShot/ScreenShot1.png) 5 | 6 | 7 | ### Inspire from [KrauseFx](https://twitter.com/KrauseFx) and his repo [overkill](https://github.com/KrauseFx/overkill) 8 | 9 | ## Author 10 | 11 | Ahmed Hamdy, [@dimohamdy](https://twitter.com/dimohamdy) 12 | -------------------------------------------------------------------------------- /ScreenShot/ScreenShot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dimohamdy/OverKill_Swift_App/196bf6fc4dee2deedd98bccfec6488e54fea3458/ScreenShot/ScreenShot1.png --------------------------------------------------------------------------------