topical media & game development
#mobile-application-10-DerbyApp-build-iphone-Classes-TiProxy.h / h
Appcelerator Titanium Mobile
Copyright (c) 2009-2011 by Appcelerator, Inc. All Rights Reserved.
Licensed under the terms of the Apache Public License
Please see the LICENSE included with this distribution for details.
WARNING: This is generated code. Modify at your own risk and without support.
#import <TiBase.h>
#import <TiEvaluator.h>
#import <KrollCallback.h>
#import <KrollObject.h>
#import <pthread.h>
//Common exceptions to throw when the function call was improper
extern NSString * const TiExceptionInvalidType;
extern NSString * const TiExceptionNotEnoughArguments;
extern NSString * const TiExceptionRangeError;
extern NSString * const TiExceptionOSError;
//This is when a normally allowed command is not allowed (Say, adding a row to a table when it already is added elsewhere)
extern NSString * const TiExceptionInternalInconsistency;
//Should be rare, but also useful if arguments are used improperly.
extern NSString * const TiExceptionInternalInconsistency;
//Rare exceptions to indicate a bug in the _derbyapp code (Eg, function that a subclass should have implemented)
extern NSString * const TiExceptionUnimplementedFunction;
typedef enum {
NativeBridge,
WebBridge
} TiProxyBridgeType;
@protocol TiProxyDelegate<NSObject>
@required
-(void)propertyChanged:(NSString*)key oldValue:(id)oldValue newValue:(id)newValue proxy:(TiProxy*)proxy;
@optional
-(void)readProxyValuesWithKeys:(id<NSFastEnumeration>)keys;
-(void)listenerAdded:(NSString*)type count:(int)count;
-(void)listenerRemoved:(NSString*)type count:(int)count;
-(void)detachProxy;
@end
SEL SetterForKrollProperty(NSString * key);
SEL SetterWithObjectForKrollProperty(NSString * key);
void DoProxyDelegateChangedValuesWithProxy(UIView<TiProxyDelegate> * target, NSString * key, id oldValue, id newValue, TiProxy * proxy);
void DoProxyDelegateReadValuesWithKeysFromProxy(UIView<TiProxyDelegate> * target, id<NSFastEnumeration> keys, TiProxy * proxy);
//Why are these here? Because they can be commonly used between TiUIView and TiUITableViewCell.
@interface TiProxy : NSObject<KrollTargetable> {
@private
NSMutableDictionary *listeners;
BOOL destroyed;
id<TiProxyDelegate> modelDelegate;
NSURL *baseURL;
NSString *krollDescription;
pthread_rwlock_t listenerLock;
BOOL reproxying;
@protected
BOOL ignoreValueChanged; //This is done only at initialization where we know the dynprops were properly set by _initWithProperties.
NSMutableDictionary *dynprops;
pthread_rwlock_t dynpropsLock; // NOTE: You must respect the dynprops lock when accessing dynprops elsewhere!
id<TiEvaluator> pageContext;
id<TiEvaluator> executionContext;
}
@property(readonly,nonatomic) id<TiEvaluator> pageContext;
@property(readonly,nonatomic) id<TiEvaluator> executionContext;
@property(nonatomic,retain,readwrite) id<TiProxyDelegate> modelDelegate;
+(BOOL)shouldRegisterOnInit;
#pragma mark Private
-(id)_initWithPageContext:(id<TiEvaluator>)context;
-(id)_initWithPageContext:(id<TiEvaluator>)context args:(NSArray*)args;
-(void)_initWithProperties:(NSDictionary*)properties;
-(BOOL)_hasListeners:(NSString*)type;
-(void)_fireEventToListener:(NSString*)type withObject:(id)obj listener:(KrollCallback*)listener thisObject:(TiProxy*)thisObject_;
-(id)_proxy:(TiProxyBridgeType)type;
-(void)contextWasShutdown:(id<TiEvaluator>)context;
-(TiHost*)_host;
-(NSURL*)_baseURL;
-(void)_setBaseURL:(NSURL*)url;
-(BOOL)_propertyInitRequiresUIThread;
-(void)_destroy;
-(void)_configure;
-(void)_dispatchWithObjectOnUIThread:(NSArray*)args;
-(void)didReceiveMemoryWarning:(NSNotification*)notification;
-(TiProxy*)currentWindow;
-(void)contextShutdown:(id)sender;
-(id)toString:(id)args;
-(BOOL)destroyed;
-(void)setReproxying:(BOOL)yn;
-(BOOL)inReproxy;
#pragma mark Utility
-(KrollObject *)krollObjectForContext:(KrollContext *)context;
-(BOOL)retainsJsObjectForKey:(NSString *)key;
//TODO: Find everywhere were we retain a proxy in a non-assignment way, and do remember/forget properly.
-(void)rememberProxy:(TiProxy *)rememberedProxy;
-(void)forgetProxy:(TiProxy *)forgottenProxy;
//These are when, say, a window is opened, so you want to do tiValueProtect to make SURE it doesn't go away.
-(void)rememberSelf;
-(void)forgetSelf;
//SetCallback is done internally by setValue:forUndefinedKey:
-(void)fireCallback:(NSString*)type withArg:(NSDictionary *)argDict withSource:(id)source;
#pragma mark Public
-(id<NSFastEnumeration>)allKeys;
-(NSArray *)keySequence;
+(void)throwException:(NSString *) reason subreason:(NSString*)subreason location:(NSString *)location;
-(void)throwException:(NSString *) reason subreason:(NSString*)subreason location:(NSString *)location;
-(void)addEventListener:(NSArray*)args;
-(void)removeEventListener:(NSArray*)args;
-(void)fireEvent:(id)args;
-(void)fireEvent:(NSString*)type withObject:(id)obj;
-(void)fireEvent:(NSString*)type withObject:(id)obj withSource:(id)source;
-(void)fireEvent:(NSString*)type withObject:(id)obj withSource:(id)source propagate:(BOOL)yn;
-(void)fireEvent:(NSString*)type withObject:(id)obj propagate:(BOOL)yn;
-(NSDictionary*)allProperties;
-(void)replaceValue:(id)value forKey:(NSString*)key notification:(BOOL)notify;
-(void)deleteKey:(NSString*)key;
-(id)sanitizeURL:(id)value;
-(void)setExecutionContext:(id<TiEvaluator>)context;
@end
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.