C

StateManager Class

class SafeRenderer::StateManager

The StateManager class maintains the state of the indicators. More...

Header: #include <StateManager>
Since: QtSafeRenderer 1.0

Public Types

enum Visibility { Hidden, Visible }

Public Functions

StateManager(SafeRenderer::AbstractWindow &window, SafeRenderer::QSafeLayout &layout, const SafeRenderer::ARGB clearColorArg = ARGB())
void addLayout(SafeRenderer::QSafeLayout *const layout)
void advanceAnimations()
void connect(const SafeRenderer::quint32 eventArg, const SafeRenderer::qchar *const stateName)
void connect(const SafeRenderer::quint32 eventArg, const SafeRenderer::quint32 stateIdArg)
SafeRenderer::quint32 getItemAtPosition(const SafeRenderer::quint32 xArg, const SafeRenderer::quint32 yArg) const
SafeRenderer::quint32 getItemState(const SafeRenderer::quint32 itemIdArg) const
SafeRenderer::quint32 getLayout() const
const SafeRenderer::LayoutData &getLayoutItem(const SafeRenderer::quint32 idArg) const
void handleConnection(const SafeRenderer::QSafeEventSystem &eventArg)
bool isInTransition() const
bool isItemInTransition(const SafeRenderer::quint32 itemIdArg) const
bool setLayout(SafeRenderer::QSafeLayout *const layout)

Detailed Description

The StateManager class maintains the state of the indicators.

Member Type Documentation

enum StateManager::Visibility

This enum describes the ON and OFF states.

ConstantValueDescription
SafeRenderer::StateManager::Hidden0The item is hidden.
SafeRenderer::StateManager::Visible1The item is visible.

Member Function Documentation

StateManager::StateManager(SafeRenderer::AbstractWindow &window, SafeRenderer::QSafeLayout &layout, const SafeRenderer::ARGB clearColorArg = ARGB())

Constructs a StateManager object with the given window framebuffer, the layout default layout, and the clearColorArg clear color value.

In case of a failure, one of the following exceptions will be thrown:

ExceptionIdDescription
SafeRenderer::QSafeLayoutExceptionSafeRenderer::QSafeLayoutException::LayoutException::UnknownBitmapIdThe bitmap could not found by the given bitmap ID.
SafeRenderer::QSafeLayoutExceptionSafeRenderer::QSafeLayoutException::LayoutException::UnknownItemThe item could not be found.
SafeRenderer::QSafeLayoutExceptionSafeRenderer::QSafeLayoutException::LayoutException::ItemOutOfBoundsThe item's position is out of the layout boundaries.
SafeRenderer::QSafeLayoutExceptionSafeRenderer::QSafeLayoutException::LayoutException::DataSizeMismatchThe resource file does not contain enough data or data is invalid.
SafeRenderer::QSafeRendererExceptionSafeRenderer::QSafeRendererException::RendererException::UnsupportedSurfaceFormatThe bits per pixel value in the window is neither 16 or 32.
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::InvalidLayoutObjectThe \a layout is not in OK state.

void StateManager::addLayout(SafeRenderer::QSafeLayout *const layout)

Adds new layout to the state manager. At this point layout is not taken into use. Each QSafeLayout instances has an unique id which is the hash value of the layout file. This value is used in QSafeEventChangeLayout event when requesting a layout change.

In case of a failure, one of the following exceptions will be thrown:

ExceptionIdDescription
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::MaxNumOfLayoutsExceedMaximum amount of layouts exceeds.
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::LayoutAlreadyExistsLayout with same id is already added.

void StateManager::advanceAnimations()

Advances animations if there are transitions ongoing. This function should be called by the animation timer. If there is no transitions ongoing this function does nothing.

void StateManager::connect(const SafeRenderer::quint32 eventArg, const SafeRenderer::qchar *const stateName)

Connects the external eventArg to the stateName layout item. stateName is the objectName of the safe item in QML.

In case of a failure, one of the following exceptions will be thrown:

