User: hr      
Date: 2007-08-02 14:38:40+0000
Modified:
   dba/reportdesign/source/ui/inspection/GeometryHandler.cxx

Log:
 INTEGRATION: CWS rpt23fix01 (1.2.2); FILE MERGED
 2007/07/16 07:38:07 oj 1.2.2.3: compile error fixed
 2007/07/11 11:03:05 oj 1.2.2.2: #i78141# handle transparent color
 2007/07/11 10:48:26 oj 1.2.2.1: #i78141# handle transparent color

File Changes:

Directory: /dba/reportdesign/source/ui/inspection/
==================================================

File [changed]: GeometryHandler.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/inspection/GeometryHandler.cxx?r1=1.2&r2=1.3
Delta lines:  +86 -24
---------------------
--- GeometryHandler.cxx 2007-07-09 11:56:31+0000        1.2
+++ GeometryHandler.cxx 2007-08-02 14:38:38+0000        1.3
@@ -414,6 +414,14 @@
         case PROPERTY_ID_DATAFIELD:
             lcl_convertFormulaTo(aPropertyValue,aPropertyValue);
             break;
+        case PROPERTY_ID_BACKCOLOR:
+        case PROPERTY_ID_CONTROLBACKGROUND:
+            {
+                sal_Int32 nColor = COL_TRANSPARENT;
+                if ( (aPropertyValue >>= nColor) && 
static_cast<sal_Int32>(COL_TRANSPARENT) == nColor )
+                    aPropertyValue.clear();
+            }
+            break;
         default:
             break;
     }
@@ -751,6 +759,15 @@
         case PROPERTY_ID_PAGEFOOTEROPTION:
             aPropertyValue = 
getConstantValue(sal_False,RID_STR_REPORTPRINTOPTION_CONST,_rControlValue,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.ReportPrintOption")),PropertyName);
             break;
+        case PROPERTY_ID_BACKCOLOR:
+        case PROPERTY_ID_CONTROLBACKGROUND:
+            if ( !_rControlValue.hasValue() )
+            {
+                aPropertyValue <<= static_cast<sal_Int32>(COL_TRANSPARENT);
+                break;
+            }
+            // run through       
+
         case PROPERTY_ID_KEEPTOGETHER:
             if ( uno::Reference< 
report::XGroup>(m_xReportComponent,uno::UNO_QUERY).is())
             {
@@ -758,6 +775,7 @@
                 break;
             }
             // run through
+
         case PROPERTY_ID_VISIBLE:
         case PROPERTY_ID_CANGROW:
         case PROPERTY_ID_CANSHRINK:
@@ -769,8 +787,6 @@
         case PROPERTY_ID_DEEPTRAVERSING:
         case PROPERTY_ID_PREEVALUATED:
         case PROPERTY_ID_PRESERVEIRI:
-        case PROPERTY_ID_BACKCOLOR:
-        case PROPERTY_ID_CONTROLBACKGROUND:
         case PROPERTY_ID_BACKTRANSPARENT:
         case PROPERTY_ID_CONTROLBACKGROUNDTRANSPARENT:
         {
@@ -835,25 +851,27 @@
         // NULL is converted to NULL
         return aControlValue;
 
+    uno::Any aPropertyValue(_rPropertyValue);
+
     ::osl::MutexGuard aGuard( m_aMutex );
     const sal_Int32 nId = m_pInfoService->getPropertyId(PropertyName);
     switch(nId)
     {
         case PROPERTY_ID_FORCENEWPAGE:
         case PROPERTY_ID_NEWROWORCOL:
-            aControlValue = 
getConstantValue(sal_True,RID_STR_FORCENEWPAGE_CONST,_rPropertyValue,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.ForceNewPage")),PropertyName);
+            aControlValue = 
getConstantValue(sal_True,RID_STR_FORCENEWPAGE_CONST,aPropertyValue,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.ForceNewPage")),PropertyName);
             break;
         case PROPERTY_ID_GROUPKEEPTOGETHER:
-            aControlValue = 
getConstantValue(sal_True,RID_STR_GROUPKEEPTOGETHER_CONST,_rPropertyValue,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.GroupKeepTogether")),PropertyName);
+            aControlValue = 
getConstantValue(sal_True,RID_STR_GROUPKEEPTOGETHER_CONST,aPropertyValue,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.GroupKeepTogether")),PropertyName);
             break;
         case PROPERTY_ID_PAGEHEADEROPTION:
         case PROPERTY_ID_PAGEFOOTEROPTION:
-            aControlValue = 
getConstantValue(sal_True,RID_STR_REPORTPRINTOPTION_CONST,_rPropertyValue,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.ReportPrintOption")),PropertyName);
+            aControlValue = 
getConstantValue(sal_True,RID_STR_REPORTPRINTOPTION_CONST,aPropertyValue,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.ReportPrintOption")),PropertyName);
             break;
         case PROPERTY_ID_KEEPTOGETHER:
             if ( uno::Reference< 
report::XGroup>(m_xReportComponent,uno::UNO_QUERY).is())
             {
-                aControlValue = 
getConstantValue(sal_True,RID_STR_KEEPTOGETHER_CONST,_rPropertyValue,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.KeepTogether")),PropertyName);
+                aControlValue = 
getConstantValue(sal_True,RID_STR_KEEPTOGETHER_CONST,aPropertyValue,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.KeepTogether")),PropertyName);
                 break;
             }
             // run through
@@ -868,21 +886,19 @@
         case PROPERTY_ID_DEEPTRAVERSING:
         case PROPERTY_ID_PREEVALUATED:
         case PROPERTY_ID_PRESERVEIRI:
-        case PROPERTY_ID_BACKCOLOR:
-        case PROPERTY_ID_CONTROLBACKGROUND:
         case PROPERTY_ID_BACKTRANSPARENT:
         case PROPERTY_ID_CONTROLBACKGROUNDTRANSPARENT:
         {
             if ( _rControlValueType.getTypeClass() == uno::TypeClass_STRING )
             {
                 uno::Reference< inspection::XStringRepresentation > 
xConversionHelper = inspection::StringRepresentation::create( 
m_xContext,m_xTypeConverter );
-                aControlValue <<= xConversionHelper->convertToControlValue( 
_rPropertyValue );
+                aControlValue <<= xConversionHelper->convertToControlValue( 
aPropertyValue );
             }
             else
             {
                 try
                 {
-                    aControlValue = m_xTypeConverter->convertTo( 
_rPropertyValue, _rControlValueType );
+                    aControlValue = m_xTypeConverter->convertTo( 
aPropertyValue, _rControlValueType );
                 }
                 catch( const uno::Exception& )
                 {
@@ -895,28 +911,34 @@
         case PROPERTY_ID_INITIALFORMULA:
         case PROPERTY_ID_FORMULA:
         case PROPERTY_ID_DATAFIELD:
-            lcl_convertFormulaTo(_rPropertyValue,aControlValue);
+            lcl_convertFormulaTo(aPropertyValue,aControlValue);
             break;
         case PROPERTY_ID_CHARFONTNAME:
-            aControlValue = 
m_xFormComponentHandler->convertToControlValue(PROPERTY_FONTNAME, 
_rPropertyValue, _rControlValueType);
+            aControlValue = 
m_xFormComponentHandler->convertToControlValue(PROPERTY_FONTNAME, 
aPropertyValue, _rControlValueType);
             break;
         case PROPERTY_ID_POSITIONX:
             {
-                uno::Any aTemp = _rPropertyValue;
                 sal_Int32 nPosX = 0;
-                aTemp >>= nPosX;
+                aPropertyValue >>= nPosX;
                 uno::Reference< report::XReportComponent> 
xSourceReportComponent(m_xReportComponent,uno::UNO_QUERY);
                 nPosX -= 
getStyleProperty<sal_Int32>(xSourceReportComponent->getSection()->getReportDefinition(),PROPERTY_LEFTMARGIN);
-                aTemp <<= nPosX;
-                aControlValue = 
m_xFormComponentHandler->convertToControlValue(PropertyName, aTemp, 
_rControlValueType);
+                aPropertyValue <<= nPosX;
+                aControlValue = 
m_xFormComponentHandler->convertToControlValue(PropertyName, aPropertyValue, 
_rControlValueType);
             }
             break;
+        case PROPERTY_ID_BACKCOLOR:
+        case PROPERTY_ID_CONTROLBACKGROUND:
+            {
+                sal_Int32 nColor = COL_TRANSPARENT;
+                if ( (aPropertyValue >>= nColor) && 
static_cast<sal_Int32>(COL_TRANSPARENT) == nColor )
+                    aPropertyValue.clear();
+            }
+            // run through
         default:
-            aControlValue = 
m_xFormComponentHandler->convertToControlValue(PropertyName, _rPropertyValue, 
_rControlValueType);
+            aControlValue = 
m_xFormComponentHandler->convertToControlValue(PropertyName, aPropertyValue, 
_rControlValueType);
     }
     return aControlValue;
 }
-
 void SAL_CALL GeometryHandler::addPropertyChangeListener(const uno::Reference< 
beans::XPropertyChangeListener > & Listener) throw (uno::RuntimeException, 
lang::NullPointerException)
 {
     m_xFormComponentHandler->addPropertyChangeListener(Listener);
@@ -1005,7 +1027,11 @@
 uno::Sequence< ::rtl::OUString > SAL_CALL 
GeometryHandler::getActuatingProperties() throw (uno::RuntimeException)
 {
     ::osl::MutexGuard aGuard( m_aMutex );
-    return m_xFormComponentHandler->getActuatingProperties();
+
+    uno::Sequence< ::rtl::OUString > aSeq(2);
+    aSeq[0] = PROPERTY_BACKTRANSPARENT;
+    aSeq[1] = PROPERTY_CONTROLBACKGROUNDTRANSPARENT;
+    return 
::comphelper::concatSequences(m_xFormComponentHandler->getActuatingProperties(),aSeq);
 }
 
 ::sal_Bool SAL_CALL GeometryHandler::isComposable(const ::rtl::OUString & 
_rPropertyName) throw (uno::RuntimeException, beans::UnknownPropertyException)
@@ -1057,7 +1083,43 @@
         throw lang::NullPointerException();
 
     ::osl::MutexGuard aGuard( m_aMutex );
+    const sal_Int32 nId = m_pInfoService->getPropertyId(ActuatingPropertyName);
+    switch(nId)
+    {
+        case PROPERTY_ID_BACKTRANSPARENT:
+        case PROPERTY_ID_CONTROLBACKGROUNDTRANSPARENT:
+            {
+                sal_Bool bValue = sal_False;
+                NewValue >>= bValue;
+                bValue = !bValue;
+                _rxInspectorUI->enablePropertyUI(PROPERTY_BACKCOLOR,bValue);
+                
_rxInspectorUI->enablePropertyUI(PROPERTY_CONTROLBACKGROUND,bValue);
+                if ( bValue )
+                    try
+                    {
+                        const ::rtl::OUString pProps[] 
={PROPERTY_BACKCOLOR,PROPERTY_CONTROLBACKGROUND};
+                        for (size_t i = 0; i < 
sizeof(pProps)/sizeof(pProps[0]); ++i)
+                        {
+                            if ( 
m_xReportComponent->getPropertySetInfo()->hasPropertyByName(pProps[i]) )
+                            {
+                                sal_Int32 nColor = COL_TRANSPARENT;
+                                
m_xReportComponent->getPropertyValue(pProps[i]) >>= nColor;
+                                if ( COL_TRANSPARENT == 
static_cast<sal_uInt32>(nColor) )
+                                    
m_xReportComponent->setPropertyValue(pProps[i],uno::makeAny(COL_WHITE));
+                                break;
+                            }
+                        }
+                    }
+                    catch(const uno::Exception&)
+                    {
+                        // not interested in
+                    }
+            }
+            break;
+        default:
     m_xFormComponentHandler->actuatingPropertyChanged(ActuatingPropertyName, 
NewValue, OldValue, _rxInspectorUI, FirstTimeInit);
+            break;
+    }    
 }
 
 ::sal_Bool SAL_CALL GeometryHandler::suspend(::sal_Bool Suspend) throw 
(uno::RuntimeException)




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to