24#include <osl/mutex.hxx>
25#include <helper/property.hxx>
34#include <com/sun/star/awt/PosSize.hpp>
35#include <com/sun/star/resource/XStringResourceResolver.hpp>
36#include <com/sun/star/lang/XInitialization.hpp>
52#include <osl/file.hxx>
73 const Sequence< OUString >& lcl_getLanguageDependentProperties()
76 static Sequence<OUString> s_aLanguageDependentProperties{
"HelpText",
"Title" };
77 return s_aLanguageDependentProperties;
81struct DisposeControlModel
83 void operator()( Reference< XControlModel >& _rxModel )
87 ::comphelper::disposeComponent( _rxModel );
114 Reference< XCloneable > xCloneSource( _rSource.first, UNO_QUERY );
115 Reference< XControlModel > xClone( xCloneSource->createClone(), UNO_QUERY );
139 throw IllegalArgumentException();
145 throw NoSuchElementException();
151 throw ElementExistException();
170 ,maContainerListeners( *this )
171 ,mbGroupsUpToDate( false )
179 , maContainerListeners( *this )
180 , mbGroupsUpToDate( false )
181 , m_nTabPageId( rModel.m_nTabPageId )
218 std::unique_lock aGuard(
m_aMutex );
220 EventObject aDisposeEvent;
221 aDisposeEvent.Source =
static_cast< XAggregation*
>(
static_cast< ::
cppu::OWeakAggObject*
>( this ) );
234 ::std::vector< Reference< XControlModel > > aChildModels(
maModels.size() );
238 aChildModels.begin(),
240 { return rUnoControlModelHolder.first; }
244 ::std::for_each( aChildModels.begin(), aChildModels.end(), DisposeControlModel() );
245 aChildModels.clear();
253 static Reference< XPropertySetInfo > xInfo( createPropertySetInfo(
getInfoHelper() ) );
285 if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlEditModel" )
287 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlFormattedFieldModel" )
289 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlFileControlModel" )
291 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlButtonModel" )
293 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlImageControlModel" )
295 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlRadioButtonModel" )
297 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlCheckBoxModel" )
299 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlFixedHyperlinkModel" )
301 else if ( aServiceSpecifier ==
"stardiv.vcl.controlmodel.FixedText" )
303 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlGroupBoxModel" )
305 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlListBoxModel" )
307 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlComboBoxModel" )
309 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlDateFieldModel" )
311 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlTimeFieldModel" )
313 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlNumericFieldModel" )
315 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlCurrencyFieldModel" )
317 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlPatternFieldModel" )
319 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlProgressBarModel" )
321 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlScrollBarModel" )
323 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlFixedLineModel" )
325 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoControlRoadmapModel" )
327 else if ( aServiceSpecifier ==
"com.sun.star.awt.tree.TreeControlModel" )
329 else if ( aServiceSpecifier ==
"com.sun.star.awt.grid.UnoControlGridModel" )
331 else if ( aServiceSpecifier ==
"com.sun.star.awt.tab.UnoControlTabPageContainerModel" )
333 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoMultiPageModel" )
335 else if ( aServiceSpecifier ==
"com.sun.star.awt.tab.UnoControlTabPageModel" )
337 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoPageModel" )
339 else if ( aServiceSpecifier ==
"com.sun.star.awt.UnoFrameModel" )
344 Reference< XInterface > xObject =
m_xContext->getServiceManager()->createInstanceWithContext(aServiceSpecifier,
m_xContext);
345 Reference< XServiceInfo > xSI( xObject, UNO_QUERY );
346 Reference< XCloneable > xCloneAccess( xSI, UNO_QUERY );
347 Reference< XAggregation > xAgg( xCloneAccess, UNO_QUERY );
350 if ( xSI->supportsService(
"com.sun.star.awt.UnoControlModel") )
362 Reference< XInterface > xNewModel =
static_cast<cppu::OWeakObject*
>(pNewModel.get());
368 const Reference< XInterface > xInstance(
createInstance( ServiceSpecifier ) );
369 const Reference< XInitialization > xInstanceInit( xInstance, UNO_QUERY );
370 ENSURE_OR_RETURN( xInstanceInit.is(),
"ControlModelContainerBase::createInstanceWithArguments: can't pass the arguments!", xInstance );
371 xInstanceInit->initialize( i_arguments );
377 return {
"com.sun.star.awt.UnoControlEditModel",
378 "com.sun.star.awt.UnoControlFormattedFieldModel",
379 "com.sun.star.awt.UnoControlFileControlModel",
380 "com.sun.star.awt.UnoControlButtonModel",
381 "com.sun.star.awt.UnoControlImageControlModel",
382 "com.sun.star.awt.UnoControlRadioButtonModel",
383 "com.sun.star.awt.UnoControlCheckBoxModel",
384 "com.sun.star.awt.UnoControlFixedTextModel",
385 "com.sun.star.awt.UnoControlGroupBoxModel",
386 "com.sun.star.awt.UnoControlListBoxModel",
387 "com.sun.star.awt.UnoControlComboBoxModel",
388 "com.sun.star.awt.UnoControlDateFieldModel",
389 "com.sun.star.awt.UnoControlTimeFieldModel",
390 "com.sun.star.awt.UnoControlNumericFieldModel",
391 "com.sun.star.awt.UnoControlCurrencyFieldModel",
392 "com.sun.star.awt.UnoControlPatternFieldModel",
393 "com.sun.star.awt.UnoControlProgressBarModel",
394 "com.sun.star.awt.UnoControlScrollBarModel",
395 "com.sun.star.awt.UnoControlFixedLineModel",
396 "com.sun.star.awt.UnoControlRoadmapModel",
397 "com.sun.star.awt.tree.TreeControlModel",
398 "com.sun.star.awt.grid.UnoControlGridModel",
399 "com.sun.star.awt.UnoControlFixedHyperlinkModel",
400 "com.sun.star.awt.tab.UnoControlTabPageContainerModel",
401 "com.sun.star.awt.tab.UnoControlTabPageModel",
402 "com.sun.star.awt.UnoMultiPageModel",
403 "com.sun.star.awt.UnoFrameModel"
435 Reference< XControlModel > xNewModel;
436 aElement >>= xNewModel;
437 if ( !xNewModel.is() )
441 if (
maModels.end() == aElementPos )
450 if ( xAllChildren.is() )
459 Reference< XControlModel > xReplaced( aElementPos->first );
461 aElementPos->first = xNewModel;
466 aEvent.Element = aElement;
467 aEvent.ReplacedElement <<= xReplaced;
480 if (
maModels.end() == aElementPos )
483 return Any( aElementPos->first );
488 Sequence< OUString > aNames(
maModels.size() );
494 { return rUnoControlModelHolder.second; }
509 Reference< XControlModel > xM;
514 Reference< beans::XPropertySet > xProps( xM, UNO_QUERY );
518 Reference< beans::XPropertySetInfo > xPropInfo = xProps->getPropertySetInfo();
523 Any aUrl = xProps->getPropertyValue( sImageSourceProperty );
525 OUString absoluteUrl =
528 aUrl <<= absoluteUrl;
530 xProps->setPropertyValue( sImageSourceProperty , aUrl );
536 if (
aName.isEmpty() || !xM.is() )
540 if (
maModels.end() != aElementPos )
552 if ( xAllChildren.is() )
560 aEvent.Element = aElement;
573 if (
maModels.end() == aElementPos )
582 if ( xAllChildren.is() )
587 aEvent.Element <<= aElementPos->first;
592 Reference< XPropertySet > xPS( aElementPos->first, UNO_QUERY );
621 SAL_WARN(
"toolkit",
"explicit grouping not supported" );
631 sal_Int16 nTabIndex = 1;
633 for (
auto const & control : _rControls )
636 UnoControlModelHolderVector::const_iterator aPos =
645 Reference< XPropertySet > xProps( aPos->first, UNO_QUERY );
646 Reference< XPropertySetInfo > xPSI;
648 xPSI = xProps->getPropertySetInfo();
666 ::std::vector< Reference< XControlModel > > aUnindexedModels;
669 for (
const auto& rModel :
maModels )
671 Reference< XControlModel >
xModel( rModel.first );
674 Reference< XPropertySet > xControlProps(
xModel, UNO_QUERY );
675 Reference< XPropertySetInfo > xPSI;
676 if ( xControlProps.is() )
677 xPSI = xControlProps->getPropertySetInfo( );
678 DBG_ASSERT( xPSI.is(),
"ControlModelContainerBase::getControlModels: invalid child model!" );
683 sal_Int32 nTabIndex = -1;
686 aSortedModels.emplace( nTabIndex,
xModel );
690 aUnindexedModels.push_back(
xModel );
696 Sequence< Reference< XControlModel > > aReturn( aUnindexedModels.size() + aSortedModels.size() );
698 aSortedModels.begin(), aSortedModels.end(),
699 ::std::copy( aUnindexedModels.begin(), aUnindexedModels.end(), aReturn.getArray() ),
700 [] (
const MapIndexToModel::value_type& entryIndexToModel )
701 { return entryIndexToModel.second; }
714 SAL_WARN(
"toolkit",
"grouping not supported" );
720 if ( rArguments.getLength() == 1 )
723 if ( !( rArguments[ 0 ] >>=
nPageId ))
724 throw lang::IllegalArgumentException();
737 bool bEnabled =
false;
780 enum GroupingMachineState
787 sal_Int32 lcl_getDialogStep(
const Reference< XControlModel >& _rxModel )
792 Reference< XPropertySet > xModelProps( _rxModel, UNO_QUERY );
795 catch (
const Exception&)
822 SAL_WARN(
"toolkit",
"invalid argument and I am not allowed to throw exception!" );
823 _rGroup.realloc( 0 );
828 AllGroups::const_iterator aGroupPos =
maGroups.begin() + _nGroup;
829 _rGroup.realloc( aGroupPos->size() );
831 ::std::copy( aGroupPos->begin(), aGroupPos->end(), _rGroup.getArray() );
833 _rName = OUString::number( _nGroup );
843 getGroup( _rName.toInt32( ), _rGroup, sDummyName );
868 aEvent.Changes.realloc( 1 );
869 aEvent.Changes.getArray()[ 0 ].Accessor <<= _rAccessor;
875 for (
const auto& rListener : aChangeListeners )
876 rListener->changesOccurred(
aEvent );
893 const Sequence< Reference< XControlModel > > aControlModels =
getControlModels();
896 maGroups.reserve( aControlModels.getLength() );
898 GroupingMachineState eState = eLookingForGroup;
899 Reference< XServiceInfo > xModelSI;
900 AllGroups::iterator aCurrentGroup =
maGroups.end();
901 sal_Int32 nCurrentGroupStep = -1;
904 for (
const Reference< XControlModel >& rControlModel : aControlModels )
907 xModelSI.set(rControlModel, css::uno::UNO_QUERY);
909 bool bIsRadioButton = xModelSI.is() && xModelSI->supportsService(
"com.sun.star.awt.UnoControlRadioButtonModel" );
913 case eLookingForGroup:
915 if ( !bIsRadioButton )
923 aCurrentGroup =
maGroups.begin() + nGroups;
925 aCurrentGroup->push_back( rControlModel );
928 nCurrentGroupStep = lcl_getDialogStep( rControlModel );
930 eState = eExpandingGroup;
935 case eExpandingGroup:
937 if ( !bIsRadioButton )
940 eState = eLookingForGroup;
945 const sal_Int32 nThisModelStep = lcl_getDialogStep( rControlModel );
946 if ( ( nThisModelStep == nCurrentGroupStep )
947 || ( 0 == nThisModelStep )
951 aCurrentGroup->push_back( rControlModel );
953 eState = eExpandingGroup;
965 aCurrentGroup =
maGroups.begin() + nGroups;
967 aCurrentGroup->push_back( rControlModel );
969 nCurrentGroupStep = nThisModelStep;
972 eState = eExpandingGroup;
986 DBG_ASSERT( _rEvent.PropertyName ==
"TabIndex",
987 "ControlModelContainerBase::propertyChange: not listening for this property!" );
991 UnoControlModelHolderVector::const_iterator aPos =
996 OSL_ENSURE(
maModels.end() != aPos,
"ControlModelContainerBase::propertyChange: don't know this model!" );
998 sAccessor = aPos->second;
1017 Reference< XPropertySet > xModelProps( _rxChildModel, UNO_QUERY );
1018 Reference< XPropertySetInfo > xPSI;
1019 if ( xModelProps.is() )
1020 xPSI = xModelProps->getPropertySetInfo();
1031 Reference< XPropertySet > xModelProps( _rxChildModel, UNO_QUERY );
1032 Reference< XPropertySetInfo > xPSI;
1033 if ( xModelProps.is() )
1034 xPSI = xModelProps->getPropertySetInfo();
1045 const Reference< util::XModifyListener >& rListener ) :
1047 m_bListening( false )
1058 Any a = ::cppu::queryInterface(
1060 static_cast< XModifyListener*
>(
this ),
1061 static_cast< XEventListener*
>(
this ));
1066 return OWeakObject::queryInterface( rType );
1071 OWeakObject::acquire();
1076 OWeakObject::release();
1080 const Reference< resource::XStringResourceResolver >& rResource )
1084 std::unique_lock aGuard(
m_aMutex );
1090 if ( bListening && bResourceSet )
1100 if ( !rResource.is() )
1105 rResource->addModifyListener(
this );
1108 std::scoped_lock aGuard(
m_aMutex );
1123 Reference< util::XModifyBroadcaster > xModifyBroadcaster;
1126 std::unique_lock aGuard(
m_aMutex );
1132 if ( !xModifyBroadcaster.is() )
1144 xModifyBroadcaster->removeModifyListener(
this );
1157 const lang::EventObject& aEvent )
1159 Reference< util::XModifyListener > xListener;
1162 std::unique_lock aGuard(
m_aMutex );
1167 if ( !xListener.is() )
1172 xListener->modified(
aEvent );
1185 const EventObject& Source )
1187 Reference< lang::XEventListener > xListener;
1188 Reference< resource::XStringResourceResolver > xResource;
1191 std::unique_lock aGuard(
m_aMutex );
1192 Reference< XInterface > xIfacRes(
m_xResource, UNO_QUERY );
1193 Reference< XInterface > xIfacList(
m_xListener, UNO_QUERY );
1197 if (
Source.Source == xIfacRes )
1208 if ( xListener.is() )
1212 xListener->disposing(
Source );
1223 else if (
Source.Source == xIfacList )
1236 if ( xResource.is() )
1240 xResource->removeModifyListener(
this );
1257 ,mbSizeModified(false)
1258 ,mbPosModified(false)
1260 maComponentInfos.nWidth = 280;
1261 maComponentInfos.nHeight = 400;
1277 Reference< XPropertySet > xP( rxModel, UNO_QUERY );
1281 Reference < XControl > xCtrl(
m_xContext->getServiceManager()->createInstanceWithContext(aDefCtrl,
m_xContext), UNO_QUERY );
1283 DBG_ASSERT( xCtrl.is(),
"ControlContainerBase::ImplInsertControl: could not create the control!" );
1286 xCtrl->setModel( rxModel );
1287 addControl( rName, xCtrl );
1298 Sequence< Reference< XControl > > aControls = getControls();
1302 removeControl( xCtrl );
1316 Reference< XPropertySet > xP( rxCtrl->getModel(), UNO_QUERY );
1318 sal_Int32 nX = 0, nY = 0, nWidth = 0, nHeight = 0;
1319 xP->getPropertyValue(
"PositionX") >>= nX;
1320 xP->getPropertyValue(
"PositionY") >>= nY;
1321 xP->getPropertyValue(
"Width") >>= nWidth;
1322 xP->getPropertyValue(
"Height") >>= nHeight;
1323 MapMode aMode( MapUnit::MapAppFont );
1331 aTmp =
::Size( nWidth, nHeight );
1333 nWidth = aTmp.
Width();
1338 Reference< XWindowPeer > xPeer = ImplGetCompatiblePeer();
1339 Reference< XDevice > xD( xPeer, UNO_QUERY );
1341 SimpleFontMetric aFM;
1345 if ( !aFD.StyleName.isEmpty() )
1347 Reference< XFont > xFont = xD->getFont( aFD );
1348 aFM = xFont->getFontMetric();
1352 Reference< XGraphics > xG = xD->createGraphics();
1353 aFM = xG->getFontMetric();
1356 sal_Int16 nH = aFM.Ascent + aFM.Descent;
1357 sal_Int16 nW = nH/2;
1368 Reference < XWindow > xW( rxCtrl, UNO_QUERY );
1369 xW->setPosSize( nX, nY, nWidth, nHeight, PosSize::POSSIZE );
1380 Reference< XEventListener > xListener =
mxListener;
1385 if ( xListener.is() )
1386 xListener->disposing( aEvt );
1391 const EventObject& Source )
1409 if ( getModel().is() )
1411 const Sequence< Reference< XControl > > aControls = getControls();
1413 for (
const Reference< XControl >& rCtrl : aControls )
1414 removeControl( rCtrl );
1419 Reference< XContainer > xC( getModel(), UNO_QUERY );
1421 xC->removeContainerListener(
this );
1423 Reference< XChangesNotifier > xChangeNotifier( getModel(), UNO_QUERY );
1424 if ( xChangeNotifier.is() )
1425 xChangeNotifier->removeChangesListener(
this );
1430 if ( getModel().is() )
1432 Reference< XNameAccess > xNA( getModel(), UNO_QUERY );
1435 const Sequence< OUString > aNames = xNA->getElementNames();
1437 Reference< XControlModel > xCtrlModel;
1438 for(
const OUString& rName : aNames )
1440 xNA->getByName( rName ) >>= xCtrlModel;
1445 Reference< XContainer > xC( getModel(), UNO_QUERY );
1447 xC->addContainerListener(
this );
1449 Reference< XChangesNotifier > xChangeNotifier( getModel(), UNO_QUERY );
1450 if ( xChangeNotifier.is() )
1451 xChangeNotifier->addChangesListener(
this );
1454 Reference< XTabControllerModel > xTabbing( getModel(), UNO_QUERY );
1455 if ( xTabbing.is() )
1471 Sequence< Reference< XControl > > xCtrls = getControls();
1472 for ( Reference< XControl >& rControl : asNonConstRange(xCtrls) )
1473 rControl->setDesignMode( bOn );
1486 Reference< XControlModel >
xModel;
1489 Event.Accessor >>=
aName;
1490 Event.Element >>=
xModel;
1510 Reference< XControlModel >
xModel;
1511 Event.Element >>=
xModel;
1531 Reference< XControlModel >
xModel;
1532 Event.ReplacedElement >>=
xModel;
1535 OSL_ENSURE(
xModel.is(),
"ControlContainerBase::elementReplaced: invalid ReplacedElement!" );
1549 Event.Accessor >>=
aName;
1550 Event.Element >>=
xModel;
1569 if( !isDesignMode() && !mbCreatingCompatiblePeer )
1571 auto pEvt = std::find_if(rEvents.begin(), rEvents.end(),
1572 [](
const PropertyChangeEvent& rEvt) {
1573 return rEvt.PropertyName ==
"PositionX"
1574 || rEvt.PropertyName ==
"PositionY"
1575 || rEvt.PropertyName ==
"Width"
1576 || rEvt.PropertyName ==
"Height";
1578 if (pEvt != rEvents.end())
1580 Reference< XControlModel >
xModel( pEvt->Source, UNO_QUERY );
1581 bool bOwnModel =
xModel.get() == getModel().get();
1587 Reference< XControl > xThis(
this);
1593 Sequence<Reference<XControl> > aControlSequence(getControls());
1600 UnoControlContainer::ImplModelPropertiesChanged( rEvents );
1608 if ( !_rxControl.is() )
1611 Reference< XMultiPropertySet > xProps( _rxControl->getModel(), UNO_QUERY );
1614 const Sequence< OUString > aNames {
1621 xProps->addPropertiesChangeListener( aNames,
this );
1630 if ( _rxControl.is() )
1632 Reference< XMultiPropertySet > xProps( _rxControl->getModel(), UNO_QUERY );
1634 xProps->removePropertiesChangeListener(
this );
1653 Any aNewStringResourceResolver;
1654 aNewStringResourceResolver <<= xStringResourceResolver;
1658 const Sequence< Reference< awt::XControl > >
aSeq = xContainer->getControls();
1659 for (
const Reference< XControl >& xControl :
aSeq )
1661 Reference< XPropertySet > xPropertySet;
1663 if ( xControl.is() )
1664 xPropertySet.set( xControl->getModel(), UNO_QUERY );
1666 if ( !xPropertySet.is() )
1671 Reference< resource::XStringResourceResolver > xCurrStringResourceResolver;
1672 Any aOldValue = xPropertySet->getPropertyValue(
aPropName );
1673 if ( ( aOldValue >>= xCurrStringResourceResolver )
1674 && ( xStringResourceResolver == xCurrStringResourceResolver )
1677 Reference< XMultiPropertySet > xMultiPropSet( xPropertySet, UNO_QUERY );
1678 Reference< XPropertiesChangeListener > xListener( xPropertySet, UNO_QUERY );
1679 xMultiPropSet->firePropertiesChangeEvent(
aPropNames, xListener );
1682 xPropertySet->setPropertyValue(
aPropName, aNewStringResourceResolver );
1688 uno::Reference< XControlContainer > xNestedContainer( xControl, uno::UNO_QUERY );
1689 if ( xNestedContainer.is() )
1697 Reference< resource::XStringResourceResolver > xStringResourceResolver;
1705 Reference< util::XModifyListener > rListener(
mxListener );
1709 if ( pResourceListener )
1716 Reference< resource::XStringResourceResolver > xStringResourceResolver;
1723 if ( !xStringResourceResolver.is() )
1729 Reference< XPropertySet > xPropertySet( getModel(), UNO_QUERY );
1730 if ( xPropertySet.is() )
1732 Reference< XMultiPropertySet > xMultiPropSet( xPropertySet, UNO_QUERY );
1733 Reference< XPropertiesChangeListener > xListener( xPropertySet, UNO_QUERY );
1734 xMultiPropSet->firePropertiesChangeEvent( lcl_getLanguageDependentProperties(), xListener );
1745 OUString baseLocation;
1748 rbase >>= baseLocation;
1751 OUString absoluteURL( url );
1752 if ( !url.isEmpty() )
1760 if ( protocol == INetProtocol::NotValid )
1762 OUString testAbsoluteURL;
1763 if ( ::osl::FileBase::E_None == ::osl::FileBase::getAbsoluteFileURL( baseLocation, url, testAbsoluteURL ) )
1764 absoluteURL = testAbsoluteURL;
1775 throw IllegalArgumentException();
1777 if ( !xAllChildren.is() )
1778 throw IllegalArgumentException();
1782 Reference< XControlModel > xOldModel( xAllChildren->getByName(
aName ), UNO_QUERY );
1783 xAllChildren->removeByName(
aName );
1785 Reference< XNameContainer > xChildContainer( xOldModel, UNO_QUERY );
1786 if ( xChildContainer.is() )
1788 Reference< XPropertySet > xProps( xChildContainer, UNO_QUERY );
1793 const Sequence< OUString > aChildNames = xChildContainer->getElementNames();
1794 for (
const auto& rName : aChildNames )
1801 Reference< XNameContainer > xChildContainer(
xTarget, UNO_QUERY );
1802 if ( xChildContainer.is() )
1806 Reference< XPropertySet > xProps( xChildContainer, UNO_QUERY );
1809 const Sequence< OUString > aChildNames = xChildContainer->getElementNames();
1810 for (
const auto& rName : aChildNames )
1812 Reference< XControlModel > xChildTarget( xChildContainer->getByName( rName ), UNO_QUERY );
Reference< XComponentContext > m_xContext
static OutputDevice * GetDefaultDevice()
void SAL_CALL elementInserted(const css::container::ContainerEvent &Event) override
void ImplInsertControl(css::uno::Reference< css::awt::XControlModel > const &rxModel, const OUString &rName)
void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &Toolkit, const css::uno::Reference< css::awt::XWindowPeer > &Parent) override
ControlContainerBase(const css::uno::Reference< css::uno::XComponentContext > &rxContext)
css::uno::Reference< css::awt::XTabController > mxTabController
void SAL_CALL elementRemoved(const css::container::ContainerEvent &Event) override
virtual void ImplSetPosSize(css::uno::Reference< css::awt::XControl > &rxCtrl)
void SAL_CALL elementReplaced(const css::container::ContainerEvent &Event) override
css::uno::Reference< css::util::XModifyListener > mxListener
void ImplStartListingForResourceEvents()
virtual void addingControl(const css::uno::Reference< css::awt::XControl > &_rxControl) override
void ImplRemoveControl(css::uno::Reference< css::awt::XControlModel > const &rxModel)
css::uno::Reference< css::uno::XComponentContext > m_xContext
virtual ~ControlContainerBase() override
void ImplUpdateResourceResolver()
void SAL_CALL dispose() override
virtual void SAL_CALL changesOccurred(const css::util::ChangesEvent &Event) override
virtual void ImplModelPropertiesChanged(const css::uno::Sequence< css::beans::PropertyChangeEvent > &rEvents) override
sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel > &Model) override
void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual void removingControl(const css::uno::Reference< css::awt::XControl > &_rxControl) override
void SAL_CALL setDesignMode(sal_Bool bOn) override
virtual void SAL_CALL addChangesListener(const css::uno::Reference< css::util::XChangesListener > &aListener) override
UnoControlModelHolderVector maModels
sal_Bool SAL_CALL hasByName(const OUString &aName) override
virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any > &rArguments) override
css::uno::Any SAL_CALL getByName(const OUString &aName) override
css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
virtual void SAL_CALL setToolTip(const OUString &_tooltip) override
virtual OUString SAL_CALL getTitle() override
void implUpdateGroupStructure()
ContainerListenerMultiplexer maContainerListeners
virtual void SAL_CALL setControlModels(const css::uno::Sequence< css::uno::Reference< css::awt::XControlModel > > &Controls) override
virtual void SAL_CALL setGroupControl(sal_Bool GroupControl) override
void updateUserFormChildren(const css::uno::Reference< css::container::XNameContainer > &xAllChildren, const OUString &aName, ChildOperation Operation, const css::uno::Reference< css::awt::XControlModel > &xTarget)
sal_Bool SAL_CALL hasElements() override
virtual sal_Bool SAL_CALL getEnabled() override
void SAL_CALL replaceByName(const OUString &aName, const css::uno::Any &aElement) override
void SAL_CALL insertByName(const OUString &aName, const css::uno::Any &aElement) override
void stopControlListening(const css::uno::Reference< css::awt::XControlModel > &_rxChildModel)
virtual void SAL_CALL getGroup(sal_Int32 nGroup, css::uno::Sequence< css::uno::Reference< css::awt::XControlModel > > &Group, OUString &Name) override
void Clone_Impl(ControlModelContainerBase &_rClone) const
void implNotifyTabModelChange(const OUString &_rAccessor)
void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
virtual ~ControlModelContainerBase() override
::cppu::IPropertyArrayHelper & getInfoHelper() override
void SAL_CALL removeByName(const OUString &Name) override
void SAL_CALL dispose() override
virtual sal_Int32 SAL_CALL getGroupCount() override
css::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames() override
virtual OUString SAL_CALL getToolTip() override
virtual void SAL_CALL setEnabled(sal_Bool _enabled) override
virtual void SAL_CALL removeChangesListener(const css::uno::Reference< css::util::XChangesListener > &aListener) override
css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments(const OUString &ServiceSpecifier, const css::uno::Sequence< css::uno::Any > &Arguments) override
virtual void SAL_CALL setGroup(const css::uno::Sequence< css::uno::Reference< css::awt::XControlModel > > &Group, const OUString &GroupName) override
virtual void SAL_CALL propertyChange(const css::beans::PropertyChangeEvent &evt) override
::comphelper::OInterfaceContainerHelper4< css::util::XChangesListener > maChangeListeners
css::uno::Sequence< OUString > SAL_CALL getElementNames() override
virtual css::uno::Sequence< css::uno::Reference< css::awt::XControlModel > > SAL_CALL getControlModels() override
css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance(const OUString &aServiceSpecifier) override
virtual void SAL_CALL getGroupByName(const OUString &Name, css::uno::Sequence< css::uno::Reference< css::awt::XControlModel > > &Group) override
virtual void SAL_CALL disposing(const css::lang::EventObject &evt) override
virtual void SAL_CALL setTitle(const OUString &_title) override
css::uno::Type SAL_CALL getElementType() override
css::uno::Any ImplGetDefaultValue(sal_uInt16 nPropId) const override
virtual void SAL_CALL setImageURL(const OUString &_imageurl) override
void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
::std::pair< css::uno::Reference< css::awt::XControlModel >, OUString > UnoControlModelHolder
virtual ::sal_Int16 SAL_CALL getTabPageID() override
rtl::Reference< UnoControlModel > Clone() const override
virtual OUString SAL_CALL getImageURL() override
::std::vector< UnoControlModelHolder > UnoControlModelHolderVector
void startControlListening(const css::uno::Reference< css::awt::XControlModel > &_rxChildModel)
ControlModelContainerBase(const css::uno::Reference< css::uno::XComponentContext > &rxContext)
virtual sal_Bool SAL_CALL getGroupControl() override
UnoControlModelHolderVector::iterator ImplFindElement(std::u16string_view rName)
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
bool removeSegment(sal_Int32 nIndex=LAST_SEGMENT, bool bIgnoreFinalSlash=true)
INetProtocol GetProtocol() const
allows to extend an arbitrary com.sun.star.awt::UnoControlModel with geometry information.
SAL_WARN_UNUSED_RESULT Point LogicToPixel(const Point &rLogicPt) const
ResourceListener(const css::uno::Reference< css::util::XModifyListener > &xListener)
virtual void SAL_CALL acquire() noexcept override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &aType) override
virtual void SAL_CALL release() noexcept override
css::uno::Reference< css::util::XModifyListener > m_xListener
virtual ~ResourceListener() override
void startListening(const css::uno::Reference< css::resource::XStringResourceResolver > &rResource)
css::uno::Reference< css::resource::XStringResourceResolver > m_xResource
virtual void SAL_CALL modified(const css::lang::EventObject &aEvent) override
constexpr tools::Long Height() const
constexpr tools::Long Width() const
static css::uno::Reference< css::awt::XControl > FindControl(css::uno::Sequence< css::uno::Reference< css::awt::XControl > > &rCtrls, const css::uno::Reference< css::awt::XControlModel > &rxCtrlModel)
void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &Toolkit, const css::uno::Reference< css::awt::XWindowPeer > &Parent) override
virtual void addingControl(const css::uno::Reference< css::awt::XControl > &_rxControl)
void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual void removingControl(const css::uno::Reference< css::awt::XControl > &_rxControl)
void SAL_CALL dispose() override
void SAL_CALL dispose() override
virtual css::uno::Any ImplGetDefaultValue(sal_uInt16 nPropId) const
sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel > &Model) override
void SAL_CALL setDesignMode(sal_Bool bOn) override
std::vector< css::uno::Reference< ListenerT > > getElements(std::unique_lock< std::mutex > &rGuard) const
sal_Int32 addInterface(std::unique_lock< std::mutex > &rGuard, const css::uno::Reference< ListenerT > &rxIFace)
void disposeAndClear(::std::unique_lock<::std::mutex > &rGuard, const css::lang::EventObject &rEvt)
sal_Int32 removeInterface(std::unique_lock< std::mutex > &rGuard, const css::uno::Reference< ListenerT > &rxIFace)
css::uno::Type const & get()
static void lcl_throwElementExistException()
static void lcl_ApplyResolverToNestedContainees(const Reference< resource::XStringResourceResolver > &xStringResourceResolver, const Reference< XControlContainer > &xContainer)
constexpr OUStringLiteral PROPERTY_RESOURCERESOLVER
static void lcl_throwNoSuchElementException()
OUString getPhysicalLocation(const css::uno::Any &rbase, const css::uno::Any &rUrl)
static void lcl_throwIllegalArgumentException()
static OUString getStepPropertyName()
static OUString getTabIndexPropertyName()
::std::multimap< sal_Int32, Reference< XControlModel > > MapIndexToModel
#define DBG_ASSERT(sCon, aError)
#define TOOLS_WARN_EXCEPTION(area, stream)
#define ENSURE_OR_RETURN(c, m, r)
#define DBG_UNHANDLED_EXCEPTION(...)
#define ENSURE_OR_RETURN_VOID(c, m)
Reference< XInterface > xTarget
Sequence< sal_Int8 > aSeq
#define SAL_WARN(area, stream)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
VBAHELPER_DLLPUBLIC bool setPropertyValue(css::uno::Sequence< css::beans::PropertyValue > &aProp, const OUString &aName, const css::uno::Any &aValue)
bool getPropertyValue(ValueType &rValue, css::uno::Reference< css::beans::XPropertySet > const &xPropSet, OUString const &propName)
const PropertyStruct aPropNames[]
const OUString & GetPropertyName(sal_uInt16 nPropertyId)
#define BASEPROPERTY_TITLE
#define BASEPROPERTY_IMAGEURL
#define BASEPROPERTY_ENABLED
#define BASEPROPERTY_DEFAULTCONTROL
#define BASEPROPERTY_FONTDESCRIPTOR
#define BASEPROPERTY_USERFORMCONTAINEES
#define BASEPROPERTY_DIALOGSOURCEURL
const char szServiceName_UnoControlDialog[]
CloneControlModel(ControlModelContainerBase::UnoControlModelHolderVector &_rTargetVector)
ControlModelContainerBase::UnoControlModelHolderVector & m_rTargetVector
void operator()(const ControlModelContainerBase::UnoControlModelHolder &_rSource)
Reference< XControlModel > m_xReference
CompareControlModel(const Reference< XControlModel > &_rxReference)
bool operator()(const ControlModelContainerBase::UnoControlModelHolder &_rCompare)
Reference< XModel > xModel