add hackery re. EditControls, FormattedField & ImageControls from msocximex

This commit is contained in:
Noel Power
2011-10-05 17:52:32 +01:00
parent 52d60647a0
commit 0468848224

View File

@@ -138,6 +138,7 @@ struct IdCntrlData
};
const sal_Int16 TOGGLEBUTTON = -1;
const sal_Int16 FIELDCONTROL = -2;
typedef std::map< sal_Int16, GUIDCNamePair > GUIDCNamePairMap;
class classIdToGUIDCNamePairMap
@@ -196,6 +197,9 @@ classIdToGUIDCNamePairMap::classIdToGUIDCNamePairMap()
{ FormComponentType::PATTERNFIELD,
{ AX_GUID_TEXTBOX, "TextBox"},
},
{ FormComponentType::FORMULAFIELD,
{ AX_GUID_TEXTBOX, "TextBox"},
},
{ FormComponentType::IMAGEBUTTON,
{ AX_GUID_COMMANDBUTTON, "CommandButton"},
},
@@ -501,14 +505,34 @@ OleFormCtrlExportHelper::OleFormCtrlExportHelper( const Reference< XComponentCo
PropertySet aPropSet( mxControlModel );
if ( aPropSet.getProperty( nClassId, PROP_ClassId ) )
{
// psuedo ripped from legacy msocximex
if ( nClassId == FormComponentType::COMMANDBUTTON )
/* psuedo ripped from legacy msocximex:
"There is a truly horrible thing with EditControls and FormattedField
Controls, they both pretend to have an EDITBOX ClassId for compability
reasons, at some stage in the future hopefully there will be a proper
FormulaField ClassId rather than this piggybacking two controls onto the
same ClassId, cmc."
*/
if ( nClassId == FormComponentType::TEXTFIELD)
{
if (xInfo->
supportsService( CREATE_OUSTRING( "com.sun.star.form.component.FormattedField" ) ) )
nClassId = FormComponentType::FORMULAFIELD;
}
else if ( nClassId == FormComponentType::COMMANDBUTTON )
{
bool bToggle = false;
aPropSet.getProperty( bToggle, PROP_Toggle );
if ( bToggle )
nClassId = TOGGLEBUTTON;
}
else if ( nClassId == FormComponentType::CONTROL )
{
Reference< XServiceInfo > xInfo( xCntrlModel,
UNO_QUERY);
if (xInfo->
supportsService(OUString( CREATE_OUSTRING( "com.sun.star.form.component.ImageControl" ) ) ) )
nClassId = FormComponentType::IMAGECONTROL;
}
GUIDCNamePairMap& cntrlMap = classIdToGUIDCNamePairMap::get();
GUIDCNamePairMap::iterator it = cntrlMap.find( nClassId );