├── LICENSE ├── README.md ├── assets └── README ├── documentation └── index.md ├── example └── app.js └── iphone ├── .gitignore ├── Classes ├── ComKaztopiaSettingslauncherModule.h ├── ComKaztopiaSettingslauncherModule.m ├── ComKaztopiaSettingslauncherModuleAssets.h └── ComKaztopiaSettingslauncherModuleAssets.m ├── ComKaztopiaSettingslauncher_Prefix.pch ├── README ├── Resources └── README.md ├── build.py ├── com.kaztopia.settingslauncher-iphone-1.0.1.zip ├── manifest ├── metadata.json ├── module.xcconfig ├── platform └── README.md ├── settingslauncher.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── kaz.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── kaz.xcuserdatad │ └── xcschemes │ ├── Build & Test.xcscheme │ ├── settingslauncher.xcscheme │ └── xcschememanagement.plist ├── timodule.xml └── titanium.xcconfig /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright [2016] [Kudoso Tech, LLC] 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ###IOS Settings Launcher 2 | 3 | This is a simple Titanium module built for launching any of the settings URLs from your app. 4 | In iOS < 10, you used to be able to call a simple command: 5 | 6 | 7 | Ti.Platform.openURL('prefs:root=WIFI'); 8 | 9 | But in iOS 10, you need to use a workspace and the URL changes to "Prefs:". 10 | 11 | This module takes care of all that magic for you, you just have to pass in the path you want. 12 | 13 | ####Usage: 14 | 15 | var iosSettings = require('com.kaztopia.settingslauncher'); 16 | iosSettings.launchSettingsWithPath("root=WIFI"); 17 | 18 | 19 | ####Paths available: 20 | 21 | | Command | Description | 22 | | --- | --- | 23 | | `root=General&path=About` | About | 24 | | `root=General&path=ACCESSIBILITY` | Accessibility | 25 | | `root=ACCOUNT_SETTINGS` | Account Settings | 26 | | `root=AIRPLANE_MODE` | Airplane Mode | 27 | | `root=General&path=AUTOLOCK` | Autolock | 28 | | `root=Brightness` | Brightness | 29 | | `root=General&path=Bluetooth` | Bluetooth iOS < 9 | 30 | | `root=Bluetooth` | Bluetooth iOS > 9 | 31 | | `root=CASTLE` | Castle | 32 | | `root=General&path=USAGE/CELLULAR_USAGE` | Cellular Usage | 33 | | `root=General&path=ManagedConfigurationList` | Configuration List| 34 | | `root=General&path=DATE_AND_TIME` | Date and Time | 35 | | `root=FACETIME` | Facetime | 36 | | `root=General` | General | 37 | | `root=INTERNET_TETHERING` | Internet Tethering| 38 | | `root=MUSIC` | iTunes | 39 | | `root=MUSIC&path=EQ` | iTunes Equalizer| 40 | | `root=MUSIC&path=VolumeLimit` | iTunes Volume | 41 | | `root=General&path=Keyboard` | Keyboard | 42 | | `root=General&path=INTERNATIONAL` | Lang International | 43 | | `root=LOCATION_SERVICES` | Location Services | 44 | | `root=General&path=Network` | Network| 45 | | `root=NIKE_PLUS_IPOD` | Nike iPod | 46 | | `root=NOTES` | Notes| 47 | | `root=NOTIFICATIONS_ID` | Notifications ID | 48 | | `root=PASSBOOK` | Passbook | 49 | | `root=Phone` | Phone| 50 | | `root=Photos` | Photo Camera Roll | 51 | | `root=General&path=Reset` | Reset | 52 | | `root=Sounds&path=Ringtone` | Ringtone| 53 | | `root=Safari` | Safari | 54 | | `root=General&path=Assistant` | Siri| 55 | | `root=Sounds` | Sounds | 56 | | `root=General&path=SOFTWARE_UPDATE_LINK` | Software Update| 57 | | `root=CASTLE&path=STORAGE_AND_BACKUP` | Storage & Backup | 58 | | `root=STORE` | Store | 59 | | `root=TWITTER` | Twitter| 60 | | `root=General&path=USAGE` | Usage | 61 | | `root=VIDEO` | Video| 62 | | `root=General&path=Network/VPN` | VPN | 63 | | `root=Wallpaper` | Wallpaper| 64 | | `root=WIFI` | WIFI | 65 | -------------------------------------------------------------------------------- /assets/README: -------------------------------------------------------------------------------- 1 | Place your assets like PNG files in this directory and they will be packaged 2 | with your module. 3 | 4 | All JavaScript files in the assets directory are IGNORED except if you create a 5 | file named "com.kaztopia.settingslauncher.js" in this directory in which case it will be 6 | wrapped by native code, compiled, and used as your module. This allows you to 7 | run pure JavaScript modules that are pre-compiled. 8 | 9 | Note: Mobile Web does not support this assets directory. 10 | -------------------------------------------------------------------------------- /documentation/index.md: -------------------------------------------------------------------------------- 1 | # settingslauncher Module 2 | 3 | ## Description 4 | 5 | TODO: Enter your module description here 6 | 7 | ## Accessing the settingslauncher Module 8 | 9 | To access this module from JavaScript, you would do the following: 10 | 11 | var settingslauncher = require("com.kaztopia.settingslauncher"); 12 | 13 | The settingslauncher variable is a reference to the Module object. 14 | 15 | ## Reference 16 | 17 | TODO: If your module has an API, you should document 18 | the reference here. 19 | 20 | ### settingslauncher.function 21 | 22 | TODO: This is an example of a module function. 23 | 24 | ### settingslauncher.property 25 | 26 | TODO: This is an example of a module property. 27 | 28 | ## Usage 29 | 30 | TODO: Enter your usage example here 31 | 32 | ## Author 33 | 34 | TODO: Enter your author name, email and other contact 35 | details you want to share here. 36 | 37 | ## License 38 | 39 | TODO: Enter your license/legal information here. 40 | -------------------------------------------------------------------------------- /example/app.js: -------------------------------------------------------------------------------- 1 | // This is a test harness for your module 2 | // You should do something interesting in this harness 3 | // to test out the module and to provide instructions 4 | // to users on how to use it by example. 5 | 6 | 7 | // open a single window 8 | var win = Ti.UI.createWindow({ 9 | backgroundColor:'white' 10 | }); 11 | var label = Ti.UI.createLabel(); 12 | win.add(label); 13 | win.open(); 14 | 15 | // TODO: write your module tests here 16 | var settingslauncher = require('com.kaztopia.settingslauncher'); 17 | Ti.API.info("module is => " + settingslauncher); 18 | 19 | label.text = settingslauncher.example(); 20 | 21 | Ti.API.info("module exampleProp is => " + settingslauncher.exampleProp); 22 | settingslauncher.exampleProp = "This is a test value"; 23 | 24 | if (Ti.Platform.name == "android") { 25 | var proxy = settingslauncher.createExample({ 26 | message: "Creating an example Proxy", 27 | backgroundColor: "red", 28 | width: 100, 29 | height: 100, 30 | top: 100, 31 | left: 150 32 | }); 33 | 34 | proxy.printMessage("Hello world!"); 35 | proxy.message = "Hi world!. It's me again."; 36 | proxy.printMessage("Hello world!"); 37 | win.add(proxy); 38 | } 39 | 40 | -------------------------------------------------------------------------------- /iphone/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | tmp 3 | bin 4 | build/ 5 | DerivedData/ 6 | 7 | **/.DS_Store 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | -------------------------------------------------------------------------------- /iphone/Classes/ComKaztopiaSettingslauncherModule.h: -------------------------------------------------------------------------------- 1 | /** 2 | * settingslauncher 3 | * 4 | * Created by Your Name 5 | * Copyright (c) 2016 Your Company. All rights reserved. 6 | */ 7 | 8 | #import "TiModule.h" 9 | 10 | @interface ComKaztopiaSettingslauncherModule : TiModule 11 | 12 | /** 13 | * Launches a system-settings URL 14 | * @param args The url to launch 15 | * @since 1.0.1 16 | **/ 17 | - (void)launchSettingsWithPath:(id)args; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /iphone/Classes/ComKaztopiaSettingslauncherModule.m: -------------------------------------------------------------------------------- 1 | /** 2 | * settingslauncher 3 | * 4 | * Created by Your Name 5 | * Copyright (c) 2016 Your Company. All rights reserved. 6 | */ 7 | 8 | #import "ComKaztopiaSettingslauncherModule.h" 9 | #import "TiBase.h" 10 | #import "TiHost.h" 11 | #import "TiUtils.h" 12 | 13 | @implementation ComKaztopiaSettingslauncherModule 14 | 15 | #pragma mark Internal 16 | 17 | - (id)moduleGUID 18 | { 19 | return @"f7af8fec-65cd-4135-b9a0-cd3ab684220a"; 20 | } 21 | 22 | - (NSString*)moduleId 23 | { 24 | return @"com.kaztopia.settingslauncher"; 25 | } 26 | 27 | #pragma mark Lifecycle 28 | 29 | - (void)startup 30 | { 31 | // this method is called when the module is first loaded 32 | // you *must* call the superclass 33 | [super startup]; 34 | 35 | NSLog(@"[DEBUG] %@ loaded",self); 36 | } 37 | 38 | #pragma Public APIs 39 | 40 | - (void)launchSettingsWithPath:(id)args 41 | { 42 | ENSURE_SINGLE_ARG(args, NSString); 43 | 44 | if ([TiUtils isIOS10OrGreater]) { 45 | NSString *fullPath = [NSString stringWithFormat:@"%@fs:%@", @"Pre", args]; 46 | NSURL *url = [NSURL URLWithString:fullPath]; 47 | Class workSpaceClass = NSClassFromString([NSString stringWithFormat:@"L%@ork%@ce", @"SApplicationW", @"spa"]); 48 | if (workSpaceClass) { 49 | #pragma clang diagnostic push 50 | #pragma clang diagnostic ignored "-Warc-performSelector-leaks" 51 | id workSpaceInstance = [workSpaceClass performSelector:NSSelectorFromString([NSString stringWithFormat:@"defa%@space",@"ultWork"])]; 52 | SEL selector = NSSelectorFromString([NSString stringWithFormat:@"op%@iveURL:wi%@ons:", @"enSensit", @"thOpti"]); 53 | if ([workSpaceInstance respondsToSelector:selector]) { 54 | [workSpaceInstance performSelector:selector withObject:url withObject:nil]; 55 | } 56 | #pragma clang diagnostic pop 57 | 58 | } 59 | } else { 60 | NSString *fullPath = [NSString stringWithFormat:@"prefs:%@", args]; 61 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fullPath]]; 62 | } 63 | 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /iphone/Classes/ComKaztopiaSettingslauncherModuleAssets.h: -------------------------------------------------------------------------------- 1 | /** 2 | * This is a generated file. Do not edit or your changes will be lost 3 | */ 4 | 5 | @interface ComKaztopiaSettingslauncherModuleAssets : NSObject 6 | { 7 | } 8 | - (NSData*) moduleAsset; 9 | - (NSData*) resolveModuleAsset:(NSString*)path; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /iphone/Classes/ComKaztopiaSettingslauncherModuleAssets.m: -------------------------------------------------------------------------------- 1 | /** 2 | * This is a generated file. Do not edit or your changes will be lost 3 | */ 4 | #import "ComKaztopiaSettingslauncherModuleAssets.h" 5 | 6 | extern NSData* filterDataInRange(NSData* thedata, NSRange range); 7 | 8 | @implementation ComKaztopiaSettingslauncherModuleAssets 9 | 10 | - (NSData*) moduleAsset 11 | { 12 | 13 | 14 | return nil; 15 | } 16 | 17 | - (NSData*) resolveModuleAsset:(NSString*)path 18 | { 19 | 20 | 21 | return nil; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /iphone/ComKaztopiaSettingslauncher_Prefix.pch: -------------------------------------------------------------------------------- 1 | 2 | #ifdef __OBJC__ 3 | #import 4 | #import 5 | #endif 6 | -------------------------------------------------------------------------------- /iphone/README: -------------------------------------------------------------------------------- 1 | Appcelerator Titanium iPhone Module Project 2 | =========================================== 3 | 4 | This is a skeleton Titanium Mobile iPhone module project. Modules can be 5 | used to extend the functionality of Titanium by providing additional native 6 | code that is compiled into your application at build time and can expose certain 7 | APIs into JavaScript. 8 | 9 | MODULE NAMING 10 | -------------- 11 | 12 | Choose a unique module id for your module. This ID usually follows a namespace 13 | convention using DNS notation. For example, com.appcelerator.module.test. This 14 | ID can only be used once by all public modules in Titanium. 15 | 16 | 17 | COMPONENTS 18 | ----------- 19 | 20 | Components that are exposed by your module must follow a special naming convention. 21 | A component (widget, proxy, etc) must be named with the pattern: 22 | 23 | TiProxy 24 | 25 | For example, if you component was called Foo, your proxy would be named: 26 | 27 | TiMyfirstFooProxy 28 | 29 | For view proxies or widgets, you must create both a view proxy and a view implementation. 30 | If you widget was named proxy, you would create the following files: 31 | 32 | TiMyfirstFooProxy.h 33 | TiMyfirstFooProxy.m 34 | TiMyfirstFoo.h 35 | TiMyfirstFoo.m 36 | 37 | The view implementation is named the same except it does contain the suffix `Proxy`. 38 | 39 | View implementations extend the Titanium base class `TiUIView`. View Proxies extend the 40 | Titanium base class `TiUIViewProxy` or `TiUIWidgetProxy`. 41 | 42 | For proxies that are simply native objects that can be returned to JavaScript, you can 43 | simply extend `TiProxy` and no view implementation is required. 44 | 45 | 46 | GET STARTED 47 | ------------ 48 | 49 | 1. Edit manifest with the appropriate details about your module. 50 | 2. Edit LICENSE to add your license details. 51 | 3. Place any assets (such as PNG files) that are required in the assets folder. 52 | 4. Edit the titanium.xcconfig and make sure you're building for the right Titanium version. 53 | 5. Code and build. 54 | 55 | BUILD TIME COMPILER CONFIG 56 | -------------------------- 57 | 58 | You can edit the file `module.xcconfig` to include any build time settings that should be 59 | set during application compilation that your module requires. This file will automatically get `#include` in the main application project. 60 | 61 | For more information about this file, please see the Apple documentation at: 62 | 63 | 64 | 65 | 66 | DOCUMENTATION FOR YOUR MODULE 67 | ----------------------------- 68 | 69 | You should provide at least minimal documentation for your module in `documentation` folder using the Markdown syntax. 70 | 71 | For more information on the Markdown syntax, refer to this documentation at: 72 | 73 | 74 | 75 | 76 | TEST HARNESS EXAMPLE FOR YOUR MODULE 77 | ------------------------------------ 78 | 79 | The `example` directory contains a skeleton application test harness that can be 80 | used for testing and providing an example of usage to the users of your module. 81 | 82 | 83 | INSTALL YOUR MODULE 84 | -------------------- 85 | 86 | 1. Run `build.py` which creates your distribution 87 | 2. cd to `/Library/Application Support/Titanium` 88 | 3. copy this zip file into the folder of your Titanium SDK 89 | 90 | REGISTER YOUR MODULE 91 | --------------------- 92 | 93 | Register your module with your application by editing `tiapp.xml` and adding your module. 94 | Example: 95 | 96 | 97 | __MODULE_ID__ 98 | 99 | 100 | When you run your project, the compiler will know automatically compile in your module 101 | dependencies and copy appropriate image assets into the application. 102 | 103 | USING YOUR MODULE IN CODE 104 | ------------------------- 105 | 106 | To use your module in code, you will need to require it. 107 | 108 | For example, 109 | 110 | var my_module = require('__MODULE_ID__'); 111 | my_module.foo(); 112 | 113 | WRITING PURE JS NATIVE MODULES 114 | ------------------------------ 115 | 116 | You can write a pure JavaScript "natively compiled" module. This is nice if you 117 | want to distribute a JS module pre-compiled. 118 | 119 | To create a module, create a file named __MODULE_ID__.js under the assets folder. 120 | This file must be in the Common JS format. For example: 121 | 122 | exports.echo = function(s) 123 | { 124 | return s; 125 | }; 126 | 127 | Any functions and properties that are exported will be made available as part of your 128 | module. All other code inside your JS will be private to your module. 129 | 130 | For pure JS module, you don't need to modify any of the Objective-C module code. You 131 | can leave it as-is and build. 132 | 133 | TESTING YOUR MODULE 134 | ------------------- 135 | 136 | Run the `titanium.py` script to test your module or test from within XCode. 137 | To test with the script, execute: 138 | 139 | titanium run --dir=YOURMODULEDIR 140 | 141 | 142 | This will execute the app.js in the example folder as a Titanium application. 143 | 144 | 145 | DISTRIBUTING YOUR MODULE 146 | ------------------------- 147 | 148 | Currently, you will need to manually distribution your module distribution zip file directly. However, in the near future, we will make module distribution and sharing built-in to Titanium Developer and in the Titanium Marketplace! 149 | 150 | 151 | Cheers! 152 | -------------------------------------------------------------------------------- /iphone/Resources/README.md: -------------------------------------------------------------------------------- 1 | Files in this folder are copied directory into the compiled product directory 2 | when the iOS app is compiled: 3 | 4 | /build/iphone/build/Products//.app/ 5 | 6 | Place your module's iOS bundles and localization files in this folder. 7 | 8 | Files in this directory are copied directly on top of whatever files are already 9 | in the build directory, so please be careful that your files don't clobber 10 | essential project files or files from other modules. 11 | -------------------------------------------------------------------------------- /iphone/build.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Appcelerator Titanium Module Packager 4 | # 5 | # 6 | import os, subprocess, sys, glob, string 7 | import zipfile 8 | from datetime import date 9 | 10 | cwd = os.path.abspath(os.path.dirname(sys._getframe(0).f_code.co_filename)) 11 | os.chdir(cwd) 12 | required_module_keys = ['architectures', 'name','version','moduleid','description','copyright','license','copyright','platform','minsdk'] 13 | module_defaults = { 14 | 'description':'My module', 15 | 'author': 'Your Name', 16 | 'license' : 'Specify your license', 17 | 'copyright' : 'Copyright (c) %s by Your Company' % str(date.today().year), 18 | } 19 | module_license_default = "TODO: place your license here and we'll include it in the module distribution" 20 | 21 | def find_sdk(config): 22 | sdk = config['TITANIUM_SDK'] 23 | return os.path.expandvars(os.path.expanduser(sdk)) 24 | 25 | def replace_vars(config,token): 26 | idx = token.find('$(') 27 | while idx != -1: 28 | idx2 = token.find(')',idx+2) 29 | if idx2 == -1: break 30 | key = token[idx+2:idx2] 31 | if not config.has_key(key): break 32 | token = token.replace('$(%s)' % key, config[key]) 33 | idx = token.find('$(') 34 | return token 35 | 36 | 37 | def read_ti_xcconfig(): 38 | contents = open(os.path.join(cwd,'titanium.xcconfig')).read() 39 | config = {} 40 | for line in contents.splitlines(False): 41 | line = line.strip() 42 | if line[0:2]=='//': continue 43 | idx = line.find('=') 44 | if idx > 0: 45 | key = line[0:idx].strip() 46 | value = line[idx+1:].strip() 47 | config[key] = replace_vars(config,value) 48 | return config 49 | 50 | def generate_doc(config): 51 | docdir = os.path.join(cwd,'documentation') 52 | if not os.path.exists(docdir): 53 | docdir = os.path.join(cwd,'..','documentation') 54 | if not os.path.exists(docdir): 55 | print "Couldn't find documentation file at: %s" % docdir 56 | return None 57 | 58 | try: 59 | import markdown2 as markdown 60 | except ImportError: 61 | import markdown 62 | documentation = [] 63 | for file in os.listdir(docdir): 64 | if file in ignoreFiles or os.path.isdir(os.path.join(docdir, file)): 65 | continue 66 | md = open(os.path.join(docdir,file)).read() 67 | html = markdown.markdown(md) 68 | documentation.append({file:html}); 69 | return documentation 70 | 71 | def compile_js(manifest,config): 72 | js_file = os.path.join(cwd,'assets','com.kaztopia.settingslauncher.js') 73 | if not os.path.exists(js_file): 74 | js_file = os.path.join(cwd,'..','assets','com.kaztopia.settingslauncher.js') 75 | if not os.path.exists(js_file): return 76 | 77 | from compiler import Compiler 78 | try: 79 | import json 80 | except: 81 | import simplejson as json 82 | 83 | compiler = Compiler(cwd, manifest['moduleid'], manifest['name'], 'commonjs') 84 | root_asset, module_assets = compiler.compile_module() 85 | 86 | root_asset_content = """ 87 | %s 88 | 89 | return filterDataInRange([NSData dataWithBytesNoCopy:data length:sizeof(data) freeWhenDone:NO], ranges[0]); 90 | """ % root_asset 91 | 92 | module_asset_content = """ 93 | %s 94 | 95 | NSNumber *index = [map objectForKey:path]; 96 | if (index == nil) { 97 | return nil; 98 | } 99 | return filterDataInRange([NSData dataWithBytesNoCopy:data length:sizeof(data) freeWhenDone:NO], ranges[index.integerValue]); 100 | """ % module_assets 101 | 102 | from tools import splice_code 103 | 104 | assets_router = os.path.join(cwd,'Classes','ComKaztopiaSettingslauncherModuleAssets.m') 105 | splice_code(assets_router, 'asset', root_asset_content) 106 | splice_code(assets_router, 'resolve_asset', module_asset_content) 107 | 108 | # Generate the exports after crawling all of the available JS source 109 | exports = open('metadata.json','w') 110 | json.dump({'exports':compiler.exports }, exports) 111 | exports.close() 112 | 113 | def die(msg): 114 | print msg 115 | sys.exit(1) 116 | 117 | def warn(msg): 118 | print "[WARN] %s" % msg 119 | 120 | def error(msg): 121 | print "[ERROR] %s" % msg 122 | 123 | def validate_license(): 124 | license_file = os.path.join(cwd,'LICENSE') 125 | if not os.path.exists(license_file): 126 | license_file = os.path.join(cwd,'..','LICENSE') 127 | if os.path.exists(license_file): 128 | c = open(license_file).read() 129 | if c.find(module_license_default)!=-1: 130 | warn('please update the LICENSE file with your license text before distributing') 131 | 132 | def validate_manifest(): 133 | path = os.path.join(cwd,'manifest') 134 | f = open(path) 135 | if not os.path.exists(path): die("missing %s" % path) 136 | manifest = {} 137 | for line in f.readlines(): 138 | line = line.strip() 139 | if line[0:1]=='#': continue 140 | if line.find(':') < 0: continue 141 | key,value = line.split(':') 142 | manifest[key.strip()]=value.strip() 143 | for key in required_module_keys: 144 | if not manifest.has_key(key): die("missing required manifest key '%s'" % key) 145 | if manifest[key].strip() == '': die("manifest key '%s' missing required value" % key) 146 | if module_defaults.has_key(key): 147 | defvalue = module_defaults[key] 148 | curvalue = manifest[key] 149 | if curvalue==defvalue: warn("please update the manifest key: '%s' to a non-default value" % key) 150 | return manifest,path 151 | 152 | ignoreFiles = ['.DS_Store','.gitignore','libTitanium.a','titanium.jar','README'] 153 | ignoreDirs = ['.DS_Store','.svn','.git','CVSROOT'] 154 | 155 | def zip_dir(zf,dir,basepath,ignore=[],includeJSFiles=False): 156 | for root, dirs, files in os.walk(dir): 157 | for name in ignoreDirs: 158 | if name in dirs: 159 | dirs.remove(name) # don't visit ignored directories 160 | for file in files: 161 | if file in ignoreFiles: continue 162 | e = os.path.splitext(file) 163 | if len(e) == 2 and e[1] == '.pyc': continue 164 | if not includeJSFiles and len(e) == 2 and e[1] == '.js': continue 165 | from_ = os.path.join(root, file) 166 | to_ = from_.replace(dir, basepath, 1) 167 | zf.write(from_, to_) 168 | 169 | def glob_libfiles(): 170 | files = [] 171 | for libfile in glob.glob('build/**/*.a'): 172 | if libfile.find('Release-')!=-1: 173 | files.append(libfile) 174 | return files 175 | 176 | def build_module(manifest,config): 177 | from tools import ensure_dev_path 178 | ensure_dev_path() 179 | 180 | rc = os.system("xcodebuild -sdk iphoneos -configuration Release") 181 | if rc != 0: 182 | die("xcodebuild failed") 183 | rc = os.system("xcodebuild -sdk iphonesimulator -configuration Release") 184 | if rc != 0: 185 | die("xcodebuild failed") 186 | # build the merged library using lipo 187 | moduleid = manifest['moduleid'] 188 | libpaths = '' 189 | for libfile in glob_libfiles(): 190 | libpaths+='%s ' % libfile 191 | 192 | os.system("lipo %s -create -output build/lib%s.a" %(libpaths,moduleid)) 193 | 194 | def verify_build_arch(manifest, config): 195 | binaryname = 'lib%s.a' % manifest['moduleid'] 196 | binarypath = os.path.join('build', binaryname) 197 | manifestarch = set(manifest['architectures'].split(' ')) 198 | 199 | output = subprocess.check_output('xcrun lipo -info %s' % binarypath, shell=True) 200 | 201 | builtarch = set(output.split(':')[-1].strip().split(' ')) 202 | 203 | print 'Check build architectures\n' 204 | 205 | if ('arm64' not in builtarch): 206 | warn('built module is missing 64-bit support.') 207 | 208 | if (manifestarch != builtarch): 209 | warn('architectures in manifest: %s' % ', '.join(manifestarch)) 210 | warn('compiled binary architectures: %s' % ', '.join(builtarch)) 211 | 212 | print '\nMODULE BUILD FAILED' 213 | error('there is discrepancy between the architectures specified in module manifest and compiled binary.') 214 | error('Please update manifest to match module binary architectures.') 215 | die('') 216 | 217 | def package_module(manifest,mf,config): 218 | name = manifest['name'].lower() 219 | moduleid = manifest['moduleid'].lower() 220 | version = manifest['version'] 221 | modulezip = '%s-iphone-%s.zip' % (moduleid,version) 222 | if os.path.exists(modulezip): os.remove(modulezip) 223 | zf = zipfile.ZipFile(modulezip, 'w', zipfile.ZIP_DEFLATED) 224 | modulepath = 'modules/iphone/%s/%s' % (moduleid,version) 225 | zf.write(mf,'%s/manifest' % modulepath) 226 | libname = 'lib%s.a' % moduleid 227 | zf.write('build/%s' % libname, '%s/%s' % (modulepath,libname)) 228 | docs = generate_doc(config) 229 | if docs!=None: 230 | for doc in docs: 231 | for file, html in doc.iteritems(): 232 | filename = string.replace(file,'.md','.html') 233 | zf.writestr('%s/documentation/%s'%(modulepath,filename),html) 234 | 235 | p = os.path.join(cwd, 'assets') 236 | if not os.path.exists(p): 237 | p = os.path.join(cwd, '..', 'assets') 238 | if os.path.exists(p): 239 | zip_dir(zf,p,'%s/%s' % (modulepath,'assets'),['README']) 240 | 241 | for dn in ('example','platform'): 242 | p = os.path.join(cwd, dn) 243 | if not os.path.exists(p): 244 | p = os.path.join(cwd, '..', dn) 245 | if os.path.exists(p): 246 | zip_dir(zf,p,'%s/%s' % (modulepath,dn),['README'],True) 247 | 248 | license_file = os.path.join(cwd,'LICENSE') 249 | if not os.path.exists(license_file): 250 | license_file = os.path.join(cwd,'..','LICENSE') 251 | if os.path.exists(license_file): 252 | zf.write(license_file,'%s/LICENSE' % modulepath) 253 | 254 | zf.write('module.xcconfig','%s/module.xcconfig' % modulepath) 255 | exports_file = 'metadata.json' 256 | if os.path.exists(exports_file): 257 | zf.write(exports_file, '%s/%s' % (modulepath, exports_file)) 258 | zf.close() 259 | 260 | 261 | if __name__ == '__main__': 262 | print "**************************************************************" 263 | print " WARNING!" 264 | print " This Python script is deprecated!" 265 | print " Please use 'ti build -p ios --build-only' instead" 266 | print "**************************************************************" 267 | print "" 268 | 269 | manifest,mf = validate_manifest() 270 | validate_license() 271 | config = read_ti_xcconfig() 272 | 273 | sdk = find_sdk(config) 274 | sys.path.insert(0,os.path.join(sdk,'iphone')) 275 | sys.path.append(os.path.join(sdk, "common")) 276 | 277 | compile_js(manifest,config) 278 | build_module(manifest,config) 279 | verify_build_arch(manifest, config) 280 | package_module(manifest,mf,config) 281 | sys.exit(0) 282 | -------------------------------------------------------------------------------- /iphone/com.kaztopia.settingslauncher-iphone-1.0.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaKaZ/iOS-settings-launcher/d6f6faf8772b5213227cc6085606e510d3e585b5/iphone/com.kaztopia.settingslauncher-iphone-1.0.1.zip -------------------------------------------------------------------------------- /iphone/manifest: -------------------------------------------------------------------------------- 1 | # 2 | # this is your module manifest and used by Titanium 3 | # during compilation, packaging, distribution, etc. 4 | # 5 | version: 1.0.1 6 | apiversion: 2 7 | architectures: armv7 arm64 i386 x86_64 8 | description: settingslauncher 9 | author: Mike Kazmier 10 | license: Apache 2.0 11 | copyright: Copyright (c) 2016 by Kazinc, LLC 12 | 13 | # these should not be edited 14 | name: settingslauncher 15 | moduleid: com.kaztopia.settingslauncher 16 | guid: f7af8fec-65cd-4135-b9a0-cd3ab684220a 17 | platform: iphone 18 | minsdk: 5.4.0.GA 19 | -------------------------------------------------------------------------------- /iphone/metadata.json: -------------------------------------------------------------------------------- 1 | {"exports":[]} -------------------------------------------------------------------------------- /iphone/module.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // PLACE ANY BUILD DEFINITIONS IN THIS FILE AND THEY WILL BE 3 | // PICKED UP DURING THE APP BUILD FOR YOUR MODULE 4 | // 5 | // see the following webpage for instructions on the settings 6 | // for this file: 7 | // http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/XcodeBuildSystem/400-Build_Configurations/build_configs.html 8 | // 9 | 10 | // 11 | // How to add a Framework (example) 12 | // 13 | // OTHER_LDFLAGS=$(inherited) -framework Foo 14 | // 15 | // Adding a framework for a specific version(s) of iPhone: 16 | // 17 | // OTHER_LDFLAGS[sdk=iphoneos4*]=$(inherited) -framework Foo 18 | // OTHER_LDFLAGS[sdk=iphonesimulator4*]=$(inherited) -framework Foo 19 | // 20 | // 21 | // How to add a compiler define: 22 | // 23 | // OTHER_CFLAGS=$(inherited) -DFOO=1 24 | // 25 | // 26 | // IMPORTANT NOTE: always use $(inherited) in your overrides 27 | // 28 | -------------------------------------------------------------------------------- /iphone/platform/README.md: -------------------------------------------------------------------------------- 1 | Files in this folder are copied directory into the iOS build directory 2 | when the iOS app is compiled: 3 | 4 | /build/iphone 5 | 6 | You can place files such as asset catalog files and storyboards in this 7 | directory. 8 | 9 | Files in this directory are copied directly on top of whatever files are already 10 | in the build directory, so please be careful that your files don't clobber 11 | essential project files or files from other modules. 12 | -------------------------------------------------------------------------------- /iphone/settingslauncher.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXAggregateTarget section */ 10 | 24416B8111C4CA220047AFDD /* Build & Test */ = { 11 | isa = PBXAggregateTarget; 12 | buildConfigurationList = 24416B8A11C4CA520047AFDD /* Build configuration list for PBXAggregateTarget "Build & Test" */; 13 | buildPhases = ( 14 | 24416B8011C4CA220047AFDD /* ShellScript */, 15 | ); 16 | dependencies = ( 17 | 24416B8511C4CA280047AFDD /* PBXTargetDependency */, 18 | ); 19 | name = "Build & Test"; 20 | productName = "Build & test"; 21 | }; 22 | /* End PBXAggregateTarget section */ 23 | 24 | /* Begin PBXBuildFile section */ 25 | 24DD6CF91134B3F500162E58 /* ComKaztopiaSettingslauncherModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 24DD6CF71134B3F500162E58 /* ComKaztopiaSettingslauncherModule.h */; }; 26 | 24DD6CFA1134B3F500162E58 /* ComKaztopiaSettingslauncherModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 24DD6CF81134B3F500162E58 /* ComKaztopiaSettingslauncherModule.m */; }; 27 | 24DE9E1111C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.h in Headers */ = {isa = PBXBuildFile; fileRef = 24DE9E0F11C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.h */; }; 28 | 24DE9E1211C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.m in Sources */ = {isa = PBXBuildFile; fileRef = 24DE9E1011C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.m */; }; 29 | AA747D9F0F9514B9006C5449 /* ComKaztopiaSettingslauncher_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* ComKaztopiaSettingslauncher_Prefix.pch */; }; 30 | AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; 31 | /* End PBXBuildFile section */ 32 | 33 | /* Begin PBXContainerItemProxy section */ 34 | 24416B8411C4CA280047AFDD /* PBXContainerItemProxy */ = { 35 | isa = PBXContainerItemProxy; 36 | containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; 37 | proxyType = 1; 38 | remoteGlobalIDString = D2AAC07D0554694100DB518D; 39 | remoteInfo = settingslauncher; 40 | }; 41 | /* End PBXContainerItemProxy section */ 42 | 43 | /* Begin PBXFileReference section */ 44 | 24DD6CF71134B3F500162E58 /* ComKaztopiaSettingslauncherModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ComKaztopiaSettingslauncherModule.h; path = Classes/ComKaztopiaSettingslauncherModule.h; sourceTree = ""; }; 45 | 24DD6CF81134B3F500162E58 /* ComKaztopiaSettingslauncherModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ComKaztopiaSettingslauncherModule.m; path = Classes/ComKaztopiaSettingslauncherModule.m; sourceTree = ""; }; 46 | 24DD6D1B1134B66800162E58 /* titanium.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = titanium.xcconfig; sourceTree = ""; }; 47 | 24DE9E0F11C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ComKaztopiaSettingslauncherModuleAssets.h; path = Classes/ComKaztopiaSettingslauncherModuleAssets.h; sourceTree = ""; }; 48 | 24DE9E1011C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ComKaztopiaSettingslauncherModuleAssets.m; path = Classes/ComKaztopiaSettingslauncherModuleAssets.m; sourceTree = ""; }; 49 | AA747D9E0F9514B9006C5449 /* ComKaztopiaSettingslauncher_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComKaztopiaSettingslauncher_Prefix.pch; sourceTree = SOURCE_ROOT; }; 50 | AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 51 | D2AAC07E0554694100DB518D /* libComKaztopiaSettingslauncher.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libComKaztopiaSettingslauncher.a; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | /* End PBXFileReference section */ 53 | 54 | /* Begin PBXFrameworksBuildPhase section */ 55 | D2AAC07C0554694100DB518D /* Frameworks */ = { 56 | isa = PBXFrameworksBuildPhase; 57 | buildActionMask = 2147483647; 58 | files = ( 59 | AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */, 60 | ); 61 | runOnlyForDeploymentPostprocessing = 0; 62 | }; 63 | /* End PBXFrameworksBuildPhase section */ 64 | 65 | /* Begin PBXGroup section */ 66 | 034768DFFF38A50411DB9C8B /* Products */ = { 67 | isa = PBXGroup; 68 | children = ( 69 | D2AAC07E0554694100DB518D /* libComKaztopiaSettingslauncher.a */, 70 | ); 71 | name = Products; 72 | sourceTree = ""; 73 | }; 74 | 0867D691FE84028FC02AAC07 /* settingslauncher */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 08FB77AEFE84172EC02AAC07 /* Classes */, 78 | 32C88DFF0371C24200C91783 /* Other Sources */, 79 | 0867D69AFE84028FC02AAC07 /* Frameworks */, 80 | 034768DFFF38A50411DB9C8B /* Products */, 81 | ); 82 | name = settingslauncher; 83 | sourceTree = ""; 84 | }; 85 | 0867D69AFE84028FC02AAC07 /* Frameworks */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | AACBBE490F95108600F1A2B1 /* Foundation.framework */, 89 | ); 90 | name = Frameworks; 91 | sourceTree = ""; 92 | }; 93 | 08FB77AEFE84172EC02AAC07 /* Classes */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 24DE9E0F11C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.h */, 97 | 24DE9E1011C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.m */, 98 | 24DD6CF71134B3F500162E58 /* ComKaztopiaSettingslauncherModule.h */, 99 | 24DD6CF81134B3F500162E58 /* ComKaztopiaSettingslauncherModule.m */, 100 | ); 101 | name = Classes; 102 | sourceTree = ""; 103 | }; 104 | 32C88DFF0371C24200C91783 /* Other Sources */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | AA747D9E0F9514B9006C5449 /* ComKaztopiaSettingslauncher_Prefix.pch */, 108 | 24DD6D1B1134B66800162E58 /* titanium.xcconfig */, 109 | ); 110 | name = "Other Sources"; 111 | sourceTree = ""; 112 | }; 113 | /* End PBXGroup section */ 114 | 115 | /* Begin PBXHeadersBuildPhase section */ 116 | D2AAC07A0554694100DB518D /* Headers */ = { 117 | isa = PBXHeadersBuildPhase; 118 | buildActionMask = 2147483647; 119 | files = ( 120 | AA747D9F0F9514B9006C5449 /* ComKaztopiaSettingslauncher_Prefix.pch in Headers */, 121 | 24DD6CF91134B3F500162E58 /* ComKaztopiaSettingslauncherModule.h in Headers */, 122 | 24DE9E1111C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.h in Headers */, 123 | ); 124 | runOnlyForDeploymentPostprocessing = 0; 125 | }; 126 | /* End PBXHeadersBuildPhase section */ 127 | 128 | /* Begin PBXNativeTarget section */ 129 | D2AAC07D0554694100DB518D /* settingslauncher */ = { 130 | isa = PBXNativeTarget; 131 | buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "settingslauncher" */; 132 | buildPhases = ( 133 | D2AAC07A0554694100DB518D /* Headers */, 134 | D2AAC07B0554694100DB518D /* Sources */, 135 | D2AAC07C0554694100DB518D /* Frameworks */, 136 | ); 137 | buildRules = ( 138 | ); 139 | dependencies = ( 140 | ); 141 | name = settingslauncher; 142 | productName = settingslauncher; 143 | productReference = D2AAC07E0554694100DB518D /* libComKaztopiaSettingslauncher.a */; 144 | productType = "com.apple.product-type.library.static"; 145 | }; 146 | /* End PBXNativeTarget section */ 147 | 148 | /* Begin PBXProject section */ 149 | 0867D690FE84028FC02AAC07 /* Project object */ = { 150 | isa = PBXProject; 151 | attributes = { 152 | LastUpgradeCheck = 0800; 153 | }; 154 | buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "settingslauncher" */; 155 | compatibilityVersion = "Xcode 3.2"; 156 | developmentRegion = English; 157 | hasScannedForEncodings = 1; 158 | knownRegions = ( 159 | English, 160 | Japanese, 161 | French, 162 | German, 163 | ); 164 | mainGroup = 0867D691FE84028FC02AAC07 /* settingslauncher */; 165 | productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; 166 | projectDirPath = ""; 167 | projectRoot = ""; 168 | targets = ( 169 | D2AAC07D0554694100DB518D /* settingslauncher */, 170 | 24416B8111C4CA220047AFDD /* Build & Test */, 171 | ); 172 | }; 173 | /* End PBXProject section */ 174 | 175 | /* Begin PBXShellScriptBuildPhase section */ 176 | 24416B8011C4CA220047AFDD /* ShellScript */ = { 177 | isa = PBXShellScriptBuildPhase; 178 | buildActionMask = 2147483647; 179 | files = ( 180 | ); 181 | inputPaths = ( 182 | ); 183 | outputPaths = ( 184 | ); 185 | runOnlyForDeploymentPostprocessing = 0; 186 | shellPath = /bin/sh; 187 | shellScript = "# shell script goes here\n\npython \"${TITANIUM_SDK}/titanium.py\" run --dir=\"${PROJECT_DIR}\"\nexit $?\n"; 188 | }; 189 | /* End PBXShellScriptBuildPhase section */ 190 | 191 | /* Begin PBXSourcesBuildPhase section */ 192 | D2AAC07B0554694100DB518D /* Sources */ = { 193 | isa = PBXSourcesBuildPhase; 194 | buildActionMask = 2147483647; 195 | files = ( 196 | 24DD6CFA1134B3F500162E58 /* ComKaztopiaSettingslauncherModule.m in Sources */, 197 | 24DE9E1211C5FE74003F90F6 /* ComKaztopiaSettingslauncherModuleAssets.m in Sources */, 198 | ); 199 | runOnlyForDeploymentPostprocessing = 0; 200 | }; 201 | /* End PBXSourcesBuildPhase section */ 202 | 203 | /* Begin PBXTargetDependency section */ 204 | 24416B8511C4CA280047AFDD /* PBXTargetDependency */ = { 205 | isa = PBXTargetDependency; 206 | target = D2AAC07D0554694100DB518D /* settingslauncher */; 207 | targetProxy = 24416B8411C4CA280047AFDD /* PBXContainerItemProxy */; 208 | }; 209 | /* End PBXTargetDependency section */ 210 | 211 | /* Begin XCBuildConfiguration section */ 212 | 1DEB921F08733DC00010E9CD /* Debug */ = { 213 | isa = XCBuildConfiguration; 214 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 215 | buildSettings = { 216 | CODE_SIGN_IDENTITY = "iPhone Developer"; 217 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 218 | DSTROOT = /tmp/ComKaztopiaSettingslauncher.dst; 219 | GCC_C_LANGUAGE_STANDARD = c99; 220 | GCC_OPTIMIZATION_LEVEL = 0; 221 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 222 | GCC_PREFIX_HEADER = ComKaztopiaSettingslauncher_Prefix.pch; 223 | GCC_PREPROCESSOR_DEFINITIONS = "TI_VERSION=$(TI_VERSION)"; 224 | GCC_TREAT_WARNINGS_AS_ERRORS = NO; 225 | GCC_VERSION = ""; 226 | GCC_WARN_ABOUT_RETURN_TYPE = NO; 227 | GCC_WARN_MISSING_PARENTHESES = NO; 228 | GCC_WARN_SHADOW = NO; 229 | GCC_WARN_STRICT_SELECTOR_MATCH = NO; 230 | GCC_WARN_UNUSED_FUNCTION = YES; 231 | GCC_WARN_UNUSED_PARAMETER = NO; 232 | GCC_WARN_UNUSED_VALUE = NO; 233 | GCC_WARN_UNUSED_VARIABLE = NO; 234 | INSTALL_PATH = /usr/local/lib; 235 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 236 | LIBRARY_SEARCH_PATHS = ""; 237 | OTHER_CFLAGS = ( 238 | "-DDEBUG", 239 | "-DTI_POST_1_2", 240 | ); 241 | OTHER_LDFLAGS = "-ObjC"; 242 | PRODUCT_NAME = ComKaztopiaSettingslauncher; 243 | PROVISIONING_PROFILE = ""; 244 | "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; 245 | RUN_CLANG_STATIC_ANALYZER = NO; 246 | SDKROOT = iphoneos; 247 | USER_HEADER_SEARCH_PATHS = ""; 248 | }; 249 | name = Debug; 250 | }; 251 | 1DEB922008733DC00010E9CD /* Release */ = { 252 | isa = XCBuildConfiguration; 253 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 254 | buildSettings = { 255 | ALWAYS_SEARCH_USER_PATHS = NO; 256 | DSTROOT = /tmp/ComKaztopiaSettingslauncher.dst; 257 | GCC_C_LANGUAGE_STANDARD = c99; 258 | GCC_MODEL_TUNING = G5; 259 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 260 | GCC_PREFIX_HEADER = ComKaztopiaSettingslauncher_Prefix.pch; 261 | GCC_PREPROCESSOR_DEFINITIONS = "TI_VERSION=$(TI_VERSION)"; 262 | GCC_TREAT_WARNINGS_AS_ERRORS = NO; 263 | GCC_VERSION = ""; 264 | GCC_WARN_ABOUT_RETURN_TYPE = NO; 265 | GCC_WARN_MISSING_PARENTHESES = NO; 266 | GCC_WARN_SHADOW = NO; 267 | GCC_WARN_STRICT_SELECTOR_MATCH = NO; 268 | GCC_WARN_UNUSED_FUNCTION = YES; 269 | GCC_WARN_UNUSED_PARAMETER = NO; 270 | GCC_WARN_UNUSED_VALUE = NO; 271 | GCC_WARN_UNUSED_VARIABLE = NO; 272 | INSTALL_PATH = /usr/local/lib; 273 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 274 | LIBRARY_SEARCH_PATHS = ""; 275 | OTHER_CFLAGS = "-DTI_POST_1_2"; 276 | OTHER_LDFLAGS = "-ObjC"; 277 | PRODUCT_NAME = ComKaztopiaSettingslauncher; 278 | RUN_CLANG_STATIC_ANALYZER = NO; 279 | SDKROOT = iphoneos; 280 | USER_HEADER_SEARCH_PATHS = ""; 281 | }; 282 | name = Release; 283 | }; 284 | 1DEB922308733DC00010E9CD /* Debug */ = { 285 | isa = XCBuildConfiguration; 286 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 287 | buildSettings = { 288 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 289 | CLANG_CXX_LIBRARY = "compiler-default"; 290 | CLANG_WARN_BOOL_CONVERSION = YES; 291 | CLANG_WARN_CONSTANT_CONVERSION = YES; 292 | CLANG_WARN_EMPTY_BODY = YES; 293 | CLANG_WARN_ENUM_CONVERSION = YES; 294 | CLANG_WARN_INFINITE_RECURSION = YES; 295 | CLANG_WARN_INT_CONVERSION = YES; 296 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 297 | CLANG_WARN_UNREACHABLE_CODE = YES; 298 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 299 | CODE_SIGN_IDENTITY = "iPhone Developer"; 300 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 301 | DSTROOT = /tmp/ComKaztopiaSettingslauncher.dst; 302 | ENABLE_STRICT_OBJC_MSGSEND = YES; 303 | ENABLE_TESTABILITY = YES; 304 | GCC_C_LANGUAGE_STANDARD = c99; 305 | GCC_NO_COMMON_BLOCKS = YES; 306 | GCC_OPTIMIZATION_LEVEL = 0; 307 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 308 | GCC_PREFIX_HEADER = ComKaztopiaSettingslauncher_Prefix.pch; 309 | GCC_PREPROCESSOR_DEFINITIONS = "TI_VERSION=$(TI_VERSION)"; 310 | GCC_TREAT_WARNINGS_AS_ERRORS = NO; 311 | GCC_VERSION = ""; 312 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 313 | GCC_WARN_ABOUT_RETURN_TYPE = NO; 314 | GCC_WARN_MISSING_PARENTHESES = NO; 315 | GCC_WARN_SHADOW = NO; 316 | GCC_WARN_STRICT_SELECTOR_MATCH = NO; 317 | GCC_WARN_UNDECLARED_SELECTOR = YES; 318 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 319 | GCC_WARN_UNUSED_FUNCTION = YES; 320 | GCC_WARN_UNUSED_PARAMETER = NO; 321 | GCC_WARN_UNUSED_VALUE = NO; 322 | GCC_WARN_UNUSED_VARIABLE = NO; 323 | INSTALL_PATH = /usr/local/lib; 324 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 325 | ONLY_ACTIVE_ARCH = YES; 326 | OTHER_CFLAGS = ( 327 | "-DDEBUG", 328 | "-DTI_POST_1_2", 329 | ); 330 | OTHER_LDFLAGS = "-ObjC"; 331 | PRODUCT_NAME = ComKaztopiaSettingslauncher; 332 | PROVISIONING_PROFILE = ""; 333 | "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; 334 | RUN_CLANG_STATIC_ANALYZER = NO; 335 | SDKROOT = iphoneos; 336 | USER_HEADER_SEARCH_PATHS = ""; 337 | }; 338 | name = Debug; 339 | }; 340 | 1DEB922408733DC00010E9CD /* Release */ = { 341 | isa = XCBuildConfiguration; 342 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 343 | buildSettings = { 344 | ALWAYS_SEARCH_USER_PATHS = NO; 345 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 346 | CLANG_CXX_LIBRARY = "compiler-default"; 347 | CLANG_WARN_BOOL_CONVERSION = YES; 348 | CLANG_WARN_CONSTANT_CONVERSION = YES; 349 | CLANG_WARN_EMPTY_BODY = YES; 350 | CLANG_WARN_ENUM_CONVERSION = YES; 351 | CLANG_WARN_INFINITE_RECURSION = YES; 352 | CLANG_WARN_INT_CONVERSION = YES; 353 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 354 | CLANG_WARN_UNREACHABLE_CODE = YES; 355 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 356 | DSTROOT = /tmp/ComKaztopiaSettingslauncher.dst; 357 | ENABLE_STRICT_OBJC_MSGSEND = YES; 358 | GCC_C_LANGUAGE_STANDARD = c99; 359 | GCC_MODEL_TUNING = G5; 360 | GCC_NO_COMMON_BLOCKS = YES; 361 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 362 | GCC_PREFIX_HEADER = ComKaztopiaSettingslauncher_Prefix.pch; 363 | GCC_PREPROCESSOR_DEFINITIONS = "TI_VERSION=$(TI_VERSION)"; 364 | GCC_TREAT_WARNINGS_AS_ERRORS = NO; 365 | GCC_VERSION = ""; 366 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 367 | GCC_WARN_ABOUT_RETURN_TYPE = NO; 368 | GCC_WARN_MISSING_PARENTHESES = NO; 369 | GCC_WARN_SHADOW = NO; 370 | GCC_WARN_STRICT_SELECTOR_MATCH = NO; 371 | GCC_WARN_UNDECLARED_SELECTOR = YES; 372 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 373 | GCC_WARN_UNUSED_FUNCTION = YES; 374 | GCC_WARN_UNUSED_PARAMETER = NO; 375 | GCC_WARN_UNUSED_VALUE = NO; 376 | GCC_WARN_UNUSED_VARIABLE = NO; 377 | INSTALL_PATH = /usr/local/lib; 378 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 379 | OTHER_CFLAGS = "-DTI_POST_1_2"; 380 | OTHER_LDFLAGS = "-ObjC"; 381 | PRODUCT_NAME = ComKaztopiaSettingslauncher; 382 | RUN_CLANG_STATIC_ANALYZER = NO; 383 | SDKROOT = iphoneos; 384 | USER_HEADER_SEARCH_PATHS = ""; 385 | }; 386 | name = Release; 387 | }; 388 | 24416B8211C4CA220047AFDD /* Debug */ = { 389 | isa = XCBuildConfiguration; 390 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 391 | buildSettings = { 392 | COPY_PHASE_STRIP = NO; 393 | GCC_DYNAMIC_NO_PIC = NO; 394 | GCC_OPTIMIZATION_LEVEL = 0; 395 | PRODUCT_NAME = "Build & test"; 396 | }; 397 | name = Debug; 398 | }; 399 | 24416B8311C4CA220047AFDD /* Release */ = { 400 | isa = XCBuildConfiguration; 401 | baseConfigurationReference = 24DD6D1B1134B66800162E58 /* titanium.xcconfig */; 402 | buildSettings = { 403 | COPY_PHASE_STRIP = YES; 404 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 405 | GCC_ENABLE_FIX_AND_CONTINUE = NO; 406 | PRODUCT_NAME = "Build & test"; 407 | ZERO_LINK = NO; 408 | }; 409 | name = Release; 410 | }; 411 | /* End XCBuildConfiguration section */ 412 | 413 | /* Begin XCConfigurationList section */ 414 | 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "settingslauncher" */ = { 415 | isa = XCConfigurationList; 416 | buildConfigurations = ( 417 | 1DEB921F08733DC00010E9CD /* Debug */, 418 | 1DEB922008733DC00010E9CD /* Release */, 419 | ); 420 | defaultConfigurationIsVisible = 0; 421 | defaultConfigurationName = Release; 422 | }; 423 | 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "settingslauncher" */ = { 424 | isa = XCConfigurationList; 425 | buildConfigurations = ( 426 | 1DEB922308733DC00010E9CD /* Debug */, 427 | 1DEB922408733DC00010E9CD /* Release */, 428 | ); 429 | defaultConfigurationIsVisible = 0; 430 | defaultConfigurationName = Release; 431 | }; 432 | 24416B8A11C4CA520047AFDD /* Build configuration list for PBXAggregateTarget "Build & Test" */ = { 433 | isa = XCConfigurationList; 434 | buildConfigurations = ( 435 | 24416B8211C4CA220047AFDD /* Debug */, 436 | 24416B8311C4CA220047AFDD /* Release */, 437 | ); 438 | defaultConfigurationIsVisible = 0; 439 | defaultConfigurationName = Release; 440 | }; 441 | /* End XCConfigurationList section */ 442 | }; 443 | rootObject = 0867D690FE84028FC02AAC07 /* Project object */; 444 | } 445 | -------------------------------------------------------------------------------- /iphone/settingslauncher.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iphone/settingslauncher.xcodeproj/project.xcworkspace/xcuserdata/kaz.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaKaZ/iOS-settings-launcher/d6f6faf8772b5213227cc6085606e510d3e585b5/iphone/settingslauncher.xcodeproj/project.xcworkspace/xcuserdata/kaz.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /iphone/settingslauncher.xcodeproj/xcuserdata/kaz.xcuserdatad/xcschemes/Build & Test.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 | 70 | 71 | 72 | 73 | 75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /iphone/settingslauncher.xcodeproj/xcuserdata/kaz.xcuserdatad/xcschemes/settingslauncher.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 | 70 | 71 | 72 | 73 | 75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /iphone/settingslauncher.xcodeproj/xcuserdata/kaz.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Build & Test.xcscheme 8 | 9 | orderHint 10 | 1 11 | 12 | settingslauncher.xcscheme 13 | 14 | orderHint 15 | 0 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 24416B8111C4CA220047AFDD 21 | 22 | primary 23 | 24 | 25 | D2AAC07D0554694100DB518D 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /iphone/timodule.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /iphone/titanium.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // CHANGE THESE VALUES TO REFLECT THE VERSION (AND LOCATION IF DIFFERENT) 4 | // OF YOUR TITANIUM SDK YOU'RE BUILDING FOR 5 | // 6 | // 7 | TITANIUM_SDK_VERSION = 5.5.1.GA 8 | 9 | 10 | // 11 | // THESE SHOULD BE OK GENERALLY AS-IS 12 | // 13 | TITANIUM_SDK = ~/Library/Application Support/Titanium/mobilesdk/osx/$(TITANIUM_SDK_VERSION) 14 | TITANIUM_BASE_SDK = "$(TITANIUM_SDK)/iphone/include" 15 | TITANIUM_BASE_SDK2 = "$(TITANIUM_SDK)/iphone/include/TiCore" 16 | TITANIUM_BASE_SDK3 = "$(TITANIUM_SDK)/iphone/include/JavaScriptCore" 17 | HEADER_SEARCH_PATHS= $(TITANIUM_BASE_SDK) $(TITANIUM_BASE_SDK2) $(TITANIUM_BASE_SDK3) 18 | 19 | 20 | 21 | --------------------------------------------------------------------------------