20#include <com/sun/star/uno/Reference.h>
21#include <com/sun/star/beans/PropertyValue.hpp>
22#include <com/sun/star/beans/NamedValue.hpp>
23#include <com/sun/star/frame/FrameSearchFlag.hpp>
24#include <com/sun/star/frame/XDispatchProvider.hpp>
25#include <com/sun/star/frame/XFrame.hpp>
26#include <com/sun/star/frame/Desktop.hpp>
27#include <com/sun/star/util/URL.hpp>
28#include <com/sun/star/util/URLTransformer.hpp>
29#include <com/sun/star/util/XURLTransformer.hpp>
30#include <com/sun/star/system/SystemShellExecuteException.hpp>
31#include <com/sun/star/document/XTypeDetection.hpp>
32#include <com/sun/star/document/MacroExecMode.hpp>
33#include <com/sun/star/document/UpdateDocMode.hpp>
34#include <com/sun/star/task/ErrorCodeRequest.hpp>
35#include <com/sun/star/task/InteractionHandler.hpp>
36#include <com/sun/star/beans/XPropertySet.hpp>
37#include <com/sun/star/embed/ElementModes.hpp>
38#include <com/sun/star/embed/XStorage.hpp>
39#include <com/sun/star/container/XNameAccess.hpp>
40#include <com/sun/star/packages/WrongPasswordException.hpp>
41#include <com/sun/star/uno/Sequence.h>
42#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
43#include <com/sun/star/lang/XMultiServiceFactory.hpp>
44#include <rtl/ustring.hxx>
80#include <sfx2/strings.hrc>
86#include <sfx2/sfxsids.hrc>
90#include <officecfg/Office/ProtocolHandler.hxx>
91#include <officecfg/Office/Security.hxx>
101using namespace ::
cppu;
102using namespace ::
sfx2;
105 const OUString &rLongName,
118 explicit SfxDocPasswordVerifier(
const Reference< embed::XStorage >& rxStorage ) :
121 virtual ::comphelper::DocPasswordVerifierResult
122 verifyPassword(
const OUString& rPassword, uno::Sequence< beans::NamedValue >& o_rEncryptionData )
override;
123 virtual ::comphelper::DocPasswordVerifierResult
136 return verifyEncryptionData( o_rEncryptionData );
152 embed::ElementModes::READ | embed::ElementModes::NOCREATE );
155 eResult = ::comphelper::DocPasswordVerifierResult::OK;
157 catch(
const packages::WrongPasswordException& )
159 eResult = ::comphelper::DocPasswordVerifierResult::WrongPassword;
161 catch(
const uno::Exception& )
165 eResult = ::comphelper::DocPasswordVerifierResult::WrongPassword;
189 uno::Reference< embed::XStorage > xStorage = pFile->
GetStorage();
192 uno::Reference< beans::XPropertySet > xStorageProps( xStorage, uno::UNO_QUERY );
193 if ( xStorageProps.is() )
195 bool bIsEncrypted =
false;
196 uno::Sequence< uno::Sequence< beans::NamedValue > > aGpgProperties;
198 xStorageProps->getPropertyValue(
"HasEncryptedEntries")
200 xStorageProps->getPropertyValue(
"EncryptionGpGProperties")
202 }
catch( uno::Exception& )
211 css::uno::Reference<css::awt::XWindow> xWin(pDoc ? pDoc->
GetDialogParent(pFile) :
nullptr);
213 xWin->setVisible(
true);
219 if( xInteractionHandler.is() )
225 aPassword = pPasswordItem->
GetValue();
227 uno::Sequence< beans::NamedValue > aEncryptionData;
229 if ( pEncryptionDataItem )
230 pEncryptionDataItem->
GetValue() >>= aEncryptionData;
235 if ( !aEncryptionData.hasElements() && aGpgProperties.hasElements() )
246 aEncryptionData, std::initializer_list<beans::NamedValue>{
247 {
"ForSalvage", css::uno::Any(
true) } });
250 SfxDocPasswordVerifier aVerifier( xStorage );
257 if ( aEncryptionData.hasElements() )
266 catch( uno::Exception& )
280 OSL_FAIL(
"A storage must implement XPropertySet interface!" );
292 std::shared_ptr<const SfxFilter> pFilter;
293 SfxMedium aMedium( rFileName, ( StreamMode::READ | StreamMode::SHARE_DENYNONE ) );
310 if( !pFilter || !pFilter->IsAllowedAsTemplate() )
315 if ( pFilter->GetFilterFlags() & SfxFilterFlags::STARONEFILTER )
324 { &
aName, &aHidden, &aReferer, &aFlags } );
348 SfxMedium *pMedium =
new SfxMedium( rFileName, StreamMode::STD_READ, pFilter, std::move(pSet) );
349 if(!xDoc->
DoLoad(pMedium))
363 if( !xTempStorage.is() )
364 throw uno::RuntimeException();
366 xDoc->
GetStorage()->copyToStorage( xTempStorage );
369 throw uno::RuntimeException();
371 catch( uno::Exception& )
387 css::uno::Reference< css::frame::XModel >
xModel = xDoc->
GetModel();
391 pNew->ClearItem( SID_PROGRESS_STATUSBAR_CONTROL );
392 pNew->ClearItem( SID_FILTER_NAME );
393 css::uno::Sequence< css::beans::PropertyValue > aArgs;
395 sal_Int32
nLength = aArgs.getLength();
397 auto pArgs = aArgs.getArray();
400 xModel->attachResource( OUString(), aArgs );
412 aFactName = pFactoryItem->
GetValue();
423 if ( pDefaultPathItem )
426 if ( pDefaultNameItem )
449 OUString aTemplateRegion, aTemplateName, aTemplateFileName;
450 bool bDirect =
false;
452 if ( !pTemplNameItem && !pTemplFileNameItem )
454 bool bNewWin =
false;
467 int nRet = aTemplDlg.
run();
479 if (bNewWin && pTopWin)
491 if ( pTemplNameItem )
492 aTemplateName = pTemplNameItem->
GetValue();
495 if ( pTemplRegionNameItem )
496 aTemplateRegion = pTemplRegionNameItem->GetValue();
499 if ( pTemplFileNameItem )
501 aTemplateFileName = pTemplFileNameItem->GetValue();
510 if( aTemplateFileName.isEmpty() )
511 aTmpFac.
GetFull( aTemplateRegion, aTemplateName, aTemplateFileName );
513 if( aTemplateFileName.isEmpty() )
533 if ( !aTemplateFileName.isEmpty() )
538 SfxStringItem aTemplName( SID_TEMPLATE_NAME, aTemplateName );
539 SfxStringItem aTemplRegionName( SID_TEMPLATE_REGIONNAME, aTemplateRegion );
541 {&
aName, &aTarget, &aReferer, &aTemplName, &aTemplRegionName});
547 { &
aName, &aTarget, &aReferer } );
564bool lcl_isFilterNativelySupported(
const SfxFilter& rFilter)
571 return aName.startsWith(
"MS Excel");
578 OUString aDocService;
581 aDocService = pDocSrvItem->
GetValue();
583 sal_uInt16 nSID = rReq.
GetSlot();
591 pFileNameItem =
nullptr;
598 if ( nSlotId == SID_OPENDOC )
599 pFileNameItem =
nullptr;
604 if ( !pFileNameItem )
607 std::vector<OUString> aURLList;
609 std::optional<SfxAllItemSet> pSet;
612 if ( pFolderNameItem )
613 aPath = pFolderNameItem->
GetValue();
614 else if ( nSID == SID_OPENTEMPLATE )
617 if (!aPath.isEmpty())
618 aPath = aPath.copy(aPath.lastIndexOf(
';')+1);
623 if ( pSystemDialogItem )
627 if ( pRemoteDialogItem && pRemoteDialogItem->
GetValue())
630 sal_Int16 nDialogType = ui::dialogs::TemplateDescription::FILEOPEN_READONLY_VERSION;
633 if (pSignPDFItem && pSignPDFItem->
GetValue())
636 nDialogType = ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE;
642 if ( pStandardDirItem )
645 css::uno::Sequence< OUString > aDenyList;
654 eDialogFlags, aURLList,
655 aFilter, pSet, &aPath, nDialog,
sStandardDir, aDenyList);
664 if ( !aFilter.isEmpty() )
670 if(!aURLList.empty())
672 if ( nSID == SID_OPENTEMPLATE )
680 uno::Reference<task::XInteractionHandler> xHandler(pHandler);
681 uno::Reference<task::XInteractionHandler> xWrappedHandler;
685 if (pInteractionItem)
687 pInteractionItem->
GetValue() >>= xWrappedHandler;
690 if (xWrappedHandler.is())
691 pHandler->setHandler(xWrappedHandler);
693 pHandler->useDefaultUUIHandler();
699 pHandler->addInteractionRule(aRule);
701 if (!aDocService.isEmpty())
707 for (
auto const& url : aURLList)
720 if ( pHandler->getInteractionInfo(aInteraction, &aRule) )
726 css::task::ErrorCodeRequest aRequest;
727 if (aRule.
m_xRequest->getRequest() >>= aRequest)
743 bool bHyperlinkUsed =
false;
745 if ( SID_OPENURL == nSID )
750 else if ( nSID == SID_OPENTEMPLATE )
761 else if ( nSID == SID_OPENHYPERLINK )
764 bHyperlinkUsed =
true;
771 if ( pHyperLinkUsedItem )
772 bHyperlinkUsed = pHyperLinkUsedItem->
GetValue();
778 assert(pFileName &&
"SID_FILE_NAME is required");
779 OUString aFileName = pFileName->
GetValue();
784 aReferer = pRefererItem->
GetValue();
787 if ( pFileFlagsItem )
789 const OUString aFileFlags = pFileFlagsItem->
GetValue().toAsciiUpperCase();
790 if ( aFileFlags.indexOf(
'T') >= 0 )
796 if ( aFileFlags.indexOf(
'H') >= 0 )
802 if ( aFileFlags.indexOf(
'R') >= 0 )
808 if ( aFileFlags.indexOf(
'B') >= 0 )
818 if ( bHyperlinkUsed && !aFileName.isEmpty() && aFileName[0] !=
'#' )
820 uno::Reference<document::XTypeDetection> xTypeDetection(
823 if ( xTypeDetection.is() )
827 aURL.Complete = aFileName;
828 Reference< util::XURLTransformer > xTrans( util::URLTransformer::create( ::comphelper::getProcessComponentContext() ) );
829 xTrans->parseStrict(
aURL );
832 auto eMode = officecfg::Office::Security::Hyperlinks::Open::get();
840 VclMessageType::Warning, VclButtonsType::Ok,
SfxResId(STR_SECURITY_WARNING_NO_HYPERLINKS)));
841 xSecurityWarningBox->set_title(
SfxResId(RID_SECURITY_WARNING_TITLE));
842 xSecurityWarningBox->run();
846 std::shared_ptr<const SfxFilter> pFilter{};
852 if (aINetProtocol != INetProtocol::NotValid) {
853 const OUString aTypeName { xTypeDetection->queryTypeByURL(
aURL.Main ) };
858 if (!pFilter || !lcl_isFilterNativelySupported(*pFilter))
861 if ( aINetProtocol == INetProtocol::Mailto )
867 else if ( aINetProtocol == INetProtocol::Ftp ||
868 aINetProtocol == INetProtocol::Http ||
869 aINetProtocol == INetProtocol::Https )
878 std::vector < OUString > aProtocols {
"private:*",
"vnd.sun.star.*" };
881 Reference < XNameAccess > xAccess(officecfg::Office::ProtocolHandler::HandlerSet::get());
882 const Sequence < OUString > aNames = xAccess->getElementNames();
883 for (
const auto& rName : aNames )
885 Reference < XPropertySet > xSet;
886 Any aRet = xAccess->getByName( rName );
891 aRet = xSet->getPropertyValue(
"Protocols");
892 Sequence < OUString > aTmp;
895 aProtocols.insert(aProtocols.end(),std::cbegin(aTmp),std::cend(aTmp));
900 for (
const OUString & rProtocol : aProtocols)
912 bool bLoadInternal =
false;
918 catch ( css::system::SystemShellExecuteException& )
922 bLoadInternal =
true;
924 if ( !bLoadInternal )
946 Reference< XFrame > xTargetFrame;
950 pTargetFrame = pFrameItem->
GetFrame();
956 xTargetFrame = pUnoFrameItem->
GetFrame();
959 if (!pTargetFrame && !xTargetFrame.is())
962 pTargetFrame = &pViewFrame->GetFrame();
966 std::unique_ptr<SfxLinkItem> pLinkItem;
970 pLinkItem.reset(pParamLinkItem->Clone());
975 bool bHidden =
false;
984 if (!bHidden && ( !pPreviewItem || !pPreviewItem->
GetValue() ) )
990 if (!pInteractionItem)
992 Reference < task::XInteractionHandler2 > xHdl = task::InteractionHandler::createWithParent( ::comphelper::getProcessComponentContext(),
nullptr );
997 if (!pDocTemplateItem)
1009 if ( pNewViewItem && pNewViewItem->
GetValue() )
1010 aTarget =
"_blank" ;
1022 if ( !xTargetFrame.is() )
1030 xTargetFrame = Desktop::create(::comphelper::getProcessComponentContext());
1037 if( aFileName.startsWith(
"#") )
1048 Sequence < PropertyValue > aArgs;
1053 auto pArg = std::find_if(std::cbegin(aArgs), std::cend(aArgs),
1054 [](
const PropertyValue& rArg) {
return rArg.Name ==
"Referer"; });
1055 if (pArg != std::cend(aArgs))
1057 auto nIndex =
static_cast<sal_Int32
>(std::distance(std::cbegin(aArgs), pArg));
1066 Reference < XComponent > xComp;
1076 catch(
const css::uno::Exception&)
1080 Reference < XModel >
xModel( xComp, UNO_QUERY );
1090 aURL.Complete = aFileName;
1091 Reference< util::XURLTransformer > xTrans( util::URLTransformer::create( ::comphelper::getProcessComponentContext() ) );
1092 xTrans->parseStrict(
aURL );
1094 Reference < XDispatchProvider > xProv( xTargetFrame, UNO_QUERY );
1095 Reference < XDispatch > xDisp = xProv.is() ? xProv->queryDispatch(
aURL, aTarget, FrameSearchFlag::ALL ) : Reference < XDispatch >();
1097 xDisp->dispatch(
aURL, aArgs );
1108 pCntrFrame = &pShell->GetViewFrame().GetFrame();
1116 DBG_ASSERT( pSh,
"Controller without ObjectShell ?!" );
1121 pSh->RestoreNoDelete();
1130 pLinkItem->GetValue().Call(pRetValue);
HRESULT createInstance(REFIID iid, Ifc **ppIfc)
SfxApplication * SfxGetpApp()
ErrCode CheckPasswd_Impl(SfxObjectShell *pDoc, SfxMedium *pFile)
void SetTemplate_Impl(std::u16string_view rFileName, const OUString &rLongName, SfxObjectShell *pDoc)
void TransformItems(sal_uInt16 nSlotId, const SfxItemSet &rSet, uno::Sequence< beans::PropertyValue > &rArgs, const SfxSlot *pSlot)
constexpr OUStringLiteral sStandardDir
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, const ILibreOfficeKitNotifier *pNotifier=nullptr)
const OUString & GetValue() const
ErrCode IgnoreWarning() const
static DialogMask HandleError(ErrCode nId, weld::Window *pParent=nullptr, DialogMask nMask=DialogMask::MAX)
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
OUString PathToFileName() const
INetProtocol GetProtocol() const
SfxFilterMatcher & GetFilterMatcher()
SAL_DLLPRIVATE void NewDocExec_Impl(SfxRequest &)
SAL_DLLPRIVATE SfxDispatcher * GetDispatcher_Impl()
SAL_DLLPRIVATE void NewDocDirectExec_Impl(SfxRequest &)
SAL_DLLPRIVATE void SignPDFExec_Impl(SfxRequest &)
SAL_DLLPRIVATE void OpenRemoteExec_Impl(SfxRequest &)
ErrCode LoadTemplate(SfxObjectShellLock &xDoc, const OUString &rFileName, std::unique_ptr< SfxItemSet > pArgs)
SAL_DLLPRIVATE void OpenDocExec_Impl(SfxRequest &)
static SAL_DLLPRIVATE void NewDocDirectState_Impl(SfxItemSet &)
weld::Window * GetTopWindow() const
const SfxPoolItem * Execute(sal_uInt16 nSlot, SfxCallMode nCall=SfxCallMode::SLOT, const SfxPoolItem **pArgs=nullptr, sal_uInt16 nModi=0, const SfxPoolItem **pInternalArgs=nullptr)
Method to execute a <SfxSlot>s over the Slot-Id.
const SfxPoolItem * ExecuteList(sal_uInt16 nSlot, SfxCallMode nCall, std::initializer_list< SfxPoolItem const * > args, std::initializer_list< SfxPoolItem const * > internalargs=std::initializer_list< SfxPoolItem const * >())
Method to execute a <SfxSlot>s over the Slot-Id.
bool GetFull(std::u16string_view rRegion, std::u16string_view rName, OUString &rPath)
ErrCode GuessFilter(SfxMedium &rMedium, std::shared_ptr< const SfxFilter > &, SfxFilterFlags nMust=SfxFilterFlags::IMPORT, SfxFilterFlags nDont=SFX_FILTER_NOTINSTALLED) const
std::shared_ptr< const SfxFilter > GetFilter4EA(const OUString &rEA, SfxFilterFlags nMust=SfxFilterFlags::IMPORT, SfxFilterFlags nDont=SFX_FILTER_NOTINSTALLED) const
const OUString & GetFilterName() const
SfxFrame * GetFrame() const
const css::uno::Reference< css::frame::XFrame > & GetFrameInterface() const
SAL_WARN_UNUSED_RESULT SfxObjectShell * GetCurrentDocument() const
SAL_WARN_UNUSED_RESULT SfxViewFrame * GetCurrentViewFrame() const
const SfxSlot * GetSlot(sal_uInt16 nSlotId) const
virtual std::unique_ptr< SfxItemSet > Clone(bool bItems=true, SfxItemPool *pToPool=nullptr) const
sal_uInt16 ClearItem(sal_uInt16 nWhich=0)
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * GetItem(sal_uInt16 nWhich, bool bSearchInParent=true) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const std::shared_ptr< const SfxFilter > & GetFilter() const
void UseInteractionHandler(bool)
SfxItemSet & GetItemSet() const
ErrCode GetErrorCode() const
const OUString & GetOrigURL() const
const css::uno::Sequence< css::util::RevisionTag > & GetVersionList(bool _bNoReload=false)
css::uno::Reference< css::embed::XStorage > GetStorage(bool bCreateTempFile=true)
css::uno::Reference< css::task::XInteractionHandler > GetInteractionHandler(bool bGetAlways=false)
SfxShell * GetShell() const
static SfxObjectShell * CreateObject(const OUString &rServiceName, SfxObjectCreateMode=SfxObjectCreateMode::STANDARD)
void ResetFromTemplate(const OUString &rTemplateName, std::u16string_view rFileName)
virtual bool DoSaveCompleted(SfxMedium *pNewStor=nullptr, bool bRegisterRecent=true)
ErrCode GetErrorCode() const
css::uno::Reference< css::awt::XWindow > GetDialogParent(SfxMedium const *pMedium=nullptr)
SfxMedium * GetMedium() const
css::uno::Reference< css::frame::XModel3 > GetModel() const
OUString GetTitle(sal_uInt16 nMaxLen=0) const
css::uno::Reference< css::embed::XStorage > const & GetStorage()
bool DoLoad(SfxMedium *pMedium)
static SAL_WARN_UNUSED_RESULT SfxObjectShell * Current()
virtual void SetModified(bool bModified=true)
sal_uInt16 GetSlot() const
void RemoveItem(sal_uInt16 nSlotId)
const SfxPoolItem * GetReturnValue() const
const SfxItemSet * GetArgs() const
void SetSlot(sal_uInt16 nNewSlot)
const T * GetArg(sal_uInt16 nSlotId) const
Templatized access to the individual parameters of the SfxRequest.
void AppendItem(const SfxPoolItem &)
void SetReturnValue(const SfxPoolItem &)
bool IsSynchronCall() const
weld::Window * GetFrameWeld() const
Return the window that should be used as the parent for any dialogs this request creates.
void SetArgs(const SfxAllItemSet &rArgs)
void Done(bool bRemove=false)
SfxItemPool & GetPool() const
Each Subclass of SfxShell must reference a pool.
SfxViewFrame * GetFrame() const
This method returns a pointer to the <SfxViewFrame> to which this SfxShell instance is associated or ...
virtual SfxInterface * GetInterface() const
With this virtual method, which is automatically overridden by each subclass with its own slots throu...
const SfxPoolItem * ExecuteSlot(SfxRequest &rReq, const SfxInterface *pIF=nullptr)
This method allows you to forward a <SfxRequest> to the specified base <SfxShell>.
SfxViewShell * GetViewShell() const
Returns the SfxViewShell in which they are located in the subshells.
void GetStringList(css::uno::Sequence< OUString > &rList) const
virtual short run() override
void setDocumentModel(const css::uno::Reference< css::frame::XModel > &rModel)
const css::uno::Any & GetValue() const
const css::uno::Reference< css::frame::XFrame > & GetFrame() const
SfxViewFrame * GetFrame() const
static SAL_WARN_UNUSED_RESULT SfxViewFrame * Current()
virtual SfxObjectShell * GetObjectShell() override
One SfxViewShell more or less represents one edit window for a document, there can be multiple ones f...
static SAL_WARN_UNUSED_RESULT SfxViewShell * GetNext(const SfxViewShell &rPrev, bool bOnlyVisible=true, const std::function< bool(const SfxViewShell *)> &isViewShell=nullptr)
static SAL_WARN_UNUSED_RESULT SfxViewShell * GetFirst(bool bOnlyVisible=true, const std::function< bool(const SfxViewShell *)> &isViewShell=nullptr)
void JumpToMark(const OUString &rMark)
OUString GetDefaultModuleName() const
const OUString & GetTemplatePath() const
bool Matches(std::u16string_view rStr) const
static css::uno::Sequence< css::beans::NamedValue > decryptGpgSession(const css::uno::Sequence< css::uno::Sequence< css::beans::NamedValue > > &rGpgProperties)
static css::uno::Sequence< css::beans::NamedValue > requestAndVerifyDocPassword(IDocPasswordVerifier &rVerifier, const css::uno::Sequence< css::beans::NamedValue > &rMediaEncData, const OUString &rMediaPassword, const css::uno::Reference< css::task::XInteractionHandler > &rxInteractHandler, const OUString &rDocumentUrl, DocPasswordRequestType eRequestType, const ::std::vector< OUString > *pDefaultPasswords=nullptr, bool *pbIsDefaultPassword=nullptr)
virtual DocPasswordVerifierResult verifyPassword(const OUString &rPassword, css::uno::Sequence< css::beans::NamedValue > &o_rEncryptionData)=0
virtual DocPasswordVerifierResult verifyEncryptionData(const css::uno::Sequence< css::beans::NamedValue > &o_rEncryptionData)=0
static css::uno::Sequence< css::beans::NamedValue > CreatePackageEncryptionData(std::u16string_view aPassword)
static void SetCommonStorageEncryptionData(const css::uno::Reference< css::embed::XStorage > &xStorage, const css::uno::Sequence< css::beans::NamedValue > &aEncryptionData)
static css::uno::Reference< css::embed::XStorage > GetTemporaryStorage(const css::uno::Reference< css::uno::XComponentContext > &rxContext=css::uno::Reference< css::uno::XComponentContext >())
static COMPHELPER_DLLPUBLIC css::uno::Reference< css::lang::XComponent > dispatch(const css::uno::Reference< css::uno::XInterface > &xStartPoint, const OUString &sURL, const OUString &sTarget, const css::uno::Sequence< css::beans::PropertyValue > &lArguments)
css::uno::Type const & get()
Prevent us from showing the same interaction more than once during the same transaction.
#define DBG_ASSERT(sCon, aError)
#define ERRCODE_IO_ACCESSDENIED
#define SFX2_IMPL_DIALOG_CONFIG
#define SFX2_IMPL_DIALOG_SYSTEM
@ SignPDF
Sign existing PDF.
#define SFX2_IMPL_DIALOG_OOO
#define SFX2_IMPL_DIALOG_REMOTE
bool isSecureMacroUri(OUString const &uri, OUString const &referer)
css::uno::Sequence< T > concatSequences(const css::uno::Sequence< T > &rS1, const Ss &... rSn)
DocPasswordVerifierResult
Reference< XMultiServiceFactory > getProcessServiceFactory()
Reference< XComponentContext > getProcessComponentContext()
void removeElementAt(css::uno::Sequence< T > &_rSeq, sal_Int32 _nPos)
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
ErrCode FileOpenDialog_Impl(weld::Window *pParent, sal_Int16 nDialogType, FileDialogFlags nFlags, std::vector< OUString > &rpURLList, OUString &rFilter, std::optional< SfxAllItemSet > &rpSet, const OUString *pPath, sal_Int16 nDialog, const OUString &rStandardDir, const css::uno::Sequence< OUString > &rDenyList)
void openUriExternally(const OUString &sURI, bool bHandleSystemShellExecuteException, weld::Widget *pDialogParent)
Open a URI via com.sun.star.system.SystemShellExecute.
Reference< XNameContainer > mxStorage
#define ERRCODE_SFX_GENERAL
#define ERRCTX_SFX_NEWDOC
#define ERRCODE_SFX_CANTGETPASSWD
#define ERRCODE_SFX_DOLOADFAILED
#define ERRCTX_SFX_LOADTEMPLATE
#define ERRCTX_SFX_OPENDOC
#define ERRCODE_SFX_TEMPLATENOTFOUND
#define ERRCODE_SFX_NOMOREDOCUMENTSALLOWED
#define ERRCODE_SFX_NOTATEMPLATE
OUString SfxResId(TranslateId aId)
sal_Int32 m_nCallCount
count how often this interaction was called.
css::uno::Reference< css::task::XInteractionRequest > m_xRequest
hold the last intercepted request (matching the set interaction type) alive so it can be used for fur...
Reference< XController > xController
Reference< XModel > xModel