ZFFramework
Loading...
Searching...
No Matches
ZFUIRootWindow Class Reference

root native window More...

#include <ZFUIRootWindow.h>

Inheritance diagram for ZFUIRootWindow:
ZFObject

Public Types

enum  
enum  
Public Types inherited from ZFObject
enum  

Public Member Functions

virtual const ZFClassclassData (void)
 get instance's class info
virtual ZFUIRootWindowEmbedImplnativeWindowEmbedImpl (void)
 see nativeWindowEmbed
virtual void nativeWindowEmbedImplDestroy ()
 util to destroy the window created by nativeWindowEmbed
virtual const ZFUISizewindowSize ()
 native window's size
virtual ZFUIColorwindowColor ()
 window background color, ZFUIColorZero by default
virtual void windowColor (ZFUIColor const &propertyValue)
 see windowColor
virtual const ZFUIMarginwindowMargin ()
 native window margin according to impl
virtual void * nativeWindow ()
 access the internal native window
virtual zfbool windowCreated ()
 true if root window created
virtual zfbool windowResumed ()
 true if root window resumed
virtual ZFUIOrientation windowOrientation ()
 get current orientation
virtual void windowOrientationFlags (const ZFUIOrientationFlags &windowOrientationFlags)
 set supported orientation, orientation may or may not change immediately
virtual const ZFUIOrientationFlagswindowOrientationFlags ()
 get supported orientation
virtual zfboolpreferFullscreen ()
 whether prefer fullscreen
virtual void preferFullscreen (zfbool const &propertyValue)
 see preferFullscreen
virtual zfautoT< ZFUIRootWindowmodalWindowShow ()
 show a new modal window, may or may not show immediately, may have different behavior on different implementations
virtual void modalWindowHide ()
 finish and destroy self as a modal window
virtual zfanyT< ZFUIRootWindowmodalWindowShowing ()
 get self's current showing modal window
virtual zfanyT< ZFUIRootWindowmodalWindowOwner ()
 get self's owner if self is a showing modal window
virtual zfanyT< ZFUILayoutParamlayoutParam ()
 get window's layout param, fill parent by default
virtual zfanyT< ZFUIRootViewrootView ()
 access the root view of the window
Public Member Functions inherited from ZFObject
const ZFClassclassDynamic (void)
 dynamic class of this object, see ZFClassDynamicRegister
zfindex objectRetainCount (void)
 return the object's retain count
void objectInfoOfInstanceT (zfstring &ret)
 see objectInfoOfInstance
zfstring objectInfoOfInstance (void)
 return a short string describe the object instance
void objectInfoT (zfstring &ret)
 see objectInfo
zfstring objectInfo (void)
 return object info
zfidentity objectHash (void)
 get hash of this object
ZFCompareResult objectCompare (ZFObject *anotherObj)
 compare with anotherObj
ZFCompareResult objectCompareValue (ZFObject *anotherObj)
 explicitly compare object by logical value, see objectCompare
virtual zfauto invoke (const zfstring &methodName)
 util method to perform ZFDI_invoke, do nothing if fail
virtual zfauto invoke (const zfstring &methodName, ZFObject *param0, ZFObject *param1=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param2=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param3=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param4=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param5=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param6=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param7=((ZFObject *const &) _ZFP_ZFMP_DEF))
 util method to perform ZFDI_invoke, do nothing if fail
virtual zfbool invokeT (zfauto &ret, zfstring *errorHint, const zfstring &methodName, ZFObject *param0=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param1=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param2=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param3=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param4=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param5=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param6=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param7=((ZFObject *const &) _ZFP_ZFMP_DEF))
 util method to perform ZFDI_invoke, do nothing if fail
virtual zfauto invokeDetail (const zfstring &methodName, const ZFCoreArray< zfauto > &params, zfbool *success=zft_zfnull, zfstring *errorHint=zft_zfnull)
 util method to perform ZFDI_invoke, do nothing if fail
zfbool objectTagExist (void)
 see objectTag, true if this object has tag, and tag can be checked by objectTagGetAllKeyValue
void objectTag (const zfstring &key, ZFObject *tag)
 used to hold a object for app's use, auto retained
zfany objectTag (const zfstring &key)
 see objectTag
void objectTagGetAllKeyValue (ZFCoreArray< zfstring > &allKey, ZFCoreArray< zfauto > &allValue)
 get all key value
void objectTagRemove (const zfstring &key)
 remove tag, same as set tag to null
