Fcitx
addoninfo.h
1 /*
2  * SPDX-FileCopyrightText: 2015-2015 CSSlayer <wengxt@gmail.com>
3  *
4  * SPDX-License-Identifier: LGPL-2.1-or-later
5  *
6  */
7 #ifndef _FCITX_ADDON_H_
8 #define _FCITX_ADDON_H_
9 
10 #include <memory>
11 #include <string>
12 #include <tuple>
13 #include <vector>
14 #include <fcitx-config/enum.h>
15 #include <fcitx-config/rawconfig.h>
16 #include <fcitx-utils/i18nstring.h>
17 #include <fcitx-utils/macros.h>
18 #include <fcitx-utils/semver.h>
19 #include <fcitx/fcitxcore_export.h>
20 
21 namespace fcitx {
22 
23 class AddonInfoPrivate;
24 
25 FCITX_CONFIG_ENUM(AddonCategory, InputMethod, Frontend, Loader, Module, UI)
26 
27 enum class OverrideEnabled { NotSet, Enabled, Disabled };
28 
29 FCITX_CONFIG_ENUM(UIType, PhyscialKeyboard, OnScreenKeyboard);
30 
31 class FCITXCORE_EXPORT AddonInfo {
32 public:
33  AddonInfo(const std::string &name);
34  virtual ~AddonInfo();
35 
36  bool isValid() const;
37  const std::string &uniqueName() const;
38  const I18NString &name() const;
39  const I18NString &comment() const;
40  const std::string &type() const;
41  AddonCategory category() const;
42  const std::string &library() const;
43  const std::vector<std::string> &dependencies() const;
44  const std::vector<std::string> &optionalDependencies() const;
45  const std::vector<std::tuple<std::string, SemanticVersion>> &
46  dependenciesWithVersion() const;
47  const std::vector<std::tuple<std::string, SemanticVersion>> &
48  optionalDependenciesWithVersion() const;
49  bool onDemand() const;
50  int uiPriority() const;
51  UIType uiType() const;
52  bool isEnabled() const;
53  bool isDefaultEnabled() const;
54  void setOverrideEnabled(OverrideEnabled overrideEnabled);
55  bool isConfigurable() const;
56  const SemanticVersion &version() const;
57 
58  void load(const RawConfig &config);
59 
60 private:
61  std::unique_ptr<AddonInfoPrivate> d_ptr;
62  FCITX_DECLARE_PRIVATE(AddonInfo);
63 };
64 } // namespace fcitx
65 
66 #endif // _FCITX_ADDON_H_
Definition: action.cpp:17
Provide a Semantic version 2.0 implementation.
Definition: semver.h:46