4#include "albert/config.h"
8#include <QStringLiteral>
10#define EXPAND_STRINGIZE(s) STRINGIZE(s)
11#define STRINGIZE(s) #s
26#define ALBERT_PLUGIN_PROPERTY_NONTRIVIAL(type, name, defaultValue) \
27public: static const type name##_default{defaultValue}; \
28protected: void store_##name() { settings()->setValue(EXPAND_STRINGIZE(name), name()); } \
29protected: void restore_##name() { set_##name##_(settings()->value(EXPAND_STRINGIZE(name), name##_default).value<type>()); } \
30public: void reset_##name() { set_##name##_(name##_default); settings()->remove(EXPAND_STRINGIZE(name)); } \
31Q_SIGNAL void name##Changed(); \
32Q_PROPERTY(type name READ name WRITE set_##name RESET reset_##name NOTIFY name##Changed USER true) \
33public: void set_##name(type val) { if (val != name()){ set_##name##_(val); store_##name(); emit name##Changed(); } } \
34private: void set_##name##_(type); \
35public: type name() const; \
46#define ALBERT_PLUGIN_PROPERTY(type, name, defaultValue) \
47public: static const type name##_default{defaultValue}; \
48protected: void store_##name() { settings()->setValue(EXPAND_STRINGIZE(name), name()); } \
49protected: void restore_##name() { name##_ = settings()->value(EXPAND_STRINGIZE(name), name##_default).value<type>(); } \
50public: void reset_##name() { name##_ = name##_default; settings()->remove(EXPAND_STRINGIZE(name)); } \
51Q_SIGNAL void name##Changed(); \
52Q_PROPERTY(type name READ name WRITE set_##name RESET reset_##name NOTIFY name##Changed USER true) \
53private: type name##_{defaultValue}; \
54public: type name() const { return name##_; } \
55public: void set_##name(type val) { if (val != name()){ name##_=val; store_##name(); emit name##Changed(); } } \
66#define ALBERT_PLUGIN_PROPERTY_CONNECT(object, name, widget, widget_setter, widget_signal) \
67widget->widget_setter(object->name()); \
68connect(widget, &std::remove_pointer<decltype(widget)>::type::widget_signal, \
69 object, &std::remove_pointer<decltype(object)>::type::set_##name); \
70connect(object, &std::remove_pointer<decltype(object)>::type::name##Changed, \
71 widget, [o=object,w=widget](){ w->widget_setter(o->name()); });
85#define ALBERT_PLUGIN Q_PLUGIN_METADATA(IID ALBERT_PLUGIN_IID FILE "metadata.json")
126 QString
id()
const override;
The common extension pool.
Definition: extensionregistry.h:22
The extension interface class.
Definition: extension.h:18
Abstract plugin instance class.
Definition: plugininstance.h:22
Convenience base class for extension plugins.
Definition: plugin.h:123
QString id() const override
Override returning PluginInstance::id.
QString description() const override
Override returning PluginInstance::description.
void finalize(ExtensionRegistry &) override
Override deregistering itself as extension.
void initialize(ExtensionRegistry &, std::map< QString, PluginInstance * >) override
Override registering itself as extension.
QString name() const override
Override returning PluginInstance::name.
Base class for native plugins.
Definition: plugin.h:110