#include "abstractformbuilder.h"
#include "formbuilderextra_p.h"
#include "ui4_p.h"
#include "properties_p.h"
#include <QtCore/QVariant>
#include <QtCore/QMetaProperty>
#include <QtCore/QFileInfo>
#include <QtCore/QDir>
#include <QtCore/QQueue>
#include <QtCore/QHash>
#include <QtCore/qdebug.h>
#include <QtGui/QAction>
#include <QtGui/QActionGroup>
#include <QtGui/QComboBox>
#include <QtGui/QFontComboBox>
#include <QtGui/QGridLayout>
#include <QtGui/QIcon>
#include <QtGui/QListWidget>
#include <QtGui/QMainWindow>
#include <QtGui/QPixmap>
#include <QtGui/QTreeWidget>
#include <QtGui/QTableWidget>
#include <QtGui/QWidget>
#include <QtXml/QDomDocument>
#include <QtGui/QDialog>
// containers
#include <QtGui/QStackedWidget>
#include <QtGui/QTabWidget>
#include <QtGui/QToolBar>
#include <QtGui/QMenuBar>
#include <QtCore/qdebug.h>
#include <limits.h>
Q_DECLARE_METATYPE(QWidgetList)
#ifdef QFORMINTERNAL_NAMESPACE
using namespace QFormInternal;
#endif
class QFriendlyLayout: public QLayout
{
public:
inline QFriendlyLayout() { Q_ASSERT(0); }
#ifdef QFORMINTERNAL_NAMESPACE
friend class QFormInternal::QAbstractFormBuilder;
#else
friend class QAbstractFormBuilder;
#endif
};
/*!
Constructs a new form builder.*/
QAbstractFormBuilder::QAbstractFormBuilder() :
m_defaultMargin(INT_MIN),
m_defaultSpacing(INT_MIN)
{
}
/*!
Destroys the form builder.*/
QAbstractFormBuilder::~QAbstractFormBuilder()
{
QFormBuilderExtra::removeInstance(this);
}
/*!
\internal
*/
QWidget *QAbstractFormBuilder::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name)
{
Q_UNUSED(widgetName);
Q_UNUSED(parentWidget);
Q_UNUSED(name);
return 0;
}
/*!
\internal
*/
QLayout *QAbstractFormBuilder::createLayout(const QString &layoutName, QObject *parent, const QString &name)
{
Q_UNUSED(layoutName);
Q_UNUSED(parent);
Q_UNUSED(name);
return 0;
}
/*!
\internal
*/
QAction *QAbstractFormBuilder::createAction(QObject *parent, const QString &name)
{
/*
QAction *action = new QAction(parent);
action->setObjectName(name);
m_actions.insert(name, action);
return action;
*/
}
/*!
\internal
*/
QActionGroup *QAbstractFormBuilder::createActionGroup(QObject *parent, const QString &name)
{
/*
QActionGroup *g = new QActionGroup(parent);
g->setObjectName(name);
m_actionGroups.insert(name, g);
return g;
*/
}
/*!
\internal
*/
QIcon QAbstractFormBuilder::nameToIcon(const QString &filePath, const QString &qrcPath)
{
Q_UNUSED(qrcPath);
const QFileInfo fileInfo(workingDirectory(), filePath);
return QIcon(fileInfo.absoluteFilePath());
}
/*!
\internal
*/
QString QAbstractFormBuilder::iconToFilePath(const QIcon &pm) const
{
Q_UNUSED(pm);
return QString();
}
/*!
\internal
*/
QString QAbstractFormBuilder::iconToQrcPath(const QIcon &pm) const
{
Q_UNUSED(pm);
return QString();
}
/*!
\internal
*/
QPixmap QAbstractFormBuilder::nameToPixmap(const QString &filePath, const QString &qrcPath)
{
Q_UNUSED(qrcPath);
const QFileInfo fileInfo(workingDirectory(), filePath);
return QPixmap(fileInfo.absoluteFilePath());
}
/*!
\internal
*/
QString QAbstractFormBuilder::pixmapToFilePath(const QPixmap &pm) const
{
Q_UNUSED(pm);
return QString();
}
/*!
\internal
*/
QString QAbstractFormBuilder::pixmapToQrcPath(const QPixmap &pm) const
{
Q_UNUSED(pm);
return QString();
}
/*!
Returns the current working directory of the form builder.
\sa setWorkingDirectory() */
QDir QAbstractFormBuilder::workingDirectory() const
{
return m_workingDirectory;
}
/*!
Sets the current working directory of the form builder to the
specified \a directory.
\sa workingDirectory()*/
void QAbstractFormBuilder::setWorkingDirectory(const QDir &directory)
{
m_workingDirectory = directory;
}
/*!
\internal
*/
void QAbstractFormBuilder::reset()
{
m_laidout.clear();
m_actions.clear();
m_actionGroups.clear();
m_defaultMargin = INT_MIN;
m_defaultSpacing = INT_MIN;
}
namespace {
// set forward slashes in image path.
inline void fixImagePath(QString &p) {
p.replace(QLatin1Char('\\'), QLatin1Char('/'));
}
}
/*!
\internal
Return paths of an icon.
*/
QAbstractFormBuilder::IconPaths QAbstractFormBuilder::iconPaths(const QIcon &icon) const
{
IconPaths rc(iconToFilePath(icon), iconToQrcPath(icon));
fixImagePath(rc.first);
fixImagePath(rc.second);
return rc;
}
/*!
\internal
Return paths of a pixmap.
*/
QAbstractFormBuilder::IconPaths QAbstractFormBuilder::pixmapPaths(const QPixmap &pixmap) const
{
IconPaths rc(pixmapToFilePath(pixmap), pixmapToQrcPath(pixmap));
fixImagePath(rc.first);
fixImagePath(rc.second);
return rc;
}