topical media & game development
#mobile-application-10-DerbyApp-build-iphone-Classes-TiViewProxy.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 <TiProxy.h>
#import <TiUIView.h>
#import <pthread.h>
@protocol TiKeyboardFocusableView
#pragma mark Public DerbyApp APIs.
(void)focus:(id)args;
(void)blur:(id)args;
#pragma mark Private internal APIs.
@property(nonatomic,readonly) UIView * keyboardAccessoryView;
@property(nonatomic,readonly) CGFloat keyboardAccessoryHeight;
@end
#pragma mark dirtyflags used by TiViewProxy
define NEEDS_LAYOUT_CHILDREN 1
enum
{
TiRefreshViewPosition = 2,
TiRefreshViewChildrenPosition,
TiRefreshViewZIndex,
TiRefreshViewSize,
TiRefreshViewEnqueued,
};
TiBlob;
//For TableRows, we need to have minimumParentHeightForWidth:
@interface TiViewProxy : TiProxy<LayoutAutosizing>
{
@protected
//TODO: Actually have a rhyme and reason on keeping things @protected vs @private.
//For now, for sake of proper value grouping, we're all under one roof.
#pragma mark Layout properties
LayoutConstraint layoutProperties;
int zIndex;
BOOL hidden; //This is the boolean version of ![TiUtils boolValue:visible def:yes]
//And has nothing to do with whether or not it's onscreen or
#pragma mark Parent/Children relationships
TiViewProxy *parent;
pthread_rwlock_t childrenLock;
NSMutableArray *children;
NSMutableArray *pendingAdds;
#pragma mark Visual components
TiUIView *view;
UIBarButtonItem * barButtonItem;
#pragma mark Layout caches that can be recomputed
CGFloat verticalLayoutBoundary;
CGFloat horizontalLayoutBoundary;
CGFloat horizontalLayoutRowHeight; //Note, this has nothing to do with table views.
int lastChildArranged;
CGRect sandboxBounds;
CGPoint positionCache; //Recomputed and stored when position changes.
CGRect sizeCache; //Recomputed and stored when size changes.
UIViewAutoresizing autoresizeCache; //Changed by repositioning or resizing.
BOOL parentVisible;
//In most cases, this is the same as [parent parentVisible] && ![parent hidden]
//However, in the case of windows attached to the root view, the parent is ALWAYS visible.
//That is, will be true if and only if all parents are visible or are the root controller.
//Use parentWillShow and parentWillHide to set this.
#pragma mark Housecleaning that is set and used
NSRecursiveLock *destroyLock;
BOOL windowOpened;
BOOL windowOpening;
int dirtyflags; //For atomic actions, best to be explicit about the 32 bitness.
BOOL viewInitialized;
BOOL repositioning;
BOOL isUsingBarButtonItem;
}
#pragma mark public API
@property(nonatomic,readwrite,assign) int zIndex;
@property(nonatomic,readwrite,assign) BOOL parentVisible; // For tableview magic ONLY
@property(nonatomic,readonly) NSArray *children;
@property(nonatomic,readonly) TiPoint *center;
-(void)add:(id)arg;
-(void)remove:(id)arg;
-(void)show:(id)arg;
-(void)hide:(id)arg;
-(void)animate:(id)arg;
-(void)setTop:(id)value;
-(void)setBottom:(id)value;
-(void)setLeft:(id)value;
-(void)setRight:(id)value;
-(void)setWidth:(id)value;
-(void)setHeight:(id)value;
-(void)setLayout:(id)value;
-(void)setMinWidth:(id)value;
-(void)setMinHeight:(id)value;
-(void)setSize:(id)value;
-(void)setCenter:(id)value;
-(id)animatedCenter;
-(void)setBackgroundGradient:(id)arg;
-(TiBlob*)toImage:(id)args;
#pragma mark nonpublic accessors not related to Housecleaning
@property(assign) TiViewProxy *parent;
//TODO: make this a proper readwrite property declaration.
@property(nonatomic,readonly,assign) LayoutConstraint * layoutProperties;
@property(nonatomic,readwrite,assign) CGRect sandboxBounds;
//This is unaffected by parentVisible. So if something is truely visible, it'd be [self visible] && parentVisible.
-(void)setHidden:(BOOL)newHidden withArgs:(id)args;
@property(nonatomic,retain) UIBarButtonItem * barButtonItem;
-(TiUIView *)barButtonViewForSize:(CGSize)bounds;
//NOTE: DO NOT SET VIEW UNLESS IN A TABLE VIEW, AND EVEN THEN.
@property(nonatomic,readwrite,retain)TiUIView * view;
-(NSMutableDictionary*)langConversionTable;
#pragma mark Methods subclasses should override for behavior changes
-(BOOL)suppressesRelayout;
-(BOOL)supportsNavBarPositioning;
-(BOOL)canHaveControllerParent;
-(BOOL)shouldDetachViewOnUnload;
-(UIView *)parentViewForChild:(TiViewProxy *)child;
#pragma mark Event trigger methods
-(void)windowWillOpen;
-(void)windowDidOpen;
-(void)windowWillClose;
-(void)windowDidClose;
-(void)willFirePropertyChanges;
-(void)didFirePropertyChanges;
-(void)viewWillAttach; // Need this for video player & possibly other classes which override newView
-(void)viewDidAttach;
-(void)viewWillDetach;
-(void)viewDidDetach;
#pragma mark Housecleaning state accessors
//TODO: Sounds like the redundancy department of redundancy was here.
-(BOOL)viewAttached;
-(BOOL)viewInitialized;
-(BOOL)viewReady;
-(BOOL)windowHasOpened;
-(BOOL)windowIsOpening;
-(BOOL)isUsingBarButtonItem;
-(CGRect)appFrame; //TODO: Why is this here? It doesn't have anything to do with a specific instance.
#pragma mark Building up and tearing down
-(void)firePropertyChanges;
-(TiUIView*)newView;
-(void)detachView;
-(void)destroy;
-(void)removeBarButtonView;
#pragma mark Callbacks
-(void)getAnimatedCenterPoint:(NSMutableDictionary *)resultDict;
-(void)addImageToBlob:(NSArray*)args;
-(void)animationCompleted:(TiAnimation*)animation;
-(void)makeViewPerformAction:(TiAction *)action;
-(void)makeViewPerformSelector:(SEL)selector withObject:(id)object createIfNeeded:(BOOL)create waitUntilDone:(BOOL)wait;
#pragma mark Layout events, internal and external
-(void)willChangeSize;
-(void)willChangePosition;
-(void)willChangeZIndex;
-(void)willChangeLayout;
-(void)willShow;
-(void)willHide;
-(void)contentsWillChange;
-(void)parentSizeWillChange;
-(void)parentWillRelay;
-(void)parentWillShow;
-(void)parentWillHide;
#pragma mark Layout actions
-(void)refreshView:(TiUIView *)transferView;
-(void)refreshSize;
-(void)refreshPosition;
-(void)willEnqueue;
//Unlike the other layout actions, this one is done by the parent of the one called by refreshView.
//This is the effect of refreshing the Z index via careful view placement.
-(void)insertSubview:(UIView *)childView forProxy:(TiViewProxy *)childProxy;
#pragma mark Layout commands that need refactoring out
-(void)determineSandboxBounds;
-(void)layoutChildren:(BOOL)optimize;
-(void)layoutChildrenIfNeeded;
-(void)layoutChild:(TiViewProxy*)child optimize:(BOOL)optimize;
-(void)relayout;
-(void)insertIntoView:(UIView*)view bounds:(CGRect)bounds;
-(void)reposition; //Todo: Replace
-(BOOL)willBeRelaying; //Todo: Replace
-(void)childWillResize:(TiViewProxy *)child; //Todo: Replace
@end
define USE_VIEW_FOR_METHOD(resultType,methodname,inputType) \
-(resultType) methodname: (inputType)value \
{ \
return [[self view] methodname:value]; \
}
define USE_VIEW_FOR_UI_METHOD(methodname) \
-(void)methodname:(id)args \
{ \
if ([self viewAttached]) \
{ \
[[self view] performSelectorOnMainThread:@selector(methodname:) withObject:args waitUntilDone:NO]; \
} \
}
define USE_VIEW_FOR_VERIFY_WIDTH USE_VIEW_FOR_METHOD(CGFloat,verifyWidth,CGFloat)
define USE_VIEW_FOR_VERIFY_HEIGHT USE_VIEW_FOR_METHOD(CGFloat,verifyHeight,CGFloat)
define USE_VIEW_FOR_AUTO_WIDTH USE_VIEW_FOR_METHOD(CGFloat,autoWidthForWidth,CGFloat)
define USE_VIEW_FOR_AUTO_HEIGHT USE_VIEW_FOR_METHOD(CGFloat,autoHeightForWidth,CGFloat)
define DECLARE_VIEW_CLASS_FOR_NEWVIEW(viewClass) \
-(TiUIView*)newView \
{ \
return [[viewClass alloc] init]; \
}
(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.