Albert
Loading...
Searching...
No Matches
plugininstance.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2024 Manuel Schneider
2// SPDX-License-Identifier: MIT
3
4#pragma once
5#include <QString>
6#include <albert/config.h>
7#include <albert/export.h>
8#include <filesystem>
9#include <memory>
10class QSettings;
11class QWidget;
12
13namespace albert
14{
15class Extension;
16class PluginLoader;
17
23class ALBERT_EXPORT PluginInstance
24{
25public:
26
29 virtual QWidget *buildConfigWidget();
30
34 virtual std::vector<albert::Extension*> extensions();
35
36public:
37
41 [[nodiscard]] const PluginLoader &loader() const;
42
46 [[nodiscard]] std::filesystem::path cacheLocation() const;
47
51 [[nodiscard]] std::filesystem::path configLocation() const;
52
56 [[nodiscard]] std::filesystem::path dataLocation() const;
57
62 [[nodiscard]] std::unique_ptr<QSettings> settings() const;
63
69 [[nodiscard]] std::unique_ptr<QSettings> state() const;
70
71protected:
72
74 virtual ~PluginInstance();
75
76private:
77
78 class Private;
79 std::unique_ptr<Private> d;
80
81};
82
83}
84
96#define ALBERT_PLUGIN Q_OBJECT Q_PLUGIN_METADATA(IID ALBERT_PLUGIN_IID FILE "metadata.json")
Abstract plugin instance class.
Definition plugininstance.h:24
const PluginLoader & loader() const
The PluginLoader of this instance.
std::unique_ptr< QSettings > state() const
Persistent plugin state.
std::filesystem::path dataLocation() const
The recommended data location.
std::unique_ptr< QSettings > settings() const
Persistent plugin settings.
std::filesystem::path cacheLocation() const
The recommended cache location.
virtual QWidget * buildConfigWidget()
The widget used to configure the plugin in the settings.
std::filesystem::path configLocation() const
The recommended config location.
virtual std::vector< albert::Extension * > extensions()
The extensions provided by this plugin.
Plugin loader interface class.
Definition pluginloader.h:17
Definition action.h:10