1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_UNOTOOLS_MODULEOPTIONS_HXX
21 #define INCLUDED_UNOTOOLS_MODULEOPTIONS_HXX
23 #include <unotools/unotoolsdllapi.h>
24 #include <com/sun/star/uno/Sequence.hxx>
25 #include <rtl/ustring.hxx>
26 #include <sal/types.h>
27 #include <unotools/options.hxx>
30 namespace osl
{ class Mutex
; }
31 namespace com::sun::star::frame
{ class XModel
; }
32 namespace com::sun::star::beans
{ struct PropertyValue
; }
34 /*-************************************************************************************************************
35 @short forward declaration to our private date container implementation
36 @descr We use these class as internal member to support small memory requirements.
37 You can create the container if it is necessary. The class which use these mechanism
38 is faster and smaller then a complete implementation!
39 *//*-*************************************************************************************************************/
40 class SvtModuleOptions_Impl
;
42 /*-************************************************************************************************************
43 @short collect information about installation state of modules
44 @descr Use these class to get installation state of different office modules like writer, calc etc
45 Further you can ask for additional information; e.g. name of standard template file, which
46 should be used by corresponding module; or short/long name of these module factory.
47 @devstatus ready to use
49 *//*-*************************************************************************************************************/
50 class SAL_WARN_UNUSED UNOTOOLS_DLLPUBLIC SvtModuleOptions final
: public utl::detail::Options
70 If you change these enum ... don't forget to change reading/writing and order of configuration values too!
71 See "SvtModuleOptions_Impl::impl_GetSetNames()" and his ctor for further information.
92 virtual ~SvtModuleOptions() override
;
94 bool IsModuleInstalled ( EModule eModule
) const;
95 OUString
GetModuleName ( EModule eModule
) const;
96 OUString
GetFactoryName ( EFactory eFactory
) const;
97 OUString
GetFactoryStandardTemplate( EFactory eFactory
) const;
98 OUString
GetFactoryEmptyDocumentURL( EFactory eFactory
) const;
99 OUString
GetFactoryDefaultFilter ( EFactory eFactory
) const;
100 bool IsDefaultFilterReadonly ( EFactory eFactory
) const;
101 sal_Int32
GetFactoryIcon ( EFactory eFactory
) const;
102 static bool ClassifyFactoryByName ( const OUString
& sName
,
103 EFactory
& eFactory
);
104 void SetFactoryStandardTemplate( EFactory eFactory
,
105 const OUString
& sTemplate
);
106 void SetFactoryDefaultFilter ( EFactory eFactory
,
107 const OUString
& sFilter
);
109 /** @short return the corresponding application ID for the given
110 document service name.
112 static EFactory
ClassifyFactoryByServiceName(const OUString
& sName
);
114 /** @short return the corresponding application ID for the given
117 static EFactory
ClassifyFactoryByShortName(const OUString
& sName
);
119 /** @short return the corresponding application ID for the given properties.
121 @descr Because this search base on filters currently (till we have a better solution)
122 a result is not guaranteed every time. May a filter does not exists for the specified
123 content (but a FrameLoader which is not bound to any application!) ... or
124 the given properties describe a stream (and we make no deep detection inside here!).
126 @attention The module BASIC can't be detected here. Because it does not
127 has an own URL schema.
132 @param lMediaDescriptor
133 additional information
135 @return A suitable enum value. See EFactory above.
137 static EFactory
ClassifyFactoryByURL(const OUString
& sURL
,
138 const css::uno::Sequence
< css::beans::PropertyValue
>& lMediaDescriptor
);
140 /** @short return the corresponding application ID for the given properties.
142 @descr Here we try to use the list of supported service names of the given model
143 to find out the right application module.
145 @attention The module BASIC can't be detected here. Because it does not
146 support any model/ctrl/view paradigm.
151 @return A suitable enum value. See EFactory above.
153 static EFactory
ClassifyFactoryByModel(const css::uno::Reference
< css::frame::XModel
>& xModel
);
155 static OUString
GetFactoryShortName(EFactory eFactory
);
157 OUString
GetDefaultModuleName() const;
159 bool IsMath () const;
160 bool IsChart () const;
161 bool IsCalc () const;
162 bool IsDraw () const;
163 bool IsWriter () const;
164 bool IsImpress () const;
165 static bool IsBasicIDE () { return true; }
166 bool IsDataBase () const;
168 css::uno::Sequence
< OUString
> GetAllServiceNames();
171 UNOTOOLS_DLLPRIVATE
static ::osl::Mutex
& impl_GetOwnStaticMutex();
173 std::shared_ptr
<SvtModuleOptions_Impl
> m_pImpl
;
175 }; // class SvtModuleOptions
177 #endif // INCLUDED_UNOTOOLS_MODULEOPTIONS_HXX
179 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */