// Set default return value, if method failed. // If no desktop exist and there is no task container - return an empty enumeration!
rtl::Reference< OComponentEnumeration > xReturn;
// Try to "lock" the desktop for access to task container.
css::uno::Reference< XInterface > xLock = m_xOwner.get(); if ( xLock.is() )
{ // Desktop exist => pointer to task container must be valid. // Initialize a new enumeration ... if some tasks and his components exist! // (OTasksEnumeration will make an assert, if we initialize the new instance without valid values!)
// Return result of this operation. return xReturn;
}
// XElementAccess
Type SAL_CALL OComponentAccess::getElementType()
{ // Elements in list an enumeration are components! // Return the uno-type of XComponent. return cppu::UnoType<XComponent>::get();
}
// Set default return value, if method failed. bool bReturn = false;
// Try to "lock" the desktop for access to task container.
css::uno::Reference< XFramesSupplier > xLock( m_xOwner.get(), UNO_QUERY ); if ( xLock.is() )
{ // Ask container of owner for existing elements.
bReturn = xLock->getFrames()->hasElements();
}
// Return result of this operation. return bReturn;
}
// static void OComponentAccess::impl_collectAllChildComponents( const css::uno::Reference< XFramesSupplier >& xNode ,
std::vector< css::uno::Reference< XComponent > >& seqComponents )
{ // If valid node was given ... if( !xNode.is() ) return;
// ... continue collection at these.
// Get the container of current node, collect the components of existing child frames // and go down to next level in tree (recursive!).
const sal_Int32 nFrameCount = seqFrames.getLength(); for( sal_Int32 nFrame=0; nFrame<nFrameCount; ++nFrame )
{
css::uno::Reference< XComponent > xComponent = impl_getFrameComponent( seqFrames[nFrame] ); if( xComponent.is() )
{
seqComponents.push_back( xComponent );
}
} // ... otherwise break a recursive path and go back at current stack!
}
// static
css::uno::Reference< XComponent > OComponentAccess::impl_getFrameComponent( const css::uno::Reference< XFrame >& xFrame )
{ // Set default return value, if method failed.
css::uno::Reference< XComponent > xComponent; // Does no controller exists?
css::uno::Reference< XController > xController = xFrame->getController(); if ( !xController.is() )
{ // Controller not exist - use the VCL-component.
xComponent = xFrame->getComponentWindow();
} else
{ // Does no model exists?
css::uno::Reference< XModel > xModel = xController->getModel(); if ( xModel.is() )
{ // Model exist - use the model as component.
xComponent = xModel;
} else
{ // Model not exist - use the controller as component.
xComponent = xController;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.