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