LibreOffice Module unotools (master) 1
options.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_UNOTOOLS_OPTIONS_HXX
21#define INCLUDED_UNOTOOLS_OPTIONS_HXX
22
23#include <sal/config.h>
26#include <vector>
27#include <memory>
28
29// bits for broadcasting hints of changes in ConfigurationListener::ConfigurationChanged, may be combined
31 NONE = 0x0000,
32 Locale = 0x0001,
33 Currency = 0x0002,
34 UiLocale = 0x0004,
35 DecSep = 0x0008,
36 DatePatterns = 0x0010,
37 IgnoreLang = 0x0020,
38 CtlSettingsChanged = 0x2000,
39};
40namespace o3tl {
41 template<> struct typed_flags<ConfigurationHints> : is_typed_flags<ConfigurationHints, 0x203f> {};
42}
43
44/*
45 The class utl::detail::Options provides a kind of multiplexer. It implements a ConfigurationListener
46 that is usually registered at a ConfigItem class. At the same time it implements a ConfigurationBroadcaster
47 that allows further ("external") listeners to register.
48 Once the class deriving from Options is notified about
49 configuration changes by the ConfigItem if its content has been changed by calling some of its methods,
50 a call of the Options::NotifyListeners() method will send out notifications to all external listeners.
51*/
52
53namespace utl {
54
55 class ConfigurationBroadcaster;
56
57 // interface for configuration listener
59 {
60 public:
61 virtual ~ConfigurationListener();
62
64 };
65 typedef ::std::vector< ConfigurationListener* > IMPL_ConfigurationListenerList;
66
67 // complete broadcasting implementation
69 {
70 std::unique_ptr<IMPL_ConfigurationListenerList> mpList;
71 sal_Int32 m_nBroadcastBlocked; // broadcast only if this is 0
73
74 public:
75 void AddListener( utl::ConfigurationListener* pListener );
76 void RemoveListener( utl::ConfigurationListener const * pListener );
77
78 // notify listeners; nHint is an implementation detail of the particular class deriving from ConfigurationBroadcaster
79 void NotifyListeners( ConfigurationHints nHint );
83 ConfigurationBroadcaster & operator =(ConfigurationBroadcaster const & other);
84 virtual void BlockBroadcasts( bool bBlock );
85 };
86
87namespace detail {
88
89// A base class for the various option classes supported by
90// unotools/source/config/itemholderbase.hxx (which must be public, as it is
91// shared between unotools, svl and svt)
92// It also provides an implementation for a Configuration Listener and inherits a broadcaster implementation
93
96{
97public:
99
100 virtual ~Options() override = 0;
101
102private:
103 Options(Options const &) = delete;
104 Options& operator =(Options const &) = delete;
105
106protected:
107 virtual void ConfigurationChanged( ::utl::ConfigurationBroadcaster* p, ConfigurationHints nHint ) override;
108};
109
110} }
111
112#endif
113
114/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
std::unique_ptr< IMPL_ConfigurationListenerList > mpList
Definition: options.hxx:70
ConfigurationHints m_nBlockedHint
Definition: options.hxx:72
virtual void ConfigurationChanged(ConfigurationBroadcaster *p, ConfigurationHints nHint)=0
Options(Options const &)=delete
virtual ~Options() override=0
NONE
::std::vector< ConfigurationListener * > IMPL_ConfigurationListenerList
Definition: options.hxx:65
ConfigurationHints
Definition: options.hxx:30
#define SAL_WARN_UNUSED
#define UNOTOOLS_DLLPUBLIC