The classes in this namespace form the control layer. More...
The classes in this namespace form the control layer.
The control layer consists of two parts:
The control library is a shared library which is used by the controller plugins and other parts of the application. It offers the interface that should be implemented by all controller plugins (ControllerInterface) as well as a collection of models.
Models, subclasses of QAbstractItemModel, are classes that define a representation of the data classes of the domain layer which is easy to interpret in the user interface (ui layer).
The communication between the control layer and the ui layer happens by means of data::UserInputData subclasses. These are used so the ui layer can give data details to the control layer without having to modify domain layer data.
Each use case is represented by a controller plugin. Each plugin has to implement ControllerInterface::execute() to execute the use case. If the controller can handle data, it should also implement ControllerInterface::execute(StorableData*) to execute the same use case given some data. If a controller can handle data, the execute method without arguments will ask the user for data and just call execute with that data.