29#include <com/sun/star/beans/PropertyValue.hpp>
30#include <com/sun/star/container/XNameAccess.hpp>
31#include <com/sun/star/document/XTypeDetection.hpp>
32#include <com/sun/star/ucb/CommandAbortedException.hpp>
33#include <com/sun/star/ucb/ContentCreationException.hpp>
34#include <com/sun/star/ucb/XCommandEnvironment.hpp>
35#include <com/sun/star/uno/XComponentContext.hpp>
37#include <svtools/strings.hrc>
40#include <bitmaps.hlst>
46#define CONTENT_HELPER ::utl::UCBContentHelper
50struct SvtExtensionResIdMapping_Impl
182struct SvtFactory2ExtensionMapping_Impl
184 const char* _pFactory;
185 const char* _pExtension;
194 {
"swriter",
"odt" },
195 {
"swriter/web",
"html" },
196 {
"swriter/GlobalDocument",
"odm" },
198 {
"simpress",
"odp" },
201 {
"sdatabase",
"odb" },
212 if ( !aPath.isEmpty() )
233 css::uno::Reference < css::uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
234 css::uno::Reference < css::document::XTypeDetection > xTypeDetector(
235 xContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.document.TypeDetection", xContext),
236 css::uno::UNO_QUERY );
238 OUString aInternalType = xTypeDetector->queryTypeByURL( rURL );
239 css::uno::Reference < css::container::XNameAccess > xAccess( xTypeDetector, css::uno::UNO_QUERY );
240 css::uno::Sequence < css::beans::PropertyValue > aTypeProps;
241 if ( !aInternalType.isEmpty() && xAccess->hasByName( aInternalType ) )
243 xAccess->getByName( aInternalType ) >>= aTypeProps;
244 for (
const css::beans::PropertyValue& rProp : std::as_const(aTypeProps) )
246 if (rProp.Name ==
"Extensions")
248 css::uno::Sequence < OUString > aExtensions;
249 if ( ( rProp.Value >>= aExtensions ) && aExtensions.hasElements() )
251 const OUString* pExtensions = aExtensions.getConstArray();
252 aExtension = pExtensions[0];
259 catch(
const css::uno::RuntimeException& )
263 catch(
const css::uno::Exception& )
274 if ( !rExtension.isEmpty() )
277 OUString aExt = rExtension.toAsciiLowerCase();
318 catch(
const css::uno::RuntimeException& )
322 catch(
const css::uno::Exception& )
349 catch(
const css::uno::RuntimeException& )
353 catch(
const css::uno::Exception& )
361 OUString
const & url, css::uno::Reference<css::ucb::XCommandEnvironment>
const & env)
365 }
catch (css::uno::RuntimeException &) {
367 }
catch (css::ucb::CommandAbortedException &) {
370 }
catch (css::uno::Exception &) {
378 css::uno::Reference<css::ucb::XCommandEnvironment>
const & env )
383 if ( rObject.
GetProtocol() == INetProtocol::PrivSoffice )
387 if ( aType ==
u"factory" )
391 if ( !aExt.isEmpty() )
395 else if ( aType ==
u"image" )
407 if ( !aStorage->GetError() )
421 catch (
const css::ucb::ContentCreationException&)
434 else if ( !aExt.isEmpty() )
456 if ( rFactory.startsWithIgnoreAsciiCase(
"swriter" ) )
457 pResId = STR_DESCRIPTION_FACTORY_WRITER;
458 else if ( rFactory.startsWithIgnoreAsciiCase(
"scalc" ) )
459 pResId = STR_DESCRIPTION_FACTORY_CALC;
460 else if ( rFactory.startsWithIgnoreAsciiCase(
"simpress" ) )
461 pResId = STR_DESCRIPTION_FACTORY_IMPRESS;
462 else if ( rFactory.startsWithIgnoreAsciiCase(
"sdraw" ) )
463 pResId = STR_DESCRIPTION_FACTORY_DRAW;
464 else if ( rFactory.startsWithIgnoreAsciiCase(
"swriter/web" ) )
465 pResId = STR_DESCRIPTION_FACTORY_WRITERWEB;
466 else if ( rFactory.startsWithIgnoreAsciiCase(
"swriter/globaldocument" ) )
467 pResId = STR_DESCRIPTION_FACTORY_GLOBALDOC;
468 else if ( rFactory.startsWithIgnoreAsciiCase(
"smath" ) )
469 pResId = STR_DESCRIPTION_FACTORY_MATH;
470 else if ( rFactory.startsWithIgnoreAsciiCase(
"sdatabase" ) )
471 pResId = STR_DESCRIPTION_FACTORY_DATABASE;
490 pRet = STR_DESCRIPTION_REMOTE_VOLUME;
492 pRet = STR_DESCRIPTION_FLOPPY_VOLUME;
494 pRet = STR_DESCRIPTION_CDROM_VOLUME;
496 pRet = STR_DESCRIPTION_LOCALE_VOLUME;
499 catch(
const css::uno::RuntimeException& )
503 catch(
const css::uno::Exception& )
519 return BMP_OO_DATABASE_DOC_32;
521 return BMP_OO_DRAW_DOC_32;
523 return BMP_OO_MATH_DOC_32;
525 return BMP_OO_GLOBAL_DOC_32;
527 return BMP_OO_IMPRESS_DOC_32;
529 return BMP_OO_CALC_DOC_32;
531 return BMP_OO_WRITER_DOC_32;
533 return BMP_OO_WRITER_TEMPLATE_32;
542 return BMP_IMPRESS_LC;
544 return BMP_BITMAP_LC;
548 return BMP_CALCTEMPLATE_LC;
550 return BMP_DATABASE_LC;
552 return BMP_IMPRESSTEMPLATE_LC;
562 return BMP_MATHTEMPLATE_LC;
574 return BMP_TEXTFILE_LC;
582 return BMP_WRITER_LC;
584 return BMP_WRITERTEMPLATE_LC;
586 return BMP_FIXEDDEV_LC;
588 return BMP_REMOVABLEDEV_LC;
590 return BMP_CDROMDEV_LC;
592 return BMP_NETWORKDEV_LC;
596 return BMP_FOLDER_LC;
606 return BMP_GLOBAL_DOC_LC;
610 return BMP_DRAWTEMPLATE_LC;
612 return BMP_OO_DATABASE_DOC_LC;
614 return BMP_OO_DRAW_DOC_LC;
616 return BMP_OO_MATH_DOC_LC;
618 return BMP_OO_GLOBAL_DOC_LC;
620 return BMP_OO_IMPRESS_DOC_LC;
622 return BMP_OO_CALC_DOC_LC;
624 return BMP_OO_WRITER_DOC_LC;
626 return BMP_OO_DRAW_TEMPLATE_LC;
628 return BMP_OO_IMPRESS_TEMPLATE_LC;
630 return BMP_OO_CALC_TEMPLATE_LC;
632 return BMP_OO_WRITER_TEMPLATE_LC;
634 return BMP_EXTENSION_LC;
643 return BMP_IMPRESS_SC;
645 return BMP_BITMAP_SC;
649 return BMP_CALCTEMPLATE_SC;
651 return BMP_DATABASE_SC;
653 return BMP_IMPRESSTEMPLATE_SC;
663 return BMP_MATHTEMPLATE_SC;
675 return BMP_TEXTFILE_SC;
683 return BMP_WRITER_SC;
685 return BMP_WRITERTEMPLATE_SC;
687 return BMP_FIXEDDEV_SC;
689 return BMP_REMOVABLEDEV_SC;
691 return BMP_CDROMDEV_SC;
693 return BMP_NETWORKDEV_SC;
697 return RID_BMP_FOLDER;
707 return BMP_GLOBAL_DOC_SC;
711 return BMP_DRAWTEMPLATE_SC;
713 return BMP_OO_DATABASE_DOC_SC;
715 return BMP_OO_DRAW_DOC_SC;
717 return BMP_OO_MATH_DOC_SC;
719 return BMP_OO_GLOBAL_DOC_SC;
721 return BMP_OO_IMPRESS_DOC_SC;
723 return BMP_OO_CALC_DOC_SC;
725 return BMP_OO_WRITER_DOC_SC;
727 return BMP_OO_DRAW_TEMPLATE_SC;
729 return BMP_OO_IMPRESS_TEMPLATE_SC;
731 return BMP_OO_CALC_TEMPLATE_SC;
733 return BMP_OO_WRITER_TEMPLATE_SC;
735 return BMP_EXTENSION_SC;
746 if (!sImageName.isEmpty())
747 return Image(StockImage::Yes, sImageName);
756 bool bShowExt =
false, bOnlyFile =
false;
757 bool bFolder = bDetectFolder && CONTENT_HELPER::IsFolder( sURL );
760 bool bDetected =
false;
762 if ( rObject.
GetProtocol() == INetProtocol::PrivSoffice )
766 if ( aType ==
u"factory" )
776 bool bExt = !sExtension.isEmpty();
779 sExtension = sExtension.toAsciiLowerCase();
784 pResId = STR_DESCRIPTION_FILE;
797 sExtension = sExtension.toAsciiUpperCase();
798 sDescription = sExtension +
"-";
803 DBG_ASSERT( !sDescription.isEmpty(),
"file without description" );
807 sDescription +=
" (" + sExtension +
")";
823 css::uno::Reference<css::ucb::XCommandEnvironment>
const & env)
881 pResId = STR_DESCRIPTION_REMOTE_VOLUME;
883 pResId = STR_DESCRIPTION_FLOPPY_VOLUME;
885 pResId = STR_DESCRIPTION_CDROM_VOLUME;
887 pResId = STR_DESCRIPTION_LOCALE_VOLUME;
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
OUString getExtension(sal_Int32 nIndex=LAST_SEGMENT, bool bIgnoreFinalSlash=true, DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
OUString GetURLPath(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
INetProtocol GetProtocol() const
#define SO3_SDRAW_CLASSID_50
#define SO3_SC_CLASSID_30
#define SO3_SIMPRESS_CLASSID_50
#define SO3_SM_CLASSID_50
#define SO3_SIMPRESS_CLASSID_30
#define SO3_SC_CLASSID_40
#define SO3_SIMPRESS_CLASSID_40
#define SO3_SM_CLASSID_30
#define SO3_SM_CLASSID_40
#define SO3_SC_CLASSID_50
css::uno::Any getPropertyValue(const OUString &rPropertyName)
#define DBG_ASSERT(sCon, aError)
#define TOOLS_WARN_EXCEPTION(area, stream)
#define TOOLS_INFO_EXCEPTION(area, stream)
SvtFactory2ExtensionMapping_Impl const Fac2ExtMap_Impl[]
static OUString GetDescriptionByFactory_Impl(const OUString &rFactory)
static bool GetVolumeProperties_Impl(::ucbhelper::Content &rContent, svtools::VolumeInfo &rVolumeInfo)
static SvImageId GetFolderImageId_Impl(const OUString &rURL)
static OUString GetImageNameFromList_Impl(SvImageId nImageId, vcl::ImageType eImageType)
static TranslateId GetDescriptionId_Impl(const OUString &rExtension, bool &rbShowExt)
static SvImageId GetImageId_Impl(const OUString &rExtension)
static Image GetImageFromList_Impl(SvImageId nImageId, vcl::ImageType eImageType)
static TranslateId GetFolderDescriptionId_Impl(const OUString &rURL)
static OUString GetImageExtensionByFactory_Impl(const OUString &rURL)
SvtExtensionResIdMapping_Impl const ExtensionMap_Impl[]
static bool isFolder(OUString const &url, css::uno::Reference< css::ucb::XCommandEnvironment > const &env)
static sal_Int32 GetIndexOfExtension_Impl(const OUString &rExtension)
const css::uno::Reference< css::xml::crypto::XSecurityEnvironment > & env
Reference< XComponentContext > getProcessComponentContext()
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
std::basic_string_view< charT, traits > getToken(std::basic_string_view< charT, traits > sv, charT delimiter, std::size_t &position)
UNOTOOLS_DLLPUBLIC css::uno::Reference< css::ucb::XCommandEnvironment > getDefaultCommandEnvironment()
#define STR_DESCRIPTION_SCHART_DOC
#define STR_DESCRIPTION_SMATH_DOC
#define STR_DESCRIPTION_SWRITER_DOC
#define STR_DESCRIPTION_SCALC_DOC
#define STR_DESCRIPTION_SDRAW_DOC
#define STR_DESCRIPTION_SIMPRESS_DOC
OUString SvtResId(TranslateId aId)
#define URL_PREFIX_PRIV_SOFFICE