git-svn-id: svn://db.shs.com.ru/libs@476 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
43
qad/widgets/qvariantedit_custom.cpp
Normal file
43
qad/widgets/qvariantedit_custom.cpp
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#include "qvariantedit_custom.h"
|
||||||
|
|
||||||
|
|
||||||
|
QVariantEditorFactories::QVariantEditorFactories() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariantEditorFactories * QVariantEditorFactories::instance() {
|
||||||
|
static QVariantEditorFactories * ret = new QVariantEditorFactories();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void QVariantEditorFactories::registerEditorFactory(int meta_id, QVariantEditorFactoryBase * f) {
|
||||||
|
QVariantEditorFactories * s = QVariantEditorFactories::instance();
|
||||||
|
if (!f) {
|
||||||
|
unregisterEditorFactory(meta_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (s->factories.contains(meta_id))
|
||||||
|
;//qDebug() << "[QVariantEditorFactories] Warning: factory for metaTypeID" << meta_id << "already registered, override";
|
||||||
|
s->factories[meta_id] = f;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void QVariantEditorFactories::unregisterEditorFactory(int meta_id) {
|
||||||
|
QVariantEditorFactories * s = QVariantEditorFactories::instance();
|
||||||
|
s->factories.remove(meta_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool QVariantEditorFactories::isRegisteredEditorFactory(int meta_id) {
|
||||||
|
QVariantEditorFactories * s = QVariantEditorFactories::instance();
|
||||||
|
return s->factories.contains(meta_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariantEditorFactoryBase * QVariantEditorFactories::editorFactory(int meta_id) {
|
||||||
|
QVariantEditorFactories * s = QVariantEditorFactories::instance();
|
||||||
|
return s->factories.value(meta_id, 0);
|
||||||
|
}
|
||||||
|
|
||||||
36
qad/widgets/qvariantedit_custom.h
Normal file
36
qad/widgets/qvariantedit_custom.h
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#ifndef QVARIANTEDIT_CUSTOM_H
|
||||||
|
#define QVARIANTEDIT_CUSTOM_H
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QMap>
|
||||||
|
|
||||||
|
class QVariantEdit;
|
||||||
|
|
||||||
|
|
||||||
|
class QVariantEditorFactoryBase {
|
||||||
|
friend class QVariantEdit;
|
||||||
|
public:
|
||||||
|
QVariantEditorFactoryBase() {}
|
||||||
|
virtual QWidget * createEditor() = 0;
|
||||||
|
private:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class QVariantEditorFactories {
|
||||||
|
public:
|
||||||
|
static void registerEditorFactory(int meta_id, QVariantEditorFactoryBase * f);
|
||||||
|
static void unregisterEditorFactory(int meta_id);
|
||||||
|
static bool isRegisteredEditorFactory(int meta_id);
|
||||||
|
static QVariantEditorFactoryBase * editorFactory(int meta_id);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QVariantEditorFactories();
|
||||||
|
static QVariantEditorFactories * instance();
|
||||||
|
|
||||||
|
QMap<int, QVariantEditorFactoryBase * > factories;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // QVARIANTEDIT_CUSTOM_H
|
||||||
Reference in New Issue
Block a user