22#include <com/sun/star/beans/NamedValue.hpp>
23#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
24#include <com/sun/star/configuration/theDefaultProvider.hpp>
25#include <com/sun/star/lang/XMultiServiceFactory.hpp>
26#include <com/sun/star/uno/Any.hxx>
27#include <com/sun/star/uno/Reference.hxx>
28#include <com/sun/star/uno/Sequence.hxx>
30#include <officecfg/Setup.hxx>
31#include <rtl/ustring.hxx>
39class RegisterConfigItemHelper {
41 RegisterConfigItemHelper(
45 manager.registerConfigItem(item_);
48 ~RegisterConfigItemHelper() {
49 if (item_ !=
nullptr) {
54 void keep() { item_ =
nullptr; }
60 RegisterConfigItemHelper(
const RegisterConfigItemHelper&) =
delete;
61 RegisterConfigItemHelper& operator=(
const RegisterConfigItemHelper&) =
delete;
64css::uno::Reference< css::lang::XMultiServiceFactory >
65getConfigurationProvider() {
108 getConfigManager().doStoreConfigItems();
113 return theConfigManager;
116css::uno::Reference< css::container::XHierarchicalNameAccess >
118 css::uno::Sequence< css::uno::Any >
args{ css::uno::Any(css::beans::NamedValue(
123 args.getArray()[1] <<= css::beans::NamedValue(
"locale", css::uno::Any(OUString(
"*")));
125 return css::uno::Reference< css::container::XHierarchicalNameAccess >(
126 getConfigurationProvider()->createInstanceWithArguments(
127 "com.sun.star.configuration.ConfigurationUpdateAccess",
129 css::uno::UNO_QUERY_THROW);
132css::uno::Reference< css::container::XHierarchicalNameAccess >
134 css::uno::Sequence< css::uno::Any >
args{ css::uno::Any(css::beans::NamedValue(
136 css::uno::Any(OUString::Concat(
u"/org.openoffice.") + rSubTreeName))) };
137 return css::uno::Reference< css::container::XHierarchicalNameAccess >(
138 getConfigurationProvider()->createInstanceWithArguments(
139 "com.sun.star.configuration.ConfigurationUpdateAccess",
141 css::uno::UNO_QUERY_THROW);
147 SAL_WARN_IF(!items_.empty(),
"unotools.config",
"ConfigManager not empty");
150css::uno::Reference< css::container::XHierarchicalNameAccess >
152 RegisterConfigItemHelper reg(*
this, item);
153 css::uno::Reference< css::container::XHierarchicalNameAccess > tree(
160 items_.erase(std::remove(items_.begin(), items_.end(), &item), items_.end());
164 assert(item !=
nullptr);
165 items_.push_back(item);
169 for (
auto const& item : items_)
180#if !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
static void disable_lt_tag_parse()
const OUString & GetSubTreeName() const
ConfigItemMode GetMode() const
SAL_DLLPRIVATE css::uno::Reference< css::container::XHierarchicalNameAccess > addConfigItem(utl::ConfigItem &item)
void doStoreConfigItems()
static OUString getWorkLocale()
SAL_DLLPRIVATE void removeConfigItem(utl::ConfigItem &item)
static OUString getProductVersion()
static void storeConfigItems()
SAL_DLLPRIVATE ConfigManager()
static OUString getUILocale()
static SAL_DLLPRIVATE css::uno::Reference< css::container::XHierarchicalNameAccess > acquireTree(utl::ConfigItem const &item)
static OUString getAboutBoxProductVersionSuffix()
static OUString getProductExtension()
static OUString getAboutBoxProductVersion()
static OUString getVendor()
SAL_DLLPRIVATE void registerConfigItem(utl::ConfigItem *item)
SAL_DLLPRIVATE ~ConfigManager()
static OUString getDefaultCurrency()
static OUString getProductName()
static SAL_DLLPRIVATE ConfigManager & getConfigManager()
static void EnableFuzzing()
rtl::Reference< ParseManager > manager
rtl::Reference< Manager > manager_
#define SAL_WARN_IF(condition, area, stream)
OUString get(TranslateId sContextAndId, const std::locale &loc)
Reference< XComponentContext > getProcessComponentContext()