Let TransformItems return comphelper::SequenceAsHashMap

Simplifies its usage in all places where the result needs to be
modified.

Change-Id: I37f8d99827e0f1cb2b6e4f4f7735e26fb87f6703
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195162
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
Mike Kaganski
2025-12-06 16:45:05 +01:00
parent 37941abfd6
commit e8d73d5307
19 changed files with 174 additions and 368 deletions
@@ -75,13 +75,13 @@ namespace frm
return;
SfxItemSet aEmptySet(getEditView()->GetEmptyItemSet());
Sequence< PropertyValue > aUnoStateDescription;
comphelper::SequenceAsHashMap aUnoStateDescription;
if ( _rState.getItem() )
{
aEmptySet.Put( *_rState.getItem() );
SfxSlotId nSlotId = aEmptySet.GetPool()->GetSlotId( _rState.getItem()->Which() );
TransformItems( nSlotId, aEmptySet, aUnoStateDescription );
_rEvent.State <<= aUnoStateDescription;
aUnoStateDescription = TransformItems(nSlotId, aEmptySet);
_rEvent.State <<= aUnoStateDescription.getAsConstPropertyValueList();
}
else
OAttributeDispatcher::fillFeatureEventFromAttributeState( _rEvent, _rState );
+4 -4
View File
@@ -22,6 +22,8 @@
#include <sal/config.h>
#include <sfx2/dllapi.h>
#include <comphelper/sequenceashashmap.hxx>
namespace com::sun::star::beans { struct NamedValue; }
namespace com::sun::star::beans { struct PropertyValue; }
namespace com::sun::star::uno { template <class E> class Sequence; }
@@ -35,10 +37,8 @@ SFX2_DLLPUBLIC void TransformParameters( sal_uInt16
SfxAllItemSet& aSet ,
const SfxSlot* pSlot = nullptr );
SFX2_DLLPUBLIC void TransformItems( sal_uInt16 nSlotId ,
const SfxItemSet& aSet ,
css::uno::Sequence< css::beans::PropertyValue >& seqArgs ,
const SfxSlot* pSlot = nullptr );
SFX2_DLLPUBLIC comphelper::SequenceAsHashMap
TransformItems(sal_uInt16 nSlotId, const SfxItemSet& aSet, const SfxSlot* pSlot = nullptr);
bool GetEncryptionData_Impl( const SfxItemSet* pSet, css::uno::Sequence< css::beans::NamedValue >& aEncryptionData );
+6 -28
View File
@@ -260,38 +260,16 @@ bool SdGRFFilter::Export()
{
rtl::Reference< SdGRFFilter_ImplInteractionHdl > xInteractionHandler;
beans::PropertyValues aArgs;
TransformItems( SID_SAVEASDOC, rSet, aArgs );
comphelper::SequenceAsHashMap aArgs = TransformItems(SID_SAVEASDOC, rSet);
static constexpr OUString sFilterName( u"FilterName"_ustr );
OUString sShortName( rGraphicFilter.GetExportFormatShortName( nFilter ) );
bool bFilterNameFound = false;
for ( auto& rArg : asNonConstRange(aArgs) )
aArgs[sFilterName] <<= sShortName;
if (auto xHdl = aArgs.getValue(u"InteractionHandler"_ustr).query<task::XInteractionHandler>())
{
OUString& rStr = rArg.Name;
if ( rStr == sFilterName )
{
bFilterNameFound = true;
rArg.Value <<= sShortName;
}
else if ( rStr == "InteractionHandler" )
{
uno::Reference< task::XInteractionHandler > xHdl;
if ( rArg.Value >>= xHdl )
{
xInteractionHandler = new SdGRFFilter_ImplInteractionHdl( xHdl );
rArg.Value <<= uno::Reference< task::XInteractionHandler >(xInteractionHandler);
}
}
}
if ( !bFilterNameFound )
{
sal_Int32 nCount = aArgs.getLength();
aArgs.realloc( nCount + 1 );
auto pArgs = aArgs.getArray();
pArgs[ nCount ].Name = sFilterName;
pArgs[ nCount ].Value <<= sShortName;
xInteractionHandler = new SdGRFFilter_ImplInteractionHdl(xHdl);
aArgs[u"InteractionHandler"_ustr] <<= uno::Reference<task::XInteractionHandler>(xInteractionHandler);
}
// take selection if needed
@@ -310,7 +288,7 @@ bool SdGRFFilter::Export()
}
}
xExporter->setSourceDocument( xSource );
bRet = xExporter->filter( aArgs );
bRet = xExporter->filter(aArgs.getAsConstPropertyValueList());
if ( !bRet && xInteractionHandler.is() )
SdGRFFilter::HandleGraphicFilterError(
xInteractionHandler->GetErrorCode(),
+7 -19
View File
@@ -401,14 +401,9 @@ ErrCodeMsg SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const OUStrin
std::unique_ptr<SfxItemSet> pNew = xDoc->GetMedium()->GetItemSet().Clone();
pNew->ClearItem( SID_PROGRESS_STATUSBAR_CONTROL );
pNew->ClearItem( SID_FILTER_NAME );
css::uno::Sequence< css::beans::PropertyValue > aArgs;
TransformItems( SID_OPENDOC, *pNew, aArgs );
sal_Int32 nLength = aArgs.getLength();
aArgs.realloc( nLength + 1 );
auto pArgs = aArgs.getArray();
pArgs[nLength].Name = "Title";
pArgs[nLength].Value <<= xDoc->GetTitle( SFX_TITLE_DETECT );
xModel->attachResource( OUString(), aArgs );
comphelper::SequenceAsHashMap aArgs = TransformItems(SID_OPENDOC, *pNew);
aArgs[u"Title"_ustr] <<= xDoc->GetTitle(SFX_TITLE_DETECT);
xModel->attachResource(OUString(), aArgs.getAsConstPropertyValueList());
}
return xDoc->GetErrorCode();
@@ -1072,18 +1067,11 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
}
// convert items to properties for framework API calls
Sequence < PropertyValue > aArgs;
TransformItems( SID_OPENDOC, *rReq.GetArgs(), aArgs );
comphelper::SequenceAsHashMap aArgs = TransformItems(SID_OPENDOC, *rReq.GetArgs());
// Any Referer (that was relevant in the above call to
// SvtSecurityOptions::isSecureMacroUri) is no longer relevant, assuming
// this "open" request is initiated directly by the user:
auto pArg = std::find_if(std::cbegin(aArgs), std::cend(aArgs),
[](const PropertyValue& rArg) { return rArg.Name == "Referer"; });
if (pArg != std::cend(aArgs))
{
auto nIndex = static_cast<sal_Int32>(std::distance(std::cbegin(aArgs), pArg));
comphelper::removeElementAt(aArgs, nIndex);
}
aArgs.erase(u"Referer"_ustr);
// TODO/LATER: either remove LinkItem or create an asynchronous process for it
if( bHidden || pLinkItem || rReq.IsSynchronCall() )
@@ -1094,7 +1082,7 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
try
{
xComp = ::comphelper::SynchronousDispatch::dispatch( xTargetFrame, aFileName, aTarget, aArgs );
xComp = comphelper::SynchronousDispatch::dispatch(xTargetFrame, aFileName, aTarget, aArgs.getAsConstPropertyValueList());
}
catch(const RuntimeException&)
{
@@ -1121,7 +1109,7 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
Reference < XDispatchProvider > xProv( xTargetFrame, UNO_QUERY );
Reference < XDispatch > xDisp = xProv.is() ? xProv->queryDispatch( aURL, aTarget, FrameSearchFlag::ALL ) : Reference < XDispatch >();
if ( xDisp.is() )
xDisp->dispatch( aURL, aArgs );
xDisp->dispatch(aURL, aArgs.getAsConstPropertyValueList());
}
if ( xController.is() )
+2 -2
View File
@@ -2021,7 +2021,7 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
Reference< frame::XDispatchHelper > xHelper( frame::DispatchHelper::create(xContext) );
Sequence < beans::PropertyValue > aSeq;
if ( rReq.GetArgs() )
TransformItems( rReq.GetSlot(), *rReq.GetArgs(), aSeq );
aSeq = TransformItems(rReq.GetSlot(), *rReq.GetArgs()).getAsConstPropertyValueList();
Any aResult = xHelper->executeDispatch( xProv, aCmd, OUString(), 0, aSeq );
frame::DispatchResultEvent aEvent;
bool bSuccess = (aResult >>= aEvent) &&
@@ -2041,7 +2041,7 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
Reference< frame::XDispatchHelper > xHelper( frame::DispatchHelper::create(xContext) );
Sequence < beans::PropertyValue > aSeq;
if ( rReq.GetArgs() )
TransformItems( rReq.GetSlot(), *rReq.GetArgs(), aSeq );
aSeq = TransformItems(rReq.GetSlot(), *rReq.GetArgs()).getAsConstPropertyValueList();
Any aResult = xHelper->executeDispatch( xProv, aCmd, OUString(), 0, aSeq );
frame::DispatchResultEvent aEvent;
bool bSuccess = (aResult >>= aEvent) &&
+74 -143
View File
@@ -907,13 +907,14 @@ void TransformParameters( sal_uInt16 nSlotId, const uno::Sequence<beans::Propert
#endif
}
void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<beans::PropertyValue>& rArgs, const SfxSlot* pSlot )
comphelper::SequenceAsHashMap TransformItems(sal_uInt16 nSlotId, const SfxItemSet& rSet,
const SfxSlot* pSlot)
{
if ( !pSlot )
pSlot = SFX_SLOTPOOL().GetSlot( nSlotId );
if ( !pSlot)
return;
return {};
if ( nSlotId == SID_OPENURL )
nSlotId = SID_OPENDOC;
@@ -1283,13 +1284,11 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
#endif
if ( !nProps )
return;
return {};
// convert every item into a property
uno::Sequence<beans::PropertyValue> aSequ(nProps);
beans::PropertyValue *pValue = aSequ.getArray();
comphelper::SequenceAsHashMap aSequ;
sal_Int32 nActProp=0;
if ( !pSlot->IsMode(SfxSlotMode::METHOD) )
{
// slot is a property
@@ -1301,8 +1300,7 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
sal_uInt16 nSubCount = pType->nAttribs;
if ( !nSubCount )
{
pValue[nActProp].Name = pSlot->aUnoName;
if ( !pItem->QueryValue( pValue[nActProp].Value ) )
if (!pItem->QueryValue(aSequ[pSlot->aUnoName]))
{
SAL_WARN( "sfx", "Item not convertible: " << nSlotId );
}
@@ -1317,10 +1315,8 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
nSubId |= CONVERT_TWIPS;
DBG_ASSERT(( pType->getAttrib(n-1).nAID ) <= 127, "Member ID out of range" );
pValue[nActProp].Name = pSlot->aUnoName +
"." +
pType->getAttrib(n-1).aName;
if ( !pItem->QueryValue( pValue[nActProp++].Value, nSubId ) )
if (!pItem->QueryValue(
aSequ[pSlot->aUnoName + "." + pType->getAttrib(n - 1).aName], nSubId))
{
SAL_WARN( "sfx", "Sub item " << pType->getAttrib(n-1).nAID
<< " not convertible in slot: " << nSlotId );
@@ -1329,8 +1325,7 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
}
}
rArgs = std::move(aSequ);
return;
return aSequ;
}
// slot is a method
@@ -1346,8 +1341,7 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
sal_uInt16 nSubCount = rArg.pType->nAttribs;
if ( !nSubCount )
{
pValue[nActProp].Name = rArg.aName;
if ( !pItem->QueryValue( pValue[nActProp++].Value ) )
if (!pItem->QueryValue(aSequ[rArg.aName]))
{
SAL_WARN( "sfx", "Item not convertible: " << rArg.nSlotId );
}
@@ -1362,10 +1356,8 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
nSubId |= CONVERT_TWIPS;
DBG_ASSERT((rArg.pType->getAttrib(n-1).nAID) <= 127, "Member ID out of range" );
pValue[nActProp].Name = rArg.aName +
"." +
rArg.pType->getAttrib(n-1).aName ;
if ( !pItem->QueryValue( pValue[nActProp++].Value, nSubId ) )
if (!pItem->QueryValue(
aSequ[rArg.aName + "." + rArg.pType->getAttrib(n - 1).aName], nSubId))
{
SAL_WARN( "sfx", "Sub item "
<< rArg.pType->getAttrib(n-1).nAID
@@ -1384,319 +1376,258 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
{
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_COMPONENTDATA, false) )
{
pValue[nActProp].Name = sComponentData;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sComponentData] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_COMPONENTCONTEXT, false) )
{
pValue[nActProp].Name = sComponentContext;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sComponentContext] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_PROGRESS_STATUSBAR_CONTROL, false) )
{
pValue[nActProp].Name = sStatusInd;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sStatusInd] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_INTERACTIONHANDLER, false) )
{
pValue[nActProp].Name = sInteractionHdl;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sInteractionHdl] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_VIEW_DATA, false) )
{
pValue[nActProp].Name = sViewData;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sViewData] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_FILTER_DATA, false) )
{
pValue[nActProp].Name = sFilterData;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sFilterData] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_DOCUMENT, false) )
{
pValue[nActProp].Name = sModel;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sModel] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_CONTENT, false) )
{
pValue[nActProp].Name = sUCBContent;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sUCBContent] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_INPUTSTREAM, false) )
{
pValue[nActProp].Name = sInputStream;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sInputStream] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_STREAM, false) )
{
pValue[nActProp].Name = sStream;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sStream] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_OUTPUTSTREAM, false) )
{
pValue[nActProp].Name = sOutputStream;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sOutputStream] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_POSTDATA, false) )
{
pValue[nActProp].Name = sPostData;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sPostData] = pItem->GetValue();
}
if ( const SfxPoolItem *pItem = nullptr; SfxItemState::SET == rSet.GetItemState( SID_FILLFRAME, false, &pItem) )
{
pValue[nActProp].Name = sFrame;
if ( auto pUsrAnyItem = dynamic_cast< const SfxUnoAnyItem *>( pItem ) )
{
OSL_FAIL( "TransformItems: transporting an XFrame via an SfxUnoAnyItem is not deprecated!" );
pValue[nActProp++].Value = pUsrAnyItem->GetValue();
aSequ[sFrame] = pUsrAnyItem->GetValue();
}
else if ( auto pUnoFrameItem = dynamic_cast< const SfxUnoFrameItem *>( pItem ) )
pValue[nActProp++].Value <<= pUnoFrameItem->GetFrame();
aSequ[sFrame] <<= pUnoFrameItem->GetFrame();
else
OSL_FAIL( "TransformItems: invalid item type for SID_FILLFRAME!" );
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_TEMPLATE, false) )
{
pValue[nActProp].Name = sAsTemplate;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sAsTemplate] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_OPEN_NEW_VIEW, false) )
{
pValue[nActProp].Name = sOpenNewView;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sOpenNewView] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_FAIL_ON_WARNING, false) )
{
pValue[nActProp].Name = sFailOnWarning;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sFailOnWarning] <<= pItem->GetValue();
}
if ( const SfxUInt16Item *pItem = rSet.GetItemIfSet( SID_VIEW_ID, false) )
{
pValue[nActProp].Name = sViewId;
pValue[nActProp++].Value <<= static_cast<sal_Int16>(pItem->GetValue());
aSequ[sViewId] <<= static_cast<sal_Int16>(pItem->GetValue());
}
if ( const SfxUInt16Item *pItem = rSet.GetItemIfSet( SID_PLUGIN_MODE, false) )
{
pValue[nActProp].Name = sPluginMode;
pValue[nActProp++].Value <<= static_cast<sal_Int16>(pItem->GetValue());
aSequ[sPluginMode] <<= static_cast<sal_Int16>(pItem->GetValue());
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_DOC_READONLY, false) )
{
pValue[nActProp].Name = sReadOnly;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sReadOnly] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_DDE_RECONNECT_ONLOAD, false) )
{
pValue[nActProp].Name = sDdeReconnect;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sDdeReconnect] <<= pItem->GetValue();
}
if (const SfxUInt16Item* pItem = rSet.GetItemIfSet(SID_DOC_STARTPRESENTATION, false))
{
pValue[nActProp].Name = sStartPresentation;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sStartPresentation] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_SELECTION, false) )
{
pValue[nActProp].Name = sSelectionOnly;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sSelectionOnly] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_HIDDEN, false) )
{
pValue[nActProp].Name = sHidden;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sHidden] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_MINIMIZED, false) )
{
pValue[nActProp].Name = sMinimized;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sMinimized] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_SILENT, false) )
{
pValue[nActProp].Name = sSilent;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sSilent] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_PREVIEW, false) )
{
pValue[nActProp].Name = sPreview;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sPreview] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_VIEWONLY, false) )
{
pValue[nActProp].Name = sViewOnly;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sViewOnly] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_EDITDOC, false) )
{
pValue[nActProp].Name = sDontEdit;
pValue[nActProp++].Value <<= !pItem->GetValue();
aSequ[sDontEdit] <<= !pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_FILE_DIALOG, false) )
{
pValue[nActProp].Name = sUseSystemDialog;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sUseSystemDialog] <<= pItem->GetValue();
}
if ( const SfxStringListItem *pItem = rSet.GetItemIfSet( SID_DENY_LIST, false) )
{
pValue[nActProp].Name = sDenyList;
css::uno::Sequence< OUString > aList;
pItem->GetStringList( aList );
pValue[nActProp++].Value <<= aList ;
aSequ[sDenyList] <<= aList;
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_TARGETNAME, false) )
{
pValue[nActProp].Name = sFrameName;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sFrameName] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_DOC_SALVAGE, false) )
{
pValue[nActProp].Name = sSalvagedFile;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sSalvagedFile] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_PATH, false) )
{
pValue[nActProp].Name = sFolderName;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sFolderName] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_CONTENTTYPE, false) )
{
pValue[nActProp].Name = sMediaType;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sMediaType] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_TEMPLATE_NAME, false) )
{
pValue[nActProp].Name = sTemplateName;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sTemplateName] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_TEMPLATE_REGIONNAME, false) )
{
pValue[nActProp].Name = sTemplateRegionName;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sTemplateRegionName] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_JUMPMARK, false) )
{
pValue[nActProp].Name = sJumpMark;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sJumpMark] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_CHARSET, false) )
{
pValue[nActProp].Name = sCharacterSet;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sCharacterSet] <<= pItem->GetValue();
}
if ( const SfxUInt16Item *pItem = rSet.GetItemIfSet( SID_MACROEXECMODE, false) )
{
pValue[nActProp].Name = sMacroExecMode;
pValue[nActProp++].Value <<= static_cast<sal_Int16>(pItem->GetValue());
aSequ[sMacroExecMode] <<= static_cast<sal_Int16>(pItem->GetValue());
}
if ( const SfxUInt16Item *pItem = rSet.GetItemIfSet( SID_UPDATEDOCMODE, false) )
{
pValue[nActProp].Name = sUpdateDocMode;
pValue[nActProp++].Value <<= static_cast<sal_Int16>(pItem->GetValue());
aSequ[sUpdateDocMode] <<= static_cast<sal_Int16>(pItem->GetValue());
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_REPAIRPACKAGE, false) )
{
pValue[nActProp].Name = sRepairPackage;
pValue[nActProp++].Value <<= pItem->GetValue() ;
aSequ[sRepairPackage] <<= pItem->GetValue() ;
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_DOCINFO_TITLE, false) )
{
pValue[nActProp].Name = sDocumentTitle;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sDocumentTitle] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_DOC_BASEURL, false) )
{
pValue[nActProp].Name = sDocumentBaseURL;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sDocumentBaseURL] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_DOC_HIERARCHICALNAME, false) )
{
pValue[nActProp].Name = sHierarchicalDocumentName;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sHierarchicalDocumentName] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_COPY_STREAM_IF_POSSIBLE, false) )
{
pValue[nActProp].Name = sCopyStreamIfPossible;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sCopyStreamIfPossible] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_NOAUTOSAVE, false) )
{
pValue[nActProp].Name = sNoAutoSave;
pValue[nActProp++].Value <<= pItem->GetValue() ;
aSequ[sNoAutoSave] <<= pItem->GetValue() ;
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_MODIFYPASSWORDINFO, false) )
{
pValue[nActProp].Name = sModifyPasswordInfo;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sModifyPasswordInfo] = pItem->GetValue();
}
if ( const SfxUnoAnyItem *pItem = rSet.GetItemIfSet( SID_ENCRYPTIONDATA, false) )
{
pValue[nActProp].Name = sEncryptionData;
pValue[nActProp++].Value = pItem->GetValue();
aSequ[sEncryptionData] = pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_SUGGESTEDSAVEASDIR, false) )
{
pValue[nActProp].Name = sSuggestedSaveAsDir;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sSuggestedSaveAsDir] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_SUGGESTEDSAVEASNAME, false) )
{
pValue[nActProp].Name = sSuggestedSaveAsName;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sSuggestedSaveAsName] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_EXPORTDIRECTORY, false) )
{
pValue[nActProp].Name = sExportDirectory;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sExportDirectory] <<= pItem->GetValue();
}
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_DOC_SERVICE, false) )
{
pValue[nActProp].Name = sDocumentService;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sDocumentService] <<= pItem->GetValue();
}
if (const SfxStringItem *pItem = rSet.GetItemIfSet(SID_FILTER_PROVIDER))
{
pValue[nActProp].Name = sFilterProvider;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sFilterProvider] <<= pItem->GetValue();
}
if (const SfxStringItem *pItem = rSet.GetItemIfSet(SID_CONVERT_IMAGES))
{
pValue[nActProp].Name = sImageFilter;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sImageFilter] <<= pItem->GetValue();
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_LOCK_CONTENT_EXTRACTION, false) )
{
pValue[nActProp].Name = sLockContentExtraction;
pValue[nActProp++].Value <<= pItem->GetValue() ;
aSequ[sLockContentExtraction] <<= pItem->GetValue() ;
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_LOCK_EXPORT, false) )
{
pValue[nActProp].Name = sLockExport;
pValue[nActProp++].Value <<= pItem->GetValue() ;
aSequ[sLockExport] <<= pItem->GetValue() ;
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_LOCK_PRINT, false) )
{
pValue[nActProp].Name = sLockPrint;
pValue[nActProp++].Value <<= pItem->GetValue() ;
aSequ[sLockPrint] <<= pItem->GetValue() ;
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_LOCK_SAVE, false) )
{
pValue[nActProp].Name = sLockSave;
pValue[nActProp++].Value <<= pItem->GetValue() ;
aSequ[sLockSave] <<= pItem->GetValue() ;
}
if ( const SfxBoolItem *pItem = rSet.GetItemIfSet( SID_LOCK_EDITDOC, false) )
{
pValue[nActProp].Name = sLockEditDoc;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sLockEditDoc] <<= pItem->GetValue();
}
if (const SfxBoolItem *pItem = rSet.GetItemIfSet(SID_REPLACEABLE, false))
{
pValue[nActProp].Name = sReplaceable;
pValue[nActProp++].Value <<= pItem->GetValue();
aSequ[sReplaceable] <<= pItem->GetValue();
}
}
rArgs = std::move(aSequ);
return aSequ;
}
void SAL_CALL FilterOptionsContinuation::setFilterOptions(
+2 -2
View File
@@ -598,7 +598,7 @@ void SfxRequest::Done_Impl
uno::Sequence < beans::PropertyValue > aSeq;
if ( bItemStateSet && SfxItemState::SET == eState )
TransformItems( pImpl->pSlot->GetSlotId(), *pSet, aSeq, pImpl->pSlot );
aSeq = TransformItems(pImpl->pSlot->GetSlotId(), *pSet, pImpl->pSlot).getAsConstPropertyValueList();
pImpl->Record( aSeq );
}
@@ -608,7 +608,7 @@ void SfxRequest::Done_Impl
{
uno::Sequence < beans::PropertyValue > aSeq;
if ( pSet )
TransformItems( pImpl->pSlot->GetSlotId(), *pSet, aSeq, pImpl->pSlot );
aSeq = TransformItems(pImpl->pSlot->GetSlotId(), *pSet, pImpl->pSlot).getAsConstPropertyValueList();
pImpl->Record( aSeq );
}
+1 -1
View File
@@ -498,7 +498,7 @@ sal_Int16 SfxStateCache::Dispatch( const SfxItemSet* pSet, bool bForceSynchron )
{
uno::Sequence < beans::PropertyValue > aArgs;
if (pSet)
TransformItems( nId, *pSet, aArgs );
aArgs = TransformItems(nId, *pSet).getAsConstPropertyValueList();
eRet = mxDispatch->Dispatch( aArgs, bForceSynchron );
}
+2 -6
View File
@@ -2931,9 +2931,7 @@ void SfxMedium::GetLockingStream_Impl()
return;
// open the original document
uno::Sequence< beans::PropertyValue > xProps;
TransformItems( SID_OPENDOC, GetItemSet(), xProps );
utl::MediaDescriptor aMedium( xProps );
utl::MediaDescriptor aMedium(TransformItems(SID_OPENDOC, GetItemSet()).getAsConstPropertyValueList());
aMedium.addInputStreamOwnLock();
@@ -2984,7 +2982,6 @@ void SfxMedium::GetMedium_Impl()
}
else
{
uno::Sequence < beans::PropertyValue > xProps;
OUString aFileName;
if (!pImpl->m_aName.isEmpty())
{
@@ -3018,8 +3015,7 @@ void SfxMedium::GetMedium_Impl()
}
else
{
TransformItems( SID_OPENDOC, GetItemSet(), xProps );
utl::MediaDescriptor aMedium( xProps );
utl::MediaDescriptor aMedium(TransformItems(SID_OPENDOC, GetItemSet()).getAsConstPropertyValueList());
if ( pImpl->m_xLockingStream.is() && !bFromTempFile )
{
+1 -3
View File
@@ -1132,9 +1132,7 @@ bool ModelData_Impl::OutputFileDialog( sal_Int16 nStoreMode,
m_bSignWithDefaultSignature = (pSignWithDefaultKey && pSignWithDefaultKey->GetValue());
pDialogParams->ClearItem( SID_GPGSIGN );
uno::Sequence< beans::PropertyValue > aPropsFromDialog;
TransformItems( nSlotID, *pDialogParams, aPropsFromDialog );
GetMediaDescr() << aPropsFromDialog;
GetMediaDescr() = TransformItems(nSlotID, *pDialogParams);
// get the path from the dialog
INetURLObject aURL( pFileDlg->GetPath() );
+2 -3
View File
@@ -1125,9 +1125,8 @@ void SfxObjectShell::InitOwnModel_Impl()
SfxItemSet& rSet = GetMedium()->GetItemSet();
if ( !GetMedium()->IsReadOnly() )
rSet.ClearItem( SID_INPUTSTREAM );
uno::Sequence< beans::PropertyValue > aArgs;
TransformItems( SID_OPENDOC, rSet, aArgs );
xModel->attachResource( GetMedium()->GetOrigURL(), aArgs );
comphelper::SequenceAsHashMap aArgs = TransformItems(SID_OPENDOC, rSet);
xModel->attachResource(GetMedium()->GetOrigURL(), aArgs.getAsConstPropertyValueList());
impl_addToModelCollection(xModel);
}
+1 -3
View File
@@ -1117,9 +1117,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
uno::Sequence< beans::PropertyValue > aDispatchArgs;
if ( rReq.GetArgs() )
TransformItems( nId,
*rReq.GetArgs(),
aDispatchArgs );
aDispatchArgs = TransformItems(nId, *rReq.GetArgs()).getAsConstPropertyValueList();
bool bForceSaveAs = nId == SID_SAVEDOC && IsReadOnlyMedium();
+15 -55
View File
@@ -508,14 +508,9 @@ bool SfxObjectShell::DoInitNew()
if ( xModel.is() )
{
SfxItemSet &rSet = GetMedium()->GetItemSet();
uno::Sequence< beans::PropertyValue > aArgs;
TransformItems( SID_OPENDOC, rSet, aArgs );
sal_Int32 nLength = aArgs.getLength();
aArgs.realloc( nLength + 1 );
auto pArgs = aArgs.getArray();
pArgs[nLength].Name = "Title";
pArgs[nLength].Value <<= GetTitle( SFX_TITLE_DETECT );
xModel->attachResource( OUString(), aArgs );
comphelper::SequenceAsHashMap aArgs = TransformItems(SID_OPENDOC, rSet);
aArgs[u"Title"_ustr] <<= GetTitle(SFX_TITLE_DETECT);
xModel->attachResource(OUString(), aArgs.getAsConstPropertyValueList());
if (!comphelper::IsFuzzing())
impl_addToModelCollection(xModel);
}
@@ -1240,8 +1235,7 @@ ErrCode SfxObjectShell::HandleFilter( SfxMedium* pMedium, SfxObjectShell const *
if ( rSet.GetItemState( SID_FILTER_NAME ) < SfxItemState::SET )
rSet.Put( SfxStringItem( SID_FILTER_NAME, pFilter->GetName() ) );
Sequence< PropertyValue > rProperties;
TransformItems( SID_OPENDOC, rSet, rProperties );
Sequence<PropertyValue> rProperties = TransformItems(SID_OPENDOC, rSet).getAsConstPropertyValueList();
rtl::Reference<RequestFilterOptions> pFORequest = new RequestFilterOptions( pDoc->GetModel(), rProperties );
rHandler->handle( pFORequest );
@@ -2480,11 +2474,10 @@ bool SfxObjectShell::DoSaveCompleted( SfxMedium* pNewMed, bool bRegisterRecent )
if ( xModel.is() )
{
const OUString& aURL {pNewMed->GetOrigURL()};
uno::Sequence< beans::PropertyValue > aMediaDescr;
TransformItems( SID_OPENDOC, pNewMed->GetItemSet(), aMediaDescr );
comphelper::SequenceAsHashMap aMediaDescr = TransformItems(SID_OPENDOC, pNewMed->GetItemSet());
try
{
xModel->attachResource( aURL, aMediaDescr );
xModel->attachResource(aURL, aMediaDescr.getAsConstPropertyValueList());
}
catch( uno::Exception& )
{}
@@ -2639,56 +2632,25 @@ bool SfxObjectShell::ImportFrom(SfxMedium& rMedium,
uno::Reference< document::XImporter > xImporter( xLoader, uno::UNO_QUERY_THROW );
xImporter->setTargetDocument( xComp );
uno::Sequence < beans::PropertyValue > lDescriptor;
rMedium.GetItemSet().Put( SfxStringItem( SID_FILE_NAME, rMedium.GetName() ) );
TransformItems( SID_OPENDOC, rMedium.GetItemSet(), lDescriptor );
comphelper::SequenceAsHashMap aArgs = TransformItems(SID_OPENDOC, rMedium.GetItemSet());
css::uno::Sequence < css::beans::PropertyValue > aArgs ( lDescriptor.getLength() );
css::beans::PropertyValue * pNewValue = aArgs.getArray();
const css::beans::PropertyValue * pOldValue = lDescriptor.getConstArray();
static constexpr OUString sInputStream ( u"InputStream"_ustr );
bool bHasInputStream = false;
bool bHasBaseURL = false;
sal_Int32 nEnd = lDescriptor.getLength();
if (!aArgs.contains(sInputStream))
aArgs[sInputStream] <<= css::uno::Reference < css::io::XInputStream > ( new utl::OSeekableInputStreamWrapper ( *rMedium.GetInStream() ) );
for ( sal_Int32 i = 0; i < nEnd; i++ )
{
pNewValue[i] = pOldValue[i];
if ( pOldValue [i].Name == sInputStream )
bHasInputStream = true;
else if ( pOldValue[i].Name == "DocumentBaseURL" )
bHasBaseURL = true;
}
if ( !bHasInputStream )
{
aArgs.realloc ( ++nEnd );
auto pArgs = aArgs.getArray();
pArgs[nEnd-1].Name = sInputStream;
pArgs[nEnd-1].Value <<= css::uno::Reference < css::io::XInputStream > ( new utl::OSeekableInputStreamWrapper ( *rMedium.GetInStream() ) );
}
if ( !bHasBaseURL )
{
aArgs.realloc ( ++nEnd );
auto pArgs = aArgs.getArray();
pArgs[nEnd-1].Name = "DocumentBaseURL";
pArgs[nEnd-1].Value <<= rMedium.GetBaseURL();
}
if (!aArgs.contains(u"DocumentBaseURL"_ustr))
aArgs[u"DocumentBaseURL"_ustr] <<= rMedium.GetBaseURL();
if (xInsertPosition.is()) {
aArgs.realloc( nEnd += 2 );
auto pArgs = aArgs.getArray();
pArgs[nEnd-2].Name = "InsertMode";
pArgs[nEnd-2].Value <<= true;
pArgs[nEnd-1].Name = "TextInsertModeRange";
pArgs[nEnd-1].Value <<= xInsertPosition;
aArgs[u"InsertMode"_ustr] <<= true;
aArgs[u"TextInsertModeRange"_ustr] <<= xInsertPosition;
}
// #i119492# During loading, some OLE objects like chart will be set
// modified flag, so needs to reset the flag to false after loading
bool bRtn = xLoader->filter(aArgs);
bool bRtn = xLoader->filter(aArgs.getAsConstPropertyValueList());
const uno::Sequence < OUString > aNames = GetEmbeddedObjectContainer().GetObjectNames();
for ( const auto& rName : aNames )
{
@@ -2820,12 +2782,10 @@ bool SfxObjectShell::ExportTo( SfxMedium& rMedium )
uno::Reference< document::XFilter > xFilter( xExporter, uno::UNO_QUERY_THROW );
xExporter->setSourceDocument( xComp );
css::uno::Sequence < css::beans::PropertyValue > aOldArgs;
SfxItemSet& rItems = rMedium.GetItemSet();
TransformItems( SID_SAVEASDOC, rItems, aOldArgs );
// put in the REAL file name, and copy all PropertyValues
comphelper::SequenceAsHashMap aNewArgs(aOldArgs);
comphelper::SequenceAsHashMap aNewArgs = TransformItems(SID_SAVEASDOC, rItems);
comphelper::SequenceAsHashMap aMediumArgs(rMedium.GetArgs());
if (aNewArgs.contains(u"FileName"_ustr))
+2 -3
View File
@@ -1048,8 +1048,7 @@ SfxObjectShell* SfxObjectShell::CreateObject( const OUString& rServiceName, SfxO
Reference<lang::XComponent> SfxObjectShell::CreateAndLoadComponent( const SfxItemSet& rSet )
{
uno::Sequence < beans::PropertyValue > aProps;
TransformItems( SID_OPENDOC, rSet, aProps );
comphelper::SequenceAsHashMap aProps = TransformItems(SID_OPENDOC, rSet);
const SfxStringItem* pFileNameItem = rSet.GetItem<SfxStringItem>(SID_FILE_NAME, false);
const SfxStringItem* pTargetItem = rSet.GetItem<SfxStringItem>(SID_TARGETNAME, false);
OUString aURL;
@@ -1065,7 +1064,7 @@ Reference<lang::XComponent> SfxObjectShell::CreateAndLoadComponent( const SfxIte
Reference <lang::XComponent> xComp;
try
{
xComp = xLoader->loadComponentFromURL(aURL, aTarget, 0, aProps);
xComp = xLoader->loadComponentFromURL(aURL, aTarget, 0, aProps.getAsConstPropertyValueList());
}
catch (const uno::Exception&)
{
+16 -35
View File
@@ -1006,19 +1006,15 @@ Sequence< beans::PropertyValue > SAL_CALL SfxBaseModel::getArgs2(const Sequence<
if ( m_pData->m_pObjectShell.is() )
{
Sequence< beans::PropertyValue > seqArgsNew;
Sequence< beans::PropertyValue > seqArgsOld;
SfxAllItemSet aSet( m_pData->m_pObjectShell->GetPool() );
// we need to know which properties are supported by the transformer
// hopefully it is a temporary solution, I guess nonconvertable properties
// should not be supported so then there will be only ItemSet from medium
TransformItems( SID_OPENDOC, m_pData->m_pObjectShell->GetMedium()->GetItemSet(), seqArgsNew );
comphelper::SequenceAsHashMap seqArgsNew = TransformItems(SID_OPENDOC, m_pData->m_pObjectShell->GetMedium()->GetItemSet());
TransformParameters( SID_OPENDOC, m_pData->m_seqArguments, aSet );
TransformItems( SID_OPENDOC, aSet, seqArgsOld );
sal_Int32 nNewLength = seqArgsNew.getLength();
comphelper::SequenceAsHashMap seqArgsOld = TransformItems(SID_OPENDOC, aSet);
if (requestedArgs.empty() || requestedArgs.count(u"WinExtent"))
{
@@ -1036,20 +1032,14 @@ Sequence< beans::PropertyValue > SAL_CALL SfxBaseModel::getArgs2(const Sequence<
o3tl::narrowing<int>(aTmpRect.IsHeightEmpty() ? aTmpRect.Top() : aTmpRect.Bottom())
};
seqArgsNew.realloc( ++nNewLength );
auto pseqArgsNew = seqArgsNew.getArray();
pseqArgsNew[ nNewLength - 1 ].Name = "WinExtent";
pseqArgsNew[ nNewLength - 1 ].Value <<= aRectSeq;
seqArgsNew[u"WinExtent"_ustr] <<= aRectSeq;
}
if (requestedArgs.empty() || requestedArgs.count(u"PreusedFilterName"))
{
if ( !m_pData->m_aPreusedFilterName.isEmpty() )
{
seqArgsNew.realloc( ++nNewLength );
auto pseqArgsNew = seqArgsNew.getArray();
pseqArgsNew[ nNewLength - 1 ].Name = "PreusedFilterName";
pseqArgsNew[ nNewLength - 1 ].Value <<= m_pData->m_aPreusedFilterName;
seqArgsNew[u"PreusedFilterName"_ustr] <<= m_pData->m_aPreusedFilterName;
}
}
@@ -1068,10 +1058,7 @@ Sequence< beans::PropertyValue > SAL_CALL SfxBaseModel::getArgs2(const Sequence<
o3tl::narrowing<int>(aBorder.Bottom())
};
seqArgsNew.realloc( ++nNewLength );
auto pseqArgsNew = seqArgsNew.getArray();
pseqArgsNew[ nNewLength - 1 ].Name = "DocumentBorder";
pseqArgsNew[ nNewLength - 1 ].Value <<= aBorderSeq;
seqArgsNew[u"DocumentBorder"_ustr] <<= aBorderSeq;
}
}
@@ -1083,15 +1070,12 @@ Sequence< beans::PropertyValue > SAL_CALL SfxBaseModel::getArgs2(const Sequence<
for (const auto& rOrg : m_pData->m_seqArguments)
{
auto bNew = std::none_of(std::cbegin(seqArgsOld), std::cend(seqArgsOld),
[&rOrg](const beans::PropertyValue& rOld){ return rOld.Name == rOrg.Name; });
if ( bNew )
if (!seqArgsOld.contains(rOrg.Name))
{
// the entity with this name should be new for seqArgsNew
// since it is not supported by transformer
seqArgsNew.realloc( ++nNewLength );
seqArgsNew.getArray()[ nNewLength - 1 ] = rOrg;
seqArgsNew[rOrg.Name] = rOrg.Value;
aFinalCache.realloc( ++nFinalLength );
aFinalCache.getArray()[ nFinalLength - 1 ] = rOrg;
@@ -1101,7 +1085,7 @@ Sequence< beans::PropertyValue > SAL_CALL SfxBaseModel::getArgs2(const Sequence<
m_pData->m_seqArguments = std::move(aFinalCache);
}
return seqArgsNew;
return seqArgsNew.getAsConstPropertyValueList();
}
return m_pData->m_seqArguments;
@@ -1788,9 +1772,8 @@ void SAL_CALL SfxBaseModel::storeAsURL( const OUString& rURL
impl_store(rURL, rArgs, false);
}
Sequence< beans::PropertyValue > aSequence ;
TransformItems( SID_OPENDOC, m_pData->m_pObjectShell->GetMedium()->GetItemSet(), aSequence );
attachResource( rURL, aSequence );
comphelper::SequenceAsHashMap aSequence = TransformItems(SID_OPENDOC, m_pData->m_pObjectShell->GetMedium()->GetItemSet());
attachResource(rURL, aSequence.getAsConstPropertyValueList());
loadCmisProperties( );
@@ -2672,9 +2655,8 @@ void SAL_CALL SfxBaseModel::checkOut( )
m_pData->m_pObjectShell->GetMedium( )->SetName( sURL );
m_pData->m_pObjectShell->GetMedium( )->GetMedium_Impl( );
m_pData->m_xDocumentProperties->setTitle( getTitle( ) );
Sequence< beans::PropertyValue > aSequence ;
TransformItems( SID_OPENDOC, pMedium->GetItemSet(), aSequence );
attachResource( sURL, aSequence );
comphelper::SequenceAsHashMap aSequence = TransformItems(SID_OPENDOC, pMedium->GetItemSet());
attachResource(sURL, aSequence.getAsConstPropertyValueList());
// Reload the CMIS properties
loadCmisProperties( );
@@ -2738,9 +2720,8 @@ void SAL_CALL SfxBaseModel::checkIn( sal_Bool bIsMajor, const OUString& rMessage
if ( sName != sNewName )
{
m_pData->m_xDocumentProperties->setTitle( getTitle( ) );
Sequence< beans::PropertyValue > aSequence ;
TransformItems( SID_OPENDOC, pMedium->GetItemSet(), aSequence );
attachResource( sNewName, aSequence );
comphelper::SequenceAsHashMap aSequence = TransformItems(SID_OPENDOC, pMedium->GetItemSet());
attachResource(sNewName, aSequence.getAsConstPropertyValueList());
// Reload the CMIS properties
loadCmisProperties( );
@@ -2982,8 +2963,8 @@ void SfxBaseModel::Notify( SfxBroadcaster& rBC ,
{
m_pData->m_sURL = m_pData->m_pObjectShell->GetMedium()->GetName();
Sequence< beans::PropertyValue > aArgs;
TransformItems( SID_SAVEASDOC, m_pData->m_pObjectShell->GetMedium()->GetItemSet(), aArgs );
Sequence<beans::PropertyValue> aArgs
= TransformItems(SID_SAVEASDOC, m_pData->m_pObjectShell->GetMedium()->GetItemSet()).getAsConstPropertyValueList();
addTitle_Impl( aArgs, m_pData->m_pObjectShell->GetTitle() );
attachResource( m_pData->m_pObjectShell->GetMedium()->GetName(), aArgs );
}
+5 -10
View File
@@ -237,16 +237,11 @@ SfxFrame* SfxFrame::CreateHidden( SfxObjectShell const & rDoc, vcl::Window& rWin
xFrame->activate();
// create load arguments
Sequence< PropertyValue > aLoadArgs;
TransformItems( SID_OPENDOC, rDoc.GetMedium()->GetItemSet(), aLoadArgs );
::comphelper::NamedValueCollection aArgs( aLoadArgs );
aArgs.put( u"Model"_ustr, rDoc.GetModel() );
aArgs.put( u"Hidden"_ustr, true );
comphelper::SequenceAsHashMap aArgs = TransformItems(SID_OPENDOC, rDoc.GetMedium()->GetItemSet());
aArgs[u"Model"_ustr] <<= rDoc.GetModel();
aArgs[u"Hidden"_ustr] <<= true;
if ( nViewId != SFX_INTERFACE_NONE )
aArgs.put( u"ViewId"_ustr, static_cast<sal_uInt16>(nViewId) );
aLoadArgs = aArgs.getPropertyValues();
aArgs[u"ViewId"_ustr] <<= static_cast<sal_uInt16>(nViewId);
// load the doc into that frame
Reference< XComponentLoader > xLoader( xFrame, UNO_QUERY_THROW );
@@ -254,7 +249,7 @@ SfxFrame* SfxFrame::CreateHidden( SfxObjectShell const & rDoc, vcl::Window& rWin
u"private:object"_ustr,
u"_self"_ustr,
0,
aLoadArgs
aArgs.getAsConstPropertyValueList()
);
for ( pFrame = SfxFrame::GetFirst();
+5 -5
View File
@@ -804,12 +804,11 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
if ( xOldObj->IsModifyPasswordEntered() )
xNewObj->SetModifyPasswordEntered();
uno::Sequence < beans::PropertyValue > aLoadArgs;
TransformItems( SID_OPENDOC, *pNewSet, aLoadArgs );
comphelper::SequenceAsHashMap aLoadArgs = TransformItems(SID_OPENDOC, *pNewSet);
try
{
uno::Reference < frame::XLoadable > xLoad( xNewObj->GetModel(), uno::UNO_QUERY );
xLoad->load( aLoadArgs );
xLoad->load(aLoadArgs.getAsConstPropertyValueList());
}
catch ( uno::Exception& )
{
@@ -853,7 +852,7 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
// the Reload and Silent items were only temporary, remove them
xNewObj->GetMedium()->GetItemSet().ClearItem( SID_RELOAD );
xNewObj->GetMedium()->GetItemSet().ClearItem( SID_SILENT );
TransformItems( SID_OPENDOC, xNewObj->GetMedium()->GetItemSet(), aLoadArgs );
aLoadArgs = TransformItems(SID_OPENDOC, xNewObj->GetMedium()->GetItemSet());
UpdateDocument_Impl();
@@ -872,9 +871,10 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
try
{
const auto aArgs = aLoadArgs.getAsConstPropertyValueList();
for (auto const& viewFrame : aViewFrames)
{
LoadViewIntoFrame_Impl( *xNewObj, viewFrame.first, aLoadArgs, viewFrame.second, false );
LoadViewIntoFrame_Impl(*xNewObj, viewFrame.first, aArgs, viewFrame.second, false);
}
aViewFrames.clear();
}
+22 -37
View File
@@ -696,7 +696,7 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
if ( pSelectItem && rReq.GetArgs()->Count() == 1 )
bIsAPI = false;
uno::Sequence < beans::PropertyValue > aProps;
comphelper::SequenceAsHashMap aProps;
if ( bIsAPI )
{
// supported properties:
@@ -711,42 +711,29 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
// bool Collate
// bool Silent
// the TransformItems function overwrite aProps
TransformItems( nId, *rReq.GetArgs(), aProps, GetInterface()->GetSlot(nId) );
aProps = TransformItems(nId, *rReq.GetArgs(), GetInterface()->GetSlot(nId));
for ( auto& rProp : asNonConstRange(aProps) )
if (aProps.contains(u"Copies"_ustr))
{
if ( rProp.Name == "Copies" )
{
rProp.Name = "CopyCount";
}
else if ( rProp.Name == "RangeText" )
{
rProp.Name = "Pages";
}
else if ( rProp.Name == "Asynchron" )
{
rProp.Name = "Wait";
bool bAsynchron = false;
rProp.Value >>= bAsynchron;
rProp.Value <<= !bAsynchron;
}
else if ( rProp.Name == "Silent" )
{
rProp.Name = "MonitorVisible";
bool bPrintSilent = false;
rProp.Value >>= bPrintSilent;
rProp.Value <<= !bPrintSilent;
}
aProps[u"CopyCount"_ustr] = aProps[u"Copies"_ustr];
}
if (aProps.contains(u"RangeText"_ustr))
{
aProps[u"Pages"_ustr] = aProps[u"RangeText"_ustr];
}
if (aProps.contains(u"Asynchron"_ustr))
{
aProps[u"Wait"_ustr] <<= !aProps.getUnpackedValueOrDefault(u"Asynchron"_ustr, false);
}
if (aProps.contains(u"Silent"_ustr))
{
aProps[u"MonitorVisible"_ustr] <<= !aProps.getUnpackedValueOrDefault(u"Silent"_ustr, false);
}
}
// we will add the "PrintSelectionOnly" or "HideHelpButton" properties
// we have to increase the capacity of aProps
sal_Int32 nLen = aProps.getLength();
aProps.realloc( nLen + 1 );
auto pProps = aProps.getArray();
// HACK: writer sets the SID_SELECTION item when printing directly and expects
// to get only the selection document in that case (see getSelectionObject)
// however it also reacts to the PrintContent property. We need this distinction here, too,
@@ -754,17 +741,15 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
// it would be better if writer handled this internally
if( nId == SID_PRINTDOCDIRECT )
{
pProps[nLen].Name = "PrintSelectionOnly";
pProps[nLen].Value <<= bSelection;
aProps[u"PrintSelectionOnly"_ustr] <<= bSelection;
}
else // if nId == SID_PRINTDOC ; nothing to do with the previous HACK
{
// should the printer selection and properties dialogue display an help button
pProps[nLen].Name = "HideHelpButton";
pProps[nLen].Value <<= bPrintOnHelp;
aProps[u"HideHelpButton"_ustr] <<= bPrintOnHelp;
}
ExecPrint( aProps, bIsAPI, (nId == SID_PRINTDOCDIRECT) );
ExecPrint(aProps.getAsConstPropertyValueList(), bIsAPI, (nId == SID_PRINTDOCDIRECT));
// FIXME: Recording
rReq.Done();
+4 -6
View File
@@ -668,11 +668,10 @@ namespace svx
if ( bFound )
{
Sequence< PropertyValue > aArgs;
// temporarily put the modified item into a "clean" set,
// and let TransformItems calc the respective UNO parameters
xPureItems->Put( *pModifiedItem );
TransformItems( nSlotForItemSet, *xPureItems, aArgs );
Sequence<PropertyValue> aArgs = TransformItems(nSlotForItemSet, *xPureItems).getAsConstPropertyValueList();
xPureItems->ClearItem( nWhich );
if ( ( nSlotForItemSet == SID_ATTR_PARA_HANGPUNCTUATION )
@@ -850,9 +849,8 @@ namespace svx
}
}
Sequence< PropertyValue > aArguments;
TransformItems( nSlot, aToggled, aArguments );
aFeaturePos->second->dispatch( aArguments );
comphelper::SequenceAsHashMap aArguments = TransformItems(nSlot, aToggled);
aFeaturePos->second->dispatch(aArguments.getAsConstPropertyValueList());
}
break;
@@ -868,7 +866,7 @@ namespace svx
const SfxItemSet* pArgs = _rReq.GetArgs();
Sequence< PropertyValue > aArgs;
if ( pArgs )
TransformItems( nSlot, *pArgs, aArgs );
aArgs = TransformItems(nSlot, *pArgs).getAsConstPropertyValueList();
aFeaturePos->second->dispatch( aArgs );
}
break;