Akonadi::AgentConfigurationBase Class
class Akonadi::AgentConfigurationBaseBase class for configuration UI for Akonadi agents. More...
| Header: | #include <Akonadi/AgentConfigurationBase> |
| CMake: | find_package(KPim6 REQUIRED COMPONENTS AkonadiCore)target_link_libraries(mytarget PRIVATE KPim6::AkonadiCore) |
| Inherits: | QObject |
Public Functions
| AgentConfigurationBase(const KSharedConfigPtr &config, QWidget *parentWidget, const QVariantList &args) | |
| virtual | ~AgentConfigurationBase() override |
| virtual void | load() |
| Akonadi::AgentConfigurationBase::ActivitySettings | restoreActivitiesSettings() const |
| virtual bool | save() const |
| void | saveActivitiesSettings(const Akonadi::AgentConfigurationBase::ActivitySettings &activities) const |
Signals
| void | enableOkButton(bool enabled) |
Protected Functions
| KSharedConfigPtr | config() const |
| QString | identifier() const |
| QWidget * | parentWidget() const |
Detailed Description
Each agent that has a graphical configuration should subclass this class and create its configuration UI there.
The subclass must reimplement load() and save() virtual methods which are called automatically. The load() method is called on start to initialize widgets (thus subclasses don't need to call it themselves) or when user clicks a "Reset" button. The save() method is called whenever user decides to save changes.
Since each Akonadi agent instance has its own configuration file whose location and name is opaque to the implementation, config() method can be used to get access to the current configuration object.
The widget will not run in the same process as the Akonadi agent, thus all communication with the resource (if needed) should be done over DBus. The identifier of the instance currently being configured is accessible from the identifier() method.
There is no need to signal back to the resource when configuration is changed. When save() is called and the dialog is destroyed, Akonadi will automatically call AgentBase::reconfigure() in the respective Akonadi agent instance.
It is guaranteed that only a single instance of the configuration dialog for given agent will be opened at the same time.
Subclasses of ConfigurationBase must be registered as Akonadi plugins using AKONADI_AGENTCONFIG_FACTORY macro.
The metadata JSON file then must contain the following values:
{
"X-Akonadi-PluginType": "AgentConfig",
"X-Akonadi-Library": "exampleresourceconfig",
"X-Akonadi-AgentConfig-Type": "akonadi_example_resource"
}
The X-Akonadi-Library value must match the name of the plugin binary without the (optional) "lib" prefix and file extension. The X-Akonadi-AgentConfig-Type value must match the name of the X-Akonadi-Identifier value from the agent's desktop file.
The plugin binary should be installed into pim<version>/akonadi/config subdirectory in one of the paths search by QCoreApplication::libraryPaths().
Member Function Documentation
[explicit] AgentConfigurationBase::AgentConfigurationBase(const KSharedConfigPtr &config, QWidget *parentWidget, const QVariantList &args)
Creates a new AgentConfigurationBase objects.
The parentWidget should be used as a parent widget for the configuration widgets.
Subclasses must provide a constructor with this exact signature.
[override virtual noexcept] AgentConfigurationBase::~AgentConfigurationBase()
Destructor.
[protected] KSharedConfigPtr AgentConfigurationBase::config() const
Returns the KConfig object belonging to the current Akonadi agent instance. Returns A KSharedConfigPtr to the agent's configuration object.
[signal] void AgentConfigurationBase::enableOkButton(bool enabled)
Emitted to control the enabled state of the OK button in the configuration dialog. enabled True to enable the OK button, false to disable it.
[protected] QString AgentConfigurationBase::identifier() const
Returns the identifier of the Akonadi agent instance currently being configured. Returns The agent instance identifier as a string.
[virtual] void AgentConfigurationBase::load()
Reimplement to load settings from the configuration object into widgets.
Warning: Always call the base class implementation at the beginning of your overridden method!
[protected] QWidget *AgentConfigurationBase::parentWidget() const
Returns the parent widget for the configuration UI. Returns The parent widget passed during construction.
Akonadi::AgentConfigurationBase::ActivitySettings AgentConfigurationBase::restoreActivitiesSettings() const
restoreActivitiesSettings Returns activities settings
[virtual] bool AgentConfigurationBase::save() const
Reimplement to save new settings into the configuration object.
Return true if the configuration has been successfully saved and should be applied to the agent, return false otherwise.
Warning: Always remember call the base class implementation at the end of your overridden method!
void AgentConfigurationBase::saveActivitiesSettings(const Akonadi::AgentConfigurationBase::ActivitySettings &activities) const
saveActivitiesSettings activities save activities settings