15#ifndef SHARED_EXTENSIONFACTORY_H
16#define SHARED_EXTENSIONFACTORY_H
18#include <QtDesigner/default_extensionfactory.h>
19#include <QtDesigner/qextensionmanager.h>
23namespace qdesigner_internal {
26template <
class ExtensionInterface,
class Object,
class Extension>
27class ExtensionFactory:
public QExtensionFactory
30 explicit ExtensionFactory(
const QString &iid, QExtensionManager *parent =
nullptr);
33 static void registerExtension(QExtensionManager *mgr,
const QString &iid);
36 QObject *createExtension(QObject *qObject,
const QString &iid, QObject *parent)
const override;
41 virtual Object *checkObject(QObject *qObject)
const;
46template <
class ExtensionInterface,
class Object,
class Extension>
47ExtensionFactory<ExtensionInterface, Object, Extension>::ExtensionFactory(
const QString &iid, QExtensionManager *parent) :
48 QExtensionFactory(parent),
53template <
class ExtensionInterface,
class Object,
class Extension>
54Object *ExtensionFactory<ExtensionInterface, Object, Extension>::checkObject(QObject *qObject)
const
56 return qobject_cast<Object*>(qObject);
59template <
class ExtensionInterface,
class Object,
class Extension>
60QObject *ExtensionFactory<ExtensionInterface, Object, Extension>::createExtension(QObject *qObject,
const QString &iid, QObject *parent)
const
65 Object *object = checkObject(qObject);
69 return new Extension(object, parent);
72template <
class ExtensionInterface,
class Object,
class Extension>
73void ExtensionFactory<ExtensionInterface, Object, Extension>::registerExtension(QExtensionManager *mgr,
const QString &iid)
75 ExtensionFactory *factory =
new ExtensionFactory(iid, mgr);
76 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)