LibreOffice Module sdext (master) 1
PresenterConfigurationAccess.hxx
Go to the documentation of this file.
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#ifndef INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERCONFIGURATIONACCESS_HXX
21#define INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERCONFIGURATIONACCESS_HXX
22
23#include <rtl/ustring.hxx>
24#include <com/sun/star/beans/XPropertySet.hpp>
25#include <com/sun/star/container/XNameAccess.hpp>
26#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
27#include <com/sun/star/uno/XComponentContext.hpp>
28
29#include <vector>
30#include <functional>
31
32namespace sdext::presenter {
33
49{
50public:
52 typedef ::std::function<bool (
53 const OUString&,
54 const css::uno::Reference<css::beans::XPropertySet>&)> Predicate;
55 static constexpr OUStringLiteral msPresenterScreenRootName =
56 u"/org.openoffice.Office.PresenterScreen/";
57
68 const css::uno::Reference<css::uno::XComponentContext>& rxContext,
69 const OUString& rsRootName,
70 WriteMode eMode);
71
73
78 css::uno::Any GetConfigurationNode (
79 const OUString& rsPathToNode);
80
86 bool IsValid() const;
87
90 bool GoToChild (const OUString& rsPathToNode);
91
94 bool GoToChild (const Predicate& rPredicate);
95
100 bool SetProperty (const OUString& rsPropertyName, const css::uno::Any& rValue);
101
112 static css::uno::Any GetConfigurationNode (
113 const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
114 const OUString& rsPathToNode);
115
116 static css::uno::Reference<css::beans::XPropertySet> GetNodeProperties (
117 const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
118 const OUString& rsPathToNode);
119
124 void CommitChanges();
125
126 typedef ::std::function<void (
127 const ::std::vector<css::uno::Any>&) > ItemProcessor;
128 typedef ::std::function<void (
129 const OUString&,
130 const css::uno::Reference<css::beans::XPropertySet>&) > PropertySetProcessor;
131
144 static void ForAll (
145 const css::uno::Reference<css::container::XNameAccess>& rxContainer,
146 const ::std::vector<OUString>& rArguments,
147 const ItemProcessor& rProcessor);
148 static void ForAll (
149 const css::uno::Reference<css::container::XNameAccess>& rxContainer,
150 const PropertySetProcessor& rProcessor);
151
152 static css::uno::Any Find (
153 const css::uno::Reference<css::container::XNameAccess>& rxContainer,
154 const Predicate& rPredicate);
155
156 static bool IsStringPropertyEqual (
157 std::u16string_view rsValue,
158 const OUString& rsPropertyName,
159 const css::uno::Reference<css::beans::XPropertySet>& rxNode);
160
165 static css::uno::Any GetProperty (
166 const css::uno::Reference<css::beans::XPropertySet>& rxProperties,
167 const OUString& rsKey);
168
169private:
170 css::uno::Reference<css::uno::XInterface> mxRoot;
171 css::uno::Any maNode;
172};
173
174} // end of namespace sdext::tools
175
176#endif
177
178/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
This class gives access to the configuration.
bool IsValid() const
Return <TRUE> when opening the configuration (via creating a new PresenterConfigurationAccess object)...
css::uno::Reference< css::uno::XInterface > mxRoot
bool SetProperty(const OUString &rsPropertyName, const css::uno::Any &rValue)
Modify the property child of the currently focused node.
PresenterConfigurationAccess(const css::uno::Reference< css::uno::XComponentContext > &rxContext, const OUString &rsRootName, WriteMode eMode)
Create a new object to access the configuration entries below the given root.
bool GoToChild(const OUString &rsPathToNode)
Move the focused node to the (possibly indirect) child specified by the given path.
css::uno::Any GetConfigurationNode(const OUString &rsPathToNode)
Return a configuration node below the root of the called object.
static css::uno::Any GetProperty(const css::uno::Reference< css::beans::XPropertySet > &rxProperties, const OUString &rsKey)
This method wraps a call to getPropertyValue() and returns an empty Any instead of throwing an except...
static void ForAll(const css::uno::Reference< css::container::XNameAccess > &rxContainer, const ::std::vector< OUString > &rArguments, const ItemProcessor &rProcessor)
Execute a functor for all elements of the given container.
void CommitChanges()
Write any changes that have been made back to the configuration.
static bool IsStringPropertyEqual(std::u16string_view rsValue, const OUString &rsPropertyName, const css::uno::Reference< css::beans::XPropertySet > &rxNode)
::std::function< void(const OUString &, const css::uno::Reference< css::beans::XPropertySet > &) > PropertySetProcessor
static void ForAll(const css::uno::Reference< css::container::XNameAccess > &rxContainer, const PropertySetProcessor &rProcessor)
static css::uno::Reference< css::beans::XPropertySet > GetNodeProperties(const css::uno::Reference< css::container::XHierarchicalNameAccess > &rxNode, const OUString &rsPathToNode)
static css::uno::Any Find(const css::uno::Reference< css::container::XNameAccess > &rxContainer, const Predicate &rPredicate)
::std::function< bool(const OUString &, const css::uno::Reference< css::beans::XPropertySet > &)> Predicate
::std::function< void(const ::std::vector< css::uno::Any > &) > ItemProcessor
float u