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 
32 namespace sdext::presenter {
33 
49 {
50 public:
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 
169 private:
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: */
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.
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...
css::uno::Reference< css::uno::XInterface > mxRoot
void CommitChanges()
Write any changes that have been made back to the configuration.
::std::function< bool(const OUString &, const css::uno::Reference< css::beans::XPropertySet > &)> Predicate
static css::uno::Reference< css::beans::XPropertySet > GetNodeProperties(const css::uno::Reference< css::container::XHierarchicalNameAccess > &rxNode, const OUString &rsPathToNode)
::std::function< void(const OUString &, const css::uno::Reference< css::beans::XPropertySet > &) > PropertySetProcessor
This class gives access to the configuration.
bool SetProperty(const OUString &rsPropertyName, const css::uno::Any &rValue)
Modify the property child of the currently focused node.
bool IsValid() const
Return when opening the configuration (via creating a new PresenterConfigurationAccess object)...
static css::uno::Any Find(const css::uno::Reference< css::container::XNameAccess > &rxContainer, const Predicate &rPredicate)
css::uno::Any GetConfigurationNode(const OUString &rsPathToNode)
Return a configuration node below the root of the called object.
float u
static bool IsStringPropertyEqual(std::u16string_view rsValue, const OUString &rsPropertyName, const css::uno::Reference< css::beans::XPropertySet > &rxNode)
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.
::std::function< void(const ::std::vector< css::uno::Any > &) > ItemProcessor
bool GoToChild(const OUString &rsPathToNode)
Move the focused node to the (possibly indirect) child specified by the given path.
typedef void(CALLTYPE *GetFuncDataPtr)(sal_uInt16 &nNo