1/* This file is part of the KDE project
2 Copyright 2008 Stefan Nikolaus <stefan.nikolaus@kdemail.net>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20#ifndef CALLIGRA_SHEETS_FUNCTION_MODULE_REGISTRY
21#define CALLIGRA_SHEETS_FUNCTION_MODULE_REGISTRY
22
23#include <QObject>
24
25#include <KoGenericRegistry.h>
26
27#include "calligra_sheets_export.h"
28#include "FunctionModule.h"
29
30namespace Calligra
31{
32namespace Sheets
33{
34
35/**
36 * \ingroup Plugin
37 * \ingroup Value
38 * Registry for function modules.
39 */
40class CALLIGRA_SHEETS_ODF_EXPORT FunctionModuleRegistry : public KoGenericRegistry<FunctionModule*>
41{
42public:
43 /**
44 * Creates the registry and loads the function modules.
45 */
46 FunctionModuleRegistry();
47 ~FunctionModuleRegistry();
48
49 /**
50 * \return the singleton instance
51 */
52 static FunctionModuleRegistry* instance();
53
54 /**
55 * Loads the function modules.
56 * Depending on their activation state read from the config,
57 * the modules are added or removed from the registry.
58 */
59 void loadFunctionModules();
60
61 /**
62 * Registers the functions from all modules in the function repository
63 * and adds their descriptions.
64 */
65 void registerFunctions();
66
67private:
68 class Private;
69 Private * const d;
70};
71
72} // namespace Sheets
73} // namespace Calligra
74
75#endif // CALLIGRA_SHEETS_FUNCTION_MODULE_REGISTRY
76