20#include <com/sun/star/beans/PropertyValue.hpp>
21#include <com/sun/star/task/XInteractionRequest.hpp>
22#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
35getRequestArgument(uno::Sequence< uno::Any >
const & rArguments,
36 std::u16string_view rKey,
39 for (
const auto& rArgument : rArguments)
41 beans::PropertyValue aProperty;
42 if ((rArgument >>= aProperty) && aProperty.Name == rKey)
45 if (aProperty.Value >>= aValue)
57getResourceNameRequestArgument(uno::Sequence< uno::Any >
const & rArguments,
60 if (!getRequestArgument(rArguments, u
"Uri", pValue))
64 getRequestArgument(rArguments, u
"ResourceName", pValue);
72 uno::Reference< task::XInteractionRequest >
const & rRequest,
73 bool bObtainErrorStringOnly,
74 bool & bHasErrorString,
75 OUString & rErrorString)
77 uno::Any aAnyRequest(rRequest->getRequest());
78 bHasErrorString =
false;
80 ucb::InteractiveIOException aIoException;
81 if (aAnyRequest >>= aIoException)
83 uno::Sequence< uno::Any > aRequestArguments;
84 ucb::InteractiveAugmentedIOException aAugmentedIoException;
85 if (aAnyRequest >>= aAugmentedIoException)
86 aRequestArguments = aAugmentedIoException.Arguments;
91 aErrorCode[sal_Int32(ucb::IOErrorCode_WRONG_VERSION) + 1][2]
160 switch (aIoException.Code)
162 case ucb::IOErrorCode_CANT_CREATE:
165 if (getRequestArgument(aRequestArguments,
u"Folder", &aArgFolder))
168 if (getResourceNameRequestArgument(aRequestArguments,
183 nErrorCode = aErrorCode[
static_cast<sal_Int32
>(aIoException.Code)][0];
187 case ucb::IOErrorCode_DEVICE_NOT_READY:
190 if (getResourceNameRequestArgument(aRequestArguments,
193 OUString aResourceType;
194 getRequestArgument(aRequestArguments,
u"ResourceType", &aResourceType);
195 bool bRemovable =
false;
196 getRequestArgument(aRequestArguments,
u"Removable", &bRemovable);
197 nErrorCode = aResourceType ==
"volume"
207 nErrorCode = aErrorCode[
static_cast<sal_Int32
>(aIoException.Code)][0];
211 case ucb::IOErrorCode_DIFFERENT_DEVICES:
214 OUString aArgOtherVolume;
215 if (getRequestArgument(aRequestArguments,
u"Volume", &aArgVolume)
216 && getRequestArgument(aRequestArguments,
u"OtherVolume",
219 nErrorCode = aErrorCode[
static_cast<sal_Int32
>(aIoException.Code)][1];
225 nErrorCode = aErrorCode[
static_cast<sal_Int32
>(aIoException.Code)][0];
229 case ucb::IOErrorCode_NOT_EXISTING:
232 if (getResourceNameRequestArgument(aRequestArguments,
235 OUString aResourceType;
236 getRequestArgument(aRequestArguments,
u"ResourceType",
238 nErrorCode = aResourceType ==
"volume"
240 : (aResourceType ==
"folder"
246 nErrorCode = aErrorCode[
static_cast<sal_Int32
>(aIoException.Code)][0];
253 if (getResourceNameRequestArgument(aRequestArguments,
256 nErrorCode = aErrorCode[
static_cast<sal_Int32
>(aIoException.Code)][1];
260 nErrorCode = aErrorCode[
static_cast<sal_Int32
>(aIoException.Code)][0];
268 rRequest->getContinuations(),
269 bObtainErrorStringOnly,
void handleErrorHandlerRequest(css::task::InteractionClassification eClassification, ErrCode nErrorCode, std::vector< OUString > const &rArguments, css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > const &rContinuations, bool bObtainErrorStringOnly, bool &bHasErrorString, OUString &rErrorString)
bool handleInteractiveIOException(css::uno::Reference< css::task::XInteractionRequest > const &rRequest, bool bObtainErrorStringOnly, bool &bHasErrorString, OUString &rErrorString)
#define ERRCODE_IO_INVALIDLENGTH
#define ERRCODE_IO_BADCRC
#define ERRCODE_IO_ACCESSDENIED
#define ERRCODE_IO_MISPLACEDCHAR
#define ERRCODE_IO_CANTTELL
#define ERRCODE_IO_OUTOFSPACE
#define ERRCODE_IO_INVALIDDEVICE
#define ERRCODE_IO_CURRENTDIR
#define ERRCODE_IO_NOTADIRECTORY
#define ERRCODE_IO_CANTREAD
#define ERRCODE_IO_CANTCREATE
#define ERRCODE_IO_LOCKVIOLATION
#define ERRCODE_IO_GENERAL
#define ERRCODE_IO_NOTSAMEDEVICE
#define ERRCODE_IO_PENDING
#define ERRCODE_IO_WRONGVERSION
#define ERRCODE_IO_CANTSEEK
#define ERRCODE_IO_DEVICENOTREADY
#define ERRCODE_IO_NOTEXISTSPATH
#define ERRCODE_IO_CANTWRITE
#define ERRCODE_IO_WRONGFORMAT
#define ERRCODE_IO_NOTEXISTS
#define ERRCODE_IO_RECURSIVE
#define ERRCODE_IO_ALREADYEXISTS
#define ERRCODE_IO_INVALIDCHAR
#define ERRCODE_IO_NOTSUPPORTED
#define ERRCODE_IO_UNKNOWN
#define ERRCODE_IO_WRITEPROTECTED
#define ERRCODE_IO_INVALIDACCESS
#define ERRCODE_IO_OUTOFMEMORY
#define ERRCODE_IO_NAMETOOLONG
#define ERRCODE_IO_TOOMANYOPENFILES
#define ERRCODE_IO_NOTAFILE
#define ERRCODE_IO_ISWILDCARD
#define ERRCODE_IO_INVALIDPARAMETER
#define ERRCODE_UUI_IO_NOTREADY_VOLUME_REMOVABLE
#define ERRCODE_UUI_IO_NAMETOOLONG
#define ERRCODE_UUI_IO_NOTREADY_REMOVABLE
#define ERRCODE_UUI_IO_BADCRC
#define ERRCODE_UUI_IO_CANTREAD
#define ERRCODE_UUI_IO_NOTEXISTS_FOLDER
#define ERRCODE_UUI_IO_NOTADIRECTORY
#define ERRCODE_UUI_IO_CANTWRITE
#define ERRCODE_UUI_IO_NOTREADY_VOLUME
#define ERRCODE_UUI_IO_OUTOFMEMORY
#define ERRCODE_UUI_IO_WRONGFORMAT
#define ERRCODE_UUI_IO_CANTSEEK
#define ERRCODE_UUI_IO_NOTREADY
#define ERRCODE_UUI_IO_CANTCREATE
#define ERRCODE_UUI_IO_RECURSIVE
#define ERRCODE_UUI_IO_INVALIDPARAMETER
#define ERRCODE_UUI_IO_NOTEXISTSPATH
#define ERRCODE_UUI_IO_PENDING
#define ERRCODE_UUI_IO_OUTOFSPACE
#define ERRCODE_UUI_IO_MISPLACEDCHAR
#define ERRCODE_UUI_IO_WRITEPROTECTED
#define ERRCODE_UUI_IO_NOTEXISTS_VOLUME
#define ERRCODE_UUI_IO_INVALIDACCESS
#define ERRCODE_UUI_IO_UNKNOWN
#define ERRCODE_UUI_IO_INVALIDCHAR
#define ERRCODE_UUI_IO_NOTEXISTS
#define ERRCODE_UUI_IO_WRONGVERSION
#define ERRCODE_UUI_IO_CANTCREATE_NONAME
#define ERRCODE_UUI_IO_NOTAFILE
#define ERRCODE_UUI_IO_TOOMANYOPENFILES
#define ERRCODE_UUI_IO_CANTTELL
#define ERRCODE_UUI_IO_LOCKVIOLATION
#define ERRCODE_UUI_IO_ACCESSDENIED
#define ERRCODE_UUI_IO_GENERAL
#define ERRCODE_UUI_IO_ABORT
#define ERRCODE_UUI_IO_NOTSUPPORTED
#define ERRCODE_UUI_IO_NOTSAMEDEVICE
#define ERRCODE_UUI_IO_CURRENTDIR
#define ERRCODE_UUI_IO_INVALIDDEVICE
#define ERRCODE_UUI_IO_INVALIDLENGTH
#define ERRCODE_UUI_IO_ISWILDCARD
#define ERRCODE_UUI_IO_ALREADYEXISTS
Sequence< PropertyValue > aArguments
COMPHELPER_DLLPUBLIC bool isFileUrl(std::u16string_view url)