16#ifndef SHARED_EXTENSIONFACTORY_H
17#define SHARED_EXTENSIONFACTORY_H
19#include <QtDesigner/default_extensionfactory.h>
20#include <QtDesigner/qextensionmanager.h>
24namespace qdesigner_internal {
27template <
class ExtensionInterface,
class Object,
class Extension>
28class ExtensionFactory:
public QExtensionFactory
31 explicit ExtensionFactory(
const QString &iid, QExtensionManager *parent =
nullptr);
34 static void registerExtension(QExtensionManager *mgr,
const QString &iid);
37 QObject *createExtension(QObject *qObject,
const QString &iid, QObject *parent)
const override;
42 virtual Object *checkObject(QObject *qObject)
const;
47template <
class ExtensionInterface,
class Object,
class Extension>
48ExtensionFactory<ExtensionInterface, Object, Extension>::ExtensionFactory(
const QString &iid, QExtensionManager *parent) :
49 QExtensionFactory(parent),
54template <
class ExtensionInterface,
class Object,
class Extension>
55Object *ExtensionFactory<ExtensionInterface, Object, Extension>::checkObject(QObject *qObject)
const
57 return qobject_cast<Object*>(qObject);
60template <
class ExtensionInterface,
class Object,
class Extension>
61QObject *ExtensionFactory<ExtensionInterface, Object, Extension>::createExtension(QObject *qObject,
const QString &iid, QObject *parent)
const
66 Object *object = checkObject(qObject);
70 return new Extension(object, parent);
73template <
class ExtensionInterface,
class Object,
class Extension>
74void ExtensionFactory<ExtensionInterface, Object, Extension>::registerExtension(QExtensionManager *mgr,
const QString &iid)
76 auto *factory =
new ExtensionFactory(iid, mgr);
77 mgr->registerExtensions(factory, iid);
int actionIndexAt(const Widget *w, const QPoint &pos, Qt::Orientation orientation)
virtual ~QDesignerActionProviderExtension()=default
virtual QRect actionGeometry(QAction *action) const =0
virtual QAction * actionAt(const QPoint &pos) const =0
virtual void adjustIndicator(const QPoint &pos)=0
Combined button and popup list for selecting options.
Auxiliary methods to store/retrieve settings.
static QRect verticalIndicatorRect(const QRect &rect)
static QRect horizontalIndicatorRect(const QRect &rect, Qt::LayoutDirection layoutDirection)