rssguard/src/librssguard/services/abstract/serviceentrypoint.h
Martin Rotter 6713925658 greader
2024-03-21 09:53:01 +01:00

64 lines
1.9 KiB
C++

// For license of this file, see <project-root-folder>/LICENSE.md.
#ifndef SERVICE_H
#define SERVICE_H
#include <QDialog>
#include <QIcon>
#include <QString>
class ServiceRoot;
class FeedsModel;
// TOP LEVEL class which provides basic information about the "service"
class RSSGUARD_DLLSPEC ServiceEntryPoint {
public:
virtual ~ServiceEntryPoint() = default;
// Creates new service root item, which is ready to be added
// into the model. This method can for example display
// some kind of first-time configuration dialog inside itself
// before returning the root item.
// Returns nullptr if initialization of new root cannot be done.
virtual ServiceRoot* createNewRoot() const = 0;
// Performs initialization of all service accounts created using this entry
// point from persistent DB.
// Returns list of root nodes which will be afterwards added
// to the global feed model.
virtual QList<ServiceRoot*> initializeSubtree() const = 0;
// Human readable service name, for example "TT-RSS".
virtual QString name() const = 0;
// Some arbitrary string.
// NOTE: Keep in sync with ServiceRoot::code().
virtual QString code() const = 0;
// Human readable service description, for example "Services which offers TT-RSS integration.".
virtual QString description() const = 0;
// Author of the service.
virtual QString author() const = 0;
// Icon of the service.
virtual QIcon icon() const = 0;
bool isDynamicallyLoaded() const;
void setIsDynamicallyLoaded(bool dynamic);
private:
bool m_isDynamicallyLoaded = false;
};
inline bool ServiceEntryPoint::isDynamicallyLoaded() const {
return m_isDynamicallyLoaded;
}
inline void ServiceEntryPoint::setIsDynamicallyLoaded(bool dynamic) {
m_isDynamicallyLoaded = dynamic;
}
Q_DECLARE_INTERFACE(ServiceEntryPoint, "io.github.martinrotter.rssguard.serviceentrypoint")
#endif // SERVICE_H