summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/source/ui/unoobj/fielduno.cxx88
1 files changed, 52 insertions, 36 deletions
diff --git a/sc/source/ui/unoobj/fielduno.cxx b/sc/source/ui/unoobj/fielduno.cxx
index 81b32bcebc42..3345ec8e5219 100644
--- a/sc/source/ui/unoobj/fielduno.cxx
+++ b/sc/source/ui/unoobj/fielduno.cxx
@@ -1604,28 +1604,35 @@ rtl::OUString SAL_CALL ScEditFieldObj::getPresentation( sal_Bool bShowCommand )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
- String aRet;
- if (pEditSource)
- {
- //! Feld-Funktionen muessen an den Forwarder !!!
- ScEditEngineDefaulter* pEditEngine = ((ScCellEditSource*)pEditSource)->GetEditEngine();
- ScUnoEditEngine aTempEngine(pEditEngine);
+ if (!pEditSource)
+ return rtl::OUString();
- // Typ egal (in Zellen gibts nur URLs)
- SvxFieldData* pField = aTempEngine.FindByPos( aSelection.nStartPara, aSelection.nStartPos, 0 );
- OSL_ENSURE(pField,"getPresentation: Feld nicht gefunden");
- if (pField)
+ //! Feld-Funktionen muessen an den Forwarder !!!
+ ScEditEngineDefaulter* pEditEngine = ((ScCellEditSource*)pEditSource)->GetEditEngine();
+ ScUnoEditEngine aTempEngine(pEditEngine);
+
+ // Typ egal (in Zellen gibts nur URLs)
+ const SvxFieldData* pField = aTempEngine.FindByPos( aSelection.nStartPara, aSelection.nStartPos, 0 );
+ OSL_ENSURE(pField,"getPresentation: Feld nicht gefunden");
+ if (!pField)
+ return rtl::OUString();
+
+ switch (meType)
+ {
+ case URL:
{
- SvxURLField* pURL = (SvxURLField*)pField;
- if (bShowCommand)
- aRet = pURL->GetURL();
- else
- aRet = pURL->GetRepresentation();
+ if (pField->GetClassId() != SVX_URLFIELD)
+ return rtl::OUString();
+
+ const SvxURLField* pURL = static_cast<const SvxURLField*>(pField);
+ return bShowCommand ? pURL->GetURL() : pURL->GetRepresentation();
}
+ break;
+ default:
+ ;
}
-
- return aRet;
+ return rtl::OUString();
}
// XTextContent
@@ -1783,19 +1790,18 @@ uno::Any SAL_CALL ScEditFieldObj::getPropertyValue( const rtl::OUString& aProper
{
SolarMutexGuard aGuard;
uno::Any aRet;
- String aNameString(aPropertyName);
// anchor type is always "as character", text wrap always "none"
- if ( aNameString.EqualsAscii( SC_UNONAME_ANCTYPE ) )
+ if (aPropertyName == SC_UNONAME_ANCTYPE)
aRet <<= text::TextContentAnchorType_AS_CHARACTER;
- else if ( aNameString.EqualsAscii( SC_UNONAME_ANCTYPES ) )
+ else if (aPropertyName == SC_UNONAME_ANCTYPES)
{
uno::Sequence<text::TextContentAnchorType> aSeq(1);
aSeq[0] = text::TextContentAnchorType_AS_CHARACTER;
aRet <<= aSeq;
}
- else if ( aNameString.EqualsAscii( SC_UNONAME_TEXTWRAP ) )
+ else if (aPropertyName == SC_UNONAME_TEXTWRAP)
aRet <<= text::WrapTextMode_NONE;
else if (pEditSource)
{
@@ -1804,37 +1810,47 @@ uno::Any SAL_CALL ScEditFieldObj::getPropertyValue( const rtl::OUString& aProper
ScUnoEditEngine aTempEngine(pEditEngine);
// Typ egal (in Zellen gibts nur URLs)
- SvxFieldData* pField = aTempEngine.FindByPos( aSelection.nStartPara, aSelection.nStartPos, 0 );
+ const SvxFieldData* pField = aTempEngine.FindByPos( aSelection.nStartPara, aSelection.nStartPos, 0 );
OSL_ENSURE(pField,"getPropertyValue: Feld nicht gefunden");
- if (pField)
+ if (!pField)
+ throw uno::RuntimeException();
+
+ switch (meType)
{
- SvxURLField* pURL = (SvxURLField*)pField;
+ case URL:
+ {
+ if (pField->GetClassId() != SVX_URLFIELD)
+ throw uno::RuntimeException();
- if ( aNameString.EqualsAscii( SC_UNONAME_URL ) )
- aRet <<= rtl::OUString( pURL->GetURL() );
- else if ( aNameString.EqualsAscii( SC_UNONAME_REPR ) )
- aRet <<= rtl::OUString( pURL->GetRepresentation() );
- else if ( aNameString.EqualsAscii( SC_UNONAME_TARGET ) )
- aRet <<= rtl::OUString( pURL->GetTargetFrame() );
+ const SvxURLField* pURL = static_cast<const SvxURLField*>(pField);
+
+ if (aPropertyName == SC_UNONAME_URL)
+ aRet <<= pURL->GetURL();
+ else if (aPropertyName == SC_UNONAME_REPR)
+ aRet <<= pURL->GetRepresentation();
+ else if (aPropertyName == SC_UNONAME_TARGET)
+ aRet <<= pURL->GetTargetFrame();
+ }
+ break;
}
}
else // noch nicht eingefuegt
{
- SvxFieldData* pData = getData();
- if (!pData)
+ const SvxFieldData* pField = getData();
+ if (!pField)
return aRet;
switch (meType)
{
case URL:
{
- SvxURLField* p = static_cast<SvxURLField*>(pData);
+ const SvxURLField* pURL = static_cast<const SvxURLField*>(pField);
if (aPropertyName == SC_UNONAME_URL)
- aRet <<= p->GetURL();
+ aRet <<= pURL->GetURL();
else if (aPropertyName == SC_UNONAME_REPR)
- aRet <<= p->GetRepresentation();
+ aRet <<= pURL->GetRepresentation();
else if (aPropertyName == SC_UNONAME_TARGET)
- aRet <<= p->GetTargetFrame();
+ aRet <<= pURL->GetTargetFrame();
}
break;
default: