LCOV - code coverage report
Current view: top level - xmlscript/source/xmldlg_imexp - xmldlg_import.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 281 788 35.7 %
Date: 2015-06-13 12:38:46 Functions: 42 61 68.9 %
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 "imp_share.hxx"
      21             : #include "xml_import.hxx"
      22             : 
      23             : #include <com/sun/star/awt/CharSet.hpp>
      24             : #include <com/sun/star/awt/FontFamily.hpp>
      25             : #include <com/sun/star/awt/FontPitch.hpp>
      26             : #include <com/sun/star/awt/FontSlant.hpp>
      27             : #include <com/sun/star/awt/FontStrikeout.hpp>
      28             : #include <com/sun/star/awt/FontType.hpp>
      29             : #include <com/sun/star/awt/FontUnderline.hpp>
      30             : #include <com/sun/star/awt/FontWeight.hpp>
      31             : #include <com/sun/star/awt/FontWidth.hpp>
      32             : #include <com/sun/star/awt/ImagePosition.hpp>
      33             : #include <com/sun/star/awt/ImageScaleMode.hpp>
      34             : #include <com/sun/star/awt/LineEndFormat.hpp>
      35             : #include <com/sun/star/awt/PushButtonType.hpp>
      36             : #include <com/sun/star/awt/VisualEffect.hpp>
      37             : #include <com/sun/star/style/VerticalAlignment.hpp>
      38             : #include <com/sun/star/util/Date.hpp>
      39             : #include <com/sun/star/util/Time.hpp>
      40             : #include <sal/log.hxx>
      41             : #include <tools/date.hxx>
      42             : #include <tools/time.hxx>
      43             : #include <osl/diagnose.h>
      44             : 
      45             : #include <com/sun/star/script/XScriptEventsSupplier.hpp>
      46             : #include <com/sun/star/script/ScriptEventDescriptor.hpp>
      47             : 
      48             : #include <com/sun/star/view/SelectionType.hpp>
      49             : #include <com/sun/star/lang/XServiceInfo.hpp>
      50             : #include <com/sun/star/form/binding/XBindableValue.hpp>
      51             : #include <com/sun/star/form/binding/XValueBinding.hpp>
      52             : #include <com/sun/star/form/binding/XListEntrySink.hpp>
      53             : #include <com/sun/star/beans/NamedValue.hpp>
      54             : #include <com/sun/star/table/CellAddress.hpp>
      55             : #include <com/sun/star/table/CellRangeAddress.hpp>
      56             : #include <com/sun/star/document/XGraphicObjectResolver.hpp>
      57             : #include <com/sun/star/document/XStorageBasedDocument.hpp>
      58             : #include <com/sun/star/script/DocumentScriptLibraryContainer.hpp>
      59             : #include <com/sun/star/script/vba/XVBACompatibility.hpp>
      60             : #include <com/sun/star/util/NumberFormatsSupplier.hpp>
      61             : 
      62             : using namespace ::com::sun::star;
      63             : using namespace ::com::sun::star::uno;
      64             : using namespace ::com::sun::star::frame;
      65             : 
      66             : namespace xmlscript
      67             : {
      68             : 
      69           0 : void EventElement::endElement()
      70             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
      71             : {
      72           0 :     static_cast< ControlElement * >( _pParent )->_events.push_back( this );
      73           0 : }
      74             : 
      75          23 : ControlElement::ControlElement(
      76             :     OUString const & rLocalName,
      77             :     Reference< xml::input::XAttributes > const & xAttributes,
      78             :     ElementBase * pParent, DialogImport * pImport )
      79             :     : ElementBase(
      80          23 :         pImport->XMLNS_DIALOGS_UID, rLocalName, xAttributes, pParent, pImport )
      81             : {
      82          23 :     if (_pParent)
      83             :     {
      84             :         // inherit position
      85          17 :         _nBasePosX = static_cast< ControlElement * >( _pParent )->_nBasePosX;
      86          17 :         _nBasePosY = static_cast< ControlElement * >( _pParent )->_nBasePosY;
      87             :     }
      88             :     else
      89             :     {
      90           6 :         _nBasePosX = 0;
      91           6 :         _nBasePosY = 0;
      92             :     }
      93          23 : }
      94             : 
      95          16 : Reference< xml::input::XElement > ControlElement::getStyle(
      96             :     Reference< xml::input::XAttributes > const & xAttributes )
      97             : {
      98          16 :     OUString aStyleId( xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID,"style-id" ) );
      99          16 :     if (!aStyleId.isEmpty())
     100             :     {
     101           8 :         return _pImport->getStyle( aStyleId );
     102             :     }
     103           8 :     return Reference< xml::input::XElement >();
     104             : }
     105             : 
     106          16 : OUString ControlElement::getControlId(
     107             :     Reference< xml::input::XAttributes > const & xAttributes )
     108             : {
     109          16 :     OUString aId( xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, "id" ) );
     110          16 :     if (aId.isEmpty())
     111             :     {
     112           0 :         throw xml::sax::SAXException( "missing id attribute!", Reference< XInterface >(), Any() );
     113             :     }
     114          16 :     return aId;
     115             : }
     116             : 
     117           3 : OUString ControlElement::getControlModelName(
     118             :     OUString const& rDefaultModel,
     119             :     Reference< xml::input::XAttributes > const & xAttributes )
     120             : {
     121           3 :     OUString aModel;
     122           3 :     aModel = xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, "control-implementation");
     123           3 :     if (aModel.isEmpty())
     124           0 :         aModel = rDefaultModel;
     125           3 :     return aModel;
     126             : }
     127             : 
     128           8 : bool StyleElement::importTextColorStyle(
     129             :     Reference< beans::XPropertySet > const & xProps )
     130             : {
     131           8 :     if ((_inited & 0x2) != 0)
     132             :     {
     133           0 :         if ((_hasValue & 0x2) != 0)
     134             :         {
     135           0 :             xProps->setPropertyValue("TextColor", makeAny( _textColor ) );
     136           0 :             return true;
     137             :         }
     138           0 :         return false;
     139             :     }
     140           8 :     _inited |= 0x2;
     141             : 
     142           8 :     if (getLongAttr( &_textColor, "text-color", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     143             :     {
     144           6 :         _hasValue |= 0x2;
     145           6 :         xProps->setPropertyValue( "TextColor", makeAny( _textColor ) );
     146           6 :         return true;
     147             :     }
     148           2 :     return false;
     149             : }
     150             : 
     151           8 : bool StyleElement::importTextLineColorStyle(
     152             :     Reference< beans::XPropertySet > const & xProps )
     153             : {
     154           8 :     if ((_inited & 0x20) != 0)
     155             :     {
     156           0 :         if ((_hasValue & 0x20) != 0)
     157             :         {
     158           0 :             xProps->setPropertyValue( "TextLineColor", makeAny( _textLineColor ) );
     159           0 :             return true;
     160             :         }
     161           0 :         return false;
     162             :     }
     163           8 :     _inited |= 0x20;
     164             : 
     165           8 :     if (getLongAttr( &_textLineColor, "textline-color", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     166             :     {
     167           0 :         _hasValue |= 0x20;
     168           0 :         xProps->setPropertyValue( "TextLineColor", makeAny( _textLineColor ) );
     169           0 :         return true;
     170             :     }
     171           8 :     return false;
     172             : }
     173             : 
     174           0 : bool StyleElement::importFillColorStyle(
     175             :     Reference< beans::XPropertySet > const & xProps )
     176             : {
     177           0 :     if ((_inited & 0x10) != 0)
     178             :     {
     179           0 :         if ((_hasValue & 0x10) != 0)
     180             :         {
     181           0 :             xProps->setPropertyValue( "FillColor", makeAny( _fillColor ) );
     182           0 :             return true;
     183             :         }
     184           0 :         return false;
     185             :     }
     186           0 :     _inited |= 0x10;
     187             : 
     188           0 :     if (getLongAttr( &_fillColor, "fill-color", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     189             :     {
     190           0 :         _hasValue |= 0x10;
     191           0 :         xProps->setPropertyValue( "FillColor", makeAny( _fillColor ) );
     192           0 :         return true;
     193             :     }
     194           0 :     return false;
     195             : }
     196             : 
     197           8 : bool StyleElement::importBackgroundColorStyle(
     198             :     Reference< beans::XPropertySet > const & xProps )
     199             : {
     200           8 :     if ((_inited & 0x1) != 0)
     201             :     {
     202           0 :         if ((_hasValue & 0x1) != 0)
     203             :         {
     204           0 :             xProps->setPropertyValue( "BackgroundColor", makeAny( _backgroundColor ) );
     205           0 :             return true;
     206             :         }
     207           0 :         return false;
     208             :     }
     209           8 :     _inited |= 0x1;
     210             : 
     211           8 :     if (getLongAttr( &_backgroundColor, "background-color", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     212             :     {
     213           8 :         _hasValue |= 0x1;
     214           8 :         xProps->setPropertyValue( "BackgroundColor", makeAny( _backgroundColor ) );
     215           8 :         return true;
     216             :     }
     217           0 :     return false;
     218             : }
     219             : 
     220           3 : bool StyleElement::importBorderStyle(
     221             :     Reference< beans::XPropertySet > const & xProps )
     222             : {
     223           3 :     if ((_inited & 0x4) != 0)
     224             :     {
     225           0 :         if ((_hasValue & 0x4) != 0)
     226             :         {
     227           0 :             xProps->setPropertyValue( "Border", makeAny( _border == BORDER_SIMPLE_COLOR ? BORDER_SIMPLE : _border ) );
     228           0 :             if (_border == BORDER_SIMPLE_COLOR)
     229           0 :                 xProps->setPropertyValue( "BorderColor", makeAny(_borderColor) );
     230           0 :             return true;
     231             :         }
     232           0 :         return false;
     233             :     }
     234           3 :     _inited |= 0x4;
     235             : 
     236           3 :     OUString aValue;
     237           3 :     if (getStringAttr(&aValue, "border", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     238             :         {
     239           0 :         if ( aValue == "none" )
     240           0 :             _border = BORDER_NONE;
     241           0 :         else if ( aValue == "3d" )
     242           0 :             _border = BORDER_3D;
     243           0 :         else if ( aValue == "simple" )
     244           0 :             _border = BORDER_SIMPLE;
     245             :         else {
     246           0 :             _border = BORDER_SIMPLE_COLOR;
     247           0 :             _borderColor = toInt32(aValue);
     248             :         }
     249             : 
     250           0 :         _hasValue |= 0x4;
     251           0 :         importBorderStyle(xProps); // write values
     252             :     }
     253           3 :     return false;
     254             : }
     255             : 
     256           2 : bool StyleElement::importVisualEffectStyle(
     257             :     Reference<beans::XPropertySet> const & xProps )
     258             : {
     259           2 :     if ((_inited & 0x40) != 0)
     260             :     {
     261           0 :         if ((_hasValue & 0x40) != 0)
     262             :         {
     263           0 :             xProps->setPropertyValue( "VisualEffect", makeAny(_visualEffect) );
     264           0 :             return true;
     265             :         }
     266           0 :         return false;
     267             :     }
     268           2 :     _inited |= 0x40;
     269             : 
     270           2 :     OUString aValue;
     271           2 :     if (getStringAttr( &aValue, "look", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     272             :     {
     273           0 :         if ( aValue == "none" )
     274             :         {
     275           0 :             _visualEffect = awt::VisualEffect::NONE;
     276             :         }
     277           0 :         else if ( aValue == "3d" )
     278             :         {
     279           0 :             _visualEffect = awt::VisualEffect::LOOK3D;
     280             :         }
     281           0 :         else if ( aValue == "simple" )
     282             :         {
     283           0 :             _visualEffect = awt::VisualEffect::FLAT;
     284             :         }
     285             :         else
     286             :             OSL_ASSERT( false );
     287             : 
     288           0 :         _hasValue |= 0x40;
     289           0 :         xProps->setPropertyValue( "VisualEffect", makeAny(_visualEffect) );
     290             :     }
     291           2 :     return false;
     292             : }
     293             : 
     294           6 : void StyleElement::setFontProperties(
     295             :     Reference< beans::XPropertySet > const & xProps )
     296             : {
     297           6 :     xProps->setPropertyValue("FontDescriptor", makeAny( _descr ) );
     298           6 :     xProps->setPropertyValue("FontEmphasisMark", makeAny( _fontEmphasisMark ) );
     299           6 :     xProps->setPropertyValue("FontRelief", makeAny( _fontRelief ) );
     300           6 : }
     301             : 
     302           8 : bool StyleElement::importFontStyle(
     303             :     Reference< beans::XPropertySet > const & xProps )
     304             : {
     305           8 :     if ((_inited & 0x8) != 0)
     306             :     {
     307           0 :         if ((_hasValue & 0x8) != 0)
     308             :         {
     309           0 :             setFontProperties( xProps );
     310           0 :             return true;
     311             :         }
     312           0 :         return false;
     313             :     }
     314           8 :     _inited |= 0x8;
     315             : 
     316           8 :     OUString aValue;
     317             :     bool bFontImport;
     318             : 
     319             :     // dialog:font-name CDATA #IMPLIED
     320           8 :     bFontImport = getStringAttr( &_descr.Name, "font-name", _xAttributes, _pImport->XMLNS_DIALOGS_UID );
     321             : 
     322             :     // dialog:font-height %numeric; #IMPLIED
     323           8 :     if (getStringAttr( &aValue, "font-height", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     324             :     {
     325           6 :         _descr.Height = (sal_Int16)toInt32( aValue );
     326           6 :         bFontImport = true;
     327             :     }
     328             :     // dialog:font-width %numeric; #IMPLIED
     329           8 :     if (getStringAttr(&aValue, "font-width", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     330             :     {
     331           0 :         _descr.Width = (sal_Int16)toInt32( aValue );
     332           0 :         bFontImport = true;
     333             :     }
     334             :     // dialog:font-stylename CDATA #IMPLIED
     335           8 :     bFontImport |= getStringAttr( &_descr.StyleName, "font-stylename", _xAttributes, _pImport->XMLNS_DIALOGS_UID );
     336             : 
     337             :     // dialog:font-family "(decorative|modern|roman|script|swiss|system)" #IMPLIED
     338           8 :     if (getStringAttr(&aValue, "font-family", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     339             :     {
     340           0 :         if ( aValue == "decorative" )
     341             :         {
     342           0 :             _descr.Family = awt::FontFamily::DECORATIVE;
     343             :         }
     344           0 :         else if ( aValue == "modern" )
     345             :         {
     346           0 :             _descr.Family = awt::FontFamily::MODERN;
     347             :         }
     348           0 :         else if ( aValue == "roman" )
     349             :         {
     350           0 :             _descr.Family = awt::FontFamily::ROMAN;
     351             :         }
     352           0 :         else if ( aValue == "script" )
     353             :         {
     354           0 :             _descr.Family = awt::FontFamily::SCRIPT;
     355             :         }
     356           0 :         else if ( aValue == "swiss" )
     357             :         {
     358           0 :             _descr.Family = awt::FontFamily::SWISS;
     359             :         }
     360           0 :         else if ( aValue == "system" )
     361             :         {
     362           0 :             _descr.Family = awt::FontFamily::SYSTEM;
     363             :         }
     364             :         else
     365             :         {
     366           0 :             throw xml::sax::SAXException("invalid font-family style!", Reference< XInterface >(), Any() );
     367             :         }
     368           0 :         bFontImport = true;
     369             :     }
     370             : 
     371             :     // dialog:font-charset "(ansi|mac|ibmpc_437|ibmpc_850|ibmpc_860|ibmpc_861|ibmpc_863|ibmpc_865|system|symbol)" #IMPLIED
     372           8 :     if (getStringAttr(&aValue, "font-charset", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     373             :     {
     374           6 :         if ( aValue == "ansi" )
     375             :         {
     376           6 :             _descr.CharSet = awt::CharSet::ANSI;
     377             :         }
     378           0 :         else if ( aValue == "mac" )
     379             :         {
     380           0 :             _descr.CharSet = awt::CharSet::MAC;
     381             :         }
     382           0 :         else if ( aValue == "ibmpc_437" )
     383             :         {
     384           0 :             _descr.CharSet = awt::CharSet::IBMPC_437;
     385             :         }
     386           0 :         else if ( aValue == "ibmpc_850" )
     387             :         {
     388           0 :             _descr.CharSet = awt::CharSet::IBMPC_850;
     389             :         }
     390           0 :         else if ( aValue == "ibmpc_860" )
     391             :         {
     392           0 :             _descr.CharSet = awt::CharSet::IBMPC_860;
     393             :         }
     394           0 :         else if ( aValue == "ibmpc_861" )
     395             :         {
     396           0 :             _descr.CharSet = awt::CharSet::IBMPC_861;
     397             :         }
     398           0 :         else if ( aValue == "ibmpc_863" )
     399             :         {
     400           0 :             _descr.CharSet = awt::CharSet::IBMPC_863;
     401             :         }
     402           0 :         else if ( aValue == "ibmpc_865" )
     403             :         {
     404           0 :             _descr.CharSet = awt::CharSet::IBMPC_865;
     405             :         }
     406           0 :         else if ( aValue == "system" )
     407             :         {
     408           0 :             _descr.CharSet = awt::CharSet::SYSTEM;
     409             :         }
     410           0 :         else if ( aValue == "symbol" )
     411             :         {
     412           0 :             _descr.CharSet = awt::CharSet::SYMBOL;
     413             :         }
     414             :         else
     415             :         {
     416           0 :             throw xml::sax::SAXException("invalid font-charset style!", Reference< XInterface >(), Any() );
     417             :         }
     418           6 :         bFontImport = true;
     419             :     }
     420             : 
     421             :     // dialog:font-pitch "(fixed|variable)" #IMPLIED
     422           8 :     if (getStringAttr( &aValue, "font-pitch", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     423             :     {
     424           0 :         if ( aValue == "fixed" )
     425             :         {
     426           0 :             _descr.Pitch = awt::FontPitch::FIXED;
     427             :         }
     428           0 :         else if ( aValue == "variable" )
     429             :         {
     430           0 :             _descr.Pitch = awt::FontPitch::VARIABLE;
     431             :         }
     432             :         else
     433             :         {
     434           0 :             throw xml::sax::SAXException("invalid font-pitch style!", Reference< XInterface >(), Any() );
     435             :         }
     436           0 :         bFontImport = true;
     437             :     }
     438             : 
     439             :     // dialog:font-charwidth CDATA #IMPLIED
     440           8 :     if (getStringAttr( &aValue, "font-charwidth", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     441             :     {
     442           0 :         _descr.CharacterWidth = aValue.toFloat();
     443           0 :         bFontImport = true;
     444             :     }
     445             :     // dialog:font-weight CDATA #IMPLIED
     446           8 :     if (getStringAttr( &aValue, "font-weight", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     447             :     {
     448           6 :         _descr.Weight = aValue.toFloat();
     449           6 :         bFontImport = true;
     450             :     }
     451             : 
     452             :     // dialog:font-slant "(oblique|italic|reverse_oblique|reverse_italic)" #IMPLIED
     453           8 :     if (getStringAttr( &aValue, "font-slant", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     454             :     {
     455           0 :         if ( aValue == "oblique" )
     456             :         {
     457           0 :             _descr.Slant = awt::FontSlant_OBLIQUE;
     458             :         }
     459           0 :         else if ( aValue == "italic" )
     460             :         {
     461           0 :             _descr.Slant = awt::FontSlant_ITALIC;
     462             :         }
     463           0 :         else if ( aValue == "reverse_oblique" )
     464             :         {
     465           0 :             _descr.Slant = awt::FontSlant_REVERSE_OBLIQUE;
     466             :         }
     467           0 :         else if ( aValue == "reverse_italic" )
     468             :         {
     469           0 :             _descr.Slant = awt::FontSlant_REVERSE_ITALIC;
     470             :         }
     471             :         else
     472             :         {
     473           0 :             throw xml::sax::SAXException("invalid font-slant style!", Reference< XInterface >(), Any() );
     474             :         }
     475           0 :         bFontImport = true;
     476             :     }
     477             : 
     478             :     // dialog:font-underline "(single|double|dotted|dash|longdash|dashdot|dashdotdot|smallwave|wave|doublewave|bold|bolddotted|bolddash|boldlongdash|bolddashdot|bolddashdotdot|boldwave)" #IMPLIED
     479           8 :     if (getStringAttr( &aValue, "font-underline", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     480             :     {
     481           0 :         if ( aValue == "single" )
     482             :         {
     483           0 :             _descr.Underline = awt::FontUnderline::SINGLE;
     484             :         }
     485           0 :         else if ( aValue == "double" )
     486             :         {
     487           0 :             _descr.Underline = awt::FontUnderline::DOUBLE;
     488             :         }
     489           0 :         else if ( aValue == "dotted" )
     490             :         {
     491           0 :             _descr.Underline = awt::FontUnderline::DOTTED;
     492             :         }
     493           0 :         else if ( aValue == "dash" )
     494             :         {
     495           0 :             _descr.Underline = awt::FontUnderline::DASH;
     496             :         }
     497           0 :         else if ( aValue == "longdash" )
     498             :         {
     499           0 :             _descr.Underline = awt::FontUnderline::LONGDASH;
     500             :         }
     501           0 :         else if ( aValue == "dashdot" )
     502             :         {
     503           0 :             _descr.Underline = awt::FontUnderline::DASHDOT;
     504             :         }
     505           0 :         else if ( aValue == "dashdotdot" )
     506             :         {
     507           0 :             _descr.Underline = awt::FontUnderline::DASHDOTDOT;
     508             :         }
     509           0 :         else if ( aValue == "smallwave" )
     510             :         {
     511           0 :             _descr.Underline = awt::FontUnderline::SMALLWAVE;
     512             :         }
     513           0 :         else if ( aValue == "wave" )
     514             :         {
     515           0 :             _descr.Underline = awt::FontUnderline::WAVE;
     516             :         }
     517           0 :         else if ( aValue == "doublewave" )
     518             :         {
     519           0 :             _descr.Underline = awt::FontUnderline::DOUBLEWAVE;
     520             :         }
     521           0 :         else if ( aValue == "bold" )
     522             :         {
     523           0 :             _descr.Underline = awt::FontUnderline::BOLD;
     524             :         }
     525           0 :         else if ( aValue == "bolddotted" )
     526             :         {
     527           0 :             _descr.Underline = awt::FontUnderline::BOLDDOTTED;
     528             :         }
     529           0 :         else if ( aValue == "bolddash" )
     530             :         {
     531           0 :             _descr.Underline = awt::FontUnderline::BOLDDASH;
     532             :         }
     533           0 :         else if ( aValue == "boldlongdash" )
     534             :         {
     535           0 :             _descr.Underline = awt::FontUnderline::BOLDLONGDASH;
     536             :         }
     537           0 :         else if ( aValue == "bolddashdot" )
     538             :         {
     539           0 :             _descr.Underline = awt::FontUnderline::BOLDDASHDOT;
     540             :         }
     541           0 :         else if ( aValue == "bolddashdotdot" )
     542             :         {
     543           0 :             _descr.Underline = awt::FontUnderline::BOLDDASHDOTDOT;
     544             :         }
     545           0 :         else if ( aValue == "boldwave" )
     546             :         {
     547           0 :             _descr.Underline = awt::FontUnderline::BOLDWAVE;
     548             :         }
     549             :         else
     550             :         {
     551           0 :             throw xml::sax::SAXException("invalid font-underline style!", Reference< XInterface >(), Any() );
     552             :         }
     553           0 :         bFontImport = true;
     554             :     }
     555             : 
     556             :     // dialog:font-strikeout "(single|double|bold|slash|x)" #IMPLIED
     557           8 :     if (getStringAttr( &aValue, "font-strikeout", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     558             :     {
     559           0 :         if ( aValue == "single" )
     560             :         {
     561           0 :             _descr.Strikeout = awt::FontStrikeout::SINGLE;
     562             :         }
     563           0 :         else if ( aValue == "double" )
     564             :         {
     565           0 :             _descr.Strikeout = awt::FontStrikeout::DOUBLE;
     566             :         }
     567           0 :         else if ( aValue == "bold" )
     568             :         {
     569           0 :             _descr.Strikeout = awt::FontStrikeout::BOLD;
     570             :         }
     571           0 :         else if ( aValue == "slash" )
     572             :         {
     573           0 :             _descr.Strikeout = awt::FontStrikeout::SLASH;
     574             :         }
     575           0 :         else if ( aValue == "x" )
     576             :         {
     577           0 :             _descr.Strikeout = awt::FontStrikeout::X;
     578             :         }
     579             :         else
     580             :         {
     581           0 :             throw xml::sax::SAXException( "invalid font-strikeout style!" , Reference< XInterface >(), Any() );
     582             :         }
     583           0 :         bFontImport = true;
     584             :     }
     585             : 
     586             :     // dialog:font-orientation CDATA #IMPLIED
     587           8 :     if (getStringAttr( &aValue, "font-orientation", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     588             :     {
     589           0 :         _descr.Orientation = aValue.toFloat();
     590           0 :         bFontImport = true;
     591             :     }
     592             :     // dialog:font-kerning %boolean; #IMPLIED
     593           8 :     bFontImport |= getBoolAttr( &_descr.Kerning, "font-kerning", _xAttributes, _pImport->XMLNS_DIALOGS_UID );
     594             :     // dialog:font-wordlinemode %boolean; #IMPLIED
     595           8 :     bFontImport |= getBoolAttr( &_descr.WordLineMode,"font-wordlinemode", _xAttributes, _pImport->XMLNS_DIALOGS_UID );
     596             : 
     597             :     // dialog:font-type "(raster|device|scalable)" #IMPLIED
     598           8 :     if (getStringAttr( &aValue, "font-type", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     599             :     {
     600           0 :         if ( aValue == "raster" )
     601             :         {
     602           0 :             _descr.Type = awt::FontType::RASTER;
     603             :         }
     604           0 :         else if ( aValue == "device" )
     605             :         {
     606           0 :             _descr.Type = awt::FontType::DEVICE;
     607             :         }
     608           0 :         else if ( aValue == "scalable" )
     609             :         {
     610           0 :             _descr.Type = awt::FontType::SCALABLE;
     611             :         }
     612             :         else
     613             :         {
     614           0 :             throw xml::sax::SAXException( "invalid font-type style!", Reference< XInterface >(), Any() );
     615             :         }
     616           0 :         bFontImport = true;
     617             :     }
     618             : 
     619             :     // additional properties which are not part of the FontDescriptor struct
     620             :     // dialog:font-relief (none|embossed|engraved) #IMPLIED
     621           8 :     if (getStringAttr( &aValue, "font-relief", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     622             :     {
     623           0 :         if ( aValue == "none" )
     624             :         {
     625           0 :             _fontRelief = awt::FontRelief::NONE;
     626             :         }
     627           0 :         else if ( aValue == "embossed" )
     628             :         {
     629           0 :             _fontRelief = awt::FontRelief::EMBOSSED;
     630             :         }
     631           0 :         else if ( aValue == "engraved" )
     632             :         {
     633           0 :             _fontRelief = awt::FontRelief::ENGRAVED;
     634             :         }
     635             :         else
     636             :         {
     637           0 :             throw xml::sax::SAXException("invalid font-relief style!", Reference< XInterface >(), Any() );
     638             :         }
     639           0 :         bFontImport = true;
     640             :     }
     641             :     // dialog:font-emphasismark (none|dot|circle|disc|accent|above|below) #IMPLIED
     642           8 :     if (getStringAttr(&aValue, "font-emphasismark", _xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     643             :     {
     644           0 :         if ( aValue == "none" )
     645             :         {
     646           0 :             _fontEmphasisMark = awt::FontEmphasisMark::NONE;
     647             :         }
     648           0 :         else if ( aValue == "dot" )
     649             :         {
     650           0 :             _fontEmphasisMark = awt::FontEmphasisMark::DOT;
     651             :         }
     652           0 :         else if ( aValue == "circle" )
     653             :         {
     654           0 :             _fontEmphasisMark = awt::FontEmphasisMark::CIRCLE;
     655             :         }
     656           0 :         else if ( aValue == "disc" )
     657             :         {
     658           0 :             _fontEmphasisMark = awt::FontEmphasisMark::DISC;
     659             :         }
     660           0 :         else if ( aValue == "accent" )
     661             :         {
     662           0 :             _fontEmphasisMark = awt::FontEmphasisMark::ACCENT;
     663             :         }
     664           0 :         else if ( aValue == "above" )
     665             :         {
     666           0 :             _fontEmphasisMark = awt::FontEmphasisMark::ABOVE;
     667             :         }
     668           0 :         else if ( aValue == "below" )
     669             :         {
     670           0 :             _fontEmphasisMark = awt::FontEmphasisMark::BELOW;
     671             :         }
     672             :         else
     673             :         {
     674           0 :             throw xml::sax::SAXException( "invalid font-emphasismark style!", Reference< XInterface >(), Any() );
     675             :         }
     676           0 :         bFontImport = true;
     677             :     }
     678             : 
     679           8 :     if (bFontImport)
     680             :     {
     681           6 :         _hasValue |= 0x8;
     682           6 :         setFontProperties( xProps );
     683             :     }
     684             : 
     685           8 :     return bFontImport;
     686             : }
     687             : 
     688          64 : bool ImportContext::importStringProperty(
     689             :     OUString const & rPropName, OUString const & rAttrName,
     690             :     Reference< xml::input::XAttributes > const & xAttributes )
     691             : {
     692             :     OUString aValue(
     693          64 :         xAttributes->getValueByUidName(
     694          64 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
     695          64 :     if (!aValue.isEmpty())
     696             :     {
     697           5 :         _xControlModel->setPropertyValue( rPropName, makeAny( aValue ) );
     698           5 :         return true;
     699             :     }
     700          59 :     return false;
     701             : }
     702             : 
     703           0 : bool ImportContext::importDoubleProperty(
     704             :     OUString const & rPropName, OUString const & rAttrName,
     705             :     Reference< xml::input::XAttributes > const & xAttributes )
     706             : {
     707             :     OUString aValue(
     708           0 :         xAttributes->getValueByUidName(
     709           0 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
     710           0 :     if (!aValue.isEmpty())
     711             :     {
     712           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( aValue.toDouble() ) );
     713           0 :         return true;
     714             :     }
     715           0 :     return false;
     716             : }
     717             : 
     718          98 : bool ImportContext::importBooleanProperty(
     719             :     OUString const & rPropName, OUString const & rAttrName,
     720             :     Reference< xml::input::XAttributes > const & xAttributes )
     721             : {
     722             :     sal_Bool bBool;
     723          98 :     if (getBoolAttr(
     724          98 :             &bBool, rAttrName, xAttributes, _pImport->XMLNS_DIALOGS_UID ))
     725             :     {
     726          22 :         _xControlModel->setPropertyValue( rPropName, makeAny( bBool ) );
     727          22 :         return true;
     728             :     }
     729          76 :     return false;
     730             : }
     731             : 
     732          57 : bool ImportContext::importLongProperty(
     733             :     OUString const & rPropName, OUString const & rAttrName,
     734             :     Reference< xml::input::XAttributes > const & xAttributes )
     735             : {
     736             :     OUString aValue(
     737          57 :         xAttributes->getValueByUidName(
     738          57 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
     739          57 :     if (!aValue.isEmpty())
     740             :     {
     741          32 :         _xControlModel->setPropertyValue( rPropName, makeAny( toInt32( aValue ) ) );
     742          32 :         return true;
     743             :     }
     744          25 :     return false;
     745             : }
     746             : 
     747          32 : bool ImportContext::importLongProperty(
     748             :     sal_Int32 nOffset,
     749             :     OUString const & rPropName, OUString const & rAttrName,
     750             :     Reference< xml::input::XAttributes > const & xAttributes )
     751             : {
     752             :     OUString aValue(
     753          32 :         xAttributes->getValueByUidName(
     754          32 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
     755          32 :     if (!aValue.isEmpty())
     756             :     {
     757          32 :         _xControlModel->setPropertyValue( rPropName, makeAny( toInt32( aValue ) + nOffset ) );
     758          32 :         return true;
     759             :     }
     760           0 :     return false;
     761             : }
     762             : 
     763           0 : bool ImportContext::importHexLongProperty(
     764             :     OUString const & rPropName, OUString const & rAttrName,
     765             :     Reference< xml::input::XAttributes > const & xAttributes )
     766             : {
     767             :     OUString aValue(
     768           0 :         xAttributes->getValueByUidName(
     769           0 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
     770           0 :     if (!aValue.isEmpty())
     771             :     {
     772           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( toInt32( aValue ) ) );
     773           0 :         return true;
     774             :     }
     775           0 :     return false;
     776             : }
     777             : 
     778          24 : bool ImportContext::importShortProperty(
     779             :     OUString const & rPropName, OUString const & rAttrName,
     780             :     Reference< xml::input::XAttributes > const & xAttributes )
     781             : {
     782             :     OUString aValue(
     783          24 :         xAttributes->getValueByUidName(
     784          24 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
     785          24 :     if (!aValue.isEmpty())
     786             :     {
     787          11 :         _xControlModel->setPropertyValue( rPropName, makeAny( (sal_Int16)toInt32( aValue ) ) );
     788          11 :         return true;
     789             :     }
     790          13 :     return false;
     791             : }
     792             : 
     793          10 : bool ImportContext::importAlignProperty(
     794             :     OUString const & rPropName, OUString const & rAttrName,
     795             :     Reference< xml::input::XAttributes > const & xAttributes )
     796             : {
     797             :     OUString aAlign(
     798          10 :         xAttributes->getValueByUidName(
     799          10 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
     800          10 :     if (!aAlign.isEmpty())
     801             :     {
     802             :         sal_Int16 nAlign;
     803           0 :         if ( aAlign == "left" )
     804             :         {
     805           0 :             nAlign = 0;
     806             :         }
     807           0 :         else if ( aAlign == "center" )
     808             :         {
     809           0 :             nAlign = 1;
     810             :         }
     811           0 :         else if ( aAlign == "right" )
     812             :         {
     813           0 :             nAlign = 2;
     814             :         }
     815           0 :         else if ( aAlign == "none" )
     816             :         {
     817           0 :             nAlign = 0; // default
     818             :         }
     819             :         else
     820             :         {
     821           0 :             throw xml::sax::SAXException("invalid align value!", Reference< XInterface >(), Any() );
     822             :         }
     823             : 
     824           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( nAlign ) );
     825           0 :         return true;
     826             :     }
     827          10 :     return false;
     828             : }
     829             : 
     830           3 : bool ImportContext::importVerticalAlignProperty(
     831             :     OUString const & rPropName, OUString const & rAttrName,
     832             :     Reference< xml::input::XAttributes > const & xAttributes )
     833             : {
     834             :     OUString aAlign(
     835           3 :         xAttributes->getValueByUidName(
     836           3 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
     837           3 :     if (!aAlign.isEmpty())
     838             :     {
     839             :         style::VerticalAlignment eAlign;
     840             : 
     841           3 :         if ( aAlign == "top" )
     842             :         {
     843           0 :             eAlign = style::VerticalAlignment_TOP;
     844             :         }
     845           3 :         else if ( aAlign == "center" )
     846             :         {
     847           3 :             eAlign = style::VerticalAlignment_MIDDLE;
     848             :         }
     849           0 :         else if ( aAlign == "bottom" )
     850             :         {
     851           0 :             eAlign = style::VerticalAlignment_BOTTOM;
     852             :         }
     853             :         else
     854             :         {
     855           0 :             throw xml::sax::SAXException( "invalid vertical align value!", Reference< XInterface >(), Any() );
     856             :         }
     857             : 
     858           3 :         _xControlModel->setPropertyValue( rPropName, makeAny( eAlign ) );
     859           3 :         return true;
     860             :     }
     861           0 :     return false;
     862             : }
     863             : 
     864           9 : bool ImportContext::importImageURLProperty(
     865             :     OUString const & rPropName, OUString const & rAttrName,
     866             :     Reference< xml::input::XAttributes > const & xAttributes )
     867             : {
     868           9 :     OUString sURL = xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, rAttrName );
     869           9 :     if ( !sURL.isEmpty() )
     870             :     {
     871           0 :         Reference< document::XStorageBasedDocument > xDocStorage( _pImport->getDocOwner(), UNO_QUERY );
     872             : 
     873           0 :         uno::Reference< document::XGraphicObjectResolver > xGraphicResolver;
     874           0 :         if ( xDocStorage.is() )
     875             :         {
     876           0 :             uno::Sequence< Any > aArgs( 1 );
     877           0 :             aArgs[ 0 ] <<= xDocStorage->getDocumentStorage();
     878             :             xGraphicResolver.set(
     879           0 :                 _pImport->getComponentContext()->getServiceManager()->createInstanceWithArgumentsAndContext( "com.sun.star.comp.Svx.GraphicImportHelper" , aArgs, _pImport->getComponentContext() ),
     880           0 :                 UNO_QUERY );
     881           0 :             if ( xGraphicResolver.is() )
     882             :             {
     883           0 :                 OUString aTmp("vnd.sun.star.Package:");
     884           0 :                 aTmp += sURL;
     885             :                 try
     886             :                 {
     887           0 :                     aTmp = xGraphicResolver->resolveGraphicObjectURL( aTmp );
     888           0 :                     if ( !aTmp.isEmpty() )
     889           0 :                         sURL = aTmp;
     890             :                 }
     891           0 :                 catch( const uno::Exception& )
     892             :                 {
     893           0 :                     return false;
     894           0 :                 }
     895             : 
     896           0 :             }
     897             :         }
     898           0 :         if ( !sURL.isEmpty() )
     899             :         {
     900           0 :             Reference< beans::XPropertySet > xProps( getControlModel(), UNO_QUERY );
     901           0 :             if ( xProps.is() )
     902             :             {
     903           0 :                 xProps->setPropertyValue( rPropName, makeAny( sURL ) );
     904           0 :                 return true;
     905           0 :             }
     906           0 :         }
     907             :     }
     908           9 :     return false;
     909             : }
     910             : 
     911           5 : bool ImportContext::importDataAwareProperty(
     912             :         OUString const & rPropName,
     913             :         Reference<xml::input::XAttributes> const & xAttributes )
     914             : {
     915           5 :     OUString sLinkedCell;
     916          10 :     OUString sCellRange;
     917           5 :     if ( rPropName == "linked-cell" )
     918           3 :        sLinkedCell = xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, rPropName );
     919           5 :     if ( rPropName == "source-cell-range" )
     920           2 :         sCellRange = xAttributes->getValueByUidName( _pImport->XMLNS_DIALOGS_UID, rPropName );
     921           5 :     bool bRes = false;
     922          10 :     Reference< lang::XMultiServiceFactory > xFac( _pImport->getDocOwner(), UNO_QUERY );
     923           5 :     if ( xFac.is() && ( !sLinkedCell.isEmpty() ||  !sCellRange.isEmpty() ) )
     924             :     {
     925             :         // Set up Celllink
     926           1 :         if ( !sLinkedCell.isEmpty() )
     927             :         {
     928           0 :             Reference< form::binding::XBindableValue > xBindable( getControlModel(), uno::UNO_QUERY );
     929           0 :             Reference< beans::XPropertySet > xConvertor( xFac->createInstance( "com.sun.star.table.CellAddressConversion" ), uno::UNO_QUERY );
     930           0 :             if ( xBindable.is() && xConvertor.is() )
     931             :             {
     932           0 :                 table::CellAddress aAddress;
     933           0 :                 xConvertor->setPropertyValue( "PersistentRepresentation" , uno::makeAny( sLinkedCell ) );
     934           0 :                 xConvertor->getPropertyValue( "Address" ) >>= aAddress;
     935           0 :                 beans::NamedValue aArg1;
     936           0 :                 aArg1.Name = "BoundCell";
     937           0 :                 aArg1.Value <<= aAddress;
     938             : 
     939           0 :                 uno::Sequence< uno::Any > aArgs(1);
     940           0 :                 aArgs[ 0 ]  <<= aArg1;
     941             : 
     942           0 :                 uno::Reference< form::binding::XValueBinding > xBinding( xFac->createInstanceWithArguments( "com.sun.star.table.CellValueBinding" , aArgs ), uno::UNO_QUERY );
     943           0 :                 xBindable->setValueBinding( xBinding );
     944           0 :                 bRes = true;
     945           0 :             }
     946             :         }
     947             :         // Set up CelllRange
     948           1 :         if ( !sCellRange.isEmpty() )
     949             :         {
     950           1 :             Reference< form::binding::XListEntrySink  > xListEntrySink( getControlModel(), uno::UNO_QUERY );
     951           2 :             Reference< beans::XPropertySet > xConvertor( xFac->createInstance( "com.sun.star.table.CellRangeAddressConversion" ), uno::UNO_QUERY );
     952           1 :             if ( xListEntrySink.is() && xConvertor.is() )
     953             :             {
     954           1 :                 table::CellRangeAddress aAddress;
     955           1 :                 xConvertor->setPropertyValue( "PersistentRepresentation" , uno::makeAny( sCellRange ) );
     956           1 :                 xConvertor->getPropertyValue( "Address" ) >>= aAddress;
     957           1 :                 beans::NamedValue aArg1;
     958           1 :                 aArg1.Name = "CellRange";
     959           1 :                 aArg1.Value <<= aAddress;
     960             : 
     961           2 :                 uno::Sequence< uno::Any > aArgs(1);
     962           1 :                 aArgs[ 0 ]  <<= aArg1;
     963             : 
     964           2 :                 uno::Reference< form::binding::XListEntrySource > xSource( xFac->createInstanceWithArguments( "com.sun.star.table.CellRangeListSource" , aArgs ), uno::UNO_QUERY );
     965           1 :                 xListEntrySink->setListEntrySource( xSource );
     966           2 :                 bRes = true;
     967           1 :             }
     968             :         }
     969             :     }
     970          10 :     return bRes;
     971             : }
     972             : 
     973           1 : bool ImportContext::importImageAlignProperty(
     974             :     OUString const & rPropName, OUString const & rAttrName,
     975             :     Reference< xml::input::XAttributes > const & xAttributes )
     976             : {
     977             :     OUString aAlign(
     978           1 :         xAttributes->getValueByUidName(
     979           1 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
     980           1 :     if (!aAlign.isEmpty())
     981             :     {
     982             :         sal_Int16 nAlign;
     983           0 :         if ( aAlign == "left" )
     984             :         {
     985           0 :             nAlign = 0;
     986             :         }
     987           0 :         else if ( aAlign == "top" )
     988             :         {
     989           0 :             nAlign = 1;
     990             :         }
     991           0 :         else if ( aAlign == "right" )
     992             :         {
     993           0 :             nAlign = 2;
     994             :         }
     995           0 :         else if ( aAlign == "bottom" )
     996             :         {
     997           0 :             nAlign = 3;
     998             :         }
     999             :         else
    1000             :         {
    1001           0 :             throw xml::sax::SAXException( "invalid image align value!", Reference< XInterface >(), Any() );
    1002             :         }
    1003             : 
    1004           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( nAlign ) );
    1005           0 :         return true;
    1006             :     }
    1007           1 :     return false;
    1008             : }
    1009             : 
    1010           3 : bool ImportContext::importImagePositionProperty(
    1011             :     OUString const & rPropName, OUString const & rAttrName,
    1012             :     Reference< xml::input::XAttributes > const & xAttributes )
    1013             : {
    1014             :     OUString aPosition(
    1015           3 :         xAttributes->getValueByUidName(
    1016           3 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1017           3 :     if (!aPosition.isEmpty())
    1018             :     {
    1019             :         sal_Int16 nPosition;
    1020           3 :         if ( aPosition == "left-top" )
    1021             :         {
    1022           0 :             nPosition = awt::ImagePosition::LeftTop;
    1023             :         }
    1024           3 :         else if ( aPosition == "left-center" )
    1025             :         {
    1026           0 :             nPosition = awt::ImagePosition::LeftCenter;
    1027             :         }
    1028           3 :         else if ( aPosition == "left-bottom" )
    1029             :         {
    1030           0 :             nPosition = awt::ImagePosition::LeftBottom;
    1031             :         }
    1032           3 :         else if ( aPosition == "right-top" )
    1033             :         {
    1034           0 :             nPosition = awt::ImagePosition::RightTop;
    1035             :         }
    1036           3 :         else if ( aPosition == "right-center" )
    1037             :         {
    1038           0 :             nPosition = awt::ImagePosition::RightCenter;
    1039             :         }
    1040           3 :         else if ( aPosition == "right-bottom" )
    1041             :         {
    1042           0 :             nPosition = awt::ImagePosition::RightBottom;
    1043             :         }
    1044           3 :         else if ( aPosition == "top-left" )
    1045             :         {
    1046           0 :             nPosition = awt::ImagePosition::AboveLeft;
    1047             :         }
    1048           3 :         else if ( aPosition == "top-center" )
    1049             :         {
    1050           3 :             nPosition = awt::ImagePosition::AboveCenter;
    1051             :         }
    1052           0 :         else if ( aPosition == "top-right" )
    1053             :         {
    1054           0 :             nPosition = awt::ImagePosition::AboveRight;
    1055             :         }
    1056           0 :         else if ( aPosition == "bottom-left" )
    1057             :         {
    1058           0 :             nPosition = awt::ImagePosition::BelowLeft;
    1059             :         }
    1060           0 :         else if ( aPosition == "bottom-center" )
    1061             :         {
    1062           0 :             nPosition = awt::ImagePosition::BelowCenter;
    1063             :         }
    1064           0 :         else if ( aPosition == "bottom-right" )
    1065             :         {
    1066           0 :             nPosition = awt::ImagePosition::BelowRight;
    1067             :         }
    1068           0 :         else if ( aPosition == "center" )
    1069             :         {
    1070           0 :             nPosition = awt::ImagePosition::Centered;
    1071             :         }
    1072             :         else
    1073             :         {
    1074           0 :             throw xml::sax::SAXException( "invalid image position value!", Reference< XInterface >(), Any() );
    1075             :         }
    1076             : 
    1077           3 :         _xControlModel->setPropertyValue( rPropName, makeAny( nPosition ) );
    1078           3 :         return true;
    1079             :     }
    1080           0 :     return false;
    1081             : }
    1082             : 
    1083           1 : bool ImportContext::importButtonTypeProperty(
    1084             :     OUString const & rPropName, OUString const & rAttrName,
    1085             :     Reference< xml::input::XAttributes > const & xAttributes )
    1086             : {
    1087             :     OUString buttonType(
    1088           1 :         xAttributes->getValueByUidName(
    1089           1 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1090           1 :     if (!buttonType.isEmpty())
    1091             :     {
    1092             :         sal_Int16 nButtonType;
    1093           0 :         if ( buttonType == "standard" )
    1094             :         {
    1095           0 :             nButtonType = awt::PushButtonType_STANDARD;
    1096             :         }
    1097           0 :         else if ( buttonType == "ok" )
    1098             :         {
    1099           0 :             nButtonType = awt::PushButtonType_OK;
    1100             :         }
    1101           0 :         else if ( buttonType == "cancel" )
    1102             :         {
    1103           0 :             nButtonType = awt::PushButtonType_CANCEL;
    1104             :         }
    1105           0 :         else if ( buttonType == "help" )
    1106             :         {
    1107           0 :             nButtonType = awt::PushButtonType_HELP;
    1108             :         }
    1109             :         else
    1110             :         {
    1111           0 :             throw xml::sax::SAXException( "invalid button-type value!", Reference< XInterface >(), Any() );
    1112             :         }
    1113             : 
    1114           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( nButtonType ) );
    1115           0 :         return true;
    1116             :     }
    1117           1 :     return false;
    1118             : }
    1119             : 
    1120           0 : bool ImportContext::importDateFormatProperty(
    1121             :     OUString const & rPropName, OUString const & rAttrName,
    1122             :     Reference< xml::input::XAttributes > const & xAttributes )
    1123             : {
    1124             :     OUString aFormat(
    1125           0 :         xAttributes->getValueByUidName(
    1126           0 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1127           0 :     if (!aFormat.isEmpty())
    1128             :     {
    1129             :         sal_Int16 nFormat;
    1130           0 :         if ( aFormat == "system_short" )
    1131             :         {
    1132           0 :             nFormat = 0;
    1133             :         }
    1134           0 :         else if ( aFormat == "system_short_YY" )
    1135             :         {
    1136           0 :             nFormat = 1;
    1137             :         }
    1138           0 :         else if ( aFormat == "system_short_YYYY" )
    1139             :         {
    1140           0 :             nFormat = 2;
    1141             :         }
    1142           0 :         else if ( aFormat == "system_long" )
    1143             :         {
    1144           0 :             nFormat = 3;
    1145             :         }
    1146           0 :         else if ( aFormat == "short_DDMMYY" )
    1147             :         {
    1148           0 :             nFormat = 4;
    1149             :         }
    1150           0 :         else if ( aFormat == "short_MMDDYY" )
    1151             :         {
    1152           0 :             nFormat = 5;
    1153             :         }
    1154           0 :         else if ( aFormat == "short_YYMMDD" )
    1155             :         {
    1156           0 :             nFormat = 6;
    1157             :         }
    1158           0 :         else if ( aFormat == "short_DDMMYYYY" )
    1159             :         {
    1160           0 :             nFormat = 7;
    1161             :         }
    1162           0 :         else if ( aFormat == "short_MMDDYYYY" )
    1163             :         {
    1164           0 :             nFormat = 8;
    1165             :         }
    1166           0 :         else if ( aFormat == "short_YYYYMMDD" )
    1167             :         {
    1168           0 :             nFormat = 9;
    1169             :         }
    1170           0 :         else if ( aFormat == "short_YYMMDD_DIN5008" )
    1171             :         {
    1172           0 :             nFormat = 10;
    1173             :         }
    1174           0 :         else if ( aFormat == "short_YYYYMMDD_DIN5008" )
    1175             :         {
    1176           0 :             nFormat = 11;
    1177             :         }
    1178             :         else
    1179             :         {
    1180           0 :             throw xml::sax::SAXException( "invalid date-format value!", Reference< XInterface >(), Any() );
    1181             :         }
    1182             : 
    1183           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( nFormat ) );
    1184           0 :         return true;
    1185             :     }
    1186           0 :     return false;
    1187             : }
    1188             : 
    1189           0 : bool ImportContext::importTimeProperty(
    1190             :     OUString const & rPropName, OUString const & rAttrName,
    1191             :     Reference< xml::input::XAttributes > const & xAttributes )
    1192             : {
    1193             :     OUString aValue(
    1194           0 :         xAttributes->getValueByUidName(
    1195           0 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1196           0 :     if (!aValue.isEmpty())
    1197             :     {
    1198           0 :         ::tools::Time aTTime(toInt32( aValue ) * ::tools::Time::nanoPerCenti);
    1199           0 :         util::Time aUTime(aTTime.GetUNOTime());
    1200           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( aUTime ) );
    1201           0 :         return true;
    1202             :     }
    1203           0 :     return false;
    1204             : }
    1205             : 
    1206           0 : bool ImportContext::importDateProperty(
    1207             :     OUString const & rPropName, OUString const & rAttrName,
    1208             :     Reference< xml::input::XAttributes > const & xAttributes )
    1209             : {
    1210             :     OUString aValue(
    1211           0 :         xAttributes->getValueByUidName(
    1212           0 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1213           0 :     if (!aValue.isEmpty())
    1214             :     {
    1215           0 :         ::Date aTDate(toInt32( aValue ));
    1216           0 :         util::Date aUDate(aTDate.GetUNODate());
    1217           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( aUDate ) );
    1218           0 :         return true;
    1219             :     }
    1220           0 :     return false;
    1221             : }
    1222             : 
    1223           0 : bool ImportContext::importTimeFormatProperty(
    1224             :     OUString const & rPropName, OUString const & rAttrName,
    1225             :     Reference< xml::input::XAttributes > const & xAttributes )
    1226             : {
    1227             :     OUString aFormat(
    1228           0 :         xAttributes->getValueByUidName(
    1229           0 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1230           0 :     if (!aFormat.isEmpty())
    1231             :     {
    1232             :         sal_Int16 nFormat;
    1233           0 :         if ( aFormat == "24h_short" )
    1234             :         {
    1235           0 :             nFormat = 0;
    1236             :         }
    1237           0 :         else if ( aFormat == "24h_long" )
    1238             :         {
    1239           0 :             nFormat = 1;
    1240             :         }
    1241           0 :         else if ( aFormat == "12h_short" )
    1242             :         {
    1243           0 :             nFormat = 2;
    1244             :         }
    1245           0 :         else if ( aFormat == "12h_long" )
    1246             :         {
    1247           0 :             nFormat = 3;
    1248             :         }
    1249           0 :         else if ( aFormat == "Duration_short" )
    1250             :         {
    1251           0 :             nFormat = 4;
    1252             :         }
    1253           0 :         else if ( aFormat == "Duration_long" )
    1254             :         {
    1255           0 :             nFormat = 5;
    1256             :         }
    1257             :         else
    1258             :         {
    1259           0 :             throw xml::sax::SAXException( "invalid time-format value!", Reference< XInterface >(), Any() );
    1260             :         }
    1261             : 
    1262           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( nFormat ) );
    1263           0 :         return true;
    1264             :     }
    1265           0 :     return false;
    1266             : }
    1267             : 
    1268           0 : bool ImportContext::importOrientationProperty(
    1269             :     OUString const & rPropName, OUString const & rAttrName,
    1270             :     Reference< xml::input::XAttributes > const & xAttributes )
    1271             : {
    1272             :     OUString aOrient(
    1273           0 :         xAttributes->getValueByUidName(
    1274           0 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1275           0 :     if (!aOrient.isEmpty())
    1276             :     {
    1277             :         sal_Int32 nOrient;
    1278           0 :         if ( aOrient == "horizontal" )
    1279             :         {
    1280           0 :             nOrient = 0;
    1281             :         }
    1282           0 :         else if ( aOrient == "vertical" )
    1283             :         {
    1284           0 :             nOrient = 1;
    1285             :         }
    1286             :         else
    1287             :         {
    1288           0 :             throw xml::sax::SAXException( "invalid orientation value!", Reference< XInterface >(), Any() );
    1289             :         }
    1290             : 
    1291           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( nOrient ) );
    1292           0 :         return true;
    1293             :     }
    1294           0 :     return false;
    1295             : }
    1296             : 
    1297           5 : bool ImportContext::importLineEndFormatProperty(
    1298             :     OUString const & rPropName, OUString const & rAttrName,
    1299             :     Reference< xml::input::XAttributes > const & xAttributes )
    1300             : {
    1301             :     OUString aFormat(
    1302           5 :         xAttributes->getValueByUidName(
    1303           5 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1304           5 :     if (!aFormat.isEmpty())
    1305             :     {
    1306             :         sal_Int16 nFormat;
    1307           0 :         if ( aFormat == "carriage-return" )
    1308             :         {
    1309           0 :             nFormat = awt::LineEndFormat::CARRIAGE_RETURN;
    1310             :         }
    1311           0 :         else if ( aFormat == "line-feed" )
    1312             :         {
    1313           0 :             nFormat = awt::LineEndFormat::LINE_FEED;
    1314             :         }
    1315           0 :         else if ( aFormat == "carriage-return-line-feed" )
    1316             :         {
    1317           0 :             nFormat = awt::LineEndFormat::CARRIAGE_RETURN_LINE_FEED;
    1318             :         }
    1319             :         else
    1320             :         {
    1321           0 :             throw xml::sax::SAXException( "invalid line end format value!", Reference< XInterface >(), Any() );
    1322             :         }
    1323             : 
    1324           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( nFormat ) );
    1325           0 :         return true;
    1326             :     }
    1327           5 :     return false;
    1328             : }
    1329             : 
    1330           0 : bool ImportContext::importSelectionTypeProperty(
    1331             :     OUString const & rPropName, OUString const & rAttrName,
    1332             :     Reference< xml::input::XAttributes > const & xAttributes )
    1333             : {
    1334             :     OUString aSelectionType(
    1335           0 :         xAttributes->getValueByUidName(
    1336           0 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1337           0 :     if (!aSelectionType.isEmpty())
    1338             :     {
    1339             :         view::SelectionType eSelectionType;
    1340             : 
    1341           0 :         if ( aSelectionType == "none" )
    1342             :         {
    1343           0 :             eSelectionType = view::SelectionType_NONE;
    1344             :         }
    1345           0 :         else if ( aSelectionType == "single" )
    1346             :         {
    1347           0 :             eSelectionType = view::SelectionType_SINGLE;
    1348             :         }
    1349           0 :         else if ( aSelectionType == "multi" )
    1350             :         {
    1351           0 :             eSelectionType = view::SelectionType_MULTI;
    1352             :         }
    1353           0 :         else  if ( aSelectionType == "range" )
    1354             :         {
    1355           0 :             eSelectionType = view::SelectionType_RANGE;
    1356             :         }
    1357             :         else
    1358             :         {
    1359           0 :             throw xml::sax::SAXException( "invalid selection type value!", Reference< XInterface >(), Any() );
    1360             :         }
    1361             : 
    1362           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( eSelectionType ) );
    1363           0 :         return true;
    1364             :     }
    1365           0 :     return false;
    1366             : }
    1367             : 
    1368           0 : bool ImportContext::importImageScaleModeProperty(
    1369             :     OUString const & rPropName, OUString const & rAttrName,
    1370             :     Reference< xml::input::XAttributes > const & xAttributes )
    1371             : {
    1372             :     OUString aImageScaleMode(
    1373           0 :         xAttributes->getValueByUidName(
    1374           0 :             _pImport->XMLNS_DIALOGS_UID, rAttrName ) );
    1375           0 :     if (!aImageScaleMode.isEmpty())
    1376             :     {
    1377             :         sal_Int16 nImageScaleMode;
    1378             : 
    1379           0 :         if (aImageScaleMode == "none")
    1380             :         {
    1381           0 :             nImageScaleMode = awt::ImageScaleMode::NONE;
    1382             :         }
    1383           0 :         else if (aImageScaleMode == "isotropic")
    1384             :         {
    1385           0 :             nImageScaleMode = awt::ImageScaleMode::ISOTROPIC;
    1386             :         }
    1387           0 :         else if (aImageScaleMode == "anisotropic")
    1388             :         {
    1389           0 :             nImageScaleMode = awt::ImageScaleMode::ANISOTROPIC;
    1390             :         }
    1391             :         else
    1392             :         {
    1393             :             throw xml::sax::SAXException(
    1394             :                 OUString( "invalid scale image mode value!" ),
    1395           0 :                 Reference< XInterface >(), Any() );
    1396             :         }
    1397             : 
    1398           0 :         _xControlModel->setPropertyValue( rPropName, makeAny( nImageScaleMode ) );
    1399           0 :         return true;
    1400             :     }
    1401           0 :     return false;
    1402             : }
    1403             : 
    1404             : struct StringTriple
    1405             : {
    1406             :     char const * first;
    1407             :     char const * second;
    1408             :     char const * third;
    1409             : };
    1410             : static StringTriple const s_aEventTranslations[] =
    1411             : {
    1412             :     // from xmloff/source/forms/formevents.cxx
    1413             :     // 28.09.2001 tbe added on-adjustmentvaluechange
    1414             :     { "com.sun.star.form.XApproveActionListener", "approveAction", "on-approveaction" },
    1415             :     { "com.sun.star.awt.XActionListener", "actionPerformed", "on-performaction" },
    1416             :     { "com.sun.star.form.XChangeListener", "changed", "on-change" },
    1417             :     { "com.sun.star.awt.XTextListener", "textChanged", "on-textchange" },
    1418             :     { "com.sun.star.awt.XItemListener", "itemStateChanged", "on-itemstatechange" },
    1419             :     { "com.sun.star.awt.XFocusListener", "focusGained", "on-focus" },
    1420             :     { "com.sun.star.awt.XFocusListener", "focusLost", "on-blur" },
    1421             :     { "com.sun.star.awt.XKeyListener", "keyPressed", "on-keydown" },
    1422             :     { "com.sun.star.awt.XKeyListener", "keyReleased", "on-keyup" },
    1423             :     { "com.sun.star.awt.XMouseListener", "mouseEntered", "on-mouseover" },
    1424             :     { "com.sun.star.awt.XMouseMotionListener", "mouseDragged", "on-mousedrag" },
    1425             :     { "com.sun.star.awt.XMouseMotionListener", "mouseMoved", "on-mousemove" },
    1426             :     { "com.sun.star.awt.XMouseListener", "mousePressed", "on-mousedown" },
    1427             :     { "com.sun.star.awt.XMouseListener", "mouseReleased", "on-mouseup" },
    1428             :     { "com.sun.star.awt.XMouseListener", "mouseExited", "on-mouseout" },
    1429             :     { "com.sun.star.form.XResetListener", "approveReset", "on-approvereset" },
    1430             :     { "com.sun.star.form.XResetListener", "resetted", "on-reset" },
    1431             :     { "com.sun.star.form.XSubmitListener", "approveSubmit", "on-submit" },
    1432             :     { "com.sun.star.form.XUpdateListener", "approveUpdate", "on-approveupdate" },
    1433             :     { "com.sun.star.form.XUpdateListener", "updated", "on-update" },
    1434             :     { "com.sun.star.form.XLoadListener", "loaded", "on-load" },
    1435             :     { "com.sun.star.form.XLoadListener", "reloading", "on-startreload" },
    1436             :     { "com.sun.star.form.XLoadListener", "reloaded", "on-reload" },
    1437             :     { "com.sun.star.form.XLoadListener", "unloading", "on-startunload" },
    1438             :     { "com.sun.star.form.XLoadListener", "unloaded", "on-unload" },
    1439             :     { "com.sun.star.form.XConfirmDeleteListener", "confirmDelete", "on-confirmdelete" },
    1440             :     { "com.sun.star.sdb.XRowSetApproveListener", "approveRowChange", "on-approverowchange" },
    1441             :     { "com.sun.star.sdbc.XRowSetListener", "rowChanged", "on-rowchange" },
    1442             :     { "com.sun.star.sdb.XRowSetApproveListener", "approveCursorMove", "on-approvecursormove" },
    1443             :     { "com.sun.star.sdbc.XRowSetListener", "cursorMoved", "on-cursormove" },
    1444             :     { "com.sun.star.form.XDatabaseParameterListener", "approveParameter", "on-supplyparameter" },
    1445             :     { "com.sun.star.sdb.XSQLErrorListener", "errorOccured", "on-error" },
    1446             :     { "com.sun.star.awt.XAdjustmentListener", "adjustmentValueChanged", "on-adjustmentvaluechange" },
    1447             :     { 0, 0, 0 }
    1448             : };
    1449             : extern StringTriple const * const g_pEventTranslations;
    1450             : StringTriple const * const g_pEventTranslations = s_aEventTranslations;
    1451             : 
    1452          16 : void ImportContext::importEvents(
    1453             :     ::std::vector< Reference< xml::input::XElement > > const & rEvents )
    1454             : {
    1455             :     Reference< script::XScriptEventsSupplier > xSupplier(
    1456          16 :         _xControlModel, UNO_QUERY );
    1457          16 :     if (xSupplier.is())
    1458             :     {
    1459          16 :         Reference< container::XNameContainer > xEvents( xSupplier->getEvents() );
    1460          16 :         if (xEvents.is())
    1461             :         {
    1462          16 :             for ( size_t nPos = 0; nPos < rEvents.size(); ++nPos )
    1463             :             {
    1464           0 :                 script::ScriptEventDescriptor descr;
    1465             : 
    1466           0 :                 EventElement * pEventElement = static_cast< EventElement * >( rEvents[ nPos ].get() );
    1467           0 :                 sal_Int32 nUid = pEventElement->getUid();
    1468           0 :                 OUString aLocalName( pEventElement->getLocalName() );
    1469           0 :                 Reference< xml::input::XAttributes > xAttributes( pEventElement->getAttributes() );
    1470             : 
    1471             :                 // nowadays script events
    1472           0 :                 if (_pImport->XMLNS_SCRIPT_UID == nUid)
    1473             :                 {
    1474           0 :                     if (!getStringAttr( &descr.ScriptType, "language"  , xAttributes, _pImport->XMLNS_SCRIPT_UID ) ||
    1475           0 :                         !getStringAttr( &descr.ScriptCode, "macro-name", xAttributes, _pImport->XMLNS_SCRIPT_UID ))
    1476             :                     {
    1477           0 :                         throw xml::sax::SAXException( "missing language or macro-name attribute(s) of event!", Reference< XInterface >(), Any() );
    1478             :                     }
    1479           0 :                     if ( descr.ScriptType == "StarBasic" )
    1480             :                     {
    1481           0 :                         OUString aLocation;
    1482           0 :                         if (getStringAttr( &aLocation, "location", xAttributes, _pImport->XMLNS_SCRIPT_UID ))
    1483             :                         {
    1484             :                             // prepend location
    1485           0 :                             descr.ScriptCode = aLocation + ":" + descr.ScriptCode;
    1486           0 :                         }
    1487             :                     }
    1488           0 :                     else if ( descr.ScriptType == "Script" )
    1489             :                     {
    1490             :                         // Check if there is a protocol, if not assume
    1491             :                         // this is an early scripting framework url ( without
    1492             :                         // the protocol ) and fix it up!!
    1493           0 :                         if ( descr.ScriptCode.indexOf( ':' ) == -1 )
    1494             :                         {
    1495           0 :                             descr.ScriptCode = "vnd.sun.start.script:" + descr.ScriptCode;
    1496             :                         }
    1497             :                     }
    1498             : 
    1499             :                     // script:event element
    1500           0 :                     if ( aLocalName == "event" )
    1501             :                     {
    1502           0 :                         OUString aEventName;
    1503           0 :                         if (! getStringAttr( &aEventName, "event-name", xAttributes, _pImport->XMLNS_SCRIPT_UID ))
    1504             :                         {
    1505           0 :                             throw xml::sax::SAXException( "missing event-name attribute!", Reference< XInterface >(), Any() );
    1506             :                         }
    1507             : 
    1508             :                         // lookup in table
    1509           0 :                         OString str( OUStringToOString( aEventName, RTL_TEXTENCODING_ASCII_US ) );
    1510           0 :                         StringTriple const * p = g_pEventTranslations;
    1511           0 :                         while (p->first)
    1512             :                         {
    1513           0 :                             if (0 == ::rtl_str_compare( p->third, str.getStr() ))
    1514             :                             {
    1515           0 :                                 descr.ListenerType = OUString(
    1516             :                                     p->first, ::rtl_str_getLength( p->first ),
    1517           0 :                                     RTL_TEXTENCODING_ASCII_US );
    1518           0 :                                 descr.EventMethod = OUString(
    1519             :                                     p->second, ::rtl_str_getLength( p->second ),
    1520           0 :                                     RTL_TEXTENCODING_ASCII_US );
    1521           0 :                                 break;
    1522             :                             }
    1523           0 :                             ++p;
    1524             :                         }
    1525             : 
    1526           0 :                         if (! p->first)
    1527             :                         {
    1528           0 :                             throw xml::sax::SAXException( "no matching event-name found!", Reference< XInterface >(), Any() );
    1529           0 :                         }
    1530             :                     }
    1531             :                     else // script:listener-event element
    1532             :                     {
    1533             :                         SAL_WARN_IF( aLocalName != "listener-event", "xmlscript.xmldlg", "aLocalName != listener-event" );
    1534             : 
    1535           0 :                         if (!getStringAttr( &descr.ListenerType, "listener-type"  , xAttributes, _pImport->XMLNS_SCRIPT_UID ) ||
    1536           0 :                             !getStringAttr( &descr.EventMethod , "listener-method", xAttributes, _pImport->XMLNS_SCRIPT_UID ))
    1537             :                         {
    1538           0 :                             throw xml::sax::SAXException("missing listener-type or listener-method attribute(s)!", Reference< XInterface >(), Any() );
    1539             :                         }
    1540             :                         // optional listener param
    1541           0 :                         getStringAttr( &descr.AddListenerParam,  "listener-param", xAttributes, _pImport->XMLNS_SCRIPT_UID );
    1542             :                     }
    1543             :                 }
    1544             :                 else // deprecated dlg:event element
    1545             :                 {
    1546             :                     SAL_WARN_IF( _pImport->XMLNS_DIALOGS_UID != nUid || aLocalName != "event", "xmlscript.xmldlg", "_pImport->XMLNS_DIALOGS_UID != nUid || aLocalName != \"event\"" );
    1547             : 
    1548           0 :                     if (!getStringAttr( &descr.ListenerType, "listener-type", xAttributes, _pImport->XMLNS_DIALOGS_UID ) ||
    1549           0 :                         !getStringAttr( &descr.EventMethod,  "event-method",  xAttributes, _pImport->XMLNS_DIALOGS_UID ))
    1550             :                     {
    1551           0 :                         throw xml::sax::SAXException("missing listener-type or event-method attribute(s)!", Reference< XInterface >(), Any() );
    1552             :                     }
    1553             : 
    1554           0 :                     getStringAttr( &descr.ScriptType, "script-type", xAttributes, _pImport->XMLNS_DIALOGS_UID );
    1555           0 :                     getStringAttr( &descr.ScriptCode, "script-code", xAttributes, _pImport->XMLNS_DIALOGS_UID );
    1556           0 :                     getStringAttr( &descr.AddListenerParam, "param", xAttributes, _pImport->XMLNS_DIALOGS_UID );
    1557             :                 }
    1558             : 
    1559           0 :                 xEvents->insertByName( descr.ListenerType + "::" + descr.EventMethod, makeAny( descr ) );
    1560           0 :             }
    1561          16 :         }
    1562          16 :     }
    1563          16 : }
    1564           6 : void ImportContext::importScollableSettings(
    1565             :     Reference< xml::input::XAttributes > const & _xAttributes )
    1566             : {
    1567             :     importLongProperty( OUString( "ScrollHeight" ),
    1568             :                         OUString( "scrollheight" ),
    1569           6 :                         _xAttributes );
    1570             :     importLongProperty( OUString( "ScrollWidth" ),
    1571             :                         OUString( "scrollwidth" ),
    1572           6 :                         _xAttributes );
    1573             :     importLongProperty( OUString( "ScrollTop" ),
    1574             :                         OUString( "scrolltop" ),
    1575           6 :                         _xAttributes );
    1576             :     importLongProperty( OUString( "ScrollLeft" ),
    1577             :                         OUString( "scrollleft" ),
    1578           6 :                         _xAttributes );
    1579             :     importBooleanProperty( OUString( "HScroll" ),
    1580             :                            OUString( "hscroll" ),
    1581           6 :                            _xAttributes );
    1582             :     importBooleanProperty( OUString( "VScroll" ),
    1583             :                            OUString( "vscroll" ),
    1584           6 :                            _xAttributes );
    1585           6 : }
    1586             : 
    1587          16 : void ImportContext::importDefaults(
    1588             :     sal_Int32 nBaseX, sal_Int32 nBaseY,
    1589             :     Reference< xml::input::XAttributes > const & xAttributes,
    1590             :     bool supportPrintable )
    1591             : {
    1592          16 :     _xControlModel->setPropertyValue( "Name", makeAny( _aId ) );
    1593             : 
    1594          16 :     importShortProperty( "TabIndex", "tab-index", xAttributes );
    1595             : 
    1596          16 :     sal_Bool bDisable = sal_False;
    1597          16 :     if (getBoolAttr( &bDisable,"disabled", xAttributes, _pImport->XMLNS_DIALOGS_UID ) && bDisable)
    1598             :     {
    1599           0 :         _xControlModel->setPropertyValue( "Enabled", makeAny( sal_False ) );
    1600             :     }
    1601             : 
    1602          16 :     sal_Bool bVisible = sal_True;
    1603          16 :     if (getBoolAttr( &bVisible, "visible", xAttributes, _pImport->XMLNS_DIALOGS_UID ) && !bVisible)
    1604             :     {
    1605             :     try
    1606             :     {
    1607           0 :             _xControlModel->setPropertyValue( "EnableVisible", makeAny( sal_False ) );
    1608             :     }
    1609           0 :     catch( Exception& )
    1610             :     {
    1611             :         DBG_UNHANDLED_EXCEPTION();
    1612             :     }
    1613             :     }
    1614             : 
    1615         128 :     if (!importLongProperty( nBaseX, "PositionX", "left", xAttributes ) ||
    1616         112 :         !importLongProperty( nBaseY, "PositionY", "top",  xAttributes ) ||
    1617         176 :         !importLongProperty( "Width", "width", xAttributes ) ||
    1618          64 :         !importLongProperty( "Height", "height", xAttributes ))
    1619             :     {
    1620           0 :         throw xml::sax::SAXException( "missing pos size attribute(s)!", Reference< XInterface >(), Any() );
    1621             :     }
    1622             : 
    1623          16 :     if (supportPrintable)
    1624             :     {
    1625          10 :         importBooleanProperty("Printable", "printable", xAttributes );
    1626             :     }
    1627             : 
    1628             :     sal_Int32 nLong;
    1629          16 :     if (! getLongAttr( &nLong, "page", xAttributes, _pImport->XMLNS_DIALOGS_UID ))
    1630             :     {
    1631          16 :         nLong = 0;
    1632             :     }
    1633          16 :     _xControlModel->setPropertyValue( "Step", makeAny( nLong ) );
    1634             : 
    1635          16 :     importStringProperty("Tag", "tag", xAttributes );
    1636          16 :     importStringProperty( "HelpText", "help-text", xAttributes );
    1637          16 :     importStringProperty( "HelpURL", "help-url", xAttributes );
    1638          16 : }
    1639             : 
    1640           0 : Reference< xml::input::XElement > ElementBase::getParent()
    1641             :     throw (RuntimeException, std::exception)
    1642             : {
    1643           0 :     return static_cast< xml::input::XElement * >( _pParent );
    1644             : }
    1645             : 
    1646           0 : OUString ElementBase::getLocalName()
    1647             :     throw (RuntimeException, std::exception)
    1648             : {
    1649           0 :     return _aLocalName;
    1650             : }
    1651             : 
    1652           0 : sal_Int32 ElementBase::getUid()
    1653             :     throw (RuntimeException, std::exception)
    1654             : {
    1655           0 :     return _nUid;
    1656             : }
    1657             : 
    1658           1 : Reference< xml::input::XAttributes > ElementBase::getAttributes()
    1659             :     throw (RuntimeException, std::exception)
    1660             : {
    1661           1 :     return _xAttributes;
    1662             : }
    1663             : 
    1664           0 : void ElementBase::ignorableWhitespace(
    1665             :     OUString const & /*rWhitespaces*/ )
    1666             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1667             : {
    1668             :     // not used
    1669           0 : }
    1670             : 
    1671          92 : void ElementBase::characters( OUString const & /*rChars*/ )
    1672             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1673             : {
    1674             :     // not used, all characters ignored
    1675          92 : }
    1676             : 
    1677          14 : void ElementBase::endElement()
    1678             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1679             : {
    1680          14 : }
    1681             : 
    1682           0 : void ElementBase::processingInstruction(
    1683             :     OUString const & /*Target*/, OUString const & /*Data*/ )
    1684             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1685             : {
    1686           0 : }
    1687             : 
    1688           0 : Reference< xml::input::XElement > ElementBase::startChildElement(
    1689             :     sal_Int32 /*nUid*/, OUString const & /*rLocalName*/,
    1690             :     Reference< xml::input::XAttributes > const & /*xAttributes*/ )
    1691             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1692             : {
    1693           0 :     throw xml::sax::SAXException( "unexpected element!", Reference< XInterface >(), Any() );
    1694             : }
    1695             : 
    1696          38 : ElementBase::ElementBase(
    1697             :     sal_Int32 nUid, OUString const & rLocalName,
    1698             :     Reference< xml::input::XAttributes > const & xAttributes,
    1699             :     ElementBase * pParent, DialogImport * pImport )
    1700             :     : _pImport( pImport )
    1701             :     , _pParent( pParent )
    1702             :     , _nUid( nUid )
    1703             :     , _aLocalName( rLocalName )
    1704          38 :     , _xAttributes( xAttributes )
    1705             : {
    1706          38 :     _pImport->acquire();
    1707             : 
    1708          38 :     if (_pParent)
    1709             :     {
    1710          32 :         _pParent->acquire();
    1711             :     }
    1712          38 : }
    1713             : 
    1714          50 : ElementBase::~ElementBase()
    1715             : {
    1716          23 :     _pImport->release();
    1717             : 
    1718          23 :     if (_pParent)
    1719             :     {
    1720          19 :         _pParent->release();
    1721             :     }
    1722             : 
    1723             : #if OSL_DEBUG_LEVEL > 1
    1724             :     OString aStr( OUStringToOString(
    1725             :                              _aLocalName, RTL_TEXTENCODING_ASCII_US ) );
    1726             :     SAL_INFO("xmlscript.xmldlg", "ElementBase::~ElementBase(): " << aStr.getStr() );
    1727             : #endif
    1728          27 : }
    1729             : 
    1730             : // XRoot
    1731             : 
    1732           6 : void DialogImport::startDocument(
    1733             :     Reference< xml::input::XNamespaceMapping > const & xNamespaceMapping )
    1734             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1735             : {
    1736           6 :     XMLNS_DIALOGS_UID = xNamespaceMapping->getUidByUri( XMLNS_DIALOGS_URI );
    1737           6 :     XMLNS_SCRIPT_UID = xNamespaceMapping->getUidByUri( XMLNS_SCRIPT_URI );
    1738           6 : }
    1739             : 
    1740           6 : void DialogImport::endDocument()
    1741             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1742             : {
    1743             :     // ignored
    1744           6 : }
    1745             : 
    1746           0 : void DialogImport::processingInstruction(
    1747             :     OUString const & /*rTarget*/, OUString const & /*rData*/ )
    1748             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1749             : {
    1750             :     // ignored for now: xxx todo
    1751           0 : }
    1752             : 
    1753           6 : void DialogImport::setDocumentLocator(
    1754             :     Reference< xml::sax::XLocator > const & /*xLocator*/ )
    1755             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1756             : {
    1757             :     // ignored for now: xxx todo
    1758           6 : }
    1759             : 
    1760           6 : Reference< xml::input::XElement > DialogImport::startRootElement(
    1761             :     sal_Int32 nUid, OUString const & rLocalName,
    1762             :     Reference< xml::input::XAttributes > const & xAttributes )
    1763             :     throw (xml::sax::SAXException, RuntimeException, std::exception)
    1764             : {
    1765           6 :     if (XMLNS_DIALOGS_UID != nUid)
    1766             :     {
    1767           0 :         throw xml::sax::SAXException( "illegal namespace!", Reference< XInterface >(), Any() );
    1768             :     }
    1769             :     // window
    1770           6 :     else if ( rLocalName == "window" )
    1771             :     {
    1772          12 :         return new WindowElement( rLocalName, xAttributes, 0, this );
    1773             :     }
    1774             :     else
    1775             :     {
    1776           0 :         throw xml::sax::SAXException( "illegal root element (expected window) given: " + rLocalName, Reference< XInterface >(), Any() );
    1777             :     }
    1778             : }
    1779             : 
    1780           8 : DialogImport::~DialogImport()
    1781             : {
    1782             : #if OSL_DEBUG_LEVEL > 1
    1783             :     SAL_INFO("xmlscript.xmldlg", "DialogImport::~DialogImport()." );
    1784             : #endif
    1785           8 : }
    1786             : 
    1787           0 : Reference< util::XNumberFormatsSupplier > const & DialogImport::getNumberFormatsSupplier()
    1788             : {
    1789           0 :     if (! _xSupplier.is())
    1790             :     {
    1791           0 :         Reference< util::XNumberFormatsSupplier > xSupplier = util::NumberFormatsSupplier::createWithDefaultLocale( getComponentContext() );
    1792             : 
    1793           0 :         ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
    1794           0 :         if (! _xSupplier.is())
    1795             :         {
    1796           0 :             _xSupplier = xSupplier;
    1797           0 :         }
    1798             :     }
    1799           0 :     return _xSupplier;
    1800             : }
    1801             : 
    1802           8 : void DialogImport::addStyle(
    1803             :     OUString const & rStyleId,
    1804             :     Reference< xml::input::XElement > const & xStyle )
    1805             : {
    1806           8 :     (*_pStyleNames).push_back( rStyleId );
    1807           8 :     (*_pStyles).push_back( xStyle );
    1808           8 : }
    1809             : 
    1810           8 : Reference< xml::input::XElement > DialogImport::getStyle(
    1811             :     OUString const & rStyleId ) const
    1812             : {
    1813          20 :     for ( size_t nPos = 0; nPos < (*_pStyleNames).size(); ++nPos )
    1814             :     {
    1815          20 :         if ( (*_pStyleNames)[ nPos ] == rStyleId)
    1816             :         {
    1817           8 :             return (*_pStyles)[ nPos ];
    1818             :         }
    1819             :     }
    1820           0 :     return 0;
    1821             : }
    1822             : 
    1823           6 : Reference< xml::sax::XDocumentHandler > SAL_CALL importDialogModel(
    1824             :     Reference< container::XNameContainer > const & xDialogModel,
    1825             :     Reference< XComponentContext > const & xContext,
    1826             :     Reference< XModel > const & xDocument )
    1827             : {
    1828             :     // single set of styles and stylenames apply to all containees
    1829           6 :     :: boost::shared_ptr< ::std::vector< OUString > > pStyleNames( new ::std::vector< OUString > );
    1830          12 :     :: boost::shared_ptr< ::std::vector< css::uno::Reference< css::xml::input::XElement > > > pStyles( new ::std::vector< css::uno::Reference< css::xml::input::XElement > > );
    1831             :      return ::xmlscript::createDocumentHandler(
    1832             :          static_cast< xml::input::XRoot * >(
    1833          12 :             new DialogImport( xContext, xDialogModel, pStyleNames, pStyles, xDocument ) ) );
    1834             : }
    1835             : }
    1836             : 
    1837             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11