LCOV - code coverage report
Current view: top level - svtools/source/misc - imagemgr.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 111 260 42.7 %
Date: 2012-08-25 Functions: 9 18 50.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 148 672 22.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #include <svtools/imagemgr.hxx>
      30                 :            : #include <tools/urlobj.hxx>
      31                 :            : #include <tools/debug.hxx>
      32                 :            : #include <vcl/svapp.hxx>
      33                 :            : #include <vcl/wrkwin.hxx>
      34                 :            : #include "vcl/image.hxx"
      35                 :            : #include <sot/storage.hxx>
      36                 :            : #include <sot/clsids.hxx>
      37                 :            : #include <unotools/ucbhelper.hxx>
      38                 :            : #include <comphelper/processfactory.hxx>
      39                 :            : #include <com/sun/star/beans/PropertyValue.hpp>
      40                 :            : #include <com/sun/star/container/XNameContainer.hpp>
      41                 :            : #include <com/sun/star/document/XTypeDetection.hpp>
      42                 :            : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
      43                 :            : #include <com/sun/star/ucb/XCommandEnvironment.hpp>
      44                 :            : #include <ucbhelper/content.hxx>
      45                 :            : #include <tools/rcid.h>
      46                 :            : #include <rtl/logfile.hxx>
      47                 :            : #include <unotools/configmgr.hxx>
      48                 :            : #include <svtools/svtools.hrc>
      49                 :            : #include <svtools/imagemgr.hrc>
      50                 :            : #include <svtools/svtresid.hxx>
      51                 :            : #include <osl/mutex.hxx>
      52                 :            : #include <vcl/lazydelete.hxx>
      53                 :            : 
      54                 :            : // globals *******************************************************************
      55                 :            : 
      56                 :            : #define NO_INDEX        ((sal_uInt16)0xFFFF)
      57                 :            : #define CONTENT_HELPER  ::utl::UCBContentHelper
      58                 :            : #define ASCII_STRING(s) ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(s) )
      59                 :            : 
      60                 :            : struct SvtExtensionResIdMapping_Impl
      61                 :            : {
      62                 :            :     const char*   _pExt;
      63                 :            :     sal_Bool    _bExt;
      64                 :            :     sal_uInt16  _nStrId;
      65                 :            :     sal_uInt16  _nImgId;
      66                 :            : };
      67                 :            : 
      68                 :            : static SvtExtensionResIdMapping_Impl const ExtensionMap_Impl[] =
      69                 :            : {
      70                 :            :     { "awk",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      71                 :            :     { "bas",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      72                 :            :     { "bat",   sal_True,  STR_DESCRIPTION_BATCHFILE,             0 },
      73                 :            :     { "bmk",   sal_False, STR_DESCRIPTION_BOOKMARKFILE,          0 },
      74                 :            :     { "bmp",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_BITMAP },
      75                 :            :     { "c",     sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      76                 :            :     { "cfg",   sal_False, STR_DESCRIPTION_CFGFILE,               0 },
      77                 :            :     { "cmd",   sal_True,  STR_DESCRIPTION_BATCHFILE,             0 },
      78                 :            :     { "cob",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      79                 :            :     { "com",   sal_True,  STR_DESCRIPTION_APPLICATION,           0 },
      80                 :            :     { "cxx",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      81                 :            :     { "dbf",   sal_True,  STR_DESCRIPTION_DATABASE_TABLE,        IMG_TABLE },
      82                 :            :     { "def",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      83                 :            :     { "dll",   sal_True,  STR_DESCRIPTION_SYSFILE,               0 },
      84                 :            :     { "doc",   sal_False, STR_DESCRIPTION_WORD_DOC,              IMG_WRITER },
      85                 :            :     { "dot",   sal_False, STR_DESCRIPTION_WORD_DOC,              IMG_WRITERTEMPLATE },
      86                 :            :     { "docx",  sal_False, STR_DESCRIPTION_WORD_DOC,              IMG_WRITER },
      87                 :            :     { "dxf",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_DXF },
      88                 :            :     { "exe",   sal_True,  STR_DESCRIPTION_APPLICATION,           0 },
      89                 :            :     { "gif",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_GIF },
      90                 :            :     { "h",     sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      91                 :            :     { "hlp",   sal_False, STR_DESCRIPTION_HELP_DOC,              0 },
      92                 :            :     { "hrc",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      93                 :            :     { "htm",   sal_False, STR_DESCRIPTION_HTMLFILE,              IMG_HTML },
      94                 :            :     { "html",  sal_False, STR_DESCRIPTION_HTMLFILE,              IMG_HTML },
      95                 :            :     { "asp",   sal_False, STR_DESCRIPTION_HTMLFILE,              IMG_HTML },
      96                 :            :     { "hxx",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      97                 :            :     { "ini",   sal_False, STR_DESCRIPTION_CFGFILE,               0 },
      98                 :            :     { "java",  sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
      99                 :            :     { "jpeg",  sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_JPG },
     100                 :            :     { "jpg",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_JPG },
     101                 :            :     { "lha",   sal_True,  STR_DESCRIPTION_ARCHIVFILE,            0 },
     102                 :            : #ifdef WNT
     103                 :            :     { "lnk",   sal_False, 0,                                     0 },
     104                 :            : #endif
     105                 :            :     { "log",   sal_True,  STR_DESCRIPTION_LOGFILE,               0 },
     106                 :            :     { "lst",   sal_True,  STR_DESCRIPTION_LOGFILE,               0 },
     107                 :            :     { "met",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_MET },
     108                 :            :     { "mml",   sal_False, STR_DESCRIPTION_MATHML_DOC,            IMG_MATH },
     109                 :            :     { "mod",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
     110                 :            :     { "odb",   sal_False, STR_DESCRIPTION_OO_DATABASE_DOC,       IMG_OO_DATABASE_DOC },
     111                 :            :     { "odg",   sal_False, STR_DESCRIPTION_OO_DRAW_DOC,           IMG_OO_DRAW_DOC },
     112                 :            :     { "odf",   sal_False, STR_DESCRIPTION_OO_MATH_DOC,           IMG_OO_MATH_DOC },
     113                 :            :     { "odm",   sal_False, STR_DESCRIPTION_OO_GLOBAL_DOC,         IMG_OO_GLOBAL_DOC },
     114                 :            :     { "odp",   sal_False, STR_DESCRIPTION_OO_IMPRESS_DOC,        IMG_OO_IMPRESS_DOC },
     115                 :            :     { "ods",   sal_False, STR_DESCRIPTION_OO_CALC_DOC,           IMG_OO_CALC_DOC },
     116                 :            :     { "odt",   sal_False, STR_DESCRIPTION_OO_WRITER_DOC,         IMG_OO_WRITER_DOC },
     117                 :            :     { "otg",   sal_False, STR_DESCRIPTION_OO_DRAW_TEMPLATE,      IMG_OO_DRAW_TEMPLATE },
     118                 :            :     { "otp",   sal_False, STR_DESCRIPTION_OO_IMPRESS_TEMPLATE,   IMG_OO_IMPRESS_TEMPLATE },
     119                 :            :     { "ots",   sal_False, STR_DESCRIPTION_OO_CALC_TEMPLATE,      IMG_OO_CALC_TEMPLATE },
     120                 :            :     { "ott",   sal_False, STR_DESCRIPTION_OO_WRITER_TEMPLATE,    IMG_OO_WRITER_TEMPLATE },
     121                 :            :     { "pas",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
     122                 :            :     { "pcd",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_PCD },
     123                 :            :     { "pct",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_PCT },
     124                 :            :     { "pict",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,          IMG_PCT },
     125                 :            :     { "pcx",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_PCX },
     126                 :            :     { "pl",    sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
     127                 :            :     { "png",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_PNG },
     128                 :            :     { "rar",   sal_True,  STR_DESCRIPTION_ARCHIVFILE,            0 },
     129                 :            :     { "rtf",   sal_False, STR_DESCRIPTION_WORD_DOC,              IMG_WRITER },
     130                 :            :     { "sbl",   sal_False, 0,                                     0 },
     131                 :            :     { "sch",   sal_False, 0,                                     0 },
     132                 :            :     { "sda",   sal_False, STR_DESCRIPTION_SDRAW_DOC,             IMG_DRAW },
     133                 :            :     { "sdb",   sal_False, STR_DESCRIPTION_SDATABASE_DOC,         IMG_DATABASE },
     134                 :            :     { "sdc",   sal_False, STR_DESCRIPTION_SCALC_DOC,             IMG_CALC },
     135                 :            :     { "sdd",   sal_False, STR_DESCRIPTION_SIMPRESS_DOC,          IMG_IMPRESS },
     136                 :            :     { "sdp",   sal_False, STR_DESCRIPTION_SIMPRESS_DOC,          0 },
     137                 :            :     { "sds",   sal_False, STR_DESCRIPTION_SCHART_DOC,            0 },
     138                 :            :     { "sdw",   sal_False, STR_DESCRIPTION_SWRITER_DOC,           IMG_WRITER },
     139                 :            :     { "sga",   sal_False, 0,                                     0 },
     140                 :            :     { "sgf",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_SGF },
     141                 :            :     { "sgl",   sal_False, STR_DESCRIPTION_GLOBALDOC,             IMG_GLOBAL_DOC },
     142                 :            :     { "sgv",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_SGV },
     143                 :            :     { "shtml", sal_False, STR_DESCRIPTION_HTMLFILE,              IMG_HTML },
     144                 :            :     { "sim",   sal_False, STR_DESCRIPTION_SIMAGE_DOC,            IMG_SIM },
     145                 :            :     { "smf",   sal_False, STR_DESCRIPTION_SMATH_DOC,             IMG_MATH },
     146                 :            :     { "src",   sal_True,  STR_DESCRIPTION_SOURCEFILE,            0 },
     147                 :            :     { "svh",   sal_False, STR_DESCRIPTION_HELP_DOC,              0 },
     148                 :            :     { "svm",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_SVM },
     149                 :            :     { "stc",   sal_False, STR_DESCRIPTION_CALC_TEMPLATE,         IMG_CALCTEMPLATE },
     150                 :            :     { "std",   sal_False, STR_DESCRIPTION_DRAW_TEMPLATE,         IMG_DRAWTEMPLATE },
     151                 :            :     { "sti",   sal_False, STR_DESCRIPTION_IMPRESS_TEMPLATE,      IMG_IMPRESSTEMPLATE },
     152                 :            :     { "stw",   sal_False, STR_DESCRIPTION_WRITER_TEMPLATE,       IMG_WRITERTEMPLATE },
     153                 :            :     { "sxc",   sal_False, STR_DESCRIPTION_SXCALC_DOC,            IMG_CALC },
     154                 :            :     { "sxd",   sal_False, STR_DESCRIPTION_SXDRAW_DOC,            IMG_DRAW },
     155                 :            :     { "sxg",   sal_False, STR_DESCRIPTION_SXGLOBAL_DOC,          IMG_GLOBAL_DOC },
     156                 :            :     { "sxi",   sal_False, STR_DESCRIPTION_SXIMPRESS_DOC,         IMG_IMPRESS },
     157                 :            :     { "sxm",   sal_False, STR_DESCRIPTION_SXMATH_DOC,            IMG_MATH },
     158                 :            :     { "sxs",   sal_False, STR_DESCRIPTION_SXCHART_DOC,           0 },
     159                 :            :     { "sxw",   sal_False, STR_DESCRIPTION_SXWRITER_DOC,          IMG_WRITER },
     160                 :            :     { "sys",   sal_True,  STR_DESCRIPTION_SYSFILE,               0 },
     161                 :            :     { "tif",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_TIFF },
     162                 :            :     { "tiff",  sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_TIFF },
     163                 :            :     { "txt",   sal_False, STR_DESCRIPTION_TEXTFILE,              IMG_TEXTFILE },
     164                 :            :     { "url",   sal_False, STR_DESCRIPTION_LINK,                  0 },
     165                 :            :     { "vor",   sal_False, STR_DESCRIPTION_SOFFICE_TEMPLATE_DOC,  IMG_WRITERTEMPLATE },
     166                 :            :     { "vxd",   sal_True,  STR_DESCRIPTION_SYSFILE,               0 },
     167                 :            :     { "wmf",   sal_True,  STR_DESCRIPTION_GRAPHIC_DOC,           IMG_WMF },
     168                 :            :     { "xls",   sal_False, STR_DESCRIPTION_EXCEL_DOC,             IMG_CALC },
     169                 :            :     { "xlt",   sal_False, STR_DESCRIPTION_EXCEL_TEMPLATE_DOC,    IMG_CALCTEMPLATE },
     170                 :            :     { "xlsx",  sal_False, STR_DESCRIPTION_EXCEL_DOC,             IMG_CALC },
     171                 :            :     { "uu",    sal_True,  STR_DESCRIPTION_ARCHIVFILE,            0 },
     172                 :            :     { "uue",   sal_True,  STR_DESCRIPTION_ARCHIVFILE,            0 },
     173                 :            :     { "z",     sal_True,  STR_DESCRIPTION_ARCHIVFILE,            0 },
     174                 :            :     { "zip",   sal_True,  STR_DESCRIPTION_ARCHIVFILE,            0 },
     175                 :            :     { "zoo",   sal_True,  STR_DESCRIPTION_ARCHIVFILE,            0 },
     176                 :            :     { "gz",    sal_True,  STR_DESCRIPTION_ARCHIVFILE,            0 },
     177                 :            :     { "ppt",   sal_False, STR_DESCRIPTION_POWERPOINT,            IMG_IMPRESS },
     178                 :            :     { "pot",   sal_False, STR_DESCRIPTION_POWERPOINT_TEMPLATE,   IMG_IMPRESSTEMPLATE },
     179                 :            :     { "pps",   sal_False, STR_DESCRIPTION_POWERPOINT_SHOW,       IMG_IMPRESS },
     180                 :            :     { "pptx",  sal_False, STR_DESCRIPTION_POWERPOINT,            IMG_IMPRESS },
     181                 :            :     { "oxt",   sal_False, STR_DESCRIPTION_EXTENSION,             IMG_EXTENSION },
     182                 :            :     { 0, sal_False, 0, 0 }
     183                 :            : };
     184                 :            : 
     185                 :            : struct SvtFactory2ExtensionMapping_Impl
     186                 :            : {
     187                 :            :     const char*   _pFactory;
     188                 :            :     const char*   _pExtension;
     189                 :            : };
     190                 :            : 
     191                 :            : // mapping from "private:factory" url to extension
     192                 :            : 
     193                 :            : static SvtFactory2ExtensionMapping_Impl const Fac2ExtMap_Impl[] =
     194                 :            : {
     195                 :            :     { "swriter",                "odt" },
     196                 :            :     { "swriter/web",            "html" },
     197                 :            :     { "swriter/GlobalDocument", "odm" },
     198                 :            :     { "scalc",                  "ods" },
     199                 :            :     { "simpress",               "odp" },
     200                 :            :     { "sdraw",                  "odg" },
     201                 :            :     { "smath",                  "odf" },
     202                 :            :     { "sdatabase",              "odb" },
     203                 :            :     { NULL, NULL }
     204                 :            : };
     205                 :            : 
     206                 :            : //****************************************************************************
     207                 :            : 
     208                 :      11853 : static String GetImageExtensionByFactory_Impl( const String& rURL )
     209                 :            : {
     210 [ +  - ][ +  - ]:      11853 :     INetURLObject aObj( rURL );
     211 [ +  - ][ +  - ]:      11853 :     String aPath = aObj.GetURLPath( INetURLObject::NO_DECODE );
     212         [ +  - ]:      11853 :     String aExtension;
     213                 :            : 
     214         [ +  - ]:      11853 :     if ( aPath.Len() )
     215                 :            :     {
     216                 :      11853 :         sal_uInt16 nIndex = 0;
     217         [ +  - ]:      37111 :         while ( Fac2ExtMap_Impl[ nIndex ]._pFactory )
     218                 :            :         {
     219 [ +  - ][ +  + ]:      37111 :             if ( aPath.EqualsAscii( Fac2ExtMap_Impl[ nIndex ]._pFactory ) )
     220                 :            :             {
     221                 :            :                 // extension found
     222         [ +  - ]:      11853 :                 aExtension = rtl::OUString::createFromAscii(Fac2ExtMap_Impl[ nIndex ]._pExtension);
     223                 :            :                 // and return it
     224                 :            :                 return aExtension;
     225                 :            :             }
     226                 :      25258 :             ++nIndex;
     227                 :            :         }
     228                 :            :     }
     229                 :            : 
     230                 :            :     // no extension found, so use the type detection (performance brake)
     231                 :            : 
     232                 :            :     try
     233                 :            :     {
     234                 :            :         // get the TypeDetection service to access all registered types
     235         [ #  # ]:          0 :         ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory >  xFac = ::comphelper::getProcessServiceFactory();
     236                 :            :         ::com::sun::star::uno::Reference < ::com::sun::star::document::XTypeDetection > xTypeDetector(
     237 [ #  # ][ #  # ]:          0 :             xFac->createInstance( ASCII_STRING("com.sun.star.document.TypeDetection") ), ::com::sun::star::uno::UNO_QUERY );
         [ #  # ][ #  # ]
     238                 :            : 
     239 [ #  # ][ #  # ]:          0 :         ::rtl::OUString aInternalType = xTypeDetector->queryTypeByURL( rURL );
                 [ #  # ]
     240         [ #  # ]:          0 :         ::com::sun::star::uno::Reference < ::com::sun::star::container::XNameAccess > xAccess( xTypeDetector, ::com::sun::star::uno::UNO_QUERY );
     241         [ #  # ]:          0 :         ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue > aTypeProps;
     242 [ #  # ][ #  # ]:          0 :         if ( !aInternalType.isEmpty() && xAccess->hasByName( aInternalType ) )
         [ #  # ][ #  # ]
                 [ #  # ]
     243                 :            :         {
     244 [ #  # ][ #  # ]:          0 :             xAccess->getByName( aInternalType ) >>= aTypeProps;
                 [ #  # ]
     245                 :          0 :             sal_Int32 nProps = aTypeProps.getLength();
     246         [ #  # ]:          0 :             for ( sal_Int32 i = 0; i < nProps; ++i )
     247                 :            :             {
     248         [ #  # ]:          0 :                 const ::com::sun::star::beans::PropertyValue& rProp = aTypeProps[i];
     249         [ #  # ]:          0 :                 if ( rProp.Name.compareToAscii("Extensions") == COMPARE_EQUAL )
     250                 :            :                 {
     251         [ #  # ]:          0 :                     ::com::sun::star::uno::Sequence < ::rtl::OUString > aExtensions;
     252 [ #  # ][ #  # ]:          0 :                     if ( ( rProp.Value >>= aExtensions ) && aExtensions.getLength() > 0 )
         [ #  # ][ #  # ]
     253                 :            :                     {
     254                 :          0 :                         const ::rtl::OUString* pExtensions = aExtensions.getConstArray();
     255 [ #  # ][ #  # ]:          0 :                         aExtension = String( pExtensions[0] );
                 [ #  # ]
     256                 :            :                         break;
     257 [ #  # ][ #  # ]:          0 :                     }
     258                 :            :                 }
     259                 :            :             }
     260         [ #  # ]:          0 :         }
     261                 :            :     }
     262      [ #  #  # ]:          0 :     catch( const ::com::sun::star::uno::RuntimeException& )
     263                 :            :     {
     264                 :          0 :         throw; // dont hide it!
     265                 :            :     }
     266         [ #  # ]:          0 :     catch( const ::com::sun::star::uno::Exception& )
     267                 :            :     {
     268                 :            :         // type detection failed -> no extension
     269                 :            :     }
     270                 :            : 
     271 [ +  - ][ +  - ]:      11853 :     return aExtension;
     272                 :            : }
     273                 :            : 
     274                 :      11853 : static sal_uInt16 GetIndexOfExtension_Impl( const String& rExtension )
     275                 :            : {
     276                 :      11853 :     sal_uInt16 nRet = NO_INDEX;
     277         [ +  - ]:      11853 :     if ( rExtension.Len() )
     278                 :            :     {
     279                 :      11853 :         sal_uInt16 nIndex = 0;
     280         [ +  - ]:      11853 :         String aExt = rExtension;
     281         [ +  - ]:      11853 :         aExt.ToLowerAscii();
     282         [ +  - ]:     482570 :         while ( ExtensionMap_Impl[ nIndex ]._pExt )
     283                 :            :         {
     284 [ +  - ][ +  + ]:     482570 :             if ( aExt.EqualsAscii( ExtensionMap_Impl[ nIndex ]._pExt ) )
     285                 :            :             {
     286                 :      11853 :                 nRet = nIndex;
     287                 :      11853 :                 break;
     288                 :            :             }
     289                 :     470717 :             ++nIndex;
     290         [ +  - ]:      11853 :         }
     291                 :            :     }
     292                 :            : 
     293                 :      11853 :     return nRet;
     294                 :            : }
     295                 :            : 
     296                 :      11853 : static sal_uInt16 GetImageId_Impl( const String& rExtension )
     297                 :            : {
     298                 :      11853 :     sal_uInt16 nImage = IMG_FILE;
     299         [ +  - ]:      11853 :     if ( rExtension.Len()  != NO_INDEX )
     300                 :            :     {
     301                 :      11853 :         sal_uInt16 nIndex = GetIndexOfExtension_Impl( rExtension );
     302         [ +  - ]:      11853 :         if ( nIndex != NO_INDEX )
     303                 :            :         {
     304                 :      11853 :             nImage = ExtensionMap_Impl[ nIndex ]._nImgId;
     305         [ -  + ]:      11853 :             if ( !nImage )
     306                 :          0 :                 nImage = IMG_FILE;
     307                 :            :         }
     308                 :            :     }
     309                 :            : 
     310                 :      11853 :     return nImage;
     311                 :            : }
     312                 :            : 
     313                 :          0 : static sal_Bool GetVolumeProperties_Impl( ::ucbhelper::Content& rContent, svtools::VolumeInfo& rVolumeInfo )
     314                 :            : {
     315                 :          0 :     sal_Bool bRet = sal_False;
     316                 :            : 
     317                 :            :     try
     318                 :            :     {
     319 [ #  # ][ #  # ]:          0 :         bRet = ( ( rContent.getPropertyValue( ASCII_STRING("IsVolume") ) >>= rVolumeInfo.m_bIsVolume ) &&
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     320 [ #  # ][ #  # ]:          0 :                  ( rContent.getPropertyValue( ASCII_STRING("IsRemote") ) >>= rVolumeInfo.m_bIsRemote ) &&
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     321 [ #  # ][ #  # ]:          0 :                  ( rContent.getPropertyValue( ASCII_STRING("IsRemoveable") ) >>= rVolumeInfo.m_bIsRemoveable ) &&
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     322 [ #  # ][ #  # ]:          0 :                  ( rContent.getPropertyValue( ASCII_STRING("IsFloppy") ) >>= rVolumeInfo.m_bIsFloppy ) &&
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     323 [ #  # ][ #  # ]:          0 :                  ( rContent.getPropertyValue( ASCII_STRING("IsCompactDisc") ) >>= rVolumeInfo.m_bIsCompactDisc ) );
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
           [ #  #  #  #  
             #  #  #  # ]
     324                 :            :     }
     325      [ #  #  # ]:          0 :     catch( const ::com::sun::star::uno::RuntimeException& )
     326                 :            :     {
     327                 :          0 :         throw; // dont hide it!
     328                 :            :     }
     329                 :          0 :     catch( const ::com::sun::star::uno::Exception& )
     330                 :            :     {
     331                 :            :         // type detection failed -> no extension
     332                 :            :     }
     333                 :            : 
     334                 :          0 :     return bRet;
     335                 :            : }
     336                 :            : 
     337                 :          0 : static sal_uInt16 GetFolderImageId_Impl( const String& rURL )
     338                 :            : {
     339                 :          0 :     sal_uInt16 nRet = IMG_FOLDER;
     340                 :          0 :     ::svtools::VolumeInfo aVolumeInfo;
     341                 :            :     try
     342                 :            :     {
     343 [ #  # ][ #  # ]:          0 :         ::ucbhelper::Content aCnt( rURL, ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () );
     344 [ #  # ][ #  # ]:          0 :         if ( GetVolumeProperties_Impl( aCnt, aVolumeInfo ) )
     345                 :            :         {
     346         [ #  # ]:          0 :             if ( aVolumeInfo.m_bIsRemote )
     347                 :          0 :                 nRet = IMG_NETWORKDEV;
     348         [ #  # ]:          0 :             else if ( aVolumeInfo.m_bIsCompactDisc )
     349                 :          0 :                 nRet = IMG_CDROMDEV;
     350         [ #  # ]:          0 :             else if ( aVolumeInfo.m_bIsRemoveable )
     351                 :          0 :                 nRet = IMG_REMOVEABLEDEV;
     352         [ #  # ]:          0 :             else if ( aVolumeInfo.m_bIsVolume )
     353                 :          0 :                 nRet = IMG_FIXEDDEV;
     354         [ #  # ]:          0 :         }
     355                 :            :     }
     356      [ #  #  # ]:          0 :     catch( const ::com::sun::star::uno::RuntimeException& )
     357                 :            :     {
     358                 :          0 :         throw; // dont hide it!
     359                 :            :     }
     360         [ #  # ]:          0 :     catch( const ::com::sun::star::uno::Exception& )
     361                 :            :     {
     362                 :            :         // ...
     363                 :            :     }
     364                 :          0 :     return nRet;
     365                 :            : }
     366                 :            : 
     367                 :      16275 : static sal_uInt16 GetImageId_Impl( const INetURLObject& rObject, sal_Bool bDetectFolder )
     368                 :            : {
     369                 :            :     RTL_LOGFILE_CONTEXT_AUTHOR( aTimeLog, "svtools", "hb93813", "SvFileInformationManager::GetImageId_Impl()" );
     370                 :            : 
     371 [ +  - ][ +  - ]:      16275 :     String aExt, sURL = rObject.GetMainURL( INetURLObject::NO_DECODE );
                 [ +  - ]
     372                 :      16275 :     sal_uInt16 nImage = IMG_FILE;
     373                 :            : 
     374         [ +  + ]:      16275 :     if ( rObject.GetProtocol() == INET_PROT_PRIVATE )
     375                 :            :     {
     376         [ +  - ]:      16269 :         String aURLPath = sURL.Copy( URL_PREFIX_PRIV_SOFFICE_LEN );
     377         [ +  - ]:      16269 :         String aType = aURLPath.GetToken( 0, INET_PATH_TOKEN );
     378 [ +  - ][ +  - ]:      16269 :         if ( aType == String( RTL_CONSTASCII_USTRINGPARAM("factory") ) )
         [ +  - ][ +  + ]
     379                 :            :         {
     380                 :            :             // detect an image id for our "private:factory" urls
     381 [ +  - ][ +  - ]:      11853 :             aExt = GetImageExtensionByFactory_Impl( sURL );
                 [ +  - ]
     382         [ +  - ]:      11853 :             if ( aExt.Len() > 0 )
     383         [ +  - ]:      11853 :                 nImage = GetImageId_Impl( aExt );
     384                 :      11853 :             return nImage;
     385                 :            :         }
     386 [ +  - ][ +  - ]:       4416 :         else if ( aType == String( RTL_CONSTASCII_USTRINGPARAM("image") ) )
         [ +  - ][ +  - ]
     387 [ +  - ][ +  - ]:      16269 :             nImage = (sal_uInt16)aURLPath.GetToken( 1, INET_PATH_TOKEN ).ToInt32();
         [ +  - ][ +  - ]
         [ +  + ][ +  - ]
                 [ +  + ]
     388                 :            :     }
     389                 :            :     else
     390                 :            :     {
     391 [ +  - ][ +  - ]:          6 :         aExt = rObject.getExtension();
     392 [ -  + ][ +  - ]:          6 :         if ( aExt.EqualsAscii( "vor" ) )
     393                 :            :         {
     394 [ #  # ][ #  # ]:          0 :             SotStorageRef aStorage = new SotStorage( sURL, STREAM_STD_READ );
     395                 :          0 :             sal_uInt16 nId = IMG_WRITERTEMPLATE;
     396         [ #  # ]:          0 :             if ( !aStorage->GetError() )
     397                 :            :             {
     398         [ #  # ]:          0 :                 SvGlobalName aGlobalName = aStorage->GetClassName();
     399 [ #  # ][ #  # ]:          0 :                 if ( aGlobalName == SvGlobalName(SO3_SC_CLASSID_50) || aGlobalName == SvGlobalName(SO3_SC_CLASSID_40) || aGlobalName == SvGlobalName(SO3_SC_CLASSID_30) )
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  #  
          #  #  #  #  #  
                      # ]
     400                 :          0 :                     nId = IMG_CALCTEMPLATE;
     401 [ #  # ][ #  # ]:          0 :                 else if ( aGlobalName == SvGlobalName(SO3_SDRAW_CLASSID_50) )
         [ #  # ][ #  # ]
     402                 :          0 :                     nId = IMG_DRAWTEMPLATE;
     403 [ #  # ][ #  # ]:          0 :                 else if ( aGlobalName == SvGlobalName(SO3_SIMPRESS_CLASSID_50) ||
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
     404 [ #  # ][ #  # ]:          0 :                         aGlobalName == SvGlobalName(SO3_SIMPRESS_CLASSID_40) || aGlobalName == SvGlobalName(SO3_SIMPRESS_CLASSID_30) )
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     405                 :          0 :                     nId = IMG_IMPRESSTEMPLATE;
     406 [ #  # ][ #  # ]:          0 :                 else if ( aGlobalName == SvGlobalName(SO3_SM_CLASSID_50) || aGlobalName == SvGlobalName(SO3_SM_CLASSID_40) || aGlobalName == SvGlobalName(SO3_SM_CLASSID_30) )
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  #  
          #  #  #  #  #  
                      # ]
     407         [ #  # ]:          0 :                     nId = IMG_MATHTEMPLATE;
     408                 :            :             }
     409                 :            : 
     410         [ #  # ]:          0 :             return nId;
     411                 :            :         }
     412                 :            :     }
     413                 :            : 
     414 [ +  + ][ +  + ]:       4422 :     if ( nImage == IMG_FILE && sURL.Len() )
                 [ +  + ]
     415                 :            :     {
     416 [ +  - ][ +  - ]:          4 :         if ( bDetectFolder && CONTENT_HELPER::IsFolder( sURL ) )
         [ +  - ][ -  + ]
                 [ +  - ]
           [ -  +  #  # ]
     417         [ #  # ]:          0 :             nImage = GetFolderImageId_Impl( sURL );
     418         [ -  + ]:          4 :         else if ( aExt.Len() > 0 )
     419         [ #  # ]:          0 :             nImage = GetImageId_Impl( aExt );
     420                 :            :     }
     421 [ +  - ][ +  - ]:      16275 :     return nImage;
     422                 :            : }
     423                 :            : 
     424                 :          0 : static sal_uInt16 GetDescriptionId_Impl( const String& rExtension, sal_Bool& rbShowExt )
     425                 :            : {
     426                 :          0 :     sal_uInt16 nId = 0;
     427                 :            : 
     428         [ #  # ]:          0 :     if ( rExtension.Len()  != NO_INDEX )
     429                 :            :     {
     430                 :          0 :         sal_uInt16 nIndex = GetIndexOfExtension_Impl( rExtension );
     431         [ #  # ]:          0 :         if ( nIndex != NO_INDEX )
     432                 :            :         {
     433                 :          0 :             nId = ExtensionMap_Impl[ nIndex ]._nStrId;
     434                 :          0 :             rbShowExt = ExtensionMap_Impl[ nIndex ]._bExt;
     435                 :            :         }
     436                 :            :     }
     437                 :            : 
     438                 :          0 :     return nId;
     439                 :            : }
     440                 :            : 
     441                 :         12 : static String GetDescriptionByFactory_Impl( const String& rFactory )
     442                 :            : {
     443                 :         12 :     sal_uInt16 nResId = 0;
     444         [ +  + ]:         12 :     if ( rFactory.EqualsIgnoreCaseAscii( "swriter", 0, 7 ) )
     445                 :          2 :         nResId = STR_DESCRIPTION_FACTORY_WRITER;
     446         [ +  + ]:         10 :     else if ( rFactory.EqualsIgnoreCaseAscii( "scalc", 0, 5 ) )
     447                 :          2 :         nResId = STR_DESCRIPTION_FACTORY_CALC;
     448         [ +  + ]:          8 :     else if ( rFactory.EqualsIgnoreCaseAscii( "simpress", 0, 8 ) )
     449                 :          2 :         nResId = STR_DESCRIPTION_FACTORY_IMPRESS;
     450         [ +  + ]:          6 :     else if ( rFactory.EqualsIgnoreCaseAscii( "sdraw", 0, 5 ) )
     451                 :          2 :         nResId = STR_DESCRIPTION_FACTORY_DRAW;
     452         [ -  + ]:          4 :     else if ( rFactory.EqualsIgnoreCaseAscii( "swriter/web", 0, 11 ) )
     453                 :          0 :         nResId = STR_DESCRIPTION_FACTORY_WRITERWEB;
     454         [ -  + ]:          4 :     else if ( rFactory.EqualsIgnoreCaseAscii( "swriter/globaldocument", 0, 22 ) )
     455                 :          0 :         nResId = STR_DESCRIPTION_FACTORY_GLOBALDOC;
     456         [ +  + ]:          4 :     else if ( rFactory.EqualsIgnoreCaseAscii( "smath", 0, 5 ) )
     457                 :          2 :         nResId = STR_DESCRIPTION_FACTORY_MATH;
     458         [ +  - ]:          2 :     else if ( rFactory.EqualsIgnoreCaseAscii( "sdatabase", 0, 9 ) )
     459                 :          2 :         nResId = STR_DESCRIPTION_FACTORY_DATABASE;
     460                 :            : 
     461         [ +  - ]:         12 :     if ( nResId )
     462                 :            :     {
     463         [ +  - ]:         12 :         SolarMutexGuard aGuard;
     464 [ +  - ][ +  - ]:         12 :         return SvtResId(nResId).toString();
         [ +  - ][ +  - ]
     465                 :            :     }
     466         [ #  # ]:         12 :     return rtl::OUString();
     467                 :            : }
     468                 :            : 
     469                 :          0 : static sal_uInt16 GetFolderDescriptionId_Impl( const String& rURL )
     470                 :            : {
     471                 :          0 :     sal_uInt16 nRet = STR_DESCRIPTION_FOLDER;
     472                 :          0 :     svtools::VolumeInfo aVolumeInfo;
     473                 :            :     try
     474                 :            :     {
     475 [ #  # ][ #  # ]:          0 :         ::ucbhelper::Content aCnt( rURL, ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () );
     476 [ #  # ][ #  # ]:          0 :         if ( GetVolumeProperties_Impl( aCnt, aVolumeInfo ) )
     477                 :            :         {
     478         [ #  # ]:          0 :             if ( aVolumeInfo.m_bIsRemote )
     479                 :          0 :                 nRet = STR_DESCRIPTION_REMOTE_VOLUME;
     480         [ #  # ]:          0 :             else if ( aVolumeInfo.m_bIsFloppy )
     481                 :          0 :                 nRet = STR_DESCRIPTION_FLOPPY_VOLUME;
     482         [ #  # ]:          0 :             else if ( aVolumeInfo.m_bIsCompactDisc )
     483                 :          0 :                 nRet = STR_DESCRIPTION_CDROM_VOLUME;
     484 [ #  # ][ #  # ]:          0 :             else if ( aVolumeInfo.m_bIsRemoveable || aVolumeInfo.m_bIsVolume )
     485                 :          0 :                 nRet = STR_DESCRIPTION_LOCALE_VOLUME;
     486         [ #  # ]:          0 :         }
     487                 :            :     }
     488      [ #  #  # ]:          0 :     catch( const ::com::sun::star::uno::RuntimeException& )
     489                 :            :     {
     490                 :          0 :         throw; // dont hide it!
     491                 :            :     }
     492         [ #  # ]:          0 :     catch( const ::com::sun::star::uno::Exception& )
     493                 :            :     {
     494                 :            :         // ...
     495                 :            :     }
     496                 :          0 :     return nRet;
     497                 :            : }
     498                 :            : 
     499                 :      16269 : static Image GetImageFromList_Impl( sal_uInt16 nImageId, sal_Bool bBig )
     500                 :            : {
     501 [ +  - ][ -  + ]:      16269 :     if ( !bBig && IMG_FOLDER == nImageId )
     502                 :            :         // return our new small folder image (256 colors)
     503         [ #  # ]:          0 :         return Image( SvtResId( IMG_SVT_FOLDER ) );
     504                 :            : 
     505                 :      16269 :     ImageList* pList = NULL;
     506                 :            : 
     507 [ +  + ][ +  - ]:      16269 :     static vcl::DeleteOnDeinit< ImageList > xSmallImageList( NULL );
         [ +  - ][ #  # ]
     508 [ +  + ][ +  - ]:      16269 :     static vcl::DeleteOnDeinit< ImageList > xBigImageList( NULL );
         [ +  - ][ #  # ]
     509 [ +  + ][ +  - ]:      16269 :     static sal_uLong nStyle = Application::GetSettings().GetStyleSettings().GetSymbolsStyle();
         [ +  - ][ #  # ]
     510                 :            : 
     511                 :            :     // If the style has been changed, throw away our cache of the older images
     512         [ -  + ]:      16269 :     if ( nStyle != Application::GetSettings().GetStyleSettings().GetSymbolsStyle() )
     513                 :            :     {
     514                 :          0 :         xSmallImageList.reset();
     515                 :          0 :         xBigImageList.reset();
     516                 :          0 :         nStyle = Application::GetSettings().GetStyleSettings().GetSymbolsStyle();
     517                 :            :     }
     518                 :            : 
     519         [ -  + ]:      16269 :     if ( bBig )
     520                 :            :     {
     521         [ #  # ]:          0 :         if ( !xBigImageList.get() )
     522 [ #  # ][ #  # ]:          0 :             xBigImageList.reset(new ImageList(SvtResId(RID_SVTOOLS_IMAGELIST_BIG)));
                 [ #  # ]
     523                 :          0 :         pList = xBigImageList.get();
     524                 :            :     }
     525                 :            :     else
     526                 :            :     {
     527         [ +  + ]:      16269 :         if ( !xSmallImageList.get() )
     528 [ +  - ][ +  - ]:         60 :             xSmallImageList.reset(new ImageList(SvtResId(RID_SVTOOLS_IMAGELIST_SMALL)));
                 [ +  - ]
     529                 :      16269 :         pList = xSmallImageList.get();
     530                 :            :     }
     531                 :            : 
     532         [ +  + ]:      16269 :     if ( pList->HasImageAtPos( nImageId ) )
     533                 :      15165 :         return pList->GetImage( nImageId );
     534                 :      16269 :     return Image();
     535                 :            : }
     536                 :            : 
     537                 :         12 : String SvFileInformationManager::GetDescription_Impl( const INetURLObject& rObject, sal_Bool bDetectFolder )
     538                 :            : {
     539                 :            :     RTL_LOGFILE_CONTEXT_AUTHOR( aTimeLog, "svtools", "hb93813", "SvFileInformationManager::GetDescription_Impl()" );
     540                 :            : 
     541         [ +  - ]:         12 :     String sDescription;
     542 [ +  - ][ +  - ]:         12 :     String sExtension( rObject.getExtension() ), sURL( rObject.GetMainURL( INetURLObject::NO_DECODE ) );
         [ +  - ][ +  - ]
     543                 :         12 :     sal_uInt16 nResId = 0;
     544                 :         12 :     sal_Bool bShowExt = sal_False, bDetected = sal_False, bOnlyFile = sal_False;
     545 [ +  - ][ +  - ]:         12 :     sal_Bool bFolder = bDetectFolder ? CONTENT_HELPER::IsFolder( sURL ) : sal_False;
         [ +  - ][ #  # ]
                 [ +  - ]
     546         [ +  - ]:         12 :     if ( !bFolder )
     547                 :            :     {
     548         [ +  - ]:         12 :         if ( !bDetected )
     549                 :            :         {
     550         [ +  - ]:         12 :             if ( rObject.GetProtocol() == INET_PROT_PRIVATE )
     551                 :            :             {
     552         [ +  - ]:         12 :                 String aURLPath = sURL.Copy( URL_PREFIX_PRIV_SOFFICE_LEN );
     553         [ +  - ]:         12 :                 String aType = aURLPath.GetToken( 0, INET_PATH_TOKEN );
     554 [ +  - ][ +  - ]:         12 :                 if ( aType == String( RTL_CONSTASCII_USTRINGPARAM("factory") ) )
         [ +  - ][ +  - ]
     555                 :            :                 {
     556 [ +  - ][ +  - ]:         12 :                     sDescription = GetDescriptionByFactory_Impl( aURLPath.Copy( aURLPath.Search( INET_PATH_TOKEN ) + 1 ) );
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     557                 :         12 :                     bDetected = sal_True;
     558 [ +  - ][ +  - ]:         12 :                 }
     559                 :            :             }
     560                 :            : 
     561         [ -  + ]:         12 :             if ( !bDetected )
     562                 :            :             {
     563                 :            :                 // search a description by extension
     564                 :          0 :                 sal_Bool bExt = ( sExtension.Len() > 0 );
     565         [ #  # ]:          0 :                 if ( bExt )
     566                 :            :                 {
     567         [ #  # ]:          0 :                     sExtension.ToLowerAscii();
     568         [ #  # ]:          0 :                     nResId = GetDescriptionId_Impl( sExtension, bShowExt );
     569                 :            :                 }
     570         [ #  # ]:          0 :                 if ( !nResId )
     571                 :            :                 {
     572                 :          0 :                     nResId = STR_DESCRIPTION_FILE;
     573                 :          0 :                     bOnlyFile = bExt;
     574                 :            :                 }
     575                 :            :             }
     576                 :            :         }
     577                 :            :     }
     578                 :            :     else
     579         [ #  # ]:          0 :         nResId = GetFolderDescriptionId_Impl( sURL );
     580                 :            : 
     581         [ -  + ]:         12 :     if ( nResId > 0 )
     582                 :            :     {
     583         [ #  # ]:          0 :         if ( bOnlyFile )
     584                 :            :         {
     585                 :          0 :             bShowExt = sal_False;
     586         [ #  # ]:          0 :             sExtension.ToUpperAscii();
     587         [ #  # ]:          0 :             sDescription = sExtension;
     588         [ #  # ]:          0 :             sDescription += '-';
     589                 :            :         }
     590         [ #  # ]:          0 :         SolarMutexGuard aGuard;
     591 [ #  # ][ #  # ]:          0 :         sDescription += SvtResId(nResId).toString();
         [ #  # ][ #  # ]
     592                 :            :     }
     593                 :            : 
     594                 :            :     DBG_ASSERT( sDescription.Len() > 0, "file without description" );
     595                 :            : 
     596         [ -  + ]:         12 :     if ( bShowExt )
     597                 :            :     {
     598 [ #  # ][ #  # ]:          0 :         sDescription += String( RTL_CONSTASCII_USTRINGPARAM(" (") );
                 [ #  # ]
     599         [ #  # ]:          0 :         sDescription += sExtension;
     600         [ #  # ]:          0 :         sDescription += ')';
     601                 :            :     }
     602                 :            : 
     603 [ +  - ][ +  - ]:         12 :     return sDescription;
     604                 :            : }
     605                 :            : 
     606                 :          0 : Image SvFileInformationManager::GetImage( const INetURLObject& rObject, sal_Bool bBig )
     607                 :            : {
     608                 :          0 :     sal_uInt16 nImage = GetImageId_Impl( rObject, sal_True );
     609                 :            :     DBG_ASSERT( nImage, "invalid ImageId" );
     610                 :          0 :     return GetImageFromList_Impl( nImage, bBig );
     611                 :            : }
     612                 :            : 
     613                 :          0 : Image SvFileInformationManager::GetFileImage( const INetURLObject& rObject, sal_Bool bBig )
     614                 :            : {
     615                 :          0 :     sal_Int16 nImage = GetImageId_Impl( rObject, sal_False );
     616                 :            :     DBG_ASSERT( nImage, "invalid ImageId" );
     617                 :          0 :     return GetImageFromList_Impl( nImage, bBig );
     618                 :            : }
     619                 :            : 
     620                 :      16275 : Image SvFileInformationManager::GetImageNoDefault( const INetURLObject& rObject, sal_Bool bBig )
     621                 :            : {
     622                 :      16275 :     sal_uInt16 nImage = GetImageId_Impl( rObject, sal_True );
     623                 :            :     DBG_ASSERT( nImage, "invalid ImageId" );
     624                 :            : 
     625         [ +  + ]:      16275 :     if ( nImage == IMG_FILE )
     626                 :          6 :         return Image();
     627                 :            : 
     628                 :      16275 :     return GetImageFromList_Impl( nImage, bBig );
     629                 :            : }
     630                 :            : 
     631                 :          0 : Image SvFileInformationManager::GetFolderImage( const svtools::VolumeInfo& rInfo, sal_Bool bBig )
     632                 :            : {
     633                 :          0 :     sal_uInt16 nImage = IMG_FOLDER;
     634                 :            :     DBG_ASSERT( nImage, "invalid ImageId" );
     635                 :            : 
     636         [ #  # ]:          0 :     if ( rInfo.m_bIsRemote )
     637                 :          0 :         nImage = IMG_NETWORKDEV;
     638         [ #  # ]:          0 :     else if ( rInfo.m_bIsCompactDisc )
     639                 :          0 :         nImage = IMG_CDROMDEV;
     640 [ #  # ][ #  # ]:          0 :     else if ( rInfo.m_bIsRemoveable || rInfo.m_bIsFloppy )
     641                 :          0 :         nImage = IMG_REMOVEABLEDEV;
     642         [ #  # ]:          0 :     else if ( rInfo.m_bIsVolume )
     643                 :          0 :         nImage = IMG_FIXEDDEV;
     644                 :            : 
     645                 :          0 :     return GetImageFromList_Impl( nImage, bBig );
     646                 :            : }
     647                 :            : 
     648                 :         12 : String SvFileInformationManager::GetDescription( const INetURLObject& rObject )
     649                 :            : {
     650                 :         12 :     return SvFileInformationManager::GetDescription_Impl( rObject, sal_True );
     651                 :            : }
     652                 :            : 
     653                 :          0 : String SvFileInformationManager::GetFileDescription( const INetURLObject& rObject )
     654                 :            : {
     655                 :          0 :     return SvFileInformationManager::GetDescription_Impl( rObject, sal_False );
     656                 :            : }
     657                 :            : 
     658                 :          0 : String SvFileInformationManager::GetFolderDescription( const svtools::VolumeInfo& rInfo )
     659                 :            : {
     660                 :          0 :     sal_uInt16 nResId = STR_DESCRIPTION_FOLDER;
     661         [ #  # ]:          0 :     if ( rInfo.m_bIsRemote )
     662                 :          0 :         nResId = STR_DESCRIPTION_REMOTE_VOLUME;
     663         [ #  # ]:          0 :     else if ( rInfo.m_bIsFloppy )
     664                 :          0 :         nResId = STR_DESCRIPTION_FLOPPY_VOLUME;
     665         [ #  # ]:          0 :     else if ( rInfo.m_bIsCompactDisc )
     666                 :          0 :         nResId = STR_DESCRIPTION_CDROM_VOLUME;
     667 [ #  # ][ #  # ]:          0 :     else if ( rInfo.m_bIsRemoveable || rInfo.m_bIsVolume )
     668                 :          0 :         nResId = STR_DESCRIPTION_LOCALE_VOLUME;
     669                 :            : 
     670 [ #  # ][ #  # ]:          0 :     return SvtResId(nResId).toString();
     671                 :            : }
     672                 :            : 
     673                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10