aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/uiloader.h
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2014-12-06 17:33:25 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2014-12-06 17:33:25 -0500
commit7167ce41b61d2ba2cdb526777a4233eb84a3b66a (patch)
treea35c14143716e1f2c98f808c81f89426045a946f /SQLiteStudio3/guiSQLiteStudio/uiloader.h
Imported Upstream version 2.99.6upstream/2.99.6
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/uiloader.h')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/uiloader.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/uiloader.h b/SQLiteStudio3/guiSQLiteStudio/uiloader.h
new file mode 100644
index 0000000..5d16bcb
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/uiloader.h
@@ -0,0 +1,33 @@
+#ifndef UILOADER_H
+#define UILOADER_H
+
+#include "guiSQLiteStudio_global.h"
+#include <QUiLoader>
+#include <QHash>
+#include <QStack>
+#include <QXmlDefaultHandler>
+
+class UiLoaderPropertyHandler;
+
+class GUI_API_EXPORT UiLoader : public QUiLoader
+{
+ Q_OBJECT
+ public:
+ typedef std::function<QWidget*(QWidget*, const QString&)> FactoryFunction;
+
+ explicit UiLoader(QObject *parent = 0);
+
+ QWidget* createWidget(const QString & className, QWidget * parent = 0, const QString & name = QString());
+ void registerWidgetClass(const QString& className, FactoryFunction factoryFunction);
+ void registerPropertyHandler(UiLoaderPropertyHandler* handler);
+ QWidget* load(const QString& path);
+
+ private:
+ void handlePropertiesRecursively(QWidget* widget);
+ void handleProperties(QWidget* widget);
+
+ QHash<QString, FactoryFunction> registeredClasses;
+ QList<UiLoaderPropertyHandler*> propertyHandlers;
+};
+
+#endif // UILOADER_H