summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2023-09-30 20:47:46 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-10-03 10:12:41 +0200
commitd9e322d60f65ff20631dab87baa5a2c7c71daaa2 (patch)
treed481e5a4728363b3866b5b5f6dbe64a2780b04a6
parent64fc701388d1dcf8ae36ba2cc73eb5416a7c3374 (diff)
replace ErrorInfo with simpler mechanism
Instead of returning ErrCode class everywhere, return a new class ErrrCodeMsg, which combines an ErrCode with the other parameters that are used to control the error reporting. I do not change everything that uses ErrCode here, I started from SfxBaseController/SfxMedium and worked outwards. This change serves two purposes (1) Replace the extremely whacky ErrorInfo mechanism we were using to smuggle information into the error handler reporting mechanism with a very straightforward approach of just combining it into the error class. (2) Allow us to capture the source location that produced the error, which makes debugging the source of a problem soooo much easier. Change-Id: I978b8f00c9851b41a216c7ebdef2ef94251d5519 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157440 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--basctl/source/basicide/baside2.cxx4
-rw-r--r--basic/qa/cppunit/basictest.cxx2
-rw-r--r--basic/qa/cppunit/basictest.hxx4
-rw-r--r--basic/qa/cppunit/test_compiler_checks.cxx4
-rw-r--r--basic/source/basmgr/basmgr.cxx38
-rw-r--r--basic/source/classes/sb.cxx16
-rw-r--r--basic/source/inc/sbintern.hxx2
-rw-r--r--comphelper/source/misc/errcode.cxx257
-rw-r--r--cui/source/options/optdict.cxx2
-rw-r--r--editeng/source/misc/splwrap.cxx4
-rw-r--r--include/basic/basmgr.hxx6
-rw-r--r--include/basic/sbstar.hxx5
-rw-r--r--include/comphelper/errcode.hxx126
-rw-r--r--include/sfx2/app.hxx2
-rw-r--r--include/sfx2/docfile.hxx12
-rw-r--r--include/sfx2/objsh.hxx8
-rw-r--r--include/sfx2/sfxbasemodel.hxx3
-rw-r--r--include/svtools/ehdl.hxx4
-rw-r--r--include/vcl/errinf.hxx106
-rw-r--r--sc/inc/xmlwrap.hxx4
-rw-r--r--sc/source/filter/xml/xmlwrap.cxx18
-rw-r--r--sc/source/ui/docshell/docsh.cxx6
-rw-r--r--sc/source/ui/docshell/docsh4.cxx2
-rw-r--r--sc/source/ui/docshell/docsh8.cxx8
-rw-r--r--sc/source/ui/inc/docsh.hxx2
-rw-r--r--sc/source/ui/miscdlgs/instbdlg.cxx2
-rw-r--r--sc/source/ui/miscdlgs/linkarea.cxx4
-rw-r--r--sd/source/filter/xml/sdxmlwrp.cxx16
-rw-r--r--sd/source/ui/app/sdmod1.cxx2
-rw-r--r--sd/source/ui/func/fuinsert.cxx3
-rw-r--r--sd/source/ui/view/viewshe2.cxx2
-rw-r--r--sfx2/source/appl/app.cxx4
-rw-r--r--sfx2/source/appl/appopen.cxx4
-rw-r--r--sfx2/source/doc/DocumentMetadataAccess.cxx4
-rw-r--r--sfx2/source/doc/SfxDocumentMetaData.cxx4
-rw-r--r--sfx2/source/doc/docfile.cxx25
-rw-r--r--sfx2/source/doc/new.cxx2
-rw-r--r--sfx2/source/doc/objmisc.cxx12
-rw-r--r--sfx2/source/doc/objserv.cxx13
-rw-r--r--sfx2/source/doc/objstor.cxx8
-rw-r--r--sfx2/source/doc/sfxbasemodel.cxx35
-rw-r--r--sfx2/source/inc/objshimp.hxx2
-rw-r--r--sfx2/source/view/viewfrm.cxx2
-rw-r--r--svtools/source/misc/ehdl.cxx32
-rw-r--r--sw/inc/docsh.hxx2
-rw-r--r--sw/inc/shellio.hxx24
-rw-r--r--sw/qa/extras/txtimport/txtimport.cxx4
-rw-r--r--sw/qa/extras/uiwriter/uiwriter.cxx2
-rw-r--r--sw/source/core/swg/SwXMLTextBlocks.cxx2
-rw-r--r--sw/source/core/unocore/unocrsrhelper.cxx2
-rw-r--r--sw/source/core/unocore/unostyle.cxx2
-rw-r--r--sw/source/filter/ascii/parasc.cxx2
-rw-r--r--sw/source/filter/basflt/shellio.cxx8
-rw-r--r--sw/source/filter/docx/swdocxreader.cxx2
-rw-r--r--sw/source/filter/docx/swdocxreader.hxx2
-rw-r--r--sw/source/filter/html/swhtml.cxx6
-rw-r--r--sw/source/filter/inc/fltini.hxx4
-rw-r--r--sw/source/filter/rtf/swparrtf.cxx8
-rw-r--r--sw/source/filter/writer/writer.cxx18
-rw-r--r--sw/source/filter/ww8/wrtww8.cxx8
-rw-r--r--sw/source/filter/ww8/wrtww8.hxx6
-rw-r--r--sw/source/filter/ww8/ww8par.cxx2
-rw-r--r--sw/source/filter/ww8/ww8par.hxx2
-rw-r--r--sw/source/filter/xml/swxml.cxx16
-rw-r--r--sw/source/filter/xml/wrtxml.cxx12
-rw-r--r--sw/source/filter/xml/wrtxml.hxx8
-rw-r--r--sw/source/uibase/app/docsh.cxx12
-rw-r--r--sw/source/uibase/app/docsh2.cxx8
-rw-r--r--sw/source/uibase/app/docshini.cxx4
-rw-r--r--sw/source/uibase/misc/glosdoc.cxx5
-rw-r--r--sw/source/uibase/shells/translatehelper.cxx4
-rw-r--r--sw/source/uibase/uiview/srcview.cxx2
-rw-r--r--sw/source/uibase/uiview/view2.cxx2
-rw-r--r--sw/source/uibase/uiview/viewling.cxx2
-rw-r--r--uui/source/iahndl.cxx2
-rw-r--r--vcl/qa/cppunit/errorhandler.cxx15
-rw-r--r--vcl/source/window/errinf.cxx135
77 files changed, 522 insertions, 632 deletions
diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx
index bb6f0bb1f876..60d25cf74128 100644
--- a/basctl/source/basicide/baside2.cxx
+++ b/basctl/source/basicide/baside2.cxx
@@ -442,7 +442,7 @@ void ModulWindow::LoadBasic()
GetEditorWindow().PaintImmediately();
GetEditorWindow().ForceSyntaxTimeout();
GetEditorWindow().DestroyProgress();
- ErrCode nError = aMedium.GetErrorIgnoreWarning();
+ ErrCodeMsg nError = aMedium.GetErrorIgnoreWarning();
if ( nError )
ErrorHandler::HandleError( nError );
}
@@ -484,7 +484,7 @@ void ModulWindow::SaveBasicSource()
GetEditEngine()->Write( *pStream );
aMedium.Commit();
LeaveWait();
- ErrCode nError = aMedium.GetErrorIgnoreWarning();
+ ErrCodeMsg nError = aMedium.GetErrorIgnoreWarning();
if ( nError )
ErrorHandler::HandleError( nError );
}
diff --git a/basic/qa/cppunit/basictest.cxx b/basic/qa/cppunit/basictest.cxx
index 8cf9812d5212..13dc8c72e4cb 100644
--- a/basic/qa/cppunit/basictest.cxx
+++ b/basic/qa/cppunit/basictest.cxx
@@ -108,7 +108,7 @@ bool MacroSnippet::Compile()
bool MacroSnippet::HasError() const { return mbError; }
-const ErrCode& MacroSnippet::getError() const { return maErrCode; }
+const ErrCodeMsg& MacroSnippet::getError() const { return maErrCode; }
IMPL_LINK( MacroSnippet, BasicErrorHdl, StarBASIC *, /*pBasic*/, bool)
{
diff --git a/basic/qa/cppunit/basictest.hxx b/basic/qa/cppunit/basictest.hxx
index 1901492bcfab..46af3542b82b 100644
--- a/basic/qa/cppunit/basictest.hxx
+++ b/basic/qa/cppunit/basictest.hxx
@@ -23,7 +23,7 @@ class MacroSnippet
{
private:
bool mbError;
- ErrCode maErrCode;
+ ErrCodeMsg maErrCode;
BasicDLL maDll; // we need a dll instance for resource manager etc.
SbModuleRef mpMod;
StarBASICRef mpBasic;
@@ -46,7 +46,7 @@ public:
DECL_LINK(BasicErrorHdl, StarBASIC*, bool);
bool HasError() const;
- const ErrCode& getError() const;
+ const ErrCodeMsg& getError() const;
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basic/qa/cppunit/test_compiler_checks.cxx b/basic/qa/cppunit/test_compiler_checks.cxx
index 044977670e62..773719e9fd45 100644
--- a/basic/qa/cppunit/test_compiler_checks.cxx
+++ b/basic/qa/cppunit/test_compiler_checks.cxx
@@ -21,7 +21,7 @@ CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testRedefineArgument)
"End Sub\n");
aMacro.Compile();
CPPUNIT_ASSERT(aMacro.HasError());
- CPPUNIT_ASSERT_EQUAL(ERRCODE_BASIC_VAR_DEFINED, aMacro.getError().StripDynamic());
+ CPPUNIT_ASSERT_EQUAL(ERRCODE_BASIC_VAR_DEFINED, aMacro.getError().GetCode());
}
CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testDoubleArgument)
@@ -30,7 +30,7 @@ CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testDoubleArgument)
"End Sub\n");
aMacro.Compile();
CPPUNIT_ASSERT(aMacro.HasError());
- CPPUNIT_ASSERT_EQUAL(ERRCODE_BASIC_VAR_DEFINED, aMacro.getError().StripDynamic());
+ CPPUNIT_ASSERT_EQUAL(ERRCODE_BASIC_VAR_DEFINED, aMacro.getError().GetCode());
}
CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testTdf149157)
diff --git a/basic/source/basmgr/basmgr.cxx b/basic/source/basmgr/basmgr.cxx
index f7a4fb2ae192..6e2ce76d37ae 100644
--- a/basic/source/basmgr/basmgr.cxx
+++ b/basic/source/basmgr/basmgr.cxx
@@ -300,7 +300,7 @@ void SAL_CALL BasMgrContainerListenerImpl::elementRemoved( const container::Cont
}
}
-BasicError::BasicError( ErrCode nId, BasicErrorReason nR )
+BasicError::BasicError( ErrCodeMsg nId, BasicErrorReason nR )
{
nErrorId = nId;
nReason = nR;
@@ -609,8 +609,8 @@ void BasicManager::ImpMgrNotLoaded( const OUString& rStorageName )
{
// pErrInf is only destroyed if the error os processed by an
// ErrorHandler
- StringErrorInfo* pErrInf = new StringErrorInfo( ERRCODE_BASMGR_MGROPEN, rStorageName, DialogMask::ButtonsOk );
- aErrors.emplace_back(*pErrInf, BasicErrorReason::OPENMGRSTREAM);
+ ErrCodeMsg aErrInf( ERRCODE_BASMGR_MGROPEN, rStorageName, DialogMask::ButtonsOk );
+ aErrors.emplace_back(aErrInf, BasicErrorReason::OPENMGRSTREAM);
// Create a stdlib otherwise we crash!
BasicLibInfo* pStdLibInfo = CreateLibInfo();
@@ -749,8 +749,8 @@ void BasicManager::LoadOldBasicManager( SotStorage& rStorage )
xManagerStream->Seek( nBasicStartOff );
if (!ImplLoadBasic( *xManagerStream, maLibs.front()->GetLibRef() ))
{
- StringErrorInfo* pErrInf = new StringErrorInfo( ERRCODE_BASMGR_MGROPEN, aStorName, DialogMask::ButtonsOk );
- aErrors.emplace_back(*pErrInf, BasicErrorReason::OPENMGRSTREAM);
+ ErrCodeMsg aErrInf( ERRCODE_BASMGR_MGROPEN, aStorName, DialogMask::ButtonsOk );
+ aErrors.emplace_back(aErrInf, BasicErrorReason::OPENMGRSTREAM);
// and it proceeds ...
}
xManagerStream->Seek( nBasicEndOff+1 ); // +1: 0x00 as separator
@@ -799,8 +799,8 @@ void BasicManager::LoadOldBasicManager( SotStorage& rStorage )
}
else
{
- StringErrorInfo* pErrInf = new StringErrorInfo( ERRCODE_BASMGR_LIBLOAD, aStorName, DialogMask::ButtonsOk );
- aErrors.emplace_back(*pErrInf, BasicErrorReason::STORAGENOTFOUND);
+ ErrCodeMsg aErrInf( ERRCODE_BASMGR_LIBLOAD, aStorName, DialogMask::ButtonsOk );
+ aErrors.emplace_back(aErrInf, BasicErrorReason::STORAGENOTFOUND);
}
} while (nLibPos>=0);
}
@@ -868,8 +868,8 @@ bool BasicManager::ImpLoadLibrary( BasicLibInfo* pLibInfo, SotStorage* pCurStora
if ( !xBasicStorage.is() || xBasicStorage->GetError() )
{
- StringErrorInfo* pErrInf = new StringErrorInfo( ERRCODE_BASMGR_MGROPEN, xStorage->GetName(), DialogMask::ButtonsOk );
- aErrors.emplace_back(*pErrInf, BasicErrorReason::OPENLIBSTORAGE);
+ ErrCodeMsg aErrInf( ERRCODE_BASMGR_MGROPEN, xStorage->GetName(), DialogMask::ButtonsOk );
+ aErrors.emplace_back(aErrInf, BasicErrorReason::OPENLIBSTORAGE);
}
else
{
@@ -877,8 +877,8 @@ bool BasicManager::ImpLoadLibrary( BasicLibInfo* pLibInfo, SotStorage* pCurStora
tools::SvRef<SotStorageStream> xBasicStream = xBasicStorage->OpenSotStream( pLibInfo->GetLibName(), eStreamReadMode );
if ( !xBasicStream.is() || xBasicStream->GetError() )
{
- StringErrorInfo* pErrInf = new StringErrorInfo( ERRCODE_BASMGR_LIBLOAD , pLibInfo->GetLibName(), DialogMask::ButtonsOk );
- aErrors.emplace_back(*pErrInf, BasicErrorReason::OPENLIBSTREAM);
+ ErrCodeMsg aErrInf( ERRCODE_BASMGR_LIBLOAD , pLibInfo->GetLibName(), DialogMask::ButtonsOk );
+ aErrors.emplace_back(aErrInf, BasicErrorReason::OPENLIBSTREAM);
}
else
{
@@ -900,8 +900,8 @@ bool BasicManager::ImpLoadLibrary( BasicLibInfo* pLibInfo, SotStorage* pCurStora
}
if ( !bLoaded )
{
- StringErrorInfo* pErrInf = new StringErrorInfo( ERRCODE_BASMGR_LIBLOAD, pLibInfo->GetLibName(), DialogMask::ButtonsOk );
- aErrors.emplace_back(*pErrInf, BasicErrorReason::BASICLOADERROR);
+ ErrCodeMsg aErrInf( ERRCODE_BASMGR_LIBLOAD, pLibInfo->GetLibName(), DialogMask::ButtonsOk );
+ aErrors.emplace_back(aErrInf, BasicErrorReason::BASICLOADERROR);
}
else
{
@@ -1084,8 +1084,8 @@ bool BasicManager::RemoveLib( sal_uInt16 nLib, bool bDelBasicFromStorage )
if( !nLib || nLib < maLibs.size() )
{
- StringErrorInfo* pErrInf = new StringErrorInfo( ERRCODE_BASMGR_REMOVELIB, OUString(), DialogMask::ButtonsOk );
- aErrors.emplace_back(*pErrInf, BasicErrorReason::STDLIB);
+ ErrCodeMsg aErrInf( ERRCODE_BASMGR_REMOVELIB, OUString(), DialogMask::ButtonsOk );
+ aErrors.emplace_back(aErrInf, BasicErrorReason::STDLIB);
return false;
}
@@ -1120,8 +1120,8 @@ bool BasicManager::RemoveLib( sal_uInt16 nLib, bool bDelBasicFromStorage )
if ( !xBasicStorage.is() || xBasicStorage->GetError() )
{
- StringErrorInfo* pErrInf = new StringErrorInfo( ERRCODE_BASMGR_REMOVELIB, OUString(), DialogMask::ButtonsOk );
- aErrors.emplace_back(*pErrInf, BasicErrorReason::OPENLIBSTORAGE);
+ ErrCodeMsg aErrInf( ERRCODE_BASMGR_REMOVELIB, OUString(), DialogMask::ButtonsOk );
+ aErrors.emplace_back(aErrInf, BasicErrorReason::OPENLIBSTORAGE);
}
else if (xBasicStorage->IsStream((*itLibInfo)->GetLibName()))
{
@@ -1255,8 +1255,8 @@ bool BasicManager::LoadLib( sal_uInt16 nLib )
}
else
{
- StringErrorInfo* pErrInf = new StringErrorInfo( ERRCODE_BASMGR_LIBLOAD, OUString(), DialogMask::ButtonsOk );
- aErrors.emplace_back(*pErrInf, BasicErrorReason::LIBNOTFOUND);
+ ErrCodeMsg aErrInf( ERRCODE_BASMGR_LIBLOAD, OUString(), DialogMask::ButtonsOk );
+ aErrors.emplace_back(aErrInf, BasicErrorReason::LIBNOTFOUND);
}
return bDone;
}
diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx
index 1070f1986e38..9d3a7706189c 100644
--- a/basic/source/classes/sb.cxx
+++ b/basic/source/classes/sb.cxx
@@ -1429,7 +1429,7 @@ sal_uInt16 StarBASIC::GetCol1() { return GetSbData()->nCol1; }
sal_uInt16 StarBASIC::GetCol2() { return GetSbData()->nCol2; }
// Specific to error handler
-ErrCode const & StarBASIC::GetErrorCode() { return GetSbData()->nCode; }
+ErrCodeMsg const & StarBASIC::GetErrorCode() { return GetSbData()->nCode; }
const OUString& StarBASIC::GetErrorText() { return GetSbData()->aErrMsg; }
// From 1996-03-29:
@@ -1531,7 +1531,7 @@ ErrCode StarBASIC::GetSfxFromVBError( sal_uInt16 nError )
}
// set Error- / Break-data
-void StarBASIC::SetErrorData( ErrCode nCode, sal_uInt16 nLine,
+void StarBASIC::SetErrorData( const ErrCodeMsg& nCode, sal_uInt16 nLine,
sal_uInt16 nCol1, sal_uInt16 nCol2 )
{
SbiGlobals& aGlobals = *GetSbData();
@@ -1620,11 +1620,12 @@ bool StarBASIC::CError( ErrCode code, const OUString& rMsg,
MakeErrorText( code, rMsg );
// Implementation of the code for the string transport to SFX-Error
+ ErrCodeMsg nErr = code;
if( !rMsg.isEmpty() )
{
- code = *new StringErrorInfo( code, rMsg );
+ nErr = ErrCodeMsg( code, rMsg );
}
- SetErrorData( code, l, c1, c2 );
+ SetErrorData( nErr, l, c1, c2 );
GetSbData()->bCompilerError = true;
bool bRet;
if( GetSbData()->aErrHdl.IsSet() )
@@ -1651,6 +1652,7 @@ bool StarBASIC::RTError( ErrCode code, const OUString& rMsg, sal_Int32 l, sal_In
MakeErrorText( c, rMsg );
// Implementation of the code for the string transport to SFX-Error
+ ErrCodeMsg nErr = code;
if( !rMsg.isEmpty() )
{
// very confusing, even though MakeErrorText sets up the error text
@@ -1661,15 +1663,15 @@ bool StarBASIC::RTError( ErrCode code, const OUString& rMsg, sal_Int32 l, sal_In
{
OUString aTmp = "\'" + OUString::number(SbxErrObject::getUnoErrObject()->getNumber()) +
"\'\n" + (!GetSbData()->aErrMsg.isEmpty() ? GetSbData()->aErrMsg : rMsg);
- code = *new StringErrorInfo( code, aTmp );
+ nErr = ErrCodeMsg( code, aTmp );
}
else
{
- code = *new StringErrorInfo( code, rMsg );
+ nErr = ErrCodeMsg( code, rMsg );
}
}
- SetErrorData( code, l, c1, c2 );
+ SetErrorData( nErr, l, c1, c2 );
if( GetSbData()->aErrHdl.IsSet() )
{
return GetSbData()->aErrHdl.Call( this );
diff --git a/basic/source/inc/sbintern.hxx b/basic/source/inc/sbintern.hxx
index 5ed41d5fb138..ae18e0f9e30b 100644
--- a/basic/source/inc/sbintern.hxx
+++ b/basic/source/inc/sbintern.hxx
@@ -124,7 +124,7 @@ struct SbiGlobals
short nInst; // number of BASICs
Link<StarBASIC*,bool> aErrHdl; // global error handler
Link<StarBASIC*,BasicDebugFlags> aBreakHdl; // global break handler
- ErrCode nCode;
+ ErrCodeMsg nCode;
sal_Int32 nLine;
sal_Int32 nCol1,nCol2; // from... to...
bool bCompilerError; // flag for compiler error
diff --git a/comphelper/source/misc/errcode.cxx b/comphelper/source/misc/errcode.cxx
index 77d58ac364be..e7b667745808 100644
--- a/comphelper/source/misc/errcode.cxx
+++ b/comphelper/source/misc/errcode.cxx
@@ -19,135 +19,129 @@
#include <comphelper/errcode.hxx>
#include <rtl/ustrbuf.hxx>
+#include <o3tl/runtimetooustring.hxx>
COMPHELPER_DLLPUBLIC OUString ErrCode::toString() const
{
- OUStringBuffer buf(128);
- buf.append(toHexString() + "(");
+ std::u16string_view pWarningError;
if (IsWarning())
- buf.append("Warning");
- else
- buf.append("Error");
- if (IsDynamic())
- buf.append(" Dynamic");
+ pWarningError = u"Warning";
else
+ pWarningError = u"Error";
+
+ std::u16string_view pArea;
+ switch (GetArea())
{
- std::u16string_view pArea;
- switch (GetArea())
- {
- case ErrCodeArea::Io:
- pArea = u"Io";
- break;
- case ErrCodeArea::Sfx:
- pArea = u"Sfx";
- break;
- case ErrCodeArea::Inet:
- pArea = u"Inet";
- break;
- case ErrCodeArea::Vcl:
- pArea = u"Vcl";
- break;
- case ErrCodeArea::Svx:
- pArea = u"Svx";
- break;
- case ErrCodeArea::So:
- pArea = u"So";
- break;
- case ErrCodeArea::Sbx:
- pArea = u"Sbx";
- break;
- case ErrCodeArea::Uui:
- pArea = u"Uui";
- break;
- case ErrCodeArea::Sc:
- pArea = u"Sc";
- break;
- case ErrCodeArea::Sd:
- pArea = u"Sd";
- break;
- case ErrCodeArea::Sw:
- pArea = u"Sw";
- break;
- }
- buf.append(OUString::Concat(" Area:") + pArea);
+ case ErrCodeArea::Io:
+ pArea = u"Io";
+ break;
+ case ErrCodeArea::Sfx:
+ pArea = u"Sfx";
+ break;
+ case ErrCodeArea::Inet:
+ pArea = u"Inet";
+ break;
+ case ErrCodeArea::Vcl:
+ pArea = u"Vcl";
+ break;
+ case ErrCodeArea::Svx:
+ pArea = u"Svx";
+ break;
+ case ErrCodeArea::So:
+ pArea = u"So";
+ break;
+ case ErrCodeArea::Sbx:
+ pArea = u"Sbx";
+ break;
+ case ErrCodeArea::Uui:
+ pArea = u"Uui";
+ break;
+ case ErrCodeArea::Sc:
+ pArea = u"Sc";
+ break;
+ case ErrCodeArea::Sd:
+ pArea = u"Sd";
+ break;
+ case ErrCodeArea::Sw:
+ pArea = u"Sw";
+ break;
+ }
- std::u16string_view pClass;
- switch (GetClass())
- {
- case ErrCodeClass::NONE:
- pClass = u"NONE";
- break;
- case ErrCodeClass::Abort:
- pClass = u"Abort";
- break;
- case ErrCodeClass::General:
- pClass = u"General";
- break;
- case ErrCodeClass::NotExists:
- pClass = u"NotExists";
- break;
- case ErrCodeClass::AlreadyExists:
- pClass = u"AlreadyExists";
- break;
- case ErrCodeClass::Access:
- pClass = u"Access";
- break;
- case ErrCodeClass::Path:
- pClass = u"Path";
- break;
- case ErrCodeClass::Locking:
- pClass = u"Locking";
- break;
- case ErrCodeClass::Parameter:
- pClass = u"Parameter";
- break;
- case ErrCodeClass::Space:
- pClass = u"Space";
- break;
- case ErrCodeClass::NotSupported:
- pClass = u"NotSupported";
- break;
- case ErrCodeClass::Read:
- pClass = u"Read";
- break;
- case ErrCodeClass::Write:
- pClass = u"Write";
- break;
- case ErrCodeClass::Unknown:
- pClass = u"Unknown";
- break;
- case ErrCodeClass::Version:
- pClass = u"Version";
- break;
- case ErrCodeClass::Format:
- pClass = u"Format";
- break;
- case ErrCodeClass::Create:
- pClass = u"Create";
- break;
- case ErrCodeClass::Import:
- pClass = u"Import";
- break;
- case ErrCodeClass::Export:
- pClass = u"Export";
- break;
- case ErrCodeClass::So:
- pClass = u"So";
- break;
- case ErrCodeClass::Sbx:
- pClass = u"Sbx";
- break;
- case ErrCodeClass::Runtime:
- pClass = u"Runtime";
- break;
- case ErrCodeClass::Compiler:
- pClass = u"Compiler";
- break;
- }
- buf.append(OUString::Concat(" Class:") + pClass + " Code:" + OUString::number(GetCode()));
+ std::u16string_view pClass;
+ switch (GetClass())
+ {
+ case ErrCodeClass::NONE:
+ pClass = u"NONE";
+ break;
+ case ErrCodeClass::Abort:
+ pClass = u"Abort";
+ break;
+ case ErrCodeClass::General:
+ pClass = u"General";
+ break;
+ case ErrCodeClass::NotExists:
+ pClass = u"NotExists";
+ break;
+ case ErrCodeClass::AlreadyExists:
+ pClass = u"AlreadyExists";
+ break;
+ case ErrCodeClass::Access:
+ pClass = u"Access";
+ break;
+ case ErrCodeClass::Path:
+ pClass = u"Path";
+ break;
+ case ErrCodeClass::Locking:
+ pClass = u"Locking";
+ break;
+ case ErrCodeClass::Parameter:
+ pClass = u"Parameter";
+ break;
+ case ErrCodeClass::Space:
+ pClass = u"Space";
+ break;
+ case ErrCodeClass::NotSupported:
+ pClass = u"NotSupported";
+ break;
+ case ErrCodeClass::Read:
+ pClass = u"Read";
+ break;
+ case ErrCodeClass::Write:
+ pClass = u"Write";
+ break;
+ case ErrCodeClass::Unknown:
+ pClass = u"Unknown";
+ break;
+ case ErrCodeClass::Version:
+ pClass = u"Version";
+ break;
+ case ErrCodeClass::Format:
+ pClass = u"Format";
+ break;
+ case ErrCodeClass::Create:
+ pClass = u"Create";
+ break;
+ case ErrCodeClass::Import:
+ pClass = u"Import";
+ break;
+ case ErrCodeClass::Export:
+ pClass = u"Export";
+ break;
+ case ErrCodeClass::So:
+ pClass = u"So";
+ break;
+ case ErrCodeClass::Sbx:
+ pClass = u"Sbx";
+ break;
+ case ErrCodeClass::Runtime:
+ pClass = u"Runtime";
+ break;
+ case ErrCodeClass::Compiler:
+ pClass = u"Compiler";
+ break;
}
- buf.append(")");
- return buf.makeStringAndClear();
+ return toHexString() + "(" + pWarningError + " Area:" + pArea + " Class:" + pClass
+ + " Code:" + OUString::number(GetCode()) + ")";
}
COMPHELPER_DLLPUBLIC std::ostream& operator<<(std::ostream& os, const ErrCode& err)
@@ -156,4 +150,25 @@ COMPHELPER_DLLPUBLIC std::ostream& operator<<(std::ostream& os, const ErrCode& e
return os;
}
+COMPHELPER_DLLPUBLIC OUString ErrCodeMsg::toString() const
+{
+ OUString s = mnCode.toString();
+ if (!maArg1.isEmpty())
+ s += " arg1=" + maArg1;
+ if (!maArg2.isEmpty())
+ s += " arg2=" + maArg2;
+#ifdef LIBO_ERRMSG_USE_SOURCE_LOCATION
+ if (!moLoc)
+ s += OUString::Concat(" func=") + o3tl::runtimeToOUString(moLoc->function_name()) + " src="
+ + o3tl::runtimeToOUString(moLoc->file_name()) + ":" + OUString::number(moLoc->line());
+#endif
+ return s;
+}
+
+COMPHELPER_DLLPUBLIC std::ostream& operator<<(std::ostream& os, const ErrCodeMsg& err)
+{
+ os << err.toString();
+ return os;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/options/optdict.cxx b/cui/source/options/optdict.cxx
index 66b2c7f06a0c..dbe7f80e3d6b 100644
--- a/cui/source/options/optdict.cxx
+++ b/cui/source/options/optdict.cxx
@@ -192,7 +192,7 @@ IMPL_LINK_NOARG(SvxNewDictionaryDialog, OKHdl_Impl, weld::Button&, void)
// error: couldn't create new dictionary
SfxErrorContext aContext( ERRCTX_SVX_LINGU_DICTIONARY, OUString(),
m_xDialog.get(), RID_SVXERRCTX, SvxResLocale() );
- ErrorHandler::HandleError( *new StringErrorInfo(
+ ErrorHandler::HandleError( ErrCodeMsg(
ERRCODE_SVX_LINGU_DICT_NOTWRITEABLE, sDict ) );
m_xDialog->response(RET_CANCEL);
}
diff --git a/editeng/source/misc/splwrap.cxx b/editeng/source/misc/splwrap.cxx
index 99658aad39b8..dd59113a6975 100644
--- a/editeng/source/misc/splwrap.cxx
+++ b/editeng/source/misc/splwrap.cxx
@@ -104,14 +104,14 @@ void SvxSpellWrapper::ShowLanguageErrors()
{
OUString aErr( SvtLanguageTable::GetLanguageString( nLang ) );
ErrorHandler::HandleError(
- *new StringErrorInfo( ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS, aErr ) );
+ ErrCodeMsg( ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS, aErr ) );
nTmpSpell = SVX_LANG_MISSING;
}
if (SVX_LANG_MISSING_DO_WARN == nTmpHyph)
{
OUString aErr( SvtLanguageTable::GetLanguageString( nLang ) );
ErrorHandler::HandleError(
- *new StringErrorInfo( ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS, aErr ) );
+ ErrCodeMsg( ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS, aErr ) );
nTmpHyph = SVX_LANG_MISSING;
}
diff --git a/include/basic/basmgr.hxx b/include/basic/basmgr.hxx
index 072d92a6e417..1ef4f77cf16e 100644
--- a/include/basic/basmgr.hxx
+++ b/include/basic/basmgr.hxx
@@ -55,14 +55,14 @@ enum class BasicErrorReason
class BasicError
{
private:
- ErrCode nErrorId;
+ ErrCodeMsg nErrorId;
BasicErrorReason nReason;
public:
BasicError( const BasicError& rErr );
- BasicError( ErrCode nId, BasicErrorReason nR );
+ BasicError( ErrCodeMsg nId, BasicErrorReason nR );
- ErrCode const & GetErrorId() const { return nErrorId; }
+ ErrCodeMsg const & GetErrorId() const { return nErrorId; }
};
class BasicLibInfo;
diff --git a/include/basic/sbstar.hxx b/include/basic/sbstar.hxx
index 42f551bc403f..599f14aa4b1b 100644
--- a/include/basic/sbstar.hxx
+++ b/include/basic/sbstar.hxx
@@ -25,6 +25,7 @@
#include <basic/sbmod.hxx>
#include <rtl/ustring.hxx>
#include <tools/link.hxx>
+#include <comphelper/errcode.hxx>
#include <basic/sbdef.hxx>
#include <basic/basicdllapi.h>
@@ -111,13 +112,13 @@ public:
static sal_uInt16 GetLine();
static sal_uInt16 GetCol1();
static sal_uInt16 GetCol2();
- static void SetErrorData( ErrCode nCode, sal_uInt16 nLine,
+ static void SetErrorData( const ErrCodeMsg& nCode, sal_uInt16 nLine,
sal_uInt16 nCol1, sal_uInt16 nCol2 );
// Specific to error handler
static void MakeErrorText( ErrCode, std::u16string_view aMsg );
static const OUString& GetErrorText();
- static ErrCode const & GetErrorCode();
+ static ErrCodeMsg const & GetErrorCode();
static sal_uInt16 GetVBErrorCode( ErrCode nError );
static ErrCode GetSfxFromVBError( sal_uInt16 nError );
bool IsBreak() const { return bBreak; }
diff --git a/include/comphelper/errcode.hxx b/include/comphelper/errcode.hxx
index 7b4fffa1bb3a..6e5390b9a09b 100644
--- a/include/comphelper/errcode.hxx
+++ b/include/comphelper/errcode.hxx
@@ -21,6 +21,16 @@
#include <rtl/ustring.hxx>
#include <comphelper/comphelperdllapi.h>
#include <ostream>
+#include <o3tl/typed_flags_set.hxx>
+#include <optional>
+
+#if (defined DBG_UTIL) && ((defined __GNUC__ && !defined __clang__) || (defined __clang__ && __clang_major__ >= 9)) && __has_include(<experimental/source_location>)
+#define LIBO_ERRMSG_USE_SOURCE_LOCATION
+#endif
+
+#ifdef LIBO_ERRMSG_USE_SOURCE_LOCATION
+#include <experimental/source_location>
+#endif
/*
@@ -28,7 +38,7 @@
|| || || || |
Warning || || |
| || || || |
- Dynamic || || |
+ Unused || || |
| || || |
Subsystemarea| || |
| || |
@@ -50,9 +60,6 @@ Warning || || |
#define ERRCODE_CLASS_MASK (31UL << ERRCODE_CLASS_SHIFT)
-#define ERRCODE_DYNAMIC_COUNT 31UL
-#define ERRCODE_DYNAMIC_MASK (31UL << ERRCODE_DYNAMIC_SHIFT)
-
enum class ErrCodeArea;
enum class ErrCodeClass;
@@ -107,20 +114,8 @@ public:
return m_value && !IsWarning();
}
- bool IsDynamic() const {
- return m_value & ERRCODE_DYNAMIC_MASK;
- }
-
- sal_uInt32 GetDynamic() const {
- return (m_value & ERRCODE_DYNAMIC_MASK) >> ERRCODE_DYNAMIC_SHIFT;
- }
-
- ErrCode StripDynamic() const {
- return ErrCode(m_value & ~ERRCODE_DYNAMIC_MASK);
- }
-
- constexpr ErrCode StripWarningAndDynamic() const {
- return ErrCode(m_value & ~(ERRCODE_DYNAMIC_MASK | ERRCODE_WARNING_MASK));
+ constexpr ErrCode StripWarning() const {
+ return ErrCode(m_value & ~ERRCODE_WARNING_MASK);
}
constexpr ErrCodeArea GetArea() const {
@@ -154,6 +149,101 @@ private:
COMPHELPER_DLLPUBLIC std::ostream& operator<<(std::ostream& os, const ErrCode& err);
+enum class DialogMask
+{
+ NONE = 0x0000,
+ ButtonsOk = 0x0001,
+ ButtonsCancel = 0x0002,
+ ButtonsRetry = 0x0004,
+ ButtonsNo = 0x0008,
+ ButtonsYes = 0x0010,
+ ButtonsYesNo = 0x0018,
+
+ ButtonDefaultsOk = 0x0100,
+ ButtonDefaultsCancel = 0x0200,
+ ButtonDefaultsYes = 0x0300,
+ ButtonDefaultsNo = 0x0400,
+
+ MessageError = 0x1000,
+ MessageWarning = 0x2000,
+ MessageInfo = 0x3000,
+
+ MAX = USHRT_MAX,
+};
+namespace o3tl
+{
+ template<> struct typed_flags<DialogMask> : is_typed_flags<DialogMask, 0xffff> {};
+}
+
+/** Wrap up an ErrCode and an explanation and the source location where the error was created,
+ helps with debugging when finding the source of a problem.
+*/
+class SAL_WARN_UNUSED ErrCodeMsg
+{
+public:
+ ErrCodeMsg() : mnCode(0) {}
+#ifdef LIBO_ERRMSG_USE_SOURCE_LOCATION
+ ErrCodeMsg(ErrCode code, const OUString& arg, std::experimental::source_location loc = std::experimental::source_location::current())
+ : mnCode(code), maArg1(arg), mnDialogMask(DialogMask::NONE), moLoc(loc) {}
+ ErrCodeMsg(ErrCode code, const OUString& arg1, const OUString& arg2, std::experimental::source_location loc = std::experimental::source_location::current())
+ : mnCode(code), maArg1(arg1), maArg2(arg2), mnDialogMask(DialogMask::NONE), moLoc(loc) {}
+ ErrCodeMsg(ErrCode code, std::experimental::source_location loc = std::experimental::source_location::current())
+ : mnCode(code), mnDialogMask(DialogMask::NONE), moLoc(loc) {}
+ ErrCodeMsg(ErrCode code, const OUString& arg, DialogMask mask, std::experimental::source_location loc = std::experimental::source_location::current())
+ : mnCode(code), maArg1(arg), mnDialogMask(mask), moLoc(loc) {}
+ ErrCodeMsg(ErrCode code, const OUString& arg1, const OUString& arg2, DialogMask mask, std::experimental::source_location loc = std::experimental::source_location::current())
+ : mnCode(code), maArg1(arg1), maArg2(arg2), mnDialogMask(mask), moLoc(loc) {}
+#else
+ ErrCodeMsg(ErrCode code, const OUString& arg)
+ : mnCode(code), maArg1(arg), mnDialogMask(DialogMask::NONE) {}
+ ErrCodeMsg(ErrCode code, const OUString& arg1, const OUString& arg2)
+ : mnCode(code), maArg1(arg1), maArg2(arg2), mnDialogMask(DialogMask::NONE) {}
+ ErrCodeMsg(ErrCode code)
+ : mnCode(code), mnDialogMask(DialogMask::NONE) {}
+ ErrCodeMsg(ErrCode code, const OUString& arg, DialogMask mask)
+ : mnCode(code), maArg1(arg), mnDialogMask(mask) {}
+ ErrCodeMsg(ErrCode code, const OUString& arg1, const OUString& arg2, DialogMask mask)
+ : mnCode(code), maArg1(arg1), maArg2(arg2), mnDialogMask(mask) {}
+#endif
+
+ const ErrCode & GetCode() const { return mnCode; }
+ const OUString & GetArg1() const { return maArg1; }
+ const OUString & GetArg2() const { return maArg2; }
+ DialogMask GetDialogMask() const { return mnDialogMask; }
+
+#ifdef LIBO_ERRMSG_USE_SOURCE_LOCATION
+ const std::optional<std::experimental::source_location> & GetSourceLocation() const { return moLoc; }
+#endif
+
+ /** convert to ERRCODE_NONE if it's a warning, else return the error */
+ ErrCodeMsg IgnoreWarning() const { return mnCode.IsWarning() ? ErrCodeMsg(ErrCode(0)) : *this; }
+
+ bool IsWarning() const { return mnCode.IsWarning(); }
+ bool IsError() const { return mnCode.IsError(); }
+ explicit operator bool() const { return bool(mnCode); }
+ bool operator==(const ErrCodeMsg& rOther) const { return mnCode == rOther.mnCode; }
+ bool operator!=(const ErrCodeMsg& rOther) const { return mnCode != rOther.mnCode; }
+
+ /// Return a string suitable for debug output, the same as the operator<< function
+ COMPHELPER_DLLPUBLIC OUString toString() const;
+
+private:
+ ErrCode mnCode;
+ OUString maArg1;
+ OUString maArg2;
+ DialogMask mnDialogMask;
+#ifdef LIBO_ERRMSG_USE_SOURCE_LOCATION
+ std::optional<std::experimental::source_location> moLoc;
+#endif
+};
+
+COMPHELPER_DLLPUBLIC std::ostream& operator<<(std::ostream& os, const ErrCodeMsg& err);
+
+inline bool operator==(const ErrCodeMsg& lhs, ErrCode rhs) { return lhs.GetCode() == rhs; }
+inline bool operator!=(const ErrCodeMsg& lhs, ErrCode rhs) { return lhs.GetCode() != rhs; }
+inline bool operator==(ErrCode lhs, const ErrCodeMsg& rhs) { return lhs == rhs.GetCode(); }
+inline bool operator!=(ErrCode lhs, const ErrCodeMsg& rhs) { return lhs != rhs.GetCode(); }
+
enum class ErrCodeArea {
Io = 0 ,
Sfx = 2 ,
diff --git a/include/sfx2/app.hxx b/include/sfx2/app.hxx
index bd214ce2f2e5..96bce367fd75 100644
--- a/include/sfx2/app.hxx
+++ b/include/sfx2/app.hxx
@@ -129,7 +129,7 @@ public:
/**
* @param pArgs Takes ownership
*/
- ErrCode LoadTemplate( SfxObjectShellLock& xDoc, const OUString& rFileName, std::unique_ptr<SfxItemSet> pArgs );
+ ErrCodeMsg LoadTemplate( SfxObjectShellLock& xDoc, const OUString& rFileName, std::unique_ptr<SfxItemSet> pArgs );
weld::Window* GetTopWindow() const;
// members
diff --git a/include/sfx2/docfile.hxx b/include/sfx2/docfile.hxx
index 0b1c417247f5..377bab62830f 100644
--- a/include/sfx2/docfile.hxx
+++ b/include/sfx2/docfile.hxx
@@ -143,14 +143,14 @@ public:
void Download( const Link<void*,void>& aLink = Link<void*,void>());
void SetDoneLink( const Link<void*,void>& rLink );
- ErrCode GetErrorCode() const;
- ErrCode GetErrorIgnoreWarning() const
+ ErrCodeMsg GetErrorCode() const;
+ ErrCodeMsg GetErrorIgnoreWarning() const
{ return GetErrorCode().IgnoreWarning(); }
- ErrCode GetWarningError() const;
- ErrCode const & GetLastStorageCreationState() const;
+ ErrCodeMsg const & GetWarningError() const;
+ ErrCodeMsg const & GetLastStorageCreationState() const;
- void SetError(ErrCode nError);
- void SetWarningError(ErrCode nWarningError);
+ void SetError(ErrCodeMsg nError);
+ void SetWarningError(const ErrCodeMsg& nWarningError);
void CloseInStream();
void CloseOutStream();
diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx
index a214c242a1c7..7e5cb97827a6 100644
--- a/include/sfx2/objsh.hxx
+++ b/include/sfx2/objsh.hxx
@@ -290,9 +290,9 @@ public:
SAL_DLLPRIVATE void SetMacroMode_Impl(bool bModal=true);
void ResetError();
- ErrCode GetErrorIgnoreWarning() const;
- ErrCode GetErrorCode() const;
- void SetError(ErrCode rErr);
+ ErrCodeMsg GetErrorIgnoreWarning() const;
+ ErrCodeMsg GetErrorCode() const;
+ void SetError(const ErrCodeMsg& rErr);
/**
* Initialize bare minimum just enough for unit test runs.
@@ -719,7 +719,7 @@ public:
SAL_DLLPRIVATE static bool UseInteractionToHandleError(
const css::uno::Reference< css::task::XInteractionHandler >& xHandler,
- ErrCode nError );
+ const ErrCodeMsg& nError );
SAL_DLLPRIVATE const SfxObjectShell_Impl* Get_Impl() const { return pImpl.get(); }
SAL_DLLPRIVATE void SetCreateMode_Impl( SfxObjectCreateMode nMode );
diff --git a/include/sfx2/sfxbasemodel.hxx b/include/sfx2/sfxbasemodel.hxx
index 2602387fad59..de7661104451 100644
--- a/include/sfx2/sfxbasemodel.hxx
+++ b/include/sfx2/sfxbasemodel.hxx
@@ -67,6 +67,7 @@
#include <memory>
class ErrCode;
+class ErrCodeMsg;
class SfxMedium;
class SfxObjectShell ;
class SfxViewFrame;
@@ -738,7 +739,7 @@ private:
SAL_DLLPRIVATE void loadCmisProperties();
- SAL_DLLPRIVATE SfxMedium* handleLoadError( ErrCode nError, SfxMedium* pMedium );
+ SAL_DLLPRIVATE SfxMedium* handleLoadError( const ErrCodeMsg& nError, SfxMedium* pMedium );
// private variables and methods
diff --git a/include/svtools/ehdl.hxx b/include/svtools/ehdl.hxx
index 78bcf1723dfe..1f3b8d6cb17e 100644
--- a/include/svtools/ehdl.hxx
+++ b/include/svtools/ehdl.hxx
@@ -40,7 +40,7 @@ public:
SfxErrorContext(
sal_uInt16 nCtxIdP, OUString aArg1, weld::Window *pWin=nullptr,
const ErrMsgCode* pIds = nullptr, const std::locale& rResLocaleP = SvtResLocale());
- bool GetString(ErrCode nErrId, OUString &rStr) override;
+ bool GetString(const ErrCodeMsg& nErrId, OUString &rStr) override;
void SetExtendedMessage(ErrCode nErrId, const OUString& rStr);
@@ -69,7 +69,7 @@ private:
std::locale aResLocale;
SVT_DLLPRIVATE static void GetClassString(ErrCodeClass lErrId, OUString &);
- virtual bool CreateString(const ErrorInfo *, OUString &) const override;
+ virtual bool CreateString(const ErrCodeMsg&, OUString &) const override;
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/errinf.hxx b/include/vcl/errinf.hxx
index 7f2976e23cee..0f4d8d781de7 100644
--- a/include/vcl/errinf.hxx
+++ b/include/vcl/errinf.hxx
@@ -24,7 +24,6 @@
#include <utility>
#include <comphelper/errcode.hxx>
#include <vcl/dllapi.h>
-#include <o3tl/typed_flags_set.hxx>
#include <vector>
#include <memory>
@@ -35,15 +34,12 @@ namespace weld { class Window; }
class ErrorHandler;
class ErrorContext;
-class ErrorInfo;
-class DynamicErrorInfo;
-class ImplDynamicErrorInfo;
enum class DialogMask;
class VCL_DLLPUBLIC ErrorStringFactory
{
public:
- static bool CreateString(const ErrorInfo*, OUString&);
+ static bool CreateString(const ErrCodeMsg&, OUString&);
};
typedef void (* DisplayFnPtr)();
@@ -59,7 +55,6 @@ class VCL_DLLPUBLIC ErrorRegistry
friend class ErrorHandler;
friend class ErrorContext;
friend class ErrorStringFactory;
- friend class ImplDynamicErrorInfo;
public:
ErrorRegistry();
@@ -78,39 +73,9 @@ private:
bool m_bLock;
- sal_uInt16 nNextError;
-
std::vector<ErrorHandler*> errorHandlers;
std::vector<ErrorContext*> contexts;
-
- DynamicErrorInfo* ppDynErrInfo[ERRCODE_DYNAMIC_COUNT];
-};
-
-enum class DialogMask
-{
- NONE = 0x0000,
- ButtonsOk = 0x0001,
- ButtonsCancel = 0x0002,
- ButtonsRetry = 0x0004,
- ButtonsNo = 0x0008,
- ButtonsYes = 0x0010,
- ButtonsYesNo = 0x0018,
-
- ButtonDefaultsOk = 0x0100,
- ButtonDefaultsCancel = 0x0200,
- ButtonDefaultsYes = 0x0300,
- ButtonDefaultsNo = 0x0400,
-
- MessageError = 0x1000,
- MessageWarning = 0x2000,
- MessageInfo = 0x3000,
-
- MAX = USHRT_MAX,
};
-namespace o3tl
-{
- template<> struct typed_flags<DialogMask> : is_typed_flags<DialogMask, 0xffff> {};
-}
class SAL_WARN_UNUSED VCL_DLLPUBLIC ErrorHandler
{
@@ -136,72 +101,11 @@ public:
@return what sort of dialog to use, with what buttons
*/
- static DialogMask HandleError(ErrCode nId, weld::Window* pParent = nullptr, DialogMask nMask = DialogMask::MAX);
- static bool GetErrorString(ErrCode nId, OUString& rStr);
+ static DialogMask HandleError(const ErrCodeMsg& nId, weld::Window* pParent = nullptr, DialogMask nMask = DialogMask::MAX);
+ static bool GetErrorString(const ErrCodeMsg& nId, OUString& rStr);
protected:
- virtual bool CreateString(const ErrorInfo*, OUString &) const = 0;
-
-};
-
-class SAL_WARN_UNUSED VCL_DLLPUBLIC ErrorInfo
-{
-public:
- ErrorInfo(ErrCode nArgUserId) :
- nUserId(nArgUserId) {}
- virtual ~ErrorInfo();
-
- ErrCode const & GetErrorCode() const { return nUserId; }
-
- static std::unique_ptr<ErrorInfo> GetErrorInfo(ErrCode);
-
-private:
- ErrCode nUserId;
-};
-
-class SAL_WARN_UNUSED VCL_DLLPUBLIC DynamicErrorInfo : public ErrorInfo
-{
- friend class ImplDynamicErrorInfo;
-
-public:
- DynamicErrorInfo(ErrCode nUserId, DialogMask nMask);
- virtual ~DynamicErrorInfo() override;
-
- operator ErrCode() const;
- DialogMask GetDialogMask() const;
-
-private:
- std::unique_ptr<ImplDynamicErrorInfo> pImpl;
-
-};
-
-class SAL_WARN_UNUSED VCL_DLLPUBLIC StringErrorInfo final : public DynamicErrorInfo
-{
-public:
- StringErrorInfo(ErrCode nUserId,
- OUString aStringP,
- DialogMask nMask = DialogMask::NONE);
-
- const OUString& GetErrorString() const { return aString; }
-
-private:
- OUString aString;
-
-};
-
-class SAL_WARN_UNUSED VCL_DLLPUBLIC TwoStringErrorInfo final : public DynamicErrorInfo
-{
-public:
- TwoStringErrorInfo(ErrCode nUserID, OUString aTheArg1,
- OUString aTheArg2, DialogMask nMask):
- DynamicErrorInfo(nUserID, nMask), aArg1(std::move(aTheArg1)), aArg2(std::move(aTheArg2)) {}
-
- const OUString& GetArg1() const { return aArg1; }
- const OUString& GetArg2() const { return aArg2; }
-
-private:
- OUString aArg1;
- OUString aArg2;
+ virtual bool CreateString(const ErrCodeMsg&, OUString &) const = 0;
};
@@ -215,7 +119,7 @@ public:
ErrorContext(weld::Window *pWin);
virtual ~ErrorContext();
- virtual bool GetString(ErrCode nErrId, OUString& rCtxStr) = 0;
+ virtual bool GetString(const ErrCodeMsg& nErrId, OUString& rCtxStr) = 0;
weld::Window* GetParent();
static ErrorContext* GetContext();
diff --git a/sc/inc/xmlwrap.hxx b/sc/inc/xmlwrap.hxx
index 53d3b24f65f4..bfae5363cfbd 100644
--- a/sc/inc/xmlwrap.hxx
+++ b/sc/inc/xmlwrap.hxx
@@ -65,7 +65,7 @@ class ScXMLImportWrapper
css::uno::Reference< css::task::XStatusIndicator> GetStatusIndicator() const;
- ErrCode ImportFromComponent(const css::uno::Reference<css::uno::XComponentContext>& xContext,
+ ErrCodeMsg ImportFromComponent(const css::uno::Reference<css::uno::XComponentContext>& xContext,
const css::uno::Reference<css::frame::XModel>& xModel,
css::xml::sax::InputSource& aParserInput,
const OUString& sComponentName, const OUString& sDocName,
@@ -85,7 +85,7 @@ public:
ScXMLImportWrapper(
ScDocShell& rDocSh, SfxMedium* pM, css::uno::Reference<css::embed::XStorage> xStor );
- bool Import( ImportFlags nMode, ErrCode& rError );
+ bool Import( ImportFlags nMode, ErrCodeMsg& rError );
bool Export(bool bStylesOnly);
const sc::ImportPostProcessData& GetImportPostProcessData() const { return maPostProcessData;}
diff --git a/sc/source/filter/xml/xmlwrap.cxx b/sc/source/filter/xml/xmlwrap.cxx
index f7bbaa2a5301..d1a8677f0a5f 100644
--- a/sc/source/filter/xml/xmlwrap.cxx
+++ b/sc/source/filter/xml/xmlwrap.cxx
@@ -101,7 +101,7 @@ uno::Reference <task::XStatusIndicator> ScXMLImportWrapper::GetStatusIndicator()
return xStatusIndicator;
}
-ErrCode ScXMLImportWrapper::ImportFromComponent(const uno::Reference<uno::XComponentContext>& xContext,
+ErrCodeMsg ScXMLImportWrapper::ImportFromComponent(const uno::Reference<uno::XComponentContext>& xContext,
const uno::Reference<frame::XModel>& xModel,
xml::sax::InputSource& aParserInput,
const OUString& sComponentName, const OUString& sDocName,
@@ -155,7 +155,7 @@ ErrCode ScXMLImportWrapper::ImportFromComponent(const uno::Reference<uno::XCompo
xInfoSet->setPropertyValue( "StreamName", uno::Any( sStream ) );
}
- ErrCode nReturn = ERRCODE_NONE;
+ ErrCodeMsg nReturn = ERRCODE_NONE;
rDoc.SetRangeOverflowType(ERRCODE_NONE); // is modified by the importer if limits are exceeded
uno::Reference<XInterface> xImportInterface =
@@ -219,7 +219,7 @@ ErrCode ScXMLImportWrapper::ImportFromComponent(const uno::Reference<uno::XCompo
if( !sDocName.isEmpty() )
{
- nReturn = *new TwoStringErrorInfo(
+ nReturn = ErrCodeMsg(
(bMustBeSuccessful ? SCERR_IMPORT_FILE_ROWCOL
: SCWARN_IMPORT_FILE_ROWCOL),
sDocName, sErr,
@@ -228,7 +228,7 @@ ErrCode ScXMLImportWrapper::ImportFromComponent(const uno::Reference<uno::XCompo
else
{
OSL_ENSURE( bMustBeSuccessful, "Warnings are not supported" );
- nReturn = *new StringErrorInfo( SCERR_IMPORT_FORMAT_ROWCOL, sErr,
+ nReturn = ErrCodeMsg( SCERR_IMPORT_FORMAT_ROWCOL, sErr,
DialogMask::ButtonsOk | DialogMask::MessageError );
}
}
@@ -279,7 +279,7 @@ ErrCode ScXMLImportWrapper::ImportFromComponent(const uno::Reference<uno::XCompo
return nReturn;
}
-bool ScXMLImportWrapper::Import( ImportFlags nMode, ErrCode& rError )
+bool ScXMLImportWrapper::Import( ImportFlags nMode, ErrCodeMsg& rError )
{
uno::Reference<uno::XComponentContext> xContext = comphelper::getProcessComponentContext();
@@ -410,7 +410,7 @@ bool ScXMLImportWrapper::Import( ImportFlags nMode, ErrCode& rError )
}
// #i103539#: always read meta.xml for generator
- ErrCode nMetaRetval(ERRCODE_NONE);
+ ErrCodeMsg nMetaRetval(ERRCODE_NONE);
if (nMode & ImportFlags::Metadata)
{
uno::Sequence<uno::Any> aMetaArgs { Any(xInfoSet) };
@@ -448,7 +448,7 @@ bool ScXMLImportWrapper::Import( ImportFlags nMode, ErrCode& rError )
Any(xObjectResolver)
};
- ErrCode nSettingsRetval(ERRCODE_NONE);
+ ErrCodeMsg nSettingsRetval(ERRCODE_NONE);
if (nMode & ImportFlags::Settings)
{
// Settings must be loaded first because of the printer setting,
@@ -467,7 +467,7 @@ bool ScXMLImportWrapper::Import( ImportFlags nMode, ErrCode& rError )
SAL_INFO( "sc.filter", "settings import end" );
}
- ErrCode nStylesRetval(ERRCODE_NONE);
+ ErrCodeMsg nStylesRetval(ERRCODE_NONE);
if (nMode & ImportFlags::Styles)
{
SAL_INFO( "sc.filter", "styles import start" );
@@ -481,7 +481,7 @@ bool ScXMLImportWrapper::Import( ImportFlags nMode, ErrCode& rError )
SAL_INFO( "sc.filter", "styles import end" );
}
- ErrCode nDocRetval(ERRCODE_NONE);
+ ErrCodeMsg nDocRetval(ERRCODE_NONE);
if (nMode & ImportFlags::Content)
{
if (mrDocShell.GetCreateMode() == SfxObjectCreateMode::INTERNAL)
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index 32c7aa03022f..a869e740083c 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -509,7 +509,7 @@ bool ScDocShell::LoadXML( SfxMedium* pLoadMedium, const css::uno::Reference< css
ScXMLImportWrapper aImport(*this, pLoadMedium, xStor);
bool bRet = false;
- ErrCode nError = ERRCODE_NONE;
+ ErrCodeMsg nError = ERRCODE_NONE;
m_pDocument->LockAdjustHeight();
if (GetCreateMode() == SfxObjectCreateMode::ORGANIZER)
bRet = aImport.Import(ImportFlags::Styles, nError);
@@ -2606,7 +2606,7 @@ bool ScDocShell::ConvertTo( SfxMedium &rMed )
rMed.CloseOutStream();
bool bHasMemo = false;
- ErrCode eError = DBaseExport(
+ ErrCodeMsg eError = DBaseExport(
rMed.GetPhysicalName(), ScGlobal::GetCharsetValue(sCharSet), bHasMemo);
INetURLObject aTmpFile( rMed.GetPhysicalName(), INetProtocol::File );
@@ -2717,7 +2717,7 @@ bool ScDocShell::ConvertTo( SfxMedium &rMed )
bRet = aImExport.ExportStream(*pStream, rMed.GetBaseURL(true), SotClipboardFormatId::HTML);
if (bRet && !aImExport.GetNonConvertibleChars().isEmpty())
{
- SetError(*new StringErrorInfo(
+ SetError(ErrCodeMsg(
SCWARN_EXPORT_NONCONVERTIBLE_CHARS,
aImExport.GetNonConvertibleChars(),
DialogMask::ButtonsOk | DialogMask::MessageInfo));
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 377b8cff1943..0843e6580946 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -834,7 +834,7 @@ void ScDocShell::Execute( SfxRequest& rReq )
ScDocShell* pOtherDocSh = new ScDocShell;
SfxObjectShellLock aDocShTablesRef = pOtherDocSh;
pOtherDocSh->DoLoad( pMed );
- ErrCode nErr = pOtherDocSh->GetErrorCode();
+ ErrCodeMsg nErr = pOtherDocSh->GetErrorCode();
if (nErr)
ErrorHandler::HandleError( nErr ); // also warnings
diff --git a/sc/source/ui/docshell/docsh8.cxx b/sc/source/ui/docshell/docsh8.cxx
index 83a2394d661c..44a080770a15 100644
--- a/sc/source/ui/docshell/docsh8.cxx
+++ b/sc/source/ui/docshell/docsh8.cxx
@@ -726,7 +726,7 @@ void lcl_getLongVarCharString(
#endif // HAVE_FEATURE_DBCONNECTIVITY
-ErrCode ScDocShell::DBaseExport( const OUString& rFullFileName, rtl_TextEncoding eCharSet, bool& bHasMemo )
+ErrCodeMsg ScDocShell::DBaseExport( const OUString& rFullFileName, rtl_TextEncoding eCharSet, bool& bHasMemo )
{
#if !HAVE_FEATURE_DBCONNECTIVITY
(void) rFullFileName;
@@ -739,7 +739,7 @@ ErrCode ScDocShell::DBaseExport( const OUString& rFullFileName, rtl_TextEncoding
INetURLObject aDeleteObj( rFullFileName, INetProtocol::File );
KillFile( aDeleteObj );
- ErrCode nErr = ERRCODE_NONE;
+ ErrCodeMsg nErr = ERRCODE_NONE;
SCCOL nFirstCol, nLastCol;
SCROW nFirstRow, nLastRow;
@@ -1060,12 +1060,12 @@ ErrCode ScDocShell::DBaseExport( const OUString& rFullFileName, rtl_TextEncoding
}
OUString sPosition(ScAddress(nDocCol, nDocRow, nTab).GetColRowString());
OUString sEncoding(SvxTextEncodingTable::GetTextString(eCharSet));
- nErr = *new TwoStringErrorInfo( (bEncErr ? SCERR_EXPORT_ENCODING :
+ nErr = ErrCodeMsg( (bEncErr ? SCERR_EXPORT_ENCODING :
SCERR_EXPORT_FIELDWIDTH), sPosition, sEncoding,
DialogMask::ButtonsOk | DialogMask::MessageError);
}
else if ( !aException.Message.isEmpty() )
- nErr = *new StringErrorInfo( SCERR_EXPORT_SQLEXCEPTION, aException.Message, DialogMask::ButtonsOk | DialogMask::MessageError);
+ nErr = ErrCodeMsg( SCERR_EXPORT_SQLEXCEPTION, aException.Message, DialogMask::ButtonsOk | DialogMask::MessageError);
else
nErr = SCERR_EXPORT_DATA;
}
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
index 58741d563737..a2bbb5454573 100644
--- a/sc/source/ui/inc/docsh.hxx
+++ b/sc/source/ui/inc/docsh.hxx
@@ -137,7 +137,7 @@ class SC_DLLPUBLIC ScDocShell final: public SfxObjectShell, public SfxListener
SAL_DLLPRIVATE ErrCode DBaseImport( const OUString& rFullFileName, rtl_TextEncoding eCharSet,
std::map<SCCOL, ScColWidthParam>& aColWidthParam, ScFlatBoolRowSegments& rRowHeightsRecalc );
- SAL_DLLPRIVATE ErrCode DBaseExport(
+ SAL_DLLPRIVATE ErrCodeMsg DBaseExport(
const OUString& rFullFileName, rtl_TextEncoding eCharSet, bool& bHasMemo );
SAL_DLLPRIVATE static bool MoveFile( const INetURLObject& rSource, const INetURLObject& rDest );
diff --git a/sc/source/ui/miscdlgs/instbdlg.cxx b/sc/source/ui/miscdlgs/instbdlg.cxx
index 8d92699e70f8..e34b22a6f336 100644
--- a/sc/source/ui/miscdlgs/instbdlg.cxx
+++ b/sc/source/ui/miscdlgs/instbdlg.cxx
@@ -325,7 +325,7 @@ IMPL_LINK( ScInsertTableDlg, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg
pDocShTables->DoLoad(pMed.release());
}
- ErrCode nErr = pDocShTables->GetErrorCode();
+ ErrCodeMsg nErr = pDocShTables->GetErrorCode();
if ( nErr )
ErrorHandler::HandleError(nErr, m_xDialog.get()); // warnings, too
diff --git a/sc/source/ui/miscdlgs/linkarea.cxx b/sc/source/ui/miscdlgs/linkarea.cxx
index 00d508a6661b..f0cdad08e370 100644
--- a/sc/source/ui/miscdlgs/linkarea.cxx
+++ b/sc/source/ui/miscdlgs/linkarea.cxx
@@ -127,7 +127,7 @@ void ScLinkedAreaDlg::LoadDocument( const OUString& rFile, const OUString& rFilt
m_pSourceShell = aLoader.GetDocShell();
if (m_pSourceShell)
{
- ErrCode nErr = m_pSourceShell->GetErrorCode();
+ ErrCodeMsg nErr = m_pSourceShell->GetErrorCode();
if (nErr)
ErrorHandler::HandleError( nErr ); // including warnings
@@ -211,7 +211,7 @@ IMPL_LINK( ScLinkedAreaDlg, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg,
aSourceRef = m_pSourceShell;
m_pSourceShell->DoLoad( pMed.get() );
- ErrCode nErr = m_pSourceShell->GetErrorCode();
+ ErrCodeMsg nErr = m_pSourceShell->GetErrorCode();
if (nErr)
ErrorHandler::HandleError( nErr ); // including warnings
diff --git a/sd/source/filter/xml/sdxmlwrp.cxx b/sd/source/filter/xml/sdxmlwrp.cxx
index 6dba0df7b4db..3c66afcd5f16 100644
--- a/sd/source/filter/xml/sdxmlwrp.cxx
+++ b/sd/source/filter/xml/sdxmlwrp.cxx
@@ -166,7 +166,7 @@ SdXMLFilter::~SdXMLFilter()
namespace
{
-ErrCode ReadThroughComponent(
+ErrCodeMsg ReadThroughComponent(
const Reference<io::XInputStream>& xInputStream,
const Reference<XComponent>& xModelComponent,
const OUString& rStreamName,
@@ -259,7 +259,7 @@ ErrCode ReadThroughComponent(
if (!rStreamName.isEmpty())
{
- return *new TwoStringErrorInfo(
+ return ErrCodeMsg(
(bMustBeSuccessful ? ERR_FORMAT_FILE_ROWCOL
: WARN_FORMAT_FILE_ROWCOL),
rStreamName, sErr,
@@ -268,7 +268,7 @@ ErrCode ReadThroughComponent(
else
{
DBG_ASSERT( bMustBeSuccessful, "Warnings are not supported" );
- return *new StringErrorInfo( ERR_FORMAT_ROWCOL, sErr,
+ return ErrCodeMsg( ERR_FORMAT_ROWCOL, sErr,
DialogMask::ButtonsOk | DialogMask::MessageError );
}
}
@@ -305,7 +305,7 @@ ErrCode ReadThroughComponent(
return ERRCODE_NONE;
}
-ErrCode ReadThroughComponent(
+ErrCodeMsg ReadThroughComponent(
const uno::Reference < embed::XStorage >& xStorage,
const Reference<XComponent>& xModelComponent,
const char* pStreamName,
@@ -442,7 +442,7 @@ static void fixupOutlinePlaceholderNumberingDepths(SdDrawDocument* pDoc)
bool SdXMLFilter::Import( ErrCode& nError )
{
- ErrCode nRet = ERRCODE_NONE;
+ ErrCodeMsg nRet = ERRCODE_NONE;
// Get service factory
Reference< uno::XComponentContext > rxContext =
@@ -591,8 +591,8 @@ bool SdXMLFilter::Import( ErrCode& nError )
XML_SERVICES const * pServices = getServices( true, IsDraw(), mnStoreVer );
- ErrCode nWarn = ERRCODE_NONE;
- ErrCode nWarn2 = ERRCODE_NONE;
+ ErrCodeMsg nWarn = ERRCODE_NONE;
+ ErrCodeMsg nWarn2 = ERRCODE_NONE;
// read storage streams
// #i103539#: always read meta.xml for generator
nWarn = ReadThroughComponent(
@@ -646,7 +646,7 @@ bool SdXMLFilter::Import( ErrCode& nError )
if( nRet == ERRCODE_NONE )
pDoc->UpdateAllLinks();
- if( nRet.anyOf( ERRCODE_NONE, SD_XML_READERROR ) )
+ if( nRet == ERRCODE_NONE || nRet == SD_XML_READERROR )
;
else if( nRet == ERRCODE_IO_BROKENPACKAGE && xStorage.is() )
nError = ERRCODE_IO_BROKENPACKAGE;
diff --git a/sd/source/ui/app/sdmod1.cxx b/sd/source/ui/app/sdmod1.cxx
index 0a4f7d5e587b..e35ee5c3e518 100644
--- a/sd/source/ui/app/sdmod1.cxx
+++ b/sd/source/ui/app/sdmod1.cxx
@@ -421,7 +421,7 @@ SfxFrame* SdModule::CreateFromTemplate(const OUString& rTemplatePath, const Refe
std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet( SfxGetpApp()->GetPool() ));
pSet->Put( SfxBoolItem( SID_TEMPLATE, true ) );
- ErrCode lErr = SfxGetpApp()->LoadTemplate( xDocShell, rTemplatePath, std::move(pSet) );
+ ErrCodeMsg lErr = SfxGetpApp()->LoadTemplate( xDocShell, rTemplatePath, std::move(pSet) );
SfxObjectShell* pDocShell = xDocShell;
diff --git a/sd/source/ui/func/fuinsert.cxx b/sd/source/ui/func/fuinsert.cxx
index 64b266f42060..28a4c102b3c0 100644
--- a/sd/source/ui/func/fuinsert.cxx
+++ b/sd/source/ui/func/fuinsert.cxx
@@ -423,8 +423,7 @@ void FuInsertOLE::DoExecute( SfxRequest& rReq )
}
else
{
- ErrorHandler::HandleError(* new StringErrorInfo(ERRCODE_SFX_OLEGENERAL,
- "" ) );
+ ErrorHandler::HandleError(ErrCodeMsg(ERRCODE_SFX_OLEGENERAL));
}
}
else
diff --git a/sd/source/ui/view/viewshe2.cxx b/sd/source/ui/view/viewshe2.cxx
index fd4d2649b4fd..b7ae44f2c3e1 100644
--- a/sd/source/ui/view/viewshe2.cxx
+++ b/sd/source/ui/view/viewshe2.cxx
@@ -779,7 +779,7 @@ bool ViewShell::ActivateObject(SdrOle2Obj* pObj, sal_Int32 nVerb)
if (aErrCode != ERRCODE_NONE && !bAbort)
{
- ErrorHandler::HandleError(* new StringErrorInfo(aErrCode, OUString() ) );
+ ErrorHandler::HandleError(ErrCodeMsg(aErrCode));
}
return aErrCode == ERRCODE_NONE;
diff --git a/sfx2/source/appl/app.cxx b/sfx2/source/appl/app.cxx
index c5a1d1614145..6ae9810345e5 100644
--- a/sfx2/source/appl/app.cxx
+++ b/sfx2/source/appl/app.cxx
@@ -409,8 +409,8 @@ IMPL_STATIC_LINK( SfxApplication, GlobalBasicErrorHdl_Impl, StarBASIC*, pStarBas
if (comphelper::LibreOfficeKit::isActive())
{
OUString aError;
- std::unique_ptr<ErrorInfo> pErrorInfo = ErrorInfo::GetErrorInfo(StarBASIC::GetErrorCode());
- if (ErrorStringFactory::CreateString(pErrorInfo.get(), aError))
+ ErrCodeMsg nErr = StarBASIC::GetErrorCode();
+ if (ErrorStringFactory::CreateString(nErr, aError))
{
const SfxViewFrame* pViewFrame = SfxViewFrame::Current();
std::shared_ptr<weld::MessageDialog> xBox;
diff --git a/sfx2/source/appl/appopen.cxx b/sfx2/source/appl/appopen.cxx
index 5d35c403903d..8e069c14e256 100644
--- a/sfx2/source/appl/appopen.cxx
+++ b/sfx2/source/appl/appopen.cxx
@@ -287,7 +287,7 @@ ErrCode CheckPasswd_Impl
}
-ErrCode SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const OUString &rFileName, std::unique_ptr<SfxItemSet> pSet )
+ErrCodeMsg SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const OUString &rFileName, std::unique_ptr<SfxItemSet> pSet )
{
std::shared_ptr<const SfxFilter> pFilter;
SfxMedium aMedium( rFileName, ( StreamMode::READ | StreamMode::SHARE_DENYNONE ) );
@@ -348,7 +348,7 @@ ErrCode SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const OUString &
SfxMedium *pMedium = new SfxMedium( rFileName, StreamMode::STD_READ, pFilter, std::move(pSet) );
if(!xDoc->DoLoad(pMedium))
{
- ErrCode nErrCode = xDoc->GetErrorCode();
+ ErrCodeMsg nErrCode = xDoc->GetErrorCode();
xDoc->DoClose();
xDoc.Clear();
return nErrCode;
diff --git a/sfx2/source/doc/DocumentMetadataAccess.cxx b/sfx2/source/doc/DocumentMetadataAccess.cxx
index 71ce92d22766..b58d8460ebd1 100644
--- a/sfx2/source/doc/DocumentMetadataAccess.cxx
+++ b/sfx2/source/doc/DocumentMetadataAccess.cxx
@@ -1361,13 +1361,13 @@ DocumentMetadataAccess::storeMetadataToMedium(
const bool bOk = aMedium.Commit();
aMedium.Close();
if ( !bOk ) {
- ErrCode nError = aMedium.GetErrorIgnoreWarning();
+ ErrCodeMsg nError = aMedium.GetErrorIgnoreWarning();
if ( nError == ERRCODE_NONE ) {
nError = ERRCODE_IO_GENERAL;
}
task::ErrorCodeIOException ex(
"DocumentMetadataAccess::storeMetadataToMedium Commit failed: " + nError.toString(),
- uno::Reference< uno::XInterface >(), sal_uInt32(nError));
+ uno::Reference< uno::XInterface >(), sal_uInt32(nError.GetCode()));
throw lang::WrappedTargetException(OUString(), *this,
uno::Any(ex));
}
diff --git a/sfx2/source/doc/SfxDocumentMetaData.cxx b/sfx2/source/doc/SfxDocumentMetaData.cxx
index 1e47fa955b48..c38e6bfd22cf 100644
--- a/sfx2/source/doc/SfxDocumentMetaData.cxx
+++ b/sfx2/source/doc/SfxDocumentMetaData.cxx
@@ -2127,14 +2127,14 @@ SfxDocumentMetaData::storeToMedium(const OUString & URL,
const bool bOk = aMedium.Commit();
aMedium.Close();
if ( !bOk ) {
- ErrCode nError = aMedium.GetErrorIgnoreWarning();
+ ErrCodeMsg nError = aMedium.GetErrorIgnoreWarning();
if ( nError == ERRCODE_NONE ) {
nError = ERRCODE_IO_GENERAL;
}
throw css::task::ErrorCodeIOException(
"SfxDocumentMetaData::storeToMedium <" + URL + "> Commit failed: " + nError.toString(),
- css::uno::Reference< css::uno::XInterface >(), sal_uInt32(nError));
+ css::uno::Reference< css::uno::XInterface >(), sal_uInt32(nError.GetCode()));
}
}
diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx
index 7b65615da4df..3b975bb1add9 100644
--- a/sfx2/source/doc/docfile.cxx
+++ b/sfx2/source/doc/docfile.cxx
@@ -347,8 +347,8 @@ class SfxMedium_Impl
{
public:
StreamMode m_nStorOpenMode;
- ErrCode m_eError;
- ErrCode m_eWarningError;
+ ErrCodeMsg m_eError;
+ ErrCodeMsg m_eWarningError;
::ucbhelper::Content aContent;
bool bUpdatePickList:1;
@@ -411,7 +411,7 @@ public:
uno::Reference<io::XStream> m_xLockingStream;
uno::Reference<task::XInteractionHandler> xInteraction;
- ErrCode nLastStorageError;
+ ErrCodeMsg nLastStorageError;
OUString m_aBackupURL;
@@ -489,29 +489,29 @@ void SfxMedium::ResetError()
pImpl->m_pOutStream->ResetError();
}
-ErrCode SfxMedium::GetWarningError() const
+ErrCodeMsg const & SfxMedium::GetWarningError() const
{
return pImpl->m_eWarningError;
}
-ErrCode const & SfxMedium::GetLastStorageCreationState() const
+ErrCodeMsg const & SfxMedium::GetLastStorageCreationState() const
{
return pImpl->nLastStorageError;
}
-void SfxMedium::SetError(ErrCode nError)
+void SfxMedium::SetError(ErrCodeMsg nError)
{
pImpl->m_eError = nError;
}
-void SfxMedium::SetWarningError(ErrCode nWarningError)
+void SfxMedium::SetWarningError(const ErrCodeMsg& nWarningError)
{
pImpl->m_eWarningError = nWarningError;
}
-ErrCode SfxMedium::GetErrorCode() const
+ErrCodeMsg SfxMedium::GetErrorCode() const
{
- ErrCode lError = pImpl->m_eError;
+ ErrCodeMsg lError = pImpl->m_eError;
if(!lError && pImpl->m_pInStream)
lError = pImpl->m_pInStream->GetErrorCode();
if(!lError && pImpl->m_pOutStream)
@@ -1786,7 +1786,8 @@ uno::Reference < embed::XStorage > SfxMedium::GetStorage( bool bCreateTempFile )
// impossibility to create the storage is no error
}
- if( ( pImpl->nLastStorageError = GetErrorIgnoreWarning() ) != ERRCODE_NONE )
+ pImpl->nLastStorageError = GetErrorIgnoreWarning();
+ if( pImpl->nLastStorageError != ERRCODE_NONE )
{
pImpl->xStorage = nullptr;
if ( pImpl->m_pInStream )
@@ -2907,8 +2908,8 @@ void SfxMedium::GetMedium_Impl()
pImpl->bDownloadDone = true;
pImpl->aDoneLink.ClearPendingCall();
- ErrCode nError = GetErrorIgnoreWarning();
- pImpl->aDoneLink.Call( reinterpret_cast<void*>(sal_uInt32(nError)) );
+ ErrCodeMsg nError = GetErrorIgnoreWarning();
+ pImpl->aDoneLink.Call( reinterpret_cast<void*>(sal_uInt32(nError.GetCode())) );
}
bool SfxMedium::IsRemote() const
diff --git a/sfx2/source/doc/new.cxx b/sfx2/source/doc/new.cxx
index a9bba4f0fc2d..a4d2153f6684 100644
--- a/sfx2/source/doc/new.cxx
+++ b/sfx2/source/doc/new.cxx
@@ -149,7 +149,7 @@ IMPL_LINK_NOARG(SfxNewFileDialog, Update, Timer*, void)
std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet(pSfxApp->GetPool()));
pSet->Put(SfxBoolItem(SID_TEMPLATE, true));
pSet->Put(SfxBoolItem(SID_PREVIEW, true));
- ErrCode lErr = pSfxApp->LoadTemplate(m_xDocShell, aFileName, std::move(pSet));
+ ErrCodeMsg lErr = pSfxApp->LoadTemplate(m_xDocShell, aFileName, std::move(pSet));
if (lErr)
ErrorHandler::HandleError(lErr);
if (!m_xDocShell.Is())
diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx
index db7b972b67d8..69d0ac4b3bea 100644
--- a/sfx2/source/doc/objmisc.cxx
+++ b/sfx2/source/doc/objmisc.cxx
@@ -209,7 +209,7 @@ std::vector<InfobarData>& SfxObjectShell::getPendingInfobars()
return Get_Impl()->m_aPendingInfobars;
}
-void SfxObjectShell::SetError(ErrCode lErr)
+void SfxObjectShell::SetError(const ErrCodeMsg& lErr)
{
if (pImpl->lErr==ERRCODE_NONE)
{
@@ -217,14 +217,14 @@ void SfxObjectShell::SetError(ErrCode lErr)
}
}
-ErrCode SfxObjectShell::GetErrorIgnoreWarning() const
+ErrCodeMsg SfxObjectShell::GetErrorIgnoreWarning() const
{
return GetErrorCode().IgnoreWarning();
}
-ErrCode SfxObjectShell::GetErrorCode() const
+ErrCodeMsg SfxObjectShell::GetErrorCode() const
{
- ErrCode lError=pImpl->lErr;
+ ErrCodeMsg lError=pImpl->lErr;
if(!lError && GetMedium())
lError=GetMedium()->GetErrorCode();
return lError;
@@ -1693,7 +1693,7 @@ bool SfxObjectShell::IsUIActive() const
bool SfxObjectShell::UseInteractionToHandleError(
const uno::Reference< task::XInteractionHandler >& xHandler,
- ErrCode nError )
+ const ErrCodeMsg& nError )
{
bool bResult = false;
@@ -1709,7 +1709,7 @@ bool SfxObjectShell::UseInteractionToHandleError(
};
task::ErrorCodeRequest aErrorCode;
- aErrorCode.ErrCode = sal_uInt32(nError);
+ aErrorCode.ErrCode = sal_uInt32(nError.GetCode());
aInteraction <<= aErrorCode;
xHandler->handle(::framework::InteractionRequest::CreateRequest (aInteraction,lContinuations));
bResult = pAbort->wasSelected();
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index 6308de92e3c6..7dddb84e5fac 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -447,9 +447,9 @@ uno::Reference<security::XCertificate> SfxObjectShell::GetSignPDFCertificate() c
return uno::Reference<security::XCertificate>(it->second, uno::UNO_QUERY);
}
-static void sendErrorToLOK(ErrCode error)
+static void sendErrorToLOK(ErrCodeMsg error)
{
- if (error.GetClass() == ErrCodeClass::NONE)
+ if (error.GetCode().GetClass() == ErrCodeClass::NONE)
return;
boost::property_tree::ptree aTree;
@@ -457,9 +457,8 @@ static void sendErrorToLOK(ErrCode error)
aTree.put("kind", "");
aTree.put("cmd", "");
- std::unique_ptr<ErrorInfo> pInfo = ErrorInfo::GetErrorInfo(error);
OUString aErr;
- if (ErrorStringFactory::CreateString(pInfo.get(), aErr))
+ if (ErrorStringFactory::CreateString(error, aErr))
aTree.put("message", aErr.toUtf8());
std::stringstream aStream;
@@ -937,7 +936,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
// at the end of the method
aModelGuard.Init_Impl( uno::Reference< util::XCloseable >( GetModel(), uno::UNO_QUERY ) );
- ErrCode nErrorCode = ERRCODE_NONE;
+ ErrCodeMsg nErrorCode = ERRCODE_NONE;
// by default versions should be preserved always except in case of an explicit
// SaveAs via GUI, so the flag must be set accordingly
@@ -1120,7 +1119,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
// by default versions should be preserved always except in case of an explicit
// SaveAs via GUI, so the flag must be reset to guarantee this
pImpl->bPreserveVersions = true;
- ErrCode lErr=GetErrorCode();
+ ErrCodeMsg lErr=GetErrorCode();
if ( !lErr && nErrorCode )
lErr = nErrorCode;
@@ -1309,7 +1308,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
}
SetModified( false );
- ErrCode lErr = GetErrorCode();
+ ErrCodeMsg lErr = GetErrorCode();
if (comphelper::LibreOfficeKit::isActive())
sendErrorToLOK(lErr);
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index ee7358eed5be..8a1978681f99 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -2327,13 +2327,13 @@ bool SfxObjectShell::ImportFrom(SfxMedium& rMedium,
io::WrongFormatException e;
if (rWrapped.TargetException >>= e)
{
- SetError(*new StringErrorInfo(ERRCODE_SFX_FORMAT_ROWCOL,
+ SetError(ErrCodeMsg(ERRCODE_SFX_FORMAT_ROWCOL,
e.Message, DialogMask::ButtonsOk | DialogMask::MessageError ));
}
}
catch (const css::io::IOException& e)
{
- SetError(*new StringErrorInfo(ERRCODE_SFX_FORMAT_ROWCOL,
+ SetError(ErrCodeMsg(ERRCODE_SFX_FORMAT_ROWCOL,
e.Message, DialogMask::ButtonsOk | DialogMask::MessageError ));
}
catch (const std::exception& e)
@@ -2341,7 +2341,7 @@ bool SfxObjectShell::ImportFrom(SfxMedium& rMedium,
const char *msg = e.what();
const OUString sError(msg, strlen(msg), RTL_TEXTENCODING_ASCII_US);
SAL_WARN("sfx.doc", "exception importing " << sError);
- SetError(*new StringErrorInfo(ERRCODE_SFX_DOLOADFAILED,
+ SetError(ErrCodeMsg(ERRCODE_SFX_DOLOADFAILED,
sError, DialogMask::ButtonsOk | DialogMask::MessageError));
}
catch (...)
@@ -2640,7 +2640,7 @@ bool SfxObjectShell::DoSave_Impl( const SfxItemSet* pArgs )
else
{
// transfer error code from medium to objectshell
- ErrCode errCode = pMediumTmp->GetErrorIgnoreWarning();
+ ErrCodeMsg errCode = pMediumTmp->GetErrorIgnoreWarning();
SetError(errCode);
if (errCode == ERRCODE_ABORT)
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index 761bd16d2a76..43d4bf3bdc19 100644
--- a/sfx2/source/doc/sfxbasemodel.cxx
+++ b/sfx2/source/doc/sfxbasemodel.cxx
@@ -1697,7 +1697,7 @@ void SAL_CALL SfxBaseModel::storeSelf( const Sequence< beans::PropertyValue >
pParams.reset();
- ErrCode nErrCode = m_pData->m_pObjectShell->GetErrorIgnoreWarning() ? m_pData->m_pObjectShell->GetErrorIgnoreWarning()
+ ErrCodeMsg nErrCode = m_pData->m_pObjectShell->GetErrorIgnoreWarning() ? m_pData->m_pObjectShell->GetErrorIgnoreWarning()
: ERRCODE_IO_CANTWRITE;
m_pData->m_pObjectShell->ResetError();
@@ -1714,7 +1714,7 @@ void SAL_CALL SfxBaseModel::storeSelf( const Sequence< beans::PropertyValue >
throw task::ErrorCodeIOException(
"SfxBaseModel::storeSelf: " + nErrCode.toString(),
- Reference< XInterface >(), sal_uInt32(nErrCode));
+ Reference< XInterface >(), sal_uInt32(nErrCode.GetCode()));
}
}
@@ -1882,14 +1882,14 @@ void SAL_CALL SfxBaseModel::initNew()
throw frame::DoubleInitializationException();
bool bRes = m_pData->m_pObjectShell->DoInitNew();
- ErrCode nErrCode = m_pData->m_pObjectShell->GetErrorIgnoreWarning() ?
+ ErrCodeMsg nErrCode = m_pData->m_pObjectShell->GetErrorIgnoreWarning() ?
m_pData->m_pObjectShell->GetErrorIgnoreWarning() : ERRCODE_IO_CANTCREATE;
m_pData->m_pObjectShell->ResetError();
if ( !bRes )
throw task::ErrorCodeIOException(
"SfxBaseModel::initNew: " + nErrCode.toString(),
- Reference< XInterface >(), sal_uInt32(nErrCode));
+ Reference< XInterface >(), sal_uInt32(nErrCode.GetCode()));
}
namespace {
@@ -1936,7 +1936,7 @@ void SAL_CALL SfxBaseModel::load( const Sequence< beans::PropertyValue >& seqA
SfxMedium* pMedium = new SfxMedium( seqArguments );
- ErrCode nError = ERRCODE_NONE;
+ ErrCodeMsg nError = ERRCODE_NONE;
if (!getFilterProvider(*pMedium).isEmpty())
{
if (!m_pData->m_pObjectShell->DoLoadExternal(pMedium))
@@ -2793,14 +2793,15 @@ void SfxBaseModel::loadCmisProperties( )
}
}
-SfxMedium* SfxBaseModel::handleLoadError( ErrCode nError, SfxMedium* pMedium )
+SfxMedium* SfxBaseModel::handleLoadError( const ErrCodeMsg& rError, SfxMedium* pMedium )
{
- if (!nError)
+ if (!rError)
{
// No error condition.
return pMedium;
}
+ ErrCodeMsg nError = rError;
bool bSilent = false;
const SfxBoolItem* pSilentItem = pMedium->GetItemSet().GetItem(SID_SILENT, false);
if( pSilentItem )
@@ -2830,7 +2831,7 @@ SfxMedium* SfxBaseModel::handleLoadError( ErrCode nError, SfxMedium* pMedium )
nError = nError ? nError : ERRCODE_IO_CANTREAD;
throw task::ErrorCodeIOException(
"SfxBaseModel::handleLoadError: 0x" + nError.toString(),
- Reference< XInterface >(), sal_uInt32(nError));
+ Reference< XInterface >(), sal_uInt32(nError.GetCode()));
}
else
pMedium->SetWarningError(nError);
@@ -3204,7 +3205,7 @@ void SfxBaseModel::impl_store( const OUString& sURL
pItemSet.reset();
- ErrCode nErrCode = m_pData->m_pObjectShell->GetErrorCode();
+ ErrCodeMsg nErrCode = m_pData->m_pObjectShell->GetErrorCode();
if ( !bRet && !nErrCode )
{
SAL_WARN("sfx.doc", "Storing has failed, no error is set!");
@@ -3223,7 +3224,7 @@ void SfxBaseModel::impl_store( const OUString& sURL
SfxErrorContext aEc( ERRCTX_SFX_SAVEASDOC, m_pData->m_pObjectShell->GetTitle() );
task::ErrorCodeRequest aErrorCode;
- aErrorCode.ErrCode = sal_uInt32(nErrCode);
+ aErrorCode.ErrCode = sal_uInt32(nErrCode.GetCode());
SfxMedium::CallApproveHandler( xHandler, Any( aErrorCode ), false );
}
}
@@ -3259,7 +3260,7 @@ void SfxBaseModel::impl_store( const OUString& sURL
aErrCode << nErrCode;
throw task::ErrorCodeIOException(
"SfxBaseModel::impl_store <" + sURL + "> failed: " + OUString::fromUtf8(aErrCode.str()),
- Reference< XInterface >(), sal_uInt32(nErrCode));
+ Reference< XInterface >(), sal_uInt32(nErrCode.GetCode()));
}
}
@@ -3828,11 +3829,11 @@ void SAL_CALL SfxBaseModel::loadFromStorage( const Reference< embed::XStorage >&
// load document
if ( !m_pData->m_pObjectShell->DoLoad(pMedium) )
{
- ErrCode nError = m_pData->m_pObjectShell->GetErrorCode();
+ ErrCodeMsg nError = m_pData->m_pObjectShell->GetErrorCode();
nError = nError ? nError : ERRCODE_IO_CANTREAD;
throw task::ErrorCodeIOException(
"SfxBaseModel::loadFromStorage: " + nError.toString(),
- Reference< XInterface >(), sal_uInt32(nError));
+ Reference< XInterface >(), sal_uInt32(nError.GetCode()));
}
loadCmisProperties( );
}
@@ -3881,7 +3882,7 @@ void SAL_CALL SfxBaseModel::storeToStorage( const Reference< embed::XStorage >&
}
}
- ErrCode nError = m_pData->m_pObjectShell->GetErrorCode();
+ ErrCodeMsg nError = m_pData->m_pObjectShell->GetErrorCode();
m_pData->m_pObjectShell->ResetError();
// the warnings are currently not transported
@@ -3890,7 +3891,7 @@ void SAL_CALL SfxBaseModel::storeToStorage( const Reference< embed::XStorage >&
nError = nError ? nError : ERRCODE_IO_GENERAL;
throw task::ErrorCodeIOException(
"SfxBaseModel::storeToStorage: " + nError.toString(),
- Reference< XInterface >(), sal_uInt32(nError));
+ Reference< XInterface >(), sal_uInt32(nError.GetCode()));
}
}
@@ -3906,11 +3907,11 @@ void SAL_CALL SfxBaseModel::switchToStorage( const Reference< embed::XStorage >&
{
if ( !m_pData->m_pObjectShell->SwitchPersistence( xStorage ) )
{
- ErrCode nError = m_pData->m_pObjectShell->GetErrorCode();
+ ErrCodeMsg nError = m_pData->m_pObjectShell->GetErrorCode();
nError = nError ? nError : ERRCODE_IO_GENERAL;
throw task::ErrorCodeIOException(
"SfxBaseModel::switchToStorage: " + nError.toString(),
- Reference< XInterface >(), sal_uInt32(nError));
+ Reference< XInterface >(), sal_uInt32(nError.GetCode()));
}
else
{
diff --git a/sfx2/source/inc/objshimp.hxx b/sfx2/source/inc/objshimp.hxx
index 1bece81ce1c0..7f9624436a15 100644
--- a/sfx2/source/inc/objshimp.hxx
+++ b/sfx2/source/inc/objshimp.hxx
@@ -94,7 +94,7 @@ struct SfxObjectShell_Impl final : public ::sfx2::IMacroDocumentAccess
m_bMacroCallsSeenWhileLoading:1; // whether or not the user options are checked after the Options dialog is closed.
IndexBitSet aBitSet;
- ErrCode lErr;
+ ErrCodeMsg lErr;
SfxEventHintId nEventId; // If Open/Create as to be sent
// before Activate
std::unique_ptr<AutoReloadTimer_Impl> pReloadTimer;
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index dd1fa74ea2be..8906fdce681e 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -533,7 +533,7 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
if( !bOK )
{
- ErrCode nErr = pMed->GetErrorCode();
+ ErrCodeMsg nErr = pMed->GetErrorCode();
if ( pVersionItem )
nErr = ERRCODE_IO_ACCESSDENIED;
else
diff --git a/svtools/source/misc/ehdl.cxx b/svtools/source/misc/ehdl.cxx
index ef35b3975fca..ab602be60aaf 100644
--- a/svtools/source/misc/ehdl.cxx
+++ b/svtools/source/misc/ehdl.cxx
@@ -151,7 +151,7 @@ SfxErrorHandler::~SfxErrorHandler()
{
}
-bool SfxErrorHandler::CreateString(const ErrorInfo *pErr, OUString &rStr) const
+bool SfxErrorHandler::CreateString(const ErrCodeMsg& nErr, OUString &rStr) const
/* [Description]
@@ -160,25 +160,15 @@ bool SfxErrorHandler::CreateString(const ErrorInfo *pErr, OUString &rStr) const
*/
{
- ErrCode nErrCode(sal_uInt32(pErr->GetErrorCode()) & ERRCODE_ERROR_MASK);
- if (pErr->GetErrorCode().GetArea() < lStart || lEnd < pErr->GetErrorCode().GetArea())
+ ErrCode nErrCode(sal_uInt32(nErr.GetCode()) & ERRCODE_ERROR_MASK);
+ if (nErr.GetCode().GetArea() < lStart || lEnd < nErr.GetCode().GetArea())
return false;
if(GetErrorString(nErrCode, rStr))
{
- const StringErrorInfo *pStringInfo = dynamic_cast<const StringErrorInfo *>(pErr);
- if(pStringInfo)
- {
- rStr = rStr.replaceAll("$(ARG1)", pStringInfo->GetErrorString());
- }
- else
- {
- const TwoStringErrorInfo * pTwoStringInfo = dynamic_cast<const TwoStringErrorInfo* >(pErr);
- if (pTwoStringInfo)
- {
- rStr = rStr.replaceAll("$(ARG1)", pTwoStringInfo->GetArg1());
- rStr = rStr.replaceAll("$(ARG2)", pTwoStringInfo->GetArg2());
- }
- }
+ if(!nErr.GetArg1().isEmpty())
+ rStr = rStr.replaceAll("$(ARG1)", nErr.GetArg1());
+ if(!nErr.GetArg2().isEmpty())
+ rStr = rStr.replaceAll("$(ARG2)", nErr.GetArg2());
return true;
}
return false;
@@ -219,7 +209,7 @@ bool SfxErrorHandler::GetErrorString(ErrCode lErrId, OUString &rStr) const
for (const ErrMsgCode* pItem = pIds; pItem->second; ++pItem)
{
- if (pItem->second.StripWarningAndDynamic() == lErrId.StripWarningAndDynamic())
+ if (pItem->second.StripWarning() == lErrId.StripWarning())
{
rStr = rStr.replaceAll("$(ERROR)", Translate::get(pItem->first, aResLocale));
bRet = true;
@@ -258,7 +248,7 @@ SfxErrorContext::SfxErrorContext(
pIds = RID_ERRCTX;
}
-bool SfxErrorContext::GetString(ErrCode nErrId, OUString &rStr)
+bool SfxErrorContext::GetString(const ErrCodeMsg& nErr, OUString &rStr)
/* [Description]
@@ -282,7 +272,7 @@ bool SfxErrorContext::GetString(ErrCode nErrId, OUString &rStr)
if ( bRet )
{
- sal_uInt16 nId = nErrId.IsWarning() ? ERRCTX_WARNING : ERRCTX_ERROR;
+ sal_uInt16 nId = nErr.IsWarning() ? ERRCTX_WARNING : ERRCTX_ERROR;
for (const ErrMsgCode* pItem = RID_ERRCTX; pItem->second; ++pItem)
{
if (sal_uInt32(pItem->second) == nId)
@@ -294,7 +284,7 @@ bool SfxErrorContext::GetString(ErrCode nErrId, OUString &rStr)
}
if (bRet)
- if (auto it = m_extMessages.find(sal_uInt32(nErrId)); it != m_extMessages.end())
+ if (auto it = m_extMessages.find(sal_uInt32(nErr.GetCode())); it != m_extMessages.end())
rStr += "\n" + it->second;
return bRet;
diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx
index bc26384e16a0..301ba4748fd1 100644
--- a/sw/inc/docsh.hxx
+++ b/sw/inc/docsh.hxx
@@ -289,7 +289,7 @@ public:
void ToggleLayoutMode(SwView* pView);
- ErrCode LoadStylesFromFile(const OUString& rURL, SwgReaderOption& rOpt, bool bUnoCall);
+ ErrCodeMsg LoadStylesFromFile(const OUString& rURL, SwgReaderOption& rOpt, bool bUnoCall);
void InvalidateModel();
void ReactivateModel();
diff --git a/sw/inc/shellio.hxx b/sw/inc/shellio.hxx
index f902194c6c00..5a7c6f2a7635 100644
--- a/sw/inc/shellio.hxx
+++ b/sw/inc/shellio.hxx
@@ -169,7 +169,7 @@ public:
SwReader( css::uno::Reference < css::embed::XStorage > , OUString aFilename, SwPaM& );
// The only export interface is SwReader::Read(...)!!!
- ErrCode Read( const Reader& );
+ ErrCodeMsg Read( const Reader& );
// Ask for glossaries.
bool HasGlossaries( const Reader& );
@@ -275,7 +275,7 @@ public:
void setSotStorageRef(const tools::SvRef<SotStorage>& pStgRef) { m_pStorage = pStgRef; };
private:
- virtual ErrCode Read(SwDoc &, const OUString& rBaseURL, SwPaM &, const OUString &)=0;
+ virtual ErrCodeMsg Read(SwDoc &, const OUString& rBaseURL, SwPaM &, const OUString &)=0;
// Everyone who does not need the streams / storages open
// has to override the method (W4W!!).
@@ -285,7 +285,7 @@ private:
class AsciiReader final : public Reader
{
friend class SwReader;
- virtual ErrCode Read( SwDoc &, const OUString& rBaseURL, SwPaM &, const OUString &) override;
+ virtual ErrCodeMsg Read( SwDoc &, const OUString& rBaseURL, SwPaM &, const OUString &) override;
public:
AsciiReader(): Reader() {}
};
@@ -424,10 +424,10 @@ public:
Writer();
virtual ~Writer() override;
- virtual ErrCode Write( SwPaM&, SfxMedium&, const OUString* );
- ErrCode Write( SwPaM&, SvStream&, const OUString* );
- virtual ErrCode Write( SwPaM&, const css::uno::Reference < css::embed::XStorage >&, const OUString*, SfxMedium* = nullptr );
- virtual ErrCode Write( SwPaM&, SotStorage&, const OUString* );
+ virtual ErrCodeMsg Write( SwPaM&, SfxMedium&, const OUString* );
+ ErrCodeMsg Write( SwPaM&, SvStream&, const OUString* );
+ virtual ErrCodeMsg Write( SwPaM&, const css::uno::Reference < css::embed::XStorage >&, const OUString*, SfxMedium* = nullptr );
+ virtual ErrCodeMsg Write( SwPaM&, SotStorage&, const OUString* );
virtual void SetupFilterOptions(SfxMedium& rMedium);
@@ -478,8 +478,8 @@ protected:
// Create error at call.
virtual ErrCode WriteStream() override;
- virtual ErrCode WriteStorage() = 0;
- virtual ErrCode WriteMedium( SfxMedium& ) = 0;
+ virtual ErrCodeMsg WriteStorage() = 0;
+ virtual ErrCodeMsg WriteMedium( SfxMedium& ) = 0;
using Writer::Write;
@@ -488,8 +488,8 @@ public:
virtual bool IsStgWriter() const override;
- virtual ErrCode Write( SwPaM&, const css::uno::Reference < css::embed::XStorage >&, const OUString*, SfxMedium* = nullptr ) override;
- virtual ErrCode Write( SwPaM&, SotStorage&, const OUString* ) override;
+ virtual ErrCodeMsg Write( SwPaM&, const css::uno::Reference < css::embed::XStorage >&, const OUString*, SfxMedium* = nullptr ) override;
+ virtual ErrCodeMsg Write( SwPaM&, SotStorage&, const OUString* ) override;
SotStorage& GetStorage() const { return *m_pStg; }
};
@@ -509,7 +509,7 @@ class SW_DLLPUBLIC SwWriter
bool m_bWriteAll;
public:
- ErrCode Write( WriterRef const & rxWriter, const OUString* = nullptr);
+ ErrCodeMsg Write( WriterRef const & rxWriter, const OUString* = nullptr);
SwWriter( SvStream&, SwCursorShell &, bool bWriteAll = false );
SwWriter( SvStream&, SwDoc & );
diff --git a/sw/qa/extras/txtimport/txtimport.cxx b/sw/qa/extras/txtimport/txtimport.cxx
index 99cb15b16ad2..410a9311621b 100644
--- a/sw/qa/extras/txtimport/txtimport.cxx
+++ b/sw/qa/extras/txtimport/txtimport.cxx
@@ -38,8 +38,8 @@ public:
SvMemoryStream aMemoryStream;
SwWriter aWriter(aMemoryStream, rPaM);
- ErrCode nError = aWriter.Write(rAsciiWriter);
- CPPUNIT_ASSERT_EQUAL(ERRCODE_NONE, nError);
+ ErrCodeMsg nError = aWriter.Write(rAsciiWriter);
+ CPPUNIT_ASSERT_EQUAL(ERRCODE_NONE, nError.GetCode());
const char* pData = static_cast<const char*>(aMemoryStream.GetData());
OString aResult(pData, aMemoryStream.GetSize());
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 58ebbcde09ff..6d4e90ddad22 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -754,7 +754,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testImportRTF)
SwReader aReader(aStream, OUString(), OUString(), *pWrtShell->GetCursor());
Reader* pRTFReader = SwReaderWriter::GetRtfReader();
CPPUNIT_ASSERT(pRTFReader != nullptr);
- CPPUNIT_ASSERT_EQUAL(ERRCODE_NONE, aReader.Read(*pRTFReader));
+ CPPUNIT_ASSERT_EQUAL(ERRCODE_NONE, aReader.Read(*pRTFReader).GetCode());
SwNodeOffset nIndex = pWrtShell->GetCursor()->GetPointNode().GetIndex();
CPPUNIT_ASSERT_EQUAL(OUString("fooHello world!"), pDoc->GetNodes()[nIndex - 1]->GetTextNode()->GetText());
diff --git a/sw/source/core/swg/SwXMLTextBlocks.cxx b/sw/source/core/swg/SwXMLTextBlocks.cxx
index 3bb108cbf22e..efc3e530b0f2 100644
--- a/sw/source/core/swg/SwXMLTextBlocks.cxx
+++ b/sw/source/core/swg/SwXMLTextBlocks.cxx
@@ -317,7 +317,7 @@ ErrCode SwXMLTextBlocks::BeginPutDoc( const OUString& rShort, const OUString& rL
ErrCode SwXMLTextBlocks::PutBlock()
{
- ErrCode nRes = ERRCODE_NONE; // dead variable, this always returns 0
+ ErrCodeMsg nRes = ERRCODE_NONE; // dead variable, this always returns 0
SwXmlFlags nCommitFlags = m_nFlags;
WriterRef xWrt;
diff --git a/sw/source/core/unocore/unocrsrhelper.cxx b/sw/source/core/unocore/unocrsrhelper.cxx
index 935b165bf274..baac20bbf3d5 100644
--- a/sw/source/core/unocore/unocrsrhelper.cxx
+++ b/sw/source/core/unocore/unocrsrhelper.cxx
@@ -1144,7 +1144,7 @@ void InsertFile(SwUnoCursor* pUnoCursor, const OUString& rURL,
SwNodeIndex aSave( pUnoCursor->GetPoint()->GetNode(), -1 );
sal_Int32 nContent = pUnoCursor->GetPoint()->GetContentIndex();
- ErrCode nErrno = pRdr->Read( *pRead ); // and paste the document
+ ErrCodeMsg nErrno = pRdr->Read( *pRead ); // and paste the document
if(!nErrno)
{
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 70fc8b712266..3be1ad0e23ec 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -962,7 +962,7 @@ void SwXStyleFamilies::loadStylesFromURL(const OUString& rURL,
}
}
- const ErrCode nErr = m_pDocShell->LoadStylesFromFile( rURL, aOpt, true );
+ const ErrCodeMsg nErr = m_pDocShell->LoadStylesFromFile( rURL, aOpt, true );
if(nErr)
throw io::IOException();
}
diff --git a/sw/source/filter/ascii/parasc.cxx b/sw/source/filter/ascii/parasc.cxx
index 1fff4268d8d1..b4e191df621d 100644
--- a/sw/source/filter/ascii/parasc.cxx
+++ b/sw/source/filter/ascii/parasc.cxx
@@ -78,7 +78,7 @@ public:
}
// Call for the general reader interface
-ErrCode AsciiReader::Read( SwDoc& rDoc, const OUString&, SwPaM &rPam, const OUString & )
+ErrCodeMsg AsciiReader::Read( SwDoc& rDoc, const OUString&, SwPaM &rPam, const OUString & )
{
if( !m_pStream )
{
diff --git a/sw/source/filter/basflt/shellio.cxx b/sw/source/filter/basflt/shellio.cxx
index 66251f168525..888213aa9d5e 100644
--- a/sw/source/filter/basflt/shellio.cxx
+++ b/sw/source/filter/basflt/shellio.cxx
@@ -88,7 +88,7 @@ void SwAsciiOptions::Reset()
m_bIncludeHidden = !utl::ConfigManager::IsFuzzing() && officecfg::Office::Writer::FilterFlags::ASCII::IncludeHiddenText::get();
}
-ErrCode SwReader::Read( const Reader& rOptions )
+ErrCodeMsg SwReader::Read( const Reader& rOptions )
{
// copy variables
Reader* po = const_cast<Reader*>(&rOptions);
@@ -109,7 +109,7 @@ ErrCode SwReader::Read( const Reader& rOptions )
return ERR_SWG_FILE_FORMAT_ERROR;
}
- ErrCode nError = ERRCODE_NONE;
+ ErrCodeMsg nError = ERRCODE_NONE;
GetDoc();
@@ -742,7 +742,7 @@ static bool isFlyNode(const SwPaM& pam)
&& (pam.GetPoint()->GetNode().IsOLENode() || pam.GetPoint()->GetNode().IsGrfNode());
}
-ErrCode SwWriter::Write( WriterRef const & rxWriter, const OUString* pRealFileName )
+ErrCodeMsg SwWriter::Write( WriterRef const & rxWriter, const OUString* pRealFileName )
{
// #i73788#
SwPauseThreadStarting aPauseThreadStarting;
@@ -867,7 +867,7 @@ ErrCode SwWriter::Write( WriterRef const & rxWriter, const OUString* pRealFileNa
std::unique_ptr<PurgeGuard, o3tl::default_delete<PurgeGuard>> xGuard(new PurgeGuard(*pOutDoc));
pOutDoc->SetInWriting(true);
- ErrCode nError = ERRCODE_NONE;
+ ErrCodeMsg nError = ERRCODE_NONE;
if( m_pMedium )
nError = rxWriter->Write( *pPam, *m_pMedium, pRealFileName );
else if( m_pStrm )
diff --git a/sw/source/filter/docx/swdocxreader.cxx b/sw/source/filter/docx/swdocxreader.cxx
index 4ceff14ecd44..d941e60f35cd 100644
--- a/sw/source/filter/docx/swdocxreader.cxx
+++ b/sw/source/filter/docx/swdocxreader.cxx
@@ -45,7 +45,7 @@ extern "C" SAL_DLLPUBLIC_EXPORT Reader* ImportDOCX()
return new SwDOCXReader;
}
-ErrCode SwDOCXReader::Read(SwDoc& rDoc, const OUString& /* rBaseURL */, SwPaM& rPam, const OUString& /* FileName */ )
+ErrCodeMsg SwDOCXReader::Read(SwDoc& rDoc, const OUString& /* rBaseURL */, SwPaM& rPam, const OUString& /* FileName */ )
{
if (!m_pMedium->GetInStream())
return ERR_SWG_READ_ERROR;
diff --git a/sw/source/filter/docx/swdocxreader.hxx b/sw/source/filter/docx/swdocxreader.hxx
index dc641d13c13d..0a8b8a91c4a0 100644
--- a/sw/source/filter/docx/swdocxreader.hxx
+++ b/sw/source/filter/docx/swdocxreader.hxx
@@ -32,7 +32,7 @@ public:
virtual bool ReadGlossaries(SwTextBlocks& rBlocks, bool bSaveRelFiles) const override;
private:
- virtual ErrCode Read(SwDoc&, const OUString&, SwPaM&, const OUString&) override;
+ virtual ErrCodeMsg Read(SwDoc&, const OUString&, SwPaM&, const OUString&) override;
static bool MakeEntries(SwDoc* pD, SwTextBlocks& rBlocks);
};
diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx
index 4e5138b135e6..5115b7c0ab40 100644
--- a/sw/source/filter/html/swhtml.cxx
+++ b/sw/source/filter/html/swhtml.cxx
@@ -203,7 +203,7 @@ bool HTMLReader::SetStrmStgPtr()
}
// Call for the general Reader-Interface
-ErrCode HTMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPam, const OUString & rName )
+ErrCodeMsg HTMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPam, const OUString & rName )
{
SetupFilterOptions();
@@ -228,7 +228,7 @@ ErrCode HTMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPam, co
// so nobody steals the document!
rtl::Reference<SwDoc> xHoldAlive(&rDoc);
- ErrCode nRet = ERRCODE_NONE;
+ ErrCodeMsg nRet = ERRCODE_NONE;
tools::SvRef<SwHTMLParser> xParser = new SwHTMLParser( &rDoc, rPam, *m_pStream,
rName, rBaseURL, !m_bInsertMode, m_pMedium,
IsReadUTF8(),
@@ -244,7 +244,7 @@ ErrCode HTMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPam, co
+ "," + OUString::number(static_cast<sal_Int32>(xParser->GetLinePos())));
// use the stream as transport for error number
- nRet = *new StringErrorInfo( ERR_FORMAT_ROWCOL, sErr,
+ nRet = ErrCodeMsg( ERR_FORMAT_ROWCOL, sErr,
DialogMask::ButtonsOk | DialogMask::MessageError );
}
diff --git a/sw/source/filter/inc/fltini.hxx b/sw/source/filter/inc/fltini.hxx
index 1c0f1639b8e6..3ee0b3b539a9 100644
--- a/sw/source/filter/inc/fltini.hxx
+++ b/sw/source/filter/inc/fltini.hxx
@@ -42,12 +42,12 @@ class HTMLReader final : public Reader
public:
HTMLReader();
- virtual ErrCode Read(SwDoc&, const OUString& rBaseURL, SwPaM&, const OUString&) override;
+ virtual ErrCodeMsg Read(SwDoc&, const OUString& rBaseURL, SwPaM&, const OUString&) override;
};
class XMLReader final : public Reader
{
- virtual ErrCode Read(SwDoc&, const OUString& rBaseURL, SwPaM&, const OUString&) override;
+ virtual ErrCodeMsg Read(SwDoc&, const OUString& rBaseURL, SwPaM&, const OUString&) override;
public:
virtual SwReaderType GetReaderType() override;
diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx
index 0f0af73b2c95..56dd36530224 100644
--- a/sw/source/filter/rtf/swparrtf.cxx
+++ b/sw/source/filter/rtf/swparrtf.cxx
@@ -45,13 +45,13 @@ namespace
/// Glue class to call RtfImport as an internal filter, needed by copy&paste support.
class SwRTFReader : public Reader
{
- ErrCode Read(SwDoc& rDoc, const OUString& rBaseURL, SwPaM& rPam,
- const OUString& rFileName) override;
+ ErrCodeMsg Read(SwDoc& rDoc, const OUString& rBaseURL, SwPaM& rPam,
+ const OUString& rFileName) override;
};
}
-ErrCode SwRTFReader::Read(SwDoc& rDoc, const OUString& /*rBaseURL*/, SwPaM& rPam,
- const OUString& /*rFileName*/)
+ErrCodeMsg SwRTFReader::Read(SwDoc& rDoc, const OUString& /*rBaseURL*/, SwPaM& rPam,
+ const OUString& /*rFileName*/)
{
if (!m_pStream)
return ERR_SWG_READ_ERROR;
diff --git a/sw/source/filter/writer/writer.cxx b/sw/source/filter/writer/writer.cxx
index 475da8cc5ab8..5ed18a2cad7c 100644
--- a/sw/source/filter/writer/writer.cxx
+++ b/sw/source/filter/writer/writer.cxx
@@ -201,11 +201,11 @@ void Writer::SetStream(SvStream *const pStream)
m_pImpl->m_pStream = pStream;
}
-ErrCode Writer::Write( SwPaM& rPaM, SvStream& rStrm, const OUString* pFName )
+ErrCodeMsg Writer::Write( SwPaM& rPaM, SvStream& rStrm, const OUString* pFName )
{
if ( IsStgWriter() )
{
- ErrCode nResult = ERRCODE_ABORT;
+ ErrCodeMsg nResult = ERRCODE_ABORT;
try
{
tools::SvRef<SotStorage> aRef = new SotStorage( rStrm );
@@ -241,7 +241,7 @@ ErrCode Writer::Write( SwPaM& rPaM, SvStream& rStrm, const OUString* pFName )
void Writer::SetupFilterOptions(SfxMedium& /*rMedium*/)
{}
-ErrCode Writer::Write( SwPaM& rPam, SfxMedium& rMedium, const OUString* pFileName )
+ErrCodeMsg Writer::Write( SwPaM& rPam, SfxMedium& rMedium, const OUString* pFileName )
{
SetupFilterOptions(rMedium);
// This method must be overridden in SwXMLWriter a storage from medium will be used there.
@@ -249,13 +249,13 @@ ErrCode Writer::Write( SwPaM& rPam, SfxMedium& rMedium, const OUString* pFileNam
return Write( rPam, *rMedium.GetOutStream(), pFileName );
}
-ErrCode Writer::Write( SwPaM& /*rPam*/, SotStorage&, const OUString* )
+ErrCodeMsg Writer::Write( SwPaM& /*rPam*/, SotStorage&, const OUString* )
{
OSL_ENSURE( false, "Write in Storages on a stream?" );
return ERR_SWG_WRITE_ERROR;
}
-ErrCode Writer::Write( SwPaM&, const uno::Reference < embed::XStorage >&, const OUString*, SfxMedium* )
+ErrCodeMsg Writer::Write( SwPaM&, const uno::Reference < embed::XStorage >&, const OUString*, SfxMedium* )
{
OSL_ENSURE( false, "Write in Storages on a stream?" );
return ERR_SWG_WRITE_ERROR;
@@ -453,7 +453,7 @@ ErrCode StgWriter::WriteStream()
return ERR_SWG_WRITE_ERROR;
}
-ErrCode StgWriter::Write( SwPaM& rPaM, SotStorage& rStg, const OUString* pFName )
+ErrCodeMsg StgWriter::Write( SwPaM& rPaM, SotStorage& rStg, const OUString* pFName )
{
SetStream(nullptr);
m_pStg = &rStg;
@@ -467,7 +467,7 @@ ErrCode StgWriter::Write( SwPaM& rPaM, SotStorage& rStg, const OUString* pFName
// for comparison secure to the current Pam
m_pOrigPam = &rPaM;
- ErrCode nRet = WriteStorage();
+ ErrCodeMsg nRet = WriteStorage();
m_pStg = nullptr;
ResetWriter();
@@ -475,7 +475,7 @@ ErrCode StgWriter::Write( SwPaM& rPaM, SotStorage& rStg, const OUString* pFName
return nRet;
}
-ErrCode StgWriter::Write( SwPaM& rPaM, const uno::Reference < embed::XStorage >& rStg, const OUString* pFName, SfxMedium* pMedium )
+ErrCodeMsg StgWriter::Write( SwPaM& rPaM, const uno::Reference < embed::XStorage >& rStg, const OUString* pFName, SfxMedium* pMedium )
{
SetStream(nullptr);
m_pStg = nullptr;
@@ -490,7 +490,7 @@ ErrCode StgWriter::Write( SwPaM& rPaM, const uno::Reference < embed::XStorage >&
// for comparison secure to the current Pam
m_pOrigPam = &rPaM;
- ErrCode nRet = pMedium ? WriteMedium( *pMedium ) : WriteStorage();
+ ErrCodeMsg nRet = pMedium ? WriteMedium( *pMedium ) : WriteStorage();
m_pStg = nullptr;
ResetWriter();
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index fc2beabe9bef..7e31c40af268 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -3789,7 +3789,7 @@ void WW8Export::PrepareStorage()
sfx2::SaveOlePropertySet( xDocProps, &GetWriter().GetStorage() );
}
-ErrCode SwWW8Writer::WriteStorage()
+ErrCodeMsg SwWW8Writer::WriteStorage()
{
tools::SvRef<SotStorage> pOrigStg;
uno::Reference< packages::XPackageEncryption > xPackageEncryption;
@@ -3923,16 +3923,16 @@ ErrCode SwWW8Writer::WriteStorageImpl()
return err;
}
-ErrCode SwWW8Writer::WriteMedium( SfxMedium& )
+ErrCodeMsg SwWW8Writer::WriteMedium( SfxMedium& )
{
return WriteStorage();
}
-ErrCode SwWW8Writer::Write( SwPaM& rPaM, SfxMedium& rMed,
+ErrCodeMsg SwWW8Writer::Write( SwPaM& rPaM, SfxMedium& rMed,
const OUString* pFileName )
{
mpMedium = &rMed;
- ErrCode nRet = StgWriter::Write( rPaM, rMed, pFileName );
+ ErrCodeMsg nRet = StgWriter::Write( rPaM, rMed, pFileName );
mpMedium = nullptr;
return nRet;
}
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
index c89dc02d216f..50d772d6b71c 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -956,8 +956,8 @@ public:
SwWW8Writer(std::u16string_view rFltName, const OUString& rBaseURL);
virtual ~SwWW8Writer() override;
- virtual ErrCode WriteStorage() override;
- virtual ErrCode WriteMedium( SfxMedium& ) override;
+ virtual ErrCodeMsg WriteStorage() override;
+ virtual ErrCodeMsg WriteMedium( SfxMedium& ) override;
// TODO most probably we want to be able to get these in
// MSExportFilterBase
@@ -989,7 +989,7 @@ public:
bool InitStd97CodecUpdateMedium( ::msfilter::MSCodec_Std97& rCodec );
using StgWriter::Write;
- virtual ErrCode Write( SwPaM&, SfxMedium&, const OUString* ) override;
+ virtual ErrCodeMsg Write( SwPaM&, SfxMedium&, const OUString* ) override;
//Seems not an expected to provide method to access the private member
SfxMedium* GetMedia() { return mpMedium; }
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index 18178cdc0ee0..863e7f326cfa 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -6490,7 +6490,7 @@ ErrCode WW8Reader::DecryptDRMPackage()
return ERRCODE_NONE;
}
-ErrCode WW8Reader::Read(SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, const OUString & /* FileName */)
+ErrCodeMsg WW8Reader::Read(SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, const OUString & /* FileName */)
{
sal_uInt16 nOldBuffSize = 32768;
bool bNew = !m_bInsertMode; // New Doc (no inserting)
diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx
index 6f8e4468a6d8..2c0bf9dd8e4f 100644
--- a/sw/source/filter/ww8/ww8par.hxx
+++ b/sw/source/filter/ww8/ww8par.hxx
@@ -136,7 +136,7 @@ struct WW8LFOInfo;
class WW8Reader : public StgReader
{
std::shared_ptr<SvStream> mDecodedStream;
- virtual ErrCode Read(SwDoc &, const OUString& rBaseURL, SwPaM &, const OUString &) override;
+ virtual ErrCodeMsg Read(SwDoc &, const OUString& rBaseURL, SwPaM &, const OUString &) override;
ErrCode OpenMainStream( tools::SvRef<SotStorageStream>& rRef, sal_uInt16& rBuffSize );
ErrCode DecryptDRMPackage();
public:
diff --git a/sw/source/filter/xml/swxml.cxx b/sw/source/filter/xml/swxml.cxx
index 648f7fbbe083..fbccb3e5e735 100644
--- a/sw/source/filter/xml/swxml.cxx
+++ b/sw/source/filter/xml/swxml.cxx
@@ -130,7 +130,7 @@ namespace
{
/// read a component (file + filter version)
-ErrCode ReadThroughComponent(
+ErrCodeMsg ReadThroughComponent(
uno::Reference<io::XInputStream> const & xInputStream,
uno::Reference<XComponent> const & xModelComponent,
const OUString& rStreamName,
@@ -219,7 +219,7 @@ ErrCode ReadThroughComponent(
if( !rStreamName.isEmpty() )
{
- return *new TwoStringErrorInfo(
+ return ErrCodeMsg(
(bMustBeSuccessful ? ERR_FORMAT_FILE_ROWCOL
: WARN_FORMAT_FILE_ROWCOL),
rStreamName, sErr,
@@ -228,7 +228,7 @@ ErrCode ReadThroughComponent(
else
{
OSL_ENSURE( bMustBeSuccessful, "Warnings are not supported" );
- return *new StringErrorInfo( ERR_FORMAT_ROWCOL, sErr,
+ return ErrCodeMsg( ERR_FORMAT_ROWCOL, sErr,
DialogMask::ButtonsOk | DialogMask::MessageError );
}
}
@@ -266,7 +266,7 @@ ErrCode ReadThroughComponent(
}
// read a component (storage version)
-ErrCode ReadThroughComponent(
+ErrCodeMsg ReadThroughComponent(
uno::Reference<embed::XStorage> const & xStorage,
uno::Reference<XComponent> const & xModelComponent,
const char* pStreamName,
@@ -464,7 +464,7 @@ static void lcl_ConvertSdrOle2ObjsToSdrGrafObjs(SwDoc& _rDoc)
}
}
-ErrCode XMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, const OUString & rName )
+ErrCodeMsg XMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, const OUString & rName )
{
// needed for relative URLs, but in clipboard copy/paste there may be none
// and also there is the SwXMLTextBlocks special case
@@ -735,7 +735,7 @@ ErrCode XMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, con
}
rtl::Reference<SwDoc> aHoldRef(&rDoc); // prevent deletion
- ErrCode nRet = ERRCODE_NONE;
+ ErrCodeMsg nRet = ERRCODE_NONE;
// save redline mode into import info property set
static constexpr OUStringLiteral sShowChanges(u"ShowChanges");
@@ -806,13 +806,13 @@ ErrCode XMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, con
// read storage streams
// #i103539#: always read meta.xml for generator
- ErrCode const nWarn = ReadThroughComponent(
+ ErrCodeMsg const nWarn = ReadThroughComponent(
xStorage, xModelComp, "meta.xml", xContext,
(bOASIS ? "com.sun.star.comp.Writer.XMLOasisMetaImporter"
: "com.sun.star.comp.Writer.XMLMetaImporter"),
aEmptyArgs, rName, false );
- ErrCode nWarn2 = ERRCODE_NONE;
+ ErrCodeMsg nWarn2 = ERRCODE_NONE;
if( !(IsOrganizerMode() || IsBlockMode() || m_aOption.IsFormatsOnly() ||
m_bInsertMode) )
{
diff --git a/sw/source/filter/xml/wrtxml.cxx b/sw/source/filter/xml/wrtxml.cxx
index a5b0560c1c5a..bfb1366566fb 100644
--- a/sw/source/filter/xml/wrtxml.cxx
+++ b/sw/source/filter/xml/wrtxml.cxx
@@ -79,7 +79,7 @@ SwXMLWriter::~SwXMLWriter()
{
}
-ErrCode SwXMLWriter::Write_(const SfxItemSet* pMediumItemSet)
+ErrCodeMsg SwXMLWriter::Write_(const SfxItemSet* pMediumItemSet)
{
uno::Reference<task::XStatusIndicator> xStatusIndicator;
OUString aDocHierarchicalName;
@@ -445,14 +445,14 @@ ErrCode SwXMLWriter::Write_(const SfxItemSet* pMediumItemSet)
if( bErr )
{
if( !sErrFile.isEmpty() )
- return *new StringErrorInfo( ERR_WRITE_ERROR_FILE, sErrFile,
+ return ErrCodeMsg( ERR_WRITE_ERROR_FILE, sErrFile,
DialogMask::ButtonsOk | DialogMask::MessageError );
return ERR_SWG_WRITE_ERROR;
}
else if( bWarn )
{
if( !sWarnFile.isEmpty() )
- return *new StringErrorInfo( WARN_WRITE_ERROR_FILE, sWarnFile,
+ return ErrCodeMsg( WARN_WRITE_ERROR_FILE, sWarnFile,
DialogMask::ButtonsOk | DialogMask::MessageError );
return WARN_SWG_FEATURES_LOST;
}
@@ -460,17 +460,17 @@ ErrCode SwXMLWriter::Write_(const SfxItemSet* pMediumItemSet)
return ERRCODE_NONE;
}
-ErrCode SwXMLWriter::WriteStorage()
+ErrCodeMsg SwXMLWriter::WriteStorage()
{
return Write_(nullptr);
}
-ErrCode SwXMLWriter::WriteMedium( SfxMedium& aTargetMedium )
+ErrCodeMsg SwXMLWriter::WriteMedium( SfxMedium& aTargetMedium )
{
return Write_(&aTargetMedium.GetItemSet());
}
-ErrCode SwXMLWriter::Write( SwPaM& rPaM, SfxMedium& rMed,
+ErrCodeMsg SwXMLWriter::Write( SwPaM& rPaM, SfxMedium& rMed,
const OUString* pFileName )
{
return IsStgWriter()
diff --git a/sw/source/filter/xml/wrtxml.hxx b/sw/source/filter/xml/wrtxml.hxx
index d08dbb12afaa..abbdd7aa7bde 100644
--- a/sw/source/filter/xml/wrtxml.hxx
+++ b/sw/source/filter/xml/wrtxml.hxx
@@ -39,20 +39,20 @@ namespace com::sun::star {
class SwXMLWriter : public StgWriter
{
- ErrCode Write_(const SfxItemSet* pMediumItemSet);
+ ErrCodeMsg Write_(const SfxItemSet* pMediumItemSet);
using StgWriter::Write;
protected:
- virtual ErrCode WriteStorage() override;
- virtual ErrCode WriteMedium( SfxMedium& aTargetMedium ) override;
+ virtual ErrCodeMsg WriteStorage() override;
+ virtual ErrCodeMsg WriteMedium( SfxMedium& aTargetMedium ) override;
public:
SwXMLWriter( const OUString& rBaseURL );
virtual ~SwXMLWriter() override;
- virtual ErrCode Write( SwPaM&, SfxMedium&, const OUString* ) override;
+ virtual ErrCodeMsg Write( SwPaM&, SfxMedium&, const OUString* ) override;
private:
diff --git a/sw/source/uibase/app/docsh.cxx b/sw/source/uibase/app/docsh.cxx
index 94858922ad0b..1cddf3070bfe 100644
--- a/sw/source/uibase/app/docsh.cxx
+++ b/sw/source/uibase/app/docsh.cxx
@@ -129,7 +129,7 @@ bool SwDocShell::InsertGeneratedStream(SfxMedium & rMedium,
Reader *const pRead = StartConvertFrom(rMedium, pReader, nullptr, &aPam);
if (!pRead)
return false;
- ErrCode const nError = pReader->Read(*pRead);
+ ErrCodeMsg const nError = pReader->Read(*pRead);
return ERRCODE_NONE == nError;
}
@@ -221,7 +221,7 @@ bool SwDocShell::ConvertFrom( SfxMedium& rMedium )
// Restore the pool default if reading a saved document.
m_xDoc->RemoveAllFormatLanguageDependencies();
- ErrCode nErr = pRdr->Read( *pRead );
+ ErrCodeMsg nErr = pRdr->Read( *pRead );
// Maybe put away one old Doc
if (m_xDoc.get() != &pRdr->GetDoc())
@@ -273,7 +273,8 @@ bool SwDocShell::Save()
m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, false);
}
- ErrCode nErr = ERR_SWG_WRITE_ERROR, nVBWarning = ERRCODE_NONE;
+ ErrCodeMsg nErr = ERR_SWG_WRITE_ERROR;
+ ErrCode nVBWarning = ERRCODE_NONE;
if( SfxObjectShell::Save() )
{
switch( GetCreateMode() )
@@ -483,7 +484,8 @@ bool SwDocShell::SaveAs( SfxMedium& rMedium )
m_xDoc->getIDocumentSettingAccess().set(DocumentSettingId::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, false);
}
- ErrCode nErr = ERR_SWG_WRITE_ERROR, nVBWarning = ERRCODE_NONE;
+ ErrCodeMsg nErr = ERR_SWG_WRITE_ERROR;
+ ErrCode nVBWarning = ERRCODE_NONE;
uno::Reference < embed::XStorage > xStor = rMedium.GetOutputStorage();
if( SfxObjectShell::SaveAs( rMedium ) )
{
@@ -752,7 +754,7 @@ bool SwDocShell::ConvertTo( SfxMedium& rMedium )
SfxObjectCreateMode::EMBEDDED == GetCreateMode());
// Span Context in order to suppress the Selection's View
- ErrCode nErrno;
+ ErrCodeMsg nErrno;
const OUString aFileName( rMedium.GetName() );
bool bSelection = false;
diff --git a/sw/source/uibase/app/docsh2.cxx b/sw/source/uibase/app/docsh2.cxx
index 7258b119e7a1..978601285ce0 100644
--- a/sw/source/uibase/app/docsh2.cxx
+++ b/sw/source/uibase/app/docsh2.cxx
@@ -769,7 +769,7 @@ void SwDocShell::Execute(SfxRequest& rReq)
SvMemoryStream *pStrm = new SvMemoryStream();
pStrm->SetBufferSize( 16348 );
SwWriter aWrt( *pStrm, *pSmryDoc );
- ErrCode eErr = aWrt.Write( xWrt );
+ ErrCodeMsg eErr = aWrt.Write( xWrt );
if( !eErr.IgnoreWarning() )
{
uno::Reference< uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
@@ -827,7 +827,7 @@ void SwDocShell::Execute(SfxRequest& rReq)
std::unique_ptr<SvMemoryStream> pStrm (new SvMemoryStream());
pStrm->SetBufferSize( 16348 );
SwWriter aWrt( *pStrm, *GetDoc() );
- ErrCode eErr = aWrt.Write( xWrt );
+ ErrCodeMsg eErr = aWrt.Write( xWrt );
EnableSetModified( bEnable );
if( !eErr.IgnoreWarning() )
{
@@ -1604,9 +1604,9 @@ void SwDocShell::ReloadFromHtml( const OUString& rStreamName, SwSrcView* pSrcVie
m_xDoc->getIDocumentState().ResetModified();
}
-ErrCode SwDocShell::LoadStylesFromFile(const OUString& rURL, SwgReaderOption& rOpt, bool bUnoCall)
+ErrCodeMsg SwDocShell::LoadStylesFromFile(const OUString& rURL, SwgReaderOption& rOpt, bool bUnoCall)
{
- ErrCode nErr = ERRCODE_NONE;
+ ErrCodeMsg nErr = ERRCODE_NONE;
// Set filter:
SfxFilterMatcher aMatcher( SwDocShell::Factory().GetFactoryName() );
diff --git a/sw/source/uibase/app/docshini.cxx b/sw/source/uibase/app/docshini.cxx
index 0323fe332a43..25119b2da22f 100644
--- a/sw/source/uibase/app/docshini.cxx
+++ b/sw/source/uibase/app/docshini.cxx
@@ -498,7 +498,7 @@ bool SwDocShell::Load( SfxMedium& rMedium )
}
SwWait aWait( *this, true );
- ErrCode nErr = ERR_SWG_READ_ERROR;
+ ErrCodeMsg nErr = ERR_SWG_READ_ERROR;
switch( GetCreateMode() )
{
case SfxObjectCreateMode::ORGANIZER:
@@ -583,7 +583,7 @@ bool SwDocShell::LoadFrom( SfxMedium& rMedium )
AddLink(); // set Link and update Data!!
do { // middle check loop
- ErrCode nErr = ERR_SWG_READ_ERROR;
+ ErrCodeMsg nErr = ERR_SWG_READ_ERROR;
OUString aStreamName = "styles.xml";
uno::Reference < container::XNameAccess > xAccess = rMedium.GetStorage();
if ( xAccess->hasByName( aStreamName ) && rMedium.GetStorage()->isStreamElement( aStreamName ) )
diff --git a/sw/source/uibase/misc/glosdoc.cxx b/sw/source/uibase/misc/glosdoc.cxx
index 119646d7f6d5..7047fb6b6b0e 100644
--- a/sw/source/uibase/misc/glosdoc.cxx
+++ b/sw/source/uibase/misc/glosdoc.cxx
@@ -391,7 +391,7 @@ void SwGlossaries::UpdateGlosPath(bool bFull)
m_aInvalidPaths = aInvalidPaths;
// wrong path, that means AutoText directory doesn't exist
- ErrorHandler::HandleError( *new StringErrorInfo(
+ ErrorHandler::HandleError( ErrCodeMsg(
ERR_AUTOPATH_ERROR, lcl_makePath(m_aInvalidPaths),
DialogMask::ButtonsOk | DialogMask::MessageError ) );
m_bError = true;
@@ -411,8 +411,7 @@ void SwGlossaries::UpdateGlosPath(bool bFull)
void SwGlossaries::ShowError()
{
- ErrCode nPathError = *new StringErrorInfo(ERR_AUTOPATH_ERROR,
- lcl_makePath(m_aInvalidPaths), DialogMask::ButtonsOk );
+ ErrCodeMsg nPathError(ERR_AUTOPATH_ERROR, lcl_makePath(m_aInvalidPaths), DialogMask::ButtonsOk );
ErrorHandler::HandleError( nPathError );
}
diff --git a/sw/source/uibase/shells/translatehelper.cxx b/sw/source/uibase/shells/translatehelper.cxx
index 6a1eb06a5f17..c62e4a59749c 100644
--- a/sw/source/uibase/shells/translatehelper.cxx
+++ b/sw/source/uibase/shells/translatehelper.cxx
@@ -54,10 +54,10 @@ OString ExportPaMToHTML(SwPaM* pCursor)
{
SvMemoryStream aMemoryStream;
SwWriter aWriter(aMemoryStream, *pCursor);
- ErrCode nError = aWriter.Write(xWrt);
+ ErrCodeMsg nError = aWriter.Write(xWrt);
if (nError.IsError())
{
- SAL_WARN("sw.ui", "ExportPaMToHTML: failed to export selection to HTML");
+ SAL_WARN("sw.ui", "ExportPaMToHTML: failed to export selection to HTML " << nError);
return {};
}
aResult
diff --git a/sw/source/uibase/uiview/srcview.cxx b/sw/source/uibase/uiview/srcview.cxx
index 8ebae23d3d4b..e1ba8d7e9e21 100644
--- a/sw/source/uibase/uiview/srcview.cxx
+++ b/sw/source/uibase/uiview/srcview.cxx
@@ -806,7 +806,7 @@ void SwSrcView::Load(SwDocShell* pDocShell)
const OUString sWriteName = pDocShell->HasName()
? pMedium->GetName()
: sFileURL;
- ErrCode nRes = aWriter.Write(xWriter, &sWriteName);
+ ErrCodeMsg nRes = aWriter.Write(xWriter, &sWriteName);
if(nRes)
{
ErrorHandler::HandleError(nRes);
diff --git a/sw/source/uibase/uiview/view2.cxx b/sw/source/uibase/uiview/view2.cxx
index 0fb4f0e22a2b..143472a83042 100644
--- a/sw/source/uibase/uiview/view2.cxx
+++ b/sw/source/uibase/uiview/view2.cxx
@@ -2827,7 +2827,7 @@ tools::Long SwView::InsertMedium( sal_uInt16 nSlotId, std::unique_ptr<SfxMedium>
SwDoc *pDoc = pDocSh->GetDoc();
if( pRead && pDocSh->GetDoc() )
nUndoCheck = lcl_PageDescWithHeader( *pDoc );
- ErrCode nErrno;
+ ErrCodeMsg nErrno;
{ //Scope for SwWait-Object, to be able to execute slots
//outside this scope.
SwWait aWait( *GetDocShell(), true );
diff --git a/sw/source/uibase/uiview/viewling.cxx b/sw/source/uibase/uiview/viewling.cxx
index 6e6225980e29..a9f64d7bf760 100644
--- a/sw/source/uibase/uiview/viewling.cxx
+++ b/sw/source/uibase/uiview/viewling.cxx
@@ -348,7 +348,7 @@ void SwView::SpellError(LanguageType eLang)
if ( LANGUAGE_NONE == eLang )
ErrorHandler::HandleError( ERRCODE_SVX_LINGU_NOLANGUAGE );
else
- ErrorHandler::HandleError( *new StringErrorInfo( ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS, aErr ) );
+ ErrorHandler::HandleError( ErrCodeMsg( ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS, aErr ) );
while( nWaitCnt )
{
diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx
index e4aedbfc72dd..3eed5811f202 100644
--- a/uui/source/iahndl.cxx
+++ b/uui/source/iahndl.cxx
@@ -1225,7 +1225,7 @@ bool ErrorResource::getString(ErrCode nErrorCode, OUString &rString) const
{
for (const std::pair<TranslateId, ErrCode>* pStringArray = m_pStringArray; pStringArray->first; ++pStringArray)
{
- if (nErrorCode.StripWarningAndDynamic() == pStringArray->second.StripWarningAndDynamic())
+ if (nErrorCode.StripWarning() == pStringArray->second.StripWarning())
{
rString = Translate::get(pStringArray->first, m_rResLocale);
return true;
diff --git a/vcl/qa/cppunit/errorhandler.cxx b/vcl/qa/cppunit/errorhandler.cxx
index 21c672ac5ba6..eaa62c7f5d88 100644
--- a/vcl/qa/cppunit/errorhandler.cxx
+++ b/vcl/qa/cppunit/errorhandler.cxx
@@ -21,13 +21,9 @@ class MockErrorHandler : private ErrorHandler
friend ErrorHandlerTest;
protected:
- virtual bool CreateString(const ErrorInfo *pErrInfo, OUString &rErrString) const override
+ virtual bool CreateString(const ErrCodeMsg&, OUString &rErrString) const override
{
- if (pErrInfo->GetErrorCode().IsDynamic())
- rErrString = "Dynamic error";
- else
- rErrString = "Non-dynamic error";
-
+ rErrString = "Non-dynamic error";
return true;
}
};
@@ -49,20 +45,17 @@ public:
void ErrorHandlerTest::testGetErrorString()
{
MockErrorHandler aErrHdlr;
- std::unique_ptr<ErrorInfo> xErrorInfo;
OUString aErrStr;
CPPUNIT_ASSERT_MESSAGE("GetErrorString(ERRCODE_ABORT, aErrStr) should return false",
!ErrorHandler::GetErrorString(ERRCODE_ABORT, aErrStr));
// normally protected, but MockErrorHandler is a friend of this class
- xErrorInfo = ErrorInfo::GetErrorInfo(ERRCODE_ABORT);
- aErrHdlr.CreateString(xErrorInfo.get(), aErrStr);
+ aErrHdlr.CreateString(ERRCODE_ABORT, aErrStr);
CPPUNIT_ASSERT_EQUAL_MESSAGE("error message should be non-dynamic", OUString("Non-dynamic error"), aErrStr);
CPPUNIT_ASSERT_MESSAGE("GetErrorString(ERRCODE_NONE, aErrStr) should return false",
!ErrorHandler::GetErrorString(ERRCODE_NONE, aErrStr));
- xErrorInfo = ErrorInfo::GetErrorInfo(ERRCODE_NONE);
- aErrHdlr.CreateString(xErrorInfo.get(), aErrStr);
+ aErrHdlr.CreateString(ERRCODE_NONE, aErrStr);
CPPUNIT_ASSERT_EQUAL_MESSAGE("error message should be non-dynamic", OUString("Non-dynamic error"), aErrStr);
}
diff --git a/vcl/source/window/errinf.cxx b/vcl/source/window/errinf.cxx
index 7dc1b3253874..2aedf08366ab 100644
--- a/vcl/source/window/errinf.cxx
+++ b/vcl/source/window/errinf.cxx
@@ -39,11 +39,11 @@ namespace {
}
-bool ErrorStringFactory::CreateString(const ErrorInfo* pInfo, OUString& rStr)
+bool ErrorStringFactory::CreateString(const ErrCodeMsg& nInfo, OUString& rStr)
{
for(const ErrorHandler *pHdlr : GetErrorRegistry().errorHandlers)
{
- if(pHdlr->CreateString(pInfo, rStr))
+ if(pHdlr->CreateString(nInfo, rStr))
return true;
}
return false;
@@ -53,10 +53,7 @@ ErrorRegistry::ErrorRegistry()
: pDsp(nullptr)
, bIsWindowDsp(false)
, m_bLock(false)
- , nNextError(0)
{
- for(DynamicErrorInfo*& rp : ppDynErrInfo)
- rp = nullptr;
}
void ErrorRegistry::RegisterDisplay(BasicDisplayErrorFunc *aDsp)
@@ -112,16 +109,14 @@ ErrorHandler::~ErrorHandler()
rErrorHandlers.end());
}
-bool ErrorHandler::GetErrorString(ErrCode nErrCodeId, OUString& rErrStr)
+bool ErrorHandler::GetErrorString(const ErrCodeMsg& nErrCode, OUString& rErrStr)
{
OUString aErr;
- if(!nErrCodeId || nErrCodeId == ERRCODE_ABORT)
+ if(!nErrCode || nErrCode == ERRCODE_ABORT)
return false;
- std::unique_ptr<ErrorInfo> pInfo = ErrorInfo::GetErrorInfo(nErrCodeId);
-
- if (ErrorStringFactory::CreateString(pInfo.get(),aErr))
+ if (ErrorStringFactory::CreateString(nErrCode, aErr))
{
rErrStr = aErr;
return true;
@@ -130,18 +125,17 @@ bool ErrorHandler::GetErrorString(ErrCode nErrCodeId, OUString& rErrStr)
return false;
}
-DialogMask ErrorHandler::HandleError(ErrCode nErrCodeId, weld::Window *pParent, DialogMask nFlags)
+DialogMask ErrorHandler::HandleError(const ErrCodeMsg& nErr, weld::Window *pParent, DialogMask nFlags)
{
- if (nErrCodeId == ERRCODE_NONE || nErrCodeId == ERRCODE_ABORT)
+ if (nErr == ERRCODE_NONE || nErr == ERRCODE_ABORT)
return DialogMask::NONE;
ErrorRegistry &rData = GetErrorRegistry();
- std::unique_ptr<ErrorInfo> pInfo = ErrorInfo::GetErrorInfo(nErrCodeId);
OUString aAction;
if (!rData.contexts.empty())
{
- rData.contexts.front()->GetString(pInfo->GetErrorCode(), aAction);
+ rData.contexts.front()->GetString(nErr, aAction);
for(ErrorContext *pCtx : rData.contexts)
{
@@ -153,23 +147,18 @@ DialogMask ErrorHandler::HandleError(ErrCode nErrCodeId, weld::Window *pParent,
}
}
- bool bWarning = nErrCodeId.IsWarning();
+ bool bWarning = nErr.IsWarning();
DialogMask nErrFlags = DialogMask::ButtonDefaultsOk | DialogMask::ButtonsOk;
if (bWarning)
nErrFlags |= DialogMask::MessageWarning;
else
nErrFlags |= DialogMask::MessageError;
- DynamicErrorInfo* pDynPtr = dynamic_cast<DynamicErrorInfo*>(pInfo.get());
- if(pDynPtr)
- {
- DialogMask nDynFlags = pDynPtr->GetDialogMask();
- if( nDynFlags != DialogMask::NONE )
- nErrFlags = nDynFlags;
- }
+ if( nErr.GetDialogMask() != DialogMask::NONE )
+ nErrFlags = nErr.GetDialogMask();
OUString aErr;
- if (ErrorStringFactory::CreateString(pInfo.get(), aErr))
+ if (ErrorStringFactory::CreateString(nErr, aErr))
{
if (!rData.pDsp || rData.m_bLock)
{
@@ -193,9 +182,9 @@ DialogMask ErrorHandler::HandleError(ErrCode nErrCodeId, weld::Window *pParent,
}
}
- SAL_WARN( "vcl", "Error not handled " << pInfo->GetErrorCode());
+ SAL_WARN( "vcl", "Error not handled " << nErr);
// Error 1 (ERRCODE_ABORT) is classified as a General Error in sfx
- if (pInfo->GetErrorCode() != ERRCODE_ABORT)
+ if (nErr.GetCode() != ERRCODE_ABORT)
HandleError(ERRCODE_ABORT);
else
OSL_FAIL("ERRCODE_ABORT not handled");
@@ -231,100 +220,4 @@ weld::Window* ErrorContext::GetParent()
return pImpl ? pImpl->pWin : nullptr;
}
-class ImplDynamicErrorInfo
-{
- friend class DynamicErrorInfo;
- friend class ErrorInfo;
-
-private:
- explicit ImplDynamicErrorInfo(DialogMask nInMask)
- : nMask(nInMask)
- {
- }
- void RegisterError(DynamicErrorInfo *);
- static void UnRegisterError(DynamicErrorInfo const *);
- static std::unique_ptr<ErrorInfo> GetDynamicErrorInfo(ErrCode nId);
-
- ErrCode nErrId;
- DialogMask nMask;
-
-};
-
-void ImplDynamicErrorInfo::RegisterError(DynamicErrorInfo *pDynErrInfo)
-{
- // Register dynamic identifier
- ErrorRegistry& rData = GetErrorRegistry();
- nErrId = ErrCode(((sal_uInt32(rData.nNextError) + 1) << ERRCODE_DYNAMIC_SHIFT) +
- sal_uInt32(pDynErrInfo->GetErrorCode()));
-
- if(rData.ppDynErrInfo[rData.nNextError])
- delete rData.ppDynErrInfo[rData.nNextError];
-
- rData.ppDynErrInfo[rData.nNextError] = pDynErrInfo;
-
- if(++rData.nNextError>=ERRCODE_DYNAMIC_COUNT)
- rData.nNextError=0;
-}
-
-void ImplDynamicErrorInfo::UnRegisterError(DynamicErrorInfo const *pDynErrInfo)
-{
- DynamicErrorInfo **ppDynErrInfo = GetErrorRegistry().ppDynErrInfo;
- sal_uInt32 nIdx = ErrCode(*pDynErrInfo).GetDynamic() - 1;
- DBG_ASSERT(ppDynErrInfo[nIdx] == pDynErrInfo, "ErrHdl: Error not found");
-
- if(ppDynErrInfo[nIdx]==pDynErrInfo)
- ppDynErrInfo[nIdx]=nullptr;
-}
-
-std::unique_ptr<ErrorInfo> ImplDynamicErrorInfo::GetDynamicErrorInfo(ErrCode nId)
-{
- sal_uInt32 nIdx = nId.GetDynamic() - 1;
- DynamicErrorInfo* pDynErrInfo = GetErrorRegistry().ppDynErrInfo[nIdx];
-
- if(pDynErrInfo && ErrCode(*pDynErrInfo)==nId)
- return std::unique_ptr<ErrorInfo>(pDynErrInfo);
- else
- return std::make_unique<ErrorInfo>(nId.StripDynamic());
-}
-
-std::unique_ptr<ErrorInfo> ErrorInfo::GetErrorInfo(ErrCode nId)
-{
- if(nId.IsDynamic())
- return ImplDynamicErrorInfo::GetDynamicErrorInfo(nId);
- else
- return std::make_unique<ErrorInfo>(nId);
-}
-
-ErrorInfo::~ErrorInfo()
-{
-}
-
-DynamicErrorInfo::DynamicErrorInfo(ErrCode nArgUserId, DialogMask nMask)
-: ErrorInfo(nArgUserId),
- pImpl(new ImplDynamicErrorInfo(nMask))
-{
- pImpl->RegisterError(this);
-}
-
-DynamicErrorInfo::~DynamicErrorInfo()
-{
- ImplDynamicErrorInfo::UnRegisterError(this);
-}
-
-DynamicErrorInfo::operator ErrCode() const
-{
- return pImpl->nErrId;
-}
-
-DialogMask DynamicErrorInfo::GetDialogMask() const
-{
- return pImpl->nMask;
-}
-
-StringErrorInfo::StringErrorInfo(
- ErrCode nArgUserId, OUString aStringP, DialogMask nMask)
-: DynamicErrorInfo(nArgUserId, nMask), aString(std::move(aStringP))
-{
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */