Guiliani  Version 2.5 revision 7293 (documentation build 13)
GUICompositeObject.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef GUICOMPOSITEOBJECT__H_
11#define GUICOMPOSITEOBJECT__H_
12
13#include "GUIObject.h"
14#include "eC_TList_doubleLinked.h"
15
18
20
21// @guiliani_doxygen toplevel_control Composite Object
34// @endguiliani_doxygen
70{
71public:
72 friend class CGfxWrap;
73 friend class CGUIObject;
74
79
89 CGUICompositeObject* const pkParent,
90 const eC_Value& vX, const eC_Value& vY,
91 const eC_Value& vWidth, const eC_Value& vHeight,
92 const ObjectHandle_t &eID = NO_HANDLE);
93
100 CGUICompositeObject* const pkParent,
101 const CGUIRect &kRect,
102 const ObjectHandle_t &eID = NO_HANDLE);
103
106
114
124
125#ifdef GUILIANI_STREAM_GUI
133 virtual void ReadFromStream();
134#endif // GUILIANI_STREAM_GUI
135#ifdef GUILIANI_WRITE_GUI
136 virtual void WriteToStream(const eC_Bool bWriteClassID = false);
137#endif // GUILIANI_WRITE_GUI
138
145 virtual void SetWidth(const eC_Value& vX);
146
153 virtual void SetHeight(const eC_Value& vY);
154
160 virtual eC_Bool AddObject(CGUIObject* pkObject);
161
169 virtual void RemoveObject(CGUIObject* pkObject);
170
182 virtual CGUIObject* FindObject(const eC_Value& vAbsX, const eC_Value& vAbsY);
183
215 virtual eC_Bool FocusNext(
216 CGUIObject* const pRefObj = NULL,
217 const eC_Bool &bSubTreeOfRefObjDone = false);
218
250 virtual eC_Bool FocusPrevious(
251 CGUIObject* const pRefObj = NULL,
252 const eC_Bool &bSubTreeOfRefObjDone = false);
253
254 eC_Bool FocusAny();
255
262 virtual eC_Bool DoPostDraw();
263
268 void DrawOnTop(CGUIObject* pkObject);
269
278 void DrawOnTopOf(CGUIObject*const pkObject, CGUIObject*const pDrawOnTopOf);
279
290 inline CGUIObject* GetObjectByID(const ObjectHandle_t &eID, const eC_Bool& bOnlyVisible = false)
291 {
292 // Call the const-GetObjectByID function, which is the real
293 // implementation.
294 // Casting away constness is valid here, because all
295 // CGUIObjects in Guiliani by rule shall be declared non-const
296 // at construction time.
297 return const_cast<CGUIObject*>(static_cast<const CGUICompositeObject* const>(this)->GetObjectByID(eID, bOnlyVisible));
298 }
299
310 const CGUIObject* GetObjectByID(const ObjectHandle_t &eID, const eC_Bool& bOnlyVisible = false) const;
311
326 const CGUIObject* GetAndCheckObjectByID(ObjectHandle_t eObjID, const eC_String& kObjectName) const;
327
342 inline CGUIObject* GetAndCheckObjectByID(ObjectHandle_t eObjID, const eC_String& kObjectName)
343 {
344 // Call the const-GetObjectByID function, which is the real implementation.
345 return const_cast<CGUIObject*>(static_cast<const CGUICompositeObject* const>(this)->GetAndCheckObjectByID(eObjID, kObjectName));
346 }
347
354 virtual eC_Bool IsCompositeObject() const { return true; }
355
363 virtual void SetDisabled(const eC_Bool& bDisabled) { CGUIObject::SetDisabled(bDisabled); }
364
369 virtual void SetDisabled(const eC_Bool &bDisabled, const eC_Bool &bChildrenDisabled);
370
378 virtual void SetInvisible(const eC_Bool& bInvisible) { CGUIObject::SetInvisible(bInvisible); }
379
386 virtual void SetInvisible(const eC_Bool &bInvisible, const eC_Bool &bChildrenInvisible);
387
395 virtual void SetGrayedOut(const eC_Bool &bGrayedOut) { CGUIObject::SetGrayedOut(bGrayedOut); }
396
401 virtual void SetGrayedOut(const eC_Bool &bGrayedOut, const eC_Bool &bChildrenGrayedOut);
402
410 virtual void SetFocussable(const eC_Bool &bFocussable) { CGUIObject::SetFocussable(bFocussable); }
411
417 virtual void SetFocussable(const eC_Bool &bFocussable, const eC_Bool &bChildrenFocussable);
418
426 virtual void SetClickThrough(const eC_Bool &bClickThrough) { CGUIObject::SetClickThrough(bClickThrough); }
427
432 virtual void SetClickThrough(const eC_Bool &bClickThrough, const eC_Bool &bChildrenClickThrough);
433
445 CGUIObject* GetChild(const eC_UInt uIndex) const;
446
458 inline CGUIObject* GetChild(const eC_UInt uIndex)
459 {
460 // Call the const-GetObjectByID function, which is the real implementation.
461 return const_cast<CGUIObject*>(static_cast<const CGUICompositeObject* const>(this)->GetChild(uIndex));
462 }
463
469 eC_Int GetIndexOfChild(const CGUIObject* pkObject) const;
470
474 inline eC_UInt GetNumberOfChildren() const { return m_kChildObjectsList.GetQuantity(); }
475
478
486 eC_Bool InsertChildAt(const eC_UInt cuiIndex, CGUIObject* pkChild);
487
495 inline void SetCyclicFocus(const eC_Bool &bCyclicFocus)
496 {
497 m_bCyclicFocus = bCyclicFocus;
498 }
499
505 inline eC_Bool CanBeCyclicFocussed() const { return m_bCyclicFocus; }
506
514 eC_Bool IsAncestorOf(const CGUIObject* pkObject) const;
515
535 inline const ObjectPtrList& GetChildObjectsList() const
536 {
537 return m_kChildObjectsList;
538 }
539
547 inline const ObjectPtrList& GetDrawOrderList() const
548 {
549 return m_kDrawOrderList;
550 }
551
554
564 virtual void RefreshLayout(CGUILayouter::eMovedEdges_t eMovedEdges) const;
565
571 eC_Bool SendToBack(const CGUIObject* pkObject);
572
578 eC_Bool BringToFront(const CGUIObject* pkObject);
579
585 eC_Bool RaiseOneLevel(const CGUIObject* pkObject);
586
592 eC_Bool LowerOneLevel(const CGUIObject* pkObject);
593
598 void Flip(const eC_Bool& rbVertical);
599
605 void Rotate(const eC_UInt& ruiDegrees, const eC_Bool& rbFirst = false);
606
607#if defined(GUILIANI_STREAM_GUI) || defined(GUILIANI_WRITE_GUI)
609 static const eC_Char XMLTAG_CHILDREN[];
610
612 static const eC_Char XMLTAG_ENDCHILDREN[];
613#endif
614
615protected:
620 {
621 return m_kChildObjectsList;
622 }
623
638 virtual eC_Bool FourWayNext(FourWayFocus_t eFocusDirection);
639
645 virtual void HandleDraw(const CGUIRect &ClipRect);
646
647private:
649 void UpdateInvalidation();
650
658 eC_Bool FocusNextDown();
659
667 eC_Bool FocusPreviousDown();
668
672 void CopyAttributes(const CGUICompositeObject& kSource);
673
675 void Init();
676
677private:
679 ObjectPtrList m_kChildObjectsList;
680
682 ObjectPtrList m_kDrawOrderList;
683
689 eC_Bool m_bCyclicFocus;
690};
691#endif
ObjectHandle_t
List of object resource ids.
Definition: GUIObjectHandleResource.h:55
This is the Guiliani base class for all composite objects.
Definition: GUICompositeObject.h:70
CGUICompositeObject(CGUICompositeObject *const pkParent, const eC_Value &vX, const eC_Value &vY, const eC_Value &vWidth, const eC_Value &vHeight, const ObjectHandle_t &eID=NO_HANDLE)
virtual void SetFocussable(const eC_Bool &bFocussable, const eC_Bool &bChildrenFocussable)
const CGUIObject * GetObjectByID(const ObjectHandle_t &eID, const eC_Bool &bOnlyVisible=false) const
eC_Bool InsertChildAt(const eC_UInt cuiIndex, CGUIObject *pkChild)
virtual void RefreshLayout(CGUILayouter::eMovedEdges_t eMovedEdges) const
static const eC_Char XMLTAG_ENDCHILDREN[]
XML comment tag to be used after writing children to a stream.
Definition: GUICompositeObject.h:612
eC_Bool IsAncestorOf(const CGUIObject *pkObject) const
virtual void ReadFromStream()
virtual void SetGrayedOut(const eC_Bool &bGrayedOut)
Definition: GUICompositeObject.h:395
virtual void SetDisabled(const eC_Bool &bDisabled)
Definition: GUICompositeObject.h:363
eC_Bool CanBeCyclicFocussed() const
Definition: GUICompositeObject.h:505
virtual CGUIObject * FindObject(const eC_Value &vAbsX, const eC_Value &vAbsY)
virtual void SetDisabled(const eC_Bool &bDisabled, const eC_Bool &bChildrenDisabled)
CGUIObject * GetChild(const eC_UInt uIndex) const
virtual eC_Bool DoPostDraw()
const CGUIObject * GetAndCheckObjectByID(ObjectHandle_t eObjID, const eC_String &kObjectName) const
virtual eC_Bool FocusPrevious(CGUIObject *const pRefObj=NULL, const eC_Bool &bSubTreeOfRefObjDone=false)
virtual eC_Bool FocusNext(CGUIObject *const pRefObj=NULL, const eC_Bool &bSubTreeOfRefObjDone=false)
virtual void SetGrayedOut(const eC_Bool &bGrayedOut, const eC_Bool &bChildrenGrayedOut)
virtual void HandleDraw(const CGUIRect &ClipRect)
virtual ~CGUICompositeObject()
This destructor is automatically virtual, as the base class destructor is virtual.
virtual eC_Bool FourWayNext(FourWayFocus_t eFocusDirection)
void DrawOnTop(CGUIObject *pkObject)
ObjectPtrList & GetChildObjectsList()
Definition: GUICompositeObject.h:619
CGUICompositeObject(const CGUICompositeObject &kSource)
virtual void SetClickThrough(const eC_Bool &bClickThrough)
Definition: GUICompositeObject.h:426
virtual void SetClickThrough(const eC_Bool &bClickThrough, const eC_Bool &bChildrenClickThrough)
const ObjectPtrList & GetChildObjectsList() const
Definition: GUICompositeObject.h:535
eC_Bool LowerOneLevel(const CGUIObject *pkObject)
eC_Int GetIndexOfChild(const CGUIObject *pkObject) const
virtual eC_Bool AddObject(CGUIObject *pkObject)
virtual void RemoveObject(CGUIObject *pkObject)
CGUICompositeObject(CGUICompositeObject *const pkParent, const CGUIRect &kRect, const ObjectHandle_t &eID=NO_HANDLE)
virtual void SetHeight(const eC_Value &vY)
virtual void SetWidth(const eC_Value &vX)
virtual eC_Bool IsCompositeObject() const
Definition: GUICompositeObject.h:354
virtual void WriteToStream(const eC_Bool bWriteClassID=false)
eC_Bool SendToBack(const CGUIObject *pkObject)
static const eC_Char XMLTAG_CHILDREN[]
XML comment tag to be used before writing children to a stream.
Definition: GUICompositeObject.h:609
void Rotate(const eC_UInt &ruiDegrees, const eC_Bool &rbFirst=false)
CGUIObject * GetChild(const eC_UInt uIndex)
Definition: GUICompositeObject.h:458
void InvalidateChildren()
Invalidates all chidren, but not this parent.
CGUICompositeObject & operator=(const CGUICompositeObject &kSource)
virtual void SetFocussable(const eC_Bool &bFocussable)
Definition: GUICompositeObject.h:410
void SetCyclicFocus(const eC_Bool &bCyclicFocus)
Definition: GUICompositeObject.h:495
eC_Bool RaiseOneLevel(const CGUIObject *pkObject)
const ObjectPtrList & GetDrawOrderList() const
Definition: GUICompositeObject.h:547
void DrawOnTopOf(CGUIObject *const pkObject, CGUIObject *const pDrawOnTopOf)
CGUIObject * GetAndCheckObjectByID(ObjectHandle_t eObjID, const eC_String &kObjectName)
Definition: GUICompositeObject.h:342
virtual void SetInvisible(const eC_Bool &bInvisible)
Definition: GUICompositeObject.h:378
eC_UInt GetNumberOfChildren() const
Definition: GUICompositeObject.h:474
virtual void SetInvisible(const eC_Bool &bInvisible, const eC_Bool &bChildrenInvisible)
eC_Bool BringToFront(const CGUIObject *pkObject)
void Flip(const eC_Bool &rbVertical)
CGUIObject * GetObjectByID(const ObjectHandle_t &eID, const eC_Bool &bOnlyVisible=false)
Definition: GUICompositeObject.h:290
eMovedEdges_t
Enumerate possible reasons for calling layout,.
Definition: GUILayouter.h:61
This is the Guiliani base class all controls are derived from.
Definition: GUIObject.h:79
virtual void SetGrayedOut(const eC_Bool &bGrayOut)
void SetClickThrough(const eC_Bool &bClickThrough)
Definition: GUIObject.h:851
virtual void SetInvisible(const eC_Bool &bInvisible)
virtual void SetFocussable(const eC_Bool &bFocussable)
FourWayFocus_t
Definition: GUIObject.h:136
virtual void SetDisabled(const eC_Bool &bDisabled)
Helper class to supply a platform independent rectangle implementation.
Definition: GUIRect.h:63
The graphics wrapper base class.
Definition: GfxWrap.h:84
eC_UInt GetQuantity() const
Definition: eC_TList_doubleLinked.h:587