![]() |
Class handling the generic description of a component. More...
#include <arcsabstractcomponent.h>
Public Member Functions | |
bool | instanciate () |
Instanciates the real component. | |
bool | isInstanciated () |
Determines wether the component is instanciated or not. | |
void | destroy () |
Destroys the real component. | |
ARCSAbstractComponent * | clone () |
Kage bunshin no jutsu ! More... | |
virtual QStringList | getSlots ()=0 |
Returns the names of the available slots. | |
virtual QStringList | getSignals ()=0 |
Returns the names of the availables signals. | |
virtual bool | connect (QString sig, ARCSAbstractComponent *dst, QString slt, bool queued=false) |
This method connects two components by the indicated signals and slots. More... | |
bool | disconnect (QString sig, ARCSAbstractComponent *dst, QString slt) |
This method disconnects two components by the indicated signals and slots. More... | |
bool | init (QString slt, QVariant *var) |
Initializes a component. More... | |
virtual QString | toString ()=0 |
Defines a basic seralization mechanism. More... | |
virtual bool | parseString (QString s)=0 |
Defines a basic seralization mechanism. More... | |
virtual bool | loadFile (QString fn) |
Defines a way to load a component description from a file. More... | |
virtual bool | saveFile (QString fn) |
Defines a way to save a component description inside a file. More... | |
void | setProperty (QString name, QVariant value) |
Sets a meta-property on this component. More... | |
QVariant | getProperty (QString name) |
Gets a meta-property from this component. More... | |
void | removeProperty (QString name) |
Removes a meta-property from this component. More... | |
void | resetProperties () |
Sets the property list to a blank list. | |
QStringList | getProperties () |
void | setFamily (QString s) |
QString | getFamily () |
void | setType (QString s) |
QString | getType () |
virtual QVariant | getGenuineComponentInstance () |
Protected Member Functions | |
virtual void | getProxySlot (QString slot, ObjectList &obj, QStringList &proxySlot)=0 |
Creates a proxy slot to interface a component to native ARCS components. More... | |
virtual void | getProxySignal (QString signal, ObjectList &obj, QStringList &proxySignal)=0 |
Creates a proxy signal to interface a component to native ARCS components. More... | |
virtual bool | genuineConnect (QString, ARCSAbstractComponent *, QString, bool=false) |
This method connects two components by the indicated signals and slots. More... | |
virtual bool | genuineDisconnect (QString, ARCSAbstractComponent *, QString) |
This method disconnects two components by the indicated signals and slots. More... | |
virtual bool | genuineInstanciate ()=0 |
This method should implement the instanciation of the actual component. More... | |
virtual void | genuineDestroy ()=0 |
This method should implement the destruction of the actual component. More... | |
Static Protected Member Functions | |
static void | getProxySlot (ARCSAbstractComponent *cmp, QString slot, ObjectList &obj, QStringList &proxySlot) |
Wrapper for getProxySlot() | |
static void | getProxySignal (ARCSAbstractComponent *cmp, QString signal, ObjectList &obj, QStringList &proxySignal) |
Wrapper for getProxySignal() | |
Static Protected Attributes | |
static const QString | slotPrefix = "1" |
static const QString | signalPrefix = "2" |
Class handling the generic description of a component.
The generic description of a component should contain the following topics that are adressed in this class:
For each subclasses of ARCSAbstractComponent, the following methods should be overloaded :
To implement a new component following this guideline, you should have a header like this :
Definition at line 102 of file arcsabstractcomponent.h.
ARCSAbstractComponent * ARCSAbstractComponent::clone | ( | ) |
Kage bunshin no jutsu !
This methods intends to clone an abstract component. It also takes care of meta-properties like: type, family and so on.
Definition at line 53 of file arcsabstractcomponent.cpp.
|
virtual |
This method connects two components by the indicated signals and slots.
In order to lessen the burden of managing connections between components of the same family, it is possible to implement a direct connection between them in the method genuineConnection(). If it is not possible, the component abstraction must wrap it to the native format of ARCS components using a QObject intermediate acting as a proxy (see also getProxySlot() and getProxySignal()).
sig | the signal name of the current component |
dst | a pointer to the component to connect to |
slt | the slot name of the component to connect to |
queued | if set to false the parameter transmission will not be delayed. |
true
if successful, false
otherwise.Definition at line 187 of file arcsabstractcomponent.cpp.
bool ARCSAbstractComponent::disconnect | ( | QString | sig, |
ARCSAbstractComponent * | dst, | ||
QString | slt | ||
) |
This method disconnects two components by the indicated signals and slots.
In order to lessen the burden of managing connections between components of the same family, it is possible to implement a direct connection between them in the method genuineDisconnection(). If it is not possible, the component abstraction must wrap it to the native format of ARCS components using a QObject intermediate acting as a proxy (see also getProxySlot() and getProxySignal()).
sig | the signal name of the current component |
dst | a pointer to the component to connect to |
slt | the slot name of the component to connect to |
true
if successful, false
otherwise. Definition at line 263 of file arcsabstractcomponent.cpp.
|
inlineprotectedvirtual |
This method connects two components by the indicated signals and slots.
In order to lessen the burden of managing connections between components of the same family, this method should implement a direct connection between them.
sig | the signal name of the current component |
dst | a pointer to the component to connect to |
slt | the slot name of the component to connect to |
queued | if set to false the parameter transmission will not be delayed. |
true
if direct connection has been performed, false
otherwise. Reimplemented in ARCSProxyComponent.
Definition at line 294 of file arcsabstractcomponent.h.
|
protectedpure virtual |
This method should implement the destruction of the actual component.
Should be overloaded by each subclasses.
Implemented in ARCSApplicationComponent, ARCSScriptComponent, ARCSCompositeComponent, ARCSProxyComponent, ARCSControllerComponent, and ARCSNativeComponent.
|
inlineprotectedvirtual |
This method disconnects two components by the indicated signals and slots.
In order to lessen the burden of managing connections between components of the same family, this method should implement a direct disconnection between them.
sig | the signal name of the current component |
dst | a pointer to the component to connect to |
slt | the slot name of the component to connect to |
true
if direct connection has been performed, false
otherwise. Reimplemented in ARCSProxyComponent.
Definition at line 304 of file arcsabstractcomponent.h.
|
protectedpure virtual |
This method should implement the instanciation of the actual component.
Should be overloaded by each subclasses.
Implemented in ARCSApplicationComponent, ARCSScriptComponent, ARCSCompositeComponent, ARCSProxyComponent, ARCSControllerComponent, and ARCSNativeComponent.
|
inline |
Gets the family name to which this component belongs.
Definition at line 240 of file arcsabstractcomponent.h.
|
inlinevirtual |
Allows to get the genuine component instance.
This method purpose is to help in invocating nested objects.
Reimplemented in ARCSApplicationComponent, and ARCSNativeComponent.
Definition at line 254 of file arcsabstractcomponent.h.
QStringList ARCSAbstractComponent::getProperties | ( | ) |
Recovers the list of properties stored inside the component.
Definition at line 135 of file arcsabstractcomponent.cpp.
QVariant ARCSAbstractComponent::getProperty | ( | QString | name | ) |
Gets a meta-property from this component.
name | name of the property |
Definition at line 112 of file arcsabstractcomponent.cpp.
|
protectedpure virtual |
Creates a proxy signal to interface a component to native ARCS components.
This function should be overriden by subclasses. It is used in the case the abstracted component is not from the same family as another component to connect to. In this case, the abstracted component should offer a wrapper using a QObject to communicate with other components as if it was a native component of the ARCS runtime.
sig | the signal name of the current component |
obj | a list of QObject wrappers returned by this method |
proxySignal | the list of the real slot names associated to the QObjects returned by this method. |
Implemented in ARCSApplicationComponent, ARCSScriptComponent, ARCSCompositeComponent, ARCSProxyComponent, ARCSNativeComponent, and ARCSControllerComponent.
|
protectedpure virtual |
Creates a proxy slot to interface a component to native ARCS components.
This function should be overriden by subclasses. It is used in the case the abstracted component is not from the same family as another component to connect to. In this case, the abstracted component should offer a wrapper using a QObject to communicate with other components as if it was a native component of the ARCS runtime.
slot | the slot name of the current component |
obj | a list of QObject wrappers returned by this method |
proxySlot | the list of the real slot names associated to the QObjects returned by this method. |
Implemented in ARCSApplicationComponent, ARCSScriptComponent, ARCSCompositeComponent, ARCSProxyComponent, ARCSNativeComponent, and ARCSControllerComponent.
|
inline |
Gets the class name of this component.
Definition at line 248 of file arcsabstractcomponent.h.
bool ARCSAbstractComponent::init | ( | QString | slt, |
QVariant * | var | ||
) |
Initializes a component.
Each slot of a component can be used to give values to alter its behaviour. This is the role of this method.
slt | the slot name of this component. |
var | a QVariant representing the value to give to this slot. |
Definition at line 141 of file arcsabstractcomponent.cpp.
|
virtual |
Defines a way to load a component description from a file.
This method has a default implementation. Optimizations might require to rewrite it.
fn | a filename where component description is stored |
true
if loading and parsing was a success, false
otherwise. Reimplemented in ARCSApplicationComponent, and ARCSCompositeComponent.
Definition at line 74 of file arcsabstractcomponent.cpp.
|
pure virtual |
Defines a basic seralization mechanism.
This should parse a string and affect the internal representation of the component.
true
if parsing was a success, false
otherwise. Implemented in ARCSScriptComponent, ARCSApplicationComponent, ARCSCompositeComponent, ARCSNativeComponent, ARCSControllerComponent, and ARCSProxyComponent.
void ARCSAbstractComponent::removeProperty | ( | QString | name | ) |
Removes a meta-property from this component.
name | name of the property |
Definition at line 123 of file arcsabstractcomponent.cpp.
|
virtual |
Defines a way to save a component description inside a file.
This method has a default implementation. Optimizations might require to rewrite it.
fn | a filename where component description will be stored. |
true
if saving a success, false
otherwise. Reimplemented in ARCSCompositeComponent.
Definition at line 90 of file arcsabstractcomponent.cpp.
|
inline |
Sets the family name to which this component belongs.
Definition at line 237 of file arcsabstractcomponent.h.
void ARCSAbstractComponent::setProperty | ( | QString | name, |
QVariant | value | ||
) |
Sets a meta-property on this component.
name | name of the property |
value | a QVariant representing the value of the property. |
Definition at line 106 of file arcsabstractcomponent.cpp.
|
inline |
Sets the class name of this component.
Definition at line 244 of file arcsabstractcomponent.h.
|
pure virtual |
Defines a basic seralization mechanism.
This should return a string representation of the component.
Implemented in ARCSScriptComponent, ARCSApplicationComponent, ARCSCompositeComponent, ARCSNativeComponent, ARCSControllerComponent, and ARCSProxyComponent.