ExceptionIdDescription
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::ConnectionAlreadyExistsThe event is already connected.
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::NotConnectedEventThe event is not connected.
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::TooManyConnectionsThe number of connections exceeds the value defined in SafeRenderer::Constraints::MAX_NUM_OF_CONNECTIONS.
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::StateNotFoundThe connected item could not be found.

An example of the QML definiton:

SafePicture {
    id: iconCoolant
    objectName: "iconCoolant"
    width: 30
    height: 30
    color: "#e41e25"
    source: "qrc:/iso-icons/iso_grs_7000_4_2426.dat"
}

You can connect the external event EventEngineTemperature to the iconCoolant item as follows:

stateManager.connect(SafeRenderer::EventEngineTemperature, "iconCoolant");

void StateManager::connect(const SafeRenderer::quint32 eventArg, const SafeRenderer::quint32 stateIdArg)

Connects the external eventArg to the stateIdArg layout item. stateIdArg is the calculated hash of the safe item objectName in QML.

In case of a failure, one of the following exceptions will be thrown:

ExceptionIdDescription
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::ConnectionAlreadyExistsThe event is already connected.
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::NotConnectedEventThe event is not connected.
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::TooManyConnectionsThe number of connections exceeds the value defined in SafeRenderer::Constraints::MAX_NUM_OF_CONNECTIONS.
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::StateNotFoundThe connected item could not be found.

[since QtSafeRenderer 2.0] SafeRenderer::quint32 StateManager::getItemAtPosition(const SafeRenderer::quint32 xArg, const SafeRenderer::quint32 yArg) const

Returns the ID of the item at the xArg and yArg position. In case there are multiple items at the same position, the top-most visible item is returned. Returns 0 if there is no visible item at the position.

This function was introduced in QtSafeRenderer 2.0.

SafeRenderer::quint32 StateManager::getItemState(const SafeRenderer::quint32 itemIdArg) const

Returns the state of an itemIdArg.

SafeRenderer::quint32 StateManager::getLayout() const

Returns the ID of the active layout.

const SafeRenderer::LayoutData &StateManager::getLayoutItem(const SafeRenderer::quint32 idArg) const

Returns SafeRenderer::LayoutData item idenfified by idArg.

void StateManager::handleConnection(const SafeRenderer::QSafeEventSystem &eventArg)

Handles an eventArg that can change its associated state between ON and OFF.

In case of a failure, one of the following exceptions will be thrown:

ExceptionIdDescription
SafeRenderer::QSafeRendererExceptionSafeRenderer::QSafeRendererException::RendererException::BitmapOutfOfScreenThe bitmap does not fit inside screen area.
SafeRenderer::QSafeRendererExceptionSafeRenderer::QSafeRendererException::RendererException::InvalidBitmapPointerThe bitmap pointer is a null pointer.
SafeRenderer::QSafeRendererExceptionSafeRenderer::QSafeRendererException::RendererException::InvalidBitmapIdThe bitmap ID is 0.
SafeRenderer::QStateManagerExceptionSafeRenderer::QStateManagerException::StateManagerException::NotConnectedEventThe event is not connected.

bool StateManager::isInTransition() const

Returns true if there is transitions ongoing otherwise returns false.

bool StateManager::isItemInTransition(const SafeRenderer::quint32 itemIdArg) const

Returns true if the item itemIdArg is in transtion otherwise returns false.

bool StateManager::setLayout(SafeRenderer::QSafeLayout *const layout)

Changes the current layout of StateManager to layout.

Returns true if the layout change succeeded, otherwise false.

In case of a failure, one of the following exceptions will be thrown:

ExceptionIdDescription
SafeRenderer::QSafeRendererExceptionSafeRenderer::QSafeRendererException::RendererException::BitmapOufOfScreenThe bitmap does not fit inside screen area.
SafeRenderer::QSafeRendererExceptionSafeRenderer::QSafeRendererException::RendererException::InvalidBitmapPointerThe bitmap pointer is a null pointer.
SafeRenderer::QSafeRendererExceptionSafeRenderer::QSafeRendererException::RendererException::InvalidBitmapIdThe bitmap ID is 0.

Available under certain Qt licenses.
Find out more.