zfauto objectTagRemoveAndGet (const zfstring &key)
 remove tag, return removed tag or null if not exist
void objectTagRemoveAll (void)
 remove all tag
void observerAdd (zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
 see observerNotify
void observerAddForOnce (zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
 see observerNotify
void observerRemove (zfidentity eventId, const ZFListener &callback)
 see observerNotify
void observerRemoveAll (zfidentity eventId)
 see observerNotify
void observerRemoveAll (void)
 see observerNotify
zfbool observerHasAdd (void)
 true if any observer has been added
zfbool observerHasAdd (zfidentity eventId)
 true if any observer with eventId has been added
void observerNotify (zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
 notify the observer with eventId
void observerNotifyWithSender (ZFObject *customSender, zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
 see observerNotify
void observerNotifyReversely (zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
 see observerNotify
void observerNotifyReverselyWithSender (ZFObject *customSender, zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
 see observerNotify
ZFObserverobserverHolder (void)
 access the internal observer holder
void on (const zfstring &eventName, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
 util to observerAdd
void on (zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
 util to observerAdd
void onInit (const ZFListener &impl)
 util for script to achieve chained call
void onDealloc (const ZFListener &impl)
 util for script to achieve chained call
zfbool objectInstanceStateCheck (ZFObjectInstanceState state)
 object instance's state
zfbool objectInitRunning (void)
 util method to check whether ZFObjectInstanceStateOnInit or ZFObjectInstanceStateOnInitFinish running
zfbool objectDeallocRunning (void)
 util method to check whether ZFObjectInstanceStateOnDeallocPrepare or ZFObjectInstanceStateOnDealloc running
virtual zfbool objectIsInternal (void)
 whether this object is internal object or its class is ZFClass::classIsInternal
virtual zfbool objectIsInternalPrivate (void)
 whether this object is internal private object or its class is ZFClass::classIsInternalPrivate

Static Public Member Functions

static const ZFClassClassData (void)
 get class info
static zfidentity E_WindowOnCreate (void)
 see ZFObject::observerNotify
static zfidentity E_WindowOnDestroy (void)
 see ZFObject::observerNotify
static zfidentity E_WindowOnResume (void)
 see ZFObject::observerNotify
static zfidentity E_WindowOnPause (void)
 see ZFObject::observerNotify
static zfidentity E_WindowOnRotate (void)
 see ZFObject::observerNotify
static zfidentity E_WindowMarginOnUpdate (void)
 see ZFObject::observerNotify
static zfidentity E_WindowOnKeyEvent (void)
 see ZFObject::observerNotify
static zfautoT< ZFUIRootWindownativeWindowEmbed (ZFUIRootWindowEmbedImpl *embedImpl)
 used to embed ZFUIRootWindow to existing UI framework
static zfautoT< ZFUIRootWindownativeWindowEmbedNativeView (void *nativeParent)
 default impl to attach window to native view
static zfautoT< ZFUIRootWindownativeWindowEmbedNativeView (void *nativeParent, const zfstring &rootWindowName)
 util to attach window to native view, and register a getter method with specified name
static void nativeWindowEmbedNativeViewCleanup (const zfstring &rootWindowName)
 remove window attached by nativeWindowEmbedNativeView
static void mainWindowRegister (ZFUIRootWindow *window)
 manually register main window, must be called before accessing mainWindow
static zfanyT< ZFUIRootWindowmainWindow ()
 get application's main window
static zfbool mainWindowAttached ()
 whether mainWindow has attached
static void keyWindow (ZFUIRootWindow *window)
 default window that ZFUIWindow would attach to, set null to use mainWindow
static zfanyT< ZFUIRootWindowkeyWindow ()
 see keyWindow, return mainWindow if not set
Static Public Member Functions inherited from ZFObject
static const ZFClassClassData (void)
 get class info
static zfidentity E_ObjectBeforeAlloc (void)
 see ZFObject::observerNotify
static zfidentity E_ObjectAfterAlloc (void)
 see ZFObject::observerNotify
static zfidentity E_ObjectBeforeDealloc (void)
 see ZFObject::observerNotify
static zfidentity E_ObjectPropertyValueOnUpdate (void)
 see ZFObject::observerNotify
static zfidentity E_ObjectPropertyValueOnReset (void)
 see ZFObject::observerNotify

Protected Types

typedef ZFObject zfsuper
 class ref to super
typedef ZFUIRootWindow zfself
 class ref to self
Protected Types inherited from ZFObject
typedef _ZFP_Obj_Base zfsuper
 class ref to super
typedef ZFObject zfself
 class ref to self

Protected Member Functions

virtual void windowMarginOnUpdate (const ZFUIMargin &windowMarginOld)
 see E_WindowMarginOnUpdate
virtual void objectOnInit (void)
 override this to init your object
virtual void objectOnInitFinish (void)
 called after objectOnInit, safe to call virtual functions here
virtual void objectOnDeallocPrepare (void)
 called before objectOnDealloc, safe to call virtual functions here
virtual void objectOnDealloc (void)
 override this to destroy your object
Protected Member Functions inherited from ZFObject
virtual void objectInfoImpl (zfstring &ret)
 see objectInfo
virtual void objectInfoImplAppend (zfstring &ret)
 see objectInfo
virtual zfidentity objectHashImpl (void)
 see objectHash
virtual ZFCompareResult objectCompareImpl (ZFObject *anotherObj)
 see objectCompare
virtual ZFCompareResult objectCompareValueImpl (ZFObject *anotherObj)
 see objectCompareValue
virtual void observerOnAdd (zfidentity eventId)
 called when add first observer
virtual void observerOnRemove (zfidentity eventId)
 called when remove last observer
virtual void observerOnEvent (const ZFArgs &zfargs)
 notified when observerNotify
virtual void objectOnRetain (void)
 called to retain object
virtual void objectOnRelease (void)
 called to release object
virtual void objectPropertyValueOnUpdate (const ZFProperty *property, const void *oldValue)
 see E_ObjectPropertyValueOnUpdate
virtual void objectPropertyValueOnReset (const ZFProperty *property)
 see E_ObjectPropertyValueOnReset

Detailed Description

root native window

use mainWindow to access app's main window, use modalWindowShow to show a new window, use nativeWindowEmbed to attach to native impl, never create ZFUIRootWindow's instance manually

Member Function Documentation

◆ classData()

virtual const ZFClass * ZFUIRootWindow::classData ( void )
inlinevirtual

get instance's class info

Reimplemented from ZFObject.

◆ E_WindowOnCreate()

zfidentity ZFUIRootWindow::E_WindowOnCreate ( void )
static

see ZFObject::observerNotify

notified when window created, see windowCreated for more info

◆ E_WindowOnDestroy()

zfidentity ZFUIRootWindow::E_WindowOnDestroy ( void )
static

see ZFObject::observerNotify

notified when window about to destroy

◆ E_WindowOnResume()

zfidentity ZFUIRootWindow::E_WindowOnResume ( void )
static

see ZFObject::observerNotify

notified when window become active

◆ E_WindowOnPause()

zfidentity ZFUIRootWindow::E_WindowOnPause ( void )
static

see ZFObject::observerNotify

notified when window enter background

◆ E_WindowOnRotate()

zfidentity ZFUIRootWindow::E_WindowOnRotate ( void )
static

see ZFObject::observerNotify

notified when window rotated, new orientation can be accessed by windowOrientation

◆ E_WindowMarginOnUpdate()

zfidentity ZFUIRootWindow::E_WindowMarginOnUpdate ( void )
static

see ZFObject::observerNotify

notified when windowMargin changed, param0 is a v_ZFUIMargin that holds the old window margin

◆ E_WindowOnKeyEvent()

zfidentity ZFUIRootWindow::E_WindowOnKeyEvent ( void )
static

see ZFObject::observerNotify

notified when ZFUIKeyEvent fired to the window, and none of it's view handled the event by ZFUIEvent::eventResolved
param0 is the ZFUIKeyEvent

◆ nativeWindowEmbed()

zfautoT< ZFUIRootWindow > ZFUIRootWindow::nativeWindowEmbed ( ZFUIRootWindowEmbedImpl * embedImpl)
static

used to embed ZFUIRootWindow to existing UI framework

ZFUIRootWindow would create internal native window by default, however, you may create your own native window and attach ZFUIRootWindow to it
to achieve this feature, you must supply custom embed impl by ZFUIRootWindowEmbedImpl, call this method to get an attached ZFUIRootWindow, and manually manage the life cycle of the returned ZFUIRootWindow

the embedImpl would be retained until the created window destroy, so that you only need to take care of the created window, to explicitly clear all the contents, simply use window->nativeWindowEmbedImplDestroy()

see ZFUIRootWindowEmbedImpl for all the impl that you need to implement

◆ nativeWindowEmbedImplDestroy()

virtual void ZFUIRootWindow::nativeWindowEmbedImplDestroy ( )
virtual

◆ nativeWindowEmbedNativeView() [1/2]

zfautoT< ZFUIRootWindow > ZFUIRootWindow::nativeWindowEmbedNativeView ( void * nativeParent)
static

default impl to attach window to native view

note, after attach, you must destroy the window by nativeWindowEmbedImplDestroy before destroy the nativeParent
the nativeParent must support add one or more child which fill itself

◆ nativeWindowEmbedNativeView() [2/2]

zfautoT< ZFUIRootWindow > ZFUIRootWindow::nativeWindowEmbedNativeView ( void * nativeParent,
const zfstring & rootWindowName )
static

util to attach window to native view, and register a getter method with specified name

usage:

zfauto rootWindow = ZFUIRootWindow::nativeWindowEmbedNativeView(nativeParent, "MyWindow");
if(rootWindow != zfnull) {
zfobj<ZFUIWindow> window(ZFInvoke("MyWindow"));
...
}
#define zfnull
same as NULL, defined for future use
Definition ZFCoreTypeDef_CoreType.h:88
zfauto ZFInvoke(const zfstring &name)
util to ZFDI_invoke/ZFDI_alloc for static method or object allocation
static zfautoT< ZFUIRootWindow > nativeWindowEmbedNativeView(void *nativeParent)
default impl to attach window to native view
a ZFObject holder which would release content object automatically when destroyed
Definition zfautoFwd.h:34
util class to alloc and hold ZFObject type
Definition ZFObjectAutoPtr.h:79

◆ mainWindowRegister()

void ZFUIRootWindow::mainWindowRegister ( ZFUIRootWindow * window)
static

manually register main window, must be called before accessing mainWindow

this method is useful if you want to embed whole ZFFramework to existing UI framework, to create a custom ZFUIRootWindow, see nativeWindowEmbed

Note
you must manually manage the life cycle of the registered ZFUIRootWindow
once registered, it can not be changed back to original internal window, until ZFFrameworkCleanup
it's safe to unregister and register a new window, but you must ensure you won't access the children of the window after you do so

◆ mainWindow()

zfanyT< ZFUIRootWindow > ZFUIRootWindow::mainWindow ( )
static

get application's main window

usually, use only one window is recommended
the main window would be created and attached automatically when first time accessed (directly or implicitly by showing a ZFUIWindow), and can not be changed after creation
to embed ZFFramework to native framework, you may use mainWindowRegister

◆ windowSize()

virtual const ZFUISize & ZFUIRootWindow::windowSize ( )
virtual

native window's size

to change window's size or layout, use layoutParam
to observe window size change, attach ZFUIView::E_ViewLayoutOnLayoutFinish listener to rootView

◆ windowColor()

virtual ZFUIColor & ZFUIRootWindow::windowColor ( )
inlinevirtual

window background color, ZFUIColorZero by default

this is the bottom most container's color, which may exceeds windowMargin
this may (or may not) same to window root view's bgColor

◆ windowMargin()

virtual const ZFUIMargin & ZFUIRootWindow::windowMargin ( )
virtual

native window margin according to impl

the margin usually used for mobile phones, whose edge contains virtual button or front camera
by default, ZFUIWindow would automatically exclude the margin, you may change it by ZFUIWindow::windowMarginShouldApply

◆ objectOnInit()

virtual void ZFUIRootWindow::objectOnInit ( void )
protectedvirtual

override this to init your object

subclass must call superclass's objectOnInit before any other code if override
you may also declare objectOnInit with params like this:

zfclass Parent : ... {
...
protected:
virtual void objectOnInit(void) {...};
};
zfclass Child : Parent {
protected:
// override all parent's objectOnInit is also required,
// because of function hiding of C++
virtual void objectOnInit(void) {
}
// custom init entry
virtual void objectOnInit(Params...) {
// your extra init steps
...
}
};
#define zfoverride
dummy macro shows that method override parent's method
Definition ZFCoreTypeDef_ClassType.h:58
#define zfclass
same as class, shows that this class is a ZFObject type
Definition ZFObjectClassTypeFwd.h:38
virtual void objectOnInit(void)
override this to init your object
virtual void objectOnInit(void)
override this to init your object
Warning
objectOnInit and objectOnDealloc is called as a virtual function, take good care of other virtual function call, use zfself::func() instead of this->func() if necessary, or use objectOnInitFinish/objectOnDeallocPrepare, or declare your own constructor with ZFOBJECT_DECLARE_WITH_CUSTOM_CTOR
Note
(ZFTAG_LIMITATION) due to limitations of C++, if your parent type declared objectOnInit with different params, and your child type want to override part of those objectOnInit, then your child type must also override all objectOnInit that parent declared, otherwise, some may be hidden
for objects that designed not to be allocated by user, you should use ZFOBJECT_PRIVATE_ALLOC, typically usage:
zfclass MyObject : zfextend ZFObject {
ZFOBJECT_DECLARE(MyObject, ZFObject)
ZFOBJECT_PRIVATE_ALLOC("should be created by MyObject::instanceForXxx only")
public:
static zfauto instanceForXxx(xxx) {
// can only be allocated by reflection
}
};
static void func(void) {
// MyObject *obj = zfobjAlloc(MyObject); // would compile error
zfauto obj = MyObject::instanceForXxx(xxx); // OK
}
#define zfextend
dummy macro shows class inherit from another
Definition ZFCoreTypeDef_ClassType.h:53
#define ZFOBJECT_DECLARE(ChildClass, SuperClass,...)
necessary for every class inherit from ZFObject
Definition ZFObjectDeclare.h:126
#define ZFOBJECT_PRIVATE_ALLOC(...)
mark this object can not be allocated directly
Definition ZFObjectDeclare.h:245
zfauto newInstance(void) const
make a new instance of ZFObject dynamically, which is described by ZFClass
static const ZFClass * ClassData(void)
get class info
Definition ZFUIRootWindow.h:35

Reimplemented from ZFObject.

◆ objectOnInitFinish()

virtual void ZFUIRootWindow::objectOnInitFinish ( void )
protectedvirtual

called after objectOnInit, safe to call virtual functions here

usually used to initialize independent resources other than self's internal resources

Reimplemented from ZFObject.

◆ objectOnDeallocPrepare()

virtual void ZFUIRootWindow::objectOnDeallocPrepare ( void )
protectedvirtual

called before objectOnDealloc, safe to call virtual functions here

usually used to cleanup resources attached to this object other than self's internal resources

Note
it's ensured safe to retain the object while deallocating, but it's not ensured objectOnDeallocPrepare would only called once for each instance

Reimplemented from ZFObject.

◆ objectOnDealloc()

virtual void ZFUIRootWindow::objectOnDealloc ( void )
protectedvirtual

override this to destroy your object

subclass must call superclass's objectOnDealloc after any other code if override
see objectOnInit for more info

Reimplemented from ZFObject.

◆ nativeWindow()

virtual void * ZFUIRootWindow::nativeWindow ( )
virtual

access the internal native window

note, this value would be valid only after E_WindowOnCreate
note, this value can be null if window created by nativeWindowEmbed

◆ windowCreated()

virtual zfbool ZFUIRootWindow::windowCreated ( )
virtual

true if root window created

Note
for some implementation, creating a ZFUIRootWindow may or may not create native window immediately, you may use this method as well as E_WindowOnCreate to see when did window created, typical usage:
ZFUIRootWindow *newWindow = ZFUIRootWindow::mainWindow()->modalWindowShow();
if(!newWindow->windowCreated()) {
ZFListener observer = ... {
initWindow();
};
}
else {
initWindow();
}
listener as ZFCallback, mostly used by ZFObject::observerNotify
Definition ZFObjectObserver.h:30
void observerAdd(zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
see observerNotify
static zfanyT< ZFUIRootWindow > mainWindow()
get application's main window
virtual zfbool windowCreated()
true if root window created
static zfidentity E_WindowOnCreate(void)
see ZFObject::observerNotify

◆ modalWindowShow()

virtual zfautoT< ZFUIRootWindow > ZFUIRootWindow::modalWindowShow ( )
virtual

show a new modal window, may or may not show immediately, may have different behavior on different implementations

use only if necessary
it's recommended that app have only one ZFUIRootWindow, use ZFUIWindow if necessary

◆ rootView()

virtual zfanyT< ZFUIRootView > ZFUIRootWindow::rootView ( )
virtual

access the root view of the window

the root view is ensured ZFUIRootView type, and you must not add it to another view


The documentation for this class was generated from the following file: