LCOV - code coverage report
Current view: top level - libreoffice/sc/source/ui/unoobj - afmtuno.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 2 395 0.5 %
Date: 2012-12-27 Functions: 1 65 1.5 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include "scitems.hxx"
      21             : #include <editeng/memberids.hrc>
      22             : #include <tools/shl.hxx>
      23             : #include <svl/poolitem.hxx>
      24             : #include <vcl/svapp.hxx>
      25             : #include <svx/unomid.hxx>
      26             : #include "unowids.hxx"
      27             : #include <comphelper/servicehelper.hxx>
      28             : #include <com/sun/star/table/BorderLine.hpp>
      29             : #include <com/sun/star/table/CellVertJustify2.hpp>
      30             : #include <com/sun/star/table/ShadowLocation.hpp>
      31             : #include <com/sun/star/table/TableBorder.hpp>
      32             : #include <com/sun/star/table/ShadowFormat.hpp>
      33             : #include <com/sun/star/table/CellRangeAddress.hpp>
      34             : #include <com/sun/star/table/CellContentType.hpp>
      35             : #include <com/sun/star/table/TableOrientation.hpp>
      36             : #include <com/sun/star/table/CellHoriJustify.hpp>
      37             : #include <com/sun/star/util/SortField.hpp>
      38             : #include <com/sun/star/util/SortFieldType.hpp>
      39             : #include <com/sun/star/table/CellOrientation.hpp>
      40             : #include <com/sun/star/table/CellAddress.hpp>
      41             : #include <com/sun/star/awt/SimpleFontMetric.hpp>
      42             : #include <com/sun/star/awt/FontWeight.hpp>
      43             : #include <com/sun/star/awt/FontSlant.hpp>
      44             : #include <com/sun/star/awt/CharSet.hpp>
      45             : #include <com/sun/star/awt/FontDescriptor.hpp>
      46             : #include <com/sun/star/awt/FontWidth.hpp>
      47             : #include <com/sun/star/awt/XFont.hpp>
      48             : #include <com/sun/star/awt/FontType.hpp>
      49             : #include <com/sun/star/awt/FontUnderline.hpp>
      50             : #include <com/sun/star/awt/FontStrikeout.hpp>
      51             : #include <com/sun/star/awt/FontFamily.hpp>
      52             : #include <com/sun/star/awt/FontPitch.hpp>
      53             : 
      54             : #include "afmtuno.hxx"
      55             : #include "miscuno.hxx"
      56             : #include "autoform.hxx"
      57             : #include "scdll.hxx"
      58             : #include "unonames.hxx"
      59             : #include "cellsuno.hxx"
      60             : 
      61             : using namespace ::com::sun::star;
      62             : 
      63             : //------------------------------------------------------------------------
      64             : 
      65             : //  ein AutoFormat hat immer 16 Eintraege
      66             : #define SC_AF_FIELD_COUNT 16
      67             : 
      68             : //------------------------------------------------------------------------
      69             : 
      70             : //  AutoFormat-Map nur fuer PropertySetInfo, ohne Which-IDs
      71             : 
      72           0 : static const SfxItemPropertyMapEntry* lcl_GetAutoFormatMap()
      73             : {
      74             :     static SfxItemPropertyMapEntry aAutoFormatMap_Impl[] =
      75             :     {
      76           0 :         {MAP_CHAR_LEN(SC_UNONAME_INCBACK),  0,  &::getBooleanCppuType(),    0, 0 },
      77           0 :         {MAP_CHAR_LEN(SC_UNONAME_INCBORD),  0,  &::getBooleanCppuType(),    0, 0 },
      78           0 :         {MAP_CHAR_LEN(SC_UNONAME_INCFONT),  0,  &::getBooleanCppuType(),    0, 0 },
      79           0 :         {MAP_CHAR_LEN(SC_UNONAME_INCJUST),  0,  &::getBooleanCppuType(),    0, 0 },
      80           0 :         {MAP_CHAR_LEN(SC_UNONAME_INCNUM),   0,  &::getBooleanCppuType(),    0, 0 },
      81           0 :         {MAP_CHAR_LEN(SC_UNONAME_INCWIDTH), 0,  &::getBooleanCppuType(),    0, 0 },
      82             :         {0,0,0,0,0,0}
      83           0 :     };
      84           0 :     return aAutoFormatMap_Impl;
      85             : }
      86             : 
      87             : //! Zahlformat (String/Language) ??? (in XNumberFormat nur ReadOnly)
      88             : //! table::TableBorder ??!?
      89             : 
      90           0 : static const SfxItemPropertyMapEntry* lcl_GetAutoFieldMap()
      91             : {
      92             :     static SfxItemPropertyMapEntry aAutoFieldMap_Impl[] =
      93             :     {
      94           0 :         {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND,        &::getCppuType((const sal_Int32*)0),        0, MID_BACK_COLOR },
      95           0 :         {MAP_CHAR_LEN(SC_UNONAME_CCOLOR),   ATTR_FONT_COLOR,        &::getCppuType((const sal_Int32*)0),        0, 0 },
      96           0 :         {MAP_CHAR_LEN(SC_UNONAME_COUTL),    ATTR_FONT_CONTOUR,      &::getBooleanCppuType(),                    0, 0 },
      97           0 :         {MAP_CHAR_LEN(SC_UNONAME_CCROSS),   ATTR_FONT_CROSSEDOUT,   &::getBooleanCppuType(),                    0, MID_CROSSED_OUT },
      98           0 :         {MAP_CHAR_LEN(SC_UNONAME_CFONT),    ATTR_FONT,              &::getCppuType((const sal_Int16*)0),        0, MID_FONT_FAMILY },
      99           0 :         {MAP_CHAR_LEN(SC_UNONAME_CFCHARS),  ATTR_FONT,              &::getCppuType((sal_Int16*)0),              0, MID_FONT_CHAR_SET },
     100           0 :         {MAP_CHAR_LEN(SC_UNO_CJK_CFCHARS),  ATTR_CJK_FONT,          &::getCppuType((sal_Int16*)0),              0, MID_FONT_CHAR_SET },
     101           0 :         {MAP_CHAR_LEN(SC_UNO_CTL_CFCHARS),  ATTR_CTL_FONT,          &::getCppuType((sal_Int16*)0),              0, MID_FONT_CHAR_SET },
     102           0 :         {MAP_CHAR_LEN(SC_UNONAME_CFFAMIL),  ATTR_FONT,              &::getCppuType((sal_Int16*)0),              0, MID_FONT_FAMILY },
     103           0 :         {MAP_CHAR_LEN(SC_UNO_CJK_CFFAMIL),  ATTR_CJK_FONT,          &::getCppuType((sal_Int16*)0),              0, MID_FONT_FAMILY },
     104           0 :         {MAP_CHAR_LEN(SC_UNO_CTL_CFFAMIL),  ATTR_CTL_FONT,          &::getCppuType((sal_Int16*)0),              0, MID_FONT_FAMILY },
     105           0 :         {MAP_CHAR_LEN(SC_UNONAME_CFNAME),   ATTR_FONT,              &::getCppuType((rtl::OUString*)0),          0, MID_FONT_FAMILY_NAME },
     106           0 :         {MAP_CHAR_LEN(SC_UNO_CJK_CFNAME),   ATTR_CJK_FONT,          &::getCppuType((rtl::OUString*)0),          0, MID_FONT_FAMILY_NAME },
     107           0 :         {MAP_CHAR_LEN(SC_UNO_CTL_CFNAME),   ATTR_CTL_FONT,          &::getCppuType((rtl::OUString*)0),          0, MID_FONT_FAMILY_NAME },
     108           0 :         {MAP_CHAR_LEN(SC_UNONAME_CFPITCH),  ATTR_FONT,              &::getCppuType((sal_Int16*)0),              0, MID_FONT_PITCH },
     109           0 :         {MAP_CHAR_LEN(SC_UNO_CJK_CFPITCH),  ATTR_CJK_FONT,          &::getCppuType((sal_Int16*)0),              0, MID_FONT_PITCH },
     110           0 :         {MAP_CHAR_LEN(SC_UNO_CTL_CFPITCH),  ATTR_CTL_FONT,          &::getCppuType((sal_Int16*)0),              0, MID_FONT_PITCH },
     111           0 :         {MAP_CHAR_LEN(SC_UNONAME_CFSTYLE),  ATTR_FONT,              &::getCppuType((rtl::OUString*)0),          0, MID_FONT_STYLE_NAME },
     112           0 :         {MAP_CHAR_LEN(SC_UNO_CJK_CFSTYLE),  ATTR_CJK_FONT,          &::getCppuType((rtl::OUString*)0),          0, MID_FONT_STYLE_NAME },
     113           0 :         {MAP_CHAR_LEN(SC_UNO_CTL_CFSTYLE),  ATTR_CTL_FONT,          &::getCppuType((rtl::OUString*)0),          0, MID_FONT_STYLE_NAME },
     114           0 :         {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT),  ATTR_FONT_HEIGHT,       &::getCppuType((float*)0),                  0, MID_FONTHEIGHT | CONVERT_TWIPS },
     115           0 :         {MAP_CHAR_LEN(SC_UNO_CJK_CHEIGHT),  ATTR_CJK_FONT_HEIGHT,   &::getCppuType((float*)0),                  0, MID_FONTHEIGHT | CONVERT_TWIPS },
     116           0 :         {MAP_CHAR_LEN(SC_UNO_CTL_CHEIGHT),  ATTR_CTL_FONT_HEIGHT,   &::getCppuType((float*)0),                  0, MID_FONTHEIGHT | CONVERT_TWIPS },
     117           0 :         {MAP_CHAR_LEN(SC_UNONAME_COVER),    ATTR_FONT_OVERLINE,     &::getCppuType((const sal_Int16*)0),        0, MID_TL_STYLE },
     118           0 :         {MAP_CHAR_LEN(SC_UNONAME_CPOST),    ATTR_FONT_POSTURE,      &::getCppuType((awt::FontSlant*)0),         0, MID_POSTURE },
     119           0 :         {MAP_CHAR_LEN(SC_UNO_CJK_CPOST),    ATTR_CJK_FONT_POSTURE,  &::getCppuType((awt::FontSlant*)0),         0, MID_POSTURE },
     120           0 :         {MAP_CHAR_LEN(SC_UNO_CTL_CPOST),    ATTR_CTL_FONT_POSTURE,  &::getCppuType((awt::FontSlant*)0),         0, MID_POSTURE },
     121           0 :         {MAP_CHAR_LEN(SC_UNONAME_CSHADD),   ATTR_FONT_SHADOWED,     &::getBooleanCppuType(),                    0, 0 },
     122           0 :         {MAP_CHAR_LEN(SC_UNONAME_TBLBORD),  SC_WID_UNO_TBLBORD,     &::getCppuType((table::TableBorder*)0),     0, 0 | CONVERT_TWIPS },
     123           0 :         {MAP_CHAR_LEN(SC_UNONAME_TBLBORD2),  SC_WID_UNO_TBLBORD2,     &::getCppuType((table::TableBorder2*)0),     0, 0 | CONVERT_TWIPS },
     124           0 :         {MAP_CHAR_LEN(SC_UNONAME_CUNDER),   ATTR_FONT_UNDERLINE,    &::getCppuType((const sal_Int16*)0),        0, MID_TL_STYLE },
     125           0 :         {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT),  ATTR_FONT_WEIGHT,       &::getCppuType((float*)0),                  0, MID_WEIGHT },
     126           0 :         {MAP_CHAR_LEN(SC_UNO_CJK_CWEIGHT),  ATTR_CJK_FONT_WEIGHT,   &::getCppuType((float*)0),                  0, MID_WEIGHT },
     127           0 :         {MAP_CHAR_LEN(SC_UNO_CTL_CWEIGHT),  ATTR_CTL_FONT_WEIGHT,   &::getCppuType((float*)0),                  0, MID_WEIGHT },
     128           0 :         {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY,       &::getCppuType((const table::CellHoriJustify*)0),   0, 0 },
     129           0 :         {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS_METHOD), ATTR_HOR_JUSTIFY_METHOD, &::getCppuType((const sal_Int32*)0),   0, 0 },
     130           0 :         {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND,        &::getBooleanCppuType(),                    0, MID_GRAPHIC_TRANSPARENT },
     131           0 :         {MAP_CHAR_LEN(SC_UNONAME_WRAP),     ATTR_LINEBREAK,         &::getBooleanCppuType(),                    0, 0 },
     132           0 :         {MAP_CHAR_LEN(SC_UNONAME_CELLORI),  ATTR_STACKED,           &::getCppuType((const table::CellOrientation*)0),   0, 0 },
     133           0 :         {MAP_CHAR_LEN(SC_UNONAME_PBMARGIN), ATTR_MARGIN,            &::getCppuType((const sal_Int32*)0),        0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
     134           0 :         {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN,            &::getCppuType((const sal_Int32*)0),        0, MID_MARGIN_L_MARGIN  | CONVERT_TWIPS },
     135           0 :         {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN,            &::getCppuType((const sal_Int32*)0),        0, MID_MARGIN_R_MARGIN  | CONVERT_TWIPS },
     136           0 :         {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN,            &::getCppuType((const sal_Int32*)0),        0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
     137           0 :         {MAP_CHAR_LEN(SC_UNONAME_ROTANG),   ATTR_ROTATE_VALUE,      &::getCppuType((const sal_Int32*)0),        0, 0 },
     138           0 :         {MAP_CHAR_LEN(SC_UNONAME_ROTREF),   ATTR_ROTATE_MODE,       &::getCppuType((const sal_Int32*)0),   0, 0 },
     139           0 :         {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY,       &::getCppuType((const sal_Int32*)0),   0, 0 },
     140           0 :         {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS_METHOD), ATTR_VER_JUSTIFY_METHOD, &::getCppuType((const sal_Int32*)0),   0, 0 },
     141             :         {0,0,0,0,0,0}
     142           0 :     };
     143           0 :     return aAutoFieldMap_Impl;
     144             : }
     145             : 
     146             : //------------------------------------------------------------------------
     147             : 
     148             : #define SCAUTOFORMATSOBJ_SERVICE    "com.sun.star.sheet.TableAutoFormats"
     149             : 
     150           0 : SC_SIMPLE_SERVICE_INFO( ScAutoFormatFieldObj, "ScAutoFormatFieldObj", "com.sun.star.sheet.TableAutoFormatField" )
     151           0 : SC_SIMPLE_SERVICE_INFO( ScAutoFormatObj, "ScAutoFormatObj", "com.sun.star.sheet.TableAutoFormat" )
     152           0 : SC_SIMPLE_SERVICE_INFO( ScAutoFormatsObj, "ScAutoFormatsObj", SCAUTOFORMATSOBJ_SERVICE )
     153             : 
     154             : //------------------------------------------------------------------------
     155             : 
     156           0 : static bool lcl_FindAutoFormatIndex( const ScAutoFormat& rFormats, const rtl::OUString& rName, sal_uInt16& rOutIndex )
     157             : {
     158           0 :     ScAutoFormat::const_iterator itBeg = rFormats.begin(), itEnd = rFormats.end();
     159           0 :     for (ScAutoFormat::const_iterator it = itBeg; it != itEnd; ++it)
     160             :     {
     161           0 :         const ScAutoFormatData* pEntry = it->second;
     162           0 :         const rtl::OUString& aEntryName = pEntry->GetName();
     163           0 :         if ( aEntryName.equals(rName) )
     164             :         {
     165           0 :             size_t nPos = std::distance(itBeg, it);
     166           0 :             rOutIndex = nPos;
     167           0 :             return true;
     168             :         }
     169             :     }
     170           0 :     return false;       // is nich
     171             : }
     172             : 
     173             : //------------------------------------------------------------------------
     174             : 
     175           0 : ScAutoFormatsObj::ScAutoFormatsObj()
     176             : {
     177             :     //! Dieses Objekt darf es nur einmal geben, und es muss an den Auto-Format-Daten
     178             :     //! bekannt sein, damit Aenderungen gebroadcasted werden koennen
     179           0 : }
     180             : 
     181           0 : ScAutoFormatsObj::~ScAutoFormatsObj()
     182             : {
     183           0 : }
     184             : 
     185             : // stuff for exService_...
     186             : 
     187           0 : uno::Reference<uno::XInterface> SAL_CALL ScAutoFormatsObj_CreateInstance(
     188             :                         const uno::Reference<lang::XMultiServiceFactory>& )
     189             : {
     190           0 :     SolarMutexGuard aGuard;
     191           0 :     ScDLL::Init();
     192           0 :     static uno::Reference< uno::XInterface > xInst((::cppu::OWeakObject*) new ScAutoFormatsObj);
     193           0 :     return xInst;
     194             : }
     195             : 
     196          20 : rtl::OUString ScAutoFormatsObj::getImplementationName_Static()
     197             : {
     198          20 :     return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "stardiv.StarCalc.ScAutoFormatsObj" ));
     199             : }
     200             : 
     201           0 : uno::Sequence<rtl::OUString> ScAutoFormatsObj::getSupportedServiceNames_Static()
     202             : {
     203           0 :     uno::Sequence<rtl::OUString> aRet(1);
     204           0 :     rtl::OUString* pArray = aRet.getArray();
     205           0 :     pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCAUTOFORMATSOBJ_SERVICE ));
     206           0 :     return aRet;
     207             : }
     208             : 
     209             : // XTableAutoFormats
     210             : 
     211           0 : ScAutoFormatObj* ScAutoFormatsObj::GetObjectByIndex_Impl(sal_uInt16 nIndex)
     212             : {
     213           0 :     if (nIndex < ScGlobal::GetOrCreateAutoFormat()->size())
     214           0 :         return new ScAutoFormatObj(nIndex);
     215             : 
     216           0 :     return NULL;    // falscher Index
     217             : }
     218             : 
     219           0 : ScAutoFormatObj* ScAutoFormatsObj::GetObjectByName_Impl(const rtl::OUString& aName)
     220             : {
     221           0 :     String aString(aName);
     222             :     sal_uInt16 nIndex;
     223           0 :     if (lcl_FindAutoFormatIndex(
     224           0 :             *ScGlobal::GetOrCreateAutoFormat(), aString, nIndex ))
     225           0 :         return GetObjectByIndex_Impl(nIndex);
     226           0 :     return NULL;
     227             : }
     228             : 
     229             : // container::XNameContainer
     230             : 
     231           0 : void SAL_CALL ScAutoFormatsObj::insertByName( const rtl::OUString& aName, const uno::Any& aElement )
     232             :                             throw(lang::IllegalArgumentException, container::ElementExistException,
     233             :                                     lang::WrappedTargetException, uno::RuntimeException)
     234             : {
     235           0 :     SolarMutexGuard aGuard;
     236           0 :     sal_Bool bDone = false;
     237             :     //  Reflection muss nicht uno::XInterface sein, kann auch irgendein Interface sein...
     238           0 :     uno::Reference< uno::XInterface > xInterface(aElement, uno::UNO_QUERY);
     239           0 :     if ( xInterface.is() )
     240             :     {
     241           0 :         ScAutoFormatObj* pFormatObj = ScAutoFormatObj::getImplementation( xInterface );
     242           0 :         if ( pFormatObj && !pFormatObj->IsInserted() )  // noch nicht eingefuegt?
     243             :         {
     244           0 :             String aNameStr(aName);
     245           0 :             ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
     246             : 
     247             :             sal_uInt16 nDummy;
     248           0 :             if (!lcl_FindAutoFormatIndex( *pFormats, aNameStr, nDummy ))
     249             :             {
     250           0 :                 ScAutoFormatData* pNew = new ScAutoFormatData();
     251           0 :                 pNew->SetName( aNameStr );
     252             : 
     253           0 :                 if (pFormats->insert(pNew))
     254             :                 {
     255             :                     //! Notify fuer andere Objekte
     256           0 :                     pFormats->Save();   // sofort speichern
     257             : 
     258             :                     sal_uInt16 nNewIndex;
     259           0 :                     if (lcl_FindAutoFormatIndex( *pFormats, aNameStr, nNewIndex ))
     260             :                     {
     261           0 :                         pFormatObj->InitFormat( nNewIndex );    // kann jetzt benutzt werden
     262           0 :                         bDone = sal_True;
     263             :                     }
     264             :                 }
     265             :                 else
     266             :                 {
     267             :                     OSL_FAIL("AutoFormat konnte nicht eingefuegt werden");
     268           0 :                     throw uno::RuntimeException();
     269             :                 }
     270             :             }
     271             :             else
     272             :             {
     273           0 :                 throw container::ElementExistException();
     274           0 :             }
     275             :         }
     276             :     }
     277             : 
     278           0 :     if (!bDone)
     279             :     {
     280             :         //  other errors are handled above
     281           0 :         throw lang::IllegalArgumentException();
     282           0 :     }
     283           0 : }
     284             : 
     285           0 : void SAL_CALL ScAutoFormatsObj::replaceByName( const rtl::OUString& aName, const uno::Any& aElement )
     286             :                             throw(lang::IllegalArgumentException, container::NoSuchElementException,
     287             :                                     lang::WrappedTargetException, uno::RuntimeException)
     288             : {
     289           0 :     SolarMutexGuard aGuard;
     290             :     //! zusammenfassen?
     291           0 :     removeByName( aName );
     292           0 :     insertByName( aName, aElement );
     293           0 : }
     294             : 
     295           0 : void SAL_CALL ScAutoFormatsObj::removeByName( const rtl::OUString& aName )
     296             :                                 throw(container::NoSuchElementException,
     297             :                                     lang::WrappedTargetException, uno::RuntimeException)
     298             : {
     299           0 :     SolarMutexGuard aGuard;
     300           0 :     String aNameStr(aName);
     301           0 :     ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
     302             : 
     303           0 :     ScAutoFormat::iterator it = pFormats->find(aName);
     304           0 :     if (it != pFormats->end())
     305             :     {
     306           0 :         pFormats->erase(it);
     307             : 
     308             :         //! Notify fuer andere Objekte
     309           0 :         pFormats->Save();   // sofort speichern
     310             :     }
     311             :     else
     312             :     {
     313           0 :         throw container::NoSuchElementException();
     314           0 :     }
     315           0 : }
     316             : 
     317             : // container::XEnumerationAccess
     318             : 
     319           0 : uno::Reference<container::XEnumeration> SAL_CALL ScAutoFormatsObj::createEnumeration()
     320             :                                                     throw(uno::RuntimeException)
     321             : {
     322           0 :     SolarMutexGuard aGuard;
     323           0 :     return new ScIndexEnumeration(this, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.TableAutoFormatEnumeration")));
     324             : }
     325             : 
     326             : // container::XIndexAccess
     327             : 
     328           0 : sal_Int32 SAL_CALL ScAutoFormatsObj::getCount() throw(uno::RuntimeException)
     329             : {
     330           0 :     SolarMutexGuard aGuard;
     331           0 :     return ScGlobal::GetOrCreateAutoFormat()->size();
     332             : }
     333             : 
     334           0 : uno::Any SAL_CALL ScAutoFormatsObj::getByIndex( sal_Int32 nIndex )
     335             :                             throw(lang::IndexOutOfBoundsException,
     336             :                                     lang::WrappedTargetException, uno::RuntimeException)
     337             : {
     338           0 :     SolarMutexGuard aGuard;
     339           0 :     uno::Reference< container::XNamed >  xFormat(GetObjectByIndex_Impl((sal_uInt16)nIndex));
     340           0 :     if (!xFormat.is())
     341           0 :         throw lang::IndexOutOfBoundsException();
     342           0 :     return uno::makeAny(xFormat);
     343             : }
     344             : 
     345           0 : uno::Type SAL_CALL ScAutoFormatsObj::getElementType() throw(uno::RuntimeException)
     346             : {
     347           0 :     SolarMutexGuard aGuard;
     348           0 :     return ::getCppuType((const uno::Reference< container::XNamed >*)0);    // muss zu getByIndex passen
     349             : }
     350             : 
     351           0 : sal_Bool SAL_CALL ScAutoFormatsObj::hasElements() throw(uno::RuntimeException)
     352             : {
     353           0 :     SolarMutexGuard aGuard;
     354           0 :     return ( getCount() != 0 );
     355             : }
     356             : 
     357             : // container::XNameAccess
     358             : 
     359           0 : uno::Any SAL_CALL ScAutoFormatsObj::getByName( const rtl::OUString& aName )
     360             :             throw(container::NoSuchElementException,
     361             :                     lang::WrappedTargetException, uno::RuntimeException)
     362             : {
     363           0 :     SolarMutexGuard aGuard;
     364           0 :     uno::Reference< container::XNamed >  xFormat(GetObjectByName_Impl(aName));
     365           0 :     if (!xFormat.is())
     366           0 :         throw container::NoSuchElementException();
     367           0 :     return uno::makeAny(xFormat);
     368             : }
     369             : 
     370           0 : uno::Sequence<rtl::OUString> SAL_CALL ScAutoFormatsObj::getElementNames()
     371             :                                                 throw(uno::RuntimeException)
     372             : {
     373           0 :     SolarMutexGuard aGuard;
     374           0 :     ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
     375           0 :     String aName;
     376           0 :     uno::Sequence<rtl::OUString> aSeq(pFormats->size());
     377           0 :     rtl::OUString* pAry = aSeq.getArray();
     378           0 :     ScAutoFormat::const_iterator it = pFormats->begin(), itEnd = pFormats->end();
     379           0 :     for (size_t i = 0; it != itEnd; ++it, ++i)
     380             :     {
     381           0 :         pAry[i] = it->second->GetName();
     382             :     }
     383           0 :     return aSeq;
     384             : }
     385             : 
     386           0 : sal_Bool SAL_CALL ScAutoFormatsObj::hasByName( const rtl::OUString& aName )
     387             :                                         throw(uno::RuntimeException)
     388             : {
     389           0 :     SolarMutexGuard aGuard;
     390           0 :     String aString(aName);
     391             :     sal_uInt16 nDummy;
     392             :     return lcl_FindAutoFormatIndex(
     393           0 :         *ScGlobal::GetOrCreateAutoFormat(), aString, nDummy );
     394             : }
     395             : 
     396             : //------------------------------------------------------------------------
     397             : 
     398           0 : ScAutoFormatObj::ScAutoFormatObj(sal_uInt16 nIndex) :
     399             :     aPropSet( lcl_GetAutoFormatMap() ),
     400           0 :     nFormatIndex( nIndex )
     401             : {
     402             :     //! Listening !!!
     403           0 : }
     404             : 
     405           0 : ScAutoFormatObj::~ScAutoFormatObj()
     406             : {
     407             :     //  Wenn ein AutoFormat-Objekt losgelassen wird, werden eventuelle Aenderungen
     408             :     //  gespeichert, damit sie z.B. im Writer sichtbar sind
     409             : 
     410           0 :     if (IsInserted())
     411             :     {
     412           0 :         ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
     413           0 :         if ( pFormats && pFormats->IsSaveLater() )
     414           0 :             pFormats->Save();
     415             : 
     416             :         // Save() setzt SaveLater Flag zurueck
     417             :     }
     418           0 : }
     419             : 
     420           0 : void ScAutoFormatObj::InitFormat( sal_uInt16 nNewIndex )
     421             : {
     422             :     OSL_ENSURE( nFormatIndex == SC_AFMTOBJ_INVALID, "ScAutoFormatObj::InitFormat mehrfach" );
     423           0 :     nFormatIndex = nNewIndex;
     424             :     //! Listening !!!
     425           0 : }
     426             : 
     427             : // XUnoTunnel
     428             : 
     429           0 : sal_Int64 SAL_CALL ScAutoFormatObj::getSomething(
     430             :                 const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
     431             : {
     432           0 :     if ( rId.getLength() == 16 &&
     433           0 :           0 == memcmp( getUnoTunnelId().getConstArray(),
     434           0 :                                     rId.getConstArray(), 16 ) )
     435             :     {
     436           0 :         return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this));
     437             :     }
     438           0 :     return 0;
     439             : }
     440             : 
     441             : namespace
     442             : {
     443             :     class theScAutoFormatObjUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theScAutoFormatObjUnoTunnelId> {};
     444             : }
     445             : 
     446           0 : const uno::Sequence<sal_Int8>& ScAutoFormatObj::getUnoTunnelId()
     447             : {
     448           0 :     return theScAutoFormatObjUnoTunnelId::get().getSeq();
     449             : }
     450             : 
     451           0 : ScAutoFormatObj* ScAutoFormatObj::getImplementation(
     452             :                         const uno::Reference<uno::XInterface> xObj )
     453             : {
     454           0 :     ScAutoFormatObj* pRet = NULL;
     455           0 :     uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
     456           0 :     if (xUT.is())
     457           0 :         pRet = reinterpret_cast<ScAutoFormatObj*>(sal::static_int_cast<sal_IntPtr>(xUT->getSomething(getUnoTunnelId())));
     458           0 :     return pRet;
     459             : }
     460             : 
     461           0 : void ScAutoFormatObj::Notify( SfxBroadcaster& /* rBC */, const SfxHint& /* rHint */ )
     462             : {
     463             :     //  spaeter...
     464           0 : }
     465             : 
     466             : // XTableAutoFormat
     467             : 
     468           0 : ScAutoFormatFieldObj* ScAutoFormatObj::GetObjectByIndex_Impl(sal_uInt16 nIndex)
     469             : {
     470           0 :     if ( IsInserted() && nIndex < SC_AF_FIELD_COUNT )
     471           0 :         return new ScAutoFormatFieldObj( nFormatIndex, nIndex );
     472             : 
     473           0 :     return NULL;
     474             : }
     475             : 
     476             : // container::XEnumerationAccess
     477             : 
     478           0 : uno::Reference<container::XEnumeration> SAL_CALL ScAutoFormatObj::createEnumeration()
     479             :                                                     throw(uno::RuntimeException)
     480             : {
     481           0 :     SolarMutexGuard aGuard;
     482           0 :     return new ScIndexEnumeration(this, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.TableAutoFormatEnumeration")));
     483             : }
     484             : 
     485             : // container::XIndexAccess
     486             : 
     487           0 : sal_Int32 SAL_CALL ScAutoFormatObj::getCount() throw(uno::RuntimeException)
     488             : {
     489           0 :     SolarMutexGuard aGuard;
     490           0 :     if (IsInserted())
     491           0 :         return SC_AF_FIELD_COUNT;   // immer 16 Elemente
     492             :     else
     493           0 :         return 0;
     494             : }
     495             : 
     496           0 : uno::Any SAL_CALL ScAutoFormatObj::getByIndex( sal_Int32 nIndex )
     497             :                             throw(lang::IndexOutOfBoundsException,
     498             :                                     lang::WrappedTargetException, uno::RuntimeException)
     499             : {
     500           0 :     SolarMutexGuard aGuard;
     501             : 
     502           0 :     if ( nIndex < 0 || nIndex >= getCount() )
     503           0 :         throw lang::IndexOutOfBoundsException();
     504             : 
     505           0 :     if (IsInserted())
     506           0 :         return uno::makeAny(uno::Reference< beans::XPropertySet >(GetObjectByIndex_Impl((sal_uInt16)nIndex)));
     507           0 :     return uno::Any();
     508             : }
     509             : 
     510           0 : uno::Type SAL_CALL ScAutoFormatObj::getElementType() throw(uno::RuntimeException)
     511             : {
     512           0 :     SolarMutexGuard aGuard;
     513           0 :     return ::getCppuType((const uno::Reference< beans::XPropertySet >*)0);  // muss zu getByIndex passen
     514             : }
     515             : 
     516           0 : sal_Bool SAL_CALL ScAutoFormatObj::hasElements() throw(uno::RuntimeException)
     517             : {
     518           0 :     SolarMutexGuard aGuard;
     519           0 :     return ( getCount() != 0 );
     520             : }
     521             : 
     522             : // container::XNamed
     523             : 
     524           0 : rtl::OUString SAL_CALL ScAutoFormatObj::getName() throw(uno::RuntimeException)
     525             : {
     526           0 :     SolarMutexGuard aGuard;
     527           0 :     ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
     528           0 :     if (IsInserted() && nFormatIndex < pFormats->size())
     529           0 :         return pFormats->findByIndex(nFormatIndex)->GetName();
     530             : 
     531           0 :     return rtl::OUString();
     532             : }
     533             : 
     534           0 : void SAL_CALL ScAutoFormatObj::setName( const rtl::OUString& aNewName )
     535             :                                                 throw(uno::RuntimeException)
     536             : {
     537           0 :     SolarMutexGuard aGuard;
     538           0 :     String aNewString(aNewName);
     539           0 :     ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
     540             : 
     541             :     sal_uInt16 nDummy;
     542           0 :     if (IsInserted() && nFormatIndex < pFormats->size() &&
     543           0 :         !lcl_FindAutoFormatIndex( *pFormats, aNewName, nDummy ))
     544             :     {
     545           0 :         ScAutoFormat::iterator it = pFormats->begin();
     546           0 :         std::advance(it, nFormatIndex);
     547           0 :         ScAutoFormatData* pData = it->second;
     548             :         OSL_ENSURE(pData,"AutoFormat Daten nicht da");
     549             : 
     550           0 :         ScAutoFormatData* pNew = new ScAutoFormatData(*pData);
     551           0 :         pNew->SetName( aNewString );
     552             : 
     553           0 :         pFormats->erase(it);
     554           0 :         if (pFormats->insert(pNew))
     555             :         {
     556           0 :             it = pFormats->find(pNew);
     557           0 :             ScAutoFormat::iterator itBeg = pFormats->begin();
     558           0 :             nFormatIndex = std::distance(itBeg, it);
     559             : 
     560             :             //! Notify fuer andere Objekte
     561           0 :             pFormats->SetSaveLater(true);
     562             :         }
     563             :         else
     564             :         {
     565             :             OSL_FAIL("AutoFormat konnte nicht eingefuegt werden");
     566           0 :             nFormatIndex = 0;       //! alter Index ist ungueltig
     567             :         }
     568             :     }
     569             :     else
     570             :     {
     571             :         //  not inserted or name exists
     572           0 :         throw uno::RuntimeException();
     573           0 :     }
     574           0 : }
     575             : 
     576             : // beans::XPropertySet
     577             : 
     578           0 : uno::Reference<beans::XPropertySetInfo> SAL_CALL ScAutoFormatObj::getPropertySetInfo()
     579             :                                                         throw(uno::RuntimeException)
     580             : {
     581           0 :     SolarMutexGuard aGuard;
     582           0 :     static uno::Reference< beans::XPropertySetInfo > aRef(new SfxItemPropertySetInfo( aPropSet.getPropertyMap() ));
     583           0 :     return aRef;
     584             : }
     585             : 
     586           0 : void SAL_CALL ScAutoFormatObj::setPropertyValue(
     587             :                         const rtl::OUString& aPropertyName, const uno::Any& aValue )
     588             :                 throw(beans::UnknownPropertyException, beans::PropertyVetoException,
     589             :                         lang::IllegalArgumentException, lang::WrappedTargetException,
     590             :                         uno::RuntimeException)
     591             : {
     592           0 :     SolarMutexGuard aGuard;
     593           0 :     ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
     594           0 :     if (IsInserted() && nFormatIndex < pFormats->size())
     595             :     {
     596           0 :         ScAutoFormatData* pData = pFormats->findByIndex(nFormatIndex);
     597             :         OSL_ENSURE(pData,"AutoFormat Daten nicht da");
     598             : 
     599           0 :         String aPropString(aPropertyName);
     600           0 :         sal_Bool bBool = sal_Bool();
     601           0 :         if (aPropString.EqualsAscii( SC_UNONAME_INCBACK ) && (aValue >>= bBool))
     602           0 :             pData->SetIncludeBackground( bBool );
     603           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCBORD ) && (aValue >>= bBool))
     604           0 :             pData->SetIncludeFrame( bBool );
     605           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCFONT ) && (aValue >>= bBool))
     606           0 :             pData->SetIncludeFont( bBool );
     607           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCJUST ) && (aValue >>= bBool))
     608           0 :             pData->SetIncludeJustify( bBool );
     609           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCNUM ) && (aValue >>= bBool))
     610           0 :             pData->SetIncludeValueFormat( bBool );
     611           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCWIDTH ) && (aValue >>= bBool))
     612           0 :             pData->SetIncludeWidthHeight( bBool );
     613             : 
     614             :         // else Fehler
     615             : 
     616             :         //! Notify fuer andere Objekte
     617           0 :         pFormats->SetSaveLater(sal_True);
     618           0 :     }
     619           0 : }
     620             : 
     621           0 : uno::Any SAL_CALL ScAutoFormatObj::getPropertyValue( const rtl::OUString& aPropertyName )
     622             :                 throw(beans::UnknownPropertyException, lang::WrappedTargetException,
     623             :                         uno::RuntimeException)
     624             : {
     625           0 :     SolarMutexGuard aGuard;
     626           0 :     uno::Any aAny;
     627             : 
     628           0 :     ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
     629           0 :     if (IsInserted() && nFormatIndex < pFormats->size())
     630             :     {
     631           0 :         ScAutoFormatData* pData = pFormats->findByIndex(nFormatIndex);
     632             :         OSL_ENSURE(pData,"AutoFormat Daten nicht da");
     633             : 
     634             :         sal_Bool bValue;
     635           0 :         sal_Bool bError = false;
     636             : 
     637           0 :         String aPropString(aPropertyName);
     638           0 :         if (aPropString.EqualsAscii( SC_UNONAME_INCBACK ))
     639           0 :             bValue = pData->GetIncludeBackground();
     640           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCBORD ))
     641           0 :             bValue = pData->GetIncludeFrame();
     642           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCFONT ))
     643           0 :             bValue = pData->GetIncludeFont();
     644           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCJUST ))
     645           0 :             bValue = pData->GetIncludeJustify();
     646           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCNUM ))
     647           0 :             bValue = pData->GetIncludeValueFormat();
     648           0 :         else if (aPropString.EqualsAscii( SC_UNONAME_INCWIDTH ))
     649           0 :             bValue = pData->GetIncludeWidthHeight();
     650             :         else
     651           0 :             bError = sal_True;      // unbekannte Property
     652             : 
     653           0 :         if (!bError)
     654           0 :             aAny <<= bValue;
     655             :     }
     656             : 
     657           0 :     return aAny;
     658             : }
     659             : 
     660           0 : SC_IMPL_DUMMY_PROPERTY_LISTENER( ScAutoFormatObj )
     661             : 
     662             : //------------------------------------------------------------------------
     663             : 
     664           0 : ScAutoFormatFieldObj::ScAutoFormatFieldObj(sal_uInt16 nFormat, sal_uInt16 nField) :
     665             :     aPropSet( lcl_GetAutoFieldMap() ),
     666             :     nFormatIndex( nFormat ),
     667           0 :     nFieldIndex( nField )
     668             : {
     669             :     //! Listening !!!
     670           0 : }
     671             : 
     672           0 : ScAutoFormatFieldObj::~ScAutoFormatFieldObj()
     673             : {
     674           0 : }
     675             : 
     676           0 : void ScAutoFormatFieldObj::Notify( SfxBroadcaster& /* rBC */, const SfxHint& /* rHint */ )
     677             : {
     678             :     //  spaeter...
     679           0 : }
     680             : 
     681             : // beans::XPropertySet
     682             : 
     683           0 : uno::Reference<beans::XPropertySetInfo> SAL_CALL ScAutoFormatFieldObj::getPropertySetInfo()
     684             :                                                         throw(uno::RuntimeException)
     685             : {
     686           0 :     SolarMutexGuard aGuard;
     687           0 :     static uno::Reference< beans::XPropertySetInfo > aRef(new SfxItemPropertySetInfo( aPropSet.getPropertyMap() ));
     688           0 :     return aRef;
     689             : }
     690             : 
     691           0 : void SAL_CALL ScAutoFormatFieldObj::setPropertyValue(
     692             :                         const rtl::OUString& aPropertyName, const uno::Any& aValue )
     693             :                 throw(beans::UnknownPropertyException, beans::PropertyVetoException,
     694             :                         lang::IllegalArgumentException, lang::WrappedTargetException,
     695             :                         uno::RuntimeException)
     696             : {
     697           0 :     SolarMutexGuard aGuard;
     698           0 :     ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
     699             :     const SfxItemPropertySimpleEntry* pEntry =
     700           0 :             aPropSet.getPropertyMap().getByName( aPropertyName );
     701             : 
     702           0 :     if ( pEntry && pEntry->nWID && nFormatIndex < pFormats->size() )
     703             :     {
     704           0 :         ScAutoFormatData* pData = pFormats->findByIndex(nFormatIndex);
     705             : 
     706           0 :         if ( IsScItemWid( pEntry->nWID ) )
     707             :         {
     708           0 :             if( const SfxPoolItem* pItem = pData->GetItem( nFieldIndex, pEntry->nWID ) )
     709             :             {
     710           0 :                 sal_Bool bDone = false;
     711             : 
     712           0 :                 switch( pEntry->nWID )
     713             :                 {
     714             :                     case ATTR_STACKED:
     715             :                     {
     716             :                         table::CellOrientation eOrient;
     717           0 :                         if( aValue >>= eOrient )
     718             :                         {
     719           0 :                             switch( eOrient )
     720             :                             {
     721             :                                 case table::CellOrientation_STANDARD:
     722           0 :                                     pData->PutItem( nFieldIndex, SfxBoolItem( ATTR_STACKED, false ) );
     723           0 :                                 break;
     724             :                                 case table::CellOrientation_TOPBOTTOM:
     725           0 :                                     pData->PutItem( nFieldIndex, SfxBoolItem( ATTR_STACKED, false ) );
     726           0 :                                     pData->PutItem( nFieldIndex, SfxInt32Item( ATTR_ROTATE_VALUE, 27000 ) );
     727           0 :                                 break;
     728             :                                 case table::CellOrientation_BOTTOMTOP:
     729           0 :                                     pData->PutItem( nFieldIndex, SfxBoolItem( ATTR_STACKED, false ) );
     730           0 :                                     pData->PutItem( nFieldIndex, SfxInt32Item( ATTR_ROTATE_VALUE, 9000 ) );
     731           0 :                                 break;
     732             :                                 case table::CellOrientation_STACKED:
     733           0 :                                     pData->PutItem( nFieldIndex, SfxBoolItem( ATTR_STACKED, sal_True ) );
     734           0 :                                 break;
     735             :                                 default:
     736             :                                 {
     737             :                                     // added to avoid warnings
     738             :                                 }
     739             :                             }
     740           0 :                             bDone = sal_True;
     741             :                         }
     742             :                     }
     743           0 :                     break;
     744             :                     default:
     745           0 :                         SfxPoolItem* pNewItem = pItem->Clone();
     746           0 :                         bDone = pNewItem->PutValue( aValue, pEntry->nMemberId );
     747           0 :                         if (bDone)
     748           0 :                             pData->PutItem( nFieldIndex, *pNewItem );
     749           0 :                         delete pNewItem;
     750             :                 }
     751             : 
     752           0 :                 if (bDone)
     753             :                     //! Notify fuer andere Objekte?
     754           0 :                     pFormats->SetSaveLater(sal_True);
     755             :             }
     756             :         }
     757             :         else
     758             :         {
     759           0 :             switch (pEntry->nWID)
     760             :             {
     761             :                 case SC_WID_UNO_TBLBORD:
     762             :                     {
     763           0 :                         table::TableBorder aBorder;
     764           0 :                         if ( aValue >>= aBorder )   // empty = nothing to do
     765             :                         {
     766           0 :                             SvxBoxItem aOuter(ATTR_BORDER);
     767           0 :                             SvxBoxInfoItem aInner(ATTR_BORDER_INNER);
     768           0 :                             ScHelperFunctions::FillBoxItems( aOuter, aInner, aBorder );
     769           0 :                             pData->PutItem( nFieldIndex, aOuter );
     770             : 
     771             :                             //! Notify for other objects?
     772           0 :                             pFormats->SetSaveLater(sal_True);
     773             :                         }
     774             :                     }
     775           0 :                     break;
     776             :                 case SC_WID_UNO_TBLBORD2:
     777             :                     {
     778           0 :                         table::TableBorder2 aBorder2;
     779           0 :                         if ( aValue >>= aBorder2 )   // empty = nothing to do
     780             :                         {
     781           0 :                             SvxBoxItem aOuter(ATTR_BORDER);
     782           0 :                             SvxBoxInfoItem aInner(ATTR_BORDER_INNER);
     783           0 :                             ScHelperFunctions::FillBoxItems( aOuter, aInner, aBorder2 );
     784           0 :                             pData->PutItem( nFieldIndex, aOuter );
     785             : 
     786             :                             //! Notify for other objects?
     787           0 :                             pFormats->SetSaveLater(sal_True);
     788             :                         }
     789             :                     }
     790           0 :                     break;
     791             :             }
     792             :         }
     793           0 :     }
     794           0 : }
     795             : 
     796           0 : uno::Any SAL_CALL ScAutoFormatFieldObj::getPropertyValue( const rtl::OUString& aPropertyName )
     797             :                 throw(beans::UnknownPropertyException, lang::WrappedTargetException,
     798             :                         uno::RuntimeException)
     799             : {
     800           0 :     SolarMutexGuard aGuard;
     801           0 :     uno::Any aVal;
     802             : 
     803           0 :     ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
     804             :     const SfxItemPropertySimpleEntry* pEntry =
     805           0 :             aPropSet.getPropertyMap().getByName( aPropertyName );
     806             : 
     807           0 :     if ( pEntry && pEntry->nWID && nFormatIndex < pFormats->size() )
     808             :     {
     809           0 :         const ScAutoFormatData* pData = pFormats->findByIndex(nFormatIndex);
     810             : 
     811           0 :         if ( IsScItemWid( pEntry->nWID ) )
     812             :         {
     813           0 :             if( const SfxPoolItem* pItem = pData->GetItem( nFieldIndex, pEntry->nWID ) )
     814             :             {
     815           0 :                 switch( pEntry->nWID )
     816             :                 {
     817             :                     case ATTR_STACKED:
     818             :                     {
     819           0 :                         const SfxInt32Item* pRotItem = (const SfxInt32Item*)pData->GetItem( nFieldIndex, ATTR_ROTATE_VALUE );
     820           0 :                         sal_Int32 nRot = pRotItem ? pRotItem->GetValue() : 0;
     821           0 :                         sal_Bool bStacked = ((const SfxBoolItem*)pItem)->GetValue();
     822           0 :                         SvxOrientationItem( nRot, bStacked, 0 ).QueryValue( aVal );
     823             :                     }
     824           0 :                     break;
     825             :                     default:
     826           0 :                         pItem->QueryValue( aVal, pEntry->nMemberId );
     827             :                 }
     828             :             }
     829             :         }
     830             :         else
     831             :         {
     832           0 :             switch (pEntry->nWID)
     833             :             {
     834             :                 case SC_WID_UNO_TBLBORD:
     835             :                 case SC_WID_UNO_TBLBORD2:
     836             :                     {
     837           0 :                         const SfxPoolItem* pItem = pData->GetItem(nFieldIndex, ATTR_BORDER);
     838           0 :                         if (pItem)
     839             :                         {
     840           0 :                             SvxBoxItem aOuter(*(static_cast<const SvxBoxItem*>(pItem)));
     841           0 :                             SvxBoxInfoItem aInner(ATTR_BORDER_INNER);
     842             : 
     843           0 :                             if (pEntry->nWID == SC_WID_UNO_TBLBORD2)
     844           0 :                                 ScHelperFunctions::AssignTableBorder2ToAny( aVal, aOuter, aInner);
     845             :                             else
     846           0 :                                 ScHelperFunctions::AssignTableBorderToAny( aVal, aOuter, aInner);
     847             :                         }
     848             :                     }
     849           0 :                     break;
     850             :             }
     851             :         }
     852             :     }
     853             : 
     854           0 :     return aVal;
     855             : }
     856             : 
     857           0 : SC_IMPL_DUMMY_PROPERTY_LISTENER( ScAutoFormatFieldObj )
     858             : 
     859             : //------------------------------------------------------------------------
     860             : 
     861             : 
     862             : 
     863             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10