Medical Imaging Interaction Toolkit  2023.12.99-b884b24c
Medical Imaging Interaction Toolkit
QmitkServiceListWidget Class Reference

This widget provides abstraction for the handling of MicroServices. More...

#include <QmitkServiceListWidget.h>

Inheritance diagram for QmitkServiceListWidget:
Collaboration diagram for QmitkServiceListWidget:

Classes

struct  ServiceListLink
 Internal structure used to link ServiceReferences to their QListWidgetItems. More...
 

Signals

void ServiceRegistered (us::ServiceReferenceU)
 Emitted when a new Service matching the filter is being registered. More...
 
void ServiceUnregistering (us::ServiceReferenceU)
 Emitted directly before a Service matching the filter is being unregistered. More...
 
void ServiceModified (us::ServiceReferenceU)
 Emitted when a Service matching the filter changes it's properties, or when a service that formerly not matched the filter changed it's properties and now matches the filter. More...
 
void ServiceModifiedEndMatch (us::ServiceReferenceU)
 Emitted when a Service matching the filter changes it's properties,. More...
 
void ServiceSelectionChanged (us::ServiceReferenceU)
 Emitted if the user selects a Service from the list. More...
 

Public Member Functions

 QmitkServiceListWidget (QWidget *p=nullptr, Qt::WindowFlags f1={})
 
 ~QmitkServiceListWidget () override
 
void SetAutomaticallySelectFirstEntry (bool automaticallySelectFirstEntry)
 Set if the first entry of the list should be selected automatically if no entry was selected before. More...
 
virtual void CreateQtPartControl (QWidget *parent)
 This method is part of the widget an needs not to be called separately. More...
 
virtual void CreateConnections ()
 This method is part of the widget an needs not to be called separately. (Creation of the connections of main and control widget.) More...
 
bool GetIsServiceSelected ()
 Will return true, if a service is currently selected and false otherwise. More...
 
us::ServiceReferenceU GetSelectedServiceReference ()
 Returns the currently selected Service as a ServiceReference. More...
 
std::vector< us::ServiceReferenceUGetAllServiceReferences ()
 
template<class T >
std::vector< T * > GetAllServices ()
 Use this function to return the all listed services as a class directly. More...
 
template<class T >
T * GetSelectedService ()
 Use this function to return the currently selected service as a class directly. More...
 
template<class T >
void Initialize (const std::string &namingProperty=static_cast< std::string >(""), const std::string &filter=static_cast< std::string >(""))
 Initializes the Widget with essential parameters. More...
 
template<class T >
T * TranslateReference (const us::ServiceReferenceU &reference)
 Translates a serviceReference to a class of the given type. More...
 
void OnServiceEvent (const us::ServiceEvent event)
 This Function listens to ServiceRegistry changes and updates the list of services accordingly. More...
 

Static Public Attributes

static const std::string VIEW_ID
 

Protected Slots

void OnServiceSelectionChanged ()
 Called, when the selection in the list of Services changes. More...
 

Protected Member Functions

void InitPrivate (const std::string &namingProperty, const std::string &filter)
 Finishes initialization after Initialize has been called. More...
 
QListWidgetItem * AddServiceToList (const us::ServiceReferenceU &serviceRef)
 Constructs a ListItem from the given service, displays it, and locally stores the service. More...
 
bool RemoveServiceFromList (const us::ServiceReferenceU &serviceRef)
 Removes the given service from the list and cleans up. Returns true if successful, false if service was not found. More...
 
bool ChangeServiceOnList (const us::ServiceReferenceU &serviceRef)
 Changes list entry of given service to match the changed service properties. More...
 
us::ServiceReferenceU GetServiceForListItem (QListWidgetItem *item)
 Returns the serviceReference corresponding to the given ListEntry or an invalid one if none was found (will evaluate to false in bool expressions). More...
 
std::vector< us::ServiceReferenceUGetAllRegisteredServices ()
 Returns a list of ServiceReferences matching the filter criteria by querying the service registry. More...
 
QString CreateCaptionForService (const us::ServiceReferenceU &serviceRef)
 Gets string from the naming property of the service. More...
 

Protected Attributes

Ui::QmitkServiceListWidgetControls * m_Controls
 member holding the UI elements of this widget More...
 
std::vector< ServiceListLinkm_ListContent
 Contains a list of currently active services and their entires in the list. This is wiped with every ServiceRegistryEvent. More...
 

Detailed Description

This widget provides abstraction for the handling of MicroServices.

Place one in your Plugin and set it to look for a certain interface. One can also specify a filter and / or a property to use for captioning of the services. It also offers functionality to signal ServiceEvents and to return the actual classes, so only a minimum of interaction with the MicroserviceInterface is required. To get started, just put it in your Plugin or Widget, call the Initialize Method and optionally connect it's signals. As QT limits templating possibilities, events only throw ServiceReferences. You can manually dereference them using TranslateServiceReference()

Definition at line 45 of file QmitkServiceListWidget.h.

Constructor & Destructor Documentation

◆ QmitkServiceListWidget()

QmitkServiceListWidget::QmitkServiceListWidget ( QWidget *  p = nullptr,
Qt::WindowFlags  f1 = {} 
)

◆ ~QmitkServiceListWidget()

QmitkServiceListWidget::~QmitkServiceListWidget ( )
override

Member Function Documentation

◆ AddServiceToList()

QListWidgetItem* QmitkServiceListWidget::AddServiceToList ( const us::ServiceReferenceU serviceRef)
protected

Constructs a ListItem from the given service, displays it, and locally stores the service.

◆ ChangeServiceOnList()

bool QmitkServiceListWidget::ChangeServiceOnList ( const us::ServiceReferenceU serviceRef)
protected

Changes list entry of given service to match the changed service properties.

Returns
true if successful, false if service was not found

◆ CreateCaptionForService()

QString QmitkServiceListWidget::CreateCaptionForService ( const us::ServiceReferenceU serviceRef)
protected

Gets string from the naming property of the service.

Returns
caption string for given us::ServiceReferenceU

◆ CreateConnections()

virtual void QmitkServiceListWidget::CreateConnections ( )
virtual

This method is part of the widget an needs not to be called separately. (Creation of the connections of main and control widget.)

◆ CreateQtPartControl()

virtual void QmitkServiceListWidget::CreateQtPartControl ( QWidget *  parent)
virtual

This method is part of the widget an needs not to be called separately.

◆ GetAllRegisteredServices()

std::vector<us::ServiceReferenceU> QmitkServiceListWidget::GetAllRegisteredServices ( )
protected

Returns a list of ServiceReferences matching the filter criteria by querying the service registry.

◆ GetAllServiceReferences()

std::vector<us::ServiceReferenceU> QmitkServiceListWidget::GetAllServiceReferences ( )
Returns
Returns all service references that are displayed in this widget.

◆ GetAllServices()

template<class T >
std::vector<T *> QmitkServiceListWidget::GetAllServices ( )
inline

Use this function to return the all listed services as a class directly.

Make sure you pass the appropriate type, or else this call will fail. Usually, you will pass the class itself, not the SmartPointer, but the function returns a pointer.

Definition at line 104 of file QmitkServiceListWidget.h.

◆ GetIsServiceSelected()

bool QmitkServiceListWidget::GetIsServiceSelected ( )

Will return true, if a service is currently selected and false otherwise.

Call this before requesting service references to avoid invalid ServiceReferences.

◆ GetSelectedService()

template<class T >
T* QmitkServiceListWidget::GetSelectedService ( )
inline

Use this function to return the currently selected service as a class directly.

Make sure you pass the appropriate type, or else this call will fail. Usually, you will pass the class itself, not the SmartPointer, but the function returns a pointer. Example:

mitk::USDevice::Pointer device = GetSelectedService<mitk::USDevice>(); 
Returns
Returns the current selected device. Returns nullptr if no device is selected.

Definition at line 125 of file QmitkServiceListWidget.h.

◆ GetSelectedServiceReference()

us::ServiceReferenceU QmitkServiceListWidget::GetSelectedServiceReference ( )

Returns the currently selected Service as a ServiceReference.

If no Service is selected, the result will probably be a bad pointer. call GetIsServiceSelected() beforehand to avoid this

◆ GetServiceForListItem()

us::ServiceReferenceU QmitkServiceListWidget::GetServiceForListItem ( QListWidgetItem *  item)
protected

Returns the serviceReference corresponding to the given ListEntry or an invalid one if none was found (will evaluate to false in bool expressions).

◆ Initialize()

template<class T >
void QmitkServiceListWidget::Initialize ( const std::string &  namingProperty = static_cast<std::string>(""),
const std::string &  filter = static_cast<std::string>("") 
)
inline

Initializes the Widget with essential parameters.

The string filter is an LDAP parsable String, compare mitk::ModuleContext for examples on filtering. Pass class T to tell the widget which class it should filter for - only services of this class will be listed. NamingProperty is a property that will be used to caption the Items in the list. If no filter is supplied, all matching interfaces are shown. If no namingProperty is supplied, the interfaceName will be used to caption Items in the list. For example, this Initialization will filter for all USDevices that are set to active. The USDevice's model will be used to display it in the list:

    std::string filter = "(&(" + us::ServiceConstants::OBJECTCLASS() + "=" +
"org.mitk.services.UltrasoundDevice)(IsActive=true))";
    m_Controls.m_ActiveVideoDevices->Initialize<mitk::USDevice>(mitk::USDevice::GetPropertyKeys().US_PROPKEY_NAME
,filter);
* 

Definition at line 151 of file QmitkServiceListWidget.h.

◆ InitPrivate()

void QmitkServiceListWidget::InitPrivate ( const std::string &  namingProperty,
const std::string &  filter 
)
protected

Finishes initialization after Initialize has been called.

This function assumes that m_Interface is set correctly (Which Initialize does).

◆ OnServiceEvent()

void QmitkServiceListWidget::OnServiceEvent ( const us::ServiceEvent  event)

This Function listens to ServiceRegistry changes and updates the list of services accordingly.

The user of this widget does not need to call this method, it is instead used to recieve events from the module registry.

◆ OnServiceSelectionChanged

void QmitkServiceListWidget::OnServiceSelectionChanged ( )
protectedslot

Called, when the selection in the list of Services changes.

◆ RemoveServiceFromList()

bool QmitkServiceListWidget::RemoveServiceFromList ( const us::ServiceReferenceU serviceRef)
protected

Removes the given service from the list and cleans up. Returns true if successful, false if service was not found.

◆ ServiceModified

void QmitkServiceListWidget::ServiceModified ( us::ServiceReferenceU  )
signal

Emitted when a Service matching the filter changes it's properties, or when a service that formerly not matched the filter changed it's properties and now matches the filter.

◆ ServiceModifiedEndMatch

void QmitkServiceListWidget::ServiceModifiedEndMatch ( us::ServiceReferenceU  )
signal

Emitted when a Service matching the filter changes it's properties,.

and the new properties make it fall trough the filter. This effectively means that the widget will not track the service anymore. Usually, the Service should still be useable though

◆ ServiceRegistered

void QmitkServiceListWidget::ServiceRegistered ( us::ServiceReferenceU  )
signal

Emitted when a new Service matching the filter is being registered.

Be careful if you use a filter: If a device does not match the filter when registering, but modifies it's properties later to match the filter, then the first signal you will see this device in will be ServiceModified.

◆ ServiceSelectionChanged

void QmitkServiceListWidget::ServiceSelectionChanged ( us::ServiceReferenceU  )
signal

Emitted if the user selects a Service from the list.

If no service is selected, an invalid serviceReference is returned. The user can easily check for this. if (serviceReference) will evaluate to false, if the reference is invalid and true if valid.

◆ ServiceUnregistering

void QmitkServiceListWidget::ServiceUnregistering ( us::ServiceReferenceU  )
signal

Emitted directly before a Service matching the filter is being unregistered.

◆ SetAutomaticallySelectFirstEntry()

void QmitkServiceListWidget::SetAutomaticallySelectFirstEntry ( bool  automaticallySelectFirstEntry)

Set if the first entry of the list should be selected automatically if no entry was selected before.

◆ TranslateReference()

template<class T >
T* QmitkServiceListWidget::TranslateReference ( const us::ServiceReferenceU reference)
inline

Translates a serviceReference to a class of the given type.

Use this to translate the signal's parameters. To adhere to the MicroService contract, only ServiceReferences stemming from the same widget should be used as parameters for this method.

mitk::USDevice::Pointer device = TranslateReference<mitk::USDevice>(myDeviceReference); 

Definition at line 167 of file QmitkServiceListWidget.h.

Member Data Documentation

◆ m_Controls

Ui::QmitkServiceListWidgetControls* QmitkServiceListWidget::m_Controls
protected

member holding the UI elements of this widget

Definition at line 229 of file QmitkServiceListWidget.h.

◆ m_ListContent

std::vector<ServiceListLink> QmitkServiceListWidget::m_ListContent
protected

Contains a list of currently active services and their entires in the list. This is wiped with every ServiceRegistryEvent.

Definition at line 251 of file QmitkServiceListWidget.h.

◆ VIEW_ID

const std::string QmitkServiceListWidget::VIEW_ID
static

Definition at line 63 of file QmitkServiceListWidget.h.


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